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