Generating code from WSDL contract using WSDL2Java
--------------------------------------------------
Key: TUSCANY-2951
URL: https://issues.apache.org/jira/browse/TUSCANY-2951
Project: Tuscany
Issue Type: Bug
Components: Java SDO Implementation
Affects Versions: Java-SCA-2.0-M1
Environment: Java , windows XP
Reporter: Santiago Aranda Rojas
This is a wrong WSDL generated by Tuscany. When I tried to generate java code
for a client using WSDL2Java I obtained an error. Person class couldn“t be
found. I checked this WSDL file with Eclipse tools and I fixed it. This new
file is below.
------------------------------
WRONG WSDL
------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CalculatorServiceService"
targetNamespace="http://server.tuscany.telvent.com/"
xmlns:tns="http://server.tuscany.telvent.com/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="persona"><xs:sequence><xs:element minOccurs="0"
name="altura" type="xs:int"/><xs:element name="edad" type="xs:int"/><xs:element
minOccurs="0" name="name" type="xs:string"/></xs:sequence></xs:complexType>
</xs:schema>
<xs:schema attributeFormDefault="qualified"
elementFormDefault="unqualified"
targetNamespace="http://server.tuscany.telvent.com/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:import/><xs:element
name="multiply"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="divide"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="add"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="arg0"
type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="divideResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="subtractResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="subtract"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="addResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="getPersona"><xs:complexType/></xs:element><xs:element
name="multiplyResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="getPersonaResponse"><xs:complexType><xs:sequence><xs:element
minOccurs="0" name="return" nillable="true"
type="persona"/></xs:sequence></xs:complexType></xs:element></xs:schema>
</wsdl:types>
<wsdl:message name="multiply">
<wsdl:part name="multiply" element="tns:multiply">
</wsdl:part>
</wsdl:message>
<wsdl:message name="divide">
<wsdl:part name="divide" element="tns:divide">
</wsdl:part>
</wsdl:message>
<wsdl:message name="add">
<wsdl:part name="add" element="tns:add">
</wsdl:part>
</wsdl:message>
<wsdl:message name="divideResponse">
<wsdl:part name="divideResponse" element="tns:divideResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="subtractResponse">
<wsdl:part name="subtractResponse" element="tns:subtractResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="subtract">
<wsdl:part name="subtract" element="tns:subtract">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addResponse">
<wsdl:part name="addResponse" element="tns:addResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getPersona">
<wsdl:part name="getPersona" element="tns:getPersona">
</wsdl:part>
</wsdl:message>
<wsdl:message name="multiplyResponse">
<wsdl:part name="multiplyResponse" element="tns:multiplyResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getPersonaResponse">
<wsdl:part name="getPersonaResponse" element="tns:getPersonaResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CalculatorService">
<wsdl:operation name="getPersona">
<wsdl:input message="tns:getPersona">
</wsdl:input>
<wsdl:output message="tns:getPersonaResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="add">
<wsdl:input message="tns:add">
</wsdl:input>
<wsdl:output message="tns:addResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="subtract">
<wsdl:input message="tns:subtract">
</wsdl:input>
<wsdl:output message="tns:subtractResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="divide">
<wsdl:input message="tns:divide">
</wsdl:input>
<wsdl:output message="tns:divideResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="multiply">
<wsdl:input message="tns:multiply">
</wsdl:input>
<wsdl:output message="tns:multiplyResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CalculatorServiceBinding" type="tns:CalculatorService">
<SOAP:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getPersona">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="add">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="subtract">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="divide">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="multiply">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CalculatorServiceService">
<wsdl:port name="CalculatorServicePort"
binding="tns:CalculatorServiceBinding">
<SOAP:address
location="http://192.168.3.15:8085/CalculatorServiceComponent"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
-------------------------------
RIGHT WSDL
-------------------------------
As you can see there is not a empty "import" in this WSDL, and the
"complexType" person is in the same schema like the others components. There is
only one schema and I added "tns:" when I need to use person class.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="CalculatorServiceService"
targetNamespace="http://server.tuscany.telvent.com/"
xmlns:tns="http://server.tuscany.telvent.com/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xs:schema attributeFormDefault="qualified"
elementFormDefault="unqualified"
targetNamespace="http://server.tuscany.telvent.com/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element
name="multiply"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="divide"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="add"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="arg0"
type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="divideResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="subtractResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="subtract"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="addResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="getPersona"><xs:complexType/></xs:element><xs:element
name="multiplyResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0"
name="return"
type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element
name="getPersonaResponse"><xs:complexType><xs:sequence><xs:element
minOccurs="0" name="return" nillable="true"
type="tns:persona"/></xs:sequence></xs:complexType></xs:element>
<xs:complexType name="persona"><xs:sequence><xs:element minOccurs="0"
name="altura" type="xs:int"/><xs:element name="edad" type="xs:int"/><xs:element
minOccurs="0" name="name" type="xs:string"/></xs:sequence></xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="multiply">
<wsdl:part name="multiply" element="tns:multiply">
</wsdl:part>
</wsdl:message>
<wsdl:message name="divide">
<wsdl:part name="divide" element="tns:divide">
</wsdl:part>
</wsdl:message>
<wsdl:message name="add">
<wsdl:part name="add" element="tns:add">
</wsdl:part>
</wsdl:message>
<wsdl:message name="divideResponse">
<wsdl:part name="divideResponse" element="tns:divideResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="subtractResponse">
<wsdl:part name="subtractResponse" element="tns:subtractResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="subtract">
<wsdl:part name="subtract" element="tns:subtract">
</wsdl:part>
</wsdl:message>
<wsdl:message name="addResponse">
<wsdl:part name="addResponse" element="tns:addResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getPersona">
<wsdl:part name="getPersona" element="tns:getPersona">
</wsdl:part>
</wsdl:message>
<wsdl:message name="multiplyResponse">
<wsdl:part name="multiplyResponse" element="tns:multiplyResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getPersonaResponse">
<wsdl:part name="getPersonaResponse" element="tns:getPersonaResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CalculatorService">
<wsdl:operation name="getPersona">
<wsdl:input message="tns:getPersona">
</wsdl:input>
<wsdl:output message="tns:getPersonaResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="add">
<wsdl:input message="tns:add">
</wsdl:input>
<wsdl:output message="tns:addResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="subtract">
<wsdl:input message="tns:subtract">
</wsdl:input>
<wsdl:output message="tns:subtractResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="divide">
<wsdl:input message="tns:divide">
</wsdl:input>
<wsdl:output message="tns:divideResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="multiply">
<wsdl:input message="tns:multiply">
</wsdl:input>
<wsdl:output message="tns:multiplyResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CalculatorServiceBinding" type="tns:CalculatorService">
<SOAP:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getPersona">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="add">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="subtract">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="divide">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="multiply">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CalculatorServiceService">
<wsdl:port name="CalculatorServicePort"
binding="tns:CalculatorServiceBinding">
<SOAP:address
location="http://192.168.3.15:8085/CalculatorServiceComponent"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.