[ 
https://issues.apache.org/jira/browse/CXF-2110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12681458#action_12681458
 ] 

Daniel Kulp commented on CXF-2110:
----------------------------------


Alessio,

Can you try:

    private void setParameterOrder(Method method, Class[] paramClasses, 
OperationInfo op) {
        if (isRPC(method)) {
            List<String> paramOrdering = new LinkedList<String>();
            boolean hasOut = false;
            for (int j = 0; j < paramClasses.length; j++) {
                if (Exchange.class.equals(paramClasses[j])) {
                    continue;
                }
                if (isInParam(method, j)) {
                    paramOrdering.add(getInPartName(op, method, 
j).getLocalPart());
                    if (isOutParam(method, j)) {
                        hasOut = true;
                    }
                } else if (isOutParam(method, j)) {
                    hasOut = true;
                    paramOrdering.add(getOutPartName(op, method, 
j).getLocalPart());
                }
            }
            if (!paramOrdering.isEmpty() && hasOut) {
                op.setParameterOrdering(paramOrdering);
            }
        }
    }


Basically, if there aren't any in/out or out params, there shouldn't be any 
need to set the parameter order.   Right?   The above change takes that into 
account.

> Missing parameterOrder attribute in java2wsdl generated RPC wsdls
> -----------------------------------------------------------------
>
>                 Key: CXF-2110
>                 URL: https://issues.apache.org/jira/browse/CXF-2110
>             Project: CXF
>          Issue Type: Sub-task
>          Components: Tooling
>    Affects Versions: 2.1.4
>            Reporter: Alessio Soldano
>            Assignee: Alessio Soldano
>         Attachments: CXF-2110.txt
>
>
> This is related to https://jira.jboss.org/jira/browse/JBWS-2528
> java2wsdl does not generate the parameterOrder attribute in the wsdl 
> portType/operation element. This is required to preserve the original method 
> signature of a webmethod in cases where soapHeader and IN/OUT parameters are 
> used at the same time.
> For instance for a method like this:
> @WebMethod
>    public String hello3(@WebParam(name = "id", targetNamespace = 
> "hello3/Name", header = true) String name,
>          @WebParam(name = "Name", mode = WebParam.Mode.OUT) Holder<Name> 
> name2,
>          @WebParam(name = "Employee", mode = WebParam.Mode.INOUT) 
> Holder<Employee> employee)
>          throws NameException
>    {
>       return "Hello " + name;
>    }
> we get this portType:
>  <wsdl:portType name="JBWS2528Endpoint">
>     <wsdl:operation name="hello3">
>       <wsdl:input name="hello3" message="tns:hello3">
>     </wsdl:input>
>       <wsdl:output name="hello3Response" message="tns:hello3Response">
>     </wsdl:output>
>       <wsdl:fault name="NameException" message="tns:NameException">
>     </wsdl:fault>
>     </wsdl:operation>
>   </wsdl:portType>
> instead of
>  <wsdl:portType name="JBWS2528Endpoint">
>     <wsdl:operation name="hello3" parameterOrder="id Name Employee">
>       <wsdl:input name="hello3" message="tns:hello3">
>     </wsdl:input>
>       <wsdl:output name="hello3Response" message="tns:hello3Response">
>     </wsdl:output>
>       <wsdl:fault name="NameException" message="tns:NameException">
>     </wsdl:fault>
>     </wsdl:operation>
>   </wsdl:portType>
> This is relevant when doing java -> wsdl -> java (using CXF tools) and 
> expecting the generated endpoint interface to be the same as the initial one. 
> This issue was revealed when running the JavaEE 5 CTS TCK using JBossWS-CXF 
> and configuring the jws/webparam3 reverse test. Without the parameterOrder 
> attribute, a different interface is generated and the client test does not 
> compile because of that.

-- 
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