WSDL wrong code generation using xs:union
-----------------------------------------
Key: AXIS-2523
URL: http://issues.apache.org/jira/browse/AXIS-2523
Project: Apache Axis
Issue Type: Bug
Components: WSDL processing
Affects Versions: 1.4
Environment: Windows XP, Java 1.4.2_05, Axis 1.4
Reporter: Victor Méndez
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
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]