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