[
https://issues.apache.org/jira/browse/AXIS2C-920?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12560630#action_12560630
]
Frank Huebbers commented on AXIS2C-920:
---------------------------------------
I have actually found an even more important shortcoming which I can illustrate
with the following example.
I have a wsdl file with the following type:
<complexType name="SearchQuery">
<sequence>
<element name="Query" nillable="false"
type="xsd:string" />
<element name="Offset" nillable="false"
type="xsd:int" />
<element name="Limit" nillable="false"
type="xsd:int" />
</sequence>
</complexType>
On the return, I receive the following response:
<SearchQuery>
<Query/>
<Offset>0</Offset>
<Limit>10</Limit>
</SearchQuery>
Note that in this case, I sent an empty string for the query. In the
deserialization of the type, however, Axis2/C considered the returned type to
be null, causing a failure in the parsing of the object since the object is set
to nillable=false.
Frank
> Array size of 0 for nillable variable in deserialization of SOAP messages
> -------------------------------------------------------------------------
>
> Key: AXIS2C-920
> URL: https://issues.apache.org/jira/browse/AXIS2C-920
> Project: Axis2-C
> Issue Type: Bug
> Components: wsdl2c tool
> Affects Versions: Current (Nightly)
> Reporter: Frank Huebbers
>
> Hi,
> I am using Axis2/C in one of our applications to talk to our application
> server running Axis (java). I have run into problems where the return message
> isn't parsed because an array type of size zero with nillable=false is
> considered to be null by Axis2/C.
> In other words, I can give the following scenario:
> I want to send a SOAP message describing a book with an array list of
> authors. In my wsdl file, I have made the array type for the authors to be
> nillable=false as null types can generate problems for me on other systems. I
> still need to be able to send an empty array of authors however, to support
> special cases where no author is known for the book. So, when a SOAP message
> is received by my client which uses Axis2/C to deserialize it, I would expect
> Axis2/C to be able to recognize that an array of length zero was sent. What
> the generated code does instead, however, is that it thinks that the array
> type was set to null and thus throws an error. I would consider this to be
> incorrect behavior.
> When looking at the SOAP message, I have observed that an array size of 0 for
> a type is not distinguishable from an array type which was set to null and
> then sent. Specifically, the type is not shown in the message. Which is
> probably the root cause of this problem. What I have observed in these cases,
> however, is that C# and Axis Java are able to figure out that these array
> types are not null but arrays of size 0 (when they are defined as
> nillable=false in the wsdl files).
> Considering the facts above, I would thus suggest that the deserialization of
> the SOAP message for array types of size 0 follow a similar algorithm as is
> done in other implementations; otherwise, people will be forced to use
> different wsdl files for Axis2/C and other libraries.
> Any comments?
> Thanks for any help and advice in advance.
> Cheers,
> Frank
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]