Repository: camel
Updated Branches:
  refs/heads/master e512dd002 -> 777d7311e


CAMEL-9250: Configure AllowUseOriginalMessage to be disabled by default if not 
in use.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e58ffc51
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e58ffc51
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e58ffc51

Branch: refs/heads/master
Commit: e58ffc51b6daffa54edbf48f5e231bdd20c083ad
Parents: e512dd0
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sat May 7 10:49:21 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sat May 7 11:32:39 2016 +0200

----------------------------------------------------------------------
 .../camel/builder/ErrorHandlerBuilderSupport.java       |  8 ++++++++
 .../java/org/apache/camel/impl/DefaultCamelContext.java | 12 +++++-------
 .../java/org/apache/camel/impl/DefaultRouteContext.java |  4 +++-
 .../java/org/apache/camel/impl/DefaultUnitOfWork.java   |  8 +++-----
 .../org/apache/camel/model/OnCompletionDefinition.java  |  4 ++++
 5 files changed, 23 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/e58ffc51/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
 
b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
index 365ebc0..8bc55cb 100644
--- 
a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
+++ 
b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
@@ -25,6 +25,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.processor.ErrorHandler;
 import org.apache.camel.processor.ErrorHandlerSupport;
+import org.apache.camel.processor.RedeliveryErrorHandler;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
@@ -69,6 +70,13 @@ public abstract class ErrorHandlerBuilderSupport implements 
ErrorHandlerBuilder
                 }
             }
         }
+        if (handler instanceof RedeliveryErrorHandler) {
+            boolean original = ((RedeliveryErrorHandler) 
handler).isUseOriginalMessagePolicy();
+            if (original) {
+                // ensure allow original is turned on
+                routeContext.setAllowUseOriginalMessage(true);
+            }
+        }
     }
 
     public List<OnExceptionDefinition> getErrorHandlers(RouteContext 
routeContext) {

http://git-wip-us.apache.org/repos/asf/camel/blob/e58ffc51/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index d5c6d3f..9fbb622 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -42,7 +42,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
-
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.naming.Context;
@@ -227,7 +226,7 @@ public class DefaultCamelContext extends ServiceSupport 
implements ModelCamelCon
     private Boolean typeConverterStatisticsEnabled = Boolean.FALSE;
     private Boolean useMDCLogging = Boolean.FALSE;
     private Boolean useBreadcrumb = Boolean.TRUE;
-    private Boolean allowUseOriginalMessage = Boolean.TRUE;
+    private Boolean allowUseOriginalMessage = Boolean.FALSE;
     private Long delay;
     private ErrorHandlerFactory errorHandlerBuilder;
     private final Object errorHandlerExecutorServiceLock = new Object();
@@ -3073,11 +3072,6 @@ public class DefaultCamelContext extends ServiceSupport 
implements ModelCamelCon
             }
         }
 
-        if (isAllowUseOriginalMessage()) {
-            log.info("AllowUseOriginalMessage is enabled. If access to the 
original message is not needed,"
-                    + " then its recommended to turn this option off as it may 
improve performance.");
-        }
-
         if (streamCachingInUse) {
             // stream caching is in use so enable the strategy
             getStreamCachingStrategy().setEnabled(true);
@@ -3088,6 +3082,10 @@ public class DefaultCamelContext extends ServiceSupport 
implements ModelCamelCon
                     + " See more details at 
http://camel.apache.org/stream-caching.html";);
         }
 
+        if (isAllowUseOriginalMessage()) {
+            log.info("AllowUseOriginalMessage enabled because 
UseOriginalMessage is in use");
+        }
+
         // start routes
         if (doNotStartRoutesOnFirstStart) {
             log.debug("Skip starting of routes as CamelContext has been 
configured with autoStartup=false");

http://git-wip-us.apache.org/repos/asf/camel/blob/e58ffc51/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index 1e6da51..d18ccb7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -353,10 +353,12 @@ public class DefaultRouteContext implements RouteContext {
     }
 
     public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
-        throw new IllegalArgumentException("This option can only be configured 
on CamelContext");
+        // can only be configured on CamelContext
+        getCamelContext().setAllowUseOriginalMessage(allowUseOriginalMessage);
     }
 
     public Boolean isAllowUseOriginalMessage() {
+        // can only be configured on CamelContext
         return getCamelContext().isAllowUseOriginalMessage();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/e58ffc51/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
index 246100b..3416146 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
@@ -81,10 +81,7 @@ public class DefaultUnitOfWork implements UnitOfWork, 
Service {
         context = exchange.getContext();
 
         if (context.isAllowUseOriginalMessage()) {
-            // TODO: Camel 3.0: the copy on facade strategy will help us here 
in the future
-            // TODO: optimize to only copy original message if enabled to do 
so in the route
             // special for JmsMessage as it can cause it to loose headers 
later.
-            // This will be resolved when we get the message facade with copy 
on write implemented
             if 
(exchange.getIn().getClass().getName().equals("org.apache.camel.component.jms.JmsMessage"))
 {
                 this.originalInMessage = new DefaultMessage();
                 this.originalInMessage.setBody(exchange.getIn().getBody());
@@ -94,8 +91,6 @@ public class DefaultUnitOfWork implements UnitOfWork, Service 
{
             }
         }
 
-        // TODO: Optimize to only copy if useOriginalMessage has been enabled
-
         // mark the creation time when this Exchange was created
         if (exchange.getProperty(Exchange.CREATED_TIMESTAMP) == null) {
             exchange.setProperty(Exchange.CREATED_TIMESTAMP, new Date());
@@ -281,6 +276,9 @@ public class DefaultUnitOfWork implements UnitOfWork, 
Service {
     }
 
     public Message getOriginalInMessage() {
+        if (originalInMessage == null && !context.isAllowUseOriginalMessage()) 
{
+            throw new IllegalStateException("AllowUseOriginalMessage is 
disabled. Cannot access the original message.");
+        }
         return originalInMessage;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/e58ffc51/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
index e9d4ab6..a37e912 100644
--- 
a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
+++ 
b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
@@ -126,6 +126,10 @@ public class OnCompletionDefinition extends 
ProcessorDefinition<OnCompletionDefi
         if (isOnCompleteOnly && isOnFailureOnly) {
             throw new IllegalArgumentException("Both onCompleteOnly and 
onFailureOnly cannot be true. Only one of them can be true. On node: " + this);
         }
+        if (original) {
+            // ensure allow original is turned on
+            routeContext.setAllowUseOriginalMessage(true);
+        }
 
         String routeId = 
routeContext.getRoute().idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
 

Reply via email to