-
Bug
-
Resolution: Done
-
Major
-
jbossws-native-3.1.2
-
None
Based on the following WSDL sections: -
<message name="messageInput">
<part name="request" element="s:InputRequest"/>
<part name="attach1" type="xsd:string"/>
<part name="attach2" type="xsd:base64Binary"/>
</message>
<message name="messageOutput">
<part name="response" element="s:OutputResponse"/>
<part name="attach1" type="xsd:string"/>
<part name="attach2" type="xsd:base64Binary"/>
</message>
<binding name="SwaTestSoapBinding1" type="tns:SwaTest1">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="echoMultipleAttachments">
<soap:operation/>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body parts="request" use="literal"/>
</mime:part>
<mime:part>
<mime:content part="attach1" type="application/octet-stream"/>
</mime:part>
<mime:part>
<mime:content part="attach2" type="application/octet-stream"/>
</mime:part>
</mime:multipartRelated>
</input>
<output>
<mime:multipartRelated>
<mime:part>
<soap:body parts="response" use="literal"/>
</mime:part>
<mime:part>
<mime:content part="attach1" type="application/octet-stream"/>
</mime:part>
<mime:part>
<mime:content part="attach2" type="application/octet-stream"/>
</mime:part>
</mime:multipartRelated>
</output>
</operation>
</binding>
JBossWS can send messages without problem but unmarshalling the messages results in the following error: -
Caused by: javax.xml.soap.SOAPException: javaType [[B] is not assignable from attachment content: java.io.ByteArrayInputStream
at org.jboss.ws.core.EndpointInvocation.transformPayloadValue(EndpointInvocation.java:248)
The reason is because a DataHandler is used to wrap the attachment part, the data handler is passed the attachment along with the content type 'application/octet-stream' as this is not related to a specific type the call to getContent() on the DataHandler within EndpointInvocation returns an InputStraem for the attachment - this is not assignable to the expected Java type.
The transformPayloadValue method in EndpointInvocation requires an additional step to take the InputStream and convert it to the expected Java type.
- is incorporated by
-
JBPAPP-2296 JBossWS - Unable to unmarshall attachment parts where the type is 'application/octet-stream'
- Closed