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 09:44:34 UTC

[camel] branch master updated: camel-core - Optimize to remove last bits of reifiers when no longer needed. And only register cleaner when really needed such as when using custom reifiers.

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 0c74f41  camel-core - Optimize to remove last bits of reifiers when no longer needed. And only register cleaner when really needed such as when using custom reifiers.
0c74f41 is described below

commit 0c74f4110c6504295ba130bc69673e18c2443fe7
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Nov 7 10:43:06 2020 +0100

    camel-core - Optimize to remove last bits of reifiers when no longer needed. And only register cleaner when really needed such as when using custom reifiers.
---
 .../org/apache/camel/reifier/ProcessorReifier.java    | 12 ++++++------
 .../camel/reifier/dataformat/DataFormatReifier.java   | 12 ++++++------
 .../camel/reifier/language/ExpressionReifier.java     | 19 ++++++++++++-------
 .../reifier/loadbalancer/LoadBalancerReifier.java     | 18 ++++++++++++------
 .../camel/reifier/transformer/TransformerReifier.java | 18 ++++++++++++------
 .../camel/reifier/validator/ValidatorReifier.java     | 12 ++++++------
 6 files changed, 54 insertions(+), 37 deletions(-)

diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 8178b0b..68b5ac1 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -118,12 +118,9 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
 
     private static final Logger LOG = LoggerFactory.getLogger(ProcessorReifier.class);
 
-    private static final Map<Class<?>, BiFunction<Route, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> PROCESSORS;
-    static {
-        // for custom reifiers
-        PROCESSORS = new HashMap<>(0);
-        ReifierStrategy.addReifierClearer(ProcessorReifier::clearReifiers);
-    }
+    // for custom reifiers
+    private static final Map<Class<?>, BiFunction<Route, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> PROCESSORS
+            = new HashMap<>(0);
 
     protected final T definition;
 
@@ -140,6 +137,9 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
     public static void registerReifier(
             Class<?> processorClass,
             BiFunction<Route, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>> creator) {
+        if (PROCESSORS.isEmpty()) {
+            ReifierStrategy.addReifierClearer(ProcessorReifier::clearReifiers);
+        }
         PROCESSORS.put(processorClass, creator);
     }
 
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index 34a4874..e51fe35 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -83,12 +83,9 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
 
     private static final Logger LOG = LoggerFactory.getLogger(DataFormatReifier.class);
 
-    private static final Map<Class<? extends DataFormatDefinition>, BiFunction<CamelContext, DataFormatDefinition, DataFormatReifier<? extends DataFormatDefinition>>> DATAFORMATS;
-    static {
-        // for custom reifiers
-        DATAFORMATS = new HashMap<>(0);
-        ReifierStrategy.addReifierClearer(DataFormatReifier::clearReifiers);
-    }
+    // for custom reifiers
+    private static final Map<Class<? extends DataFormatDefinition>, BiFunction<CamelContext, DataFormatDefinition, DataFormatReifier<? extends DataFormatDefinition>>> DATAFORMATS
+            = new HashMap<>(0);
 
     protected final T definition;
 
@@ -100,6 +97,9 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
     public static void registerReifier(
             Class<? extends DataFormatDefinition> dataFormatClass,
             BiFunction<CamelContext, DataFormatDefinition, DataFormatReifier<? extends DataFormatDefinition>> creator) {
+        if (DATAFORMATS.isEmpty()) {
+            ReifierStrategy.addReifierClearer(DataFormatReifier::clearReifiers);
+        }
         DATAFORMATS.put(dataFormatClass, creator);
     }
 
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java
index 3cec62c..d4c6411 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java
@@ -58,13 +58,9 @@ import org.apache.camel.util.ObjectHelper;
 
 public class ExpressionReifier<T extends ExpressionDefinition> extends AbstractReifier {
 
-    private static final Map<Class<?>, BiFunction<CamelContext, ExpressionDefinition, ExpressionReifier<? extends ExpressionDefinition>>> EXPRESSIONS;
-
-    static {
-        // for custom reifiers
-        EXPRESSIONS = new HashMap<>(0);
-        ReifierStrategy.addReifierClearer(ExpressionReifier::clearReifiers);
-    }
+    // for custom reifiers
+    private static final Map<Class<?>, BiFunction<CamelContext, ExpressionDefinition, ExpressionReifier<? extends ExpressionDefinition>>> EXPRESSIONS
+            = new HashMap<>(0);
 
     protected final T definition;
 
@@ -73,6 +69,15 @@ public class ExpressionReifier<T extends ExpressionDefinition> extends AbstractR
         this.definition = definition;
     }
 
