Uploaded image for project: 'Axis'
  1. Axis
  2. AXIS-2523

WSDL wrong code generation using xs:union

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.4
    • Fix Version/s: None
    • Component/s: WSDL processing
    • Labels:
      None
    • Environment:
      Windows XP, Java 1.4.2_05, Axis 1.4

      Description

      Hi, we've found something strange using wsdl2java in AXIS 1.4 which was not happening on 1.3:
      Given next xsd example:

      <xs:simpleType name="CommonErrorCodeEnumMPE">
      <xs:restriction base="xs:string">
      <xs:enumeration value="E-UNKNOWN"/>
      <xs:enumeration value="E-COM-UNKNOWN"/>
      <xs:enumeration value="E-BADREQUEST"/>
      <xs:enumeration value="E-NOSERVICE"/>
      <xs:enumeration value="E-BADMATCH"/>
      <xs:enumeration value="E-NOMATCH"/>
      <xs:enumeration value="E-NOPREVTRX"/>
      <xs:enumeration value="E-TIMEOUT"/>
      <xs:enumeration value="E-NOMPI"/>
      <xs:enumeration value="E-MBLOCK"/>
      <xs:enumeration value="E-MSIMBLOCK"/>
      </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="SendRefErrorCodeEnum">
      <xs:union memberTypes="CommonErrorCodeEnumMPE">
      <xs:simpleType>
      <xs:restriction base="xs:string">
      <xs:enumeration value="E-SEN-MERNOAVAI"/>
      <xs:enumeration value="E-SEN-POSNOAVAI"/>
      <xs:enumeration value="E-SEN-INVALREF"/>
      <xs:enumeration value="E-SEN-INVAADDATA"/>
      </xs:restriction>
      </xs:simpleType>
      </xs:union>
      </xs:simpleType>

      wsdl2Java generates next clases:

      • CommonErrorCodeEnumMPE.java:...it's OK
      • SendRefErrorCodeEnum.java:.............Compilation errors: The class SendRefErrorCodeEnum has a "value" String attribute but its accessors have a CommonErrorCodeEnumMPE type
      • SendRefErrorCodeEnumNull.java: .....What's the meaning of this?

      The source of these classes is:

      /**

      • CommonErrorCodeEnumMPE.java
        *
      • This file was auto-generated from WSDL
      • by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
        */

      package es.mobipay.xsd;

      public class CommonErrorCodeEnumMPE implements java.io.Serializable {
      private java.lang.String value;
      private static java.util.HashMap table = new java.util.HashMap();

      // Constructor
      protected CommonErrorCodeEnumMPE(java.lang.String value)

      { _value_ = value; _table_.put(_value_,this); }

      public static final java.lang.String _value1 = "E-UNKNOWN";
      public static final java.lang.String _value2 = "E-COM-UNKNOWN";
      public static final java.lang.String _value3 = "E-BADREQUEST";
      public static final java.lang.String _value4 = "E-NOSERVICE";
      public static final java.lang.String _value5 = "E-BADMATCH";
      public static final java.lang.String _value6 = "E-NOMATCH";
      public static final java.lang.String _value7 = "E-NOPREVTRX";
      public static final java.lang.String _value8 = "E-TIMEOUT";
      public static final java.lang.String _value9 = "E-NOMPI";
      public static final java.lang.String _value10 = "E-MBLOCK";
      public static final java.lang.String _value11 = "E-MSIMBLOCK";
      public static final CommonErrorCodeEnumMPE value1 = new CommonErrorCodeEnumMPE(_value1);
      public static final CommonErrorCodeEnumMPE value2 = new CommonErrorCodeEnumMPE(_value2);
      public static final CommonErrorCodeEnumMPE value3 = new CommonErrorCodeEnumMPE(_value3);
      public static final CommonErrorCodeEnumMPE value4 = new CommonErrorCodeEnumMPE(_value4);
      public static final CommonErrorCodeEnumMPE value5 = new CommonErrorCodeEnumMPE(_value5);
      public static final CommonErrorCodeEnumMPE value6 = new CommonErrorCodeEnumMPE(_value6);
      public static final CommonErrorCodeEnumMPE value7 = new CommonErrorCodeEnumMPE(_value7);
      public static final CommonErrorCodeEnumMPE value8 = new CommonErrorCodeEnumMPE(_value8);
      public static final CommonErrorCodeEnumMPE value9 = new CommonErrorCodeEnumMPE(_value9);
      public static final CommonErrorCodeEnumMPE value10 = new CommonErrorCodeEnumMPE(_value10);
      public static final CommonErrorCodeEnumMPE value11 = new CommonErrorCodeEnumMPE(_value11);
      public java.lang.String getValue() { return _value_;}
      public static CommonErrorCodeEnumMPE fromValue(java.lang.String value)
      throws java.lang.IllegalArgumentException { CommonErrorCodeEnumMPE enumeration = (CommonErrorCodeEnumMPE) _table_.get(value); if (enumeration==null) throw new java.lang.IllegalArgumentException(); return enumeration; }
      public static CommonErrorCodeEnumMPE fromString(java.lang.String value)
      throws java.lang.IllegalArgumentException { return fromValue(value); }
      public boolean equals(java.lang.Object obj) {return (obj == this);}
      public int hashCode() { return toString().hashCode();}
      public java.lang.String toString() { return _value_;}
      public java.lang.Object readResolve() throws java.io.ObjectStreamException { return fromValue(_value_);}
      public static org.apache.axis.encoding.Serializer getSerializer(
      java.lang.String mechType,
      java.lang.Class _javaType,
      javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.EnumSerializer( _javaType, _xmlType); }
      public static org.apache.axis.encoding.Deserializer getDeserializer(
      java.lang.String mechType,
      java.lang.Class _javaType,
      javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.EnumDeserializer( _javaType, _xmlType); }
      // Type metadata
      private static org.apache.axis.description.TypeDesc typeDesc =
      new org.apache.axis.description.TypeDesc(CommonErrorCodeEnumMPE.class);

      static { typeDesc.setXmlType(new javax.xml.namespace.QName("urn:xsd.mobipay.es", "CommonErrorCodeEnumMPE")); }
      /**
      * Return type metadata object
      */
      public static org.apache.axis.description.TypeDesc getTypeDesc() { return typeDesc; }

      }


      /**
      * SendRefErrorCodeEnum.java
      *
      * This file was auto-generated from WSDL
      * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
      */

      package es.mobipay.xsd;

      public class SendRefErrorCodeEnum extends es.mobipay.xsd.CommonErrorCodeEnumMPE implements java.io.Serializable {
      private es.mobipay.xsd.CommonErrorCodeEnumMPE value;

      // Simple Types must have a String constructor
      public SendRefErrorCodeEnum(java.lang.String _value) { super(_value); }


      /**
      * Gets the value value for this SendRefErrorCodeEnum.
      *
      * @return value
      */
      public es.mobipay.xsd.CommonErrorCodeEnumMPE getValue() { return value; }


      /**
      * Sets the value value for this SendRefErrorCodeEnum.
      *
      * @param value
      */
      public void setValue(es.mobipay.xsd.CommonErrorCodeEnumMPE value) { this.value = value; }

      private java.lang.Object __equalsCalc = null;
      public synchronized boolean equals(java.lang.Object obj) {
      if (!(obj instanceof SendRefErrorCodeEnum)) return false;
      SendRefErrorCodeEnum other = (SendRefErrorCodeEnum) obj;
      if (obj == null) return false;
      if (this == obj) return true;
      if (__equalsCalc != null) { return (__equalsCalc == obj); }
      __equalsCalc = obj;
      boolean _equals;
      _equals = super.equals(obj) &&
      ((this.value==null && other.getValue()==null) ||
      (this.value!=null &&
      this.value.equals(other.getValue())));
      __equalsCalc = null;
      return _equals;
      }

      private boolean __hashCodeCalc = false;
      public synchronized int hashCode() {
      if (__hashCodeCalc) { return 0; }
      __hashCodeCalc = true;
      int _hashCode = 1;
      if (getValue() != null) { _hashCode += getValue().hashCode(); }
      __hashCodeCalc = false;
      return _hashCode;
      }

      // Type metadata
      private static org.apache.axis.description.TypeDesc typeDesc =
      new org.apache.axis.description.TypeDesc(SendRefErrorCodeEnum.class, true);

      static { typeDesc.setXmlType(new javax.xml.namespace.QName("urn:xsd.mobipay.es", "SendRefErrorCodeEnum")); org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("value"); elemField.setXmlName(new javax.xml.namespace.QName("", "value")); elemField.setXmlType(new javax.xml.namespace.QName("urn:xsd.mobipay.es", "CommonErrorCodeEnumMPE")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); }

      /**
      * Return type metadata object
      */
      public static org.apache.axis.description.TypeDesc getTypeDesc() { return typeDesc; }

      /**
      * Get Custom Serializer
      */
      public static org.apache.axis.encoding.Serializer getSerializer(
      java.lang.String mechType,
      java.lang.Class _javaType,
      javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.SimpleSerializer( _javaType, _xmlType, typeDesc); }

      /**
      * Get Custom Deserializer
      */
      public static org.apache.axis.encoding.Deserializer getDeserializer(
      java.lang.String mechType,
      java.lang.Class _javaType,
      javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.SimpleDeserializer( _javaType, _xmlType, typeDesc); }

      }

      /**
      * SendRefErrorCodeEnumNull.java
      *
      * This file was auto-generated from WSDL
      * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
      */

      package es.mobipay.xsd;

      public class SendRefErrorCodeEnumNull implements java.io.Serializable {
      private java.lang.String value;
      private static java.util.HashMap table = new java.util.HashMap();

      // Constructor
      protected SendRefErrorCodeEnumNull(java.lang.String value) { _value_ = value; _table_.put(_value_,this); }

      public static final java.lang.String _value1 = "E-SEN-MERNOAVAI";
      public static final java.lang.String _value2 = "E-SEN-POSNOAVAI";
      public static final java.lang.String _value3 = "E-SEN-INVALREF";
      public static final java.lang.String _value4 = "E-SEN-INVAADDATA";
      public static final SendRefErrorCodeEnumNull value1 = new SendRefErrorCodeEnumNull(_value1);
      public static final SendRefErrorCodeEnumNull value2 = new SendRefErrorCodeEnumNull(_value2);
      public static final SendRefErrorCodeEnumNull value3 = new SendRefErrorCodeEnumNull(_value3);
      public static final SendRefErrorCodeEnumNull value4 = new SendRefErrorCodeEnumNull(_value4);
      public java.lang.String getValue()

      { return _value_;}
      public static SendRefErrorCodeEnumNull fromValue(java.lang.String value)
      throws java.lang.IllegalArgumentException { SendRefErrorCodeEnumNull enumeration = (SendRefErrorCodeEnumNull) _table_.get(value); if (enumeration==null) throw new java.lang.IllegalArgumentException(); return enumeration; }
      public static SendRefErrorCodeEnumNull fromString(java.lang.String value)
      throws java.lang.IllegalArgumentException { return fromValue(value); }
      public boolean equals(java.lang.Object obj) {return (obj == this);}
      public int hashCode() { return toString().hashCode();}
      public java.lang.String toString() { return _value_;}

      public java.lang.Object readResolve() throws java.io.ObjectStreamException

      { return fromValue(_value_);}

      public static org.apache.axis.encoding.Serializer getSerializer(
      java.lang.String mechType,
      java.lang.Class _javaType,
      javax.xml.namespace.QName _xmlType)

      { return new org.apache.axis.encoding.ser.EnumSerializer( _javaType, _xmlType); }

      public static org.apache.axis.encoding.Deserializer getDeserializer(
      java.lang.String mechType,
      java.lang.Class _javaType,
      javax.xml.namespace.QName _xmlType)

      { return new org.apache.axis.encoding.ser.EnumDeserializer( _javaType, _xmlType); }

      // Type metadata
      private static org.apache.axis.description.TypeDesc typeDesc =
      new org.apache.axis.description.TypeDesc(SendRefErrorCodeEnumNull.class);

      static

      { typeDesc.setXmlType(new javax.xml.namespace.QName("urn:xsd.mobipay.es", "SendRefErrorCodeEnum>null")); }

      /**

      • Return type metadata object
        */
        public static org.apache.axis.description.TypeDesc getTypeDesc() { return typeDesc; }

      }

      Apparently, this same xsd creates other (but right) classes if generated with AXIS 1.3 wsdl2java tool, so it seems to be somethig specific of 1.4 version

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              vmendezg Victor Méndez
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: