ClassCastException in OsgiMailcapCommandMap
-------------------------------------------

                 Key: SM-2149
                 URL: https://issues.apache.org/jira/browse/SM-2149
             Project: ServiceMix
          Issue Type: Bug
          Components: servicemix-mail
         Environment: $ java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)

Slackware 13.37 64 bit
Linux 2.6.38.4 x86_64
            Reporter: Andrew Clemons
            Priority: Minor
         Attachments: 01_servicemix_activation.diff, stack_trace

I am using the service mix javax.activation and javax.mail bundles:

      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.javax.mail</artifactId>
        <version>1.4.1_5</version>
      </dependency>

      <dependency>
        <groupId>org.apache.servicemix.specs</groupId>
        <artifactId>org.apache.servicemix.specs.activation-api-1.1</artifactId>
        <version>1.9.0</version>
      </dependency>

For various reasons I am also using:

      <dependency>
        <groupId>org.ops4j.pax.web</groupId>
        <artifactId>pax-web-jetty-bundle</artifactId>
        <version>1.1.2</version>
      </dependency>

That bundle includes java-mail and activation as part of the bundle itself and
also includes a mailcap file. The
org.apache.servicemix.specs.activation.Activator picks that up and adds the
mailcap entries to the OsgiMailcapCommandMap.

$ unzip -q -c pax-web-jetty-bundle-1.1.2.jar  META-INF/mailcap
#
# @(#)mailcap   1.8 05/04/20
#
# Default mailcap file for the JavaMail System.
#
# JavaMail content-handlers:
#
text/plain;;            x-java-content-handler=com.sun.mail.handlers.text_plain
text/html;;             x-java-content-handler=com.sun.mail.handlers.text_html
text/xml;;              x-java-content-handler=com.sun.mail.handlers.text_xml
multipart/*;;           
x-java-content-handler=com.sun.mail.handlers.multipart_mixed; 
x-java-fallback-entry=true
message/rfc822;;        
x-java-content-handler=com.sun.mail.handlers.message_rfc822
#
# can't support image types because java.awt.Toolkit doesn't work on servers
#
#image/gif;;            x-java-content-handler=com.sun.mail.handlers.image_gif
#image/jpeg;;           x-java-content-handler=com.sun.mail.handlers.image_jpeg

When I then try to send a multipart email, the DataContentHandler comes from
the pax-web-jetty-bundle, but that instance comes from its classloader and is
not assignable to the DataContentHandler as seen by the
org.apache.servicemix.specs.activation-api-1.1 bundle. This results in a
ClassCastException on line 60 in OsgiMailcapCommandMap which propagates up the
call stack.

I'll attached a patch which fixes the problem for me and an example stack
trace.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to