axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Samuel (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (AXIS2-4108) WSDL2Java: minOccurs="0" on primitive types doesn't work properly
Date Wed, 12 Nov 2008 09:37:44 GMT

    [ https://issues.apache.org/jira/browse/AXIS2-4108?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12646836#action_12646836
] 

samlemarnais edited comment on AXIS2-4108 at 11/12/08 1:37 AM:
---------------------------------------------------------

Hi, 
When using the "uwc" ADB parameter (-Euwc wsdl2java parameter), the generated source code
loose its Java1.4 compatibility !!!
The reason is that the SAOP does not differenciate int and Integer. 
It convert the String to an int and then "automatically" cast it to an Integer (Java5 new
functionnality)...
Moreover, what if the String is null or empty (nillable element) ?

This is the ****************** JAVA 1.4 NON COMPATIBLE ********************** generated code
is here (implicit cast from int to Integer) :

--------------------------------------------------------------------------
				if (reader.isStartElement() && new javax.xml.namespace.QName("", "fundId").equals(reader.getName()))
				{
					
					java.lang.String content = reader.getElementText();
					
					object.setFundId(org.apache.axis2.databinding.utils.ConverterUtil.convertToInt(content));
    <------- implicit conversion. Function signature : public void setFundId(java.lang.Integer
param)
					
					reader.next();
					
				} // End of if for expected property start element
--------------------------------------------------------------------------

Work Arround :
I think that the method "org.apache.axis2.databinding.utils.ConverterUtil.convertToInt" should
be replaced by "org.apache.axis2.databinding.utils.ConverterUtil.convertToInteger".

I didn't try other simple types (boolean, etc.) I think the same problem occurs...

      was (Author: samlemarnais):
    Hi, 
When using the "uwc" ADB parameter (-Euwc wsdl2java parameter), the generated source code
loose its Java1.4 compatibility !!!
The reason is that the SAOP decoder is a "fake" ;)
It convert the String to an int and then "automatically" cast it to an Integer (Java5 new
functionnality)...
Moreover, what if the String is null or empty (nillable element) ?

This is the ****************** JAVA 1.4 NON COMPATIBLE ********************** generated code
is here (implicit cast from int to Integer) :

--------------------------------------------------------------------------
				if (reader.isStartElement() && new javax.xml.namespace.QName("", "fundId").equals(reader.getName()))
				{
					
					java.lang.String content = reader.getElementText();
					
					object.setFundId(org.apache.axis2.databinding.utils.ConverterUtil.convertToInt(content));
    <------- implicit conversion. Function signature : public void setFundId(java.lang.Integer
param)
					
					reader.next();
					
				} // End of if for expected property start element
--------------------------------------------------------------------------

Work Arround :
I think that the method "org.apache.axis2.databinding.utils.ConverterUtil.convertToInt" should
be replaced by "org.apache.axis2.databinding.utils.ConverterUtil.convertToInteger".

I didn't try other simple types (boolean, etc.) I think the same problem occurs...
  
> WSDL2Java: minOccurs="0" on primitive types doesn't work properly
> -----------------------------------------------------------------
>
>                 Key: AXIS2-4108
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4108
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.4.1
>         Environment: Windows XP
> Eclipse Version: 3.3.2 Build id: M20080221-1800
> Apache Axis2 1.4.1 build  (13-08-2008)
>            Reporter: Samuel
>            Assignee: Amila Chinthaka Suriarachchi
>            Priority: Critical
>
> When I'm generating Java classes with wsdl2java (using eclipse WTP plugin) from this
part of xsd :
> -----------------------------------------------------------------------------
> 	<xsd:complexType name="Frids_GetFundInType">
> 		<xsd:sequence>
> 			<xsd:element maxOccurs="1" minOccurs="0"
> 				name="fund_id"
> 				type="xsd:int">
> 			</xsd:element>
> 		</xsd:sequence>
> 	</xsd:complexType>
> -----------------------------------------------------------------------------
> I'm getting an int variable that can not be set to null.
> In the class "Frids_GetFundInType" (generated by wsdl2java), I see this :
> -----------------------------------------------------------------------------
> 	/**
> 	 * Auto generated getter method
> 	 * 
> 	 * @return int
> 	 */
> 	public int getId() {
> 		return localId;
> 	}
> 	/**
> 	 * Auto generated setter method
> 	 * 
> 	 * @param param
> 	 *            Id
> 	 */
> 	public void setId(int param) {
> 		// setting primitive attribute tracker to true
> 		if (param == java.lang.Integer.MIN_VALUE) {
> 			localIdTracker = false;
> 		} else {
> 			localIdTracker = true;
> 		}
> 		this.localId = param;
> 	}
> -----------------------------------------------------------------------------
> So, if I correctly understand the code :
> - If a client set a value equal to "Integer.MIN_VALUE", my server will think that he
didn't set this field.
> - I can not check if this field is null or not : 
> -----------------------------------------------------------------------------
> I can not write if (myVariable.fund_id == null){
>  then...
> }
> -----------------------------------------------------------------------------
> as an int can not be null, and the xxxTracker variable is protected...
> I seen a similar bug marked as fixed but I've download the last release 2 days ago and
this samples are from this version...
> If it's really fixed, can you tell me how can I have the good version (and its number)
and what do I have to do (is it automatically corrected ?)
> Thanks

-- 
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