You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2020/02/19 13:06:44 UTC

[camel] branch master updated: CAMEL-14580 : Keep reifiers separated from AbstractCamelContext

This is an automated email from the ASF dual-hosted git repository.

gnodet 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 1f36ce1  CAMEL-14580 : Keep reifiers separated from AbstractCamelContext
1f36ce1 is described below

commit 1f36ce134ebdf8377ce9a2532867d18ccb50d8eb
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Feb 19 13:58:46 2020 +0100

    CAMEL-14580 : Keep reifiers separated from AbstractCamelContext
    
    # Conflicts:
    #	core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
---
 .../main/java/org/apache/camel/spi/ReifierStrategy.java  | 16 ++++++++++++++--
 .../apache/camel/impl/engine/AbstractCamelContext.java   | 12 +-----------
 .../java/org/apache/camel/reifier/ProcessorReifier.java  |  3 +--
 .../camel/reifier/dataformat/DataFormatReifier.java      |  4 ++--
 .../apache/camel/reifier/language/ExpressionReifier.java |  4 ++--
 .../camel/reifier/loadbalancer/LoadBalancerReifier.java  |  5 ++---
 .../camel/reifier/transformer/TransformerReifier.java    |  4 ++--
 .../apache/camel/reifier/validator/ValidatorReifier.java |  4 ++--
 8 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ReifierStrategy.java b/core/camel-api/src/main/java/org/apache/camel/spi/ReifierStrategy.java
index ee39486..668e86b 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ReifierStrategy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ReifierStrategy.java
@@ -16,15 +16,27 @@
  */
 package org.apache.camel.spi;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Strategy for reifiers.
  */
-public interface ReifierStrategy {
+public abstract class ReifierStrategy {
+
+    private static final List<Runnable> CLEARERS = new ArrayList<>();
+
+    public static void addReifierClearer(Runnable strategy) {
+        CLEARERS.add(strategy);
+    }
 
     /**
      * DANGER: Clears the refifiers map.
      * After this the JVM with Camel cannot add new routes (using same classloader to load this class).
      * Clearing this map allows Camel to reduce memory footprint.
      */
-    void clearReifiers();
+    public static void clearReifiers() {
+        CLEARERS.forEach(Runnable::run);
+    }
+
 }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 1bc7107..3ae50b7 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -179,8 +179,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         Eager, Default, Lazy
     }
 
-    private static final List<ReifierStrategy> REIFIER_STRATEGIES = new ArrayList<>();
-
     private final AtomicBoolean vetoStarted = new AtomicBoolean();
     private String managementName;
     private ClassLoader applicationContextClassLoader;
@@ -343,14 +341,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         }
     }
 
-    public static void addReifierStrategy(ReifierStrategy strategy) {
-        REIFIER_STRATEGIES.add(strategy);
-    }
-
-    public static void clearReifiers() {
-        REIFIER_STRATEGIES.forEach(ReifierStrategy::clearReifiers);
-    }
-
     /**
      * Whether to eager create {@link TypeConverter} during initialization of CamelContext.
      * This is enabled by default to optimize camel-core.
@@ -2494,7 +2484,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
      * This is used to do some internal optimizations.
      */
     protected void disallowAddingNewRoutes() {
-        clearReifiers();
+        ReifierStrategy.clearReifiers();
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 5aedb87..ac898c7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -30,7 +30,6 @@ import org.apache.camel.Channel;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.engine.AbstractCamelContext;
 import org.apache.camel.model.AggregateDefinition;
 import org.apache.camel.model.BeanDefinition;
 import org.apache.camel.model.CatchDefinition;
@@ -190,7 +189,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         map.put(WhenSkipSendToEndpointDefinition.class, WhenSkipSendToEndpointReifier::new);
         map.put(WhenDefinition.class, WhenReifier::new);
         PROCESSORS = map;
-        AbstractCamelContext.addReifierStrategy(ProcessorReifier::clearReifiers);
+        ReifierStrategy.addReifierClearer(ProcessorReifier::clearReifiers);
     }
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index 6db7b35..792c85c 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -25,7 +25,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.impl.engine.AbstractCamelContext;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.Model;
 import org.apache.camel.model.dataformat.ASN1DataFormat;
@@ -75,6 +74,7 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatContentTypeHeader;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.PropertyConfigurerAware;
+import org.apache.camel.spi.ReifierStrategy;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -132,7 +132,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
         map.put(ZipDeflaterDataFormat.class, ZipDataFormatReifier::new);
         map.put(ZipFileDataFormat.class, ZipFileDataFormatReifier::new);
         DATAFORMATS = map;
