On Fri, May 8, 2009 at 1:03 PM, <[email protected]> wrote: > > This is my fixed WSDL. I have to change several things in order to use > WSDLToJava tool. > > **I have added xmlns:tns1="http://ns1" in the wsdl:definitions > **I have added targetNamespace="http://ns1" in the first schema > ** I have added tns1: before all types defined int the first schema. For > example type="tns1:device" > > It seems that WSDLToJava tool requires a compulsory targetNamespace in the > schemas in order to find classes. > > > > > > > > <?xml version="1.0" encoding="UTF-8"?> > <wsdl:definitions name="SensorNetworkManagementServiceService" > targetNamespace="http://sca.sensornetworkmanagement.telvent.com/" > xmlns:tns="http://sca.sensornetworkmanagement.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/" > xmlns:tns1="http://ns1"> > <wsdl:types> > <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" > targetNamespace="http://ns1" > > <xs:complexType > name="networkComponent"><xs:sequence><xs:element maxOccurs="unbounded" > minOccurs="0" name="comprises" nillable="true" > type="tns1:networkComponent"/></xs:sequence></xs:complexType> > <xs:complexType > name="device"><xs:complexContent><xs:extension > base="tns1:networkComponent"><xs:sequence><xs:element minOccurs="0" > name="brand" type="xs:string"/><xs:element name="hardwareId" > type="xs:int"/><xs:element minOccurs="0" name="manufacturer" > type="xs:string"/><xs:element maxOccurs="unbounded" minOccurs="0" > name="measures" nillable="true" type="tns1:parameter"/><xs:element > name="model" > type="xs:int"/></xs:sequence></xs:extension></xs:complexContent></xs:complexType> > <xs:complexType name="parameter"><xs:sequence><xs:element > minOccurs="0" name="device" type="tns1:device"/><xs:element > maxOccurs="unbounded" minOccurs="0" name="tests" nillable="true" > type="tns1:dataTest"/></xs:sequence></xs:complexType> > <xs:complexType name="dataTest"><xs:sequence><xs:element > minOccurs="0" name="parameter" > type="tns1:parameter"/></xs:sequence></xs:complexType> > <xs:complexType final="#all" > name="deviceArray"><xs:sequence><xs:element maxOccurs="unbounded" > minOccurs="0" name="item" nillable="true" > type="tns1:device"/></xs:sequence></xs:complexType> > </xs:schema> > > <xs:schema attributeFormDefault="qualified" > elementFormDefault="unqualified" > targetNamespace="http://sca.sensornetworkmanagement.telvent.com/" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:import namespace="http://ns1"/> > <xs:element name="getDeviceList"> > <xs:complexType/> > </xs:element> > > <xs:element name="getDeviceListResponse"> > <xs:complexType> > <xs:sequence> > <xs:element maxOccurs="unbounded" minOccurs="0" > name="return" nillable="true" type="tns1:device"/> > </xs:sequence> > </xs:complexType> > </xs:element> > </xs:schema> > </wsdl:types> > <wsdl:message name="getDeviceList"> > <wsdl:part name="getDeviceList" element="tns:getDeviceList"> > </wsdl:part> > </wsdl:message> > <wsdl:message name="getDeviceListResponse"> > <wsdl:part name="getDeviceListResponse" > element="tns:getDeviceListResponse"> > </wsdl:part> > </wsdl:message> > <wsdl:portType name="SensorNetworkManagementService"> > <wsdl:operation name="getDeviceList"> > <wsdl:input message="tns:getDeviceList"> > </wsdl:input> > <wsdl:output message="tns:getDeviceListResponse"> > </wsdl:output> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="SensorNetworkManagementServiceBinding" > type="tns:SensorNetworkManagementService"> > <SOAP:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > <wsdl:operation name="getDeviceList"> > <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="SensorNetworkManagementServiceService"> > <wsdl:port name="SensorNetworkManagementServicePort" > binding="tns:SensorNetworkManagementServiceBinding"> > <SOAP:address > location="http://192.168.3.15:8085/SensorNetworkManagementComponent"/> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > > > > > Un saludo. > Santiago Miguel Aranda Rojas > Telvent Interactiva > Extension: 35999 > > > [email protected] > santiago.aranda > 08/05/2009 13:13 > Por favor, responda a user > Para: [email protected] > cc: > Asunto: Re: Wrong generated WSDL > > > > > This my WSDL. It is easier now but it is not working again. I mean I can not > use it to generate Java code for a simple client with WSDLTojava tool. When > I try this I have this error "Type device missing". Device is one of my > classes. When I check with WSDL Eclipse tool and I have to fix manually. But > I don´t know what is the best way. I would like Tuscany generates a WSDL so > I could use WSDLToJava tool. > > I didn´t understand your sample. This step And a package-info.java. What do > you mean? May I add this annotation over the package?? or add a new > "package-info" class. Could you send me your sample?' > > @javax.xml.bind.annotation.XmlSchema(namespace="http://test") > package helloworld; > > > Thank you very much > > > > Un saludo. > Santiago Miguel Aranda Rojas > Telvent Interactiva > Extension: 35999 > > > Simon Laws <[email protected]> > Simon Laws > 07/05/2009 17:50 > Por favor, responda a user > Para: [email protected] > cc: > Asunto: Re: Wrong generated WSDL > > > > > So what I find with a quick test is the following. > > With a bean.. > > package helloworld; > > public class ABean { > > protected String field1; > protected String field2; > > An a service inteface.. > > public interface HelloWorldService { > > public String getGreetings(String name); > public String getGreetingsBean(ABean bean); > public String getGreetingsBeanArray(ABean[] bean); > } > > And a package-info.java > > @javax.xml.bind.annotation.XmlSchema(namespace="http://test") > package helloworld; > > I get the following generated WSDL types from Tuscany... > > <wsdl:types> > <xs:schema targetNamespace="http://test" version="1.0" > xmlns:tns="http://test" xmlns:xs="http://www.w3.org/2001/XMLSchema"> > <xs:complexType name="aBean"> > <xs:sequence> > <xs:element minOccurs="0" name="field1" type="xs:string" /> > <xs:element minOccurs="0" name="field2" type="xs:string" /> > </xs:sequence> > </xs:complexType> > <xs:complexType final="#all" name="aBeanArray"> > <xs:sequence> > <xs:element maxOccurs="unbounded" minOccurs="0" > name="item" nillable="true" type="tns:aBean" /> > </xs:sequence> > </xs:complexType> > </xs:schema> > <xs:schema attributeFormDefault="qualified" > elementFormDefault="unqualified" targetNamespace="http://helloworld/" > xmlns:ns0="http://test" xmlns:xs="http://www.w3.org/2001/XMLSchema"> > <xs:import namespace="http://test" /> > <xs:element name="getGreetingsBean"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="0" name="arg0" > nillable="true" type="ns0:aBean" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="getGreetings"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="0" name="arg0" > nillable="true" type="xs:string" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="getGreetingsResponse"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="0" name="return" > nillable="true" type="xs:string" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="getGreetingsBeanResponse"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="0" name="return" > nillable="true" type="xs:string" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="getGreetingsBeanArrayResponse"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="0" name="return" > nillable="true" type="xs:string" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="getGreetingsBeanArray"> > <xs:complexType> > <xs:sequence> > <xs:element maxOccurs="unbounded" > minOccurs="0" name="arg0" nillable="true" > type="ns0:aBean" /> > </xs:sequence> > </xs:complexType> > </xs:element> > </xs:schema> > </wsdl:types> > > > Which validates for me. Haven't actually tries generating a client > from it but it looks OK. So if you can live with this this should get > you going. I'm not sure how to get vectors to work. > > We do need a JIRA to cover this very common case as it's a real > gotcha. I note that https://issues.apache.org/jira/browse/TUSCANY-2853 > was actually closed when in reality we just use a work around. I'll > reopen it and add some notes. > > Simon > >
Hi Yes, the package-info.java is a separate file. I just committed the example I was using (http://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.x/itest/wsdlgen/src/main/java/helloworld/package-info.java). If you add a package-info.java file for you package and map the package to a namspace, using @javax.xml.bind.annotation.XmlSchema(namespace="your namespace goes here") then Tuscany should generate the WSDL for you using this namespace rather than no namespace which is what's causing the problem. Simon
