Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.4
-
None
-
None
-
Mac Os, Solaris
Description
When using a WSDL that has a message with an element that uses a simpleContent with a restriction base of type xsd:token, see below. The class that WSDL2JAVA generates has a constructor that accepts a Token. This is a correct generated class. However, during deserialization of the response message the SAX handler throws a Null Pointer exception as it's trying to look a constructor on that class of type String.
... Snippet of complexType
<xsd:complexType name="ItemTypeCodeType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Item types supported by Cradle
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="tns:ItemTypeCodeContentType">
<xsd:attribute name="infoID" type="xsd:int">
<xsd:annotation>
<xsd:documentation xml:lang="en">
values
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="ItemTypeCodeContentType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="NULL">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Invalid item type.
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
– Constructor that gets generated:
// Simple Types must have a String constructor
public ItemTypeCodeType(org.apache.axis.types.Token _value)
– To Fix the issue the class created should have a constructor that accepts a String as well and generate a token from that:
// FIX because tokens are not simple...
public ItemTypeCodeType(String _value) { super(_value); }
// Constructor
protected ItemTypeCodeContentType(org.apache.axis.types.Token value)
//FIX
protected ItemTypeCodeContentType(String value)