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 <ay@apache.org>
Authored: Wed Jan 29 12:28:37 2014 +0100
Committer: Akitoshi Yoshida <ay@apache.org>
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());
|