Content of Soap 1.1 Fault not completely transformed into SOAP 1.2 Fault -
Details are missing
----------------------------------------------------------------------------------------------
Key: SYNAPSE-576
URL: https://issues.apache.org/jira/browse/SYNAPSE-576
Project: Synapse
Issue Type: Bug
Components: Core
Affects Versions: 1.3
Reporter: Adriaan Wisse
We are using something like the following synapse configuration to convert soap
1.2 messages to soap 1.1 messages
<proxy name="SynapseProxy" transports="http, https">
<target>
<endpoint name="Soap11Webservice">
<address uri="http://localhost/MySoap11Webservice" format="soap11"
/>
</endpoint>
</target>
</proxy>
This is all working well except when we are receiving a Soap Fault from the
'MySoap11Webservice' like this:
<?xml version='1.0' encoding='utf-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>Something went wrong</faultstring>
</SOAP-ENV:Fault>
<SOAP-ENV:Detail>
<someElement>Couldn't find the element with id
123</someElement>
</SOAP-ENV:Detail>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Synapse transforms this message using the
org.apache.synapse.core.axis2.SOAPUtils into the following soap 1.2 message:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<soapenv:Fault>
<soapenv:Code><soapenv:Value>soapenv:Sender</soapenv:Value></soapenv:Code>
<soapenv:Reason><soapenv:Text xml:lang="en">Something went
wrong</soapenv:Text></soapenv:Reason>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
As you can see the details disappeared.
Adding something like this to the SOAPUtils java class on line 205 solves this
problem.
SOAPFaultDetail detail = soapFault.getDetail();
if (detail != null) {
SOAPFaultDetail newSOAPFaultDetail
=
soap12Factory.createSOAPFaultDetail(newSOAPFault);
Iterator<OMElement> iter = detail.getAllDetailEntries();
while (iter.hasNext()) {
OMElement detailEntry = iter.next();
newSOAPFaultDetail.addDetailEntry(detailEntry);
}
newSOAPFault.setDetail(newSOAPFaultDetail);
}
When I look further into the code of the SOAPUtils I also see that there is no
transformation of soap 1.1 faultactor into soap 1.2 Role.
Moreover the transformation from soap 1.2 to soap 1.1. is also missing both the
detail and role-faultactor transformation.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]