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/12 02:45:14 UTC
[camel] 04/18: Make RouteContext / CamelContext a constructor
argument of the reifiers
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
commit cf948dbabacf5095acd68569dbbeb18aab8f5b48
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Feb 10 17:16:07 2020 +0100
Make RouteContext / CamelContext a constructor argument of the reifiers
---
.../org/apache/camel/builder/RouteBuilder.java | 2 +-
.../org/apache/camel/reifier/DelayReifier.java | 4 ++--
.../apache/camel/reifier/ExpressionReifier.java | 8 +++----
.../org/apache/camel/reifier/FilterReifier.java | 6 ++---
.../org/apache/camel/reifier/ProcessorReifier.java | 3 ---
.../org/apache/camel/reifier/ThrottleReifier.java | 2 +-
.../java/org/apache/camel/reifier/WhenReifier.java | 2 +-
.../reifier/WhenSkipSendToEndpointReifier.java | 6 ++---
.../reifier/validator/CustomValidatorReifier.java | 14 ++++++------
.../validator/EndpointValidatorReifier.java | 10 ++++-----
.../validator/PredicateValidatorReifier.java | 10 ++++-----
.../camel/reifier/validator/ValidatorReifier.java | 26 ++++++++++++----------
.../core/xml/AbstractCamelContextFactoryBean.java | 2 +-
13 files changed, 46 insertions(+), 49 deletions(-)
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/RouteBuilder.java
index 4fc6bef..61f2a6a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -600,7 +600,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
// create and register validators on validator registry
for (ValidatorDefinition def : camelContext.getExtension(Model.class).getValidators()) {
- Validator validator = ValidatorReifier.reifier(def).createValidator(camelContext);
+ Validator validator = ValidatorReifier.reifier(camelContext, def).createValidator();
camelContext.getValidatorRegistry().put(createValidatorKey(def), validator);
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java
index 69bcd4f..8109f5b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java
@@ -35,7 +35,7 @@ public class DelayReifier extends ExpressionReifier<DelayDefinition> {
@Override
public Processor createProcessor() throws Exception {
Processor childProcessor = this.createChildProcessor(false);
- Expression delay = createAbsoluteTimeDelayExpression(routeContext);
+ Expression delay = createAbsoluteTimeDelayExpression();
boolean async = definition.getAsyncDelayed() == null || Boolean.parseBoolean(definition.getAsyncDelayed());
boolean shutdownThreadPool = willCreateNewThreadPool(definition, async);
@@ -48,7 +48,7 @@ public class DelayReifier extends ExpressionReifier<DelayDefinition> {
return answer;
}
- private Expression createAbsoluteTimeDelayExpression(RouteContext routeContext) {
+ private Expression createAbsoluteTimeDelayExpression() {
ExpressionDefinition expr = definition.getExpression();
if (expr != null) {
return expr.createExpression(routeContext);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
index c70744e..30772b6 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
@@ -31,22 +31,20 @@ abstract class ExpressionReifier<T extends ExpressionNode> extends ProcessorReif
/**
* Creates the {@link FilterProcessor} from the expression node.
*
- * @param routeContext the route context
* @return the created {@link FilterProcessor}
* @throws Exception is thrown if error creating the processor
*/
- protected FilterProcessor createFilterProcessor(RouteContext routeContext) throws Exception {
+ protected FilterProcessor createFilterProcessor() throws Exception {
Processor childProcessor = createOutputsProcessor();
- return new FilterProcessor(createPredicate(routeContext), childProcessor);
+ return new FilterProcessor(createPredicate(), childProcessor);
}
/**
* Creates the {@link Predicate} from the expression node.
*
- * @param routeContext the route context
* @return the created predicate
*/
- protected Predicate createPredicate(RouteContext routeContext) {
+ protected Predicate createPredicate() {
return definition.getExpression().createPredicate(routeContext);
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java
index f18fe37..a440805 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java
@@ -30,14 +30,14 @@ public class FilterReifier extends ExpressionReifier<FilterDefinition> {
@Override
public FilterProcessor createProcessor() throws Exception {
- return createFilterProcessor(routeContext);
+ return createFilterProcessor();
}
@Override
- protected FilterProcessor createFilterProcessor(RouteContext routeContext) throws Exception {
+ protected FilterProcessor createFilterProcessor() throws Exception {
// filter EIP should have child outputs
Processor childProcessor = this.createChildProcessor(true);
- return new FilterProcessor(createPredicate(routeContext), childProcessor);
+ return new FilterProcessor(createPredicate(), childProcessor);
}
}
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 0e0bd5c..cb43e6f 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
@@ -41,7 +41,6 @@ import org.apache.camel.model.DelayDefinition;
import org.apache.camel.model.DynamicRouterDefinition;
import org.apache.camel.model.EnrichDefinition;
import org.apache.camel.model.ExecutorServiceAwareDefinition;
-import org.apache.camel.model.ExpressionNode;
import org.apache.camel.model.FilterDefinition;
import org.apache.camel.model.FinallyDefinition;
import org.apache.camel.model.IdempotentConsumerDefinition;
@@ -101,7 +100,6 @@ import org.apache.camel.model.WhenDefinition;
import org.apache.camel.model.WhenSkipSendToEndpointDefinition;
import org.apache.camel.model.WireTapDefinition;
import org.apache.camel.model.cloud.ServiceCallDefinition;
-import org.apache.camel.model.language.ExpressionDefinition;
import org.apache.camel.processor.InterceptEndpointProcessor;
import org.apache.camel.processor.Pipeline;
import org.apache.camel.processor.channel.DefaultChannel;
@@ -370,7 +368,6 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
* <li>if none found, then <tt>null</tt> is returned.</li>
* </ul>
*
- * @param routeContext the route context
* @param name name which is appended to the thread name, when the
* {@link ExecutorService} is created based
* on a {@link org.apache.camel.spi.ThreadPoolProfile}.
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java
index f4c3dc6..7c69045 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java
@@ -66,7 +66,7 @@ public class ThrottleReifier extends ExpressionReifier<ThrottleDefinition> {
return answer;
}
- private Expression createMaxRequestsPerPeriodExpression(RouteContext routeContext) {
+ private Expression createMaxRequestsPerPeriodExpression() {
ExpressionDefinition expr = definition.getExpression();
if (expr != null) {
return expr.createExpression(routeContext);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java
index ce5dc57..53009eb 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java
@@ -29,6 +29,6 @@ public class WhenReifier extends ExpressionReifier<WhenDefinition> {
@Override
public FilterProcessor createProcessor() throws Exception {
- return createFilterProcessor(routeContext);
+ return createFilterProcessor();
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java
index 334fa91..d1facb2 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java
@@ -31,15 +31,15 @@ public class WhenSkipSendToEndpointReifier extends ExpressionReifier<WhenSkipSen
@Override
public FilterProcessor createProcessor() throws Exception {
- return createFilterProcessor(routeContext);
+ return createFilterProcessor();
}
@Override
- protected Predicate createPredicate(RouteContext routeContext) {
+ protected Predicate createPredicate() {
// we need to keep track whether the when matches or not, so delegate
// the predicate and add the matches result as a property on the
// exchange
- final Predicate delegate = super.createPredicate(routeContext);
+ final Predicate delegate = super.createPredicate();
return new Predicate() {
@Override
public boolean matches(Exchange exchange) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
index 42e612b..bca3380 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
@@ -23,18 +23,18 @@ import org.apache.camel.spi.Validator;
public class CustomValidatorReifier extends ValidatorReifier<CustomValidatorDefinition> {
- public CustomValidatorReifier(ValidatorDefinition definition) {
- super((CustomValidatorDefinition)definition);
+ public CustomValidatorReifier(CamelContext camelContext, ValidatorDefinition definition) {
+ super(camelContext, (CustomValidatorDefinition)definition);
}
@Override
- protected Validator doCreateValidator(CamelContext context) {
+ protected Validator doCreateValidator() {
if (definition.getRef() == null && definition.getClassName() == null) {
throw new IllegalArgumentException("'ref' or 'type' must be specified for customValidator");
}
Validator validator;
if (definition.getRef() != null) {
- validator = context.getRegistry().lookupByNameAndType(definition.getRef(), Validator.class);
+ validator = camelContext.getRegistry().lookupByNameAndType(definition.getRef(), Validator.class);
if (validator == null) {
throw new IllegalArgumentException("Cannot find validator with ref:" + definition.getRef());
}
@@ -42,13 +42,13 @@ public class CustomValidatorReifier extends ValidatorReifier<CustomValidatorDefi
throw new IllegalArgumentException(String.format("Validator '%s' is already in use. Please check if duplicate validator exists.", definition.getRef()));
}
} else {
- Class<Validator> validatorClass = context.getClassResolver().resolveClass(definition.getClassName(), Validator.class);
+ Class<Validator> validatorClass = camelContext.getClassResolver().resolveClass(definition.getClassName(), Validator.class);
if (validatorClass == null) {
throw new IllegalArgumentException("Cannot find validator class: " + definition.getClassName());
}
- validator = context.getInjector().newInstance(validatorClass, false);
+ validator = camelContext.getInjector().newInstance(validatorClass, false);
}
- validator.setCamelContext(context);
+ validator.setCamelContext(camelContext);
return validator.setType(definition.getType());
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
index b8364df..7652bce 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
@@ -27,15 +27,15 @@ import org.apache.camel.spi.Validator;
public class EndpointValidatorReifier extends ValidatorReifier<EndpointValidatorDefinition> {
- public EndpointValidatorReifier(ValidatorDefinition definition) {
- super((EndpointValidatorDefinition)definition);
+ public EndpointValidatorReifier(CamelContext camelContext, ValidatorDefinition definition) {
+ super(camelContext, (EndpointValidatorDefinition)definition);
}
@Override
- protected Validator doCreateValidator(CamelContext context) {
- Endpoint endpoint = definition.getUri() != null ? context.getEndpoint(definition.getUri()) : context.getRegistry().lookupByNameAndType(definition.getRef(), Endpoint.class);
+ protected Validator doCreateValidator() {
+ Endpoint endpoint = definition.getUri() != null ? camelContext.getEndpoint(definition.getUri()) : camelContext.getRegistry().lookupByNameAndType(definition.getRef(), Endpoint.class);
SendProcessor processor = new SendProcessor(endpoint, ExchangePattern.InOut);
- return new ProcessorValidator(context).setProcessor(processor).setType(definition.getType());
+ return new ProcessorValidator(camelContext).setProcessor(processor).setType(definition.getType());
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/PredicateValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/PredicateValidatorReifier.java
index 494af80..2c1b7f1 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/PredicateValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/PredicateValidatorReifier.java
@@ -26,15 +26,15 @@ import org.apache.camel.support.processor.PredicateValidatingProcessor;
public class PredicateValidatorReifier extends ValidatorReifier<PredicateValidatorDefinition> {
- public PredicateValidatorReifier(ValidatorDefinition definition) {
- super((PredicateValidatorDefinition)definition);
+ public PredicateValidatorReifier(CamelContext camelContext, ValidatorDefinition definition) {
+ super(camelContext, (PredicateValidatorDefinition)definition);
}
@Override
- protected Validator doCreateValidator(CamelContext context) {
- Predicate pred = definition.getExpression().createPredicate(context);
+ protected Validator doCreateValidator() {
+ Predicate pred = createPredicate(definition.getExpression());
PredicateValidatingProcessor processor = new PredicateValidatingProcessor(pred);
- return new ProcessorValidator(context).setProcessor(processor).setType(definition.getType());
+ return new ProcessorValidator(camelContext).setProcessor(processor).setType(definition.getType());
}
}
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 cc90525..8789f3b 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
@@ -18,20 +18,21 @@ package org.apache.camel.reifier.validator;
import java.util.HashMap;
import java.util.Map;
-import java.util.function.Function;
+import java.util.function.BiFunction;
import org.apache.camel.CamelContext;
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.Validator;
-public abstract class ValidatorReifier<T> {
+public abstract class ValidatorReifier<T> extends AbstractReifier {
- private static final Map<Class<?>, Function<ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>>> VALIDATORS;
+ private static final Map<Class<?>, BiFunction<CamelContext, ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>>> VALIDATORS;
static {
- Map<Class<?>, Function<ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>>> map = new HashMap<>();
+ Map<Class<?>, BiFunction<CamelContext, ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>>> map = new HashMap<>();
map.put(CustomValidatorDefinition.class, CustomValidatorReifier::new);
map.put(EndpointValidatorDefinition.class, EndpointValidatorReifier::new);
map.put(PredicateValidatorDefinition.class, PredicateValidatorReifier::new);
@@ -40,26 +41,27 @@ public abstract class ValidatorReifier<T> {
protected final T definition;
- public ValidatorReifier(T definition) {
+ public ValidatorReifier(CamelContext camelContext, T definition) {
+ super(camelContext);
this.definition = definition;
}
- public static void registerReifier(Class<?> processorClass, Function<ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>> creator) {
+ public static void registerReifier(Class<?> processorClass, BiFunction<CamelContext, ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>> creator) {
VALIDATORS.put(processorClass, creator);
}
- public static ValidatorReifier<? extends ValidatorDefinition> reifier(ValidatorDefinition definition) {
- Function<ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>> reifier = VALIDATORS.get(definition.getClass());
+ public static ValidatorReifier<? extends ValidatorDefinition> reifier(CamelContext camelContext, ValidatorDefinition definition) {
+ BiFunction<CamelContext, ValidatorDefinition, ValidatorReifier<? extends ValidatorDefinition>> reifier = VALIDATORS.get(definition.getClass());
if (reifier != null) {
- return reifier.apply(definition);
+ return reifier.apply(camelContext, definition);
}
throw new IllegalStateException("Unsupported definition: " + definition);
}
- public Validator createValidator(CamelContext context) {
- return doCreateValidator(context);
+ public Validator createValidator() {
+ return doCreateValidator();
}
- protected abstract Validator doCreateValidator(CamelContext context);
+ protected abstract Validator doCreateValidator();
}
diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index 21a6b70..6bce66e 100644
--- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -498,7 +498,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
if (getValidators() != null) {
for (ValidatorDefinition def : getValidators().getValidators()) {
// create and register validators on validator registry
- Validator validator = ValidatorReifier.reifier(def).createValidator(getContext());
+ Validator validator = ValidatorReifier.reifier(getContext(), def).createValidator();
getContext().getValidatorRegistry().put(createValidatorKey(def), validator);
}
}