[ http://issues.apache.org/jira/browse/AXIS-2054?page=all ]
Dave Marquard updated AXIS-2054:
--------------------------------
Attachment: omit-parameter-patch-v2.txt
Attaching v2 of the patch. This fixes the all-tests failures that Dims noted
last week.
The new version of the patch does the following:
1. Change RPCParam to omit minOccurs="0", nillable="false" null parameters.
RPCParam now uses nillable="true" for parameters that are both nillable and
omittable to preserve legacy behavior.
2. Change ParameterDesc to add attributes for nillable and omittable.
3. Change JavaStubWriter in WSDL2Java to set the new ParameterDesc attributes
as appropriate.
4. Add a new attribute for nillable to Parameter so that WSDL2Java can set that
attribute when emitting Java stubs.
5. Change the test/wsdl/wrapped test case WSDL so that the array elements are
nillable in the schema. Axis already was generating array elements with
xsi:nil="true"; this fix just makes the schema agree with what Axis was already
doing.
Finally, I have also attached a new test case to verify the omit vs. nillable
behavior for parameters (test/wsdl/omitParameter).
> 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