Wrong fault type is returned when invoking operation with mutliple fault types
-------------------------------------------------------------------------------
Key: ODE-761
URL: https://issues.apache.org/jira/browse/ODE-761
Project: ODE
Issue Type: Bug
Components: JBI Integration
Affects Versions: 1.3.4
Reporter: Lee C K
Priority: Critical
Using ode-jbi.messageMapper=org.apache.ode.jbi.msgmap.JbiWsdl11WrapperMapper,
if a ws operation defines multiple fault types in the wsdl, when this operation
is invoked and returns a fault message, the fault message that catch by bpel
will always be the first fault type (first in alphabetical order).
There is a mistake with JbiWsdl11WrapperMapper.toFaultType(line 207). if
(etype.equals(p.getElementName())) will always return the first fault type in
the fault types list. It should be changed to NOT EQUALS - if
(!etype.equals(p.getElementName()))
Example:
When the search operation is called, the endpoint returns UnexpectedErrorFault
. But when the fault message reaches bpel script, the fault message has somehow
converted to InvalidSObjectFault.
<definitions>
<operation name="search">
<soap:operation soapAction=""/>
<input>
<soap:header use="literal" message="tns:Header"
part="SessionHeader"/>
<soap:header use="literal" message="tns:Header"
part="CallOptions"/>
<soap:header use="literal" message="tns:Header"
part="PackageVersionHeader"/>
<soap:body parts="parameters" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="InvalidSObjectFault">
<soap:fault name="InvalidSObjectFault" use="literal"/>
</fault>
<fault name="InvalidFieldFault">
<soap:fault name="InvalidFieldFault" use="literal"/>
</fault>
<fault name="MalformedSearchFault">
<soap:fault name="MalformedSearchFault" use="literal"/>
</fault>
<fault name="UnexpectedErrorFault">
<soap:fault name="UnexpectedErrorFault" use="literal"/>
</fault>
</operation>
</definitions>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.