wsdl2java generates invalid wsdl
--------------------------------
Key: AXIS2-1117
URL: http://issues.apache.org/jira/browse/AXIS2-1117
Project: Apache Axis 2.0 (Axis2)
Issue Type: Bug
Components: Tools
Environment: Java 1.4.2, Axis2 nightly build from 9/7/2006
Reporter: Todd Doolittle
I used wsdl2java to create a service. The wsdl I used contained anonymous
inner complex types. The new WSDL that wsd2java created and put in the
resource directory created the inner complex types with a name= attribute in
the ComplextType tag which I believe is invalid. The full original WSDL is
listed at the bottom. Here is a snippet of example WSDL to simplying
illustrating the problem...
Here are the type definitions. Notice the annonymous inner complex type for
the address...
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="firstName" type="xsd:string" />
<xsd:element name="lastName" type="xsd:string" />
<xsd:element name="address" nillable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="address" type="xsd:string" />
<xsd:element name="city" type="xsd:string" />
<xsd:element name="state" type="xsd:string" />
<xsd:element name="zip" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
After running wsdl2java to create a service, the WSDL is creates and puts in
the resource directory would look like this snippet....
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="firstName" type="xsd:string" />
<xsd:element name="lastName" type="xsd:string" />
<xsd:element name="address" nillable="true">
<xsd:complexType name="address_type1">
<xsd:sequence>
<xsd:element name="address" type="xsd:string" />
<xsd:element name="city" type="xsd:string" />
<xsd:element name="state" type="xsd:string" />
<xsd:element name="zip" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Notice in the above snippet, wsdl2java added the name="address_type0" to the
anonymous inner ComplexType for the address. I do not believe an inner complex
type is allowed to have a name attribute. At least my IDE flags it as an error.
Below is the real full WSDL I used with wsdl2java. Below that is the resulting
wsdl that wsdl2java placed in the resource directory that appears to be invalid.
Original WSDL...
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
name="POC" targetNamespace="http://tempuri.org/"
xmlns:fjs="http://tempuri.org/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"
xmlns:s1="http://tempuri.org/">
<xsd:element name="lookup">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0"
name="upc" nillable="true" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="count" type="xsd:int"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetinfoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="items" nillable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded"
minOccurs="0" name="item" nillable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ksn"
nillable="true" type="xsd:int" />
<xsd:element name="upc"
nillable="true" type="xsd:string" />
<xsd:element
name="maintdt" nillable="true" type="xsd:date" />
<xsd:element name="dpt"
nillable="true" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="count" type="xsd:int"
use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="GetinfoIn">
<wsdl:part element="fjs:lookup" name="parameters" />
</wsdl:message>
<wsdl:message name="GetinfoOut">
<wsdl:part element="fjs:GetinfoResponse" name="parameters" />
</wsdl:message>
<wsdl:portType name="POCPortType">
<wsdl:operation name="Getinfo">
<wsdl:input message="fjs:GetinfoIn" name="lookup" />
<wsdl:output message="fjs:GetinfoOut"
name="GetinfoResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="POCBinding" type="fjs:POCPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Getinfo">
<soap:operation soapAction="" style="document" />
<wsdl:input name="lookup">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="GetinfoResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="POC">
<wsdl:port binding="fjs:POCBinding" name="POCPortType">
<soap:address location="http://localhost:8080/axis2/services/POC" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
The generated invalid WSDL from wsdl2java...
<wsdl:definitions xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:fjs="http://tempuri.org/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://tempuri.org/">
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/"
attributeFormDefault="unqualified" elementFormDefault="qualified">
<xsd:element name="lookup">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="upc" maxOccurs="unbounded"
minOccurs="0" type="xsd:string" nillable="true" />
</xsd:sequence>
<xsd:attribute name="count" type="xsd:int"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetinfoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="items" nillable="true">
<xsd:complexType name="items_type1">
<xsd:sequence>
<xsd:element name="item"
maxOccurs="unbounded" minOccurs="0" nillable="true">
<xsd:complexType
name="item_type0">
<xsd:sequence>
<xsd:element name="ksn"
type="xsd:int" nillable="true" />
<xsd:element name="upc"
type="xsd:string" nillable="true" />
<xsd:element
name="maintdt" type="xsd:date" nillable="true" />
<xsd:element name="dpt"
type="xsd:int" nillable="true" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="count" type="xsd:int"
use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="GetinfoIn">
<wsdl:part name="part1" element="fjs:lookup" />
</wsdl:message>
<wsdl:message name="GetinfoOut">
<wsdl:part name="part1" element="fjs:GetinfoResponse" />
</wsdl:message>
<wsdl:portType name="POCPortType">
<wsdl:operation name="Getinfo">
<wsdl:input
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
message="fjs:GetinfoIn"
wsaw:Action="http://tempuri.org/POCPortType/lookup" />
<wsdl:output
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
message="fjs:GetinfoOut"
wsaw:Action="http://tempuri.org/POCPortType/GetinfoResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="POCSOAP11Binding" type="fjs:POCPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<wsdl:operation name="Getinfo">
<soap:operation
soapAction="http://tempuri.org/POCPortType/lookup" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="POCSOAP12Binding" type="fjs:POCPortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<wsdl:operation name="Getinfo">
<soap12:operation
soapAction="http://tempuri.org/POCPortType/lookup" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="POC">
<wsdl:port name="POCSOAP11port_http"
binding="fjs:POCSOAP11Binding">
<soap:address
location="http://localhost:8080/axis2/services/POC" />
</wsdl:port>
<wsdl:port name="POCSOAP12port_http"
binding="fjs:POCSOAP12Binding">
<soap12:address
location="http://localhost:8080/axis2/services/POC" />
</wsdl:port>
</wsdl: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]