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>'].