[
https://issues.apache.org/jira/browse/AXIS2-4350?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Amila Chinthaka Suriarachchi resolved AXIS2-4350.
-------------------------------------------------
Resolution: Fixed
Already fixed in the trunk
> RPCUtil handles wrapped style of SOAP messages wrongly.
> --------------------------------------------------------
>
> Key: AXIS2-4350
> URL: https://issues.apache.org/jira/browse/AXIS2-4350
> Project: Axis2
> Issue Type: Bug
> Components: adb
> Affects Versions: 1.5
> Reporter: Oleg Zenzin
>
> Class
> http://svn.apache.org/repos/asf/webservices/axis2/branches/java/1_5/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
> in the method invokeServiceClass() has following lines:
> if (inAxisMessage.isWrapped()) {
> objectArray = RPCUtil.processRequest(methodElement,
> method,
> inMessage.getAxisService().getObjectSupplier());
> } else {
> objectArray = RPCUtil.processRequest((OMElement)
> methodElement.getParent(),
> method,
> inMessage.getAxisService().getObjectSupplier());
> }
> which wrongly handles the wrapped style of SOAP messages. Like, for instance
> this message:
> <?xml version='1.0' encoding='UTF-8'?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
> <soapenv:Header>
> <addr:To
> xmlns:addr="http://www.w3.org/2005/08/addressing">http://localhost:8383/bre/services/dtws_tryme_newdecisiontable</addr:To>
>
> <addr:Action
> xmlns:addr="http://www.w3.org/2005/08/addressing">urn:invokeDecisionTable</addr:Action>
>
> <addr:ReplyTo xmlns:addr="http://www.w3.org/2005/08/addressing">
>
> <addr:Address>http://www.w3.org/2005/08/addressing/anonymous</addr:Address>
>
> </addr:ReplyTo>
> <addr:MessageID
> xmlns:addr="http://www.w3.org/2005/08/addressing">uuid:53870713-5719-457f-9965-0ebd111e7dda-5</addr:MessageID>
>
> </soapenv:Header>
> <soapenv:Body>
> <invokeDecisionTable xmlns="http://newdecisiontable.tryme">
> <ns:param0 xmlns:ns="http://newdecisiontable.tryme">
> <ax25:person xmlns:ax25="http://newdecisiontable.tryme/xsd">
> <ax26:age xmlns:ax26="http://newdecisiontable.tryme/bre" />
> <ax26:greeting
> xmlns:ax26="http://newdecisiontable.tryme/bre" />
> <name xmlns="http://newdecisiontable.tryme/bre"
> xmlns:ax26="http://newdecisiontable.tryme/bre">Oleg</name>
> </ax25:person>
> </ns:param0>
> </invokeDecisionTable>
> </soapenv:Body>
> </soapenv:Envelope>
> will not be deserialized because BeanUtil.deserialize(methodElement,
> parameters, objectSupplier) will be fed with element <soapenv:Body> instead
> of element <ns:param0>.
> The fix is pretty simple, instead of above code there should be:
> if (inAxisMessage.isWrapped()) {
> objectArray =
> RPCUtil.processRequest(methodElement.getFirstElement(),
> method,
> inMessage.getAxisService().getObjectSupplier());
> } else {
> objectArray = RPCUtil.processRequest(methodElement,
> method,
> inMessage.getAxisService().getObjectSupplier());
> }
--
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]