Joshua Shannon created CXF-5061:
-----------------------------------
Summary: Invalid WSDL generated created for List of Complex Type
Key: CXF-5061
URL: https://issues.apache.org/jira/browse/CXF-5061
Project: CXF
Issue Type: Bug
Components: JAX-WS Runtime, JAXB Databinding
Affects Versions: 2.7.5
Environment: Windows 7, Tomcat 7.0.30, Java 1.7.0_07
Reporter: Joshua Shannon
We are using CXF to do Code First development of both SOAP and REST web
services. Here is our interface for the web service:
@Path("/test")
@Produces(BaseMediaType.APPLICATION_JSON)
@Consumes(BaseMediaType.APPLICATION_JSON)
@WebService(name = "TestService",
portName = "TestServicePort",
serviceName = "TestService",
targetNamespace =
"http://enterprise.ltcourttech.com/services/test")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface TestService
{
@Path("/list")
@GET
@Produces(BaseMediaType.MULTIPART_RELATED)
@WebMethod(operationName = "getList")
public List<WrapperString> getList();
}
Whenever CXF creates the WSDL for the implementing class, the WSDL is invalid.
Here is the WSDL that is created:
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://enterprise.ltcourttech.com/services/test"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="TestService"
targetNamespace="http://enterprise.ltcourttech.com/services/test">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns0="http://enterprise.ltcourttech.com/services/base"
elementFormDefault="qualified"
targetNamespace="http://enterprise.ltcourttech.com/services/base">
<xsd:complexType name="wrapperStringArray">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="item"
nillable="true" type="ns0:WrapperString"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="WrapperString">
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="wrapperString" type="ns0:WrapperString"/>
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://enterprise.ltcourttech.com/services/test"
xmlns:ns0="http://enterprise.ltcourttech.com/services/base"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://enterprise.ltcourttech.com/services/test">
<xsd:import namespace="http://enterprise.ltcourttech.com/services/base"/>
<xsd:element name="getListResponse" nillable="true"
type="ns0:WrapperStringArray"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getListResponse">
<wsdl:part element="tns:getListResponse" name="getListResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getList">
</wsdl:message>
<wsdl:portType name="TestService">
<wsdl:operation name="getList">
<wsdl:input message="tns:getList" name="getList">
</wsdl:input>
<wsdl:output message="tns:getListResponse" name="getListResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestServiceSoapBinding" type="tns:TestService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getList">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="getList">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getListResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TestService">
<wsdl:port binding="tns:TestServiceSoapBinding" name="TestServicePort">
<soap:address location="http://mtefile/services/soap/test"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Notice that the complexType is named "wrapperStringArray" yet the
getListResponse is trying to use the type of "ns0:WrapperStringArray". The bug
is that the case of the types does not match. I think the getListResponse type
should be a lowercase "w". I ran another test with a List<String> and the types
were correctly generated to "stringArray". It seems like CXF is messing the
capitalization of the type when using complex objects. This is quite a high
priority issue so we can get SOAP services to work correctly with a valid WSDL.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira