You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Allen Cronce (JIRA)" <ax...@ws.apache.org> on 2005/11/05 17:16:23 UTC
[jira] Created: (AXIS-2290) Code generated by WSDL2Java references non-existent NMTokenHolder class
Code generated by WSDL2Java references non-existent NMTokenHolder class
-----------------------------------------------------------------------
Key: AXIS-2290
URL: http://issues.apache.org/jira/browse/AXIS-2290
Project: Apache Axis
Type: Bug
Components: WSDL processing
Versions: 1.3
Environment: Mac OS X 10.4.3, java full version "1.4.2_09-232"
Reporter: Allen Cronce
Priority: Minor
It looks like when you're using document wrapped style and have more than one out or inout parameters, Axis wants to wrap any outputted class in a "holder" class. That makes sense.
But in this case of my sample wsdl below, the code generated passes a org.apache.axis.holders.NMTokenHolder to the AxisprobSOAPBindingImpl.problemMessage method. This causes build errors because there is no NMTokenHolder class. There is only a TokenHolder class.
I've worked around the problem by manually editing the generated code to change the undefined NMTokenHolder to TokenHolder classes. But it's bothersome that Axis is generating code for classes that don't exist.
Here's a sample wsdl that reproduces the problem:
<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="axisprob.wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdlns="axisprob.wsdl"
xmlns:xsdns="axisprob.xsd">
<!-- Imports -->
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<types>
<xs:schema targetNamespace="axisprob.xsd" xmlns:xsdns="axisprob.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<!-- Types -->
<!-- TextType -->
<xs:complexType name="TextType" mixed="true">
<xs:annotation>
<xs:documentation xml:lang="en"> This is a type definition for generic text in
XML. For maintenance reasons, it is preferable to use something like this
rather than the built-in datatype string, unless you have an absolute
requirement to use a simple datatype. </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"
processContents="lax"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- GUIDType -->
<xs:simpleType name="GUIDType">
<xs:annotation>
<xs:documentation xml:lang="en"> This is a type definition for globally unique
identifiers. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:pattern
value="[0-9,A-F,a-f]{8}-[0-9,A-F,a-f]{4}-[0-9,A-F,a-f]{4}-[0-9,A-F,a-f]{4}-[0-9,A-F,a-f]{12}"
/>
</xs:restriction>
</xs:simpleType>
<!-- RecordReferenceType -->
<xs:simpleType name="RecordReferenceType">
<xs:annotation>
<xs:documentation xml:lang="en"> This is a type definition for globally unique
identifiers. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN"> </xs:restriction>
</xs:simpleType>
<!-- Methods signatures -->
<!-- problemMessage -->
<xs:element name="problemMessage">
<xs:annotation>
<xs:documentation xml:lang="en"> NEEDS COMMENT </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="customerGUID" type="xsdns:GUIDType"/>
<xs:element name="customerReference" type="xsdns:TextType" minOccurs="0"
maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- problemMessageResponse -->
<xs:element name="problemMessageResponse">
<xs:annotation>
<xs:documentation xml:lang="en"> NEEDS COMMENT </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="transactionRecordReference"
type="xsdns:RecordReferenceType"/>
<xs:element name="customerReference" type="xsdns:TextType" minOccurs="0"
maxOccurs="1"/>
<xs:element name="guid" type="xsdns:GUIDType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<!-- Messages -->
<!-- problemMessage message -->
<message name="problemMessage">
<part name="parameters" element="xsdns:problemMessage"/>
</message>
<message name="problemMessageResponse">
<part name="parameters" element="xsdns:problemMessageResponse"/>
</message>
<!-- Port type -->
<portType name="axisprobPortType">
<!-- problemMessage -->
<operation name="problemMessage">
<input message="wsdlns:problemMessage"/>
<output message="wsdlns:problemMessageResponse"/>
</operation>
</portType>
<!-- Binding for axisprob Web APIs - Document style, SOAP over HTTP -->
<binding name="axisprobSOAPBinding" type="wsdlns:axisprobPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<!-- problemMessage -->
<operation name="problemMessage">
<soap:operation soapAction="urn:axisprob2Action"/>
<input>
<soap:body use="literal" namespace="axisprob.wsdl"/>
</input>
<output>
<soap:body use="literal" namespace="axisprob.wsdl"/>
</output>
</operation>
</binding>
<!-- Endpoint for axisprob Web APIs -->
<service name="axisprob2">
<port name="axisprobPortType" binding="wsdlns:axisprobSOAPBinding">
<soap:address location="http://localhost:4310/WebObjects/axisprob2.woa/wa/axisprob2"/>
</port>
</service>
</definitions>
--
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