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

William Tam updated CAMEL-2802:
-------------------------------

    Description: 
Currently, CxfEndpoint.CamelCxfClientImpl does not leave place holder for SOAP 
header in MessageContentList.  It could be a problem when CXF tries to retrieve 
the values in the MessageContentList.  Without the placeholder in place, SOAP 
body part can be mistakenly retrieved as SOAP header.  This patch should fix 
the problem.  Note: The fix depends on CXF-2837 (Add null pointer check in 
SoapOutInterceptor) which will be delivered in CXF 2.2.10.

{code}
Index: src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
===================================================================
--- src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java       
(revision 43)
+++ src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java       
(working copy)
@@ -513,8 +513,9 @@
                 MessageContentsList content = new MessageContentsList();
                 int i = 0;
                 
-                for (MessagePartInfo partInfo : 
boi.getOperationInfo().getInput().getMessageParts()) {
-                    if (elements.size() > i) {
+                for (MessagePartInfo partInfo : 
boi.getOperationInfo().getInput().getMessageParts()) {                 
+                    if (elements.size() > i && 
partInfo.getConcreteName().getLocalPart()
+                        .equals(elements.get(i).getLocalName())) {
                         content.put(partInfo, elements.get(i++));
                     }
                 }

{code}

  was:
Currently, CxfEndpoint.CamelCxfClientImpl does not leave place holder for SOAP 
header in MessageContentList.  It could be a problem when CXF tries to retrieve 
the values in the MessageContentList.  Without the placeholder in place, SOAP 
body part can be mistakenly retrieved as SOAP header.  This patch should fix 
the problem.  Note: The fix depends on CXF-2837 (Add null pointer check in 
SoapOutInterceptor) which will be delivered in CXF 2.2.10.

Index: src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
===================================================================
--- src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java       
(revision 43)
+++ src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java       
(working copy)
@@ -513,8 +513,9 @@
                 MessageContentsList content = new MessageContentsList();
                 int i = 0;
                 
-                for (MessagePartInfo partInfo : 
boi.getOperationInfo().getInput().getMessageParts()) {
-                    if (elements.size() > i) {
+                for (MessagePartInfo partInfo : 
boi.getOperationInfo().getInput().getMessageParts()) {                 
+                    if (elements.size() > i && 
partInfo.getConcreteName().getLocalPart()
+                        .equals(elements.get(i).getLocalName())) {
                         content.put(partInfo, elements.get(i++));
                     }
                 }



> Camel-cxf does not properly populate MessageContentList for PAYLOAD mode
> ------------------------------------------------------------------------
>
>                 Key: CAMEL-2802
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2802
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-cxf
>            Reporter: William Tam
>            Assignee: William Tam
>             Fix For: 2.4.0
>
>
> Currently, CxfEndpoint.CamelCxfClientImpl does not leave place holder for 
> SOAP header in MessageContentList.  It could be a problem when CXF tries to 
> retrieve the values in the MessageContentList.  Without the placeholder in 
> place, SOAP body part can be mistakenly retrieved as SOAP header.  This patch 
> should fix the problem.  Note: The fix depends on CXF-2837 (Add null pointer 
> check in SoapOutInterceptor) which will be delivered in CXF 2.2.10.
> {code}
> Index: src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
> ===================================================================
> --- src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java     
> (revision 43)
> +++ src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java     
> (working copy)
> @@ -513,8 +513,9 @@
>                  MessageContentsList content = new MessageContentsList();
>                  int i = 0;
>                  
> -                for (MessagePartInfo partInfo : 
> boi.getOperationInfo().getInput().getMessageParts()) {
> -                    if (elements.size() > i) {
> +                for (MessagePartInfo partInfo : 
> boi.getOperationInfo().getInput().getMessageParts()) {                 
> +                    if (elements.size() > i && 
> partInfo.getConcreteName().getLocalPart()
> +                        .equals(elements.get(i).getLocalName())) {
>                          content.put(partInfo, elements.get(i++));
>                      }
>                  }
> {code}

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