[ http://issues.apache.org/jira/browse/AXISCPP-418?page=history ]
Tim Bartley updated AXISCPP-418: -------------------------------- Attachment: axis.trace > Deserialization of arrays of complex elements with nil members > -------------------------------------------------------------- > > Key: AXISCPP-418 > URL: http://issues.apache.org/jira/browse/AXISCPP-418 > Project: Axis-C++ > Type: Bug > Components: Deserialization > Versions: 1.5 Alpha > Environment: x86 SuSE SELS-8.1 service pack 3 > Reporter: Tim Bartley > Attachments: ComplexStore.wsdl, axis.trace > > 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. > Regards, > Tim Bartley -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira