[ http://issues.apache.org/jira/browse/AXIS-2570?page=all ]
Saif Rizvi updated AXIS-2570: ----------------------------- Attachment: TestWithoutBug.jar Classes generated as correctly complying to the request and response of the wsdl where operation name is not same as the request element name. > 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 > Attachments: Test.jar, Test.wsdl, TestWithoutBug.jar, > TestWithoutBug.wsdl > > > 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]