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);
             }
         }