axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dushshantha Chandradasa" <dchandrad...@virtusa.com>
Subject RE: Dushshantha: FaultMappingDoc broken
Date Thu, 18 Aug 2005 03:51:58 GMT
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:mark_whitlock@uk.ibm.com] 
Sent: Wednesday, August 17, 2005 9:43 PM
To: axis-c-dev@ws.apache.org
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



Mime
View raw message