You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "Wayne Johnson (JIRA)" <ax...@ws.apache.org> on 2007/02/21 19:02:06 UTC
[jira] Commented: (AXISCPP-1015) Error deserializing empty array
within a structure
[ https://issues.apache.org/jira/browse/AXISCPP-1015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12474779 ]
Wayne Johnson commented on AXISCPP-1015:
----------------------------------------
Well, tried my patch and it didn't help.
The wsdl I'm using has the structure:
<complexType name="SWSUser">
<sequence>
<element name="DN" nillable="true" type="xsd:string"/>
<element name="description" nillable="true" type="xsd:string"/>
<element name="groups" nillable="true" type="impl:ArrayOf_xsd_string"/>
<element name="name" nillable="true" type="xsd:string"/>
<element name="properties" nillable="true" type="impl:ArrayOfSWSProperty"/>
<element name="uid" type="xsd:int"/>
</sequence>
</complexType>
As I step through the code, properties is an array of length 0. We go into SoapDeSerializer::getCmplxArray, see the array length of zero, return to my SWSUser DeSerializer, where it then attempt to parse uid. But getElementAsInt() errors out because it sees m_pNode->m_pchNameOrValue is still "properties".
Any ideas, short of making sure I don't have any 0 length arrays?
The soap packet looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getUserProfileResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:SWS">
<getUserProfileReturn xsi:type="ns1:SWSUser">
<DN xsi:type="xsd:string">uid=SA,ou=users,dc=mqsoftware,dc=com</DN>
<description xsi:type="xsd:string">Default System Administrator User Id</description>
<groups soapenc:arrayType="xsd:string[2]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<groups xsi:type="xsd:string">Management Console Administrators</groups>
<groups xsi:type="xsd:string">database_login</groups>
</groups>
<name xsi:type="xsd:string">System Administrator</name>
<properties xsi:type="ns1:SWSProperty" xsi:nil="true"/>
<uid xsi:type="xsd:int">5</uid>
</getUserProfileReturn>
</ns1:getUserProfileResponse>
</soapenv:Body>
</soapenv:Envelope>
> Error deserializing empty array within a structure
> --------------------------------------------------
>
> Key: AXISCPP-1015
> URL: https://issues.apache.org/jira/browse/AXISCPP-1015
> Project: Axis-C++
> Issue Type: Bug
> Components: Serialization
> Affects Versions: 1.6 Beta
> Environment: Sending response from Java AXIS Server
> Reporter: Wayne Johnson
> Fix For: current (nightly)
>
> Attachments: SOAP-1015.xml, SoapDeSerializer.patch, SWS.wsdl
>
>
> I am returning a structure that contains an array of structures. If I return that array with no elements, the SoapDeSerializer::getArraySize method returns a -1.
>
> Then SoapDeSerializer::getCmplxArray falls into the error path, and returns AXIS_FAIL. My stub deserializer for the outside structure sees the FAIL status and returns the FAIL to SoapDeSerializer::getCmplxObject and everything percolates back to my client where a NULL is returned to the client instead of my structure.
> The same SOAP response seems to work fine on the Axis Java client.
> I'm working on the svn trunk.
> Thanks.
--
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: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org