You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/10/27 07:10:42 UTC
[camel] branch master updated: CAMEL-11948 NPE on DefaultMessage
setBody if deprecated constructor was used (#2064)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new deb61d4 CAMEL-11948 NPE on DefaultMessage setBody if deprecated constructor was used (#2064)
deb61d4 is described below
commit deb61d414c0032dd2f6f9eac27b1861374c8398f
Author: Thomas Papke <we...@thopap.de>
AuthorDate: Fri Oct 27 09:10:40 2017 +0200
CAMEL-11948 NPE on DefaultMessage setBody if deprecated constructor was used (#2064)
* CAMEL-11948 NPE on DefaultMessage setBody if deprecated constructor was
used
* CAMEL-11948 NPE on DefaultMessage setBody if deprecated constructor was
used
* Adding test
---
.../java/org/apache/camel/impl/MessageSupport.java | 19 +++++++++++++++++--
.../org/apache/camel/impl/DefaultMessageTest.java | 17 ++++++++++++++---
2 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java b/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
index 4c564b8..a2ae7e7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
@@ -33,7 +33,7 @@ import org.apache.camel.spi.DataTypeAware;
* Unless a specific provider wishes to do something particularly clever with
* headers you probably want to just derive from {@link DefaultMessage}
*
- * @version
+ * @version
*/
public abstract class MessageSupport implements Message, CamelContextAware, DataTypeAware {
private CamelContext camelContext;
@@ -48,6 +48,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
return String.format("Message[%s]", messageId == null ? "" : messageId);
}
+ @Override
public Object getBody() {
if (body == null) {
body = createBody();
@@ -55,10 +56,12 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
return body;
}
+ @Override
public <T> T getBody(Class<T> type) {
return getBody(type, getBody());
}
+ @Override
public Object getMandatoryBody() throws InvalidPayloadException {
Object answer = getBody();
if (answer == null) {
@@ -97,6 +100,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
return null;
}
+ @Override
public <T> T getMandatoryBody(Class<T> type) throws InvalidPayloadException {
// eager same instance type test to avoid the overhead of invoking the type converter
// if already same type
@@ -116,14 +120,16 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
throw new InvalidPayloadException(e, type, this);
}
+ @Override
public void setBody(Object body) {
this.body = body;
// set data type if in use
- if (body != null && camelContext.isUseDataType()) {
+ if (body != null && camelContext != null && camelContext.isUseDataType()) {
this.dataType = new DataType(body.getClass());
}
}
+ @Override
public <T> void setBody(Object value, Class<T> type) {
Exchange e = getExchange();
if (e != null) {
@@ -156,6 +162,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
return dataType != null;
}
+ @Override
public Message copy() {
Message answer = newInstance();
// must copy over CamelContext
@@ -166,6 +173,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
return answer;
}
+ @Override
public void copyFrom(Message that) {
if (that == this) {
// the same instance so do not need to copy
@@ -183,6 +191,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
copyFromWithNewBody(that, that.getBody());
}
+ @Override
public void copyFromWithNewBody(Message that, Object newBody) {
if (that == this) {
// the same instance so do not need to copy
@@ -219,6 +228,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
copyAttachments(that);
}
+ @Override
public Exchange getExchange() {
return exchange;
}
@@ -227,14 +237,17 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
this.exchange = exchange;
}
+ @Override
public CamelContext getCamelContext() {
return camelContext;
}
+ @Override
public void setCamelContext(CamelContext camelContext) {
this.camelContext = camelContext;
}
+ @Override
public void copyAttachments(Message that) {
// the attachments may be the same instance if the end user has made some mistake
// and set the OUT message with the same attachment instance of the IN message etc
@@ -270,6 +283,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
return null;
}
+ @Override
public String getMessageId() {
if (messageId == null) {
messageId = createMessageId();
@@ -277,6 +291,7 @@ public abstract class MessageSupport implements Message, CamelContextAware, Data
return this.messageId;
}
+ @Override
public void setMessageId(String messageId) {
this.messageId = messageId;
}
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java
index 112c2a9..0ca6463 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultMessageTest.java
@@ -16,15 +16,16 @@
*/
package org.apache.camel.impl;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.camel.Attachment;
import org.junit.Test;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.MatcherAssert.assertThat;
-
public class DefaultMessageTest {
@Test
@@ -36,4 +37,14 @@ public class DefaultMessageTest {
assertThat(attachments, instanceOf(LinkedHashMap.class));
}
+ @Test
+ public void testCamelContextIsNull() {
+ @SuppressWarnings("deprecation")
+ DefaultMessage message = new DefaultMessage();
+ String body = "something";
+ message.setBody(body);
+ assertEquals(body, message.getBody());
+ assertEquals(null, message.getCamelContext());
+ }
+
}
--
To stop receiving notification emails like this one, please contact
['"commits@camel.apache.org" <co...@camel.apache.org>'].