Updated Branches: refs/heads/camel-2.12.x aae06ee64 -> b855e8a73
CAMEL-7069: Sending an empty soap body message to a generic provider camel-cxf consumer results in NPE Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b855e8a7 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b855e8a7 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b855e8a7 Branch: refs/heads/camel-2.12.x Commit: b855e8a736a066db7958cccf4ed5de1a650999b5 Parents: aae06ee Author: Akitoshi Yoshida <[email protected]> Authored: Wed Jan 29 12:28:37 2014 +0100 Committer: Akitoshi Yoshida <[email protected]> Committed: Wed Jan 29 12:31:11 2014 +0100 ---------------------------------------------------------------------- .../camel/component/cxf/DefaultCxfBinding.java | 2 +- .../cxf/converter/CxfPayloadConverter.java | 3 +-- .../component/cxf/DefaultCxfBindingTest.java | 24 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b855e8a7/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 a595484..8f2b3e2 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 @@ -743,7 +743,7 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware } MessageContentsList inObjects = MessageContentsList.getContentsList(message); if (inObjects == null) { - return null; + return new ArrayList<Source>(0); } org.apache.cxf.message.Exchange exchange = message.getExchange(); BindingOperationInfo boi = exchange.getBindingOperationInfo(); http://git-wip-us.apache.org/repos/asf/camel/blob/b855e8a7/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java ---------------------------------------------------------------------- diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java index a613e47..ff24d6c 100644 --- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java +++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java @@ -170,8 +170,7 @@ public final class CxfPayloadConverter { if (CxfPayload.class.isAssignableFrom(value.getClass())) { CxfPayload<?> payload = (CxfPayload<?>) value; - if (payload.getBodySources() != null - && payload.getBodySources().size() == 1) { + if (payload.getBodySources().size() == 1) { if (type.isAssignableFrom(Document.class)) { Source s = payload.getBodySources().get(0); Document d; http://git-wip-us.apache.org/repos/asf/camel/blob/b855e8a7/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java index a7e976d..e6d9b3d 100644 --- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java +++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java @@ -149,6 +149,30 @@ public class DefaultCxfBindingTest extends Assert { } @Test + public void testPopupalteExchangeFromCxfResponseOfNullBody() { + DefaultCxfBinding cxfBinding = new DefaultCxfBinding(); + cxfBinding.setHeaderFilterStrategy(new DefaultHeaderFilterStrategy()); + Exchange exchange = new DefaultExchange(context); + org.apache.cxf.message.Exchange cxfExchange = new org.apache.cxf.message.ExchangeImpl(); + exchange.setProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.PAYLOAD); + Map<String, Object> responseContext = new HashMap<String, Object>(); + responseContext.put(org.apache.cxf.message.Message.RESPONSE_CODE, Integer.valueOf(200)); + Map<String, List<String>> headers = new TreeMap<String, List<String>>(String.CASE_INSENSITIVE_ORDER); + responseContext.put(org.apache.cxf.message.Message.PROTOCOL_HEADERS, headers); + org.apache.cxf.message.Message cxfMessage = new org.apache.cxf.message.MessageImpl(); + cxfExchange.setInMessage(cxfMessage); + + cxfBinding.populateExchangeFromCxfResponse(exchange, cxfExchange, responseContext); + + CxfPayload<?> cxfPayload = exchange.getOut().getBody(CxfPayload.class); + + assertNotNull(cxfPayload); + List<?> body = cxfPayload.getBody(); + assertNotNull(body); + assertEquals(0, body.size()); + } + + @Test public void testPopupalteCxfResponseFromExchange() { DefaultCxfBinding cxfBinding = new DefaultCxfBinding(); cxfBinding.setHeaderFilterStrategy(new DefaultHeaderFilterStrategy());
