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 "Samisa Abeysinghe (JIRA)" <ax...@ws.apache.org> on 2005/02/22 08:57:49 UTC

[jira] Assigned: (AXISCPP-418) Deserialization of arrays of complex elements with nil members

     [ http://issues.apache.org/jira/browse/AXISCPP-418?page=history ]

Samisa Abeysinghe reassigned AXISCPP-418:
-----------------------------------------

    Assign To: Samisa Abeysinghe

> 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
>     Assignee: Samisa Abeysinghe
>  Attachments: Complex2.wsdl, ComplexStore.wsdl, axis.trace, axis2.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