Details
-
Bug
-
Status: Open
-
Critical
-
Resolution: Unresolved
-
1.6.0
-
None
-
None
-
Linux 2.6.35.13-92.fc14.i686.PAE
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Description
All the attributes are serialized with default values even if they are not explicitly set.
This is a problem because the default value of an attribute is a contract between the client and the web service provider and the framework should not override it.
<xs:complexType name="Sample">
<xs:sequence />
<xs:attribute name="BooleanAttribute" type="xs:boolean" />
<xs:attribute name="IntAttribute" type="xs:int" use="required"/>
<xs:attribute name="StringAttribute" type="xs:string" use="optional"/>
</xs:complexType>
If I don't set any attribute the generated xml look like
<Sample BooleanAttribute="false" IntAttribute="0"/>
This is completely wrong because the default values for my optional attributes can be different.
It should be (please remember that - as per specification - all attributes are optional by default)
<Sample/>
The workaround for xs:int attribute is to explicitly set it to java.lang.Integer.MIN_VALUE because in serialization the code is
if (localAge != java.lang.Integer.MIN_VALUE) {
writeAttribute("",
"IntAttribute",
org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localIntAttribute), xmlWriter);
But for xs:boolean attribute there is no workaround because in serialization the code is
if (true)