[ 
http://issues.apache.org/jira/browse/AXIS-2054?page=comments#action_12323249 ] 

Anand Raghavendran commented on AXIS-2054:
------------------------------------------

We are facing the very same issue with Axis 1.2.1 release.  This problem does 
not go away for us even when using the 1.3 nightly build.  Please let us know 
what switched we have to set in WSDL2JAVA command line to toggle off the  
generation of xsi:nil=true.

Our schema has:

<element name="parameter" type="xsd:string" minOccurs="0" /> declaration

Anand

> 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

Reply via email to