[ http://issues.apache.org/jira/browse/AXIS-2142?page=all ]
     
Davanum Srinivas resolved AXIS-2142:
------------------------------------

    Resolution: Fixed

Applied.

thanks,
dims

> ClassCastException in JavaUtils.convert
> ---------------------------------------
>
>          Key: AXIS-2142
>          URL: http://issues.apache.org/jira/browse/AXIS-2142
>      Project: Apache Axis
>         Type: Bug
>     Versions: current (nightly)
>  Environment: Axis 1.2 CVS using GNU classpathx javamail and activation 
> implementations with Sun JDK 1.4.2_06
>     Reporter: Archit Shah
>  Attachments: DH.patch
>
> When running the Axis (not Axis2) CVS tip with javamail and activation 
> implementations from GNU classpathx, two tests fail with ClassCastExceptions. 
> These failures are due to incorrect use of DataHandlers. The failing tests 
> are:
> test.wsdl.interop4.groupG.dime.rpc.DimeRPCInteropTestCase
> #test2DimeRPCSoapPortEchoAttachments
> test.wsdl.interop4.groupG.mime.rpc.MimeRPCInteropTestCase
> #test2MimeRPCSoapPortEchoAttachments
> And the stack trace is:
> java.lang.ClassCastException
>     at org.apache.axis.utils.JavaUtils.convert(JavaUtils.java:325)
>     at org.apache.axis.utils.JavaUtils.convert(JavaUtils.java:472)
>     at 
> org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:118)
>     at 
> org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
>     at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>     at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>     at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>     at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
>     at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
>     at 
> org.apache.axis.transport.http.SimpleAxisWorker.execute(SimpleAxisWorker.java:428)
>     at 
> org.apache.axis.transport.http.SimpleAxisWorker.run(SimpleAxisWorker.java:155)
>     at 
> org.apache.axis.transport.http.SimpleAxisServer.run(SimpleAxisServer.java:245)
>     at 
> org.apache.axis.transport.http.SimpleAxisServer.start(SimpleAxisServer.java:296)
>     at 
> org.apache.axis.transport.http.SimpleAxisServer.start(SimpleAxisServer.java:304)
>     at 
> org.apache.axis.transport.http.SimpleAxisServer.main(SimpleAxisServer.java:385)
> The convert method of org.apache.axis.utils.JavaUtils relies on the 
> getContent method of javax.activation.DataHandler to get an InputStream for 
> the data, twice doing the following:
>   in = (InputStream)handler.getContent();
> instead of:
>   in = handler.getInputStream();
> Calling getContent and casting to InputStream is not guaranteed to work. The 
> Javadoc for the getContent method specifies "If no DataContentHandler can be 
> found for the the type of this data, the DataHandler returns an InputStream 
> for the data." Therefore, the cast can fail if a DataContentHandler is 
> installed.  I ran into this exceptions because the GNU javamail 
> implementation has a DataContentHandler for the MIME type 
> application/octet-stream and getContent returns a byte array instead of the 
> input stream.
> Casting the return value of getContent is also done in another context. 
> JavaUtils and SourceDataHandlerDeserializer both do:
>   StreamSource ss = new StreamSource(new StringReader(
>     (String) dh.getContent()));
> when the following would suffice:
>   StreamSource ss = new StreamSource(dh.getInputStream());

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to