Author: ningjiang
Date: Wed Feb  9 09:19:02 2011
New Revision: 1068801

URL: http://svn.apache.org/viewvc?rev=1068801&view=rev
Log:
CAMEL-3643 camel-cxf should not copy the attachments between the CXF and Camel 
message if the endpoint is working POJO DataFormat

Modified:
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomConsumerTest.java

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java?rev=1068801&r1=1068800&r2=1068801&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
 Wed Feb  9 09:19:02 2011
@@ -259,8 +259,9 @@ public class DefaultCxfBinding implement
             camelExchange.getIn().setBody(body);
         }  
         
-        // propagate attachments
-        if (cxfMessage.getAttachments() != null) {
+        // propagate attachments if the data format is not POJO        
+        if (cxfMessage.getAttachments() != null 
+            && !camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, 
DataFormat.class).equals(DataFormat.POJO)) {
             for (Attachment attachment : cxfMessage.getAttachments()) {
                 camelExchange.getIn().addAttachment(attachment.getId(), 
attachment.getDataHandler());
             }
@@ -337,20 +338,22 @@ public class DefaultCxfBinding implement
             }
         }         
         
-        // 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);
+        // 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);
+            }
         }
        
         BindingOperationInfo boi = cxfExchange.get(BindingOperationInfo.class);

Modified: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomConsumerTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomConsumerTest.java?rev=1068801&r1=1068800&r2=1068801&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomConsumerTest.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomConsumerTest.java
 Wed Feb  9 09:19:02 2011
@@ -53,6 +53,7 @@ public class CxfMtomConsumerTest extends
                     @SuppressWarnings("unchecked")
                     public void process(final Exchange exchange) throws 
Exception {
                         Message in = exchange.getIn();
+                        assertEquals("We should not get any attachements 
here.", 0, in.getAttachments().size());
                         // Get the parameter list
                         List<?> parameter = in.getBody(List.class);
                         // Get the operation name
@@ -105,7 +106,7 @@ public class CxfMtomConsumerTest extends
         port.detail(photo, image);
 
         assertEquals("ResponseFromCamel", new String(photo.value, "UTF-8"));
-        assertNotNull(image.value);        
+        assertNotNull(image.value);
         
     }
 


Reply via email to