+    public static void registerReifier(
+            Class<?> processorClass,
+            BiFunction<CamelContext, ExpressionDefinition, ExpressionReifier<? extends ExpressionDefinition>> creator) {
+        if (EXPRESSIONS.isEmpty()) {
+            ReifierStrategy.addReifierClearer(ExpressionReifier::clearReifiers);
+        }
+        EXPRESSIONS.put(processorClass, creator);
+    }
+
     public static ExpressionReifier<? extends ExpressionDefinition> reifier(
             CamelContext camelContext, ExpressionSubElementDefinition definition) {
         return reifier(camelContext, definition.getExpressionType());
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
index a6df7bf..5851287 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
@@ -36,12 +36,9 @@ import org.apache.camel.util.StringHelper;
 
 public class LoadBalancerReifier<T extends LoadBalancerDefinition> extends AbstractReifier {
 
-    private static final Map<Class<?>, BiFunction<Route, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>>> LOAD_BALANCERS;
-    static {
-        // for custom reifiers
-        LOAD_BALANCERS = new HashMap<>(0);
-        ReifierStrategy.addReifierClearer(LoadBalancerReifier::clearReifiers);
-    }
+    // for custom reifiers
+    private static final Map<Class<?>, BiFunction<Route, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>>> LOAD_BALANCERS
+            = new HashMap<>(0);
 
     protected final T definition;
 
@@ -50,6 +47,15 @@ public class LoadBalancerReifier<T extends LoadBalancerDefinition> extends Abstr
         this.definition = definition;
     }
 
+    public static void registerReifier(
+            Class<?> processorClass,
+            BiFunction<Route, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>> creator) {
+        if (LOAD_BALANCERS.isEmpty()) {
+            ReifierStrategy.addReifierClearer(LoadBalancerReifier::clearReifiers);
+        }
+        LOAD_BALANCERS.put(processorClass, creator);
+    }
+
     public static LoadBalancerReifier<? extends LoadBalancerDefinition> reifier(
             Route route, LoadBalancerDefinition definition) {
 
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java
index af4908b..a0e3d1d 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java
@@ -31,12 +31,9 @@ import org.apache.camel.spi.Transformer;
 
 public abstract class TransformerReifier<T> extends AbstractReifier {
 
-    private static final Map<Class<?>, BiFunction<CamelContext, TransformerDefinition, TransformerReifier<? extends TransformerDefinition>>> TRANSFORMERS;
-    static {
-        // for custom reifiers
-        TRANSFORMERS = new HashMap<>(0);
-        ReifierStrategy.addReifierClearer(TransformerReifier::clearReifiers);
-    }
+    // for custom reifiers
+    private static final Map<Class<?>, BiFunction<CamelContext, TransformerDefinition, TransformerReifier<? extends TransformerDefinition>>> TRANSFORMERS
+            = new HashMap<>(0);
 
     protected final T definition;
 
@@ -45,6 +42,15 @@ public abstract class TransformerReifier<T> extends AbstractReifier {
         this.definition = definition;
     }
 
+    public static void registerReifier(
+            Class<?> processorClass,
+            BiFunction<CamelContext, TransformerDefinition, TransformerReifier<? extends TransformerDefinition>> creator) {
+        if (TRANSFORMERS.isEmpty()) {
+            ReifierStrategy.addReifierClearer(TransformerReifier::clearReifiers);
+        }
+        TRANSFORMERS.put(processorClass, creator);
+    }
+
     public static TransformerReifier<? extends TransformerDefinition> reifier(
             CamelContext camelContext, TransformerDefinition definition) {
 
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java
index 4408da8..cc3a89a 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java
@@ -31,12 +31,9 @@ import org.apache.camel.spi.Validator;
 
 public abstract class ValidatorReifier<T> extends AbstractReifier {
 
-    private static final Map<Class<?>, BiFunction<CamelContext, ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>>> VALIDATORS;
-    static {
-        // for custom reifiers
-        VALIDATORS = new HashMap<>(0);
-        ReifierStrategy.addReifierClearer(ValidatorReifier::clearReifiers);
-    }
+    // for custom reifiers
+    private static final Map<Class<?>, BiFunction<CamelContext, ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>>> VALIDATORS
+            = new HashMap<>(0);
 
     protected final T definition;
 
@@ -48,6 +45,9 @@ public abstract class ValidatorReifier<T> extends AbstractReifier {
     public static void registerReifier(
             Class<?> processorClass,
             BiFunction<CamelContext, ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>> creator) {
+        if (VALIDATORS.isEmpty()) {
+            ReifierStrategy.addReifierClearer(ValidatorReifier::clearReifiers);
+        }
         VALIDATORS.put(processorClass, creator);
     }