Repository: camel
Updated Branches:
  refs/heads/camel-2.14.x 35264ab6f -> 6dc170528


[CAMEL-9246]camel-cxf proxy with MTOM does not get attachment back when 
RPC/literal style WSDL used

(cherry picked from commit b471d78f831859ef61034a7fb112fb36972572b5)


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6dc17052
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6dc17052
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6dc17052

Branch: refs/heads/camel-2.14.x
Commit: 6dc17052826978edb1137fa056eba2d604c200a4
Parents: 35264ab
Author: Freeman Fang <freeman.f...@gmail.com>
Authored: Mon Nov 16 14:23:00 2015 +0800
Committer: Freeman Fang <freeman.f...@gmail.com>
Committed: Mon Nov 16 15:28:47 2015 +0800

----------------------------------------------------------------------
 .../camel/component/cxf/DefaultCxfBinding.java  | 34 ++++++++++----------
 .../cxf/mtom/CxfMtomPOJOProducerTest.java       |  3 +-
 2 files changed, 18 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6dc17052/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
index 71ed7d5..95621c3 100644
--- 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
+++ 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
@@ -180,8 +180,8 @@ public class DefaultCxfBinding implements CxfBinding, 
HeaderFilterStrategyAware
         DataFormat dataFormat = 
camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY,  
                                                           DataFormat.class);
         boolean isXop = 
Boolean.valueOf(camelExchange.getProperty(Message.MTOM_ENABLED, String.class));
-        // propagate attachments if the data format is not POJO with MTOM 
enabled
-        if (cxfMessage.getAttachments() != null && 
!(DataFormat.POJO.equals(dataFormat) && isXop)) {
+        // propagate attachments
+        if (cxfMessage.getAttachments() != null) {
             // propagate attachments
             for (Attachment attachment : cxfMessage.getAttachments()) {
                 camelExchange.getOut().addAttachment(attachment.getId(), 
attachment.getDataHandler());
@@ -375,23 +375,23 @@ public class DefaultCxfBinding implements CxfBinding, 
HeaderFilterStrategyAware
             return;
         }
         
-        // propagate attachments if the data format is not POJO
-        if (!DataFormat.POJO.equals(dataFormat)) {
-            Set<Attachment> attachments = null;
-            boolean isXop = 
Boolean.valueOf(camelExchange.getProperty(Message.MTOM_ENABLED, String.class));
-            for (Map.Entry<String, DataHandler> entry : 
camelExchange.getOut().getAttachments().entrySet()) {
-                if (attachments == null) {
-                    attachments = new HashSet<Attachment>();
-                }
-                AttachmentImpl attachment = new AttachmentImpl(entry.getKey(), 
entry.getValue());
-                attachment.setXOP(isXop); 
-                attachments.add(attachment);
-            }
-            
-            if (attachments != null) {
-                outMessage.setAttachments(attachments);
+        // propagate attachments
+        
+        Set<Attachment> attachments = null;
+        boolean isXop = 
Boolean.valueOf(camelExchange.getProperty(Message.MTOM_ENABLED, String.class));
+        for (Map.Entry<String, DataHandler> entry : 
camelExchange.getOut().getAttachments().entrySet()) {
+            if (attachments == null) {
+                attachments = new HashSet<Attachment>();
             }
+            AttachmentImpl attachment = new AttachmentImpl(entry.getKey(), 
entry.getValue());
+            attachment.setXOP(isXop);
+            attachments.add(attachment);
         }
+
+        if (attachments != null) {
+            outMessage.setAttachments(attachments);
+        }
+        
        
         BindingOperationInfo boi = cxfExchange.get(BindingOperationInfo.class);
         if (boi != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/6dc17052/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomPOJOProducerTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomPOJOProducerTest.java
 
b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomPOJOProducerTest.java
index 5df1ff0..a8e0f0d 100644
--- 
a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomPOJOProducerTest.java
+++ 
b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomPOJOProducerTest.java
@@ -87,8 +87,7 @@ public class CxfMtomPOJOProducerTest extends 
AbstractJUnit4SpringContextTests {
             
         });
         
-        // Make sure we don't put the attachement into out message
-        assertEquals("The attachement size should be 0 ", 0, 
exchange.getOut().getAttachments().size());
+        assertEquals("The attachement size should be 2 ", 2, 
exchange.getOut().getAttachments().size());
         
         Object[] result = exchange.getOut().getBody(Object[].class);
         Holder<byte[]> photo1 = (Holder<byte[]>) result[1];

Reply via email to