axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marco Benuzzi (JIRA)" <>
Subject [jira] [Updated] (AXIS2-5109) optional attribute must not be serialized if not explicitly set
Date Wed, 03 Aug 2011 17:03:27 GMT


Marco Benuzzi updated AXIS2-5109:

    Attachment: ADBBeanTemplate-bean.xsl

I've tried to use java primitive type wrapper (Integer, Boolean, etc) instead of simple primitive
for attributes.
In the serialization I write the attribute only if it is not null.

Attached the two files I modified.
* modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
* modules/adb-codegen/test/org/apache/axis2/schema/attribute/

For me it works.

> optional attribute must not be serialized if not explicitly set
> ---------------------------------------------------------------
>                 Key: AXIS2-5109
>                 URL:
>             Project: Axis2
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.6.0
>         Environment: Linux
> Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
>            Reporter: Marco Benuzzi
>            Priority: Critical
>         Attachments: ADBBeanTemplate-bean.xsl,
> All the attributes are serialized with default values even if they are not explicitly
> 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
> 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),
> But for xs:boolean attribute there is no workaround because in serialization the code
> if (true) {
>    writeAttribute("",
>     "BooleanAttribute",
>    org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localBooleanAttribute),
>                                       }

This message is automatically generated by JIRA.
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message