It's good to open the JIRA :-)

If you could give us the WSDL and anything that you might think relevant i.e. if you an capture the wire msg (using TCPMonitor in axis.jar). Just attach them to the JIR.

cheers,
John.




Tim Bartley <[EMAIL PROTECTED]>

10/02/2005 01:36

Please respond to
"Apache AXIS C User List"

To
axis-c-user@ws.apache.org
cc
Subject
Deserialization of arrays of complex elements with nil members






I am using Axis C++ on the client side. One of my operations returns an array of:


typedef struct ComplexTag {

       xsd__string value1;

       xsd__string value2;

       xsd__string value3;

} Complex;


typedef struct Complex_ArrayTag {

       Complex** m_Array;

       int m_Size;

} Complex_Array;


If one of the array elements has an empty value for the first value (don't know whether it's only the first member or whether the fact that it's an array is relevant but that's all I've observed) then all the members of the Complex with an empty first member are deserialized as NULL and all subsequenet elements of the array are ignored.


The following body fragment illustrates the problem. If the array data is returned as (this is being generated by a WebSphere 5.1.1 hosted Web service if that's of any interest):


<data>

       <value1>1 - value1</value1>

       <value2>1 - value2</value2>

       <value3>1 - value3</value3>

</data>

<data>

       <value1/>

       <value2>2 - value2</value2>

       <value3>2 - value2</value3>

</data>

<data>

       <value1>3 - value1</value1>

       <value2>3 - value2</value2>

       <value3>3 - value3</value3>

</data>


Then Axis C++ deserializes the array to me as:


Complex_Array array;

array.m_Size == 2

*array.m_Array[0] == { "1 - value1", "1 - value2", "1 - value3" }

*array.m_Array[1] == { NULL, NULL, NULL }


Where I would expect:


array.m_Size == 3

*array.m_Array[0] == { "1 - value1", "1 - value2", "1 - value3" }

*array.m_Array[1] == { NULL,         "2 - value2", "2 - value3" }

*array.m_Array[2] == { "3 - value1", "3 - value2", "3 - value3" }


I have only tried this with the 1.5 alpha release on Linux.


Not sure what the etiquette is but I've also opened this as bug AXISCPP-418.


Thanks and regards,


Tim Bartley
--
IBM Tivoli Access Manager Development
Gold Coast Development Lab, Australia
+61-7-5552-4001 phone
+61-7-5571-0420 fax

Reply via email to