Hi Mark, I think I got your problem. I made these changes on deserializer to correctly deserialize both complex and simple faults. For me, the detail tag of the server response message is somewhat deferent. It looks like ..
<SOAP-ENV:Fault> <faultcode>AxisC++ Faultcode</faultcode> <faultstring>Custom Out of bound exception</faultstring> <faultactor>server name:listen port</faultactor> <detail><appSpecific><DivByZeroStruct><ns1:varString>Division by zero exception</ns1:varString> <ns1:varInt>1</ns1:varInt> <ns1:varFloat>10.520000</ns1:varFloat> </DivByZeroStruct> </appSpecific></detail> </SOAP-ENV:Fault> It includes an additional <appSpecific> tag in the message. This was introduced as a fix to the issue AXISCPP-706. I think you are using MockServer and your server response file does not contain this <appSpecific> tag. Please refer to http://issues.apache.org/jira/browse/AXISCPP-723 to understand my changes. Sorry for the inconvenience. Regards, Dushshantha -----Original Message----- From: Mark Whitlock [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 17, 2005 9:43 PM To: [email protected] Subject: Dushshantha: FaultMappingDoc broken 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
