axis2 doesn't receive null values correctly
-------------------------------------------
Key: AXIS2-932
URL: http://issues.apache.org/jira/browse/AXIS2-932
Project: Apache Axis 2.0 (Axis2)
Issue Type: Bug
Components: databinding
Affects Versions: 1.0
Environment: Java services (axis2) and .NET client.
Reporter: Egor Samarkhanov
I created a simple service with the following method:
public String[] testStringArrayWithNulls( String[] sarray )
{
return sarray;
}
Then I generated WSDL file (Java2WSDL) and got the following types in
it:
<xs:element name="testStringArrayWithNulls">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" type="xs:string" name="sarray"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="testStringArrayWithNullsResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" type="xs:string" name="return"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Then I added nillable="true" attribute manually to each item (to make .NET send
nulls in SOAP), so the types are:
<xs:element name="testStringArrayWithNulls">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" type="xs:string" name="sarray"
maxOccurs="unbounded" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="testStringArrayWithNullsResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" type="xs:string" name="return"
maxOccurs="unbounded" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Then I deployed this service and tested it with a simple .NET client
that sends the following array (the operation is document/literal):
[null, "str", null, "str", null]
The SOAP message from .NET is as follows:
<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<testStringArrayWithNulls xmlns="http://org.apache.axis2/xsd">
<sarray xsi:nil="true" />
<sarray>str</sarray>
<sarray xsi:nil="true" />
<sarray>str</sarray>
<sarray xsi:nil="true" />
</testStringArrayWithNulls>
</soap:Body>
</soap:Envelope>
But for some reason my service class gets:
["", "str", "", "str", ""]
All null values in the array are replaced with empty strings :(
=============
I also tried to return the same array (with nulls) form the method
and axis made the following SOAP response:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header />
<soapenv:Body>
<ns:testStringArrayWithNullsResponse xmlns:ns="http://org.apache.axis2/xsd">
<return>
</return>
<return>str</return>
<return>
</return>
<return>str</return>
<return>
</return>
</ns:testStringArrayWithNullsResponse>
</soapenv:Body>
</soapenv:Envelope>
This response actually sends empty strings (and .NET client shows
them). To me the correct SOAP response should be as follows:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header />
<soapenv:Body>
<ns:testStringArrayWithNullsResponse xmlns:ns="http://org.apache.axis2/xsd">
<return xsi:nil="true"/>
<return>ssttrriinngg</return>
<return xsi:nil="true"/>
<return>ssttrriinngg</return>
<return xsi:nil="true"/>
</ns:testStringArrayWithNullsResponse>
</soapenv:Body>
</soapenv:Envelope>
1. Axis2 should correctly handle nulls in requests and responses (shouldn't
replace them
with empty strings).
2. Java2WSDL should add nillable="true" to Object array elements automatically
(probably not only to Object[] but to any "nullable" type).
--
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
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]