cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (CXF-6523) org.apache.cxf.interceptor.Fault: wrong number of arguments (due to explicit soap header)
Date Mon, 27 Mar 2017 19:54:41 GMT

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

Daniel Kulp resolved CXF-6523.
------------------------------
       Resolution: Fixed
         Assignee: Daniel Kulp
    Fix Version/s: 3.2.0
                   3.1.11
                   3.0.13

> org.apache.cxf.interceptor.Fault: wrong number of arguments (due to explicit soap header)
> -----------------------------------------------------------------------------------------
>
>                 Key: CXF-6523
>                 URL: https://issues.apache.org/jira/browse/CXF-6523
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.7.11, 3.1.2
>            Reporter: Robby Pelssers
>            Assignee: Daniel Kulp
>            Priority: Critical
>             Fix For: 3.0.13, 3.1.11, 3.2.0
>
>         Attachments: workorders.wsdl
>
>
> An explicit Soap header is causing issues due to having the same QName as the wrapped
Soap body 
>    <wsdl:message name="ARAuthenticate">
>       <wsdl:part element="s0:AuthenticationInfo" name="parameters"/>
>    </wsdl:message>
>    <wsdl:message name="GetWorkOrdersListSoapIn">
>       <wsdl:part element="s0:GetWorkOrdersList" name="parameters"/>
>    </wsdl:message>
>  This results in a MessageInfo object with 1 messagePart and 1 outOfbandPart, both having
the same QName.
> Problem is that in the WrapperClassInInterceptor we loop over messageInfo.getMessageParts
which actually returns the combined list of messageParts and outOfBandParts.
> Now for the header part with QName  "{urn:VF_WorkOrders}parameters" we do a lookup wrappedMessageInfo.getMessagePart(part.getName())
which incorrectly retrieves the wrapped input messagePart.
>                 for (MessagePartInfo part : messageInfo.getMessageParts()) {
>                     if (Boolean.TRUE.equals(part.getProperty(ReflectionServiceFactoryBean.HEADER)))
{
>                         MessagePartInfo mpi = wrappedMessageInfo.getMessagePart(part.getName());
>                         if (mpi != null && lst.hasValue(mpi)) {
>                             count++;
>                             newParams.put(part, lst.get(mpi));
>                         } else if (mpi == null || mpi.getTypeClass() == null) {
>                             //header, but not mapped to a param on the method
>                             if (removes == null) {
>                                 removes = new ArrayList<Integer>();
>                             }
>                             removes.add(part.getIndex());
>                         }
>                     } else {
>                         ++count;
>                     }
>                 }



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message