[ 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to