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

Daniel Kulp resolved CXF-1208.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.0.4
         Assignee: Daniel Kulp

> WrapperClassInInterceptor incorrecltly handing SOAP headers
> -----------------------------------------------------------
>
>                 Key: CXF-1208
>                 URL: https://issues.apache.org/jira/browse/CXF-1208
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 2.0.2
>         Environment: windows XP, JBoss
>            Reporter: Incognito
>            Assignee: Daniel Kulp
>             Fix For: 2.0.4
>
>
> The following code block in WrapperClassInInterceptor is throwing 
> IndexOutOfBoundsExceptions. The reason is that the newParams list has two 
> (null) list entries, but the MessagePartInfo indeces that are being added to 
> the remove arraylist are 1 and 2. 
>                 List<Integer> removes = null;
>                 for (MessagePartInfo part : messageInfo.getMessageParts()) {
>                     if 
> (Boolean.TRUE.equals(part.getProperty(ReflectionServiceFactoryBean.HEADER))) {
>                         MessagePartInfo mpi = 
> wrappedMessageInfo.getMessagePart(part.getName());
>                         if (lst.hasValue(mpi)) {
>                             newParams.put(part, lst.get(mpi));
>                         } else if (mpi.getTypeClass() == null) {
>                             //header, but not mapped to a param on the method
>                             if (removes == null) {
>                                 removes = new ArrayList<Integer>();
>                             }
>                             removes.add(mpi.getIndex());
>                         }
>                     }
>                 }
>                 if (removes != null) {
>                     Collections.sort(removes, Collections.reverseOrder());
>                     for (Integer i : removes) {
>                         newParams.remove(i.intValue()); // <= error thrown 
> here
>                     }
>                 }
> The two items being removed are a username and password header set in my WSDL 
> file: 
>       <wsdl:input name="sayHelloRequest">
>         <wsdlsoap:header message="impl:username" part="username" 
> use="literal"/>
>         <wsdlsoap:header message="impl:password" part="password" 
> use="literal"/>
>         <wsdlsoap:body use="literal"/>
>       </wsdl:input>
> It seems the wrappedMessageInfo correctly contains all three message parts 
> (the sayHello invocation, and 2 headers) but messageInfo.getMessageParts() is 
> only returned the latter two.

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