David Atkins created CAMEL-8181:
-----------------------------------
Summary: Default SOAPMessage to String Converter does not handle
Multiparts as expected
Key: CAMEL-8181
URL: https://issues.apache.org/jira/browse/CAMEL-8181
Project: Camel
Issue Type: Bug
Components: camel-cxf
Affects Versions: 2.14.1
Reporter: David Atkins
Priority: Minor
The default SOAPMessage to String converter in
org.apache.camel.component.cxf.converter.CxfConverter uses the
SoapMessage#writeTo method to convert it to a String. But when receiving a
multipart (e.g. when using MTOM) this provides all of the message parts,
instead of just the message body as expected, looking something like this:
{code}
------=_Part_0_715152323.1390739632718
Content-Type: text/xml; charset=utf-8
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:rep="http://reportincident.example.camel.apache.org">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
<rep:inputReportIncident>
<incidentId>?</incidentId>
<incidentDate>?</incidentDate>
<givenName>?</givenName>
<familyName>?</familyName>
<summary>?</summary>
<details>?</details>
<email>?</email>
<phone>?</phone>
</rep:inputReportIncident>
</soapenv:Body>
</soapenv:Envelope>
------=_Part_0_715152323.1390739632718
Content-Type: application/octet-stream; name=error.log
Content-Disposition: attachment; name="error.log"; filename="error.log"
Content-Transfer-Encoding: binary
Content-ID: <error.log>
file content here
{code}
I believe the converter should only convert the initial Part to a String,
rather than the whole message. Something like this:
{code}
return XMLUtils.toString(new DOMSource(message.getSOAPPart()));
{code}
I'll look at creating a unit test/patch to resolve
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)