-        AbstractCamelContext.addReifierStrategy(DataFormatReifier::clearReifiers);
+        ReifierStrategy.addReifierClearer(DataFormatReifier::clearReifiers);
     }
 
     protected final T definition;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java
index c0e9b5c..8831b6e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/language/ExpressionReifier.java
@@ -26,7 +26,6 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.NoSuchLanguageException;
 import org.apache.camel.Predicate;
-import org.apache.camel.impl.engine.AbstractCamelContext;
 import org.apache.camel.model.ExpressionSubElementDefinition;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.model.language.ExchangePropertyExpression;
@@ -50,6 +49,7 @@ import org.apache.camel.reifier.AbstractReifier;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.PropertyConfigurerAware;
+import org.apache.camel.spi.ReifierStrategy;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.support.ScriptHelper;
@@ -80,7 +80,7 @@ public class ExpressionReifier<T extends ExpressionDefinition> extends AbstractR
         map.put(XPathExpression.class, XPathExpressionReifier::new);
         map.put(XQueryExpression.class, XQueryExpressionReifier::new);
         EXPRESSIONS = map;
-        AbstractCamelContext.addReifierStrategy(ExpressionReifier::clearReifiers);
+        ReifierStrategy.addReifierClearer(ExpressionReifier::clearReifiers);
     }
 
     protected final T definition;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
index 74432c9..cbec76a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
@@ -19,9 +19,7 @@ package org.apache.camel.reifier.loadbalancer;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.BiFunction;
-import java.util.function.Function;
 
-import org.apache.camel.impl.engine.AbstractCamelContext;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition;
@@ -32,6 +30,7 @@ import org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.reifier.AbstractReifier;
+import org.apache.camel.spi.ReifierStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.StringHelper;
 
@@ -49,7 +48,7 @@ public class LoadBalancerReifier<T extends LoadBalancerDefinition> extends Abstr
         map.put(TopicLoadBalancerDefinition.class, TopicLoadBalancerReifier::new);
         map.put(WeightedLoadBalancerDefinition.class, WeightedLoadBalancerReifier::new);
         LOAD_BALANCERS = map;
-        AbstractCamelContext.addReifierStrategy(LoadBalancerReifier::clearReifiers);
+        ReifierStrategy.addReifierClearer(LoadBalancerReifier::clearReifiers);
     }
 
     protected final T definition;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java
index b1df10c..f141d26 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java
@@ -21,12 +21,12 @@ import java.util.Map;
 import java.util.function.BiFunction;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.impl.engine.AbstractCamelContext;
 import org.apache.camel.model.transformer.CustomTransformerDefinition;
 import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
 import org.apache.camel.model.transformer.EndpointTransformerDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
 import org.apache.camel.reifier.AbstractReifier;
+import org.apache.camel.spi.ReifierStrategy;
 import org.apache.camel.spi.Transformer;
 
 public abstract class TransformerReifier<T> extends AbstractReifier {
@@ -38,7 +38,7 @@ public abstract class TransformerReifier<T> extends AbstractReifier {
         map.put(DataFormatTransformerDefinition.class, DataFormatTransformeReifier::new);
         map.put(EndpointTransformerDefinition.class, EndpointTransformeReifier::new);
         TRANSFORMERS = map;
-        AbstractCamelContext.addReifierStrategy(TransformerReifier::clearReifiers);
+        ReifierStrategy.addReifierClearer(TransformerReifier::clearReifiers);
     }
 
     protected final T definition;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java
index fcd1f53..bf15fe4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java
@@ -21,12 +21,12 @@ import java.util.Map;
 import java.util.function.BiFunction;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.impl.engine.AbstractCamelContext;
 import org.apache.camel.model.validator.CustomValidatorDefinition;
 import org.apache.camel.model.validator.EndpointValidatorDefinition;
 import org.apache.camel.model.validator.PredicateValidatorDefinition;
 import org.apache.camel.model.validator.ValidatorDefinition;
 import org.apache.camel.reifier.AbstractReifier;
+import org.apache.camel.spi.ReifierStrategy;
 import org.apache.camel.spi.Validator;
 
 public abstract class ValidatorReifier<T> extends AbstractReifier  {
@@ -38,7 +38,7 @@ public abstract class ValidatorReifier<T> extends AbstractReifier  {
         map.put(EndpointValidatorDefinition.class, EndpointValidatorReifier::new);
         map.put(PredicateValidatorDefinition.class, PredicateValidatorReifier::new);
         VALIDATORS = map;
-        AbstractCamelContext.addReifierStrategy(ValidatorReifier::clearReifiers);
+        ReifierStrategy.addReifierClearer(ValidatorReifier::clearReifiers);
     }
 
     protected final T definition;