[
https://issues.apache.org/jira/browse/AXIS2C-1507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Lazarski resolved AXIS2C-1507.
-------------------------------------
Resolution: Fixed
When axiom_soap_body_convert_fault_to_soap11() converts a SOAP 1.2 fault
to SOAP 1.1 format, it merges the nested structure (Code > Value > text)
into the flat SOAP 1.1 structure (faultcode > text). It was setting the
fault_value and fault_text base nodes to NULL after freeing the child
nodes.
This caused axiom_soap_fault_value_get_text() and
axiom_soap_fault_text_get_text() to return NULL after conversion, even
though the text was correctly copied to the parent element.
Fix: Instead of setting base nodes to NULL, point them to the parent
elements (faultcode and faultstring respectively) where the text was
copied. This allows users to retrieve the fault text through the
expected API after conversion.
> SOAP Exception fields not available
> -----------------------------------
>
> Key: AXIS2C-1507
> URL: https://issues.apache.org/jira/browse/AXIS2C-1507
> Project: Axis2-C
> Issue Type: Bug
> Affects Versions: 1.6.0, 1.7.0
> Environment: Windows 2003
> Reporter: Thomas S
> Priority: Major
> Fix For: 2.0.0
>
>
> Given a service returning the following (taken from SoapUI output).
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <soap:Body>
> <soap:Fault>
> <faultcode
> xmlns:q0="http://www.cc.com/SoapExceptionService">q0:SoapExceptionService</faultcode>
> <faultstring>System.Web.Services.Protocols.SoapException: This is
> the FaultString
> at SoapExceptionService.Service1.HelloWorld(RequestInput ri)</faultstring>
> <faultactor>http://www.cc.com/SoapExceptionService</faultactor>
> <detail>
> <DetailMessage>This is the Detail section</DetailMessage>
> </detail>
> </soap:Fault>
> </soap:Body>
> </soap:Envelope>
> Using Axis2C (both 1.6 and latest 1.7 code from SVN) only returns a subset of
> these fields.
> Fault Code: (null)
> Exception: (null)
> Reason: (null)
> Role: http://www.cc.com/SoapExceptionService
> Detail xml: <detail><DetailMessage>This is the Detail
> section</DetailMessage></detail>
> If I retrieve the fault base node and serialize it I see the whole fault
> message so Axis has all the data available.
> I stepped through function axiom_soap_body_convert_fault_to_soap11() and it
> appears that the values are found and text elements are created for the
> missing items but when I try to retrieve them using the axis functions the
> string values end up being NULL.
> Example:
> axis2_char_t *strcodevalue = "";
> ::axiom_soap_fault_code *fcode =
> ::axiom_soap_fault_get_code(fault, env); // returns ok value
> if (fcode) {
> ::axiom_soap_fault_value *fcodevalue =
> ::axiom_soap_fault_code_get_value(fcode, env); // returns ok value
> if (fcodevalue) {
> strcodevalue =
> ::axiom_soap_fault_value_get_text(fcodevalue, env); // return NULL
> }
> }
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]