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