axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mauro Molinari (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-3353) Use wrapper types when elements are optional (i.e.: nillable="true" or minOccurs="0"/maxOccurs="1")
Date Fri, 07 Dec 2007 10:41:43 GMT

    [ https://issues.apache.org/jira/browse/AXIS2-3353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549367
] 

Mauro Molinari commented on AXIS2-3353:
---------------------------------------

Hi Amila,
I found another problem regarding primitive types.

Now, suppose you have an xsd:element named "parentActivityId" which is not optional, so it
is translated to Java primitive int.

In the ADBBean, the method <TypeName>.serialize(QName, OMFactory, MTOMAwareXMLStreamWriter,
boolean) has some code that does:

if (localParentActivityId==java.lang.Integer.MIN_VALUE) {
  throw new org.apache.axis2.databinding.ADBException("parentActivityId cannot be null!!");
} else {
  xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localParentActivityId));
}

Now, if I specify -Euwc I'm expecting, for sure, that if nil is mapped to null, I can also
use Integer. MIN_VALUE as an actual valid integer value for my parameter.
So, I don't know when this XML serialization method is called, however from what I see I suspect
that the exchange of Integer.MIN_VALUE as a valid value for parentActivityId is something
problematic, because of the piece of code I reported.

Could you please investigate?

Thank you.
Mauro.

> Use wrapper types when elements are optional (i.e.: nillable="true" or minOccurs="0"/maxOccurs="1")
> ---------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-3353
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3353
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Improvement
>          Components: codegen
>    Affects Versions: 1.3
>            Reporter: Mauro Molinari
>            Assignee: Amila Chinthaka Suriarachchi
>            Priority: Critical
>
> As of now, Axis2 WSDL2Java uses some weird convetion about "null".
> I mean, when an element in a WSDL is marked as nillable="true" or minOccurs="0"/maxOccurs="1",
the generated Java code still uses primitives types such as int, double, short, long, float,
boolean.
> Because of this, I personally experienced (and also read about here in JIRA), Axis2 uses
the following questionable convention to handle null values:
> int, short, long => Integer.MIN_VALUE, Short.MIN_VALUE, Long. MIN_VALUE
> float, double => Float.NaN, Double.NaN
> boolean => false
> Actually, these values are NOT null.
> I think Axis2 should map optional elements of type xsd:int, xsd:double, xsd:float, xsd:short,
xsd:long, xsd:boolean to, respectively: Integer, Double, Float, Short, Long, Boolean and assign
null to them when they are specified as nil or when they are not specified in the SOAP message.
> If I understood it well, Axis1 did this, didn't it?
> At least, I think Axis2 should give an option to enable this and, IMHO, I also think
it should be on by default...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message