If the operation name is defined similar to the request element name in the 
wsdl schema type then wsdl2java generates incorrect classes.
----------------------------------------------------------------------------------------------------------------------------------------

                 Key: AXIS-2570
                 URL: http://issues.apache.org/jira/browse/AXIS-2570
             Project: Apache Axis
          Issue Type: Bug
          Components: WSDL processing
    Affects Versions: 1.4
         Environment: Windows XP, Tomcat Server - Version - 
jakarta-tomcat-5.0.28.,JDK - Version - java full version "1.5.0_06-b05"
            Reporter: Saif Rizvi
            Priority: Blocker


Hi All
I am using Axis 1.4 to create Java classes for my wsdl but i am facing a 
strange problem.
If my wsdl has the operation name defined similar to the request element in the 
schemas the classes age generated faulty.
For example, the below wsdl defines the request element TestInputRequest as :
               <message name="TestInputRequest">
                <part name="parameters" element="ns:TestInputRequest"/>
               </message>
and soap operation name TestInputRequest  as:
             <portType name="TestPortType">
                <operation name="TestInputRequest">
                        <input message="ns:TestInputRequest"/>
                        <output message="ns:TestOutputResponse"/>
                </operation>
             </portType>

the classes generated have signatures which define the operation's input 
parameters and output parameters incorrectly(i.e. not complying with the wsdl).
In the sample wsdl given below the classes generated have signatures as :

package com.example.test;

public interface TestPortType extends java.rmi.Remote {
    public void 
testInputRequest(com.example.test.TestInputRequestRequestElement1 
requestElement1, com.example.test.TestInputRequestRequestElement2 
requestElement2, com.example.test.TestInputRequestRequestElement3 
requestElement3, 
com.example.test.holders.TestOutputResponseResponseElement1Holder 
responseElement1, 
com.example.test.holders.TestOutputResponseResponseElement2Holder 
responseElement2, 
com.example.test.holders.TestOutputResponseResponseElement3Holder 
responseElement3) throws java.rmi.RemoteException;
}

So the generated web service does not  give correct SOAP request and response.
If the name of the request is made not similar to the operation name service 
gives correct SOAP request and response.

Here is the sample wsdl.Classes generated with this using WSDL2Java can be used 
to replicate the problem. 

<WSDL:definitions xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/"; 
xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
xmlns:y="http://new.webservice.namespace"; 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:ns="http://example.com/test/"; 
xmlns:ns1="http://www.w3.org/2001/XMLSchema"; 
targetNamespace="http://example.com/test/";>
        <WSDL:types>
                <xs:schema targetNamespace="http://example.com/test/"; 
xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; elementFormDefault="qualified">
                        <xs:import 
namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
                        <xs:element name="TestInputRequest">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element 
name="RequestElement1">
                                                        <xs:complexType>
                                                                <xs:sequence>
                                                                        
<xs:element name="RequestSubElement1" type="xs:string"/>
                                                                        
<xs:element name="RequestSubElement2" type="xs:string"/>
                                                                </xs:sequence>
                                                        </xs:complexType>
                                                </xs:element>
                                                <xs:element 
name="RequestElement2">
                                                        <xs:complexType>
                                                                <xs:sequence>
                                                                        
<xs:element name="RequestSubElement1" type="xs:string"/>
                                                                        
<xs:element name="RequestSubElement2" type="xs:string"/>
                                                                </xs:sequence>
                                                        </xs:complexType>
                                                </xs:element>
                                                <xs:element 
name="RequestElement3">
                                                        <xs:complexType>
                                                                <xs:sequence>
                                                                        
<xs:element name="RequestSubElement1" type="xs:string"/>
                                                                        
<xs:element name="RequestSubElement2" type="xs:string"/>
                                                                </xs:sequence>
                                                        </xs:complexType>
                                                </xs:element>
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>
                        <xs:element name="TestOutputResponse">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element 
name="ResponseElement1">
                                                        <xs:complexType>
                                                                <xs:sequence>
                                                                        
<xs:element name="ResponseSubElement1" type="xs:string"/>
                                                                        
<xs:element name="ResponseSubElement2" type="xs:string"/>
                                                                </xs:sequence>
                                                        </xs:complexType>
                                                </xs:element>
                                                <xs:element 
name="ResponseElement2">
                                                        <xs:complexType>
                                                                <xs:sequence>
                                                                        
<xs:element name="ResponseSubElement1" type="xs:string"/>
                                                                        
<xs:element name="ResponseSubElement2" type="xs:string"/>
                                                                </xs:sequence>
                                                        </xs:complexType>
                                                </xs:element>
                                                <xs:element 
name="ResponseElement3">
                                                        <xs:complexType>
                                                                <xs:sequence>
                                                                        
<xs:element name="ResponseSubElement1" type="xs:string"/>
                                                                        
<xs:element name="ResponseSubElement2" type="xs:string"/>
                                                                </xs:sequence>
                                                        </xs:complexType>
                                                </xs:element>
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>
                </xs:schema>
        </WSDL:types>
        <message name="TestInputRequest">
                <part name="parameters" element="ns:TestInputRequest"/>
        </message>
        <message name="TestOutputResponse">
                <part name="parameters" element="ns:TestOutputResponse"/>
        </message>
        <portType name="TestPortType">
                <operation name="TestInputRequest">
                        <input message="ns:TestInputRequest"/>
                        <output message="ns:TestOutputResponse"/>
                </operation>
        </portType>
        <binding name="Test" type="ns:TestPortType">
                <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
                <operation name="TestInputRequest">
                        <soap:operation 
soapAction="http://example.com/test/TestInputRequest"/>
                        <input>
                                <SOAP:body parts="parameters" use="literal"/>
                        </input>
                        <output>
                                <SOAP:body parts="parameters" use="literal"/>
                        </output>
                </operation>
        </binding>
        <service name="Test">
                <port name="Test" binding="ns:Test">
                        <soap:address 
location="http://localhost:8080/axis/services/Test"/>
                </port>
        </service>
</WSDL: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

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to