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

WSDL2Java genetates incorrect code from WSDL

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Cannot Reproduce
    • 1.2 Beta
    • None
    • WSDL processing
    • None
    • Windows 2000 service Pack 4
      j2sdk1.4.1_03
      Axis1.2b

    Description

      WSDL2Java seems to generate invalid code from WSDL. The parameters of my web service operation have invalid names throughout when using the WSDL at the bottom of this description. For example, in the skeleton code:

      new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("urn:types:WEJOEI:genpt.com", "partInquiry_t>divNumber"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false),

      Notice the "partInquiry_t>divNumber" part. It should be just "divNumber". This seems propogated throughout the generated code and even in the WSDL that Axis provides at ?wsdl. Here is what it looks like:

      <element name="partInquiry">
      <complexType>
      <sequence>
      <element name="partInquiry_t>divNumber" type="xsd:string" />

      Again, notice the "partInquiry_t>" prepended onto the front of the element name.

      Here is the WSDL that produced this:

      <?xml version="1.0" encoding="UTF-8" ?>
      <wsdl:definitions targetNamespace="urn:WEJOEI:genpt.com" xmlns:impl="urn:WEJOEI:genpt.com" xmlns:intf="urn:WEJOEI:genpt.com"
      xmlns:tns1="urn:types:WEJOEI:genpt.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <wsdl:types>
      <schema targetNamespace="urn:types:WEJOEI:genpt.com" xmlns="http://www.w3.org/2001/XMLSchema"
      elementFormDefault="qualified">
      <complexType name="messageData_t">
      <sequence>
      <element minOccurs="0" maxOccurs="1" name="dcAbbreviation" nillable="true" type="xsd:string" />
      <element minOccurs="0" maxOccurs="1" name="messageNumber" nillable="true" type="xsd:string" />
      <element minOccurs="0" maxOccurs="1" name="messageText" nillable="true" type="xsd:string" />
      </sequence>
      </complexType>
      <complexType name="returnData_t">
      <sequence>
      <element name="statusCode" type="xsd:int" />
      <element maxOccurs="unbounded" name="messageDataCollection" nillable="true" type="tns1:messageData_t" />
      </sequence>
      </complexType>
      <element name="partInquiry" type="tns1:partInquiry_t" />
      <complexType name="partInquiry_t">
      <sequence>
      <element minOccurs="0" maxOccurs="1" name="divNumber" type="xsd:string" />
      <element minOccurs="0" maxOccurs="1" name="dcNumber" type="xsd:string" />
      <element minOccurs="0" maxOccurs="1" name="custNumber" type="xsd:string" />
      <element minOccurs="0" maxOccurs="1" name="quantity" type="xsd:string" />
      <element minOccurs="0" maxOccurs="1" name="partId" type="xsd:string" />
      <element minOccurs="0" maxOccurs="1" name="lineId" type="xsd:string" />
      </sequence>
      </complexType>
      <xsd:element name="partInquiryResponse" type="tns1:partInquiryResponse_t" />
      <xsd:complexType name="partInquiryResponse_t">
      <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="partInquiryResult" type="tns1:returnData_t" />
      </xsd:sequence>
      </xsd:complexType>
      </schema>
      </wsdl:types>
      <wsdl:message name="partInquiryRequest">
      <wsdl:part element="tns1:partInquiry" name="parameters" />
      </wsdl:message>
      <wsdl:message name="partInquiryResponse">
      <wsdl:part element="tns1:partInquiryResponse" name="parameters" />
      </wsdl:message>
      <wsdl:portType name="WEJOEI">
      <wsdl:operation name="partInquiry">
      <wsdl:input message="impl:partInquiryRequest" name="partInquiryRequest" />
      <wsdl:output message="impl:partInquiryResponse" name="partInquiryResponse" />
      </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="WEJOEISoapBinding" type="impl:WEJOEI">
      <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
      <wsdl:operation name="partInquiry">
      <wsdlsoap:operation soapAction="urn:WEJOEI:genpt.com/PartInquiry" />
      <wsdl:input name="partInquiryRequest">
      <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="partInquiryResponse">
      <wsdlsoap:body use="literal" />
      </wsdl:output>
      </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="WEJOEI">
      <wsdl:port binding="impl:WEJOEISoapBinding" name="WEJOEI">
      <wsdlsoap:address location="http://localhost:8080/axis/services/WEJOEI" />
      </wsdl:port>
      </wsdl:service>
      </wsdl:definitions>

      Thanks.

      Attachments

        1. WEJOEI.wsdl
          4 kB
          Joe Rattz
        2. JavaSkelWriter.java.patch
          0.7 kB
          Håkon Rydland

        Activity

          People

            Unassigned Unassigned
            joerattz Joe Rattz
            Votes:
            5 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: