You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ff...@apache.org on 2015/11/16 07:23:16 UTC

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

Repository: camel
Updated Branches:
  refs/heads/camel-2.15.x 61ad899b6 -> b471d78f8


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


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

Branch: refs/heads/camel-2.15.x
Commit: b471d78f831859ef61034a7fb112fb36972572b5
Parents: 61ad899
Author: Freeman Fang <fr...@gmail.com>
Authored: Mon Nov 16 14:23:00 2015 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Mon Nov 16 14:23:00 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/b471d78f/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 251728d..273654c 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());
@@ -379,23 +379,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/b471d78f/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];