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;