Axis sends xsi:nil for non-nillable, minOccurs=0 parameters
-----------------------------------------------------------
Key: AXIS-2054
URL: http://issues.apache.org/jira/browse/AXIS-2054
Project: Apache Axis
Type: Bug
Components: Serialization/Deserialization
Versions: current (nightly), 1.2
Reporter: Dave Marquard
Axis always sends null parameters as XML elements with an xsi:nill="true"
attribute, even if the parameter is defined as non-nillable in the WSDL. For
example, consider the method:
String echo(String parameter)
that is represented in a Wrapped Document/Literal WSDL file as:
<element name="echo">
<complexType>
<sequence>
<element name="parameter" type="xsd:string" minOccurs="0"
nillable="false"/>
</sequence>
</complexType>
</element>
when the service is invoked as echo(null), Axis sends the following SOAP body:
<echo xmlns="http://DefaultNamespace">
<parameter xsi:nil="true"/>
</echo>
which is invalid according to the WSDL file.
Looking at the source, it looks like the problem is in
org.apache.axis.message.RPCParam.serialize(), which always passes true for the
"sendNull" parameter to SerializationContext.serialize(), regardless of whether
the parameter is nillable or not.
I have attached a small patch that:
1. Adds an "omittable" attribute to the ParameterDesc metadata object, to
indicate whether a parameter has a minimum occurrence of 0 or not.
2. Changes RPCParam to inspect this property, and to indicate to
SerizationContext to not send null if a parameter is omittable.
3. Changes JavaStubWriter in WSDL2Java to generate calls to the new
ParameterDesc.setOmittable() method for parameters with a minimum occurrence of
0.
--
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