You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Davanum Srinivas (JIRA)" <ji...@apache.org> on 2007/06/06 20:49:26 UTC
[jira] Commented: (AXIS2-2752) Creating a AxisFault using the
SOAPFactory does not include the FaultReason in the SOAP fault response
[ https://issues.apache.org/jira/browse/AXIS2-2752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12502032 ]
Davanum Srinivas commented on AXIS2-2752:
-----------------------------------------
Glen,
Please take a look at this
thanks,
dims
> Creating a AxisFault using the SOAPFactory does not include the FaultReason in the SOAP fault response
> ------------------------------------------------------------------------------------------------------
>
> Key: AXIS2-2752
> URL: https://issues.apache.org/jira/browse/AXIS2-2752
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Components: kernel
> Affects Versions: 1.2
> Reporter: Wolfgang Moestl
> Assignee: Glen Daniels
> Priority: Minor
>
> First creating a AxisFault using the SOAPFactory and throw it
> SOAPFactory soapFactory = OMAbstractFactory.getSOAP12Factory();
> SOAPFaultCode soapFaultCode = soapFactory.createSOAPFaultCode();
> SOAPFaultValue soapFaultValue = soapFactory.createSOAPFaultValue(soapFaultCode);
> soapFaultValue.setText(new QName(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI, "Sender"));
> SOAPFaultReason soapFaultReason = soapFactory.createSOAPFaultReason();
> SOAPFaultText soapFaultText = soapFactory.createSOAPFaultText(soapFaultReason);
> soapFaultText.setText("ReasonValue");
>
> SOAPFaultDetail soapFaultDetail = soapFactory.createSOAPFaultDetail();
> QName qName = new QName("http://mycompany.com", "FaultException", "ex");
> OMElement exception = soapFactory.createOMElement(qName, soapFaultDetail);
> exception.setText("Detail text");
>
> throw new AxisFault(soapFaultCode, soapFaultReason, null, null, soapFaultDetail);
> The resulting SOAP envelope will look like:
> <?xml version='1.0' encoding='UTF-8'?>
> <soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
> <soapenv:Header>
> <wsa:Action>http://www.w3.org/2005/08/addressing/soap/fault</wsa:Action>
> <wsa:RelatesTo>urn:uuid:EAC15BF38C43D5DD571180618021415</wsa:RelatesTo>
> </soapenv:Header>
> <soapenv:Body>
> <soapenv:Fault>
> <soapenv:Code>
> <soapenv:Value>soapenv:Sender</soapenv:Value>
> </soapenv:Code>
> <soapenv:Reason>
> <soapenv:Text xml:lang="en-US">unknown</soapenv:Text>
> </soapenv:Reason>
> <soapenv:Detail>
> <ex:FaultException xmlns:ex="http://mycompany.com">Detail text</ex:FaultException>
> </soapenv:Detail>
> </soapenv:Fault>
> </soapenv:Body>
> </soapenv:Envelope>
> Please note that the Code and Detail are present as expected, but the Reason has been substituted with the default reason "unknown".
> Fix: If you put the soapFaultReason into the MessageContext before you throw the AxisFault, the reason appears in the SOAP Fault:
> // ... SAME CODE AS ABOVE FROM THE BEGINNING TO THE THROW COMMAND HERE
> MessageContext inMessageContext = MessageContext.getCurrentMessageContext();
> inMessageContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, soapFaultCode);
> inMessageContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, soapFaultReason);
> inMessageContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, soapFaultDetail);
> throw new AxisFault(soapFaultCode, soapFaultReason, null, null, soapFaultDetail);
> Putting the reason into the MessageContext should not be necessary IMHO. Either all 3 items (code, reason, detail) have to be put into the MessageContext or none of them.
--
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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org