Hi Dushshantha,
I am investigating the FaultMappingDoc test which is currently failing for
us. It started failing on 26/07/05 (apologies that it has taken me so long
to catch up with this problem). I believe the change that broke it was
1.172 of SoapDeSerializer.cpp. Revision 1.174 of SoapDeSerializer.cpp
altered that fix to add in these lines into SoapDeSerializer::getElement in
the doc-literal clause...
if (0 == strcmp(pName,"detail") )
{
m_pNode = m_pParser->next ();
}
When I comment out these lines FaultMappingDoc passes. When the service
returns a DivByZeroStruct soap fault, the FaultMappingDocClient is
expecting to catch a DivByZeroStruct, but instead it catches a
SoapFaultException. The generated MathOps stub decides which fault to throw
by calling SoapFault::getCmplxFaultObjectName which (from the trace) should
return "DivByZeroStruct" but instead returns "varString". The relevant part
of the response message is...
<soapenv:Fault>
<faultcode xmlns:ns2008922717="http://soapinterop.org/wsdl"
xmlns="">ns2008922717:DivByZeroStruct</faultcode>
<faultstring xmlns="">org.soapinterop.DivByZeroStruct</faultstring>
<detail xmlns="">
<DivByZeroStruct xmlns="http://soapinterop.org/wsdl">
<varString>Division by zero exception</varString>
<varInt>1</varInt>
<varFloat>10.52</varFloat>
</DivByZeroStruct>
</detail>
</soapenv:Fault>
So it looks like the SoapDeSerializer is stepping over one too many tags.
FaultMappingRepeatedDoc and OtherFaultException also fail in the same way.
I guess the same problem may happen for rpc-encoded.
I don't understand what you were fixing so I don't like to back out your
change. Please could you help me to fix this?
Thanks,
Mark
Mark Whitlock