[ 
https://issues.apache.org/jira/browse/CXF-956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Kulp updated CXF-956:
----------------------------

    Component/s: Tooling

> Wsdl2java not creating service interface method signatures right for wrapped 
> document literal
> ---------------------------------------------------------------------------------------------
>
>                 Key: CXF-956
>                 URL: https://issues.apache.org/jira/browse/CXF-956
>             Project: CXF
>          Issue Type: Bug
>          Components: Tooling
>    Affects Versions: 2.0.1
>         Environment: Windows XP, Java 1.5
>            Reporter: Ben Brown
>            Priority: Minor
>
> Created the following WSDL:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>       xmlns:tns="http://bar.org";
>       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>       xmlns:xsd="http://www.w3.org/2001/XMLSchema"; name="MyWebService"
>       targetNamespace="http://bar.org";>
>       
>       <!-- T Y P E S -->
>       <wsdl:types>
>           <xsd:schema targetNamespace="http://foo.org/Transaction";
>             elementFormDefault="qualified"
>             xmlns="http://foo.org/Transaction";
>             xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>                   <xsd:element name="Transaction" type="TransactionType"/>
>               
>                   <xsd:complexType name="TransactionType">
>                       <xsd:sequence>
>                           <xsd:element name="Source" type="xsd:double"/>
>                           <xsd:element name="Dest" type="xsd:double"/>
>                       </xsd:sequence>
>                   </xsd:complexType>
>               </xsd:schema>
>           
>           <xsd:schema targetNamespace="http://bar.org/TransactionResponse";
>             elementFormDefault="qualified"
>             xmlns="http://bar.org/TransactionResponse";
>             xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>                       <xsd:element name="TransactionResponse">
>                               <xsd:complexType>
>                                       <xsd:sequence>
>                                               <xsd:element 
> name="SettlementToken" type="xsd:int"/>
>                                               <xsd:element 
> name="SettlementTime" type="xsd:dateTime"/>
>                                       </xsd:sequence>
>                               </xsd:complexType>
>                       </xsd:element>
>               </xsd:schema>
>           
>               <xsd:schema targetNamespace="http://bar.org";
>                   xmlns:ns0="http://foo.org/Transaction";
>                   xmlns:ns1="http://bar.org/TransactionResponse";
>                   xmlns="http://bar.org";>
>                       <xsd:import namespace="http://foo.org/Transaction"/>
>                       <xsd:import 
> namespace="http://bar.org/TransactionResponse"/>
>                       
>                       <xsd:element name="processTransaction">
>                           <xsd:complexType>
>                               <xsd:sequence>
>                                   <xsd:element ref="ns0:Transaction"/>
>                                   <xsd:element name="TransactionTime" 
> type="xsd:dateTime"/>
>                               </xsd:sequence>
>                           </xsd:complexType>
>                       </xsd:element>
>                       
>                       <xsd:element name="processTransactionResponse">
>                           <xsd:complexType>
>                               <xsd:sequence>
>                                   <xsd:element ref="ns1:TransactionResponse"/>
>                               </xsd:sequence>
>                           </xsd:complexType>
>                       </xsd:element>
>               </xsd:schema>
>       </wsdl:types>
>       
>       <!-- M E S S A G E S -->
>       <wsdl:message name="processTransactionRequest">
>               <wsdl:part element="tns:processTransaction" name="parameters"/>
>       </wsdl:message>
>       <wsdl:message name="ProcessTransactionResponse">
>               <wsdl:part element="tns:processTransactionResponse" 
> name="parameters"/>
>       </wsdl:message>
>       
>       <!-- P O R T   T Y P E -->
>       <wsdl:portType name="MyWebServicePortType">
>               <wsdl:operation name="processTransaction">
>                       <wsdl:input message="tns:processTransactionRequest"/>
>                       <wsdl:output message="tns:ProcessTransactionResponse"/>
>               </wsdl:operation>
>       </wsdl:portType>
>       
>       <!-- B I N D I N G -->
>       <wsdl:binding name="MyWebServiceSOAP" type="tns:MyWebServicePortType">
>               <soap:binding style="document"
>                       transport="http://schemas.xmlsoap.org/soap/http"; />
>               <wsdl:operation name="processTransaction">
>                       <soap:operation soapAction=""/>
>                       <wsdl:input>
>                               <soap:body use="literal"/>
>                       </wsdl:input>
>                       <wsdl:output>
>                               <soap:body use="literal"/>
>                       </wsdl:output>
>               </wsdl:operation>
>       </wsdl:binding>
>       
>       <!-- S E R V I C E -->
>       <wsdl:service name="MyWebService">
>               <wsdl:port binding="tns:MyWebServiceSOAP" 
> name="MyWebServiceSOAP">
>                       <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
>               </wsdl:port>
>       </wsdl:service>
> </wsdl:definitions>
> Ran with following command: "wsdl2java -verbose MyWebService.wsdl"
> Got:
> @WebService(targetNamespace = "http://bar.org";, name = "MyWebServicePortType")
> @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
> public interface MyWebServicePortType {
>     @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
>     @WebResult(targetNamespace = "http://bar.org";, partName = "parameters", 
> name = "processTransactionResponse")
>     @WebMethod
>     public org.bar.ProcessTransactionResponse processTransaction(
>         @WebParam(targetNamespace = "http://bar.org";, partName = 
> "parameters", name = "processTransaction")
>         org.bar.ProcessTransaction parameters
>     );
> }
> I think should get something similar to:
> @WebService(name = "MyWebServicePortType", targetNamespace = "http://bar.org";)
> @XmlSeeAlso({
>     org.bar.transactionresponse.ObjectFactory.class,
>     org.bar.ObjectFactory.class,
>     org.foo.transaction.ObjectFactory.class
> })
> public interface MyWebServicePortType {
>     /**
>      * 
>      * @param transaction
>      * @param transactionTime
>      * @return
>      *     returns org.bar.transactionresponse.TransactionResponse
>      */
>     @WebMethod
>     @WebResult(name = "TransactionResponse", targetNamespace = 
> "http://bar.org/TransactionResponse";)
>     @RequestWrapper(localName = "processTransaction", targetNamespace = 
> "http://bar.org";, className = "org.bar.ProcessTransaction")
>     @ResponseWrapper(localName = "processTransactionResponse", 
> targetNamespace = "http://bar.org";, className = 
> "org.bar.ProcessTransactionResponse")
>     public TransactionResponse processTransaction(
>         @WebParam(name = "Transaction", targetNamespace = 
> "http://foo.org/Transaction";)
>         TransactionType transaction,
>         @WebParam(name = "TransactionTime", targetNamespace = "")
>         XMLGregorianCalendar transactionTime);
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to