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

Tim Bartley updated AXISCPP-418:
--------------------------------

    Attachment: Complex2.wsdl

I think there may be two problems. The behaviour shown by the first wsdl I 
attached seesm to be a different problem. The problem I originally reported is 
reproduced by this WSDL (see also axis2.trace for the corresponding Ethereal 
trace).

There are four entries of the array being returned. The third one has it's 
"value1" member set to null. When returned the third entrie's value2 and value3 
are reported as NULL by Axis even though values were included in the body. 
Also, the fourth entry is omitted by Axis even though it was correctly returned 
by the Web service.

> 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: 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

Reply via email to