You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Davanum Srinivas (JIRA)" <ax...@ws.apache.org> on 2005/06/30 22:09:58 UTC

[jira] Resolved: (AXIS-2054) Axis sends xsi:nil for non-nillable, minOccurs=0 parameters

     [ http://issues.apache.org/jira/browse/AXIS-2054?page=all ]
     
Davanum Srinivas resolved AXIS-2054:
------------------------------------

    Resolution: Fixed

Applied Patch. Sorry for the delay one of the interop servers was down.

> 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
>  Attachments: EchoService.wsdl, omit-parameter-patch-v2.txt, omit-parameter-patch.txt, omit-parameter-test.zip
>
> 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