You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Tim Bartley <tb...@au1.ibm.com> on 2005/02/10 02:36:35 UTC
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
Re: Deserialization of arrays of complex elements with nil members
Posted by John Hawkins <HA...@uk.ibm.com>.
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 <tb...@au1.ibm.com>
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