[ 
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

        

Reply via email to