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]

Reply via email to