[
https://issues.apache.org/jira/browse/CXF-3659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13069625#comment-13069625
]
Martin commented on CXF-3659:
-----------------------------
Thank you for the clarification Daniel.
> wsdl2java fails to generate consistent Java from equivilent valid but
> slightly different WSDL, e.g. soap_header example
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: CXF-3659
> URL: https://issues.apache.org/jira/browse/CXF-3659
> Project: CXF
> Issue Type: Bug
> Components: Tooling
> Affects Versions: 2.1.10, 2.0.13, 2.3, 2.2.12, 2.4, 2.4.1
> Environment: JDK 1.6_u20
> Reporter: Martin
> Assignee: Daniel Kulp
> Priority: Critical
> Labels: header, soap, wsdl, wsdl2java
> Fix For: Invalid
>
>
> Using the CXF distributed sample _soap_header_, by a small valid modification
> simplifying the wsdl, the generated code is altered significantly, with the
> parameters for the SOAP Body parameter being dropped.
> Sample from the unmodified CXF sample wsdl:
> {code}
> @WebResult(name = "outHeaderResponse", targetNamespace =
> "http://apache.org/cxf/sample/headers/body/", partName = "the_response")
> @WebMethod
> public org.apache.cxf.sample.headers.body.OutHeaderResponse outHeader(
> @WebParam(partName = "me", name = "outHeader", targetNamespace =
> "http://apache.org/cxf/sample/headers/body/")
> org.apache.cxf.sample.headers.body.OutHeader me,
> @WebParam(partName = "header_info", mode = WebParam.Mode.INOUT, name
> = "SOAPHeaderInfo", targetNamespace =
> "http://apache.org/cxf/sample/headers/header/", header = true)
>
> javax.xml.ws.Holder<org.apache.cxf.sample.headers.header.SOAPHeaderData>
> headerInfo
> );
> {code}
>
> Sample output from modified wsdl processing:
> {code}
> @WebResult(name = "responseType", targetNamespace = "")
> @RequestWrapper(localName = "outHeader", targetNamespace =
> "http://apache.org/cxf/sample/headers/body/", className =
> "org.apache.cxf.sample.headers.body.OutHeader")
> @WebMethod
> @ResponseWrapper(localName = "outHeaderResponse", targetNamespace =
> "http://apache.org/cxf/sample/headers/body/", className =
> "org.apache.cxf.sample.headers.body.OutHeaderResponse")
> public java.lang.String outHeader(
> @WebParam(name = "requestType", targetNamespace = "")
> java.lang.String requestType
> );
> {code}
> Note the missing *header* parameter in the modified wsdl vs unmodified wsdl:
> {code}
> @WebParam(partName = "header_info", mode = WebParam.Mode.INOUT, name
> = "SOAPHeaderInfo", targetNamespace =
> "http://apache.org/cxf/sample/headers/header/", header = true)
>
> javax.xml.ws.Holder<org.apache.cxf.sample.headers.header.SOAPHeaderData>
> headerInfo
> {code}
> Here is an example call from the original sample wsdl:
> {code:xml}
> <!-- the message def -->
> <message name="inHeaderRequest">
> <part element="tns:inHeader" name="me"/>
> <part element="tns:SOAPHeaderInfo" name="header_info"/>
> </message>
> <message name="inHeaderResponse">
> <part element="tns:inHeaderResponse" name="the_response"/>
> </message>
> <!-- the related operation in the binding -->
> <operation name="inHeader">
> <soap:operation soapAction="" style="document"/>
> <input name="inHeaderRequest">
> <soap:body parts="me" use="literal"/>
> <soap:header message="tns:inHeaderRequest" part="header_info"
> use="literal"/>
> </input>
> <output name="inHeaderResponse">
> <soap:body use="literal"/>
> </output>
> </operation>
> {code}
> And the modified wsdl that is not apparently parsed correctly:
> {code:xml}
> <!-- the message def -->
> <message name="HeaderInfo">
> <part element="tns:SOAPHeaderInfo" name="header_info"/>
> </message>
> <message name="inHeaderRequest">
> <part element="tns:inHeader" name="me"/>
> </message>
> <message name="inHeaderResponse">
> <part element="tns:inHeaderResponse" name="the_response"/>
> </message>
> <!-- the related operation in the binding -->
> <operation name="inHeader">
> <soap:operation soapAction="" style="document"/>
> <input name="inHeaderRequest">
> <soap:body parts="me" use="literal"/>
> <soap:header message="tns:HeaderInfo" part="header_info"
> use="literal"/>
> </input>
> <output name="inHeaderResponse">
> <soap:body use="literal"/>
> </output>
> </operation>
> {code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira