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 2019/05/21 08:47:22 UTC

[camel] branch master updated (65a0acb -> a291535)

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

gnodet pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from 65a0acb  CAMEL-13546 - handle not only java utils with generics but also other generics because < and > is invalid in windows
     new 73e830e  Add a Route#getCamelContext for easy access
     new 2b7c4d7  [CAMEL-13371] Remove some usage of the RouteDefinition model
     new 9e6ddcb  [CAMEL-13371] Rename ErrorHandlerBuilder to ErrorHandlerFactory in some places
     new 64abe19  [CAMEL-13371] small refactorings on RouteContext and reifiers
     new b51384d  [CAMEL-13371] Move DefaultRouteContext and some other classes to camel-base
     new a29bf5c  [CAMEL-13371] Move languages to camel-base
     new ddbeca9  Fix blueprint test
     new a291535  Merge branch 'CAMEL-13371'

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../blueprint/handler/CamelNamespaceHandler.java   |   2 +-
 .../camel/cdi/CdiCamelBeanPostProcessor.java       |   4 +-
 .../cdi/transaction/JtaTransactionPolicy.java      |   9 +-
 .../component/dns/policy/DnsActivationPolicy.java  |   4 +-
 .../hystrix/processor/HystrixReifier.java          |   3 +-
 .../metrics/routepolicy/MetricsRoutePolicy.java    |   6 +-
 .../MicrometerMessageHistoryNamingStrategy.java    |   2 +-
 .../routepolicy/MicrometerRoutePolicy.java         |   6 +-
 .../MicrometerRoutePolicyNamingStrategy.java       |   2 +-
 .../quartz2/CronScheduledRoutePolicy.java          |   2 +-
 .../routepolicy/quartz2/ScheduledRoutePolicy.java  |   4 +-
 .../quartz2/SimpleScheduledRoutePolicy.java        |   2 +-
 .../camel/spring/CamelBeanPostProcessor.java       |   4 +-
 .../camel/spring/spi/SpringTransactionPolicy.java  |   8 +-
 .../apache/camel/spring/EndpointReferenceTest.java |   7 +-
 .../config/CustomExecutorServiceManager.java       |   4 +-
 .../test/blueprint/BlueprintPropertiesTest.java    |   2 +-
 .../apache/camel/test/junit4/CamelTestSupport.java |   2 +-
 .../zookeeper/policy/CuratorLeaderRoutePolicy.java |   2 +-
 .../CuratorMultiMasterLeaderRoutePolicy.java       |   5 +-
 .../zookeeper/policy/ZooKeeperRoutePolicy.java     |   2 +-
 .../src/main/java/org/apache/camel/Route.java      |  11 +-
 .../camel/spi}/CamelInternalProcessorAdvice.java   |  52 +-
 .../java/org/apache/camel/spi/RouteContext.java    |  35 +-
 .../java/org/apache/camel/spi/RoutePolicy.java     |   2 +-
 .../impl/engine/BaseExecutorServiceManager.java}   |  29 +-
 .../impl/engine}/CamelPostProcessorHelper.java     |   6 +-
 .../engine}/DefaultCamelBeanPostProcessor.java     |   4 +-
 .../org/apache/camel/impl/engine/DefaultRoute.java |   6 +
 .../camel/impl/engine}/DefaultRouteContext.java    | 156 +++---
 .../apache/camel/impl/health/RouteHealthCheck.java |   2 +-
 .../camel/language/constant/ConstantLanguage.java  |   0
 .../apache/camel/language/constant/package.html    |   0
 .../camel/language/header/HeaderLanguage.java      |   0
 .../org/apache/camel/language/header/package.html  |   0
 .../java/org/apache/camel/language/package.html    |   0
 .../property/ExchangePropertyLanguage.java         |   0
 .../apache/camel/language/property/package.html    |   0
 .../org/apache/camel/language/ref/RefLanguage.java |   0
 .../org/apache/camel/language/ref/package.html     |   0
 .../camel/language/simple/BaseSimpleParser.java    |   0
 .../apache/camel/language/simple/FileLanguage.java |   0
 .../org/apache/camel/language/simple/Simple.java   |   0
 .../language/simple/SimpleExpressionBuilder.java   |  25 +-
 .../language/simple/SimpleExpressionParser.java    |   0
 .../camel/language/simple/SimpleLanguage.java      |   2 +-
 .../language/simple/SimplePredicateParser.java     |   0
 .../camel/language/simple/SimpleTokenizer.java     |   0
 .../camel/language/simple/ast/BaseSimpleNode.java  |   0
 .../language/simple/ast/BinaryExpression.java      |   2 +-
 .../apache/camel/language/simple/ast/Block.java    |   0
 .../apache/camel/language/simple/ast/BlockEnd.java |   0
 .../camel/language/simple/ast/BlockStart.java      |   0
 .../camel/language/simple/ast/CompositeNodes.java  |   2 +-
 .../camel/language/simple/ast/DoubleQuoteEnd.java  |   0
 .../language/simple/ast/DoubleQuoteStart.java      |   2 +-
 .../language/simple/ast/LiteralExpression.java     |   2 +-
 .../camel/language/simple/ast/LiteralNode.java     |   0
 .../language/simple/ast/LogicalExpression.java     |   2 +-
 .../camel/language/simple/ast/NullExpression.java  |   0
 .../language/simple/ast/SimpleFunctionEnd.java     |   0
 .../simple/ast/SimpleFunctionExpression.java       |   0
 .../language/simple/ast/SimpleFunctionStart.java   |   0
 .../camel/language/simple/ast/SimpleNode.java      |   0
 .../camel/language/simple/ast/SingleQuoteEnd.java  |   0
 .../language/simple/ast/SingleQuoteStart.java      |   2 +-
 .../camel/language/simple/ast/UnaryExpression.java |   0
 .../apache/camel/language/simple/ast/package.html  |   0
 .../org/apache/camel/language/simple/package.html  |   0
 .../language/simple/types/BinaryOperatorType.java  |   0
 .../language/simple/types/LogicalOperatorType.java |   0
 .../simple/types/SimpleIllegalSyntaxException.java |   0
 .../simple/types/SimpleParserException.java        |   0
 .../camel/language/simple/types/SimpleToken.java   |   0
 .../language/simple/types/SimpleTokenType.java     |   0
 .../camel/language/simple/types/TokenType.java     |   0
 .../language/simple/types/UnaryOperatorType.java   |   0
 .../camel/language/simple/types/package.html       |   0
 .../camel/processor/CamelInternalProcessor.java    |  53 ++-
 .../org/apache/camel/processor/ContractAdvice.java |   1 +
 .../apache/camel/processor/RestBindingAdvice.java  |   1 +
 .../processor/SharedCamelInternalProcessor.java    |   1 +
 .../camel/builder/ErrorHandlerBuilderRef.java      |  28 +-
 .../camel/builder/ErrorHandlerBuilderSupport.java  |   6 +-
 .../apache/camel/builder/ExpressionBuilder.java    |  12 -
 .../org/apache/camel/builder/ValueBuilder.java     | 274 +----------
 .../org/apache/camel/impl/DefaultCamelContext.java |   2 +-
 .../camel/impl/DefaultExecutorServiceManager.java  | 521 +--------------------
 .../java/org/apache/camel/impl/DefaultModel.java   |  14 +-
 .../java/org/apache/camel/impl/RouteService.java   |   5 +-
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |   5 -
 .../apache/camel/model/OnCompletionDefinition.java |  19 -
 .../apache/camel/model/OnExceptionDefinition.java  |  18 -
 .../camel/model/ProcessorDefinitionHelper.java     |   6 +-
 .../org/apache/camel/model/RouteDefinition.java    |  24 +-
 .../apache/camel/model/RouteDefinitionHelper.java  |  17 +-
 .../org/apache/camel/model/RoutesDefinition.java   |   2 +-
 .../camel/processor/channel/DefaultChannel.java    |   4 +-
 .../errorhandler/ErrorHandlerSupport.java          |   2 +-
 .../errorhandler/RedeliveryErrorHandler.java       |   6 +-
 .../DefaultExceptionPolicyStrategy.java            |   8 +-
 .../org/apache/camel/reifier/AggregateReifier.java |   2 +-
 .../java/org/apache/camel/reifier/LogReifier.java  |   2 +-
 .../apache/camel/reifier/OnCompletionReifier.java  |   4 +-
 .../apache/camel/reifier/OnExceptionReifier.java   |   5 +-
 .../org/apache/camel/reifier/ProcessorReifier.java |  11 +-
 .../org/apache/camel/reifier/RouteReifier.java     | 116 +++--
 .../java/org/apache/camel/reifier/SortReifier.java |   2 +-
 .../java/org/apache/camel/reifier/StepReifier.java |   3 +-
 .../camel/reifier/ThrowExceptionReifier.java       |   2 +-
 ...melPostProcessorHelperConsumePredicateTest.java |   2 +-
 ...amelPostProcessorHelperConsumePropertyTest.java |   2 +-
 ...ostProcessorHelperSedaConsumePredicateTest.java |   2 +-
 .../{ => engine}/CamelPostProcessorHelperTest.java |   4 +-
 .../{ => engine}/CustomThreadPoolFactoryTest.java  |   4 +-
 .../DefaultManagementObjectNameStrategy.java       |   4 +-
 .../apache/camel/support/RoutePolicySupport.java   |  23 +-
 .../camel/support/builder/ExpressionBuilder.java   |  24 +
 .../camel/support}/builder/ValueBuilder.java       |  22 +-
 .../commands/AbstractLocalCamelController.java     |   2 +-
 120 files changed, 446 insertions(+), 1243 deletions(-)
 rename core/{camel-base/src/main/java/org/apache/camel/processor => camel-api/src/main/java/org/apache/camel/spi}/CamelInternalProcessorAdvice.java (52%)
 copy core/{camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java => camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java} (95%)
 rename core/{camel-core/src/main/java/org/apache/camel/impl => camel-base/src/main/java/org/apache/camel/impl/engine}/CamelPostProcessorHelper.java (98%)
 rename core/{camel-core/src/main/java/org/apache/camel/impl => camel-base/src/main/java/org/apache/camel/impl/engine}/DefaultCamelBeanPostProcessor.java (99%)
 rename core/{camel-core/src/main/java/org/apache/camel/impl => camel-base/src/main/java/org/apache/camel/impl/engine}/DefaultRouteContext.java (73%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/constant/package.html (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/header/HeaderLanguage.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/header/package.html (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/package.html (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/property/package.html (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/ref/RefLanguage.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/ref/package.html (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/FileLanguage.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/Simple.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java (96%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java (99%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java (99%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/Block.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java (97%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java (97%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java (97%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java (98%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java (97%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/ast/package.html (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/package.html (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/TokenType.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java (100%)
 rename core/{camel-core => camel-base}/src/main/java/org/apache/camel/language/simple/types/package.html (100%)
 rename core/camel-core/src/test/java/org/apache/camel/impl/{ => engine}/CamelPostProcessorHelperConsumePredicateTest.java (98%)
 rename core/camel-core/src/test/java/org/apache/camel/impl/{ => engine}/CamelPostProcessorHelperConsumePropertyTest.java (99%)
 rename core/camel-core/src/test/java/org/apache/camel/impl/{ => engine}/CamelPostProcessorHelperSedaConsumePredicateTest.java (98%)
 rename core/camel-core/src/test/java/org/apache/camel/impl/{ => engine}/CamelPostProcessorHelperTest.java (99%)
 rename core/camel-core/src/test/java/org/apache/camel/impl/{ => engine}/CustomThreadPoolFactoryTest.java (95%)
 copy core/{camel-core/src/main/java/org/apache/camel => camel-support/src/main/java/org/apache/camel/support}/builder/ValueBuilder.java (91%)


[camel] 01/08: Add a Route#getCamelContext for easy access

Posted by gn...@apache.org.
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 73e830e4f841c470aeddde1489270f9c39125be1
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri May 17 14:47:54 2019 +0200

    Add a Route#getCamelContext for easy access
---
 .../component/dns/policy/DnsActivationPolicy.java  |  4 ++--
 .../metrics/routepolicy/MetricsRoutePolicy.java    |  6 +++---
 .../MicrometerMessageHistoryNamingStrategy.java    |  2 +-
 .../routepolicy/MicrometerRoutePolicy.java         |  6 +++---
 .../MicrometerRoutePolicyNamingStrategy.java       |  2 +-
 .../quartz2/CronScheduledRoutePolicy.java          |  2 +-
 .../routepolicy/quartz2/ScheduledRoutePolicy.java  |  4 ++--
 .../quartz2/SimpleScheduledRoutePolicy.java        |  2 +-
 .../zookeeper/policy/CuratorLeaderRoutePolicy.java |  2 +-
 .../CuratorMultiMasterLeaderRoutePolicy.java       |  5 ++---
 .../zookeeper/policy/ZooKeeperRoutePolicy.java     |  2 +-
 .../src/main/java/org/apache/camel/Route.java      | 11 +++++++++--
 .../org/apache/camel/impl/engine/DefaultRoute.java |  6 ++++++
 .../apache/camel/impl/health/RouteHealthCheck.java |  2 +-
 .../camel/model/ProcessorDefinitionHelper.java     |  6 +++---
 .../org/apache/camel/reifier/AggregateReifier.java |  2 +-
 .../java/org/apache/camel/reifier/LogReifier.java  |  2 +-
 .../java/org/apache/camel/reifier/SortReifier.java |  2 +-
 .../camel/reifier/ThrowExceptionReifier.java       |  2 +-
 .../apache/camel/support/RoutePolicySupport.java   | 23 +++++++++++++---------
 .../commands/AbstractLocalCamelController.java     |  2 +-
 21 files changed, 56 insertions(+), 39 deletions(-)

diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java
index fed1739..b19c701 100644
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/policy/DnsActivationPolicy.java
@@ -154,7 +154,7 @@ public class DnsActivationPolicy extends RoutePolicySupport {
     }
 
     private void startRouteImpl(Route route) throws Exception {
-        ServiceStatus routeStatus = route.getRouteContext().getCamelContext().getRouteController().getRouteStatus(route.getId());
+        ServiceStatus routeStatus = controller(route).getRouteStatus(route.getId());
 
         if (routeStatus == ServiceStatus.Stopped) {
             LOG.info("Starting {}", route.getId());
@@ -179,7 +179,7 @@ public class DnsActivationPolicy extends RoutePolicySupport {
     }
 
     private void stopRouteImpl(Route route) throws Exception {
-        ServiceStatus routeStatus = route.getRouteContext().getCamelContext().getRouteController().getRouteStatus(route.getId());
+        ServiceStatus routeStatus = controller(route).getRouteStatus(route.getId());
 
         if (routeStatus == ServiceStatus.Started) {
             LOG.info("Stopping {}", route.getId());
diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java
index 585609b..08e3b03 100644
--- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java
+++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicy.java
@@ -141,7 +141,7 @@ public class MetricsRoutePolicy extends RoutePolicySupport implements NonManaged
 
         this.route = route;
         try {
-            registryService = route.getRouteContext().getCamelContext().hasService(MetricsRegistryService.class);
+            registryService = route.getCamelContext().hasService(MetricsRegistryService.class);
             if (registryService == null) {
                 registryService = new MetricsRegistryService();
                 registryService.setMetricsRegistry(getMetricsRegistry());
@@ -150,7 +150,7 @@ public class MetricsRoutePolicy extends RoutePolicySupport implements NonManaged
                 registryService.setPrettyPrint(isPrettyPrint());
                 registryService.setRateUnit(getRateUnit());
                 registryService.setDurationUnit(getDurationUnit());
-                route.getRouteContext().getCamelContext().addService(registryService);
+                route.getCamelContext().addService(registryService);
             }
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
@@ -171,7 +171,7 @@ public class MetricsRoutePolicy extends RoutePolicySupport implements NonManaged
     }
 
     private String createName(String type) {
-        CamelContext context = route.getRouteContext().getCamelContext();
+        CamelContext context = route.getCamelContext();
         String name = context.getManagementName() != null ? context.getManagementName() : context.getName();
 
         String answer = namePattern;
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryNamingStrategy.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryNamingStrategy.java
index 3319135..6e0af22 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryNamingStrategy.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryNamingStrategy.java
@@ -39,7 +39,7 @@ public interface MicrometerMessageHistoryNamingStrategy {
 
     default Tags getTags(Route route, NamedNode node) {
         return Tags.of(
-                CAMEL_CONTEXT_TAG, route.getRouteContext().getCamelContext().getName(),
+                CAMEL_CONTEXT_TAG, route.getCamelContext().getName(),
                 SERVICE_NAME, MicrometerMessageHistoryService.class.getSimpleName(),
                 ROUTE_ID_TAG, route.getId(),
                 NODE_ID_TAG, node.getId()
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicy.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicy.java
index 7916756..200be1c 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicy.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicy.java
@@ -117,17 +117,17 @@ public class MicrometerRoutePolicy extends RoutePolicySupport implements NonMana
         super.onInit(route);
         if (getMeterRegistry() == null) {
             setMeterRegistry(MicrometerUtils.getOrCreateMeterRegistry(
-                    route.getRouteContext().getCamelContext().getRegistry(), METRICS_REGISTRY_NAME));
+                    route.getCamelContext().getRegistry(), METRICS_REGISTRY_NAME));
         }
         try {
-            MicrometerRoutePolicyService registryService = route.getRouteContext().getCamelContext().hasService(MicrometerRoutePolicyService.class);
+            MicrometerRoutePolicyService registryService = route.getCamelContext().hasService(MicrometerRoutePolicyService.class);
             if (registryService == null) {
                 registryService = new MicrometerRoutePolicyService();
                 registryService.setMeterRegistry(getMeterRegistry());
                 registryService.setPrettyPrint(isPrettyPrint());
                 registryService.setDurationUnit(getDurationUnit());
                 registryService.setMatchingTags(Tags.of(SERVICE_NAME, MicrometerRoutePolicyService.class.getSimpleName()));
-                route.getRouteContext().getCamelContext().addService(registryService);
+                route.getCamelContext().addService(registryService);
                 ServiceHelper.startService(registryService);
             }
         } catch (Exception e) {
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyNamingStrategy.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyNamingStrategy.java
index 33a9c54..69bfe71 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyNamingStrategy.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyNamingStrategy.java
@@ -40,7 +40,7 @@ public interface MicrometerRoutePolicyNamingStrategy {
 
     default Tags getTags(Route route, Exchange exchange) {
         return Tags.of(
-                CAMEL_CONTEXT_TAG, route.getRouteContext().getCamelContext().getName(),
+                CAMEL_CONTEXT_TAG, route.getCamelContext().getName(),
                 SERVICE_NAME, MicrometerRoutePolicyService.class.getSimpleName(),
                 ROUTE_ID_TAG, route.getId(),
                 FAILED_TAG, Boolean.toString(exchange.isFailed())
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
index 99d7a5b..10f2ff6 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/CronScheduledRoutePolicy.java
@@ -44,7 +44,7 @@ public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements Sc
     }
 
     protected void doOnInit(Route route) throws Exception {
-        QuartzComponent quartz = route.getRouteContext().getCamelContext().getComponent("quartz2", QuartzComponent.class);
+        QuartzComponent quartz = route.getCamelContext().getComponent("quartz2", QuartzComponent.class);
         setScheduler(quartz.getScheduler());
 
         // Important: do not start scheduler as QuartzComponent does that automatic
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/ScheduledRoutePolicy.java b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/ScheduledRoutePolicy.java
index 69f826c..7b4833d 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/ScheduledRoutePolicy.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/ScheduledRoutePolicy.java
@@ -60,7 +60,7 @@ public abstract class ScheduledRoutePolicy extends RoutePolicySupport implements
     protected void onJobExecute(Action action, Route route) throws Exception {
         LOG.debug("Scheduled Event notification received. Performing action: {} on route: {}", action, route.getId());
 
-        ServiceStatus routeStatus = route.getRouteContext().getCamelContext().getRouteController().getRouteStatus(route.getId());
+        ServiceStatus routeStatus = route.getCamelContext().getRouteController().getRouteStatus(route.getId());
         if (action == Action.START) {
             if (routeStatus == ServiceStatus.Stopped) {
                 startRoute(route);
@@ -110,7 +110,7 @@ public abstract class ScheduledRoutePolicy extends RoutePolicySupport implements
         
         loadCallbackDataIntoSchedulerContext(jobDetail, action, route);
 
-        boolean isClustered = route.getRouteContext().getCamelContext().getComponent("quartz2", QuartzComponent.class).isClustered();
+        boolean isClustered = route.getCamelContext().getComponent("quartz2", QuartzComponent.class).isClustered();
         if (isClustered) {
             // check to see if the same job has already been setup through another node of the cluster
             JobDetail existingJobDetail = getScheduler().getJobDetail(jobDetail.getKey());
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/SimpleScheduledRoutePolicy.java b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/SimpleScheduledRoutePolicy.java
index 9ea8d71..0676ed9 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/SimpleScheduledRoutePolicy.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/routepolicy/quartz2/SimpleScheduledRoutePolicy.java
@@ -50,7 +50,7 @@ public class SimpleScheduledRoutePolicy extends ScheduledRoutePolicy {
     }
 
     protected void doOnInit(Route route) throws Exception {
-        QuartzComponent quartz = route.getRouteContext().getCamelContext().getComponent("quartz2", QuartzComponent.class);
+        QuartzComponent quartz = route.getCamelContext().getComponent("quartz2", QuartzComponent.class);
         setScheduler(quartz.getScheduler());
 
         // Important: do not start scheduler as QuartzComponent does that automatic
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java
index 0b3f3ac..cf3af30 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java
@@ -97,7 +97,7 @@ public class CuratorLeaderRoutePolicy extends RoutePolicySupport implements Elec
             electionLock.lock();
             try {
                 if (election == null) { // re-test
-                    election = new CuratorLeaderElection(route.getRouteContext().getCamelContext(), uri);
+                    election = new CuratorLeaderElection(route.getCamelContext(), uri);
                     election.addElectionWatcher(this);
                 }
             } finally {
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java
index fc249b4..cfe952c 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java
@@ -22,10 +22,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.NonManagedService;
 import org.apache.camel.Route;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.support.RoutePolicySupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -157,7 +156,7 @@ public class CuratorMultiMasterLeaderRoutePolicy extends RoutePolicySupport impl
                     log.info("{} route(s) have been stopped previously by policy, restarting.", suspendedRoutes.size());
                 }
                 for (Route suspended : suspendedRoutes) {
-                    DefaultCamelContext ctx = (DefaultCamelContext)suspended.getRouteContext().getCamelContext();
+                    CamelContext ctx = suspended.getCamelContext();
                     while (!ctx.isStarted()) {
                         log.info("Context {} is not started yet. Sleeping for a bit.", ctx.getName());
                         Thread.sleep(5000);
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/ZooKeeperRoutePolicy.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/ZooKeeperRoutePolicy.java
index 2d74426..bb6a760 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/ZooKeeperRoutePolicy.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/ZooKeeperRoutePolicy.java
@@ -95,7 +95,7 @@ public class ZooKeeperRoutePolicy extends RoutePolicySupport implements Election
             electionLock.lock();
             try {
                 if (election == null) { // re-test
-                    election = new ZooKeeperElection(route.getRouteContext().getCamelContext(), uri, enabledCount);
+                    election = new ZooKeeperElection(route.getCamelContext(), uri, enabledCount);
                     election.addElectionWatcher(this);
                 }
             } finally {
diff --git a/core/camel-api/src/main/java/org/apache/camel/Route.java b/core/camel-api/src/main/java/org/apache/camel/Route.java
index 49087d9..30cb281 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Route.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Route.java
@@ -61,9 +61,9 @@ public interface Route extends EndpointAware {
     String getUptime();
 
     /**
-     * Gets the uptime in milli seconds
+     * Gets the uptime in milliseconds
      *
-     * @return the uptime in millis seconds
+     * @return the uptime in milliseconds
      */
     long getUptimeMillis();
 
@@ -112,6 +112,13 @@ public interface Route extends EndpointAware {
     RouteContext getRouteContext();
 
     /**
+     * Gets the camel context
+     *
+     * @return the camel context
+     */
+    CamelContext getCamelContext();
+
+    /**
      * A strategy callback allowing special initialization when services are starting.
      *
      * @param services the service
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRoute.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRoute.java
index 837dfca..75b9e74 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRoute.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRoute.java
@@ -22,6 +22,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Route;
 import org.apache.camel.Service;
@@ -92,6 +93,11 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
         return routeContext;
     }
 
+    @Override
+    public CamelContext getCamelContext() {
+        return routeContext.getCamelContext();
+    }
+
     public Map<String, Object> getProperties() {
         return properties;
     }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java b/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
index 2adc583..3d773eb 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
@@ -57,7 +57,7 @@ public class RouteHealthCheck extends AbstractHealthCheck {
     @Override
     protected void doCall(HealthCheckResultBuilder builder, Map<String, Object> options) {
         if (route.getId() != null) {
-            final CamelContext context = route.getRouteContext().getCamelContext();
+            final CamelContext context = route.getCamelContext();
             final ServiceStatus status = context.getRouteController().getRouteStatus(route.getId());
 
             builder.detail("route.id", route.getId());
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java b/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
index 9de01ff..35ebbb2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
@@ -399,7 +399,7 @@ public final class ProcessorDefinitionHelper {
             // no there is a custom thread pool configured
             return false;
         } else if (definition.getExecutorServiceRef() != null) {
-            ExecutorService answer = routeContext.getCamelContext().getRegistry().lookupByNameAndType(definition.getExecutorServiceRef(), ExecutorService.class);
+            ExecutorService answer = routeContext.lookup(definition.getExecutorServiceRef(), ExecutorService.class);
             // if no existing thread pool, then we will have to create a new thread pool
             return answer == null;
         } else if (useDefault) {
@@ -435,7 +435,7 @@ public final class ProcessorDefinitionHelper {
         ObjectHelper.notNull(executorServiceRef, "executorServiceRef");
 
         // lookup in registry first and use existing thread pool if exists
-        ExecutorService answer = routeContext.getCamelContext().getRegistry().lookupByNameAndType(executorServiceRef, ExecutorService.class);
+        ExecutorService answer = routeContext.lookup(executorServiceRef, ExecutorService.class);
         if (answer == null) {
             // then create a thread pool assuming the ref is a thread pool profile id
             answer = manager.newThreadPool(source, name, executorServiceRef);
@@ -513,7 +513,7 @@ public final class ProcessorDefinitionHelper {
         ObjectHelper.notNull(executorServiceRef, "executorServiceRef");
 
         // lookup in registry first and use existing thread pool if exists
-        ScheduledExecutorService answer = routeContext.getCamelContext().getRegistry().lookupByNameAndType(executorServiceRef, ScheduledExecutorService.class);
+        ScheduledExecutorService answer = routeContext.lookup(executorServiceRef, ScheduledExecutorService.class);
         if (answer == null) {
             // then create a thread pool assuming the ref is a thread pool profile id
             answer = manager.newScheduledThreadPool(source, name, executorServiceRef);
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java
index f26370b..d5a1661 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java
@@ -85,7 +85,7 @@ class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
         ScheduledExecutorService timeoutThreadPool = definition.getTimeoutCheckerExecutorService();
         if (timeoutThreadPool == null && definition.getTimeoutCheckerExecutorServiceRef() != null) {
             // lookup existing thread pool
-            timeoutThreadPool = routeContext.getCamelContext().getRegistry().lookupByNameAndType(definition.getTimeoutCheckerExecutorServiceRef(), ScheduledExecutorService.class);
+            timeoutThreadPool = routeContext.lookup(definition.getTimeoutCheckerExecutorServiceRef(), ScheduledExecutorService.class);
             if (timeoutThreadPool == null) {
                 // then create a thread pool assuming the ref is a thread pool profile id
                 timeoutThreadPool = routeContext.getCamelContext().getExecutorServiceManager().newScheduledThreadPool(this,
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java
index 337e13d..e76e8d0 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java
@@ -93,7 +93,7 @@ class LogReifier extends ProcessorReifier<LogDefinition> {
 
     private MaskingFormatter getMaskingFormatter(RouteContext routeContext) {
         if (routeContext.isLogMask()) {
-            MaskingFormatter formatter = routeContext.getCamelContext().getRegistry().lookupByNameAndType(MaskingFormatter.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
+            MaskingFormatter formatter = routeContext.lookup(MaskingFormatter.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
             if (formatter == null) {
                 formatter = new DefaultMaskingFormatter();
             }
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/SortReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/SortReifier.java
index 285b255..366782e 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/SortReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/SortReifier.java
@@ -41,7 +41,7 @@ class SortReifier<T, U extends SortDefinition<T>> extends ExpressionReifier<U> {
     public Processor createProcessor(RouteContext routeContext) throws Exception {
         // lookup in registry
         if (isNotEmpty(definition.getComparatorRef())) {
-            definition.setComparator(routeContext.getCamelContext().getRegistry().lookupByNameAndType(definition.getComparatorRef(), Comparator.class));
+            definition.setComparator(routeContext.lookup(definition.getComparatorRef(), Comparator.class));
         }
 
         // if no comparator then default on to string representation
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
index 042957b..9069f26 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
@@ -32,7 +32,7 @@ class ThrowExceptionReifier extends ProcessorReifier<ThrowExceptionDefinition> {
     @Override
     public Processor createProcessor(RouteContext routeContext) {
         if (definition.getRef() != null && definition.getException() == null) {
-            definition.setException(routeContext.getCamelContext().getRegistry().lookupByNameAndType(definition.getRef(), Exception.class));
+            definition.setException(routeContext.lookup(definition.getRef(), Exception.class));
         }
 
         if (definition.getExceptionType() != null && definition.getExceptionClass() == null) {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/RoutePolicySupport.java b/core/camel-support/src/main/java/org/apache/camel/support/RoutePolicySupport.java
index b6498b2..3b20fa1 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/RoutePolicySupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/RoutePolicySupport.java
@@ -22,6 +22,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Route;
 import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.service.ServiceSupport;
@@ -35,7 +36,7 @@ public abstract class RoutePolicySupport extends ServiceSupport implements Route
 
     public void onInit(Route route) {
         if (exceptionHandler == null) {
-            exceptionHandler = new LoggingExceptionHandler(route.getRouteContext().getCamelContext(), getClass());
+            exceptionHandler = new LoggingExceptionHandler(route.getCamelContext(), getClass());
         }
     }
 
@@ -133,33 +134,33 @@ public abstract class RoutePolicySupport extends ServiceSupport implements Route
     }
 
     public void startRoute(Route route) throws Exception {
-        route.getRouteContext().getCamelContext().getRouteController().startRoute(route.getId());
+        controller(route).startRoute(route.getId());
     }
 
     public void resumeRoute(Route route) throws Exception {
-        route.getRouteContext().getCamelContext().getRouteController().resumeRoute(route.getId());
+        controller(route).resumeRoute(route.getId());
     }
 
     public void suspendRoute(Route route) throws Exception {
-        route.getRouteContext().getCamelContext().getRouteController().suspendRoute(route.getId());
+        controller(route).suspendRoute(route.getId());
     }
 
     public void suspendRoute(Route route, long timeout, TimeUnit timeUnit) throws Exception {
-        route.getRouteContext().getCamelContext().getRouteController().suspendRoute(route.getId(), timeout, timeUnit);
+        controller(route).suspendRoute(route.getId(), timeout, timeUnit);
     }
 
     /**
      * @see #stopRouteAsync(Route)
      */
     public void stopRoute(Route route) throws Exception {
-        route.getRouteContext().getCamelContext().getRouteController().stopRoute(route.getId());
+        controller(route).stopRoute(route.getId());
     }
 
     /**
      * @see #stopRouteAsync(Route)
      */
     public void stopRoute(Route route, long timeout, TimeUnit timeUnit) throws Exception {
-        route.getRouteContext().getCamelContext().getRouteController().stopRoute(route.getId(), timeout, timeUnit);
+        controller(route).stopRoute(route.getId(), timeout, timeUnit);
     }
 
     /**
@@ -170,10 +171,10 @@ public abstract class RoutePolicySupport extends ServiceSupport implements Route
      * thread ensures the exchange can continue process and complete and the route can be stopped.
      */
     public void stopRouteAsync(final Route route) {
-        String threadId = route.getRouteContext().getCamelContext().getExecutorServiceManager().resolveThreadName("StopRouteAsync");
+        String threadId = route.getCamelContext().getExecutorServiceManager().resolveThreadName("StopRouteAsync");
         Runnable task = () -> {
             try {
-                route.getRouteContext().getCamelContext().getRouteController().stopRoute(route.getId());
+                controller(route).stopRoute(route.getId());
             } catch (Exception e) {
                 handleException(e);
             }
@@ -181,6 +182,10 @@ public abstract class RoutePolicySupport extends ServiceSupport implements Route
         new Thread(task, threadId).start();
     }
 
+    protected RouteController controller(Route route) {
+        return route.getCamelContext().getRouteController();
+    }
+
     /**
      * Handles the given exception using the {@link #getExceptionHandler()}
      *
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
index c07c598..5f01427 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
@@ -622,7 +622,7 @@ public abstract class AbstractLocalCamelController extends AbstractCamelControll
     private static String getRouteState(Route route) {
         // must use String type to be sure remote JMX can read the attribute without requiring Camel classes.
 
-        ServiceStatus status = route.getRouteContext().getCamelContext().getRouteController().getRouteStatus(route.getId());
+        ServiceStatus status = route.getCamelContext().getRouteController().getRouteStatus(route.getId());
         if (status != null) {
             return status.name();
         }


[camel] 04/08: [CAMEL-13371] small refactorings on RouteContext and reifiers

Posted by gn...@apache.org.
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 64abe1998255c41f5a5c83d9c75850126f578348
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon May 20 18:16:53 2019 +0200

    [CAMEL-13371] small refactorings on RouteContext and reifiers
---
 .../hystrix/processor/HystrixReifier.java          |  3 +--
 .../apache/camel/spring/EndpointReferenceTest.java |  2 +-
 .../java/org/apache/camel/spi/RouteContext.java    | 20 ++++++---------
 .../org/apache/camel/impl/DefaultRouteContext.java | 29 ++++++++++++++++------
 .../java/org/apache/camel/impl/RouteService.java   |  5 ++--
 .../apache/camel/model/OnCompletionDefinition.java | 19 --------------
 .../apache/camel/model/OnExceptionDefinition.java  | 18 --------------
 .../errorhandler/ErrorHandlerSupport.java          |  2 +-
 .../errorhandler/RedeliveryErrorHandler.java       |  6 ++---
 .../apache/camel/reifier/OnCompletionReifier.java  |  4 +--
 .../apache/camel/reifier/OnExceptionReifier.java   |  5 ++--
 .../org/apache/camel/reifier/ProcessorReifier.java | 11 +++++---
 .../java/org/apache/camel/reifier/StepReifier.java |  3 +--
 13 files changed, 50 insertions(+), 77 deletions(-)

diff --git a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
index a0d2981..a3c24e3 100644
--- a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
+++ b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
@@ -27,7 +27,6 @@ import com.netflix.hystrix.HystrixCommandProperties;
 import com.netflix.hystrix.HystrixThreadPoolKey;
 import com.netflix.hystrix.HystrixThreadPoolProperties;
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.HystrixDefinition;
@@ -56,7 +55,7 @@ public class HystrixReifier extends ProcessorReifier<HystrixDefinition> {
         }
 
         final HystrixConfigurationDefinition config = buildHystrixConfiguration(routeContext.getCamelContext());
-        final String id = definition.idOrCreate(routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        final String id = getId(definition, routeContext);
 
         // group and thread pool keys to use they can be configured on configRef and config, so look there first, and if none then use default
         String groupKey = config.getGroupKey();
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
index 8e68565..d172ef5 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
@@ -74,7 +74,7 @@ public class EndpointReferenceTest extends SpringTestSupport {
     @Test
     public void testReferenceEndpointFromOtherCamelContext() throws Exception {
         CamelContext context = applicationContext.getBean("camel2", CamelContext.class);
-        RouteContext routeContext = new DefaultRouteContext(context, new RouteDefinition("temporary"), null);
+        RouteContext routeContext = new DefaultRouteContext(context, new RouteDefinition("temporary"));
         try {
             routeContext.resolveEndpoint(null, "endpoint1");
             fail("Should have thrown exception");
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
index ba8d9c6..f931785 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -199,18 +199,6 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
 
     Integer getStartupOrder();
 
-    /**
-     * A private counter that increments, is used to as book keeping
-     * when building a route based on the model
-     * <p/>
-     * We need this special book keeping be able to assign the correct
-     * {@link org.apache.camel.model.ProcessorDefinition} to the {@link org.apache.camel.Channel}
-     *
-     * @param node the current node
-     * @return the current count
-     */
-    int getAndIncrement(NamedNode node);
-
     ErrorHandlerFactory getErrorHandlerFactory();
 
     /**
@@ -249,4 +237,12 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
     default void setRouteController(RouteController controller) {
     }
 
+    Processor getOnCompletion(String onCompletionId);
+
+    void setOnCompletion(String onCompletionId, Processor processor);
+
+    Processor getOnException(String onExceptionId);
+
+    void setOnException(String onExceptionId, Processor processor);
+
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index 6df3b2a..a64cd54 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -20,7 +20,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
@@ -54,7 +53,6 @@ import org.apache.camel.support.CamelContextHelper;
  * The context used to activate new routing rules
  */
 public class DefaultRouteContext implements RouteContext {
-    private final Map<NamedNode, AtomicInteger> nodeIndex = new HashMap<>();
     private final RouteDefinition route;
     private final String routeId;
     private Route runtimeRoute;
@@ -77,6 +75,8 @@ public class DefaultRouteContext implements RouteContext {
     private ShutdownRunningTask shutdownRunningTask;
     private RouteError routeError;
     private RouteController routeController;
+    private final Map<String, Processor> onCompletions = new HashMap<>();
+    private final Map<String, Processor> onExceptions = new HashMap<>();
 
     public DefaultRouteContext(CamelContext camelContext, RouteDefinition route) {
         this.camelContext = camelContext;
@@ -464,11 +464,6 @@ public class DefaultRouteContext implements RouteContext {
             return getCamelContext().getShutdownRunningTask();
         }
     }
-    
-    public int getAndIncrement(NamedNode node) {
-        AtomicInteger count = nodeIndex.computeIfAbsent(node, n -> new AtomicInteger());
-        return count.getAndIncrement();
-    }
 
     public void setRoutePolicyList(List<RoutePolicy> routePolicyList) {
         this.routePolicyList = routePolicyList;
@@ -497,4 +492,24 @@ public class DefaultRouteContext implements RouteContext {
     public void setRouteController(RouteController routeController) {
         this.routeController = routeController;
     }
+
+    @Override
+    public Processor getOnCompletion(String onCompletionId) {
+        return onCompletions.get(onCompletionId);
+    }
+
+    @Override
+    public void setOnCompletion(String onCompletionId, Processor processor) {
+        onCompletions.put(onCompletionId, processor);
+    }
+
+    @Override
+    public Processor getOnException(String onExceptionId) {
+        return onExceptions.get(onExceptionId);
+    }
+
+    @Override
+    public void setOnException(String onExceptionId, Processor processor) {
+        onExceptions.put(onExceptionId, processor);
+    }
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/RouteService.java b/core/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
index 9cde665..1551af6 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
@@ -88,11 +88,12 @@ public class RouteService extends BaseRouteService {
      * Gather all other kind of route scoped services from the given route, except error handler
      */
     protected void doGetRouteScopedServices(List<Service> services) {
+
         for (ProcessorDefinition<?> output : routeDefinition.getOutputs()) {
             if (output instanceof OnExceptionDefinition) {
                 OnExceptionDefinition onExceptionDefinition = (OnExceptionDefinition) output;
                 if (onExceptionDefinition.isRouteScoped()) {
-                    Processor errorHandler = onExceptionDefinition.getErrorHandler(getId());
+                    Processor errorHandler = getRouteContext().getOnException(onExceptionDefinition.getId());
                     if (errorHandler instanceof Service) {
                         services.add((Service) errorHandler);
                     }
@@ -100,7 +101,7 @@ public class RouteService extends BaseRouteService {
             } else if (output instanceof OnCompletionDefinition) {
                 OnCompletionDefinition onCompletionDefinition = (OnCompletionDefinition) output;
                 if (onCompletionDefinition.isRouteScoped()) {
-                    Processor onCompletionProcessor = onCompletionDefinition.getOnCompletion(getId());
+                    Processor onCompletionProcessor = getRouteContext().getOnCompletion(onCompletionDefinition.getId());
                     if (onCompletionProcessor instanceof Service) {
                         services.add((Service) onCompletionProcessor);
                     }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
index 0c6b959..b7b43f0 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
@@ -17,11 +17,8 @@
 package org.apache.camel.model;
 
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.ExecutorService;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -33,7 +30,6 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
 
@@ -64,9 +60,6 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi
     private ExecutorService executorService;
     @XmlTransient
     private Boolean routeScoped;
-    // TODO: in Camel 3.0 the OnCompletionDefinition should not contain state and OnCompletion processors
-    @XmlTransient
-    private final Map<String, Processor> onCompletions = new HashMap<>();
 
     public OnCompletionDefinition() {
     }
@@ -80,18 +73,6 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi
         return routeScoped;
     }
 
-    public Processor getOnCompletion(String routeId) {
-        return onCompletions.get(routeId);
-    }
-
-    public Collection<Processor> getOnCompletions() {
-        return onCompletions.values();
-    }
-
-    public void setOnCompletion(String routeId, Processor processor) {
-        onCompletions.put(routeId, processor);
-    }
-
     @Override
     public String toString() {
         return "onCompletion[" + getOutputs() + "]";
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
index c8c32cf..87bb2eb 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
@@ -17,10 +17,7 @@
 package org.apache.camel.model;
 
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -83,9 +80,6 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
     private Processor onExceptionOccurred;
     @XmlTransient
     private Boolean routeScoped;
-    // TODO: in Camel 3.0 the OnExceptionDefinition should not contain state and ErrorHandler processors
-    @XmlTransient
-    private final Map<String, Processor> errorHandlers = new HashMap<>();
 
     public OnExceptionDefinition() {
     }
@@ -733,18 +727,6 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
         this.exceptions = exceptions;
     }
 
-    public Processor getErrorHandler(String routeId) {
-        return errorHandlers.get(routeId);
-    }
-    
-    public Collection<Processor> getErrorHandlers() {
-        return errorHandlers.values();
-    }
-
-    public void setErrorHandler(String routeId, Processor errorHandler) {
-        errorHandlers.put(routeId, errorHandler);
-    }
-
     public RedeliveryPolicyDefinition getRedeliveryPolicyType() {
         return redeliveryPolicyType;
     }
diff --git a/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java b/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java
index b164240..dfa1ebc 100644
--- a/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java
+++ b/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java
@@ -46,7 +46,7 @@ public abstract class ErrorHandlerSupport extends ChildServiceSupport implements
     public void addExceptionPolicy(RouteContext routeContext, OnExceptionDefinition exceptionType) {
         if (routeContext != null) {
             // add error handler as child service so they get lifecycle handled
-            Processor errorHandler = exceptionType.getErrorHandler(routeContext.getRouteId());
+            Processor errorHandler = routeContext.getOnException(exceptionType.getId());
             if (errorHandler != null) {
                 addChildService(errorHandler);
             }
diff --git a/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index f65cb63..754c990 100644
--- a/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-core/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -676,13 +676,11 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
                 Processor processor = null;
                 UnitOfWork uow = exchange.getUnitOfWork();
                 if (uow != null && uow.getRouteContext() != null) {
-                    String routeId = uow.getRouteContext().getRouteId();
-                    processor = exceptionPolicy.getErrorHandler(routeId);
-                } else if (!exceptionPolicy.getErrorHandlers().isEmpty()) {
+                    processor = uow.getRouteContext().getOnException(exceptionPolicy.getId());
+                } else {
                     // note this should really not happen, but we have this code as a fail safe
                     // to be backwards compatible with the old behavior
                     log.warn("Cannot determine current route from Exchange with id: {}, will fallback and use first error handler.", exchange.getExchangeId());
-                    processor = exceptionPolicy.getErrorHandlers().iterator().next();
                 }
                 if (processor != null) {
                     failureProcessor = processor;
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
index 6662037..5db1ece 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
@@ -60,15 +60,13 @@ class OnCompletionReifier extends ProcessorReifier<OnCompletionDefinition> {
             routeContext.setAllowUseOriginalMessage(true);
         }
 
-        String routeId = routeContext.getRouteId();
-
         Processor childProcessor = this.createChildProcessor(routeContext, true);
 
         // wrap the on completion route in a unit of work processor
         CamelInternalProcessor internal = new CamelInternalProcessor(childProcessor);
         internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
 
-        definition.setOnCompletion(routeId, internal);
+        routeContext.setOnCompletion(getId(definition, routeContext), internal);
 
         Predicate when = null;
         if (definition.getOnWhen() != null) {
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
index e958fb4..98d19f8 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
@@ -24,7 +24,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.CatchProcessor;
 import org.apache.camel.processor.FatalFallbackErrorHandler;
 import org.apache.camel.spi.ClassResolver;
@@ -68,8 +67,8 @@ class OnExceptionReifier extends ProcessorReifier<OnExceptionDefinition> {
         if (child != null) {
             // wrap in our special safe fallback error handler if OnException have child output
             Processor errorHandler = new FatalFallbackErrorHandler(child);
-            String id = routeContext.getRouteId();
-            definition.setErrorHandler(id, errorHandler);
+            String id = getId(definition, routeContext);
+            routeContext.setOnException(id, errorHandler);
         }
         // lookup the error handler builder
         ErrorHandlerBuilder builder = (ErrorHandlerBuilder) routeContext.getErrorHandlerFactory();
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 9d1b615..891ca43 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -55,6 +55,7 @@ import org.apache.camel.model.MulticastDefinition;
 import org.apache.camel.model.OnCompletionDefinition;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.model.OnFallbackDefinition;
+import org.apache.camel.model.OptionalIdentifiedDefinition;
 import org.apache.camel.model.OtherwiseDefinition;
 import org.apache.camel.model.PipelineDefinition;
 import org.apache.camel.model.PolicyDefinition;
@@ -105,6 +106,7 @@ import org.apache.camel.processor.interceptor.HandleFault;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
+import org.apache.camel.spi.NodeIdFactory;
 import org.apache.camel.spi.RouteContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -450,7 +452,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> {
 
             // inject id
             if (processor instanceof IdAware) {
-                String id = output.idOrCreate(routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getNodeIdFactory());
+                String id = getId(output, routeContext);
                 ((IdAware) processor).setId(id);
             }
 
@@ -541,7 +543,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> {
 
         // inject id
         if (processor instanceof IdAware) {
-            String id = definition.idOrCreate(routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getNodeIdFactory());
+            String id = getId(definition, routeContext);
             ((IdAware) processor).setId(id);
         }
 
@@ -568,5 +570,8 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> {
         // noop
     }
 
-
+    protected String getId(OptionalIdentifiedDefinition<?> def, RouteContext routeContext) {
+        return def.idOrCreate(routeContext.getCamelContext()
+                .adapt(ExtendedCamelContext.class).getNodeIdFactory());
+    }
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/StepReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/StepReifier.java
index 71d8880..1cd333c 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/StepReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/StepReifier.java
@@ -18,7 +18,6 @@ package org.apache.camel.reifier;
 
 import java.util.List;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.StepDefinition;
@@ -38,7 +37,7 @@ class StepReifier extends ProcessorReifier<StepDefinition> {
 
     @Override
     protected Processor createCompositeProcessor(RouteContext routeContext, List<Processor> list) throws Exception {
-        String stepId = definition.idOrCreate(routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        String stepId = getId(definition, routeContext);
         return StepProcessor.newInstance(routeContext.getCamelContext(), list, stepId);
     }
 }


[camel] 07/08: Fix blueprint test

Posted by gn...@apache.org.
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 ddbeca950b90e8a7bfaea59a4a523b3038abd240
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue May 21 09:48:58 2019 +0200

    Fix blueprint test
---
 .../java/org/apache/camel/test/blueprint/BlueprintPropertiesTest.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/BlueprintPropertiesTest.java b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/BlueprintPropertiesTest.java
index fb931e3..aef19d3 100644
--- a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/BlueprintPropertiesTest.java
+++ b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/BlueprintPropertiesTest.java
@@ -34,7 +34,7 @@ public class BlueprintPropertiesTest extends CamelBlueprintTestSupport {
 
     @Test
     public void testProperties() throws Exception {
-        Bundle camelCore = getBundleBySymbolicName("org.apache.camel.camel-core");
+        Bundle camelCore = getBundleBySymbolicName("org.apache.camel.camel-blueprint");
         Bundle test = getBundleBySymbolicName(getClass().getSimpleName());
 
         camelCore.stop();


[camel] 06/08: [CAMEL-13371] Move languages to camel-base

Posted by gn...@apache.org.
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 a29bf5c5a43e5bb2eebf1f2fd6e7436a3a29522b
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue May 21 00:36:33 2019 +0200

    [CAMEL-13371] Move languages to camel-base
---
 .../camel/language/constant/ConstantLanguage.java  |   0
 .../apache/camel/language/constant/package.html    |   0
 .../camel/language/header/HeaderLanguage.java      |   0
 .../org/apache/camel/language/header/package.html  |   0
 .../java/org/apache/camel/language/package.html    |   0
 .../property/ExchangePropertyLanguage.java         |   0
 .../apache/camel/language/property/package.html    |   0
 .../org/apache/camel/language/ref/RefLanguage.java |   0
 .../org/apache/camel/language/ref/package.html     |   0
 .../camel/language/simple/BaseSimpleParser.java    |   0
 .../apache/camel/language/simple/FileLanguage.java |   0
 .../org/apache/camel/language/simple/Simple.java   |   0
 .../language/simple/SimpleExpressionBuilder.java   |  25 +-
 .../language/simple/SimpleExpressionParser.java    |   0
 .../camel/language/simple/SimpleLanguage.java      |   2 +-
 .../language/simple/SimplePredicateParser.java     |   0
 .../camel/language/simple/SimpleTokenizer.java     |   0
 .../camel/language/simple/ast/BaseSimpleNode.java  |   0
 .../language/simple/ast/BinaryExpression.java      |   2 +-
 .../apache/camel/language/simple/ast/Block.java    |   0
 .../apache/camel/language/simple/ast/BlockEnd.java |   0
 .../camel/language/simple/ast/BlockStart.java      |   0
 .../camel/language/simple/ast/CompositeNodes.java  |   2 +-
 .../camel/language/simple/ast/DoubleQuoteEnd.java  |   0
 .../language/simple/ast/DoubleQuoteStart.java      |   2 +-
 .../language/simple/ast/LiteralExpression.java     |   2 +-
 .../camel/language/simple/ast/LiteralNode.java     |   0
 .../language/simple/ast/LogicalExpression.java     |   2 +-
 .../camel/language/simple/ast/NullExpression.java  |   0
 .../language/simple/ast/SimpleFunctionEnd.java     |   0
 .../simple/ast/SimpleFunctionExpression.java       |   0
 .../language/simple/ast/SimpleFunctionStart.java   |   0
 .../camel/language/simple/ast/SimpleNode.java      |   0
 .../camel/language/simple/ast/SingleQuoteEnd.java  |   0
 .../language/simple/ast/SingleQuoteStart.java      |   2 +-
 .../camel/language/simple/ast/UnaryExpression.java |   0
 .../apache/camel/language/simple/ast/package.html  |   0
 .../org/apache/camel/language/simple/package.html  |   0
 .../language/simple/types/BinaryOperatorType.java  |   0
 .../language/simple/types/LogicalOperatorType.java |   0
 .../simple/types/SimpleIllegalSyntaxException.java |   0
 .../simple/types/SimpleParserException.java        |   0
 .../camel/language/simple/types/SimpleToken.java   |   0
 .../language/simple/types/SimpleTokenType.java     |   0
 .../camel/language/simple/types/TokenType.java     |   0
 .../language/simple/types/UnaryOperatorType.java   |   0
 .../camel/language/simple/types/package.html       |   0
 .../apache/camel/builder/ExpressionBuilder.java    |  12 -
 .../org/apache/camel/builder/ValueBuilder.java     | 274 +--------------------
 .../camel/support/builder/ExpressionBuilder.java   |  24 ++
 .../camel/support}/builder/ValueBuilder.java       |  22 +-
 51 files changed, 43 insertions(+), 328 deletions(-)

diff --git a/core/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
rename to core/camel-base/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/constant/package.html b/core/camel-base/src/main/java/org/apache/camel/language/constant/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/constant/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/constant/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
rename to core/camel-base/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/header/package.html b/core/camel-base/src/main/java/org/apache/camel/language/header/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/header/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/header/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/package.html b/core/camel-base/src/main/java/org/apache/camel/language/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
rename to core/camel-base/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/property/package.html b/core/camel-base/src/main/java/org/apache/camel/language/property/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/property/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/property/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/ref/RefLanguage.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java
rename to core/camel-base/src/main/java/org/apache/camel/language/ref/RefLanguage.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/ref/package.html b/core/camel-base/src/main/java/org/apache/camel/language/ref/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/ref/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/ref/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/FileLanguage.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/FileLanguage.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/Simple.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/Simple.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/Simple.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/Simple.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
similarity index 96%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
index 5be7afd..9a0cc77 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
@@ -35,7 +35,6 @@ import org.apache.camel.Expression;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.model.language.MethodCallExpression;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ExpressionAdapter;
@@ -534,12 +533,8 @@ public final class SimpleExpressionBuilder {
                 } catch (InvalidPayloadException e) {
                     throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
-                // ognl is able to evaluate method name if it contains nested functions
-                // so we should not eager evaluate ognl as a string
-                MethodCallExpression call = new MethodCallExpression(exchange, ognl);
-                // set the instance to use
-                call.setInstance(body);
-                return call.evaluate(exchange);
+                Expression exp = ExpressionBuilder.beanExpression(body, ognl);
+                return exp.evaluate(exchange, Object.class);
             }
 
             @Override
@@ -595,10 +590,8 @@ public final class SimpleExpressionBuilder {
                 if (body != null) {
                     // ognl is able to evaluate method name if it contains nested functions
                     // so we should not eager evaluate ognl as a string
-                    MethodCallExpression call = new MethodCallExpression(exchange, ognl);
-                    // set the instance to use
-                    call.setInstance(body);
-                    return call.evaluate(exchange);
+                    return ExpressionBuilder.beanExpression(body, ognl)
+                            .evaluate(exchange, Object.class);
                 } else {
                     return null;
                 }
@@ -622,7 +615,7 @@ public final class SimpleExpressionBuilder {
             public Object evaluate(Exchange exchange) {
                 // ognl is able to evaluate method name if it contains nested functions
                 // so we should not eager evaluate ognl as a string
-                return new MethodCallExpression(exchange, ognl).evaluate(exchange);
+                return ExpressionBuilder.beanExpression(exchange, ognl).evaluate(exchange, Object.class);
             }
 
             @Override
@@ -647,7 +640,7 @@ public final class SimpleExpressionBuilder {
                 }
                 // ognl is able to evaluate method name if it contains nested functions
                 // so we should not eager evaluate ognl as a string
-                return new MethodCallExpression(context, ognl).evaluate(exchange);
+                return ExpressionBuilder.beanExpression(context, ognl).evaluate(exchange, Object.class);
             }
 
             @Override
@@ -672,7 +665,7 @@ public final class SimpleExpressionBuilder {
                 }
                 // ognl is able to evaluate method name if it contains nested functions
                 // so we should not eager evaluate ognl as a string
-                return new MethodCallExpression(body, ognl).evaluate(exchange);
+                return ExpressionBuilder.beanExpression(body, ognl).evaluate(exchange, Object.class);
             }
 
             @Override
@@ -781,7 +774,7 @@ public final class SimpleExpressionBuilder {
 
                 // ognl is able to evaluate method name if it contains nested functions
                 // so we should not eager evaluate ognl as a string
-                return new MethodCallExpression(exception, ognl).evaluate(exchange);
+                return ExpressionBuilder.beanExpression(exception, ognl).evaluate(exchange, Object.class);
             }
 
             @Override
@@ -836,7 +829,7 @@ public final class SimpleExpressionBuilder {
             }
             // the remainder is the rest of the ognl without the key
             String remainder = StringHelper.after(ognl, key + keySuffix);
-            return new MethodCallExpression(property, remainder).evaluate(exchange);
+            return ExpressionBuilder.beanExpression(property, remainder).evaluate(exchange, Object.class);
         }
 
         @Override
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
similarity index 99%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
index cbe9310..36226a8 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
@@ -21,13 +21,13 @@ import java.util.Map;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.StaticService;
-import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.LRUCache;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.support.LanguageSupport;
 import org.apache.camel.support.PredicateToExpressionAdapter;
+import org.apache.camel.support.builder.ExpressionBuilder;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
similarity index 99%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
index 22ac34b..1c94763 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
@@ -25,7 +25,6 @@ import java.util.regex.Pattern;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.builder.ValueBuilder;
 import org.apache.camel.language.simple.types.BinaryOperatorType;
 import org.apache.camel.language.simple.types.SimpleIllegalSyntaxException;
 import org.apache.camel.language.simple.types.SimpleParserException;
@@ -33,6 +32,7 @@ import org.apache.camel.language.simple.types.SimpleToken;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.support.builder.ExpressionBuilder;
 import org.apache.camel.support.builder.PredicateBuilder;
+import org.apache.camel.support.builder.ValueBuilder;
 
 /**
  * Represents a binary expression in the AST.
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/Block.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/Block.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/Block.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/Block.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockEnd.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/BlockStart.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java
similarity index 97%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java
index 7318905..7a2cfb4 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/CompositeNodes.java
@@ -20,8 +20,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.Expression;
-import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.simple.types.SimpleToken;
+import org.apache.camel.support.builder.ExpressionBuilder;
 
 /**
  * A node which contains other {@link SimpleNode nodes}.
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteEnd.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
similarity index 97%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
index 6986ee7..3d6b23f 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
@@ -17,8 +17,8 @@
 package org.apache.camel.language.simple.ast;
 
 import org.apache.camel.Expression;
-import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.simple.types.SimpleToken;
+import org.apache.camel.support.builder.ExpressionBuilder;
 
 /**
  * Starts a block enclosed by double quotes
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java
similarity index 97%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java
index de7fc3b..157668b 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralExpression.java
@@ -17,8 +17,8 @@
 package org.apache.camel.language.simple.ast;
 
 import org.apache.camel.Expression;
-import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.simple.types.SimpleToken;
+import org.apache.camel.support.builder.ExpressionBuilder;
 
 /**
  * Represents literals in the AST.
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LiteralNode.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java
similarity index 98%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java
index 8177d25..d6599f1 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/LogicalExpression.java
@@ -19,11 +19,11 @@ package org.apache.camel.language.simple.ast;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.builder.PredicateBuilder;
 import org.apache.camel.language.simple.types.LogicalOperatorType;
 import org.apache.camel.language.simple.types.SimpleParserException;
 import org.apache.camel.language.simple.types.SimpleToken;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
+import org.apache.camel.support.builder.PredicateBuilder;
 import org.apache.camel.util.ObjectHelper;
 
 /**
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/NullExpression.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionEnd.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionStart.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleNode.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteEnd.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
similarity index 97%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
index 9a04fb1..a1b4158 100644
--- a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
@@ -17,8 +17,8 @@
 package org.apache.camel.language.simple.ast;
 
 import org.apache.camel.Expression;
-import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.simple.types.SimpleToken;
+import org.apache.camel.support.builder.ExpressionBuilder;
 
 /**
  * Starts a block enclosed by single quotes
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/UnaryExpression.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/ast/package.html b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/ast/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/ast/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/package.html b/core/camel-base/src/main/java/org/apache/camel/language/simple/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleParserException.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleToken.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/SimpleTokenType.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/TokenType.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/TokenType.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/TokenType.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/UnaryOperatorType.java
diff --git a/core/camel-core/src/main/java/org/apache/camel/language/simple/types/package.html b/core/camel-base/src/main/java/org/apache/camel/language/simple/types/package.html
similarity index 100%
rename from core/camel-core/src/main/java/org/apache/camel/language/simple/types/package.html
rename to core/camel-base/src/main/java/org/apache/camel/language/simple/types/package.html
diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
index fe7ec30..3ee51ee 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
@@ -20,12 +20,9 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.spi.Language;
 import org.apache.camel.support.ExpressionAdapter;
-import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.support.builder.Namespaces;
 import org.apache.camel.util.StringHelper;
 
-import static org.apache.camel.support.IntrospectionSupport.setProperty;
-
 /**
  * A helper class for working with <a href="http://camel.apache.org/expression.html">expressions</a>.
  */
@@ -94,13 +91,4 @@ public final class ExpressionBuilder extends org.apache.camel.support.builder.Ex
         };
     }
 
-    private static void setProperty(Object bean, String name, Object value) {
-        try {
-            IntrospectionSupport.setProperty(bean, name, value);
-        } catch (Exception e) {
-            throw new IllegalArgumentException("Failed to set property " + name + " on " + bean
-                    + ". Reason: " + e, e);
-        }
-    }
-
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
index e10cd2b..377637d 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
@@ -16,176 +16,21 @@
  */
 package org.apache.camel.builder;
 
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-
-import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
-import org.apache.camel.Predicate;
 import org.apache.camel.support.builder.Namespaces;
 
 /**
  * A builder of expressions or predicates based on values.
  */
-public class ValueBuilder implements Expression, Predicate {
-    private Expression expression;
-    private boolean not;
+public class ValueBuilder extends org.apache.camel.support.builder.ValueBuilder {
 
     public ValueBuilder(Expression expression) {
-        this.expression = expression;
-    }
-
-    @Override
-    public <T> T evaluate(Exchange exchange, Class<T> type) {
-        return expression.evaluate(exchange, type);
-    }
-
-    @Override
-    public boolean matches(Exchange exchange) {
-        return PredicateBuilder.toPredicate(getExpression()).matches(exchange);
-    }
-
-    public Expression getExpression() {
-        return expression;
-    }
-
-    @Override
-    public String toString() {
-        return expression.toString();
-    }
-
-    // Predicate builders
-    // -------------------------------------------------------------------------
-
-    public Predicate isNotEqualTo(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.isNotEqualTo(expression, right));
-    }
-
-    public Predicate isEqualTo(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.isEqualTo(expression, right));
-    }
-
-    public Predicate isEqualToIgnoreCase(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.isEqualToIgnoreCase(expression, right));
-    }
-
-    public Predicate isLessThan(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.isLessThan(expression, right));
-    }
-
-    public Predicate isLessThanOrEqualTo(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.isLessThanOrEqualTo(expression, right));
-    }
-
-    public Predicate isGreaterThan(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.isGreaterThan(expression, right));
-    }
-
-    public Predicate isGreaterThanOrEqualTo(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.isGreaterThanOrEqualTo(expression, right));
-    }
-
-    public Predicate isInstanceOf(Class<?> type) {
-        return onNewPredicate(PredicateBuilder.isInstanceOf(expression, type));
-    }
-
-    public Predicate isNull() {
-        return onNewPredicate(PredicateBuilder.isNull(expression));
-    }
-
-    public Predicate isNotNull() {
-        return onNewPredicate(PredicateBuilder.isNotNull(expression));
-    }
-   
-    public Predicate not(Predicate predicate) {
-        return onNewPredicate(PredicateBuilder.not(predicate));
-    }
-
-    public Predicate in(Object... values) {
-        List<Predicate> predicates = new ArrayList<>();
-        for (Object value : values) {
-            Expression right = asExpression(value);
-            right = ExpressionBuilder.convertToExpression(right, expression);
-            Predicate predicate = onNewPredicate(PredicateBuilder.isEqualTo(expression, right));
-            predicates.add(predicate);
-        }
-        return in(predicates.toArray(new Predicate[predicates.size()]));
-    }
-
-    public Predicate in(Predicate... predicates) {
-        return onNewPredicate(PredicateBuilder.in(predicates));
-    }
-
-    public Predicate startsWith(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.startsWith(expression, right));
-    }
-
-    public Predicate endsWith(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.endsWith(expression, right));
-    }
-
-    /**
-     * Create a predicate that the left hand expression contains the value of
-     * the right hand expression
-     * 
-     * @param value the element which is compared to be contained within this
-     *                expression
-     * @return a predicate which evaluates to true if the given value expression
-     *         is contained within this expression value
-     */
-    public Predicate contains(Object value) {
-        Expression right = asExpression(value);
-        return onNewPredicate(PredicateBuilder.contains(expression, right));
-    }
-
-    /**
-     * Creates a predicate which is true if this expression matches the given
-     * regular expression
-     * 
-     * @param regex the regular expression to match
-     * @return a predicate which evaluates to true if the expression matches the
-     *         regex
-     */
-    public Predicate regex(String regex) {
-        return onNewPredicate(PredicateBuilder.regex(expression, regex));
+        super(expression);
     }
 
     // Expression builders
     // -------------------------------------------------------------------------
 
-    public ValueBuilder tokenize() {
-        return tokenize("\n");
-    }
-
-    public ValueBuilder tokenize(String token) {
-        Expression newExp = ExpressionBuilder.tokenizeExpression(expression, token);
-        return onNewValueBuilder(newExp);
-    }
-
-    public ValueBuilder tokenize(String token, int group, boolean skipFirst) {
-        return tokenize(token, "" + group, skipFirst);
-    }
-
-    public ValueBuilder tokenize(String token, String group, boolean skipFirst) {
-        Expression newExp = ExpressionBuilder.tokenizeExpression(expression, token);
-        if (group == null && skipFirst) {
-            // wrap in skip first (if group then it has its own skip first logic)
-            newExp = ExpressionBuilder.skipFirstExpression(newExp);
-        }
-        newExp = ExpressionBuilder.groupIteratorExpression(newExp, token, group, skipFirst);
-        return onNewValueBuilder(newExp);
-    }
-
     public ValueBuilder tokenizeXML(String tagName, String inheritNamespaceTagName) {
         Expression newExp = ExpressionBuilder.tokenizeXMLExpression(tagName, inheritNamespaceTagName);
         return onNewValueBuilder(newExp);
@@ -205,121 +50,6 @@ public class ValueBuilder implements Expression, Predicate {
         return onNewValueBuilder(newExp);
     }
 
-    /**
-     * Tokenizes the string conversion of this expression using the given
-     * regular expression
-     */
-    public ValueBuilder regexTokenize(String regex) {
-        Expression newExp = ExpressionBuilder.regexTokenizeExpression(expression, regex);
-        return onNewValueBuilder(newExp);
-    }
-
-    /**
-     * Replaces all occurrences of the regular expression with the given
-     * replacement
-     */
-    public ValueBuilder regexReplaceAll(String regex, String replacement) {
-        Expression newExp = ExpressionBuilder.regexReplaceAll(expression, regex, replacement);
-        return onNewValueBuilder(newExp);
-    }
-
-    /**
-     * Replaces all occurrences of the regular expression with the given
-     * replacement
-     */
-    public ValueBuilder regexReplaceAll(String regex, Expression replacement) {
-        Expression newExp = ExpressionBuilder.regexReplaceAll(expression, regex, replacement);
-        return onNewValueBuilder(newExp);
-    }
-
-    /**
-     * Converts the current value to the given type using the registered type
-     * converters
-     * 
-     * @param type the type to convert the value to
-     * @return the current builder
-     */
-    public ValueBuilder convertTo(Class<?> type) {
-        Expression newExp = ExpressionBuilder.convertToExpression(expression, type);
-        return onNewValueBuilder(newExp);
-    }
-
-    /**
-     * Converts the current value to a String using the registered type converters
-     * 
-     * @return the current builder
-     */
-    public ValueBuilder convertToString() {
-        return convertTo(String.class);
-    }
-
-    /**
-     * Appends the string evaluation of this expression with the given value
-     *
-     * @param value the value or expression to append
-     * @return the current builder
-     */
-    public ValueBuilder append(Object value) {
-        Expression newExp = ExpressionBuilder.append(expression, asExpression(value));
-        return onNewValueBuilder(newExp);
-    }
-
-    /**
-     * Prepends the string evaluation of this expression with the given value
-     *
-     * @param value the value or expression to prepend
-     * @return the current builder
-     */
-    public ValueBuilder prepend(Object value) {
-        Expression newExp = ExpressionBuilder.prepend(expression, asExpression(value));
-        return onNewValueBuilder(newExp);
-    }
-
-    /**
-     * Sorts the current value using the given comparator. The current value must be convertable
-     * to a {@link List} to allow sorting using the comparator.
-     *
-     * @param comparator  the comparator used by sorting
-     * @return the current builder
-     */
-    public ValueBuilder sort(Comparator<?> comparator) {
-        Expression newExp = ExpressionBuilder.sortExpression(expression, comparator);
-        return onNewValueBuilder(newExp);
-    }
-
-    /**
-     * Negates the built expression.
-     *
-     * @return the current builder
-     */
-    public ValueBuilder not() {
-        not = true;
-        return this;
-    }
-
-    // Implementation methods
-    // -------------------------------------------------------------------------
-
-    /**
-     * A strategy method to allow derived classes to deal with the newly created
-     * predicate in different ways
-     */
-    protected Predicate onNewPredicate(Predicate predicate) {
-        if (not) {
-            return PredicateBuilder.not(predicate);
-        } else {
-            return predicate;
-        }
-    }
-
-    protected Expression asExpression(Object value) {
-        if (value instanceof Expression) {
-            return (Expression)value;
-        } else {
-            return ExpressionBuilder.constantExpression(value);
-        }
-    }
-
     protected ValueBuilder onNewValueBuilder(Expression exp) {
         return new ValueBuilder(exp);
     }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
index b76ad9f..dd289d6 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
@@ -44,6 +44,7 @@ import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ExpressionAdapter;
 import org.apache.camel.support.GroupIterator;
 import org.apache.camel.support.GroupTokenIterator;
+import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.support.LanguageSupport;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -1520,6 +1521,21 @@ public class ExpressionBuilder {
         };
     }
 
+    public static Expression beanExpression(final Object bean, final String expression) {
+        return new ExpressionAdapter() {
+            public Object evaluate(Exchange exchange) {
+                Language language = exchange.getContext().resolveLanguage("bean");
+                setProperty(language, "bean", bean);
+                setProperty(language, "method", expression);
+                return language.createExpression(null).evaluate(exchange, Object.class);
+            }
+
+            public String toString() {
+                return "bean(" + bean + ", " + expression + ")";
+            }
+        };
+    }
+
     /**
      * Returns Simple expression or fallback to Constant expression if expression str is not Simple expression.
      */
@@ -1569,4 +1585,12 @@ public class ExpressionBuilder {
         };
     }
 
+    protected static void setProperty(Object bean, String name, Object value) {
+        try {
+            IntrospectionSupport.setProperty(bean, name, value);
+        } catch (Exception e) {
+            throw new IllegalArgumentException("Failed to set property " + name + " on " + bean + ". Reason: " + e, e);
+        }
+    }
+
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ValueBuilder.java
similarity index 91%
copy from core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
copy to core/camel-support/src/main/java/org/apache/camel/support/builder/ValueBuilder.java
index e10cd2b..833de82 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ValueBuilder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.builder;
+package org.apache.camel.support.builder;
 
 import java.util.ArrayList;
 import java.util.Comparator;
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.support.builder.Namespaces;
 
 /**
  * A builder of expressions or predicates based on values.
@@ -186,25 +185,6 @@ public class ValueBuilder implements Expression, Predicate {
         return onNewValueBuilder(newExp);
     }
 
-    public ValueBuilder tokenizeXML(String tagName, String inheritNamespaceTagName) {
-        Expression newExp = ExpressionBuilder.tokenizeXMLExpression(tagName, inheritNamespaceTagName);
-        return onNewValueBuilder(newExp);
-    }
-
-    public ValueBuilder xtokenize(String path, Namespaces namespaces) {
-        return xtokenize(path, 'i', namespaces);
-    }
-
-    public ValueBuilder xtokenize(String path, char mode, Namespaces namespaces) {
-        Expression newExp = ExpressionBuilder.tokenizeXMLAwareExpression(path, mode, 1, namespaces);
-        return onNewValueBuilder(newExp);
-    }
-
-    public ValueBuilder tokenizePair(String startToken, String endToken, boolean includeTokens) {
-        Expression newExp = ExpressionBuilder.tokenizePairExpression(startToken, endToken, includeTokens);
-        return onNewValueBuilder(newExp);
-    }
-
     /**
      * Tokenizes the string conversion of this expression using the given
      * regular expression


[camel] 05/08: [CAMEL-13371] Move DefaultRouteContext and some other classes to camel-base

Posted by gn...@apache.org.
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 b51384dd1f7d4897cf52c709309cad413d29bb5c
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon May 20 22:35:59 2019 +0200

    [CAMEL-13371] Move DefaultRouteContext and some other classes to camel-base
---
 .../blueprint/handler/CamelNamespaceHandler.java   |   2 +-
 .../camel/cdi/CdiCamelBeanPostProcessor.java       |   4 +-
 .../camel/spring/CamelBeanPostProcessor.java       |   4 +-
 .../apache/camel/spring/EndpointReferenceTest.java |   5 +-
 .../config/CustomExecutorServiceManager.java       |   4 +-
 .../apache/camel/test/junit4/CamelTestSupport.java |   2 +-
 .../camel/spi}/CamelInternalProcessorAdvice.java   |  52 +-
 .../java/org/apache/camel/spi/RouteContext.java    |   8 +
 .../impl/engine/BaseExecutorServiceManager.java}   |  29 +-
 .../impl/engine}/CamelPostProcessorHelper.java     |   6 +-
 .../engine}/DefaultCamelBeanPostProcessor.java     |   2 +-
 .../camel/impl/engine}/DefaultRouteContext.java    | 109 ++---
 .../camel/processor/CamelInternalProcessor.java    |  53 ++-
 .../org/apache/camel/processor/ContractAdvice.java |   1 +
 .../apache/camel/processor/RestBindingAdvice.java  |   1 +
 .../processor/SharedCamelInternalProcessor.java    |   1 +
 .../org/apache/camel/impl/DefaultCamelContext.java |   2 +-
 .../camel/impl/DefaultExecutorServiceManager.java  | 521 +--------------------
 .../java/org/apache/camel/impl/DefaultModel.java   |   4 +-
 .../camel/processor/channel/DefaultChannel.java    |   4 +-
 .../org/apache/camel/reifier/RouteReifier.java     |  77 +++
 ...melPostProcessorHelperConsumePredicateTest.java |   2 +-
 ...amelPostProcessorHelperConsumePropertyTest.java |   2 +-
 ...ostProcessorHelperSedaConsumePredicateTest.java |   2 +-
 .../{ => engine}/CamelPostProcessorHelperTest.java |   4 +-
 .../{ => engine}/CustomThreadPoolFactoryTest.java  |   4 +-
 26 files changed, 225 insertions(+), 680 deletions(-)

diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
index 0aa371d..568395a 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
@@ -63,7 +63,7 @@ import org.apache.camel.blueprint.CamelEndpointFactoryBean;
 import org.apache.camel.blueprint.CamelRestContextFactoryBean;
 import org.apache.camel.blueprint.CamelRouteContextFactoryBean;
 import org.apache.camel.core.xml.AbstractCamelFactoryBean;
-import org.apache.camel.impl.CamelPostProcessorHelper;
+import org.apache.camel.impl.engine.CamelPostProcessorHelper;
 import org.apache.camel.impl.engine.DefaultCamelContextNameStrategy;
 import org.apache.camel.model.AggregateDefinition;
 import org.apache.camel.model.CatchDefinition;
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java
index e2d42ac..4d33020 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java
@@ -28,8 +28,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Produce;
 import org.apache.camel.PropertyInject;
-import org.apache.camel.impl.CamelPostProcessorHelper;
-import org.apache.camel.impl.DefaultCamelBeanPostProcessor;
+import org.apache.camel.impl.engine.CamelPostProcessorHelper;
+import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
 import org.apache.camel.util.ReflectionHelper;
 
 import static org.apache.camel.cdi.BeanManagerHelper.getReferenceByType;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
index b9d610d..c817b7b 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
@@ -29,8 +29,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Service;
 import org.apache.camel.core.xml.CamelJMXAgentDefinition;
-import org.apache.camel.impl.CamelPostProcessorHelper;
-import org.apache.camel.impl.DefaultCamelBeanPostProcessor;
+import org.apache.camel.impl.engine.CamelPostProcessorHelper;
+import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.service.ServiceHelper;
 import org.slf4j.Logger;
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
index d172ef5..eed26b8 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultRouteContext;
+import org.apache.camel.impl.engine.DefaultRouteContext;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spring.example.DummyBean;
@@ -74,7 +74,8 @@ public class EndpointReferenceTest extends SpringTestSupport {
     @Test
     public void testReferenceEndpointFromOtherCamelContext() throws Exception {
         CamelContext context = applicationContext.getBean("camel2", CamelContext.class);
-        RouteContext routeContext = new DefaultRouteContext(context, new RouteDefinition("temporary"));
+        RouteDefinition route = new RouteDefinition("temporary");
+        RouteContext routeContext = new DefaultRouteContext(context, route, route.idOrCreate(context.getNodeIdFactory()));
         try {
             routeContext.resolveEndpoint(null, "endpoint1");
             fail("Should have thrown exception");
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/CustomExecutorServiceManager.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/CustomExecutorServiceManager.java
index e46de53..9169103 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/CustomExecutorServiceManager.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/CustomExecutorServiceManager.java
@@ -17,9 +17,9 @@
 package org.apache.camel.spring.config;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.impl.DefaultExecutorServiceManager;
+import org.apache.camel.impl.engine.BaseExecutorServiceManager;
 
-public class CustomExecutorServiceManager extends DefaultExecutorServiceManager {
+public class CustomExecutorServiceManager extends BaseExecutorServiceManager {
 
     public CustomExecutorServiceManager(CamelContext camelContext) {
         super(camelContext);
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java b/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java
index d74f0ab..dede8ed 100644
--- a/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java
@@ -71,7 +71,7 @@ import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.properties.PropertiesComponent;
-import org.apache.camel.impl.DefaultCamelBeanPostProcessor;
+import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.impl.engine.InterceptSendToMockEndpointStrategy;
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessorAdvice.java b/core/camel-api/src/main/java/org/apache/camel/spi/CamelInternalProcessorAdvice.java
similarity index 52%
rename from core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessorAdvice.java
rename to core/camel-api/src/main/java/org/apache/camel/spi/CamelInternalProcessorAdvice.java
index 03ecbee..85728ee 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessorAdvice.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/CamelInternalProcessorAdvice.java
@@ -14,11 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.processor;
+package org.apache.camel.spi;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.Ordered;
-import org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor;
 
 /**
  * An advice (before and after) to execute cross cutting functionality in the Camel routing engine.
@@ -49,52 +47,4 @@ public interface CamelInternalProcessorAdvice<T> {
      */
     void after(Exchange exchange, T data) throws Exception;
 
-    /**
-     * Wrap an InstrumentationProcessor into a CamelInternalProcessorAdvice
-     */
-    static <T> CamelInternalProcessorAdvice<T> wrap(InstrumentationProcessor<T> instrumentationProcessor) {
-
-        if (instrumentationProcessor instanceof CamelInternalProcessor) {
-            return (CamelInternalProcessorAdvice<T>) instrumentationProcessor;
-        } else {
-            return new CamelInternalProcessorAdviceWrapper<T>(instrumentationProcessor);
-        }
-    }
-
-    static Object unwrap(CamelInternalProcessorAdvice<?> advice) {
-        if (advice instanceof CamelInternalProcessorAdviceWrapper) {
-            return ((CamelInternalProcessorAdviceWrapper) advice).unwrap();
-        } else {
-            return advice;
-        }
-    }
-
-    class CamelInternalProcessorAdviceWrapper<T> implements CamelInternalProcessorAdvice<T>, Ordered {
-
-        final InstrumentationProcessor<T> instrumentationProcessor;
-
-        public CamelInternalProcessorAdviceWrapper(InstrumentationProcessor<T> instrumentationProcessor) {
-            this.instrumentationProcessor = instrumentationProcessor;
-        }
-
-        InstrumentationProcessor<T> unwrap() {
-            return instrumentationProcessor;
-        }
-
-        @Override
-        public int getOrder() {
-            return instrumentationProcessor.getOrder();
-        }
-
-        @Override
-        public T before(Exchange exchange) throws Exception {
-            return instrumentationProcessor.before(exchange);
-        }
-
-        @Override
-        public void after(Exchange exchange, T data) throws Exception {
-            instrumentationProcessor.after(exchange, data);
-        }
-    }
-
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
index f931785..d67feef 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -197,10 +197,18 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
      */
     Boolean isAutoStartup();
 
+    void setStartupOrder(Integer startupOrder);
+
     Integer getStartupOrder();
 
+    void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
+
     ErrorHandlerFactory getErrorHandlerFactory();
 
+    void addAdvice(CamelInternalProcessorAdvice<?> advice);
+
+    void addProperty(String key, Object value);
+
     /**
      * Gets the last error.
      *
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
similarity index 95%
copy from core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
copy to core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
index 532fd68..67c4e56 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.util.Iterator;
 import java.util.LinkedHashSet;
@@ -30,17 +30,13 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.StaticService;
-import org.apache.camel.model.OptionalIdentifiedDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.ProcessorDefinitionHelper;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.ThreadPoolFactory;
 import org.apache.camel.spi.ThreadPoolProfile;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.DefaultThreadPoolFactory;
 import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -59,8 +55,8 @@ import org.slf4j.LoggerFactory;
  * Default {@link org.apache.camel.spi.ExecutorServiceManager}.
  *
  */
-public class DefaultExecutorServiceManager extends ServiceSupport implements ExecutorServiceManager {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultExecutorServiceManager.class);
+public class BaseExecutorServiceManager extends ServiceSupport implements ExecutorServiceManager {
+    private static final Logger LOG = LoggerFactory.getLogger(BaseExecutorServiceManager.class);
 
     private final CamelContext camelContext;
     private ThreadPoolFactory threadPoolFactory = new DefaultThreadPoolFactory();
@@ -71,7 +67,7 @@ public class DefaultExecutorServiceManager extends ServiceSupport implements Exe
     private final Map<String, ThreadPoolProfile> threadPoolProfiles = new ConcurrentHashMap<>();
     private ThreadPoolProfile defaultProfile;
 
-    public DefaultExecutorServiceManager(CamelContext camelContext) {
+    public BaseExecutorServiceManager(CamelContext camelContext) {
         this.camelContext = camelContext;
 
         defaultProfile = new ThreadPoolProfile(defaultThreadPoolProfileId);
@@ -87,6 +83,10 @@ public class DefaultExecutorServiceManager extends ServiceSupport implements Exe
         registerThreadPoolProfile(defaultProfile);
     }
 
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
     @Override
     public ThreadPoolFactory getThreadPoolFactory() {
         return threadPoolFactory;
@@ -501,7 +501,7 @@ public class DefaultExecutorServiceManager extends ServiceSupport implements Exe
 
         // extract id from source
         if (source instanceof NamedNode) {
-            id = ((OptionalIdentifiedDefinition<?>) source).idOrCreate(this.camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+            id = ((NamedNode) source).getId();
             // and let source be the short name of the pattern
             sourceId = ((NamedNode) source).getShortName();
         } else if (source instanceof String) {
@@ -523,11 +523,8 @@ public class DefaultExecutorServiceManager extends ServiceSupport implements Exe
         StringHelper.notEmpty(id, "id for thread pool " + executorService);
 
         // extract route id if possible
-        if (source instanceof ProcessorDefinition) {
-            RouteDefinition route = ProcessorDefinitionHelper.getRoute((ProcessorDefinition<?>) source);
-            if (route != null) {
-                routeId = route.idOrCreate(this.camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-            }
+        if (source instanceof NamedNode) {
+            routeId = CamelContextHelper.getRouteId((NamedNode) source);
         }
 
         // let lifecycle strategy be notified as well which can let it be managed in JMX as well
@@ -547,7 +544,7 @@ public class DefaultExecutorServiceManager extends ServiceSupport implements Exe
         onNewExecutorService(executorService);
     }
 
-    private ThreadFactory createThreadFactory(String name, boolean isDaemon) {
+    protected ThreadFactory createThreadFactory(String name, boolean isDaemon) {
         return new CamelThreadFactory(threadNamePattern, name, isDaemon);
     }
 
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
similarity index 98%
rename from core/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
rename to core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
index 569b924..eaa87b4 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.lang.reflect.Method;
 import java.util.Set;
@@ -37,10 +37,6 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.ProxyInstantiationException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
-import org.apache.camel.impl.engine.DefaultConsumerTemplate;
-import org.apache.camel.impl.engine.DefaultFluentProducerTemplate;
-import org.apache.camel.impl.engine.DefaultProducerTemplate;
-import org.apache.camel.impl.engine.SubscribeMethodProcessor;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.IntrospectionSupport;
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
similarity index 99%
rename from core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
rename to core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
index 51a715e..0e7003b 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
similarity index 78%
rename from core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
rename to core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
index a64cd54..e1a943c 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -24,7 +24,6 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
@@ -32,15 +31,9 @@ import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ShutdownRoute;
 import org.apache.camel.ShutdownRunningTask;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
-import org.apache.camel.model.PropertyDefinition;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.CamelInternalProcessor;
-import org.apache.camel.processor.CamelInternalProcessorAdvice;
-import org.apache.camel.processor.ContractAdvice;
+import org.apache.camel.spi.CamelInternalProcessorAdvice;
 import org.apache.camel.processor.Pipeline;
-import org.apache.camel.reifier.rest.RestBindingReifier;
-import org.apache.camel.spi.Contract;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.ManagementInterceptStrategy;
 import org.apache.camel.spi.RouteContext;
@@ -53,7 +46,7 @@ import org.apache.camel.support.CamelContextHelper;
  * The context used to activate new routing rules
  */
 public class DefaultRouteContext implements RouteContext {
-    private final RouteDefinition route;
+    private final NamedNode route;
     private final String routeId;
     private Route runtimeRoute;
     private Endpoint endpoint;
@@ -77,11 +70,15 @@ public class DefaultRouteContext implements RouteContext {
     private RouteController routeController;
     private final Map<String, Processor> onCompletions = new HashMap<>();
     private final Map<String, Processor> onExceptions = new HashMap<>();
+    private final List<CamelInternalProcessorAdvice<?>> advices = new ArrayList<>();
+    private final Map<String, Object> properties = new HashMap<>();
+    private ErrorHandlerFactory errorHandlerFactory;
+    private Integer startupOrder;
 
-    public DefaultRouteContext(CamelContext camelContext, RouteDefinition route) {
+    public DefaultRouteContext(CamelContext camelContext, NamedNode route, String routeId) {
         this.camelContext = camelContext;
         this.route = route;
-        this.routeId = route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        this.routeId = routeId;
     }
 
     public Endpoint getEndpoint() {
@@ -188,79 +185,18 @@ public class DefaultRouteContext implements RouteContext {
 
             // wrap in JMX instrumentation processor that is used for performance stats
             if (managementInterceptStrategy != null) {
-                internal.addAdvice(CamelInternalProcessorAdvice.wrap(managementInterceptStrategy.createProcessor("route")));
+                internal.addAdvice(CamelInternalProcessor.wrap(managementInterceptStrategy.createProcessor("route")));
             }
 
             // wrap in route lifecycle
             internal.addAdvice(new CamelInternalProcessor.RouteLifecycleAdvice());
 
             // wrap in REST binding
-            if (route.getRestBindingDefinition() != null) {
-                try {
-                    internal.addAdvice(new RestBindingReifier(route.getRestBindingDefinition()).createRestBindingAdvice(this));
-                } catch (Exception e) {
-                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
-                }
-            }
-
-            // wrap in contract
-            if (route.getInputType() != null || route.getOutputType() != null) {
-                Contract contract = new Contract();
-                if (route.getInputType() != null) {
-                    contract.setInputType(route.getInputType().getUrn());
-                    contract.setValidateInput(route.getInputType().isValidate());
-                }
-                if (route.getOutputType() != null) {
-                    contract.setOutputType(route.getOutputType().getUrn());
-                    contract.setValidateOutput(route.getOutputType().isValidate());
-                }
-                internal.addAdvice(new ContractAdvice(contract));
-                // make sure to enable data type as its in use when using input/output types on routes
-                camelContext.setUseDataType(true);
-            }
+            advices.forEach(internal::addAdvice);
 
             // and create the route that wraps the UoW
             Route edcr = new EventDrivenConsumerRoute(this, getEndpoint(), internal);
-            edcr.getProperties().put(Route.ID_PROPERTY, routeId);
-            edcr.getProperties().put(Route.CUSTOM_ID_PROPERTY, route.hasCustomIdAssigned() ? "true" : "false");
-            edcr.getProperties().put(Route.PARENT_PROPERTY, Integer.toHexString(route.hashCode()));
-            edcr.getProperties().put(Route.DESCRIPTION_PROPERTY, route.getDescriptionText());
-            if (route.getGroup() != null) {
-                edcr.getProperties().put(Route.GROUP_PROPERTY, route.getGroup());
-            }
-            String rest = "false";
-            if (route.isRest() != null && route.isRest()) {
-                rest = "true";
-            }
-            edcr.getProperties().put(Route.REST_PROPERTY, rest);
-
-            List<PropertyDefinition> properties = route.getRouteProperties();
-            if (properties != null) {
-                final String[] reservedProperties = new String[] {
-                    Route.ID_PROPERTY,
-                    Route.PARENT_PROPERTY,
-                    Route.GROUP_PROPERTY,
-                    Route.REST_PROPERTY,
-                    Route.DESCRIPTION_PROPERTY
-                };
-
-                for (PropertyDefinition prop : properties) {
-                    try {
-                        final String key = CamelContextHelper.parseText(camelContext, prop.getKey());
-                        final String val = CamelContextHelper.parseText(camelContext, prop.getValue());
-
-                        for (String property : reservedProperties) {
-                            if (property.equalsIgnoreCase(key)) {
-                                throw new IllegalArgumentException("Cannot set route property " + property + " as it is a reserved property");
-                            }
-                        }
-
-                        edcr.getProperties().put(key, val);
-                    } catch (Exception e) {
-                        throw RuntimeCamelException.wrapRuntimeCamelException(e);
-                    }
-                }
-            }
+            edcr.getProperties().putAll(properties);
 
             // after the route is created then set the route on the policy processor so we get hold of it
             CamelInternalProcessor.RoutePolicyAdvice task = internal.getAdvice(CamelInternalProcessor.RoutePolicyAdvice.class);
@@ -419,14 +355,22 @@ public class DefaultRouteContext implements RouteContext {
         return true;
     }
 
+    public void setStartupOrder(Integer startupOrder) {
+        this.startupOrder = startupOrder;
+    }
+
     @Override
     public Integer getStartupOrder() {
-        return route.getStartupOrder();
+        return startupOrder;
+    }
+
+    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
+        this.errorHandlerFactory = errorHandlerFactory;
     }
 
     @Override
     public ErrorHandlerFactory getErrorHandlerFactory() {
-        return route.getErrorHandlerFactory();
+        return errorHandlerFactory;
     }
 
     public void setShutdownRoute(ShutdownRoute shutdownRoute) {
@@ -512,4 +456,13 @@ public class DefaultRouteContext implements RouteContext {
     public void setOnException(String onExceptionId, Processor processor) {
         onExceptions.put(onExceptionId, processor);
     }
+
+    public void addAdvice(CamelInternalProcessorAdvice<?> advice) {
+        advices.add(advice);
+    }
+
+    public void addProperty(String key, Object value) {
+        properties.put(key, value);
+    }
+
 }
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index 519bacd..ba7fd2e 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -36,7 +36,9 @@ import org.apache.camel.StreamCache;
 import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.DefaultBacklogTracerEventMessage;
+import org.apache.camel.spi.CamelInternalProcessorAdvice;
 import org.apache.camel.spi.InflightRepository;
+import org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor;
 import org.apache.camel.spi.MessageHistoryFactory;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RoutePolicy;
@@ -110,7 +112,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
      */
     public <T> T getAdvice(Class<T> type) {
         for (CamelInternalProcessorAdvice task : advices) {
-            Object advice = CamelInternalProcessorAdvice.unwrap(task);
+            Object advice = unwrap(task);
             if (type.isInstance(advice)) {
                 return type.cast(advice);
             }
@@ -735,4 +737,53 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
             // noop
         }
     }
+
+    /**
+     * Wrap an InstrumentationProcessor into a CamelInternalProcessorAdvice
+     */
+    public static <T> CamelInternalProcessorAdvice<T> wrap(InstrumentationProcessor<T> instrumentationProcessor) {
+
+        if (instrumentationProcessor instanceof CamelInternalProcessor) {
+            return (CamelInternalProcessorAdvice<T>) instrumentationProcessor;
+        } else {
+            return new CamelInternalProcessorAdviceWrapper<T>(instrumentationProcessor);
+        }
+    }
+
+    public static Object unwrap(CamelInternalProcessorAdvice<?> advice) {
+        if (advice instanceof CamelInternalProcessorAdviceWrapper) {
+            return ((CamelInternalProcessorAdviceWrapper) advice).unwrap();
+        } else {
+            return advice;
+        }
+    }
+
+    static class CamelInternalProcessorAdviceWrapper<T> implements CamelInternalProcessorAdvice<T>, Ordered {
+
+        final InstrumentationProcessor<T> instrumentationProcessor;
+
+        public CamelInternalProcessorAdviceWrapper(InstrumentationProcessor<T> instrumentationProcessor) {
+            this.instrumentationProcessor = instrumentationProcessor;
+        }
+
+        InstrumentationProcessor<T> unwrap() {
+            return instrumentationProcessor;
+        }
+
+        @Override
+        public int getOrder() {
+            return instrumentationProcessor.getOrder();
+        }
+
+        @Override
+        public T before(Exchange exchange) throws Exception {
+            return instrumentationProcessor.before(exchange);
+        }
+
+        @Override
+        public void after(Exchange exchange, T data) throws Exception {
+            instrumentationProcessor.after(exchange, data);
+        }
+    }
+
 }
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java b/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java
index 5e11b37..435cee9 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java
@@ -20,6 +20,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.ValidationException;
+import org.apache.camel.spi.CamelInternalProcessorAdvice;
 import org.apache.camel.spi.Contract;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.DataTypeAware;
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java b/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
index e68d7c3..4a7ee4f 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
@@ -27,6 +27,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.spi.CamelInternalProcessorAdvice;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.DataTypeAware;
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/SharedCamelInternalProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/SharedCamelInternalProcessor.java
index ac698d4..0cf2654 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/SharedCamelInternalProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/SharedCamelInternalProcessor.java
@@ -30,6 +30,7 @@ import org.apache.camel.Ordered;
 import org.apache.camel.Processor;
 import org.apache.camel.Service;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
+import org.apache.camel.spi.CamelInternalProcessorAdvice;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.Transformer;
 import org.apache.camel.spi.UnitOfWork;
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index dad1661..1f4e396 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -30,6 +30,7 @@ import org.apache.camel.impl.converter.DefaultTypeConverter;
 import org.apache.camel.impl.engine.BeanProcessorFactoryResolver;
 import org.apache.camel.impl.engine.BeanProxyFactoryResolver;
 import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
+import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
 import org.apache.camel.impl.engine.DefaultCamelContextNameStrategy;
 import org.apache.camel.impl.engine.DefaultClassResolver;
 import org.apache.camel.impl.engine.DefaultComponentResolver;
@@ -81,7 +82,6 @@ import org.apache.camel.spi.NodeIdFactory;
 import org.apache.camel.spi.PackageScanClassResolver;
 import org.apache.camel.spi.ProcessorFactory;
 import org.apache.camel.spi.Registry;
-import org.apache.camel.spi.RestRegistry;
 import org.apache.camel.spi.RestRegistryFactory;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.ShutdownStrategy;
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
index 532fd68..b9eb1a1 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
@@ -16,539 +16,44 @@
  */
 package org.apache.camel.impl;
 
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NamedNode;
-import org.apache.camel.StaticService;
+import org.apache.camel.impl.engine.BaseExecutorServiceManager;
 import org.apache.camel.model.OptionalIdentifiedDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.ProcessorDefinitionHelper;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.spi.ExecutorServiceManager;
-import org.apache.camel.spi.LifecycleStrategy;
-import org.apache.camel.spi.ThreadPoolFactory;
+import org.apache.camel.spi.NodeIdFactory;
 import org.apache.camel.spi.ThreadPoolProfile;
-import org.apache.camel.support.DefaultThreadPoolFactory;
-import org.apache.camel.support.service.ServiceSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StopWatch;
-import org.apache.camel.util.StringHelper;
-import org.apache.camel.util.TimeUtils;
-import org.apache.camel.util.URISupport;
-import org.apache.camel.util.concurrent.CamelThreadFactory;
-import org.apache.camel.util.concurrent.SizedScheduledExecutorService;
-import org.apache.camel.util.concurrent.ThreadHelper;
-import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
-/**
- * Default {@link org.apache.camel.spi.ExecutorServiceManager}.
- *
- */
-public class DefaultExecutorServiceManager extends ServiceSupport implements ExecutorServiceManager {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultExecutorServiceManager.class);
-
-    private final CamelContext camelContext;
-    private ThreadPoolFactory threadPoolFactory = new DefaultThreadPoolFactory();
-    private final List<ExecutorService> executorServices = new CopyOnWriteArrayList<>();
-    private String threadNamePattern;
-    private long shutdownAwaitTermination = 10000;
-    private String defaultThreadPoolProfileId = "defaultThreadPoolProfile";
-    private final Map<String, ThreadPoolProfile> threadPoolProfiles = new ConcurrentHashMap<>();
-    private ThreadPoolProfile defaultProfile;
+public class DefaultExecutorServiceManager extends BaseExecutorServiceManager {
 
     public DefaultExecutorServiceManager(CamelContext camelContext) {
-        this.camelContext = camelContext;
-
-        defaultProfile = new ThreadPoolProfile(defaultThreadPoolProfileId);
-        defaultProfile.setDefaultProfile(true);
-        defaultProfile.setPoolSize(10);
-        defaultProfile.setMaxPoolSize(20);
-        defaultProfile.setKeepAliveTime(60L);
-        defaultProfile.setTimeUnit(TimeUnit.SECONDS);
-        defaultProfile.setMaxQueueSize(1000);
-        defaultProfile.setAllowCoreThreadTimeOut(false);
-        defaultProfile.setRejectedPolicy(ThreadPoolRejectedPolicy.CallerRuns);
-
-        registerThreadPoolProfile(defaultProfile);
-    }
-
-    @Override
-    public ThreadPoolFactory getThreadPoolFactory() {
-        return threadPoolFactory;
-    }
-
-    @Override
-    public void setThreadPoolFactory(ThreadPoolFactory threadPoolFactory) {
-        this.threadPoolFactory = threadPoolFactory;
-    }
-
-    @Override
-    public void registerThreadPoolProfile(ThreadPoolProfile profile) {
-        ObjectHelper.notNull(profile, "profile");
-        StringHelper.notEmpty(profile.getId(), "id", profile);
-        threadPoolProfiles.put(profile.getId(), profile);
-    }
-
-    @Override
-    public ThreadPoolProfile getThreadPoolProfile(String id) {
-        return threadPoolProfiles.get(id);
-    }
-
-    @Override
-    public ThreadPoolProfile getDefaultThreadPoolProfile() {
-        return getThreadPoolProfile(defaultThreadPoolProfileId);
-    }
-
-    @Override
-    public void setDefaultThreadPoolProfile(ThreadPoolProfile defaultThreadPoolProfile) {
-        threadPoolProfiles.remove(defaultThreadPoolProfileId);
-        defaultThreadPoolProfile.addDefaults(defaultProfile);
-
-        LOG.info("Using custom DefaultThreadPoolProfile: {}", defaultThreadPoolProfile);
-
-        this.defaultThreadPoolProfileId = defaultThreadPoolProfile.getId();
-        defaultThreadPoolProfile.setDefaultProfile(true);
-        registerThreadPoolProfile(defaultThreadPoolProfile);
-    }
-
-    @Override
-    public String getThreadNamePattern() {
-        return threadNamePattern;
-    }
-
-    @Override
-    public void setThreadNamePattern(String threadNamePattern) {
-        // must set camel id here in the pattern and let the other placeholders be resolved on demand
-        this.threadNamePattern = threadNamePattern.replaceFirst("#camelId#", this.camelContext.getName());
-    }
-
-    @Override
-    public long getShutdownAwaitTermination() {
-        return shutdownAwaitTermination;
-    }
-
-    @Override
-    public void setShutdownAwaitTermination(long shutdownAwaitTermination) {
-        this.shutdownAwaitTermination = shutdownAwaitTermination;
-    }
-
-    @Override
-    public String resolveThreadName(String name) {
-        return ThreadHelper.resolveThreadName(threadNamePattern, name);
-    }
-
-    @Override
-    public Thread newThread(String name, Runnable runnable) {
-        ThreadFactory factory = createThreadFactory(name, true);
-        return factory.newThread(runnable);
-    }
-
-    @Override
-    public ExecutorService newDefaultThreadPool(Object source, String name) {
-        return newThreadPool(source, name, getDefaultThreadPoolProfile());
-    }
-
-    @Override
-    public ScheduledExecutorService newDefaultScheduledThreadPool(Object source, String name) {
-        return newScheduledThreadPool(source, name, getDefaultThreadPoolProfile());
-    }
-
-    @Override
-    public ExecutorService newThreadPool(Object source, String name, String profileId) {
-        ThreadPoolProfile profile = getThreadPoolProfile(profileId);
-        if (profile != null) {
-            return newThreadPool(source, name, profile);
-        } else {
-            // no profile with that id
-            return null;
-        }
+        super(camelContext);
     }
 
     @Override
     public ExecutorService newThreadPool(Object source, String name, ThreadPoolProfile profile) {
-        String sanitizedName = URISupport.sanitizeUri(name);
-        ObjectHelper.notNull(profile, "ThreadPoolProfile");
-
-        ThreadPoolProfile defaultProfile = getDefaultThreadPoolProfile();
-        profile.addDefaults(defaultProfile);
-
-        ThreadFactory threadFactory = createThreadFactory(sanitizedName, true);
-        ExecutorService executorService = threadPoolFactory.newThreadPool(profile, threadFactory);
-        onThreadPoolCreated(executorService, source, profile.getId());
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Created new ThreadPool for source: {} with name: {}. -> {}", source, sanitizedName, executorService);
-        }
-
-        return executorService;
-    }
-
-    @Override
-    public ExecutorService newThreadPool(Object source, String name, int poolSize, int maxPoolSize) {
-        ThreadPoolProfile profile = new ThreadPoolProfile(name);
-        profile.setPoolSize(poolSize);
-        profile.setMaxPoolSize(maxPoolSize);
-        return newThreadPool(source, name, profile);
-    }
-
-    @Override
-    public ExecutorService newSingleThreadExecutor(Object source, String name) {
-        return newFixedThreadPool(source, name, 1);
+        return super.newThreadPool(forceId(source), name, profile);
     }
 
     @Override
     public ExecutorService newCachedThreadPool(Object source, String name) {
-        String sanitizedName = URISupport.sanitizeUri(name);
-        ExecutorService answer = threadPoolFactory.newCachedThreadPool(createThreadFactory(sanitizedName, true));
-        onThreadPoolCreated(answer, source, null);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Created new CachedThreadPool for source: {} with name: {}. -> {}", source, sanitizedName, answer);
-        }
-        return answer;
+        return super.newCachedThreadPool(forceId(source), name);
     }
 
     @Override
-    public ExecutorService newFixedThreadPool(Object source, String name, int poolSize) {
-        ThreadPoolProfile profile = new ThreadPoolProfile(name);
-        profile.setPoolSize(poolSize);
-        profile.setMaxPoolSize(poolSize);
-        profile.setKeepAliveTime(0L);
-        return newThreadPool(source, name, profile);
-    }
-
-    @Override
-    public ScheduledExecutorService newSingleThreadScheduledExecutor(Object source, String name) {
-        return newScheduledThreadPool(source, name, 1);
-    }
-    
-    @Override
     public ScheduledExecutorService newScheduledThreadPool(Object source, String name, ThreadPoolProfile profile) {
-        String sanitizedName = URISupport.sanitizeUri(name);
-        profile.addDefaults(getDefaultThreadPoolProfile());
-        ScheduledExecutorService answer = threadPoolFactory.newScheduledThreadPool(profile, createThreadFactory(sanitizedName, true));
-        onThreadPoolCreated(answer, source, null);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Created new ScheduledThreadPool for source: {} with name: {} -> {}", source, sanitizedName, answer);
-        }
-        return answer;
+        return super.newScheduledThreadPool(forceId(source), name, profile);
     }
 
-    @Override
-    public ScheduledExecutorService newScheduledThreadPool(Object source, String name, String profileId) {
-        ThreadPoolProfile profile = getThreadPoolProfile(profileId);
-        if (profile != null) {
-            return newScheduledThreadPool(source, name, profile);
-        } else {
-            // no profile with that id
-            return null;
+    protected Object forceId(Object source) {
+        if (source instanceof OptionalIdentifiedDefinition) {
+            NodeIdFactory factory = getCamelContext().adapt(ExtendedCamelContext.class).getNodeIdFactory();
+            ((OptionalIdentifiedDefinition) source).idOrCreate(factory);
         }
-    }
-
-    @Override
-    public ScheduledExecutorService newScheduledThreadPool(Object source, String name, int poolSize) {
-        ThreadPoolProfile profile = new ThreadPoolProfile(name);
-        profile.setPoolSize(poolSize);
-        return newScheduledThreadPool(source, name, profile);
-    }
-
-    @Override
-    public void shutdown(ExecutorService executorService) {
-        doShutdown(executorService, 0, false);
-    }
-
-    @Override
-    public void shutdownGraceful(ExecutorService executorService) {
-        doShutdown(executorService, getShutdownAwaitTermination(), false);
-    }
-
-    @Override
-    public void shutdownGraceful(ExecutorService executorService, long shutdownAwaitTermination) {
-        doShutdown(executorService, shutdownAwaitTermination, false);
-    }
-
-    private boolean doShutdown(ExecutorService executorService, long shutdownAwaitTermination, boolean failSafe) {
-        if (executorService == null) {
-            return false;
-        }
-
-        boolean warned = false;
-
-        // shutting down a thread pool is a 2 step process. First we try graceful, and if that fails, then we go more aggressively
-        // and try shutting down again. In both cases we wait at most the given shutdown timeout value given
-        // (total wait could then be 2 x shutdownAwaitTermination, but when we shutdown the 2nd time we are aggressive and thus
-        // we ought to shutdown much faster)
-        if (!executorService.isShutdown()) {
-            StopWatch watch = new StopWatch();
-
-            LOG.trace("Shutdown of ExecutorService: {} with await termination: {} millis", executorService, shutdownAwaitTermination);
-            executorService.shutdown();
-
-            if (shutdownAwaitTermination > 0) {
-                try {
-                    if (!awaitTermination(executorService, shutdownAwaitTermination)) {
-                        warned = true;
-                        LOG.warn("Forcing shutdown of ExecutorService: {} due first await termination elapsed.", executorService);
-                        executorService.shutdownNow();
-                        // we are now shutting down aggressively, so wait to see if we can completely shutdown or not
-                        if (!awaitTermination(executorService, shutdownAwaitTermination)) {
-                            LOG.warn("Cannot completely force shutdown of ExecutorService: {} due second await termination elapsed.", executorService);
-                        }
-                    }
-                } catch (InterruptedException e) {
-                    warned = true;
-                    LOG.warn("Forcing shutdown of ExecutorService: {} due interrupted.", executorService);
-                    // we were interrupted during shutdown, so force shutdown
-                    executorService.shutdownNow();
-                }
-            }
-
-            // if we logged at WARN level, then report at INFO level when we are complete so the end user can see this in the log
-            if (warned) {
-                LOG.info("Shutdown of ExecutorService: {} is shutdown: {} and terminated: {} took: {}.",
-                    executorService, executorService.isShutdown(), executorService.isTerminated(), TimeUtils.printDuration(watch.taken()));
-            } else if (LOG.isDebugEnabled()) {
-                LOG.debug("Shutdown of ExecutorService: {} is shutdown: {} and terminated: {} took: {}.",
-                    executorService, executorService.isShutdown(), executorService.isTerminated(), TimeUtils.printDuration(watch.taken()));
-            }
-        }
-
-        // let lifecycle strategy be notified as well which can let it be managed in JMX as well
-        ThreadPoolExecutor threadPool = null;
-        if (executorService instanceof ThreadPoolExecutor) {
-            threadPool = (ThreadPoolExecutor) executorService;
-        } else if (executorService instanceof SizedScheduledExecutorService) {
-            threadPool = ((SizedScheduledExecutorService) executorService).getScheduledThreadPoolExecutor();
-        }
-        if (threadPool != null) {
-            for (LifecycleStrategy lifecycle : camelContext.getLifecycleStrategies()) {
-                lifecycle.onThreadPoolRemove(camelContext, threadPool);
-            }
-        }
-
-        // remove reference as its shutdown (do not remove if fail-safe)
-        if (!failSafe) {
-            executorServices.remove(executorService);
-        }
-
-        return warned;
-    }
-
-    @Override
-    public List<Runnable> shutdownNow(ExecutorService executorService) {
-        return doShutdownNow(executorService, false);
-    }
-
-    private List<Runnable> doShutdownNow(ExecutorService executorService, boolean failSafe) {
-        ObjectHelper.notNull(executorService, "executorService");
-
-        List<Runnable> answer = null;
-        if (!executorService.isShutdown()) {
-            if (failSafe) {
-                // log as warn, as we shutdown as fail-safe, so end user should see more details in the log.
-                LOG.warn("Forcing shutdown of ExecutorService: {}", executorService);
-            } else {
-                LOG.debug("Forcing shutdown of ExecutorService: {}", executorService);
-            }
-            answer = executorService.shutdownNow();
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Shutdown of ExecutorService: {} is shutdown: {} and terminated: {}.",
-                    executorService, executorService.isShutdown(), executorService.isTerminated());
-            }
-        }
-
-        // let lifecycle strategy be notified as well which can let it be managed in JMX as well
-        ThreadPoolExecutor threadPool = null;
-        if (executorService instanceof ThreadPoolExecutor) {
-            threadPool = (ThreadPoolExecutor) executorService;
-        } else if (executorService instanceof SizedScheduledExecutorService) {
-            threadPool = ((SizedScheduledExecutorService) executorService).getScheduledThreadPoolExecutor();
-        }
-        if (threadPool != null) {
-            for (LifecycleStrategy lifecycle : camelContext.getLifecycleStrategies()) {
-                lifecycle.onThreadPoolRemove(camelContext, threadPool);
-            }
-        }
-
-        // remove reference as its shutdown (do not remove if fail-safe)
-        if (!failSafe) {
-            executorServices.remove(executorService);
-        }
-
-        return answer;
-    }
-
-    @Override
-    public boolean awaitTermination(ExecutorService executorService, long shutdownAwaitTermination) throws InterruptedException {
-        // log progress every 2nd second so end user is aware of we are shutting down
-        StopWatch watch = new StopWatch();
-        long interval = Math.min(2000, shutdownAwaitTermination);
-        boolean done = false;
-        while (!done && interval > 0) {
-            if (executorService.awaitTermination(interval, TimeUnit.MILLISECONDS)) {
-                done = true;
-            } else {
-                LOG.info("Waited {} for ExecutorService: {} to terminate...", TimeUtils.printDuration(watch.taken()), executorService);
-                // recalculate interval
-                interval = Math.min(2000, shutdownAwaitTermination - watch.taken());
-            }
-        }
-
-        return done;
-    }
-
-    /**
-     * Strategy callback when a new {@link java.util.concurrent.ExecutorService} have been created.
-     *
-     * @param executorService the created {@link java.util.concurrent.ExecutorService}
-     */
-    protected void onNewExecutorService(ExecutorService executorService) {
-        // noop
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        if (threadNamePattern == null) {
-            // set default name pattern which includes the camel context name
-            threadNamePattern = "Camel (" + camelContext.getName() + ") thread ##counter# - #name#";
-        }
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        // noop
-    }
-
-    @Override
-    protected void doShutdown() throws Exception {
-        // shutdown all remainder executor services by looping and doing this aggressively
-        // as by normal all threads pool should have been shutdown using proper lifecycle
-        // by their EIPs, components etc. This is acting as a fail-safe during shutdown
-        // of CamelContext itself.
-        Set<ExecutorService> forced = new LinkedHashSet<>();
-        if (!executorServices.isEmpty()) {
-            // at first give a bit of time to shutdown nicely as the thread pool is most likely in the process of being shutdown also
-            LOG.debug("Giving time for {} ExecutorService's to shutdown properly (acting as fail-safe)", executorServices.size());
-            for (ExecutorService executorService : executorServices) {
-                try {
-                    boolean warned = doShutdown(executorService, getShutdownAwaitTermination(), true);
-                    // remember the thread pools that was forced to shutdown (eg warned)
-                    if (warned) {
-                        forced.add(executorService);
-                    }
-                } catch (Throwable e) {
-                    // only log if something goes wrong as we want to shutdown them all
-                    LOG.warn("Error occurred during shutdown of ExecutorService: "
-                            + executorService + ". This exception will be ignored.", e);
-                }
-            }
-        }
-
-        // log the thread pools which was forced to shutdown so it may help the user to identify a problem of his
-        if (!forced.isEmpty()) {
-            LOG.warn("Forced shutdown of {} ExecutorService's which has not been shutdown properly (acting as fail-safe)", forced.size());
-            for (ExecutorService executorService : forced) {
-                LOG.warn("  forced -> {}", executorService);
-            }
-        }
-        forced.clear();
-
-        // clear list
-        executorServices.clear();
-
-        // do not clear the default profile as we could potential be restarted
-        Iterator<ThreadPoolProfile> it = threadPoolProfiles.values().iterator();
-        while (it.hasNext()) {
-            ThreadPoolProfile profile = it.next();
-            if (!profile.isDefaultProfile()) {
-                it.remove();
-            }
-        }
-    }
-
-    /**
-     * Invoked when a new thread pool is created.
-     * This implementation will invoke the {@link LifecycleStrategy#onThreadPoolAdd(org.apache.camel.CamelContext,
-     * java.util.concurrent.ThreadPoolExecutor, String, String, String, String) LifecycleStrategy.onThreadPoolAdd} method,
-     * which for example will enlist the thread pool in JMX management.
-     *
-     * @param executorService the thread pool
-     * @param source          the source to use the thread pool
-     * @param threadPoolProfileId profile id, if the thread pool was created from a thread pool profile
-     */
-    private void onThreadPoolCreated(ExecutorService executorService, Object source, String threadPoolProfileId) {
-        // add to internal list of thread pools
-        executorServices.add(executorService);
-
-        String id;
-        String sourceId = null;
-        String routeId = null;
-
-        // extract id from source
-        if (source instanceof NamedNode) {
-            id = ((OptionalIdentifiedDefinition<?>) source).idOrCreate(this.camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-            // and let source be the short name of the pattern
-            sourceId = ((NamedNode) source).getShortName();
-        } else if (source instanceof String) {
-            id = (String) source;
-        } else if (source != null) {
-            if (source instanceof StaticService) {
-                // the source is static service so its name would be unique
-                id = source.getClass().getSimpleName();
-            } else {
-                // fallback and use the simple class name with hashcode for the id so its unique for this given source
-                id = source.getClass().getSimpleName() + "(" + ObjectHelper.getIdentityHashCode(source) + ")";
-            }
-        } else {
-            // no source, so fallback and use the simple class name from thread pool and its hashcode identity so its unique
-            id = executorService.getClass().getSimpleName() + "(" + ObjectHelper.getIdentityHashCode(executorService) + ")";
-        }
-
-        // id is mandatory
-        StringHelper.notEmpty(id, "id for thread pool " + executorService);
-
-        // extract route id if possible
-        if (source instanceof ProcessorDefinition) {
-            RouteDefinition route = ProcessorDefinitionHelper.getRoute((ProcessorDefinition<?>) source);
-            if (route != null) {
-                routeId = route.idOrCreate(this.camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-            }
-        }
-
-        // let lifecycle strategy be notified as well which can let it be managed in JMX as well
-        ThreadPoolExecutor threadPool = null;
-        if (executorService instanceof ThreadPoolExecutor) {
-            threadPool = (ThreadPoolExecutor) executorService;
-        } else if (executorService instanceof SizedScheduledExecutorService) {
-            threadPool = ((SizedScheduledExecutorService) executorService).getScheduledThreadPoolExecutor();
-        }
-        if (threadPool != null) {
-            for (LifecycleStrategy lifecycle : camelContext.getLifecycleStrategies()) {
-                lifecycle.onThreadPoolAdd(camelContext, threadPool, id, sourceId, routeId, threadPoolProfileId);
-            }
-        }
-
-        // now call strategy to allow custom logic
-        onNewExecutorService(executorService);
-    }
-
-    private ThreadFactory createThreadFactory(String name, boolean isDaemon) {
-        return new CamelThreadFactory(threadNamePattern, name, isDaemon);
+        return source;
     }
 
 }
+
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
index 6da696f..af12707 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -31,6 +31,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToStartRouteException;
 import org.apache.camel.Route;
 import org.apache.camel.impl.engine.AbstractCamelContext;
+import org.apache.camel.impl.engine.DefaultRouteContext;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.Model;
@@ -300,7 +301,8 @@ public class DefaultModel implements Model {
         AbstractCamelContext mcc = camelContext.adapt(AbstractCamelContext.class);
         mcc.setStartingRoutes(true);
         try {
-            RouteContext routeContext = new DefaultRouteContext(camelContext, routeDefinition);
+            String id = routeDefinition.idOrCreate(camelContext.getNodeIdFactory());
+            RouteContext routeContext = new DefaultRouteContext(camelContext, routeDefinition, id);
             Route route = new RouteReifier(routeDefinition).createRoute(camelContext, routeContext);
             RouteService routeService = new RouteService(route);
             mcc.startRouteService(routeService, true);
diff --git a/core/camel-core/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java b/core/camel-core/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java
index 6f6517c..997b2cd 100644
--- a/core/camel-core/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java
+++ b/core/camel-core/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java
@@ -35,7 +35,7 @@ import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteDefinitionHelper;
 import org.apache.camel.processor.CamelInternalProcessor;
-import org.apache.camel.processor.CamelInternalProcessorAdvice;
+import org.apache.camel.spi.CamelInternalProcessorAdvice;
 import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.processor.errorhandler.RedeliveryErrorHandler;
 import org.apache.camel.processor.interceptor.BacklogDebugger;
@@ -290,7 +290,7 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
             }
             if (!redeliveryPossible) {
                 // optimise to use advice as we cannot redeliver
-                addAdvice(CamelInternalProcessorAdvice.wrap(instrumentationProcessor));
+                addAdvice(CamelInternalProcessor.wrap(instrumentationProcessor));
             }
         }
     }
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 750d753..ae02c5a 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -27,6 +27,7 @@ import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.AdviceWithTask;
 import org.apache.camel.builder.RouteBuilder;
@@ -34,9 +35,13 @@ import org.apache.camel.model.Model;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.model.PropertyDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.processor.ContractAdvice;
 import org.apache.camel.processor.interceptor.HandleFault;
+import org.apache.camel.reifier.rest.RestBindingReifier;
+import org.apache.camel.spi.Contract;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RoutePolicy;
@@ -191,6 +196,9 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
     // Implementation methods
     // -------------------------------------------------------------------------
     protected Route doCreateRoute(CamelContext camelContext, RouteContext routeContext) throws Exception {
+        // configure error handler
+        routeContext.setErrorHandlerFactory(definition.getErrorHandlerFactory());
+
         // configure tracing
         if (definition.getTrace() != null) {
             Boolean isTrace = CamelContextHelper.parseBoolean(camelContext, definition.getTrace());
@@ -297,6 +305,11 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
             routeContext.setAutoStartup(isAutoStartup);
         }
 
+        // configure startup order
+        if (definition.getStartupOrder() != null) {
+            routeContext.setStartupOrder(definition.getStartupOrder());
+        }
+
         // configure shutdown
         if (definition.getShutdownRoute() != null) {
             log.debug("Using ShutdownRoute {} on route: {}", definition.getShutdownRoute(), definition.getId());
@@ -339,6 +352,70 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
             }
         }
 
+        if (definition.getRestBindingDefinition() != null) {
+            try {
+                routeContext.addAdvice(new RestBindingReifier(definition.getRestBindingDefinition()).createRestBindingAdvice(routeContext));
+            } catch (Exception e) {
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
+            }
+        }
+
+        // wrap in contract
+        if (definition.getInputType() != null || definition.getOutputType() != null) {
+            Contract contract = new Contract();
+            if (definition.getInputType() != null) {
+                contract.setInputType(definition.getInputType().getUrn());
+                contract.setValidateInput(definition.getInputType().isValidate());
+            }
+            if (definition.getOutputType() != null) {
+                contract.setOutputType(definition.getOutputType().getUrn());
+                contract.setValidateOutput(definition.getOutputType().isValidate());
+            }
+            routeContext.addAdvice(new ContractAdvice(contract));
+            // make sure to enable data type as its in use when using input/output types on routes
+            camelContext.setUseDataType(true);
+        }
+
+        // Set route properties
+        routeContext.addProperty(Route.ID_PROPERTY, definition.getId());
+        routeContext.addProperty(Route.CUSTOM_ID_PROPERTY, definition.hasCustomIdAssigned() ? "true" : "false");
+        routeContext.addProperty(Route.PARENT_PROPERTY, Integer.toHexString(definition.hashCode()));
+        routeContext.addProperty(Route.DESCRIPTION_PROPERTY, definition.getDescriptionText());
+        if (definition.getGroup() != null) {
+            routeContext.addProperty(Route.GROUP_PROPERTY, definition.getGroup());
+        }
+        String rest = Boolean.toString(definition.isRest() != null && definition.isRest());
+        routeContext.addProperty(Route.REST_PROPERTY, rest);
+
+        List<PropertyDefinition> properties = definition.getRouteProperties();
+        if (properties != null) {
+            final String[] reservedProperties = new String[] {
+                    Route.ID_PROPERTY,
+                    Route.CUSTOM_ID_PROPERTY,
+                    Route.PARENT_PROPERTY,
+                    Route.DESCRIPTION_PROPERTY,
+                    Route.GROUP_PROPERTY,
+                    Route.REST_PROPERTY
+            };
+
+            for (PropertyDefinition prop : properties) {
+                try {
+                    final String key = CamelContextHelper.parseText(camelContext, prop.getKey());
+                    final String val = CamelContextHelper.parseText(camelContext, prop.getValue());
+
+                    for (String property : reservedProperties) {
+                        if (property.equalsIgnoreCase(key)) {
+                            throw new IllegalArgumentException("Cannot set route property " + property + " as it is a reserved property");
+                        }
+                    }
+
+                    routeContext.addProperty(key, val);
+                } catch (Exception e) {
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
+                }
+            }
+        }
+
         return routeContext.commit();
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperConsumePredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperConsumePredicateTest.java
similarity index 98%
rename from core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperConsumePredicateTest.java
rename to core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperConsumePredicateTest.java
index 2605b2b..ea2edbd 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperConsumePredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperConsumePredicateTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.lang.reflect.Method;
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperConsumePropertyTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperConsumePropertyTest.java
similarity index 99%
rename from core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperConsumePropertyTest.java
rename to core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperConsumePropertyTest.java
index e7e9fe0..9aaee7b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperConsumePropertyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperConsumePropertyTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.lang.reflect.Method;
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperSedaConsumePredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperSedaConsumePredicateTest.java
similarity index 98%
rename from core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperSedaConsumePredicateTest.java
rename to core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperSedaConsumePredicateTest.java
index cedd4e8..39b0634 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperSedaConsumePredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperSedaConsumePredicateTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.lang.reflect.Method;
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperTest.java
similarity index 99%
rename from core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java
rename to core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperTest.java
index 52fd0fd..745d72d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelPostProcessorHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -38,6 +38,8 @@ import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.impl.FooBar;
+import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.support.DefaultExchange;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.support.SynchronizationAdapter;
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CustomThreadPoolFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CustomThreadPoolFactoryTest.java
similarity index 95%
rename from core/camel-core/src/test/java/org/apache/camel/impl/CustomThreadPoolFactoryTest.java
rename to core/camel-core/src/test/java/org/apache/camel/impl/engine/CustomThreadPoolFactoryTest.java
index c571425..f9995a0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CustomThreadPoolFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CustomThreadPoolFactoryTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.impl.engine;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.RejectedExecutionHandler;
@@ -36,7 +36,7 @@ public class CustomThreadPoolFactoryTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        DefaultExecutorServiceManager executorServiceManager = new DefaultExecutorServiceManager(context);
+        BaseExecutorServiceManager executorServiceManager = new BaseExecutorServiceManager(context);
         executorServiceManager.setThreadPoolFactory(factory);
         context.setExecutorServiceManager(executorServiceManager);
         return context;


[camel] 03/08: [CAMEL-13371] Rename ErrorHandlerBuilder to ErrorHandlerFactory in some places

Posted by gn...@apache.org.
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 9e6ddcbe8584abe83ef088337354687f34233c2f
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon May 20 16:24:18 2019 +0200

    [CAMEL-13371] Rename ErrorHandlerBuilder to ErrorHandlerFactory in some places
---
 .../cdi/transaction/JtaTransactionPolicy.java      |  9 ++++---
 .../camel/spring/spi/SpringTransactionPolicy.java  |  8 +++----
 .../camel/builder/ErrorHandlerBuilderRef.java      | 28 ++++++++++------------
 .../camel/builder/ErrorHandlerBuilderSupport.java  |  6 +----
 .../org/apache/camel/impl/DefaultRouteContext.java |  2 +-
 .../org/apache/camel/model/RouteDefinition.java    | 24 +++++++++----------
 .../apache/camel/model/RouteDefinitionHelper.java  | 17 +++----------
 .../org/apache/camel/model/RoutesDefinition.java   |  2 +-
 .../DefaultManagementObjectNameStrategy.java       |  4 ++--
 9 files changed, 40 insertions(+), 60 deletions(-)

diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionPolicy.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionPolicy.java
index b237b8c..e674b3d 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionPolicy.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionPolicy.java
@@ -19,7 +19,6 @@ package org.apache.camel.cdi.transaction;
 import javax.annotation.Resource;
 import javax.transaction.TransactionManager;
 
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
@@ -77,7 +76,7 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
 
         // find the existing error handler builder
         RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerBuilder();
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerFactory();
 
         // check if its a ref if so then do a lookup
         if (builder instanceof ErrorHandlerBuilderRef) {
@@ -87,9 +86,9 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
             // only lookup if there was explicit an error handler builder configured
             // otherwise its just the "default" that has not explicit been configured
             // and if so then we can safely replace that with our transacted error handler
-            if (ErrorHandlerBuilderRef.isErrorHandlerBuilderConfigured(ref)) {
+            if (ErrorHandlerBuilderRef.isErrorHandlerFactoryConfigured(ref)) {
                 LOG.debug("Looking up ErrorHandlerBuilder with ref: {}", ref);
-                builder = (ErrorHandlerBuilder) ErrorHandlerBuilderRef.lookupErrorHandlerBuilder(routeContext, ref);
+                builder = (ErrorHandlerBuilder) ErrorHandlerBuilderRef.lookupErrorHandlerFactory(routeContext, ref);
             }
         }
 
@@ -121,7 +120,7 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
         txBuilder.configure(routeContext, answer);
 
         // set the route to use our transacted error handler builder
-        route.setErrorHandlerBuilder(txBuilder);
+        route.setErrorHandlerFactory(txBuilder);
 
         // return with wrapped transacted error handler
         return answer;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
index 8161fdc..362160e 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
@@ -69,7 +69,7 @@ public class SpringTransactionPolicy implements TransactedPolicy {
 
         // find the existing error handler builder
         RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerBuilder();
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerFactory();
 
         // check if its a ref if so then do a lookup
         if (builder instanceof ErrorHandlerBuilderRef) {
@@ -79,9 +79,9 @@ public class SpringTransactionPolicy implements TransactedPolicy {
             // only lookup if there was explicit an error handler builder configured
             // otherwise its just the "default" that has not explicit been configured
             // and if so then we can safely replace that with our transacted error handler
-            if (ErrorHandlerBuilderRef.isErrorHandlerBuilderConfigured(ref)) {
+            if (ErrorHandlerBuilderRef.isErrorHandlerFactoryConfigured(ref)) {
                 LOG.debug("Looking up ErrorHandlerBuilder with ref: {}", ref);
-                builder = (ErrorHandlerBuilder)ErrorHandlerBuilderRef.lookupErrorHandlerBuilder(routeContext, ref);
+                builder = (ErrorHandlerBuilder)ErrorHandlerBuilderRef.lookupErrorHandlerFactory(routeContext, ref);
             }
         }
 
@@ -114,7 +114,7 @@ public class SpringTransactionPolicy implements TransactedPolicy {
             txBuilder.configure(routeContext, answer);
 
             // set the route to use our transacted error handler builder
-            route.setErrorHandlerBuilder(txBuilder);
+            route.setErrorHandlerFactory(txBuilder);
         }
 
         // return with wrapped transacted error handler
diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java b/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
index 8cfcec2..d292f0e 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
@@ -64,11 +64,7 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
     
 
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
-        ErrorHandlerBuilder handler = handlers.get(routeContext);
-        if (handler == null) {
-            handler = createErrorHandler(routeContext);
-            handlers.put(routeContext, handler);
-        }
+        ErrorHandlerFactory handler = handlers.computeIfAbsent(routeContext, this::createErrorHandler);
         return handler.createErrorHandler(routeContext, processor);
     }
 
@@ -98,8 +94,8 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
      * @param ref          reference id for the error handler
      * @return the error handler
      */
-    public static ErrorHandlerFactory lookupErrorHandlerBuilder(RouteContext routeContext, String ref) {
-        return lookupErrorHandlerBuilder(routeContext, ref, true);
+    public static ErrorHandlerFactory lookupErrorHandlerFactory(RouteContext routeContext, String ref) {
+        return lookupErrorHandlerFactory(routeContext, ref, true);
     }
 
     /**
@@ -110,16 +106,16 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
      * @param mandatory    whether the error handler must exists, if not a {@link org.apache.camel.NoSuchBeanException} is thrown
      * @return the error handler
      */
-    public static ErrorHandlerFactory lookupErrorHandlerBuilder(RouteContext routeContext, String ref, boolean mandatory) {
+    public static ErrorHandlerFactory lookupErrorHandlerFactory(RouteContext routeContext, String ref, boolean mandatory) {
         ErrorHandlerFactory answer;
 
         // if the ref is the default then we do not have any explicit error handler configured
         // if that is the case then use error handlers configured on the route, as for instance
         // the transacted error handler could have been configured on the route so we should use that one
-        if (!isErrorHandlerBuilderConfigured(ref)) {
+        if (!isErrorHandlerFactoryConfigured(ref)) {
             // see if there has been configured a route builder on the route
             RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-            answer = route.getErrorHandlerBuilder();
+            answer = route.getErrorHandlerFactory();
             if (answer == null && route.getErrorHandlerRef() != null) {
                 answer = routeContext.lookup(route.getErrorHandlerRef(), ErrorHandlerBuilder.class);
             }
@@ -131,10 +127,10 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
             if (answer instanceof ErrorHandlerBuilderRef) {
                 ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef) answer;
                 String otherRef = other.getRef();
-                if (!isErrorHandlerBuilderConfigured(otherRef)) {
+                if (!isErrorHandlerFactoryConfigured(otherRef)) {
                     // the other has also no explicit error handler configured then fallback to the handler
                     // configured on the parent camel context
-                    answer = lookupErrorHandlerBuilder(routeContext.getCamelContext());
+                    answer = lookupErrorHandlerFactory(routeContext.getCamelContext());
                 }
                 if (answer == null) {
                     // the other has also no explicit error handler configured then fallback to the default error handler
@@ -157,12 +153,12 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
         return answer;
     }
 
-    protected static ErrorHandlerFactory lookupErrorHandlerBuilder(CamelContext camelContext) {
+    protected static ErrorHandlerFactory lookupErrorHandlerFactory(CamelContext camelContext) {
         ErrorHandlerFactory answer = camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory();
         if (answer instanceof ErrorHandlerBuilderRef) {
             ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef) answer;
             String otherRef = other.getRef();
-            if (isErrorHandlerBuilderConfigured(otherRef)) {
+            if (isErrorHandlerFactoryConfigured(otherRef)) {
                 answer = camelContext.getRegistry().lookupByNameAndType(otherRef, ErrorHandlerBuilder.class);
                 if (answer == null) {
                     throw new IllegalArgumentException("ErrorHandlerBuilder with id " + otherRef + " not found in registry.");
@@ -182,7 +178,7 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
      * This is for instance used by the transacted policy to setup a TransactedErrorHandlerBuilder
      * in camel-spring.
      */
-    public static boolean isErrorHandlerBuilderConfigured(String ref) {
+    public static boolean isErrorHandlerFactoryConfigured(String ref) {
         return !DEFAULT_ERROR_HANDLER_BUILDER.equals(ref);
     }
 
@@ -191,7 +187,7 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
     }
 
     private ErrorHandlerBuilder createErrorHandler(RouteContext routeContext) {
-        ErrorHandlerBuilder handler = (ErrorHandlerBuilder)lookupErrorHandlerBuilder(routeContext, getRef());
+        ErrorHandlerBuilder handler = (ErrorHandlerBuilder) lookupErrorHandlerFactory(routeContext, getRef());
         ObjectHelper.notNull(handler, "error handler '" + ref + "'");
 
         // configure if the handler support transacted
diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java b/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
index 0f46713..bd951a8 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
@@ -38,11 +38,7 @@ public abstract class ErrorHandlerBuilderSupport implements ErrorHandlerBuilder
 
     public void addErrorHandlers(RouteContext routeContext, OnExceptionDefinition exception) {
         // only add if we not already have it
-        List<OnExceptionDefinition> list = onExceptions.get(routeContext);
-        if (list == null) {
-            list = new ArrayList<>();
-            onExceptions.put(routeContext, list);
-        }
+        List<OnExceptionDefinition> list = onExceptions.computeIfAbsent(routeContext, rc -> new ArrayList<>());
         if (!list.contains(exception)) {
             list.add(exception);
         }
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index f56465c..6df3b2a 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -426,7 +426,7 @@ public class DefaultRouteContext implements RouteContext {
 
     @Override
     public ErrorHandlerFactory getErrorHandlerFactory() {
-        return route.getErrorHandlerBuilder();
+        return route.getErrorHandlerFactory();
     }
 
     public void setShutdownRoute(ShutdownRoute shutdownRoute) {
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index 8c6cbbb..dcc96ac 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -66,7 +66,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     private ShutdownRoute shutdownRoute;
     private ShutdownRunningTask shutdownRunningTask;
     private String errorHandlerRef;
-    private ErrorHandlerFactory errorHandlerBuilder;
+    private ErrorHandlerFactory errorHandlerFactory;
     // keep state whether the error handler is context scoped or not
     // (will by default be context scoped of no explicit error handler configured)
     private boolean contextScopedErrorHandler = true;
@@ -375,7 +375,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
      * @return the current builder with the error handler configured
      */
     public RouteDefinition errorHandler(ErrorHandlerFactory errorHandlerBuilder) {
-        setErrorHandlerBuilder(errorHandlerBuilder);
+        setErrorHandlerFactory(errorHandlerBuilder);
         // we are now using a route scoped error handler
         contextScopedErrorHandler = false;
         return this;
@@ -831,7 +831,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         this.errorHandlerRef = errorHandlerRef;
         // we use an specific error handler ref (from Spring DSL) then wrap that
         // with a error handler build ref so Camel knows its not just the default one
-        setErrorHandlerBuilder(new ErrorHandlerBuilderRef(errorHandlerRef));
+        setErrorHandlerFactory(new ErrorHandlerBuilderRef(errorHandlerRef));
     }
 
     /**
@@ -844,9 +844,9 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Sets the error handler if one is not already set
      */
-    public void setErrorHandlerBuilderIfNull(ErrorHandlerFactory errorHandlerBuilder) {
-        if (this.errorHandlerBuilder == null) {
-            setErrorHandlerBuilder(errorHandlerBuilder);
+    public void setErrorHandlerFactoryIfNull(ErrorHandlerFactory errorHandlerFactory) {
+        if (this.errorHandlerFactory == null) {
+            setErrorHandlerFactory(errorHandlerFactory);
         }
     }
 
@@ -913,18 +913,18 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     }
 
     @XmlTransient
-    public ErrorHandlerFactory getErrorHandlerBuilder() {
-        if (errorHandlerBuilder == null) {
-            errorHandlerBuilder = createErrorHandlerBuilder();
+    public ErrorHandlerFactory getErrorHandlerFactory() {
+        if (errorHandlerFactory == null) {
+            errorHandlerFactory = createErrorHandlerBuilder();
         }
-        return errorHandlerBuilder;
+        return errorHandlerFactory;
     }
 
     /**
      * Sets the error handler to use with processors created by this builder
      */
-    public void setErrorHandlerBuilder(ErrorHandlerFactory errorHandlerBuilder) {
-        this.errorHandlerBuilder = errorHandlerBuilder;
+    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
+        this.errorHandlerFactory = errorHandlerFactory;
     }
 
     @XmlAttribute
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
index 62cc273..9b1c7d4 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
@@ -268,17 +268,6 @@ public final class RouteDefinitionHelper {
         }
     }
 
-    private static void initParentAndErrorHandlerBuilder(ProcessorDefinition parent) {
-        List<ProcessorDefinition<?>> children = parent.getOutputs();
-        for (ProcessorDefinition child : children) {
-            child.setParent(parent);
-            if (child.getOutputs() != null && !child.getOutputs().isEmpty()) {
-                // recursive the children
-                initParentAndErrorHandlerBuilder(child);
-            }
-        }
-    }
-
     public static void prepareRouteForInit(RouteDefinition route, List<ProcessorDefinition<?>> abstracts,
                                            List<ProcessorDefinition<?>> lower) {
         // filter the route into abstracts and lower
@@ -453,7 +442,7 @@ public final class RouteDefinitionHelper {
             if (builder != null) {
                 if (builder instanceof ErrorHandlerBuilder) {
                     builder = ((ErrorHandlerBuilder) builder).cloneBuilder();
-                    route.setErrorHandlerBuilderIfNull(builder);
+                    route.setErrorHandlerFactoryIfNull(builder);
                 } else {
                     throw new UnsupportedOperationException("The ErrorHandlerFactory must implement ErrorHandlerBuilder");
                 }
@@ -461,12 +450,12 @@ public final class RouteDefinitionHelper {
         }
 
         // init parent and error handler builder on the route
-        initParentAndErrorHandlerBuilder(route);
+        initParent(route);
 
         // set the parent and error handler builder on the global on exceptions
         if (onExceptions != null) {
             for (OnExceptionDefinition global : onExceptions) {
-                initParentAndErrorHandlerBuilder(global);
+                initParent(global);
             }
         }
     }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
index b857e54..2e8aac2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
@@ -271,7 +271,7 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
         RouteDefinition route = new RouteDefinition();
         ErrorHandlerFactory handler = getErrorHandlerFactory();
         if (handler != null) {
-            route.setErrorHandlerBuilderIfNull(handler);
+            route.setErrorHandlerFactoryIfNull(handler);
         }
         return route;
     }
diff --git a/core/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java b/core/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
index a34c74a..ad49c11 100644
--- a/core/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
+++ b/core/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
@@ -300,7 +300,7 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
 
             // it has not then its an indirection and we should do some work to lookup the real builder
             ref = builderRef.getRef();
-            ErrorHandlerFactory refBuilder = ErrorHandlerBuilderRef.lookupErrorHandlerBuilder(routeContext, builderRef.getRef(), false);
+            ErrorHandlerFactory refBuilder = ErrorHandlerBuilderRef.lookupErrorHandlerFactory(routeContext, builderRef.getRef(), false);
             if (refBuilder != null) {
                 builder = refBuilder;
             }
@@ -312,7 +312,7 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
                 builderRef = (ErrorHandlerBuilderRef) builder;
                 // does it refer to a non default error handler then do a 2nd lookup
                 if (!builderRef.getRef().equals(ErrorHandlerBuilderRef.DEFAULT_ERROR_HANDLER_BUILDER)) {
-                    refBuilder = ErrorHandlerBuilderRef.lookupErrorHandlerBuilder(routeContext, builderRef.getRef(), false);
+                    refBuilder = ErrorHandlerBuilderRef.lookupErrorHandlerFactory(routeContext, builderRef.getRef(), false);
                     if (refBuilder != null) {
                         ref = builderRef.getRef();
                         builder = refBuilder;


[camel] 08/08: Merge branch 'CAMEL-13371'

Posted by gn...@apache.org.
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 a291535d6d80c6c94d311ad522261bf51fc762e5
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue May 21 10:23:58 2019 +0200

    Merge branch 'CAMEL-13371'
    
    # Conflicts:
    #	components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
    #	core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
    #	core/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
    #	core/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
    #	core/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
    #	core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
    #	core/camel-core/src/main/java/org/apache/camel/reifier/StepReifier.java
---
 .../src/test/java/org/apache/camel/spring/EndpointReferenceTest.java  | 4 +++-
 core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
index eed26b8..117f0b0 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.spring;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.engine.DefaultRouteContext;
@@ -75,7 +76,8 @@ public class EndpointReferenceTest extends SpringTestSupport {
     public void testReferenceEndpointFromOtherCamelContext() throws Exception {
         CamelContext context = applicationContext.getBean("camel2", CamelContext.class);
         RouteDefinition route = new RouteDefinition("temporary");
-        RouteContext routeContext = new DefaultRouteContext(context, route, route.idOrCreate(context.getNodeIdFactory()));
+        String routeId = route.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        RouteContext routeContext = new DefaultRouteContext(context, route, routeId);
         try {
             routeContext.resolveEndpoint(null, "endpoint1");
             fail("Should have thrown exception");
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
index af12707..a921e33 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -301,7 +301,7 @@ public class DefaultModel implements Model {
         AbstractCamelContext mcc = camelContext.adapt(AbstractCamelContext.class);
         mcc.setStartingRoutes(true);
         try {
-            String id = routeDefinition.idOrCreate(camelContext.getNodeIdFactory());
+            String id = routeDefinition.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
             RouteContext routeContext = new DefaultRouteContext(camelContext, routeDefinition, id);
             Route route = new RouteReifier(routeDefinition).createRoute(camelContext, routeContext);
             RouteService routeService = new RouteService(route);


[camel] 02/08: [CAMEL-13371] Remove some usage of the RouteDefinition model

Posted by gn...@apache.org.
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 2b7c4d73dcfe06b6df65dca05aa346c0ae2a9124
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon May 20 14:35:55 2019 +0200

    [CAMEL-13371] Remove some usage of the RouteDefinition model
---
 .../java/org/apache/camel/spi/RouteContext.java    |  9 ++---
 .../java/org/apache/camel/spi/RoutePolicy.java     |  2 +-
 .../camel/impl/DefaultCamelBeanPostProcessor.java  |  2 ++
 .../java/org/apache/camel/impl/DefaultModel.java   | 12 +++++--
 .../org/apache/camel/impl/DefaultRouteContext.java | 20 ++---------
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |  5 ---
 .../DefaultExceptionPolicyStrategy.java            |  8 ++---
 .../org/apache/camel/reifier/RouteReifier.java     | 41 +++++++---------------
 8 files changed, 35 insertions(+), 64 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
index 415ecd7..ba8d9c6 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -40,13 +40,6 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
     String getRouteId();
 
     /**
-     * Gets the from type
-     *
-     * @return the from type
-     */
-    NamedNode getFrom();
-
-    /**
      * Get the route type
      *
      * @return the route type
@@ -163,6 +156,8 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
      */
     void setIsRouteAdded(boolean value);
 
+    void setEndpoint(Endpoint endpoint);
+
     /**
      * Returns the isRouteAdded flag
      * 
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java b/core/camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java
index 06a5196..6507298 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java
@@ -22,7 +22,7 @@ import org.apache.camel.Route;
 /**
  * Policy for a {@link Route} which allows controlling the route at runtime.
  * <p/>
- * For example using the {@link org.apache.camel.impl.ThrottlingInflightRoutePolicy} to throttle the {@link Route}
+ * For example using the {@link org.apache.camel.throttling.ThrottlingInflightRoutePolicy} to throttle the {@link Route}
  * at runtime where it suspends and resume the {@link org.apache.camel.Route#getConsumer()}.
  * <p/>
  * See also {@link Route} class javadoc about controlling the lifecycle of a {@link Route}
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
index dfc2c46..51a715e 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
@@ -170,12 +170,14 @@ public class DefaultCamelBeanPostProcessor implements CamelBeanPostProcessor {
 
                 EndpointInject endpointInject = field.getAnnotation(EndpointInject.class);
                 if (endpointInject != null && getPostProcessorHelper().matchContext(endpointInject.context())) {
+                    @SuppressWarnings("deprecation")
                     String uri = endpointInject.value().isEmpty() ? endpointInject.uri() : endpointInject.value();
                     injectField(field, uri, endpointInject.property(), bean, beanName);
                 }
 
                 Produce produce = field.getAnnotation(Produce.class);
                 if (produce != null && getPostProcessorHelper().matchContext(produce.context())) {
+                    @SuppressWarnings("deprecation")
                     String uri = produce.value().isEmpty() ? produce.uri() : produce.value();
                     injectField(field, uri, produce.property(), bean, beanName, produce.binding());
                 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
index a639d38..6da696f 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -46,6 +46,7 @@ import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
 import org.apache.camel.model.validator.ValidatorDefinition;
 import org.apache.camel.reifier.RouteReifier;
+import org.apache.camel.spi.RouteContext;
 
 public class DefaultModel implements Model {
 
@@ -274,6 +275,11 @@ public class DefaultModel implements Model {
     }
 
     public void startRoute(RouteDefinition routeDefinition) throws Exception {
+        prepare(routeDefinition);
+        start(routeDefinition);
+    }
+
+    protected void prepare(RouteDefinition routeDefinition) throws Exception {
         // assign ids to the routes and validate that the id's is all unique
         RouteDefinitionHelper.forceAssignIds(camelContext, routeDefinitions);
         String duplicate = RouteDefinitionHelper.validateUniqueIds(routeDefinition, routeDefinitions);
@@ -286,14 +292,16 @@ public class DefaultModel implements Model {
             RouteDefinitionHelper.prepareRoute(camelContext, routeDefinition);
             routeDefinition.markPrepared();
         }
+    }
 
+    protected void start(RouteDefinition routeDefinition) throws Exception {
         // indicate we are staring the route using this thread so
         // we are able to query this if needed
         AbstractCamelContext mcc = camelContext.adapt(AbstractCamelContext.class);
         mcc.setStartingRoutes(true);
         try {
-
-            Route route = new RouteReifier(routeDefinition).createRoute(mcc);
+            RouteContext routeContext = new DefaultRouteContext(camelContext, routeDefinition);
+            Route route = new RouteReifier(routeDefinition).createRoute(camelContext, routeContext);
             RouteService routeService = new RouteService(route);
             mcc.startRouteService(routeService, true);
         } finally {
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index 061adbe..f56465c 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -34,7 +34,6 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ShutdownRoute;
 import org.apache.camel.ShutdownRunningTask;
 import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
-import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.PropertyDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.CamelInternalProcessor;
@@ -58,7 +57,6 @@ public class DefaultRouteContext implements RouteContext {
     private final Map<NamedNode, AtomicInteger> nodeIndex = new HashMap<>();
     private final RouteDefinition route;
     private final String routeId;
-    private FromDefinition from;
     private Route runtimeRoute;
     private Endpoint endpoint;
     private final List<Processor> eventDrivenProcessors = new ArrayList<>();
@@ -80,10 +78,9 @@ public class DefaultRouteContext implements RouteContext {
     private RouteError routeError;
     private RouteController routeController;
 
-    public DefaultRouteContext(CamelContext camelContext, RouteDefinition route, FromDefinition from) {
+    public DefaultRouteContext(CamelContext camelContext, RouteDefinition route) {
         this.camelContext = camelContext;
         this.route = route;
-        this.from = from;
         this.routeId = route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
     }
 
@@ -95,11 +92,7 @@ public class DefaultRouteContext implements RouteContext {
         this.endpoint = endpoint;
     }
 
-    public FromDefinition getFrom() {
-        return from;
-    }
-
-    public RouteDefinition getRoute() {
+    public NamedNode getRoute() {
         return route;
     }
 
@@ -168,9 +161,6 @@ public class DefaultRouteContext implements RouteContext {
         if (!eventDrivenProcessors.isEmpty()) {
             Processor target = Pipeline.newInstance(getCamelContext(), eventDrivenProcessors);
 
-            // force creating the route id so its known ahead of the route is started
-            String routeId = route.idOrCreate(getCamelContext().adapt(ExtendedCamelContext.class).getNodeIdFactory());
-
             // and wrap it in a unit of work so the UoW is on the top, so the entire route will be in the same UoW
             CamelInternalProcessor internal = new CamelInternalProcessor(target);
             internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(this));
@@ -476,11 +466,7 @@ public class DefaultRouteContext implements RouteContext {
     }
     
     public int getAndIncrement(NamedNode node) {
-        AtomicInteger count = nodeIndex.get(node);
-        if (count == null) {
-            count = new AtomicInteger();
-            nodeIndex.put(node, count);
-        }
+        AtomicInteger count = nodeIndex.computeIfAbsent(node, n -> new AtomicInteger());
         return count.getAndIncrement();
     }
 
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/core/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index 332807b..a5ae873 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -36,7 +36,6 @@ import org.apache.camel.cluster.CamelClusterEventListener;
 import org.apache.camel.cluster.CamelClusterMember;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.cluster.CamelClusterView;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
 import org.apache.camel.support.EventNotifierSupport;
@@ -153,10 +152,6 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
     // life-cycle
     // ****************************************************
 
-    private RouteDefinition definition(Route route) {
-        return (RouteDefinition) route.getRouteContext().getRoute();
-    }
-
     private ServiceStatus getStatus(Route route) {
         if (camelContext != null) {
             ServiceStatus answer = camelContext.getRouteController().getRouteStatus(route.getId());
diff --git a/core/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java b/core/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
index e3d8830..948d05a 100644
--- a/core/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
+++ b/core/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
@@ -135,11 +135,11 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy {
             // if OnException is route scoped then the current route (Exchange) must match
             // so we will not pick an OnException from another route
             if (exchange != null && exchange.getUnitOfWork() != null && type.isRouteScoped()) {
-                RouteDefinition route = exchange.getUnitOfWork().getRouteContext() != null ? (RouteDefinition) exchange.getUnitOfWork().getRouteContext().getRoute() : null;
-                RouteDefinition typeRoute = ProcessorDefinitionHelper.getRoute(type);
-                if (route != null && typeRoute != null && route != typeRoute) {
+                String route = exchange.getUnitOfWork().getRouteContext() != null ? exchange.getUnitOfWork().getRouteContext().getRouteId() : null;
+                String typeRoute = ProcessorDefinitionHelper.getRouteId(type);
+                if (route != null && typeRoute != null && !route.equals(typeRoute)) {
                     if (LOG.isTraceEnabled()) {
-                        LOG.trace("The type is scoped for route: {} however Exchange is at route: {}", typeRoute.getId(), route.getId());
+                        LOG.trace("The type is scoped for route: {} however Exchange is at route: {}", typeRoute, route);
                     }
                     continue;
                 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 9932134..750d753 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -22,18 +22,14 @@ import java.util.StringTokenizer;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
-import org.apache.camel.StatefulService;
 import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.AdviceWithTask;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.DefaultRouteContext;
-import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.Model;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.ProcessorDefinition;
@@ -88,15 +84,9 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         throw new UnsupportedOperationException("Not implemented for RouteDefinition");
     }
 
-    public Route createRoute(CamelContext camelContext) throws Exception {
-        @SuppressWarnings("deprecation")
-        ErrorHandlerFactory handler = camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory();
-        if (handler != null) {
-            definition.setErrorHandlerBuilderIfNull(handler);
-        }
-
+    public Route createRoute(CamelContext camelContext, RouteContext routeContext) {
         try {
-            return createRoute(camelContext, definition.getInput());
+            return doCreateRoute(camelContext, routeContext);
         } catch (FailedToCreateRouteException e) {
             throw e;
         } catch (Exception e) {
@@ -192,20 +182,15 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         log.info("Adviced route before/after as XML:\n{}\n{}", beforeAsXml, afterAsXml);
 
         // If the camel context is started then we start the route
-        if (camelContext instanceof StatefulService) {
-            StatefulService service = (StatefulService) camelContext;
-            if (service.isStarted()) {
-                camelContext.getExtension(Model.class).addRouteDefinition(merged);
-            }
+        if (camelContext.isStarted()) {
+            camelContext.getExtension(Model.class).addRouteDefinition(merged);
         }
         return merged;
     }
 
     // Implementation methods
     // -------------------------------------------------------------------------
-    protected Route createRoute(CamelContext camelContext, FromDefinition fromType) throws Exception {
-        DefaultRouteContext routeContext = new DefaultRouteContext(camelContext, definition, fromType);
-
+    protected Route doCreateRoute(CamelContext camelContext, RouteContext routeContext) throws Exception {
         // configure tracing
         if (definition.getTrace() != null) {
             Boolean isTrace = CamelContextHelper.parseBoolean(camelContext, definition.getTrace());
@@ -324,12 +309,14 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         // should inherit the intercept strategies we have defined
         routeContext.setInterceptStrategies(definition.getInterceptStrategies());
+
         // resolve endpoint
-        Endpoint endpoint = routeContext.getFrom().getEndpoint();
+        Endpoint endpoint = definition.getInput().getEndpoint();
         if (endpoint == null) {
-            endpoint = routeContext.resolveEndpoint(routeContext.getFrom().getUri());
+            endpoint = routeContext.resolveEndpoint(definition.getInput().getUri());
         }
         routeContext.setEndpoint(endpoint);
+
         // notify route context created
         for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
             strategy.onRouteContextCreate(routeContext);
@@ -337,11 +324,10 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         // validate route has output processors
         if (!ProcessorDefinitionHelper.hasOutputs(definition.getOutputs(), true)) {
-            RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-            String at = fromType.toString();
-            Exception cause = new IllegalArgumentException("Route " + route.getId() + " has no output processors."
+            String at = definition.getInput().toString();
+            Exception cause = new IllegalArgumentException("Route " + definition.getId() + " has no output processors."
                     + " You need to add outputs to the route such as to(\"log:foo\").");
-            throw new FailedToCreateRouteException(route.getId(), route.toString(), at, cause);
+            throw new FailedToCreateRouteException(definition.getId(), definition.toString(), at, cause);
         }
 
         List<ProcessorDefinition<?>> list = new ArrayList<>(definition.getOutputs());
@@ -349,8 +335,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
             try {
                 ProcessorReifier.reifier(output).addRoutes(routeContext);
             } catch (Exception e) {
-                RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-                throw new FailedToCreateRouteException(route.getId(), route.toString(), output.toString(), e);
+                throw new FailedToCreateRouteException(definition.getId(), definition.toString(), output.toString(), e);
             }
         }