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 2020/11/07 11:11:21 UTC

[camel] 02/02: CAMEL-15823: camel-core - Optimize to use shared exchange formatter for error handler when they use out of the box settings.

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

commit 036773e65dc9456c5f508767e8c0b669d205ba7f
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Nov 7 12:09:45 2020 +0100

    CAMEL-15823: camel-core - Optimize to use shared exchange formatter for error handler when they use out of the box settings.
---
 .../camel/processor/errorhandler/ErrorHandlerSupport.java     |  9 +++++++++
 .../camel/processor/errorhandler/RedeliveryErrorHandler.java  | 11 ++---------
 .../camel/reifier/errorhandler/DeadLetterChannelReifier.java  |  6 ++++--
 .../reifier/errorhandler/DefaultErrorHandlerReifier.java      |  2 +-
 4 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java
index ba7447b..ee50e39 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java
@@ -24,6 +24,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.ErrorHandler;
 import org.apache.camel.support.ChildServiceSupport;
+import org.apache.camel.support.processor.DefaultExchangeFormatter;
 
 /**
  * Support class for {@link ErrorHandler} implementations.
@@ -35,6 +36,14 @@ public abstract class ErrorHandlerSupport extends ChildServiceSupport implements
     protected ExceptionPolicyStrategy exceptionPolicy = DefaultExceptionPolicyStrategy.INSTANCE;
     // optimize to use a shared instance
     public static final CamelLogger DEFAULT_CAMEL_LOGGER = new CamelLogger();
+    // optimize to use a shared instance
+    public static final DefaultExchangeFormatter DEFAULT_EXCHANGE_FORMATTER = new DefaultExchangeFormatter();
+    static {
+        DEFAULT_EXCHANGE_FORMATTER.setShowExchangeId(true);
+        DEFAULT_EXCHANGE_FORMATTER.setMultiline(true);
+        DEFAULT_EXCHANGE_FORMATTER.setShowHeaders(true);
+        DEFAULT_EXCHANGE_FORMATTER.setStyle(DefaultExchangeFormatter.OutputStyle.Fixed);
+    }
 
     public void addErrorHandler(Processor errorHandler) {
         addChildService(errorHandler);
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index 15869e4..e8619bf 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -51,7 +51,6 @@ import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.EventHelper;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.MessageHelper;
-import org.apache.camel.support.processor.DefaultExchangeFormatter;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StopWatch;
@@ -137,22 +136,16 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
             }
         } else {
             this.customExchangeFormatter = false;
-            // setup exchange formatter to be used for message history dump
-            DefaultExchangeFormatter formatter = new DefaultExchangeFormatter();
-            formatter.setShowExchangeId(true);
-            formatter.setMultiline(true);
-            formatter.setShowHeaders(true);
-            formatter.setStyle(DefaultExchangeFormatter.OutputStyle.Fixed);
+            this.exchangeFormatter = DEFAULT_EXCHANGE_FORMATTER;
             try {
                 Integer maxChars = CamelContextHelper.parseInteger(camelContext,
                         camelContext.getGlobalOption(Exchange.LOG_DEBUG_BODY_MAX_CHARS));
                 if (maxChars != null) {
-                    formatter.setMaxChars(maxChars);
+                    DEFAULT_EXCHANGE_FORMATTER.setMaxChars(maxChars);
                 }
             } catch (Exception e) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
-            this.exchangeFormatter = formatter;
         }
     }
 
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
index 16ef459..81a2003 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
@@ -24,6 +24,7 @@ import org.apache.camel.Route;
 import org.apache.camel.model.errorhandler.DeadLetterChannelConfiguration;
 import org.apache.camel.processor.errorhandler.DeadLetterChannel;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.StringHelper;
 
 public class DeadLetterChannelReifier extends DefaultErrorHandlerReifier<DeadLetterChannelConfiguration> {
@@ -36,12 +37,13 @@ public class DeadLetterChannelReifier extends DefaultErrorHandlerReifier<DeadLet
     public Processor createErrorHandler(Processor processor) throws Exception {
         validateDeadLetterUri();
 
-        // use either default redelivery policy or explicit configured policy
+        // optimize to use shared default instance if using out of the box settings
         RedeliveryPolicy redeliveryPolicy
                 = definition.hasRedeliveryPolicy() ? definition.getRedeliveryPolicy() : definition.getDefaultRedeliveryPolicy();
+        CamelLogger logger = definition.hasLogger() ? definition.getLogger() : null;
 
         DeadLetterChannel answer = new DeadLetterChannel(
-                camelContext, processor, definition.getLogger(),
+                camelContext, processor, logger,
                 getBean(Processor.class, definition.getOnRedelivery(), definition.getOnRedeliveryRef()),
                 redeliveryPolicy, definition.getExceptionPolicyStrategy(),
                 getBean(Processor.class, definition.getFailureProcessor(), definition.getFailureProcessorRef()),
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
index fd13371..86234fa 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
@@ -37,7 +37,7 @@ public class DefaultErrorHandlerReifier<T extends DefaultErrorHandlerConfigurati
 
     @Override
     public Processor createErrorHandler(Processor processor) throws Exception {
-        // use either default redelivery policy or explicit configured policy
+        // optimize to use shared default instance if using out of the box settings
         RedeliveryPolicy redeliveryPolicy
                 = definition.hasRedeliveryPolicy() ? definition.getRedeliveryPolicy() : definition.getDefaultRedeliveryPolicy();
         CamelLogger logger = definition.hasLogger() ? definition.getLogger() : null;