[SM-2149]ClassCastException in OsgiMailcapCommandMap
git-svn-id: https://svn.apache.org/repos/asf/servicemix/smx4/specs/trunk@1302778 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/activation-api-1.1/src/main/java/org/apache/servicemix/specs/activation/Activator.java b/activation-api-1.1/src/main/java/org/apache/servicemix/specs/activation/Activator.java
index 008b67b..ffde31a 100644
--- a/activation-api-1.1/src/main/java/org/apache/servicemix/specs/activation/Activator.java
+++ b/activation-api-1.1/src/main/java/org/apache/servicemix/specs/activation/Activator.java
@@ -26,6 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
import javax.activation.CommandMap;
+import javax.activation.DataContentHandler;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -54,6 +55,19 @@
URL url = bundle.getResource("/META-INF/mailcap");
if (url != null) {
debugPrintln("found mailcap at " + url);
+
+ try {
+ final Class<?> clazz = bundle
+ .loadClass("javax.activation.DataContentHandler");
+ if (!clazz.isAssignableFrom(DataContentHandler.class)) {
+ debugPrintln("incompatible DataContentHandler class in bundle "
+ + bundle.getBundleId());
+ return;
+ }
+ } catch (ClassNotFoundException e) {
+ // ignored
+ }
+
mailcaps.put(bundle.getBundleId(), new MailCap(bundle, url));
rebuildCommandMap();
}