[ 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

Reply via email to