Greg Sharp created AXIS2-5864:
---------------------------------

             Summary: Client wsdl2java is ignoring xs:choice within an xs:all 
tag
                 Key: AXIS2-5864
                 URL: https://issues.apache.org/jira/browse/AXIS2-5864
             Project: Axis2
          Issue Type: Bug
          Components: codegen
    Affects Versions: 1.7.5, 1.6.4
         Environment: MacOS X, RedHat Enterprise Linux
            Reporter: Greg Sharp


We have the following WSDL snippet in our WSDL file.

<xs:element name="credentials">
    <xs:complexType>
        <xs:all>
            <xs:element name="zoneId" type="tns:id" minOccurs="0"/>
            <xs:element name="deviceId" type="tns:id" minOccurs="0"/>
            <xs:element name="deviceProvider" type="xs:string" minOccurs="0"/>
            <xs:element name="deviceCert" type="xs:string" minOccurs="0"/>
            <xs:choice minOccurs="0">
                <xs:element ref="tns:sessionId"/>
                <xs:element ref="tns:login"/>
                <xs:element ref="tns:loginToken"/>
            </xs:choice>
        </xs:all>
    </xs:complexType>
</xs:element>

When we generate the client stubs with ApacheAxis2 we don't see the "xs:choice" 
components showing up in the Java class. Below is what it produces.

If we change the xs:all to xs:sequence (something we really don't want to do, 
since the order doesn't matter) then we do get the "xs:choice" components in 
the class. (The server stubs are correct.)

Is this a bug or a feature? Is there a workaround besides using xs:sequence?

The client code produced when using xs:all:
=================================
            /**
            *  Credentials bean class
            */
            @SuppressWarnings({"unchecked","unused"})
        
        public  class Credentials
        implements org.apache.axis2.databinding.ADBBean{
        
                public static final javax.xml.namespace.QName MY_QNAME = new 
javax.xml.namespace.QName(
                "http://www.XXXX.com/Services/1.1";,
                "credentials",
                "ns1");

            

                        /**
                        * field for ZoneId
                        */

                        
                                    protected com.xxxx.client.Id localZoneId ;
                                
                           /*  This tracker boolean wil be used to detect 
whether the user called the set method
                          *   for this attribute. It will be used to determine 
whether to include this field
                           *   in the serialized XML
                           */
                           protected boolean localZoneIdTracker = false ;

                           public boolean isZoneIdSpecified(){
                               return localZoneIdTracker;
                           }

                           

                           /**
                           * Auto generated getter method
                           * @return com.xxxx.client.Id
                           */
                           public com.xxxx.client.Id getZoneId(){
                               return localZoneId;
                           }

                           
                        
                            /**
                               * Auto generated setter method
                               * @param param ZoneId
                               */
                               public void setZoneId(com.xxxx.client.Id param){
                            localZoneIdTracker = param != null;
                                   
                                            this.localZoneId=param;
                                       

                               }
                            

                        /**
                        * field for DeviceId
                        */

                        
                                    protected com.xxxx.client.Id localDeviceId ;
                                
                           /*  This tracker boolean wil be used to detect 
whether the user called the set method
                          *   for this attribute. It will be used to determine 
whether to include this field
                           *   in the serialized XML
                           */
                           protected boolean localDeviceIdTracker = false ;

                           public boolean isDeviceIdSpecified(){
                               return localDeviceIdTracker;
                           }

                           

                           /**
                           * Auto generated getter method
                           * @return com.xxxx.client.Id
                           */
                           public  com.xxxx.client.Id getDeviceId(){
                               return localDeviceId;
                           }

                           
                        
                            /**
                               * Auto generated setter method
                               * @param param DeviceId
                               */
                               public void setDeviceId(com.xxxx.client.Id 
param){
                            localDeviceIdTracker = param != null;
                                   
                                            this.localDeviceId=param;
                                       

                               }
                            

                        /**
                        * field for DeviceProvider
                        */

                        
                                    protected java.lang.String 
localDeviceProvider ;
                                
                           /*  This tracker boolean wil be used to detect 
whether the user called the set method
                          *   for this attribute. It will be used to determine 
whether to include this field
                           *   in the serialized XML
                           */
                           protected boolean localDeviceProviderTracker = false 
;

                           public boolean isDeviceProviderSpecified(){
                               return localDeviceProviderTracker;
                           }

                           

                           /**
                           * Auto generated getter method
                           * @return java.lang.String
                           */
                           public  java.lang.String getDeviceProvider(){
                               return localDeviceProvider;
                           }

                           
                        
                            /**
                               * Auto generated setter method
                               * @param param DeviceProvider
                               */
                               public void setDeviceProvider(java.lang.String 
param){
                            localDeviceProviderTracker = param != null;
                                   
                                            this.localDeviceProvider=param;
                                       

                               }
                            

                        /**
                        * field for DeviceCert
                        */

                        
                                    protected java.lang.String localDeviceCert ;
                                
                           /*  This tracker boolean wil be used to detect 
whether the user called the set method
                          *   for this attribute. It will be used to determine 
whether to include this field
                           *   in the serialized XML
                           */
                           protected boolean localDeviceCertTracker = false ;

                           public boolean isDeviceCertSpecified(){
                               return localDeviceCertTracker;
                           }

                           

                           /**
                           * Auto generated getter method
                           * @return java.lang.String
                           */
                           public  java.lang.String getDeviceCert(){
                               return localDeviceCert;
                           }

                           
                        
                            /**
                               * Auto generated setter method
                               * @param param DeviceCert
                               */
                               public void setDeviceCert(java.lang.String 
param){
                            localDeviceCertTracker = param != null;
                                   
                                            this.localDeviceCert=param;
                                       

                               }




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to