You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2020/03/04 08:57:45 UTC

[camel] branch master updated (b63ab02 -> 916d796)

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 b63ab02  camel-catalog for karaf needs to be refactored when moved to camel-karaf repo
     new 67ff8e3  Move RouteContext lookup methods to AbstractReifier
     new 56bac57  Remove remaining RouteContext / CamelContext parameters in reifiers methods
     new 4275688e Move ErrorHandler all reification to the reifiers
     new 028a6b8  [CAMEL-13440] Remove RouteContext
     new 67abe4f  Use ExchangeHelper.getRoute(Exchange) when possible
     new ed11c1c  A bit of cleaning
     new 463fcd1  Remove references to error handler and event driven processors once creation is finished
     new d79fe4b  Use AbstractReifier.createProcessor() when possible
     new 05f7baf  Restore compatibility
     new 8f1441e  Use NamedNode instead of RouteDefinition as in the RoutePolicy
     new 389442b  Use proper generics on Model
     new af3034e  Explicitely call the xml generation mojo
     new e86e736  Remove generated legal files
     new 937aaf7  Use @JdkService annotation to generate META-INF services files for FactoryFinder
     new fa5eaad  Use a single class instead of various resolvers
     new bd91ab6  Revert "Remove references to error handler and event driven processors once creation is finished"
     new 941e2ae  Use doAddService for newly created services
     new a8a5385  Remove warnings since we are testing a deprecated class
     new 611bc99  Camel-test: Added camel-core-languages as dep
     new bcd26a1  Fix services creation
     new 849256b  Camel-Main: Added camel-core-languages dep explicitly
     new 0f817b0  Camel-test-junit5: Added camel-core-languages as dep
     new 73502c0  Move DefaultModelJAXBContextFactory to camel-xml-jaxb
     new 4108b4e  Refactor tests to avoid the usage of deprecated JndiRegistry
     new 9b24690  Completely remove the deprecated JndiRegistry
     new 73b7290  Move default service creation to camel-base SimpleCamelContext, move model related methods to DefaultCamelContext
     new a58155e  CS: remove unused imports
     new 909bbce  Rename package org.apache.camel.impl.cluster to org.apache.camel.cluster
     new 382930d  DefaultCamelContext is not abstract
     new 1922858  Use @JdkService for CaffeineLRUCacheFactory
     new 8405dc8  Generate service file using @JdkService for DefaultRestRegistryFactory
     new 916d796  CAMEL-13440: Remove RouteContext and further cleanup

The 32 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:
 ...tomixClientClusteredRoutePolicyFactoryMain.java |   2 +-
 .../AtomixClientRoutePolicyFactoryTestSupport.java |   2 +-
 .../AtomixClientRoutePolicyTestSupport.java        |   2 +-
 .../cluster/AtomixRoutePolicyFactoryTest.java      |   2 +-
 .../atomix/cluster/AtomixRoutePolicyTest.java      |   2 +-
 .../org/apache/camel/bean-processor-factory        |   2 +
 .../services/org/apache/camel/bean-proxy-factory   |   2 +
 .../bean/DefaultBeanProcessorFactory.java          |   2 +
 .../component/bean/DefaultBeanProxyFactory.java    |   2 +
 .../org/apache/camel/bean-processor-factory        |  18 -
 .../services/org/apache/camel/bean-proxy-factory   |  18 -
 components/camel-blueprint/pom.xml                 |   4 +
 .../BlueprintModelJAXBContextFactory.java          |   2 +-
 .../JtaTransactionErrorHandlerBuilder.java         |  99 +---
 ...java => JtaTransactionErrorHandlerReifier.java} | 133 ++---
 .../cdi/transaction/JtaTransactionPolicy.java      |  34 +-
 .../ConsulClusteredRoutePolicyFactoryMain.java     |   2 +-
 .../ConsulClusteredRoutePolicyFactoryTest.java     |   2 +-
 .../cluster/ConsulClusteredRoutePolicyTest.java    |   2 +-
 .../component/controlbus/ControlBusProducer.java   |  18 +-
 .../camel/component/fhir/FhirConfigurationIT.java  |   2 +-
 .../camel/component/file/GenericFileEndpoint.java  |  11 +-
 .../google/calendar/CalendarConfigurationTest.java |   2 +-
 .../google/drive/DriveConfigurationTest.java       |   2 +-
 .../google/mail/GmailConfigurationTest.java        |   2 +-
 .../google/sheets/SheetsConfigurationTest.java     |   2 +-
 .../hystrix/processor/HystrixProcessorFactory.java |   6 +-
 .../hystrix/processor/HystrixReifier.java          |  75 ++-
 .../processor/HystrixHierarchicalConfigTest.java   |  16 +-
 .../SpringHystrixRouteHierarchicalConfigTest.java  |  10 +-
 .../infinispan/policy/InfinispanRoutePolicy.java   |   2 +-
 .../component/jcache/policy/JCachePolicy.java      |  10 +-
 .../JGroupsRaftClusteredRoutePolicyTest.java       |   2 +-
 .../component/jms/tx/AbstractTransactionTest.java  |   4 +-
 .../camel/component/netty/NettyRedeliveryTest.java |   2 +-
 .../camel/routepolicy/quartz/ScheduledJob.java     |   2 +-
 .../services/org/apache/camel/reactive-executor    |   2 +
 .../reactive/vertx/VertXReactiveExecutor.java      |   2 +
 .../services/org/apache/camel/reactive-executor    |  18 -
 .../resilience4j/ResilienceProcessorFactory.java   |   6 +-
 .../component/resilience4j/ResilienceReifier.java  |  37 +-
 .../org/apache/camel/rest-registry-factory         |   2 +
 .../component/rest/DefaultRestRegistryFactory.java |   2 +
 .../org/apache/camel/rest-registry-factory         |  19 -
 .../shiro/security/ShiroSecurityPolicy.java        |   8 +-
 .../SpringSecurityAuthorizationPolicy.java         |   6 +-
 .../spring/SpringModelJAXBContextFactory.java      |   2 +-
 .../camel/spring/spi/SpringTransactionPolicy.java  |  26 +-
 .../spring/spi/TransactionErrorHandlerBuilder.java |  66 ---
 .../spring/spi/TransactionErrorHandlerReifier.java |  23 +-
 .../camel/spring/CamelContextFactoryBeanTest.java  |   2 +-
 .../apache/camel/spring/EndpointReferenceTest.java |   6 +-
 .../spring/config/CamelContextFactoryBeanTest.java |   4 +-
 .../spring/config/DummyErrorHandlerBuilder.java    |  44 +-
 .../camel/spring/config/ErrorHandlerTest.java      |   4 +-
 components/camel-test-junit5/pom.xml               |   4 +
 .../apache/camel/test/junit4/CamelTestSupport.java |  71 +--
 .../java/org/apache/camel/zipkin/ZipkinTracer.java |  14 +-
 ...ngZooKeeperClusteredRouteConfigurationTest.java |   2 +-
 .../ZooKeeperClusteredRoutePolicyFactoryMain.java  |   2 +-
 .../ZooKeeperClusteredRoutePolicyFactoryTest.java  |   2 +-
 .../cluster/ZooKeeperClusteredRoutePolicyTest.java |   2 +-
 ...ingZooKeeperClusteredRouteConfigurationTest.xml |   2 +-
 .../apache/camel/spi/annotations/JdkService.java   |   2 +-
 .../src/main/java/org/apache/camel/Channel.java    |   6 +-
 .../java/org/apache/camel/ErrorHandlerFactory.java |  23 -
 .../org/apache/camel/ExtendedCamelContext.java     |   3 +-
 .../src/main/java/org/apache/camel/Route.java      | 162 +++++-
 .../org/apache/camel/RuntimeConfiguration.java     |   2 +-
 .../apache/camel/catalog/RuntimeCamelCatalog.java  |   5 +
 .../org/apache/camel/spi/BeanProcessorFactory.java |   5 +
 .../org/apache/camel/spi/BeanProxyFactory.java     |   5 +
 .../java/org/apache/camel/spi/FactoryFinder.java   |   2 +
 .../apache/camel/spi/FactoryFinderResolver.java    |   4 +-
 .../org/apache/camel/spi/HeadersMapFactory.java    |   7 +-
 .../org/apache/camel/spi/LifecycleStrategy.java    |  18 +-
 .../camel/spi/ManagementObjectNameStrategy.java    |   2 +-
 .../apache/camel/spi/ManagementObjectStrategy.java |   2 +-
 .../apache/camel/spi/ModelJAXBContextFactory.java  |   5 +
 .../org/apache/camel/spi/ModelToXMLDumper.java     |   5 +
 .../src/main/java/org/apache/camel/spi/Policy.java |   9 +-
 .../org/apache/camel/spi/ProcessorFactory.java     |   9 +-
 .../org/apache/camel/spi/PropertiesComponent.java  |   5 +
 .../org/apache/camel/spi/ReactiveExecutor.java     |   5 +
 .../org/apache/camel/spi/RestRegistryFactory.java  |   5 +
 .../java/org/apache/camel/spi/RouteContext.java    | 283 ----------
 .../main/java/org/apache/camel/spi/UnitOfWork.java |  22 +-
 .../camel/spi/XMLRoutesDefinitionLoader.java       |   5 +
 .../org/apache/camel/properties-component-factory  |   2 +
 .../component/properties/PropertiesComponent.java  |   5 +-
 .../camel/impl/engine/AbstractCamelContext.java    |  63 ++-
 .../impl/engine/BaseExecutorServiceManager.java    |   2 +-
 .../apache/camel/impl/engine/BaseRouteService.java |  17 +-
 .../camel/impl/engine/BaseServiceResolver.java     |  64 +++
 .../impl/engine/BeanProcessorFactoryResolver.java  |  72 ---
 .../impl/engine/BeanProxyFactoryResolver.java      |  72 ---
 .../impl/engine/CamelPostProcessorHelper.java      |   3 -
 .../engine/DefaultAsyncProcessorAwaitManager.java  |  11 +-
 .../impl/engine/DefaultFactoryFinderResolver.java  |   5 -
 .../impl/engine/DefaultInflightRepository.java     |  11 +-
 .../camel/impl/engine/DefaultProcessorFactory.java |  14 +-
 .../org/apache/camel/impl/engine/DefaultRoute.java | 490 ++++++++++++++++-
 .../camel/impl/engine/DefaultRouteContext.java     | 585 ---------------------
 .../camel/impl/engine/DefaultRouteError.java       |   4 +-
 .../engine/DefaultRuntimeEndpointRegistry.java     |  21 +-
 .../camel/impl/engine/DefaultShutdownStrategy.java |   8 +-
 .../impl/engine/DefaultTransformerRegistry.java    |   2 -
 .../camel/impl/engine/DefaultUnitOfWork.java       |  24 +-
 .../impl/engine/DefaultValidatorRegistry.java      |   4 -
 .../impl/engine/EventDrivenConsumerRoute.java      | 141 -----
 .../impl/engine/HeadersMapFactoryResolver.java     |  76 ---
 .../apache/camel/impl/engine/MDCUnitOfWork.java    |  17 +-
 .../engine/PropertiesComponentFactoryResolver.java |  72 ---
 .../impl/engine/ReactiveExecutorResolver.java      |  73 ---
 .../impl/engine/RestRegistryFactoryResolver.java   |  75 ---
 .../impl/engine/RuntimeCamelCatalogResolver.java   |  76 ---
 .../camel/impl/engine/SimpleCamelContext.java}     | 175 +++---
 .../impl/engine/SupervisingRouteController.java    |  23 +-
 .../camel/impl/engine/TypedProcessorFactory.java   |  14 +-
 .../apache/camel/impl/health/RouteHealthCheck.java |   6 +-
 .../camel/processor/CamelInternalProcessor.java    |  34 +-
 .../apache/camel/processor/MulticastProcessor.java |  49 +-
 .../camel/processor/RecipientListProcessor.java    |  32 +-
 .../org/apache/camel/processor/RoutingSlip.java    |  11 +-
 .../java/org/apache/camel/processor/Splitter.java  |   8 +-
 .../camel/processor/channel/DefaultChannel.java    |  40 +-
 .../DefaultExceptionPolicyStrategy.java            |   8 +-
 .../errorhandler/RedeliveryErrorHandler.java       |  18 +-
 .../org/apache/camel/properties-component-factory  |  18 -
 .../services/org/apache/camel/lru-cache-factory    |   2 +
 .../caffeine/lrucache/CaffeineLRUCacheFactory.java |   2 +
 .../services/org/apache/camel/lru-cache-factory    |  19 -
 .../impl/cloud/ServiceCallProcessorFactory.java    |   6 +-
 .../services/org/apache/camel/runtime-camelcatalog |   2 +
 .../catalog/impl/DefaultRuntimeCamelCatalog.java   |   2 +
 .../services/org/apache/camel/runtime-camelcatalog |  18 -
 .../camel/builder/AdviceWithRouteBuilder.java      |  25 +-
 .../camel/builder/DeadLetterChannelBuilder.java    |  31 --
 .../camel/builder/DefaultErrorHandlerBuilder.java  |  38 --
 .../camel/builder/ErrorHandlerBuilderRef.java      |  29 -
 .../camel/builder/ErrorHandlerBuilderSupport.java  | 103 +---
 .../camel/builder/NoErrorHandlerBuilder.java       |  30 --
 .../org/apache/camel/builder/NotifyBuilder.java    |   9 +-
 .../org/apache/camel/builder/ProxyBuilder.java     |   3 -
 .../cluster/ClusteredRouteConfiguration.java       |   2 +-
 .../cluster/ClusteredRouteController.java          |   3 +-
 .../{impl => }/cluster/ClusteredRouteFilter.java   |   6 +-
 .../{impl => }/cluster/ClusteredRouteFilters.java  |  12 +-
 .../{impl => }/cluster/ClusteredRoutePolicy.java   |   9 +-
 .../cluster/ClusteredRoutePolicyFactory.java       |   6 +-
 .../apache/camel/{impl => }/cluster/package.html   |   0
 .../camel/impl/AbstractModelCamelContext.java      | 334 ------------
 .../org/apache/camel/impl/DefaultCamelContext.java | 360 +++++--------
 .../java/org/apache/camel/impl/DefaultModel.java   |  15 +-
 .../java/org/apache/camel/impl/JndiRegistry.java   |  61 ---
 .../camel/impl/ModelToXMLDumperResolver.java       |  75 ---
 .../java/org/apache/camel/impl/RouteService.java   |  10 +-
 .../impl/XMLRoutesDefinitionLoaderResolver.java    |  76 ---
 .../main/java/org/apache/camel/model/Model.java    |   4 +-
 ...ctedReifier.java => AbstractPolicyReifier.java} |  64 +--
 .../org/apache/camel/reifier/AbstractReifier.java  |  67 ++-
 .../org/apache/camel/reifier/AggregateReifier.java |  24 +-
 .../java/org/apache/camel/reifier/BeanReifier.java |  11 +-
 .../org/apache/camel/reifier/CatchReifier.java     |  13 +-
 .../org/apache/camel/reifier/ChoiceReifier.java    |   7 +-
 .../camel/reifier/CircuitBreakerReifier.java       |   6 +-
 .../apache/camel/reifier/ClaimCheckReifier.java    |  12 +-
 .../apache/camel/reifier/ConvertBodyReifier.java   |   7 +-
 .../org/apache/camel/reifier/DelayReifier.java     |   6 +-
 .../apache/camel/reifier/DynamicRouterReifier.java |  12 +-
 .../org/apache/camel/reifier/EnrichReifier.java    |   8 +-
 .../apache/camel/reifier/ExpressionReifier.java    |   6 +-
 .../org/apache/camel/reifier/FilterReifier.java    |   6 +-
 .../org/apache/camel/reifier/FinallyReifier.java   |   6 +-
 .../camel/reifier/IdempotentConsumerReifier.java   |  13 +-
 .../apache/camel/reifier/InterceptFromReifier.java |   6 +-
 .../org/apache/camel/reifier/InterceptReifier.java |  10 +-
 .../reifier/InterceptSendToEndpointReifier.java    |  18 +-
 .../apache/camel/reifier/LoadBalanceReifier.java   |   8 +-
 .../java/org/apache/camel/reifier/LogReifier.java  |  21 +-
 .../java/org/apache/camel/reifier/LoopReifier.java |   6 +-
 .../org/apache/camel/reifier/MarshalReifier.java   |   6 +-
 .../org/apache/camel/reifier/MulticastReifier.java |  11 +-
 .../apache/camel/reifier/OnCompletionReifier.java  |  12 +-
 .../apache/camel/reifier/OnExceptionReifier.java   |  20 +-
 .../apache/camel/reifier/OnFallbackReifier.java    |   6 +-
 .../org/apache/camel/reifier/OtherwiseReifier.java |   6 +-
 .../org/apache/camel/reifier/PipelineReifier.java  |   6 +-
 .../org/apache/camel/reifier/PolicyReifier.java    |  22 +-
 .../apache/camel/reifier/PollEnrichReifier.java    |   8 +-
 .../org/apache/camel/reifier/ProcessReifier.java   |   8 +-
 .../org/apache/camel/reifier/ProcessorReifier.java | 112 ++--
 .../apache/camel/reifier/RecipientListReifier.java |  18 +-
 .../apache/camel/reifier/RemoveHeaderReifier.java  |   6 +-
 .../apache/camel/reifier/RemoveHeadersReifier.java |   6 +-
 .../camel/reifier/RemovePropertiesReifier.java     |   6 +-
 .../camel/reifier/RemovePropertyReifier.java       |   6 +-
 .../apache/camel/reifier/ResequenceReifier.java    |  23 +-
 .../org/apache/camel/reifier/RollbackReifier.java  |   6 +-
 .../org/apache/camel/reifier/RouteReifier.java     | 244 ++++++---
 .../apache/camel/reifier/RoutingSlipReifier.java   |  15 +-
 .../java/org/apache/camel/reifier/SagaReifier.java |  26 +-
 .../org/apache/camel/reifier/SamplingReifier.java  |   6 +-
 .../org/apache/camel/reifier/ScriptReifier.java    |   6 +-
 .../java/org/apache/camel/reifier/SendReifier.java |  15 +-
 .../apache/camel/reifier/ServiceCallReifier.java   |   6 +-
 .../org/apache/camel/reifier/SetBodyReifier.java   |   6 +-
 .../camel/reifier/SetExchangePatternReifier.java   |   6 +-
 .../org/apache/camel/reifier/SetHeaderReifier.java |   6 +-
 .../apache/camel/reifier/SetPropertyReifier.java   |   6 +-
 .../java/org/apache/camel/reifier/SortReifier.java |   8 +-
 .../org/apache/camel/reifier/SplitReifier.java     |  11 +-
 .../java/org/apache/camel/reifier/StepReifier.java |   8 +-
 .../java/org/apache/camel/reifier/StopReifier.java |   6 +-
 .../org/apache/camel/reifier/ThreadsReifier.java   |  10 +-
 .../org/apache/camel/reifier/ThrottleReifier.java  |   6 +-
 .../camel/reifier/ThrowExceptionReifier.java       |   9 +-
 .../org/apache/camel/reifier/ToDynamicReifier.java |  10 +-
 .../apache/camel/reifier/TransactedReifier.java    | 124 +----
 .../org/apache/camel/reifier/TransformReifier.java |   6 +-
 .../java/org/apache/camel/reifier/TryReifier.java  |   6 +-
 .../org/apache/camel/reifier/UnmarshalReifier.java |   6 +-
 .../org/apache/camel/reifier/ValidateReifier.java  |   6 +-
 .../java/org/apache/camel/reifier/WhenReifier.java |   6 +-
 .../reifier/WhenSkipSendToEndpointReifier.java     |   6 +-
 .../org/apache/camel/reifier/WireTapReifier.java   |  19 +-
 .../reifier/dataformat/DataFormatReifier.java      |  33 +-
 .../errorhandler/DeadLetterChannelReifier.java     |   8 +-
 .../errorhandler/DefaultErrorHandlerReifier.java   |  10 +-
 .../errorhandler/ErrorHandlerRefReifier.java       |  18 +-
 .../reifier/errorhandler/ErrorHandlerReifier.java  | 125 +++--
 .../errorhandler/NoErrorHandlerReifier.java        |   6 +-
 .../loadbalancer/CustomLoadBalancerReifier.java    |   9 +-
 .../loadbalancer/FailoverLoadBalancerReifier.java  |   6 +-
 .../reifier/loadbalancer/LoadBalancerReifier.java  |  16 +-
 .../loadbalancer/RandomLoadBalancerReifier.java    |   6 +-
 .../RoundRobinLoadBalancerReifier.java             |   6 +-
 .../loadbalancer/StickyLoadBalancerReifier.java    |   6 +-
 .../loadbalancer/TopicLoadBalancerReifier.java     |   6 +-
 .../loadbalancer/WeightedLoadBalancerReifier.java  |   6 +-
 .../camel/reifier/rest/RestBindingReifier.java     |  10 +-
 .../transformer/CustomTransformeReifier.java       |   2 +-
 .../transformer/EndpointTransformeReifier.java     |   2 +-
 .../reifier/validator/CustomValidatorReifier.java  |   2 +-
 .../validator/EndpointValidatorReifier.java        |   2 +-
 .../camel/core/osgi/OsgiFactoryFinderResolver.java |   5 -
 .../java/org/apache/camel/ContextTestSupport.java  |   7 +-
 .../camel/builder/ContextErrorHandlerTest.java     |   6 +-
 .../org/apache/camel/builder/ErrorHandlerTest.java |  10 +-
 .../camel/builder/NotifyBuilderFromRouteTest.java  |   6 +-
 .../org/apache/camel/builder/RouteBuilderTest.java |  22 +-
 .../camel/builder/ThreadPoolBuilderTest.java       |   6 +-
 .../cluster/ClusterServiceSelectorTest.java        |   5 +-
 .../{impl => }/cluster/ClusterServiceViewTest.java |   5 +-
 ...seMethodWithMatchingTypeAndSkipSettersTest.java |   6 +-
 .../bean/BeanComponentMissingParenthesisTest.java  |   6 +-
 .../camel/component/bean/BeanConcurrentTest.java   |   6 +-
 .../camel/component/bean/BeanEndpointTest.java     |   6 +-
 .../BeanExchangeAsReturnTypeNotAllowedTest.java    |  10 +-
 .../bean/BeanExplicitMethodAmbiguousTest.java      |   6 +-
 .../component/bean/BeanExplicitMethodTest.java     |   6 +-
 .../bean/BeanExpressionConcurrentTest.java         |   6 +-
 .../component/bean/BeanImplicitMethodTest.java     |  10 +-
 .../camel/component/bean/BeanInPipelineTest.java   |   8 +-
 .../component/bean/BeanInfoSelectMethodTest.java   |   6 +-
 .../component/bean/BeanInvokeWithNullBodyTest.java |   6 +-
 .../camel/component/bean/BeanLifecycleTest.java    |   6 +-
 .../bean/BeanLookupUsingJndiRegistryIssueTest.java |   4 +-
 .../camel/component/bean/BeanMapPutTest.java       |   6 +-
 .../bean/BeanMethodValueWithCommaTest.java         |   6 +-
 .../bean/BeanMethodValueWithExchangeTest.java      |   6 +-
 ...rameterAndNoMethodWithNoParameterIssueTest.java |   6 +-
 .../bean/BeanMethodWithStringParameterTest.java    |   6 +-
 .../component/bean/BeanOgnlPerformanceTest.java    |   6 +-
 .../bean/BeanParameterInvalidSyntaxTest.java       |   6 +-
 .../bean/BeanParameterInvalidValueTest.java        |   6 +-
 .../BeanParameterMethodCallThreeBodyOgnlTest.java  |   6 +-
 .../bean/BeanParameterNoBeanBindingTest.java       |   6 +-
 .../bean/BeanParameterThreeBodyOgnlTest.java       |   6 +-
 .../component/bean/BeanParameterValueOgnlTest.java |   6 +-
 .../bean/BeanParameterValueOverloadedTest.java     |   6 +-
 .../component/bean/BeanParameterValueTest.java     |   6 +-
 .../camel/component/bean/BeanPipelineTest.java     |   8 +-
 .../component/bean/BeanPropagateHeaderTest.java    |   6 +-
 .../component/bean/BeanRefMethodNotFoundTest.java  |   6 +-
 .../camel/component/bean/BeanRefNotFoundTest.java  |   6 +-
 .../camel/component/bean/BeanRegistryBeanTest.java |   6 +-
 .../bean/BeanReturnCallableReturnNullTest.java     |  10 +-
 .../component/bean/BeanReturnCallableTest.java     |  10 +-
 .../bean/BeanWithAnnotationAndExchangeTest.java    |  10 +-
 .../bean/BeanWithAnnotationInheritedTest.java      |   9 +-
 .../BeanWithExchangeExceptionAnnotationTest.java   |  10 +-
 .../BeanWithExpressionInjectionPredicateTest.java  |   8 +-
 .../bean/BeanWithExpressionInjectionTest.java      |   9 +-
 .../camel/component/bean/BeanWithHeaderTest.java   |  10 +-
 .../bean/BeanWithHeadersAndBodyInject2Test.java    |   8 +-
 .../bean/BeanWithHeadersAndBodyInject3Test.java    |   8 +-
 .../bean/BeanWithHeadersAndBodyInjectionTest.java  |   8 +-
 .../bean/BeanWithInputStreamBodyTest.java          |   6 +-
 .../component/bean/BeanWithMethodHeaderTest.java   |   8 +-
 ...thPropertiesAndHeadersAndBodyInjectionTest.java |   8 +-
 .../BeanWithPropertiesAndHeadersInjectionTest.java |   8 +-
 ...BeanWithXPathInjectionUsingHeaderValueTest.java |   8 +-
 .../BeanWithXPathInjectionUsingResultTypeTest.java |   9 +-
 .../BodyAnnotationToDisambiguateMethodsTest.java   |   8 +-
 ...entWithPropertiesLookupSetFromEndpointTest.java |   6 +-
 .../bean/CustomParameterMappingStrategyTest.java   |   6 +-
 .../bean/DefaultParameterMappingStrategyTest.java  |   5 +-
 ...ressionAnnotationToDisambiguateMethodsTest.java |   8 +-
 .../bean/FileBeanParameterBindingTest.java         |   6 +-
 .../bean/MethodCallBeanRefMethodNotFoundTest.java  |   6 +-
 .../bean/MethodCallBeanRefNotFoundTest.java        |   6 +-
 .../bean/MethodCallRefOrBeanPrefixTest.java        |   6 +-
 .../camel/component/bean/MyCurrencyBeanTest.java   |   6 +-
 .../camel/component/bean/NewInstanceTest.java      |   9 +-
 .../camel/component/bean/PredicateAsBeanTest.java  |   8 +-
 ...nguageBeanFunctionMethodValueWithCommaTest.java |   6 +-
 ...BeanFunctionMethodValueWithParenthesisTest.java |   6 +-
 .../bean/issues/BeanRouteToDerivedClassTest.java   |   6 +-
 .../issues/BeanVsProcessorPerformanceTest.java     |   6 +-
 .../bean/issues/FilterBeanRegistryTest.java        |   6 +-
 .../camel/component/dataset/BigDataSetTest.java    |  11 +-
 .../camel/component/dataset/CustomDataSetTest.java |  11 +-
 .../component/dataset/DataSetConsumerTest.java     |  11 +-
 .../component/dataset/DataSetPreloadTest.java      |  11 +-
 .../component/dataset/DataSetProducerTest.java     |  11 +-
 .../camel/component/dataset/DataSetSedaTest.java   |  11 +-
 .../camel/component/dataset/DataSetTest.java       |  11 +-
 .../component/dataset/FileDataSetConsumerTest.java |  11 +-
 .../dataset/FileDataSetConsumerWithSplitTest.java  |  11 +-
 .../component/dataset/FileDataSetProducerTest.java |  11 +-
 .../dataset/FileDataSetProducerWithSplitTest.java  |  11 +-
 .../component/dataset/ListDataSetConsumerTest.java |  11 +-
 .../component/dataset/ListDataSetProducerTest.java |  11 +-
 .../component/dataset/RoutePerformanceTest.java    |  11 +-
 .../directvm/DirectVmHeaderFilterStrategyTest.java |   3 +-
 .../file/AntPathMatcherGenericFileFilterTest.java  |   6 +-
 .../camel/component/file/BeanToFileTest.java       |   8 +-
 .../file/FileBeginFailureOneTimeTest.java          |   6 +-
 ...ileConsumerBridgeRouteExceptionHandlerTest.java |   6 +-
 .../FileConsumerCustomExceptionHandlerTest.java    |   6 +-
 .../file/FileConsumerCustomSchedulerTest.java      |   6 +-
 .../file/FileConsumerDirectoryFilterTest.java      |   6 +-
 .../file/FileConsumerFileExpressionTest.java       |   6 +-
 ...leConsumerFileExpressionThrowExceptionTest.java |   6 +-
 .../component/file/FileConsumerFileFilterTest.java |   6 +-
 .../file/FileConsumerIdempotentRefTest.java        |   6 +-
 .../file/FileConsumerMoveExpressionTest.java       |   6 +-
 .../file/FileConsumerPollStrategyNotBeginTest.java |   6 +-
 ...FileConsumerPollStrategyPolledMessagesTest.java |   6 +-
 ...umerPollStrategyRollbackThrowExceptionTest.java |   6 +-
 ...FileConsumerPollStrategyStopOnRollbackTest.java |   6 +-
 .../file/FileConsumerPollStrategyTest.java         |   6 +-
 ...rFileRecursiveFilterDeleteOldLockFilesTest.java |   6 +-
 .../component/file/FileProducerExpressionTest.java |   6 +-
 .../file/FileProducerMoveExistingStrategyTest.java |   6 +-
 .../camel/component/file/FileSorterRefTest.java    |   6 +-
 .../file/FilerProducerDoneFileNameRouteTest.java   |   6 +-
 .../file/FilerProducerDoneFileNameTest.java        |   6 +-
 .../camel/component/file/ToFileRouteTest.java      |   6 +-
 .../FileLockClusteredRoutePolicyFactoryTest.java   |   2 +-
 .../cluster/FileLockClusteredRoutePolicyTest.java  |   2 +-
 .../FileIdempotentReadLockDelayedAsyncTest.java    |   6 +-
 .../FileIdempotentReadLockDelayedTest.java         |   6 +-
 .../file/strategy/FileIdempotentReadLockTest.java  |   6 +-
 .../language/LanguageScriptRouteTest.java          |   6 +-
 .../camel/component/log/LogListenerTest.java       |   5 +-
 .../apache/camel/component/log/LogMaskTest.java    |   8 +-
 .../camel/component/mock/MockAsBeanTest.java       |   6 +-
 .../camel/component/mock/MockEndpointTest.java     |   6 +-
 .../PropertiesComponentOnExceptionTest.java        |   6 +-
 ...rtiesComponentSomethingElseBoundToJndiTest.java |   6 +-
 .../camel/component/rest/FromRestApiTest.java      |   6 +-
 .../component/rest/FromRestConfigurationTest.java  |   6 +-
 .../component/rest/FromRestDefaultValueTest.java   |   6 +-
 .../component/rest/FromRestDuplicateTest.java      |   6 +-
 .../component/rest/FromRestGetContentTypeTest.java |   6 +-
 .../rest/FromRestGetCorsAllowCredentialsTest.java  |   6 +-
 .../component/rest/FromRestGetCorsCustomTest.java  |   6 +-
 .../camel/component/rest/FromRestGetCorsTest.java  |   6 +-
 .../rest/FromRestGetEmbeddedRouteTest.java         |   6 +-
 .../rest/FromRestGetHttpErrorCodeTest.java         |   6 +-
 .../component/rest/FromRestGetInterceptTest.java   |   6 +-
 .../component/rest/FromRestGetOnExceptionTest.java |   6 +-
 .../rest/FromRestGetPlaceholderParamTest.java      |  11 +-
 .../component/rest/FromRestGetPolicyTest.java      |  12 +-
 .../camel/component/rest/FromRestGetTest.java      |   6 +-
 .../rest/RestComponentVerifierExtensionTest.java   |   6 +-
 .../component/rest/RestComponentVerifierTest.java  |   6 +-
 .../component/scheduler/SchedulerRouteTest.java    |   8 +-
 .../seda/SedaConcurrentConsumersTest.java          |   6 +-
 .../seda/SedaDefaultBlockWhenFullTest.java         |   6 +-
 .../component/timer/TimerGracefulShutdownTest.java |   6 +-
 .../timer/TimerReferenceConfigurationTest.java     |   6 +-
 .../camel/component/timer/TimerRouteTest.java      |   8 +-
 .../validator/CustomSchemaFactoryFeatureTest.java  |   6 +-
 .../component/validator/ValidatorBeanCallTest.java |   6 +-
 .../ValidatorResourceResolverFactoryTest.java      |  20 +-
 .../apache/camel/component/vm/VMSplitterTest.java  |   6 +-
 .../xslt/XsltCustomizeEntityResolverTest.java      |   6 +-
 .../xslt/XsltCustomizeURIResolverTest.java         |   6 +-
 .../apache/camel/component/xslt/XsltRouteTest.java |   6 +-
 .../component/xslt/XsltUriResolverFactoryTest.java |  19 +-
 .../camel/impl/BeanInjectRouteBuilderTest.java     |   9 +-
 .../CamelContextAddRestDefinitionsFromXmlTest.java |  11 +-
 .../camel/impl/DataFormatContextAwareTest.java     |   9 +-
 .../DefaultComponentReferencePropertiesTest.java   |   9 +-
 .../apache/camel/impl/DefaultComponentTest.java    |  19 +-
 .../apache/camel/impl/DummyLifecycleStrategy.java  |  17 +-
 .../apache/camel/impl/GetRegistryAsTypeTest.java   |   5 +-
 .../org/apache/camel/impl/JndiRegistryTest.java    |  80 ---
 .../camel/impl/LanguageCamelContextAwareTest.java  |   9 +-
 .../impl/LifecycleStrategyFailOnStartupTest.java   |   3 +-
 .../camel/impl/LifecycleStrategyServiceTest.java   |   3 +-
 .../camel/impl/LogDebugBodyMaxCharsOffTest.java    |   9 +-
 .../camel/impl/LogDebugBodyMaxCharsTest.java       |   9 +-
 .../apache/camel/impl/LogDebugBodyStreamsTest.java |   9 +-
 .../camel/impl/MultipleLifecycleStrategyTest.java  |   3 +-
 .../org/apache/camel/impl/RefDataFormatTest.java   |   9 +-
 .../camel/impl/RouteIdRestDefinitionTest.java      |  11 +-
 .../RoutePolicyAutoStartupCancelledOnInitTest.java |   2 +-
 .../camel/impl/RoutePolicyRefCallbackTest.java     |   9 +-
 .../StartupListenerComponentFromRegistryTest.java  |   5 +-
 .../impl/engine/CamelPostProcessorHelperTest.java  |   7 +-
 .../camel/impl/model/RouteIdFactoryTest.java       |   6 +-
 .../validator/BeanValidatorInputValidateTest.java  |   6 +-
 .../validator/BeanValidatorOutputValidateTest.java |   6 +-
 .../apache/camel/issues/AdviceWithPolicyTest.java  |   6 +-
 .../camel/issues/AdviceWithTransactedTest.java     |   6 +-
 ...tScopedOnExceptionErrorHandlerRefIssueTest.java |   6 +-
 ...ExceptionErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 ...xceptionNotHandledErrorHandlerRefIssueTest.java |   6 +-
 ...otHandledErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 ...HandledRouteScopedErrorHandlerRefIssueTest.java |   6 +-
 ...uteScopedErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 ...ceptionRouteScopedErrorHandlerRefIssueTest.java |   6 +-
 ...uteScopedErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 .../OnExceptionErrorHandlerRefIssueTest.java       |   6 +-
 ...ExceptionErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 ...xceptionNotHandledErrorHandlerRefIssueTest.java |   6 +-
 ...otHandledErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 ...HandledRouteScopedErrorHandlerRefIssueTest.java |   6 +-
 ...uteScopedErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 ...ceptionRouteScopedErrorHandlerRefIssueTest.java |   6 +-
 ...uteScopedErrorHandlerRefIssueTwoRoutesTest.java |   6 +-
 .../camel/issues/OnExceptionWithTwoBeansTest.java  |   7 +-
 ...etryRouteScopedUntilRecipientListIssueTest.java |   6 +-
 .../camel/issues/SedaFileIdempotentIssueTest.java  |   6 +-
 .../camel/issues/SetHeaderInDoCatchIssueTest.java  |   7 +-
 ...terUsingBeanReturningCloseableIteratorTest.java |   6 +-
 .../SplitterUsingBeanReturningMessageTest.java     |   6 +-
 .../TransactedPropertyPlaceholderIssueTest.java    |   6 +-
 .../camel/issues/TryCatchWithSplitIssueTest.java   |   6 +-
 .../language/BeanAnnotationParameterTest.java      |   6 +-
 .../language/BeanAnnotationParameterTwoTest.java   |   6 +-
 ...LWithDotInParameterPropertyPlaceholderTest.java |   6 +-
 .../BeanLanguageOGNLWithDotInParameterTest.java    |   6 +-
 .../java/org/apache/camel/language/BeanTest.java   |  13 +-
 .../apache/camel/language/FileLanguageTest.java    |   6 +-
 .../apache/camel/language/LanguageServiceTest.java |   6 +-
 .../apache/camel/language/RefPredicateTest.java    |   6 +-
 .../java/org/apache/camel/language/RefTest.java    |   6 +-
 .../camel/language/simple/SimpleOperatorTest.java  |   6 +-
 .../language/simple/SimpleParserPredicateTest.java |   6 +-
 .../apache/camel/language/simple/SimpleTest.java   |   6 +-
 .../apache/camel/model/LoadRestFromXmlTest.java    |   6 +-
 .../model/LoadRouteFromXmlWithOnExceptionTest.java |   6 +-
 .../model/LoadRouteFromXmlWithPolicyTest.java      |  12 +-
 .../org/apache/camel/model/XmlTestSupport.java     |   2 +-
 .../camel/processor/BeanCachedProcessorTest.java   |  15 +-
 .../org/apache/camel/processor/BeanCachedTest.java |  15 +-
 .../BeanOgnMethodWithXPathInjectionTest.java       |   8 +-
 .../BeanRecipientListInterfaceAnnotationTest.java  |  10 +-
 .../camel/processor/BeanRecipientListTest.java     |   8 +-
 .../processor/BeanRecipientListTimeoutTest.java    |   8 +-
 .../org/apache/camel/processor/BeanRouteTest.java  |   8 +-
 .../apache/camel/processor/BeanSingletonTest.java  |  16 +-
 .../camel/processor/BeanWithExceptionTest.java     |   8 +-
 .../processor/BeanWithXPathInjectionTest.java      |   9 +-
 .../CBRPredicateBeanThrowExceptionTest.java        |   6 +-
 .../org/apache/camel/processor/ClaimCheckTest.java |   6 +-
 .../processor/ComposedMessageProcessorTest.java    |   6 +-
 .../CustomConsumerExceptionHandlerTest.java        |   6 +-
 .../processor/CustomProcessorFactoryTest.java      |   6 +-
 .../camel/processor/CustomRefLoadBalanceTest.java  |   6 +-
 .../processor/DataFormatServiceCustomRefTest.java  |   6 +-
 .../DeadLetterChannelAlwaysHandledTest.java        |   6 +-
 .../DeadLetterChannelRestartFromBeginningTest.java |   6 +-
 .../camel/processor/DefaultErrorHandlerTest.java   |   4 +-
 .../DefinitionPolicyPerProcessorTest.java          |  12 +-
 .../org/apache/camel/processor/DetourTest.java     |   6 +-
 .../processor/ErrorHandlerWrappedEachNodeTest.java |   6 +-
 .../apache/camel/processor/LogEipListenerTest.java |   6 +-
 .../org/apache/camel/processor/LogEipMaskTest.java |   8 +-
 .../apache/camel/processor/MethodFilterTest.java   |  11 +-
 .../org/apache/camel/processor/NormalizerTest.java |   8 +-
 .../camel/processor/PolicyPerProcessorTest.java    |  12 +-
 .../apache/camel/processor/PolicyPerRouteTest.java |  12 +-
 .../processor/RecipientListBeanOnPrepareTest.java  |   6 +-
 .../camel/processor/RecipientListBeanTest.java     |   6 +-
 ...pientListContextScopedOnExceptionIssueTest.java |   4 +-
 .../RecipientListFineGrainedErrorHandlingTest.java |   6 +-
 ...ntListParallelFineGrainedErrorHandlingTest.java |   6 +-
 .../processor/RecipientListReturnValueTest.java    |   6 +-
 .../apache/camel/processor/ResequencerTest.java    |   4 +-
 .../camel/processor/RoutePoliciesRefTest.java      |   6 +-
 ...utingSlipContextScopedOnExceptionIssueTest.java |   4 +-
 .../camel/processor/SimpleMockTwoRoutesTest.java   |   6 +-
 .../org/apache/camel/processor/SimulatorTest.java  |   8 +-
 .../camel/processor/SplitAggregateInOutTest.java   |   6 +-
 .../processor/SplitRefCustomExpressionTest.java    |   6 +-
 .../camel/processor/SplitterMethodCallTest.java    |   6 +-
 .../apache/camel/processor/SplitterPojoTest.java   |   6 +-
 .../camel/processor/StreamResequencerTest.java     |   4 +-
 .../camel/processor/ThrottlerMethodCallTest.java   |   6 +-
 .../TryCatchCaughtExceptionFinallyTest.java        |   6 +-
 .../processor/TryCatchCaughtExceptionTest.java     |   6 +-
 .../TryCatchCaughtExceptionTwoTimesTest.java       |   6 +-
 .../processor/TryFinallyCaughtExceptionTest.java   |   6 +-
 .../processor/WireTapBeanAsProcessorTest.java      |   6 +-
 .../camel/processor/WireTapOnPrepareRefTest.java   |   6 +-
 .../camel/processor/WireTapShutdownBeanTest.java   |   6 +-
 .../camel/processor/WireTapShutdownRouteTest.java  |   6 +-
 .../camel/processor/WireTapVoidBeanTest.java       |   6 +-
 .../AggregateForceCompletionOnStopTest.java        |   6 +-
 ...gationStrategyBeanAdapterRefMethodNameTest.java |   6 +-
 .../AggregationStrategyBeanAdapterRefTest.java     |   6 +-
 .../processor/async/AsyncEndpointPolicyTest.java   |  12 +-
 .../async/AsyncEndpointRecipientListBean3Test.java |   6 +-
 .../async/AsyncEndpointRecipientListBean4Test.java |   6 +-
 .../async/AsyncEndpointRecipientListBeanTest.java  |   6 +-
 ...tRecipientListFineGrainedErrorHandlingTest.java |   6 +-
 .../async/AsyncEndpointRoutingSlipBean2Test.java   |   6 +-
 .../async/AsyncEndpointRoutingSlipBean3Test.java   |   6 +-
 ...syncEndpointRoutingSlipBeanNonBlockingTest.java |   6 +-
 .../async/AsyncEndpointRoutingSlipBeanTest.java    |   6 +-
 ...sorAwaitManagerInterruptWithRedeliveryTest.java |  13 +-
 .../camel/processor/enricher/EnricherRefTest.java  |   6 +-
 .../enricher/PollEnrichBridgeErrorHandlerTest.java |   6 +-
 .../processor/enricher/PollEnricherRefTest.java    |   6 +-
 .../errorhandler/ErrorHandlerSupportTest.java      |  19 +-
 .../DefaultExceptionPolicyStrategyTest.java        |  11 +-
 ...xtScopedOnExceptionCorrectRouteContextTest.java |   4 +-
 ...efaultErrorHandlerExchangeFormatterRefTest.java |   6 +-
 ...rorHandlerOnExceptionOccurredProcessorTest.java |   6 +-
 .../DefaultErrorHandlerRetryWhileTest.java         |   6 +-
 .../onexception/OnExceptionComplexRouteTest.java   |   6 +-
 .../onexception/OnExceptionFromChoiceTest.java     |   6 +-
 .../OnExceptionFromChoiceUseOriginalBodyTest.java  |   6 +-
 ...nExceptionOccurredProcessorOnExceptionTest.java |   6 +-
 .../OnExceptionOccurredProcessorTest.java          |   6 +-
 .../onexception/OnExceptionRetryUntilTest.java     |   6 +-
 ...ptionRetryUntilWithDefaultErrorHandlerTest.java |   6 +-
 .../onexception/OnExceptionRouteTest.java          |   6 +-
 ...nExceptionRouteWithDefaultErrorHandlerTest.java |   6 +-
 .../RoutingSlipDataModificationTest.java           |   8 +-
 .../routingslip/RoutingSlipWithExceptionTest.java  |   8 +-
 .../camel/reifier/DataFormatReifierTest.java       |   8 +-
 .../apache/camel/reifier/ProcessorReifierTest.java |   6 +-
 ...ndiCamelSingletonInitialContextFactoryTest.java |  11 +-
 .../apache/camel/util/CamelContextHelperTest.java  |   6 +-
 .../util/DumpModelAsXmlDanishCharactersTest.java   |   6 +-
 .../util/DumpModelAsXmlRouteExpressionTest.java    |   6 +-
 .../util/DumpModelAsXmlRoutePredicateTest.java     |   6 +-
 .../services/org/apache/camel/headers-map-factory  |   2 +
 .../headersmap/FastHeadersMapFactory.java          |   2 +
 .../services/org/apache/camel/headers-map-factory  |  18 -
 .../DefaultManagementObjectNameStrategy.java       |  15 +-
 .../DefaultManagementObjectStrategy.java           |  67 ++-
 .../management/JmxManagementLifecycleStrategy.java |  53 +-
 .../management/mbean/ManagedErrorHandler.java      |  16 +-
 .../camel/management/mbean/ManagedRoute.java       |  14 +-
 .../management/ManagedCustomLoadBalancerTest.java  |  10 +-
 .../camel/management/ManagedCustomPolicyTest.java  |   6 +-
 .../camel/management/ManagedProcessTest.java       |  10 +-
 .../apache/camel/support/CamelContextHelper.java   |  35 +-
 .../org/apache/camel/support/ExchangeHelper.java   |  25 +-
 .../org/apache/camel/support/LRUCacheFactory.java  |   7 +-
 .../camel/support/LifecycleStrategySupport.java    |  17 +-
 .../org/apache/camel/support/MessageHelper.java    |  11 +-
 .../camel/support/builder/ExpressionBuilder.java   |  13 +-
 core/camel-xml-io/pom.xml                          |  12 +-
 .../services/org/apache/camel/xmlroutes-loader     |   2 +
 .../in/ModelParserXMLRoutesDefinitionLoader.java   |   2 +
 .../services/org/apache/camel/xmlroutes-loader     |  18 -
 .../org/apache/camel/model-jaxbcontext-factory     |   2 +
 .../services/org/apache/camel/modelxml-dumper      |   2 +
 .../services/org/apache/camel/xmlroutes-loader     |   2 +
 .../xml/jaxb}/DefaultModelJAXBContextFactory.java  |   4 +-
 .../camel/xml/jaxb/JaxbModelToXMLDumper.java       |   2 +
 .../xml/jaxb/JaxbXMLRoutesDefinitionLoader.java    |   2 +
 .../src/main/resources/META-INF/LICENSE.txt        | 203 -------
 .../src/main/resources/META-INF/NOTICE.txt         |  15 -
 .../services/org/apache/camel/modelxml-dumper      |  18 -
 .../services/org/apache/camel/xmlroutes-loader     |  18 -
 .../itest/jaxb/SpringLoadRouteFromXmlTest.java     |   2 +-
 .../apache/camel/maven/packaging/GenerateMojo.java |   2 -
 .../camel/maven/packaging/SpiGeneratorMojo.java    |   2 +-
 598 files changed, 3561 insertions(+), 6112 deletions(-)
 create mode 100644 components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-processor-factory
 create mode 100644 components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-proxy-factory
 delete mode 100644 components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-processor-factory
 delete mode 100644 components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-proxy-factory
 copy components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/{JtaTransactionErrorHandlerBuilder.java => JtaTransactionErrorHandlerReifier.java} (50%)
 create mode 100644 components/camel-reactive-executor-vertx/src/generated/resources/META-INF/services/org/apache/camel/reactive-executor
 delete mode 100644 components/camel-reactive-executor-vertx/src/main/resources/META-INF/services/org/apache/camel/reactive-executor
 create mode 100644 components/camel-rest/src/generated/resources/META-INF/services/org/apache/camel/rest-registry-factory
 delete mode 100644 components/camel-rest/src/main/resources/META-INF/services/org/apache/camel/rest-registry-factory
 delete mode 100644 core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
 create mode 100644 core/camel-base/src/generated/resources/META-INF/services/org/apache/camel/properties-component-factory
 create mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseServiceResolver.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/EventDrivenConsumerRoute.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
 delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
 copy core/{camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java => camel-base/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java} (70%)
 delete mode 100644 core/camel-base/src/main/resources/META-INF/services/org/apache/camel/properties-component-factory
 create mode 100644 core/camel-caffeine-lrucache/src/generated/resources/META-INF/services/org/apache/camel/lru-cache-factory
 delete mode 100644 core/camel-caffeine-lrucache/src/main/resources/META-INF/services/org/apache/camel/lru-cache-factory
 create mode 100644 core/camel-core-catalog/src/generated/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
 delete mode 100644 core/camel-core-catalog/src/main/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
 rename core/camel-core-engine/src/main/java/org/apache/camel/{impl => }/cluster/ClusteredRouteConfiguration.java (97%)
 rename core/camel-core-engine/src/main/java/org/apache/camel/{impl => }/cluster/ClusteredRouteController.java (99%)
 rename core/camel-core-engine/src/main/java/org/apache/camel/{impl => }/cluster/ClusteredRouteFilter.java (87%)
 rename core/camel-core-engine/src/main/java/org/apache/camel/{impl => }/cluster/ClusteredRouteFilters.java (88%)
 rename core/camel-core-engine/src/main/java/org/apache/camel/{impl => }/cluster/ClusteredRoutePolicy.java (97%)
 rename core/camel-core-engine/src/main/java/org/apache/camel/{impl => }/cluster/ClusteredRoutePolicyFactory.java (94%)
 rename core/camel-core-engine/src/main/java/org/apache/camel/{impl => }/cluster/package.html (100%)
 delete mode 100644 core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
 delete mode 100644 core/camel-core-engine/src/main/java/org/apache/camel/impl/JndiRegistry.java
 delete mode 100644 core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
 delete mode 100644 core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
 copy core/camel-core-engine/src/main/java/org/apache/camel/reifier/{TransactedReifier.java => AbstractPolicyReifier.java} (66%)
 rename core/camel-core/src/test/java/org/apache/camel/{impl => }/cluster/ClusterServiceSelectorTest.java (98%)
 rename core/camel-core/src/test/java/org/apache/camel/{impl => }/cluster/ClusterServiceViewTest.java (97%)
 delete mode 100644 core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java
 create mode 100644 core/camel-headersmap/src/generated/resources/META-INF/services/org/apache/camel/headers-map-factory
 delete mode 100644 core/camel-headersmap/src/main/resources/META-INF/services/org/apache/camel/headers-map-factory
 create mode 100644 core/camel-xml-io/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader
 delete mode 100644 core/camel-xml-io/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader
 create mode 100644 core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/model-jaxbcontext-factory
 create mode 100644 core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/modelxml-dumper
 create mode 100644 core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader
 rename core/{camel-core-engine/src/main/java/org/apache/camel/impl => camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb}/DefaultModelJAXBContextFactory.java (92%)
 delete mode 100644 core/camel-xml-jaxb/src/main/resources/META-INF/LICENSE.txt
 delete mode 100644 core/camel-xml-jaxb/src/main/resources/META-INF/NOTICE.txt
 delete mode 100644 core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/modelxml-dumper
 delete mode 100644 core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader


[camel] 06/32: A bit of cleaning

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 ed11c1ca8099e1e244794bbdee94c907fb8bfee5
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Feb 25 13:50:08 2020 +0100

    A bit of cleaning
---
 core/camel-api/src/main/java/org/apache/camel/Route.java |  1 -
 .../java/org/apache/camel/spi/LifecycleStrategy.java     | 16 ++++++++--------
 2 files changed, 8 insertions(+), 9 deletions(-)

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 c596ef2..353a335 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
@@ -233,7 +233,6 @@ public interface Route extends RuntimeConfiguration {
 
     /**
      * This method retrieves the event driven Processors on this route context.
-     * @return
      */
     List<Processor> getEventDrivenProcessors();
 
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java b/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
index 6f5349b..5a6e247 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
@@ -50,7 +50,7 @@ public interface LifecycleStrategy {
     void onContextStop(CamelContext context);
 
     /**
-     * Notification on adding an {@link org.apache.camel.Component}.
+     * Notification on adding an {@link Component}.
      *
      * @param name      the unique name of this component
      * @param component the added component
@@ -58,7 +58,7 @@ public interface LifecycleStrategy {
     void onComponentAdd(String name, Component component);
 
     /**
-     * Notification on removing an {@link org.apache.camel.Component}.
+     * Notification on removing an {@link Component}.
      *
      * @param name      the unique name of this component
      * @param component the removed component
@@ -86,7 +86,7 @@ public interface LifecycleStrategy {
      * @param service the added service
      * @param route   the route the service belongs to if any possible to determine
      */
-    void onServiceAdd(CamelContext context, Service service, org.apache.camel.Route route);
+    void onServiceAdd(CamelContext context, Service service, Route route);
 
     /**
      * Notification on removing a {@link Service}.
@@ -95,21 +95,21 @@ public interface LifecycleStrategy {
      * @param service the removed service
      * @param route   the route the service belongs to if any possible to determine
      */
-    void onServiceRemove(CamelContext context, Service service, org.apache.camel.Route route);
+    void onServiceRemove(CamelContext context, Service service, Route route);
 
     /**
-     * Notification on adding {@link org.apache.camel.Route}(s).
+     * Notification on adding {@link Route}(s).
      *
      * @param routes the added routes
      */
-    void onRoutesAdd(Collection<org.apache.camel.Route> routes);
+    void onRoutesAdd(Collection<Route> routes);
 
     /**
-     * Notification on removing {@link org.apache.camel.Route}(s).
+     * Notification on removing {@link Route}(s).
      *
      * @param routes the removed routes
      */
-    void onRoutesRemove(Collection<org.apache.camel.Route> routes);
+    void onRoutesRemove(Collection<Route> routes);
 
     /**
      * Notification on adding {@link Route}(s).


[camel] 21/32: Camel-Main: Added camel-core-languages dep explicitly

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 849256b8ec48e47dad6213c197eea84ac2d1b4cb
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Mar 3 11:56:54 2020 +0100

    Camel-Main: Added camel-core-languages dep explicitly
---
 core/camel-main/pom.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/core/camel-main/pom.xml b/core/camel-main/pom.xml
index 62e2c42..276374f 100644
--- a/core/camel-main/pom.xml
+++ b/core/camel-main/pom.xml
@@ -64,6 +64,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-util</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-languages</artifactId>
+        </dependency>
         <!-- and use the caffeine lrucache which is the best LRU cache implementation -->
         <dependency>
             <groupId>org.apache.camel</groupId>


[camel] 19/32: Camel-test: Added camel-core-languages as dep

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 611bc99624697dd6409f590c1a04bb6868f21616
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Mar 3 11:45:25 2020 +0100

    Camel-test: Added camel-core-languages as dep
---
 components/camel-test/pom.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/components/camel-test/pom.xml b/components/camel-test/pom.xml
index 39bb3eb..93aa39f 100644
--- a/components/camel-test/pom.xml
+++ b/components/camel-test/pom.xml
@@ -47,6 +47,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-management</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-languages</artifactId>
+        </dependency>
 
         <!-- common deps used in tests -->
         <dependency>


[camel] 09/32: Restore compatibility

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 05f7bafd441876d2c6b182a35ed16855376f82c8
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 10:18:47 2020 +0100

    Restore compatibility
---
 .../org/apache/camel/reifier/RouteReifier.java     | 24 ++++++++++++++--------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 9223e51..7f3b270 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -87,7 +87,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
      * @throws Exception can be thrown from the route builder
      * @see AdviceWithRouteBuilder
      */
-    public static RouteDefinition adviceWith(RouteDefinition definition, CamelContext camelContext, AdviceWithRouteBuilder builder) throws Exception {
+    public static RouteDefinition adviceWith(RouteDefinition definition, CamelContext camelContext, RouteBuilder builder) throws Exception {
         ObjectHelper.notNull(definition, "RouteDefinition");
         ObjectHelper.notNull(camelContext, "CamelContext");
         ObjectHelper.notNull(builder, "RouteBuilder");
@@ -156,17 +156,21 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
      * @see AdviceWithRouteBuilder
      */
     @SuppressWarnings("deprecation")
-    public RouteDefinition adviceWith(AdviceWithRouteBuilder builder) throws Exception {
+    public RouteDefinition adviceWith(RouteBuilder builder) throws Exception {
         ObjectHelper.notNull(builder, "RouteBuilder");
-        Model model = camelContext.getExtension(Model.class);
-        ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
 
         log.debug("AdviceWith route before: {}", this);
+        ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
+        Model model = camelContext.getExtension(Model.class);
 
         // inject this route into the advice route builder so it can access this route
         // and offer features to manipulate the route directly
-        boolean logRoutesAsXml = builder.isLogRouteAsXml();
-        builder.setOriginalRoute(definition);
+        boolean logRoutesAsXml = true;
+        if (builder instanceof AdviceWithRouteBuilder) {
+            AdviceWithRouteBuilder arb = (AdviceWithRouteBuilder)builder;
+            arb.setOriginalRoute(definition);
+            logRoutesAsXml = arb.isLogRouteAsXml();
+        }
 
         // configure and prepare the routes from the builder
         RoutesDefinition routes = builder.configureRoutes(camelContext);
@@ -201,9 +205,11 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         model.removeRouteDefinition(definition);
 
         // any advice with tasks we should execute first?
-        List<AdviceWithTask> tasks = builder.getAdviceWithTasks();
-        for (AdviceWithTask task : tasks) {
-            task.task();
+        if (builder instanceof AdviceWithRouteBuilder) {
+            List<AdviceWithTask> tasks = ((AdviceWithRouteBuilder) builder).getAdviceWithTasks();
+            for (AdviceWithTask task : tasks) {
+                task.task();
+            }
         }
 
         // now merge which also ensures that interceptors and the likes get


[camel] 03/32: Move ErrorHandler all reification to the 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 4275688e8e36e7c17e7bd5bd6dac56b32744184a
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Feb 20 13:37:20 2020 +0100

    Move ErrorHandler all reification to the reifiers
    
    # Conflicts:
    #	core/camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
    #	core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
    #	core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
    #	core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
---
 .../JtaTransactionErrorHandlerBuilder.java         |  99 +++-------------
 ...java => JtaTransactionErrorHandlerReifier.java} | 129 +++++++++------------
 .../cdi/transaction/JtaTransactionPolicy.java      |  10 +-
 .../processor/HystrixHierarchicalConfigTest.java   |   2 +-
 .../SpringHystrixRouteHierarchicalConfigTest.java  |   2 +-
 .../spring/spi/TransactionErrorHandlerBuilder.java |  61 ----------
 .../apache/camel/spring/EndpointReferenceTest.java |   2 -
 .../spring/config/DummyErrorHandlerBuilder.java    |  42 ++++---
 .../java/org/apache/camel/ErrorHandlerFactory.java |  23 ----
 .../java/org/apache/camel/spi/RouteContext.java    |   2 +
 ...RouteContext.java => AbstractRouteContext.java} |  16 ++-
 .../apache/camel/processor/MulticastProcessor.java |  21 +---
 .../camel/processor/RecipientListProcessor.java    |  20 +---
 .../camel/builder/AdviceWithRouteBuilder.java      |  25 ++--
 .../camel/builder/DeadLetterChannelBuilder.java    |  33 ------
 .../camel/builder/DefaultErrorHandlerBuilder.java  |  38 ------
 .../camel/builder/ErrorHandlerBuilderRef.java      |  29 -----
 .../camel/builder/ErrorHandlerBuilderSupport.java  | 103 +---------------
 .../camel/builder/NoErrorHandlerBuilder.java       |  30 -----
 .../java/org/apache/camel/impl/DefaultModel.java   |   1 -
 .../DefaultRouteContext.java}                      |  20 ++--
 .../apache/camel/reifier/DynamicRouterReifier.java |   6 +-
 .../org/apache/camel/reifier/ProcessorReifier.java |  14 ++-
 .../apache/camel/reifier/RecipientListReifier.java |   2 +-
 .../org/apache/camel/reifier/RouteReifier.java     |   1 -
 .../apache/camel/reifier/RoutingSlipReifier.java   |   9 +-
 .../org/apache/camel/reifier/WireTapReifier.java   |   2 +-
 .../errorhandler/ErrorHandlerRefReifier.java       |  12 +-
 .../reifier/errorhandler/ErrorHandlerReifier.java  |  76 ++++++++----
 .../errorhandler/ErrorHandlerSupportTest.java      |  19 +--
 .../DefaultExceptionPolicyStrategyTest.java        |  10 +-
 .../camel/reifier/DataFormatReifierTest.java       |   8 +-
 .../apache/camel/reifier/ProcessorReifierTest.java |   2 +-
 .../apache/camel/support/CamelContextHelper.java   |   1 -
 34 files changed, 262 insertions(+), 608 deletions(-)

diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
index bb15f57..f56598a 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
@@ -16,22 +16,11 @@
  */
 package org.apache.camel.cdi.transaction;
 
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilder;
-import org.apache.camel.model.TransactedDefinition;
-import org.apache.camel.reifier.TransactedReifier;
+import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.CamelLogger;
-import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
@@ -40,12 +29,9 @@ import org.slf4j.LoggerFactory;
  */
 public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
 
-    public static final String ROLLBACK_LOGGING_LEVEL_PROPERTY =
-        JtaTransactionErrorHandlerBuilder.class.getName() + "#rollbackLoggingLevel";
-
-    private static final Logger LOG = LoggerFactory.getLogger(JtaTransactionErrorHandlerBuilder.class);
-
-    private static final String PROPAGATION_REQUIRED = "PROPAGATION_REQUIRED";
+    static {
+        ErrorHandlerReifier.registerReifier(JtaTransactionErrorHandlerBuilder.class, JtaTransactionErrorHandlerReifier::new);
+    }
 
     private LoggingLevel rollbackLoggingLevel = LoggingLevel.WARN;
 
@@ -75,73 +61,8 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
         }
     }
 
-    @Override
-    public Processor createErrorHandler(final RouteContext routeContext, final Processor processor) throws Exception {
-        CamelContext camelContext = routeContext.getCamelContext();
-        // resolve policy reference, if given
-        if (transactionPolicy == null) {
-            if (policyRef != null) {
-                final TransactedDefinition transactedDefinition = new TransactedDefinition();
-                transactedDefinition.setRef(policyRef);
-                final Policy policy = new TransactedReifier(camelContext, transactedDefinition).resolvePolicy();
-                if (policy != null) {
-                    if (!(policy instanceof JtaTransactionPolicy)) {
-                        throw new RuntimeCamelException("The configured policy '" + policyRef + "' is of type '"
-                                + policyRef.getClass().getName() + "' but an instance of '"
-                                + JtaTransactionPolicy.class.getName() + "' is required!");
-                    }
-                    transactionPolicy = (JtaTransactionPolicy) policy;
-                }
-            }
-        }
-
-        // try to lookup default policy
-        if (transactionPolicy == null) {
-            LOG.debug(
-                    "No transaction policy configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
-
-            Map<String, TransactedPolicy> mapPolicy = camelContext.getRegistry().findByTypeWithName(TransactedPolicy.class);
-            if (mapPolicy != null && mapPolicy.size() == 1) {
-                TransactedPolicy policy = mapPolicy.values().iterator().next();
-                if (policy instanceof JtaTransactionPolicy) {
-                    transactionPolicy = (JtaTransactionPolicy) policy;
-                }
-            }
-
-            if (transactionPolicy == null) {
-                TransactedPolicy policy = camelContext.getRegistry().lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
-                if (policy instanceof JtaTransactionPolicy) {
-                    transactionPolicy = (JtaTransactionPolicy) policy;
-                }
-            }
-
-            if (transactionPolicy != null) {
-                LOG.debug("Found TransactionPolicy in registry to use: {}", transactionPolicy);
-            }
-        }
-
-        ObjectHelper.notNull(transactionPolicy, "transactionPolicy", this);
-
-        final Map<String, String> properties = camelContext.getGlobalOptions();
-        if ((properties != null) && properties.containsKey(ROLLBACK_LOGGING_LEVEL_PROPERTY)) {
-            rollbackLoggingLevel = LoggingLevel.valueOf(properties.get(ROLLBACK_LOGGING_LEVEL_PROPERTY));
-        }
-
-        JtaTransactionErrorHandler answer = new JtaTransactionErrorHandler(camelContext,
-                processor,
-                getLogger(),
-                getOnRedelivery(),
-                getRedeliveryPolicy(),
-                getExceptionPolicyStrategy(),
-                transactionPolicy,
-                getRetryWhilePolicy(camelContext),
-                getExecutorService(camelContext),
-                rollbackLoggingLevel,
-                getOnExceptionOccurred());
-
-        // configure error handler before we can use it
-        configure(routeContext, answer);
-        return answer;
+    public String getPolicyRef() {
+        return policyRef;
     }
 
     public JtaTransactionErrorHandlerBuilder setTransactionPolicy(final String ref) {
@@ -149,11 +70,19 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
         return this;
     }
 
+    public JtaTransactionPolicy getTransactionPolicy() {
+        return transactionPolicy;
+    }
+
     public JtaTransactionErrorHandlerBuilder setTransactionPolicy(final JtaTransactionPolicy transactionPolicy) {
         this.transactionPolicy = transactionPolicy;
         return this;
     }
 
+    public LoggingLevel getRollbackLoggingLevel() {
+        return rollbackLoggingLevel;
+    }
+
     public JtaTransactionErrorHandlerBuilder setRollbackLoggingLevel(final LoggingLevel rollbackLoggingLevel) {
         this.rollbackLoggingLevel = rollbackLoggingLevel;
         return this;
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerReifier.java
similarity index 51%
copy from components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
copy to components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerReifier.java
index bb15f57..252e3ee 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerReifier.java
@@ -17,77 +17,51 @@
 package org.apache.camel.cdi.transaction;
 
 import java.util.Map;
+import java.util.concurrent.ScheduledExecutorService;
 
-import org.apache.camel.CamelContext;
+import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.builder.DefaultErrorHandlerBuilder;
-import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.model.TransactedDefinition;
 import org.apache.camel.reifier.TransactedReifier;
-import org.apache.camel.spi.CamelLogger;
+import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
+import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.spi.TransactedPolicy;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * Builds transactional error handlers. This class is based on
- * {@link org.apache.camel.spring.spi.TransactionErrorHandlerBuilder}.
- */
-public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
+public class JtaTransactionErrorHandlerReifier extends ErrorHandlerReifier<JtaTransactionErrorHandlerBuilder> {
 
     public static final String ROLLBACK_LOGGING_LEVEL_PROPERTY =
-        JtaTransactionErrorHandlerBuilder.class.getName() + "#rollbackLoggingLevel";
-
-    private static final Logger LOG = LoggerFactory.getLogger(JtaTransactionErrorHandlerBuilder.class);
+            JtaTransactionErrorHandlerBuilder.class.getName() + "#rollbackLoggingLevel";
 
     private static final String PROPAGATION_REQUIRED = "PROPAGATION_REQUIRED";
 
-    private LoggingLevel rollbackLoggingLevel = LoggingLevel.WARN;
-
-    private JtaTransactionPolicy transactionPolicy;
-
-    private String policyRef;
+    private static final Logger LOG = LoggerFactory.getLogger(JtaTransactionErrorHandlerReifier.class);
 
-    @Override
-    public boolean supportTransacted() {
-        return true;
+    public JtaTransactionErrorHandlerReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
+        super(routeContext, (JtaTransactionErrorHandlerBuilder) definition);
     }
 
     @Override
-    public ErrorHandlerBuilder cloneBuilder() {
-        final JtaTransactionErrorHandlerBuilder answer = new JtaTransactionErrorHandlerBuilder();
-        cloneBuilder(answer);
-        return answer;
-    }
+    public Processor createErrorHandler(final Processor processor) throws Exception {
+        JtaTransactionPolicy transactionPolicy = definition.getTransactionPolicy();
 
-    @Override
-    protected void cloneBuilder(DefaultErrorHandlerBuilder other) {
-        super.cloneBuilder(other);
-        if (other instanceof JtaTransactionErrorHandlerBuilder) {
-            final JtaTransactionErrorHandlerBuilder otherTx = (JtaTransactionErrorHandlerBuilder) other;
-            transactionPolicy = otherTx.transactionPolicy;
-            rollbackLoggingLevel = otherTx.rollbackLoggingLevel;
-        }
-    }
-
-    @Override
-    public Processor createErrorHandler(final RouteContext routeContext, final Processor processor) throws Exception {
-        CamelContext camelContext = routeContext.getCamelContext();
         // resolve policy reference, if given
         if (transactionPolicy == null) {
-            if (policyRef != null) {
+            if (definition.getPolicyRef() != null) {
                 final TransactedDefinition transactedDefinition = new TransactedDefinition();
-                transactedDefinition.setRef(policyRef);
+                transactedDefinition.setRef(definition.getPolicyRef());
                 final Policy policy = new TransactedReifier(camelContext, transactedDefinition).resolvePolicy();
                 if (policy != null) {
                     if (!(policy instanceof JtaTransactionPolicy)) {
-                        throw new RuntimeCamelException("The configured policy '" + policyRef + "' is of type '"
-                                + policyRef.getClass().getName() + "' but an instance of '"
+                        throw new RuntimeCamelException("The configured policy '" + definition.getPolicyRef()
+                                + "' is of type '" + policy.getClass().getName() + "' but an instance of '"
                                 + JtaTransactionPolicy.class.getName() + "' is required!");
                     }
                     transactionPolicy = (JtaTransactionPolicy) policy;
@@ -97,10 +71,10 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
 
         // try to lookup default policy
         if (transactionPolicy == null) {
-            LOG.debug(
-                    "No transaction policy configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
+            LOG.debug("No transaction policy configured on TransactionErrorHandlerBuilder. "
+                    + "Will try find it in the registry.");
 
-            Map<String, TransactedPolicy> mapPolicy = camelContext.getRegistry().findByTypeWithName(TransactedPolicy.class);
+            Map<String, TransactedPolicy> mapPolicy = findByTypeWithName(TransactedPolicy.class);
             if (mapPolicy != null && mapPolicy.size() == 1) {
                 TransactedPolicy policy = mapPolicy.values().iterator().next();
                 if (policy instanceof JtaTransactionPolicy) {
@@ -109,7 +83,7 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
             }
 
             if (transactionPolicy == null) {
-                TransactedPolicy policy = camelContext.getRegistry().lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
+                TransactedPolicy policy = lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
                 if (policy instanceof JtaTransactionPolicy) {
                     transactionPolicy = (JtaTransactionPolicy) policy;
                 }
@@ -123,49 +97,52 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
         ObjectHelper.notNull(transactionPolicy, "transactionPolicy", this);
 
         final Map<String, String> properties = camelContext.getGlobalOptions();
+        LoggingLevel rollbackLoggingLevel = definition.getRollbackLoggingLevel();
         if ((properties != null) && properties.containsKey(ROLLBACK_LOGGING_LEVEL_PROPERTY)) {
             rollbackLoggingLevel = LoggingLevel.valueOf(properties.get(ROLLBACK_LOGGING_LEVEL_PROPERTY));
         }
 
         JtaTransactionErrorHandler answer = new JtaTransactionErrorHandler(camelContext,
                 processor,
-                getLogger(),
-                getOnRedelivery(),
-                getRedeliveryPolicy(),
-                getExceptionPolicyStrategy(),
+                definition.getLogger(),
+                definition.getOnRedelivery(),
+                definition.getRedeliveryPolicy(),
+                definition.getExceptionPolicyStrategy(),
                 transactionPolicy,
-                getRetryWhilePolicy(camelContext),
-                getExecutorService(camelContext),
+                definition.getRetryWhilePolicy(camelContext),
+                getExecutorService(),
                 rollbackLoggingLevel,
-                getOnExceptionOccurred());
+                definition.getOnExceptionOccurred());
 
         // configure error handler before we can use it
-        configure(routeContext, answer);
+        configure(answer);
         return answer;
     }
 
-    public JtaTransactionErrorHandlerBuilder setTransactionPolicy(final String ref) {
-        policyRef = ref;
-        return this;
-    }
-
-    public JtaTransactionErrorHandlerBuilder setTransactionPolicy(final JtaTransactionPolicy transactionPolicy) {
-        this.transactionPolicy = transactionPolicy;
-        return this;
-    }
-
-    public JtaTransactionErrorHandlerBuilder setRollbackLoggingLevel(final LoggingLevel rollbackLoggingLevel) {
-        this.rollbackLoggingLevel = rollbackLoggingLevel;
-        return this;
-    }
-
-    @Override
-    protected CamelLogger createLogger() {
-        return new CamelLogger(LoggerFactory.getLogger(TransactionErrorHandler.class), LoggingLevel.ERROR);
+    protected synchronized ScheduledExecutorService getExecutorService() {
+        ScheduledExecutorService executorService = definition.getExecutorService();
+        if (executorService == null || executorService.isShutdown()) {
+            // camel context will shutdown the executor when it shutdown so no
+            // need to shut it down when stopping
+            if (definition.getExecutorServiceRef() != null) {
+                executorService = lookupByNameAndType(definition.getExecutorServiceRef(), ScheduledExecutorService.class);
+                if (executorService == null) {
+                    ExecutorServiceManager manager = camelContext.getExecutorServiceManager();
+                    ThreadPoolProfile profile = manager.getThreadPoolProfile(definition.getExecutorServiceRef());
+                    executorService = manager.newScheduledThreadPool(this, definition.getExecutorServiceRef(), profile);
+                }
+                if (executorService == null) {
+                    throw new IllegalArgumentException("ExecutorServiceRef " + definition.getExecutorServiceRef() + " not found in registry.");
+                }
+            } else {
+                // no explicit configured thread pool, so leave it up to the
+                // error handler to decide if it need
+                // a default thread pool from
+                // CamelContext#getErrorHandlerExecutorService
+                executorService = null;
+            }
+        }
+        return executorService;
     }
 
-    @Override
-    public String toString() {
-        return "JtaTransactionErrorHandlerBuilder";
-    }
 }
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 e19d650..124a483 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
@@ -65,13 +65,11 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
     public Processor wrap(RouteContext routeContext, Processor processor) {
         JtaTransactionErrorHandler answer;
         // the goal is to configure the error handler builder on the route as a
-        // transacted error handler,
-        // either its already a transacted or if not we replace it with a
-        // transacted one that we configure here
+        // transacted error handler. If the configured builder is not transacted,
+        // we replace it with a transacted one that we configure here
         // and wrap the processor in the transacted error handler as we can have
-        // transacted routes that change
-        // propagation behavior, eg: from A required -> B -> requiresNew C
-        // (advanced use-case)
+        // transacted routes that change propagation behavior,
+        // eg: from A required -> B -> requiresNew C (advanced use-case)
         // if we should not support this we do not need to wrap the processor as
         // we only need one transacted error handler
 
diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java
index 11f8415..765360a 100644
--- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java
+++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.hystrix.processor;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.engine.DefaultRouteContext;
+import org.apache.camel.impl.DefaultRouteContext;
 import org.apache.camel.model.CircuitBreakerDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.Model;
diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java
index b191a31..105b3e2 100644
--- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java
+++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java
@@ -17,7 +17,7 @@
 package org.apache.camel.component.hystrix.processor;
 
 import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.impl.engine.DefaultRouteContext;
+import org.apache.camel.impl.DefaultRouteContext;
 import org.apache.camel.model.CircuitBreakerDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
index 1c7fc85..3aa044a 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
@@ -59,67 +59,6 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
         return true;
     }
 
-    @Override
-    public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
-        CamelContext camelContext = routeContext.getCamelContext();
-        if (transactionTemplate == null) {
-            // lookup in context if no transaction template has been configured
-            LOG.debug("No TransactionTemplate configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
-
-            Map<String, TransactedPolicy> mapPolicy = camelContext.getRegistry().findByTypeWithName(TransactedPolicy.class);
-            if (mapPolicy != null && mapPolicy.size() == 1) {
-                TransactedPolicy policy = mapPolicy.values().iterator().next();
-                if (policy instanceof SpringTransactionPolicy) {
-                    transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
-                }
-            }
-
-            if (transactionTemplate == null) {
-                TransactedPolicy policy = camelContext.getRegistry().lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
-                if (policy instanceof SpringTransactionPolicy) {
-                    transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
-                }
-            }
-
-            if (transactionTemplate == null) {
-                Map<String, TransactionTemplate> mapTemplate = camelContext.getRegistry().findByTypeWithName(TransactionTemplate.class);
-                if (mapTemplate == null || mapTemplate.isEmpty()) {
-                    LOG.trace("No TransactionTemplate found in registry.");
-                } else if (mapTemplate.size() == 1) {
-                    transactionTemplate = mapTemplate.values().iterator().next();
-                } else {
-                    LOG.debug("Found {} TransactionTemplate in registry. Cannot determine which one to use. "
-                              + "Please configure a TransactionTemplate on the TransactionErrorHandlerBuilder", mapTemplate.size());
-                }
-            }
-
-            if (transactionTemplate == null) {
-                Map<String, PlatformTransactionManager> mapManager = camelContext.getRegistry().findByTypeWithName(PlatformTransactionManager.class);
-                if (mapManager == null || mapManager.isEmpty()) {
-                    LOG.trace("No PlatformTransactionManager found in registry.");
-                } else if (mapManager.size() == 1) {
-                    transactionTemplate = new TransactionTemplate(mapManager.values().iterator().next());
-                } else {
-                    LOG.debug("Found {} PlatformTransactionManager in registry. Cannot determine which one to use for TransactionTemplate. "
-                              + "Please configure a TransactionTemplate on the TransactionErrorHandlerBuilder", mapManager.size());
-                }
-            }
-
-            if (transactionTemplate != null) {
-                LOG.debug("Found TransactionTemplate in registry to use: {}", transactionTemplate);
-            }
-        }
-
-        ObjectHelper.notNull(transactionTemplate, "transactionTemplate", this);
-
-        TransactionErrorHandler answer = new TransactionErrorHandler(camelContext, processor,
-            getLogger(), getOnRedelivery(), getRedeliveryPolicy(), getExceptionPolicyStrategy(), transactionTemplate, 
-            getRetryWhilePolicy(camelContext), getExecutorService(camelContext), getRollbackLoggingLevel(), getOnExceptionOccurred());
-        // configure error handler before we can use it
-        configure(routeContext, answer);
-        return answer;
-    }
-
     public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
         this.transactionTemplate = transactionTemplate;
     }
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 23c80cc..42db380 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
@@ -21,9 +21,7 @@ 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;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spring.example.DummyBean;
 import org.apache.camel.support.CamelContextHelper;
 import org.junit.Test;
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
index 3ad380e..c7d4764 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
@@ -16,23 +16,27 @@
  */
 package org.apache.camel.spring.config;
 
+import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderSupport;
+import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.processor.DelegateProcessor;
 import org.springframework.beans.factory.BeanNameAware;
 
 public class DummyErrorHandlerBuilder extends ErrorHandlerBuilderSupport implements BeanNameAware {
+
     public static final String PROPERTY_NAME = "DummyErrorHandler";
-    private String beanName;
 
-    public DummyErrorHandlerBuilder() {
+    static {
+        ErrorHandlerReifier.registerReifier(DummyErrorHandlerBuilder.class, DummyErrorHandlerReifier::new);
     }
 
-    public DummyErrorHandlerBuilder(String beanName) {
-        this.beanName = beanName;
+    private String beanName;
+
+    public DummyErrorHandlerBuilder() {
     }
 
     @Override
@@ -40,9 +44,8 @@ public class DummyErrorHandlerBuilder extends ErrorHandlerBuilderSupport impleme
         this.beanName = beanName;
     }
 
-    @Override
-    public boolean supportTransacted() {
-        return false;
+    public String getBeanName() {
+        return beanName;
     }
 
     @Override
@@ -53,15 +56,22 @@ public class DummyErrorHandlerBuilder extends ErrorHandlerBuilderSupport impleme
         return answer;
     }
 
-    @Override
-    public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
-        return new DelegateProcessor(processor) {
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.setProperty(PROPERTY_NAME, beanName);
-                super.process(exchange);
-            }
-        };
+    public static class DummyErrorHandlerReifier extends ErrorHandlerReifier<DummyErrorHandlerBuilder> {
+
+        public DummyErrorHandlerReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
+            super(routeContext, (DummyErrorHandlerBuilder) definition);
+        }
+
+        @Override
+        public Processor createErrorHandler(Processor processor) throws Exception {
+            return new DelegateProcessor(processor) {
+                @Override
+                public void process(Exchange exchange) throws Exception {
+                    exchange.setProperty(PROPERTY_NAME, definition.getBeanName());
+                    super.process(exchange);
+                }
+            };
+        }
     }
 
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java b/core/camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
index 62f5918..9e35c8a 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
@@ -16,32 +16,9 @@
  */
 package org.apache.camel;
 
-import org.apache.camel.spi.RouteContext;
-
 /**
  * Factory for creating {@link org.apache.camel.processor.ErrorHandler}s.
  */
 public interface ErrorHandlerFactory {
 
-    /**
-     * Creates the error handler 
-     *
-     * @param routeContext the route context
-     * @param processor the outer processor
-     * @return the error handler
-     * @throws Exception is thrown if the error handler could not be created
-     */
-    Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception;
-
-    /**
-     * Gets or lookup the target error handler factory.
-     *
-     * Will either get this current as the error handler factory, or in case this is a reference lookup
-     * for a actual error handler, then this method will perform a lookup to return the actual error handler factory.
-     *
-     * @param routeContext the route context
-     * @return the error handler factory.
-     */
-    ErrorHandlerFactory getOrLookupErrorHandlerFactory(RouteContext routeContext);
-
 }
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 8513863..39e9b2c 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
@@ -164,6 +164,8 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
 
     ErrorHandlerFactory getErrorHandlerFactory();
 
+    Processor createErrorHandler(Processor processor) throws Exception;
+
     void addAdvice(CamelInternalProcessorAdvice<?> advice);
 
     void addProperty(String key, Object value);
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractRouteContext.java
similarity index 97%
rename from core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
rename to core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractRouteContext.java
index 0ee844b..5bf48b0 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractRouteContext.java
@@ -48,7 +48,8 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * The context used to activate new routing rules
  */
-public class DefaultRouteContext implements RouteContext {
+public abstract class AbstractRouteContext implements RouteContext {
+
     private NamedNode route;
     private String routeId;
     private Route runtimeRoute;
@@ -81,7 +82,7 @@ public class DefaultRouteContext implements RouteContext {
     // must be concurrent as error handlers can be mutated concurrently via multicast/recipientlist EIPs
     private ConcurrentMap<ErrorHandlerFactory, Set<NamedNode>> errorHandlers = new ConcurrentHashMap<>();
 
-    public DefaultRouteContext(CamelContext camelContext, NamedNode route, String routeId) {
+    public AbstractRouteContext(CamelContext camelContext, NamedNode route, String routeId) {
         this.camelContext = camelContext;
         this.route = route;
         this.routeId = routeId;
@@ -508,12 +509,12 @@ public class DefaultRouteContext implements RouteContext {
 
     @Override
     public void addErrorHandler(ErrorHandlerFactory factory, NamedNode onException) {
-        getErrorHandlers(factory).add(onException);
+        doGetErrorHandlers(factory).add(onException);
     }
 
     @Override
     public Set<NamedNode> getErrorHandlers(ErrorHandlerFactory factory) {
-        return errorHandlers.computeIfAbsent(factory, f -> new LinkedHashSet<>());
+        return doGetErrorHandlers(factory);
     }
 
     public void removeErrorHandlers(ErrorHandlerFactory factory) {
@@ -522,10 +523,15 @@ public class DefaultRouteContext implements RouteContext {
 
     @Override
     public void addErrorHandlerFactoryReference(ErrorHandlerFactory source, ErrorHandlerFactory target) {
-        Set<NamedNode> list = getErrorHandlers(source);
+        Set<NamedNode> list = doGetErrorHandlers(source);
         Set<NamedNode> previous = errorHandlers.put(target, list);
         if (list != previous && ObjectHelper.isNotEmpty(previous) && ObjectHelper.isNotEmpty(list)) {
             throw new IllegalStateException("Multiple references with different handlers");
         }
     }
+
+    public Set<NamedNode> doGetErrorHandlers(ErrorHandlerFactory factory) {
+        return errorHandlers.computeIfAbsent(factory, f -> new LinkedHashSet<>());
+    }
+
 }
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index 7cadfdc..65f1587 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -41,7 +41,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.ExtendedExchange;
@@ -138,9 +137,9 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
      * <p/>
      * See the <tt>createProcessorExchangePair</tt> and <tt>createErrorHandler</tt> methods.
      */
-    static final class PreparedErrorHandler extends KeyValueHolder<RouteContext, Processor> {
+    static final class ErrorHandlerKey extends KeyValueHolder<RouteContext, Processor> {
 
-        PreparedErrorHandler(RouteContext key, Processor value) {
+        ErrorHandlerKey(RouteContext key, Processor value) {
             super(key, value);
         }
 
@@ -163,7 +162,7 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
     private ExecutorService aggregateExecutorService;
     private boolean shutdownAggregateExecutorService;
     private final long timeout;
-    private final ConcurrentMap<PreparedErrorHandler, Processor> errorHandlers = new ConcurrentHashMap<>();
+    private final ConcurrentMap<ErrorHandlerKey, Processor> errorHandlers = new ConcurrentHashMap<>();
     private final boolean shareUnitOfWork;
 
     public MulticastProcessor(CamelContext camelContext, Collection<Processor> processors) {
@@ -722,7 +721,7 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
             // for the entire multicast block again which will start from scratch again
 
             // create key for cache
-            final PreparedErrorHandler key = new PreparedErrorHandler(routeContext, processor);
+            final ErrorHandlerKey key = new ErrorHandlerKey(routeContext, processor);
 
             // lookup cached first to reuse and preserve memory
             answer = errorHandlers.get(key);
@@ -732,11 +731,10 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
             }
 
             LOG.trace("Creating error handler for: {}", processor);
-            ErrorHandlerFactory builder = routeContext.getErrorHandlerFactory();
             // create error handler (create error handler directly to keep it light weight,
-            // instead of using ProcessorDefinition.wrapInErrorHandler)
+            // instead of using ProcessorReifier.wrapInErrorHandler)
             try {
-                processor = createErrorHandler(routeContext, builder, exchange, processor);
+                processor = routeContext.createErrorHandler(processor);
 
                 // and wrap in unit of work processor so the copy exchange also can run under UoW
                 answer = createUnitOfWorkProcessor(routeContext, processor, exchange);
@@ -764,13 +762,6 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
     }
 
     /**
-     * Strategy to create the error handler from the builder
-     */
-    protected Processor createErrorHandler(RouteContext routeContext, ErrorHandlerFactory builder, Exchange exchange, Processor processor) throws Exception {
-        return builder.createErrorHandler(routeContext, processor);
-    }
-
-    /**
      * Strategy to create the unit of work to be used for the sub route
      *
      * @param routeContext the route context
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
index 66a22d3..a031939 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
@@ -16,9 +16,6 @@
  */
 package org.apache.camel.processor;
 
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -28,7 +25,6 @@ import org.apache.camel.AggregationStrategy;
 import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.ExtendedCamelContext;
@@ -46,7 +42,6 @@ import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.SynchronizationAdapter;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -247,8 +242,6 @@ public class RecipientListProcessor extends MulticastProcessor {
      */
     protected ProcessorExchangePair createProcessorExchangePair(int index, Endpoint endpoint, Producer producer,
                                                                 Exchange exchange, ExchangePattern pattern, boolean prototypeEndpoint) {
-        Processor prepared = producer;
-
         // copy exchange, and do not share the unit of work
         Exchange copy = ExchangeHelper.createCorrelatedCopy(exchange, false);
 
@@ -258,11 +251,11 @@ public class RecipientListProcessor extends MulticastProcessor {
         }
 
         // set property which endpoint we send to
-        setToEndpoint(copy, prepared);
+        setToEndpoint(copy, producer);
 
         // rework error handling to support fine grained error handling
         RouteContext routeContext = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRouteContext() : null;
-        prepared = createErrorHandler(routeContext, copy, prepared);
+        Processor prepared = createErrorHandler(routeContext, copy, producer);
 
         // invoke on prepare on the exchange if specified
         if (onPrepare != null) {
@@ -278,17 +271,14 @@ public class RecipientListProcessor extends MulticastProcessor {
     }
 
     @Override
-    protected Processor createErrorHandler(RouteContext routeContext, ErrorHandlerFactory builder, Exchange exchange, Processor processor) throws Exception {
-        // in case its a reference to another builder then we want the real builder
-        final ErrorHandlerFactory ehBuilder = builder.getOrLookupErrorHandlerFactory(routeContext);
-
-        Processor answer = super.createErrorHandler(routeContext, ehBuilder, exchange, processor);
+    protected Processor createErrorHandler(RouteContext routeContext, Exchange exchange, Processor processor) {
+        Processor answer = super.createErrorHandler(routeContext, exchange, processor);
         exchange.adapt(ExtendedExchange.class).addOnCompletion(new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
                 // remove error handler builder from route context as we are done with the recipient list
                 // and we cannot reuse this and must remove it to avoid leaking the error handler on the route context
-                routeContext.removeErrorHandlers(ehBuilder);
+                routeContext.removeErrorHandlers(routeContext.getErrorHandlerFactory());
             }
         });
         return answer;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
index c9fe6a5..074e796 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
@@ -88,6 +88,20 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
      * @throws Exception can be thrown from the route builder
      */
     public static RouteDefinition adviceWith(CamelContext camelContext, Object routeId, ThrowingConsumer<AdviceWithRouteBuilder, Exception> builder) throws Exception {
+        RouteDefinition rd = findRouteDefinition(camelContext, routeId);
+
+        return RouteReifier.adviceWith(rd, camelContext, new AdviceWithRouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                if (builder instanceof AdviceWithRouteBuilder) {
+                    setLogRouteAsXml(((AdviceWithRouteBuilder) builder).isLogRouteAsXml());
+                }
+                builder.accept(this);
+            }
+        });
+    }
+
+    protected static RouteDefinition findRouteDefinition(CamelContext camelContext, Object routeId) {
         ModelCamelContext mcc = camelContext.adapt(ModelCamelContext.class);
         if (mcc.getRouteDefinitions().isEmpty()) {
             throw new IllegalArgumentException("Cannot advice route as there are no routes");
@@ -115,16 +129,7 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
                 rd = mcc.getRouteDefinitions().get(0);
             }
         }
-
-        return RouteReifier.adviceWith(rd, camelContext, new AdviceWithRouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                if (builder instanceof AdviceWithRouteBuilder) {
-                    setLogRouteAsXml(((AdviceWithRouteBuilder) builder).isLogRouteAsXml());
-                }
-                builder.accept(this);
-            }
-        });
+        return rd;
     }
 
     /**
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
index 3fdd549..108ba2b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
@@ -16,18 +16,14 @@
  */
 package org.apache.camel.builder;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.FatalFallbackErrorHandler;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.processor.errorhandler.DeadLetterChannel;
 import org.apache.camel.spi.CamelLogger;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.StringHelper;
 import org.slf4j.LoggerFactory;
 
 /**
@@ -52,25 +48,6 @@ public class DeadLetterChannelBuilder extends DefaultErrorHandlerBuilder {
     }
 
     @Override
-    public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
-        validateDeadLetterUri(routeContext);
-
-        CamelContext camelContext = routeContext.getCamelContext();
-        DeadLetterChannel answer = new DeadLetterChannel(camelContext, processor, getLogger(), getOnRedelivery(), getRedeliveryPolicy(),
-                                                         getExceptionPolicyStrategy(), getFailureProcessor(), getDeadLetterUri(), isDeadLetterHandleNewException(),
-                                                         isUseOriginalMessage(), isUseOriginalBody(), getRetryWhilePolicy(camelContext),
-                                                         getExecutorService(camelContext), getOnPrepareFailure(), getOnExceptionOccurred());
-        // configure error handler before we can use it
-        configure(routeContext, answer);
-        return answer;
-    }
-
-    @Override
-    public boolean supportTransacted() {
-        return false;
-    }
-
-    @Override
     public ErrorHandlerBuilder cloneBuilder() {
         DeadLetterChannelBuilder answer = new DeadLetterChannelBuilder();
         super.cloneBuilder(answer);
@@ -93,16 +70,6 @@ public class DeadLetterChannelBuilder extends DefaultErrorHandlerBuilder {
         return failureProcessor;
     }
 
-    protected void validateDeadLetterUri(RouteContext routeContext) {
-        if (deadLetter == null) {
-            StringHelper.notEmpty(deadLetterUri, "deadLetterUri", this);
-            deadLetter = routeContext.getCamelContext().getEndpoint(deadLetterUri);
-            if (deadLetter == null) {
-                throw new NoSuchEndpointException(deadLetterUri);
-            }
-        }
-    }
-
     @Override
     protected CamelLogger createLogger() {
         return new CamelLogger(LoggerFactory.getLogger(DeadLetterChannel.class), LoggingLevel.ERROR);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
index 67f5171..f893756 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
@@ -27,10 +27,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.processor.errorhandler.DefaultErrorHandler;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
 import org.apache.camel.spi.CamelLogger;
-import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.Language;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.slf4j.LoggerFactory;
 
@@ -60,16 +57,6 @@ public class DefaultErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
     }
 
     @Override
-    public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
-        DefaultErrorHandler answer = new DefaultErrorHandler(routeContext.getCamelContext(), processor, getLogger(), getOnRedelivery(), getRedeliveryPolicy(),
-                                                             getExceptionPolicyStrategy(), getRetryWhilePolicy(routeContext.getCamelContext()),
-                                                             getExecutorService(routeContext.getCamelContext()), getOnPrepareFailure(), getOnExceptionOccurred());
-        // configure error handler before we can use it
-        configure(routeContext, answer);
-        return answer;
-    }
-
-    @Override
     public boolean supportTransacted() {
         return false;
     }
@@ -663,31 +650,6 @@ public class DefaultErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
         return new CamelLogger(LoggerFactory.getLogger(DefaultErrorHandler.class), LoggingLevel.ERROR);
     }
 
-    protected synchronized ScheduledExecutorService getExecutorService(CamelContext camelContext) {
-        if (executorService == null || executorService.isShutdown()) {
-            // camel context will shutdown the executor when it shutdown so no
-            // need to shut it down when stopping
-            if (executorServiceRef != null) {
-                executorService = camelContext.getRegistry().lookupByNameAndType(executorServiceRef, ScheduledExecutorService.class);
-                if (executorService == null) {
-                    ExecutorServiceManager manager = camelContext.getExecutorServiceManager();
-                    ThreadPoolProfile profile = manager.getThreadPoolProfile(executorServiceRef);
-                    executorService = manager.newScheduledThreadPool(this, executorServiceRef, profile);
-                }
-                if (executorService == null) {
-                    throw new IllegalArgumentException("ExecutorServiceRef " + executorServiceRef + " not found in registry.");
-                }
-            } else {
-                // no explicit configured thread pool, so leave it up to the
-                // error handler to decide if it need
-                // a default thread pool from
-                // CamelContext#getErrorHandlerExecutorService
-                executorService = null;
-            }
-        }
-        return executorService;
-    }
-
     @Override
     public String toString() {
         return "DefaultErrorHandlerBuilder";
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
index f4c2eaf..0a7a6bc 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
@@ -16,12 +16,6 @@
  */
 package org.apache.camel.builder;
 
-import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.Processor;
-import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
-
 /**
  * Represents a proxy to an error handler builder which is resolved by named
  * reference
@@ -35,17 +29,6 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
     }
 
     @Override
-    public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
-        ErrorHandlerFactory handler = lookupErrorHandler(routeContext);
-        return ErrorHandlerReifier.reifier(routeContext, handler).createErrorHandler(processor);
-    }
-
-    @Override
-    public ErrorHandlerFactory getOrLookupErrorHandlerFactory(RouteContext routeContext) {
-        return lookupErrorHandler(routeContext);
-    }
-
-    @Override
     public boolean supportTransacted() {
         return supportTransacted;
     }
@@ -69,18 +52,6 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
         return ref;
     }
 
-    private ErrorHandlerBuilder lookupErrorHandler(RouteContext routeContext) {
-        ErrorHandlerBuilder handler = (ErrorHandlerBuilder)ErrorHandlerReifier.lookupErrorHandlerFactory(routeContext, getRef());
-        ObjectHelper.notNull(handler, "error handler '" + ref + "'");
-
-        // configure if the handler support transacted
-        supportTransacted = handler.supportTransacted();
-
-        routeContext.addErrorHandlerFactoryReference(this, handler);
-
-        return handler;
-    }
-
     @Override
     public String toString() {
         return "ErrorHandlerBuilderRef[" + ref + "]";
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
index d5b5ae8..66a042b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
@@ -16,27 +16,8 @@
  */
 package org.apache.camel.builder;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.NamedNode;
-import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.model.OnExceptionDefinition;
-import org.apache.camel.model.ProcessorDefinitionHelper;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.processor.ErrorHandler;
-import org.apache.camel.processor.errorhandler.ErrorHandlerSupport;
-import org.apache.camel.processor.errorhandler.ExceptionPolicy;
-import org.apache.camel.processor.errorhandler.ExceptionPolicyKey;
 import org.apache.camel.processor.errorhandler.ExceptionPolicyStrategy;
-import org.apache.camel.processor.errorhandler.RedeliveryErrorHandler;
-import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
-import org.apache.camel.spi.ClassResolver;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -45,89 +26,13 @@ import org.apache.camel.util.ObjectHelper;
 public abstract class ErrorHandlerBuilderSupport implements ErrorHandlerBuilder {
     private ExceptionPolicyStrategy exceptionPolicyStrategy;
 
-    protected void cloneBuilder(ErrorHandlerBuilderSupport other) {
-        other.exceptionPolicyStrategy = exceptionPolicyStrategy;
-    }
-
     @Override
-    public ErrorHandlerFactory getOrLookupErrorHandlerFactory(RouteContext routeContext) {
-        // only ErrorHandlerRef should override to lookup
-        return this;
+    public boolean supportTransacted() {
+        return false;
     }
 
-    /**
-     * Configures the other error handler based on this error handler.
-     *
-     * @param routeContext the route context
-     * @param handler the other error handler
-     */
-    public void configure(RouteContext routeContext, ErrorHandler handler) {
-        if (handler instanceof ErrorHandlerSupport) {
-            ErrorHandlerSupport handlerSupport = (ErrorHandlerSupport)handler;
-
-            Set<NamedNode> list = routeContext.getErrorHandlers(this);
-            for (NamedNode exception : list) {
-                addExceptionPolicy(handlerSupport, routeContext, (OnExceptionDefinition)exception);
-            }
-        }
-        if (handler instanceof RedeliveryErrorHandler) {
-            RedeliveryErrorHandler reh = (RedeliveryErrorHandler)handler;
-            boolean original = reh.isUseOriginalMessagePolicy() || reh.isUseOriginalBodyPolicy();
-            if (original) {
-                if (reh.isUseOriginalMessagePolicy() && reh.isUseOriginalBodyPolicy()) {
-                    throw new IllegalArgumentException("Cannot set both useOriginalMessage and useOriginalBody on the error handler");
-                }
-                // ensure allow original is turned on
-                routeContext.setAllowUseOriginalMessage(true);
-            }
-        }
-    }
-
-    public static void addExceptionPolicy(ErrorHandlerSupport handlerSupport, RouteContext routeContext, OnExceptionDefinition exceptionType) {
-        if (routeContext != null) {
-            // add error handler as child service so they get lifecycle handled
-            Processor errorHandler = routeContext.getOnException(exceptionType.getId());
-            handlerSupport.addErrorHandler(errorHandler);
-
-            // load exception classes
-            List<Class<? extends Throwable>> list;
-            if (ObjectHelper.isNotEmpty(exceptionType.getExceptions())) {
-                list = createExceptionClasses(exceptionType, routeContext.getCamelContext().getClassResolver());
-                for (Class<? extends Throwable> clazz : list) {
-                    String routeId = null;
-                    // only get the route id, if the exception type is route
-                    // scoped
-                    if (exceptionType.isRouteScoped()) {
-                        RouteDefinition route = ProcessorDefinitionHelper.getRoute(exceptionType);
-                        if (route != null) {
-                            routeId = route.getId();
-                        }
-                    }
-                    Predicate when = exceptionType.getOnWhen() != null ? exceptionType.getOnWhen().getExpression() : null;
-                    ExceptionPolicyKey key = new ExceptionPolicyKey(routeId, clazz, when);
-                    ExceptionPolicy policy = toExceptionPolicy(exceptionType, routeContext);
-                    handlerSupport.addExceptionPolicy(key, policy);
-                }
-            }
-        }
-    }
-
-    protected static ExceptionPolicy toExceptionPolicy(OnExceptionDefinition exceptionType, RouteContext routeContext) {
-        return ErrorHandlerReifier.createExceptionPolicy(exceptionType, routeContext.getCamelContext());
-    }
-
-    protected static List<Class<? extends Throwable>> createExceptionClasses(OnExceptionDefinition exceptionType, ClassResolver resolver) {
-        List<String> list = exceptionType.getExceptions();
-        List<Class<? extends Throwable>> answer = new ArrayList<>(list.size());
-        for (String name : list) {
-            try {
-                Class<? extends Throwable> type = resolver.resolveMandatoryClass(name, Throwable.class);
-                answer.add(type);
-            } catch (ClassNotFoundException e) {
-                throw RuntimeCamelException.wrapRuntimeCamelException(e);
-            }
-        }
-        return answer;
+    protected void cloneBuilder(ErrorHandlerBuilderSupport other) {
+        other.exceptionPolicyStrategy = exceptionPolicyStrategy;
     }
 
     /**
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
index 3565d35..85aa900 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
@@ -16,12 +16,7 @@
  */
 package org.apache.camel.builder;
 
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedExchange;
 import org.apache.camel.Processor;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.processor.DelegateAsyncProcessor;
 
 /**
  * A builder to disable the use of an error handler so that any exceptions are
@@ -34,31 +29,6 @@ import org.apache.camel.support.processor.DelegateAsyncProcessor;
 public class NoErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
 
     @Override
-    public Processor createErrorHandler(RouteContext routeContext, Processor processor) {
-        return new DelegateAsyncProcessor(processor) {
-            @Override
-            public boolean process(final Exchange exchange, final AsyncCallback callback) {
-                return super.process(exchange, new AsyncCallback() {
-                    @Override
-                    public void done(boolean doneSync) {
-                        exchange.adapt(ExtendedExchange.class).setRedeliveryExhausted(false);
-                        callback.done(doneSync);
-                    }
-                });
-            }
-
-            @Override
-            public String toString() {
-                if (processor == null) {
-                    // if no output then dont do any description
-                    return "";
-                }
-                return "NoErrorHandler[" + processor + "]";
-            }
-        };
-    }
-
-    @Override
     public boolean supportTransacted() {
         return false;
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index ebcfe43..1593bb3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -31,7 +31,6 @@ 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;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
similarity index 60%
copy from core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
copy to core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index c7c466c..821f74a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -14,22 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.reifier.errorhandler;
+package org.apache.camel.impl;
 
-import org.apache.camel.ErrorHandlerFactory;
+import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.builder.ErrorHandlerBuilderRef;
+import org.apache.camel.impl.engine.AbstractRouteContext;
+import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.RouteContext;
 
-public class ErrorHandlerRefReifier extends ErrorHandlerReifier<ErrorHandlerBuilderRef> {
+/**
+ * The context used to activate new routing rules
+ */
+public class DefaultRouteContext extends AbstractRouteContext implements RouteContext {
 
-    public ErrorHandlerRefReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        super(routeContext, (ErrorHandlerBuilderRef)definition);
+    public DefaultRouteContext(CamelContext camelContext, NamedNode route, String routeId) {
+        super(camelContext, route, routeId);
     }
 
     @Override
     public Processor createErrorHandler(Processor processor) throws Exception {
-        return definition.createErrorHandler(routeContext, processor);
+        return ErrorHandlerReifier.reifier(this, getErrorHandlerFactory())
+                .createErrorHandler(processor);
     }
 
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
index bbf1f22..b84af32 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
@@ -17,13 +17,11 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
 import org.apache.camel.model.DynamicRouterDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DynamicRouter;
-import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.RouteContext;
 
 public class DynamicRouterReifier extends ExpressionReifier<DynamicRouterDefinition<?>> {
@@ -45,12 +43,10 @@ public class DynamicRouterReifier extends ExpressionReifier<DynamicRouterDefinit
             dynamicRouter.setCacheSize(parseInt(definition.getCacheSize()));
         }
 
-        // and wrap this in an error handler
-        ErrorHandlerFactory builder = routeContext.getErrorHandlerFactory();
         // create error handler (create error handler directly to keep it light
         // weight,
         // instead of using ProcessorReifier.wrapInErrorHandler)
-        AsyncProcessor errorHandler = (AsyncProcessor)ErrorHandlerReifier.reifier(routeContext, builder).createErrorHandler(dynamicRouter.newRoutingSlipProcessorForErrorHandler());
+        AsyncProcessor errorHandler = (AsyncProcessor) routeContext.createErrorHandler(dynamicRouter.newRoutingSlipProcessorForErrorHandler());
         dynamicRouter.setErrorHandler(errorHandler);
 
         return dynamicRouter;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index c693938..8012339 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -661,7 +661,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         if (inheritErrorHandler == null || inheritErrorHandler) {
             log.trace("{} is configured to inheritErrorHandler", definition);
             Processor output = channel.getOutput();
-            Processor errorHandler = wrapInErrorHandler(output);
+            Processor errorHandler = wrapInErrorHandler(output, true);
             // set error handler on channel
             channel.setErrorHandler(errorHandler);
         } else {
@@ -673,17 +673,21 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
      * Wraps the given output in an error handler
      *
      * @param output the output
+     * @param longLived if the processor is longLived or not
      * @return the output wrapped with the error handler
      * @throws Exception can be thrown if failed to create error handler builder
      */
-    protected Processor wrapInErrorHandler(Processor output) throws Exception {
+    protected Processor wrapInErrorHandler(Processor output, boolean longLived) throws Exception {
         ErrorHandlerFactory builder = routeContext.getErrorHandlerFactory();
+
         // create error handler
         Processor errorHandler = ErrorHandlerReifier.reifier(routeContext, builder).createErrorHandler(output);
 
-        // invoke lifecycles so we can manage this error handler builder
-        for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
-            strategy.onErrorHandlerAdd(routeContext, errorHandler, builder);
+        if (longLived) {
+            // invoke lifecycles so we can manage this error handler builder
+            for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
+                strategy.onErrorHandlerAdd(routeContext, errorHandler, builder);
+            }
         }
 
         return errorHandler;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
index 81aac98..9ad47d8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
@@ -99,7 +99,7 @@ public class RecipientListReifier extends ProcessorReifier<RecipientListDefiniti
         // special error handling
         // when sending to the recipients individually
         Processor evalProcessor = new EvaluateExpressionProcessor(expression);
-        evalProcessor = super.wrapInErrorHandler(evalProcessor);
+        evalProcessor = wrapInErrorHandler(evalProcessor, true);
 
         pipe.add(evalProcessor);
         pipe.add(answer);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 7b5b098..c403cc1 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -24,7 +24,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 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.RuntimeCamelException;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java
index 29db4da..611392d 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java
@@ -17,13 +17,11 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RoutingSlipDefinition;
 import org.apache.camel.processor.RoutingSlip;
-import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.RouteContext;
 
 import static org.apache.camel.model.RoutingSlipDefinition.DEFAULT_DELIMITER;
@@ -51,11 +49,8 @@ public class RoutingSlipReifier extends ExpressionReifier<RoutingSlipDefinition<
         }
 
         // and wrap this in an error handler
-        ErrorHandlerFactory builder = routeContext.getErrorHandlerFactory();
-        // create error handler (create error handler directly to keep it light
-        // weight,
-        // instead of using ProcessorDefinition.wrapInErrorHandler)
-        AsyncProcessor errorHandler = (AsyncProcessor)ErrorHandlerReifier.reifier(routeContext, builder).createErrorHandler(routingSlip.newRoutingSlipProcessorForErrorHandler());
+        AsyncProcessor processor = routingSlip.newRoutingSlipProcessorForErrorHandler();
+        AsyncProcessor errorHandler = (AsyncProcessor) wrapInErrorHandler(processor, false);
         routingSlip.setErrorHandler(errorHandler);
 
         return routingSlip;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
index 9a69586..063b543 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
@@ -49,7 +49,7 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
         SendDynamicProcessor dynamicTo = (SendDynamicProcessor)super.createProcessor();
 
         // create error handler we need to use for processing the wire tapped
-        Processor target = wrapInErrorHandler(dynamicTo);
+        Processor target = wrapInErrorHandler(dynamicTo, true);
 
         // and wrap in unit of work
         CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, target);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
index c7c466c..df793fb 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
@@ -20,6 +20,7 @@ import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.ObjectHelper;
 
 public class ErrorHandlerRefReifier extends ErrorHandlerReifier<ErrorHandlerBuilderRef> {
 
@@ -29,7 +30,16 @@ public class ErrorHandlerRefReifier extends ErrorHandlerReifier<ErrorHandlerBuil
 
     @Override
     public Processor createErrorHandler(Processor processor) throws Exception {
-        return definition.createErrorHandler(routeContext, processor);
+        ErrorHandlerFactory handler = lookupErrorHandler(routeContext);
+        return ErrorHandlerReifier.reifier(routeContext, handler).createErrorHandler(processor);
+    }
+
+    private ErrorHandlerFactory lookupErrorHandler(RouteContext routeContext) {
+        ErrorHandlerFactory handler =
+                ErrorHandlerReifier.lookupErrorHandlerFactory(routeContext, definition.getRef());
+        ObjectHelper.notNull(handler, "error handler '" + definition.getRef() + "'");
+        routeContext.addErrorHandlerFactoryReference(definition, handler);
+        return handler;
     }
 
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
index c769767..f58379c 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.reifier.errorhandler;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.function.BiFunction;
 
@@ -35,16 +37,17 @@ import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.ErrorHandlerBuilderSupport;
 import org.apache.camel.builder.NoErrorHandlerBuilder;
 import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.RedeliveryPolicyDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.ErrorHandler;
 import org.apache.camel.processor.errorhandler.ErrorHandlerSupport;
 import org.apache.camel.processor.errorhandler.ExceptionPolicy;
 import org.apache.camel.processor.errorhandler.ExceptionPolicy.RedeliveryOption;
+import org.apache.camel.processor.errorhandler.ExceptionPolicyKey;
 import org.apache.camel.processor.errorhandler.RedeliveryErrorHandler;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
 import org.apache.camel.reifier.AbstractReifier;
-import org.apache.camel.reifier.language.ExpressionReifier;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -80,44 +83,34 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
         BiFunction<RouteContext, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>> reifier = ERROR_HANDLERS.get(definition.getClass());
         if (reifier != null) {
             return reifier.apply(routeContext, definition);
-        } else if (definition instanceof ErrorHandlerBuilderSupport) {
-            return new ErrorHandlerReifier<ErrorHandlerBuilderSupport>(routeContext, (ErrorHandlerBuilderSupport)definition) {
-                @Override
-                public Processor createErrorHandler(Processor processor) throws Exception {
-                    return definition.createErrorHandler(routeContext, processor);
-                }
-            };
-        } else {
-            throw new IllegalStateException("Unsupported definition: " + definition);
         }
+        throw new IllegalStateException("Unsupported definition: " + definition);
     }
 
-    public static ExceptionPolicy createExceptionPolicy(OnExceptionDefinition def, CamelContext camelContext) {
+    public ExceptionPolicy createExceptionPolicy(OnExceptionDefinition def) {
         Predicate handled = def.getHandledPolicy();
         if (handled == null && def.getHandled() != null) {
-            handled = ExpressionReifier.reifier(camelContext, def.getHandled()).createPredicate();
+            handled = createPredicate(def.getHandled());
         }
         Predicate continued = def.getContinuedPolicy();
         if (continued == null && def.getContinued() != null) {
-            continued = ExpressionReifier.reifier(camelContext, def.getContinued()).createPredicate();
+            continued = createPredicate(def.getContinued());
         }
         Predicate retryWhile = def.getRetryWhilePolicy();
         if (retryWhile == null && def.getRetryWhile() != null) {
-            retryWhile = ExpressionReifier.reifier(camelContext, def.getRetryWhile()).createPredicate();
+            retryWhile = createPredicate(def.getRetryWhile());
         }
         Processor onRedelivery = def.getOnRedelivery();
         if (onRedelivery == null && def.getOnRedeliveryRef() != null) {
-            onRedelivery = CamelContextHelper.mandatoryLookup(camelContext,
-                    CamelContextHelper.parseText(camelContext, def.getOnRedeliveryRef()), Processor.class);
+            onRedelivery = mandatoryLookup(parseString(def.getOnRedeliveryRef()), Processor.class);
         }
         Processor onExceptionOccurred = def.getOnExceptionOccurred();
         if (onExceptionOccurred == null && def.getOnExceptionOccurredRef() != null) {
-            onExceptionOccurred = CamelContextHelper.mandatoryLookup(camelContext,
-                    CamelContextHelper.parseText(camelContext, def.getOnExceptionOccurredRef()), Processor.class);
+            onExceptionOccurred = mandatoryLookup(parseString(def.getOnExceptionOccurredRef()), Processor.class);
         }
         return new ExceptionPolicy(def.getId(), CamelContextHelper.getRouteId(def),
-                                   def.getUseOriginalMessage() != null && CamelContextHelper.parseBoolean(camelContext, def.getUseOriginalMessage()),
-                                   def.getUseOriginalBody() != null && CamelContextHelper.parseBoolean(camelContext, def.getUseOriginalBody()),
+                                   parseBoolean(def.getUseOriginalMessage(), false),
+                                   parseBoolean(def.getUseOriginalBody(), false),
                                    ObjectHelper.isNotEmpty(def.getOutputs()), handled,
                                    continued, retryWhile, onRedelivery,
                                    onExceptionOccurred, def.getRedeliveryPolicyRef(),
@@ -262,6 +255,47 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
         return !DEFAULT_ERROR_HANDLER_BUILDER.equals(ref);
     }
 
+    public void addExceptionPolicy(ErrorHandlerSupport handlerSupport, OnExceptionDefinition exceptionType) {
+        // add error handler as child service so they get lifecycle handled
+        Processor errorHandler = routeContext.getOnException(exceptionType.getId());
+        handlerSupport.addErrorHandler(errorHandler);
+
+        // load exception classes
+        List<Class<? extends Throwable>> list;
+        if (ObjectHelper.isNotEmpty(exceptionType.getExceptions())) {
+            list = createExceptionClasses(exceptionType);
+            for (Class<? extends Throwable> clazz : list) {
+                String routeId = null;
+                // only get the route id, if the exception type is route
+                // scoped
+                if (exceptionType.isRouteScoped()) {
+                    RouteDefinition route = ProcessorDefinitionHelper.getRoute(exceptionType);
+                    if (route != null) {
+                        routeId = route.getId();
+                    }
+                }
+                Predicate when = exceptionType.getOnWhen() != null ? exceptionType.getOnWhen().getExpression() : null;
+                ExceptionPolicyKey key = new ExceptionPolicyKey(routeId, clazz, when);
+                ExceptionPolicy policy = createExceptionPolicy(exceptionType);
+                handlerSupport.addExceptionPolicy(key, policy);
+            }
+        }
+    }
+
+    protected List<Class<? extends Throwable>> createExceptionClasses(OnExceptionDefinition exceptionType) {
+        List<String> list = exceptionType.getExceptions();
+        List<Class<? extends Throwable>> answer = new ArrayList<>(list.size());
+        for (String name : list) {
+            try {
+                Class<? extends Throwable> type = camelContext.getClassResolver().resolveMandatoryClass(name, Throwable.class);
+                answer.add(type);
+            } catch (ClassNotFoundException e) {
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
+            }
+        }
+        return answer;
+    }
+
     /**
      * Creates the error handler
      *
@@ -276,7 +310,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
             ErrorHandlerSupport handlerSupport = (ErrorHandlerSupport)handler;
 
             for (NamedNode exception : routeContext.getErrorHandlers(definition)) {
-                ErrorHandlerBuilderSupport.addExceptionPolicy(handlerSupport, routeContext, (OnExceptionDefinition)exception);
+                addExceptionPolicy(handlerSupport, (OnExceptionDefinition) exception);
             }
         }
         if (handler instanceof RedeliveryErrorHandler) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java
index 87922b6..9ecc356 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java
@@ -22,9 +22,10 @@ import java.util.List;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.builder.ErrorHandlerBuilderSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier;
+import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
 
 public class ErrorHandlerSupportTest extends ContextTestSupport {
@@ -36,7 +37,7 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
         exceptions.add(ParentException.class);
 
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        ErrorHandlerBuilderSupport.addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(exceptions));
+        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(exceptions));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 0));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 1));
@@ -49,7 +50,7 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
         exceptions.add(ChildException.class);
 
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        ErrorHandlerBuilderSupport.addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(exceptions));
+        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(exceptions));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 1));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 0));
@@ -58,8 +59,8 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
     @Test
     public void testTwoPolicyChildFirst() {
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        ErrorHandlerBuilderSupport.addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ChildException.class));
-        ErrorHandlerBuilderSupport.addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ParentException.class));
+        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ChildException.class));
+        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ParentException.class));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 0));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 0));
@@ -68,13 +69,17 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
     @Test
     public void testTwoPolicyChildLast() {
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        ErrorHandlerBuilderSupport.addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ParentException.class));
-        ErrorHandlerBuilderSupport.addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ChildException.class));
+        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ParentException.class));
+        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ChildException.class));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 0));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 0));
     }
 
+    private static void addExceptionPolicy(ErrorHandlerSupport handlerSupport, RouteContext routeContext, OnExceptionDefinition exceptionType) {
+        new DefaultErrorHandlerReifier<>(routeContext, null).addExceptionPolicy(handlerSupport, exceptionType);
+    }
+
     private static String getExceptionPolicyFor(ErrorHandlerSupport support, Throwable childException, int index) {
         return support.getExceptionPolicy(null, childException).getExceptions().get(index);
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java
index 24bd5b1..62ee77c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java
@@ -24,15 +24,20 @@ import java.net.SocketException;
 import java.util.HashMap;
 
 import org.apache.camel.AlreadyStoppedException;
+import org.apache.camel.CamelContext;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.ExchangeTimedOutException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ValidationException;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultRouteContext;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.processor.errorhandler.DefaultExceptionPolicyStrategy;
 import org.apache.camel.processor.errorhandler.ExceptionPolicy;
 import org.apache.camel.processor.errorhandler.ExceptionPolicyKey;
+import org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier;
 import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
+import org.apache.camel.spi.RouteContext;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -48,7 +53,10 @@ public class DefaultExceptionPolicyStrategyTest extends Assert {
     private ExceptionPolicy type3;
 
     private ExceptionPolicy exceptionPolicy(Class<? extends Throwable> exceptionClass) {
-        return ErrorHandlerReifier.createExceptionPolicy(new OnExceptionDefinition(exceptionClass), null);
+        CamelContext cc = new DefaultCamelContext();
+        RouteContext context = new DefaultRouteContext(cc, null, null);
+        return new DefaultErrorHandlerReifier<>(context, null)
+                .createExceptionPolicy(new OnExceptionDefinition(exceptionClass));
     }
 
     private void setupPolicies() {
diff --git a/core/camel-core/src/test/java/org/apache/camel/reifier/DataFormatReifierTest.java b/core/camel-core/src/test/java/org/apache/camel/reifier/DataFormatReifierTest.java
index e98248d..9d7d481 100644
--- a/core/camel-core/src/test/java/org/apache/camel/reifier/DataFormatReifierTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/reifier/DataFormatReifierTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.reifier;
 
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.model.dataformat.CustomDataFormat;
 import org.apache.camel.reifier.dataformat.CustomDataFormatReifier;
 import org.apache.camel.reifier.dataformat.DataFormatReifier;
@@ -27,17 +28,18 @@ import static junit.framework.TestCase.fail;
 
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class DataFormatReifierTest {
+
     @Test
     public void testHandleCustomDataFormat() {
+        DefaultCamelContext context = new DefaultCamelContext();
         try {
-            DataFormatReifier.reifier(null, new MyDataFormat());
-
+            DataFormatReifier.reifier(context, new MyDataFormat());
             fail("Should throw IllegalStateException instead");
         } catch (IllegalStateException e) {
         }
 
         DataFormatReifier.registerReifier(MyDataFormat.class, CustomDataFormatReifier::new);
-        DataFormatReifier.reifier(null, new MyDataFormat());
+        DataFormatReifier.reifier(context, new MyDataFormat());
     }
 
     public static class MyDataFormat extends CustomDataFormat {
diff --git a/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java b/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java
index d6a0c86..1deeae8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.reifier;
 
-import org.apache.camel.impl.engine.DefaultRouteContext;
+import org.apache.camel.impl.DefaultRouteContext;
 import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
index 20589ee..75bb00b 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
@@ -27,7 +27,6 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.NoSuchEndpointException;
-import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.spi.NormalizedEndpointUri;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.RouteStartupOrder;


[camel] 14/32: Use @JdkService annotation to generate META-INF services files for FactoryFinder

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 937aaf7608163bf0e1ec6826f76c502d0f504628
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 17:22:10 2020 +0100

    Use @JdkService annotation to generate META-INF services files for FactoryFinder
---
 .../services/org/apache/camel/bean-processor-factory   |  2 ++
 .../services/org/apache/camel/bean-proxy-factory       |  2 ++
 .../component/bean/DefaultBeanProcessorFactory.java    |  2 ++
 .../camel/component/bean/DefaultBeanProxyFactory.java  |  2 ++
 .../services/org/apache/camel/bean-processor-factory   | 18 ------------------
 .../services/org/apache/camel/bean-proxy-factory       | 18 ------------------
 .../services/org/apache/camel/reactive-executor        |  2 ++
 .../camel/reactive/vertx/VertXReactiveExecutor.java    |  2 ++
 .../services/org/apache/camel/reactive-executor        | 18 ------------------
 .../camel/spring/spi/SpringTransactionPolicy.java      |  2 --
 .../org/apache/camel/spi/annotations/JdkService.java   |  2 +-
 .../org/apache/camel/catalog/RuntimeCamelCatalog.java  |  5 +++++
 .../org/apache/camel/spi/BeanProcessorFactory.java     |  5 +++++
 .../java/org/apache/camel/spi/BeanProxyFactory.java    |  5 +++++
 .../java/org/apache/camel/spi/HeadersMapFactory.java   |  7 ++++++-
 .../java/org/apache/camel/spi/ModelToXMLDumper.java    |  5 +++++
 .../java/org/apache/camel/spi/PropertiesComponent.java |  5 +++++
 .../java/org/apache/camel/spi/ReactiveExecutor.java    |  5 +++++
 .../java/org/apache/camel/spi/RestRegistryFactory.java |  5 +++++
 .../apache/camel/spi/XMLRoutesDefinitionLoader.java    |  5 +++++
 .../org/apache/camel/properties-component-factory      |  2 ++
 .../component/properties/PropertiesComponent.java      |  2 ++
 .../impl/engine/BeanProcessorFactoryResolver.java      |  2 +-
 .../camel/impl/engine/BeanProxyFactoryResolver.java    |  2 +-
 .../camel/impl/engine/HeadersMapFactoryResolver.java   |  2 +-
 .../engine/PropertiesComponentFactoryResolver.java     |  2 +-
 .../camel/impl/engine/ReactiveExecutorResolver.java    |  2 +-
 .../camel/impl/engine/RestRegistryFactoryResolver.java |  2 +-
 .../camel/impl/engine/RuntimeCamelCatalogResolver.java |  2 +-
 .../org/apache/camel/properties-component-factory      | 18 ------------------
 .../services/org/apache/camel/runtime-camelcatalog     |  2 ++
 .../camel/catalog/impl/DefaultRuntimeCamelCatalog.java |  2 ++
 .../services/org/apache/camel/runtime-camelcatalog     | 18 ------------------
 .../apache/camel/impl/ModelToXMLDumperResolver.java    |  2 +-
 .../camel/impl/XMLRoutesDefinitionLoaderResolver.java  |  2 +-
 .../services/org/apache/camel/headers-map-factory      |  2 ++
 .../component/headersmap/FastHeadersMapFactory.java    |  2 ++
 .../services/org/apache/camel/headers-map-factory      | 18 ------------------
 .../services/org/apache/camel/xmlroutes-loader         |  2 ++
 .../xml/in/ModelParserXMLRoutesDefinitionLoader.java   |  2 ++
 .../services/org/apache/camel/xmlroutes-loader         | 18 ------------------
 .../META-INF/services/org/apache/camel/modelxml-dumper |  2 ++
 .../services/org/apache/camel/xmlroutes-loader         |  2 ++
 .../apache/camel/xml/jaxb/JaxbModelToXMLDumper.java    |  2 ++
 .../camel/xml/jaxb/JaxbXMLRoutesDefinitionLoader.java  |  2 ++
 .../META-INF/services/org/apache/camel/modelxml-dumper | 18 ------------------
 .../services/org/apache/camel/xmlroutes-loader         | 18 ------------------
 .../apache/camel/maven/packaging/SpiGeneratorMojo.java |  2 +-
 48 files changed, 93 insertions(+), 176 deletions(-)

diff --git a/components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-processor-factory b/components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-processor-factory
new file mode 100644
index 0000000..42c40f5
--- /dev/null
+++ b/components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-processor-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.bean.DefaultBeanProcessorFactory
diff --git a/components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-proxy-factory b/components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-proxy-factory
new file mode 100644
index 0000000..f8a9acd
--- /dev/null
+++ b/components/camel-bean/src/generated/resources/META-INF/services/org/apache/camel/bean-proxy-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.bean.DefaultBeanProxyFactory
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
index f5748bd..a56edc2 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProcessorFactory.java
@@ -23,11 +23,13 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.BeanProcessorFactory;
+import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@JdkService(BeanProcessorFactory.FACTORY)
 public final class DefaultBeanProcessorFactory implements BeanProcessorFactory {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultBeanProcessorFactory.class);
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProxyFactory.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProxyFactory.java
index b2eeaa6..d88ed0c 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProxyFactory.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultBeanProxyFactory.java
@@ -18,7 +18,9 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.BeanProxyFactory;
+import org.apache.camel.spi.annotations.JdkService;
 
+@JdkService(BeanProxyFactory.FACTORY)
 public final class DefaultBeanProxyFactory implements BeanProxyFactory {
 
     public DefaultBeanProxyFactory() {
diff --git a/components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-processor-factory b/components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-processor-factory
deleted file mode 100644
index 289a548..0000000
--- a/components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-processor-factory
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.component.bean.DefaultBeanProcessorFactory
diff --git a/components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-proxy-factory b/components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-proxy-factory
deleted file mode 100644
index 58e2e9a..0000000
--- a/components/camel-bean/src/main/resources/META-INF/services/org/apache/camel/bean-proxy-factory
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.component.bean.DefaultBeanProxyFactory
diff --git a/components/camel-reactive-executor-vertx/src/generated/resources/META-INF/services/org/apache/camel/reactive-executor b/components/camel-reactive-executor-vertx/src/generated/resources/META-INF/services/org/apache/camel/reactive-executor
new file mode 100644
index 0000000..1e1e324
--- /dev/null
+++ b/components/camel-reactive-executor-vertx/src/generated/resources/META-INF/services/org/apache/camel/reactive-executor
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.reactive.vertx.VertXReactiveExecutor
diff --git a/components/camel-reactive-executor-vertx/src/main/java/org/apache/camel/reactive/vertx/VertXReactiveExecutor.java b/components/camel-reactive-executor-vertx/src/main/java/org/apache/camel/reactive/vertx/VertXReactiveExecutor.java
index bdaac55..9fe72ec 100644
--- a/components/camel-reactive-executor-vertx/src/main/java/org/apache/camel/reactive/vertx/VertXReactiveExecutor.java
+++ b/components/camel-reactive-executor-vertx/src/main/java/org/apache/camel/reactive/vertx/VertXReactiveExecutor.java
@@ -20,6 +20,7 @@ import io.vertx.core.Vertx;
 import org.apache.camel.Experimental;
 import org.apache.camel.StaticService;
 import org.apache.camel.spi.ReactiveExecutor;
+import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.support.service.ServiceSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,6 +31,7 @@ import org.slf4j.LoggerFactory;
  * NOTE: This is an experimental implementation (use with care)
  */
 @Experimental
+@JdkService(ReactiveExecutor.FACTORY)
 public class VertXReactiveExecutor extends ServiceSupport implements ReactiveExecutor, StaticService {
 
     private static final Logger LOG = LoggerFactory.getLogger(VertXReactiveExecutor.class);
diff --git a/components/camel-reactive-executor-vertx/src/main/resources/META-INF/services/org/apache/camel/reactive-executor b/components/camel-reactive-executor-vertx/src/main/resources/META-INF/services/org/apache/camel/reactive-executor
deleted file mode 100644
index 554c5d6..0000000
--- a/components/camel-reactive-executor-vertx/src/main/resources/META-INF/services/org/apache/camel/reactive-executor
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.reactive.vertx.VertXReactiveExecutor
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 4681af6..1226359 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
@@ -25,7 +25,6 @@ import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.Route;
 import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,7 +34,6 @@ import org.springframework.transaction.support.TransactionTemplate;
 /**
  * Wraps the processor in a Spring transaction
  */
-@JdkService(TransactedPolicy.class)
 public class SpringTransactionPolicy implements TransactedPolicy {
     private static final Logger LOG = LoggerFactory.getLogger(SpringTransactionPolicy.class);
     private TransactionTemplate template;
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/JdkService.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/JdkService.java
index 35f9489..f26b68f 100644
--- a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/JdkService.java
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/JdkService.java
@@ -28,6 +28,6 @@ import java.lang.annotation.Target;
 @ServiceFactory(ServiceFactory.JDK_SERVICE)
 public @interface JdkService {
 
-    Class value();
+    String value();
 
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/catalog/RuntimeCamelCatalog.java b/core/camel-api/src/main/java/org/apache/camel/catalog/RuntimeCamelCatalog.java
index cfc23e6..5a29b86 100644
--- a/core/camel-api/src/main/java/org/apache/camel/catalog/RuntimeCamelCatalog.java
+++ b/core/camel-api/src/main/java/org/apache/camel/catalog/RuntimeCamelCatalog.java
@@ -31,6 +31,11 @@ import org.apache.camel.spi.SendDynamicAware;
 public interface RuntimeCamelCatalog extends StaticService, CamelContextAware {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "runtime-camelcatalog";
+
+    /**
      * Returns the component information as JSon format.
      * <p/>
      * This API is needed by {@link ComponentVerifierExtension}.
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/BeanProcessorFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/BeanProcessorFactory.java
index 256d1ae..f453785 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/BeanProcessorFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/BeanProcessorFactory.java
@@ -31,6 +31,11 @@ import org.apache.camel.Processor;
 public interface BeanProcessorFactory {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "bean-processor-factory";
+
+    /**
      * Creates the bean processor from the existing bean instance
      *
      * @param camelContext  the camel context
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/BeanProxyFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/BeanProxyFactory.java
index 2878ef0..4feb071 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/BeanProxyFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/BeanProxyFactory.java
@@ -26,6 +26,11 @@ import org.apache.camel.Endpoint;
 public interface BeanProxyFactory {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "bean-proxy-factory";
+
+    /**
      * Creates a proxy bean facaded with the interfaces that when invoked will send the data as a message to a Camel endpoint.
      *
      * @param endpoint  the endpoint to send to when the proxy is invoked
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
index b3f52ec..025abcf 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
@@ -23,11 +23,16 @@ import org.apache.camel.Message;
 /**
  * Factory to create the {@link Map} implementation to use for storing headers on {@link Message}.
  *
- * @see org.apache.camel.impl.DefaultHeadersMapFactory
+ * @see org.apache.camel.impl.engine.DefaultHeadersMapFactory
  */
 public interface HeadersMapFactory {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "headers-map-factory";
+
+    /**
      * Creates a new empty {@link Map}
      *
      * @return new empty map
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java b/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java
index ff7ffc6..40f383d 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ModelToXMLDumper.java
@@ -25,6 +25,11 @@ import org.apache.camel.NamedNode;
 public interface ModelToXMLDumper {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "modelxml-dumper";
+
+    /**
      * Dumps the definition as XML
      *
      * @param context the CamelContext
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java b/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java
index 72ec892..ff73a77 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java
@@ -30,6 +30,11 @@ import org.apache.camel.StaticService;
 public interface PropertiesComponent extends StaticService {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "properties-component-factory";
+
+    /**
      * The prefix token.
      */
     String PREFIX_TOKEN = "{{";
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ReactiveExecutor.java b/core/camel-api/src/main/java/org/apache/camel/spi/ReactiveExecutor.java
index 56630ea..3de9d65 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ReactiveExecutor.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ReactiveExecutor.java
@@ -22,6 +22,11 @@ package org.apache.camel.spi;
 public interface ReactiveExecutor {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "reactive-executor";
+
+    /**
      * Schedules the task to be run
      *
      * @param runnable    the task
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistryFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistryFactory.java
index 1f12319..bdebd28 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistryFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistryFactory.java
@@ -22,6 +22,11 @@ package org.apache.camel.spi;
 public interface RestRegistryFactory {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "rest-registry-factory";
+
+    /**
      * Create a new {@link RestRegistry}.
      */
     RestRegistry createRegistry();
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/XMLRoutesDefinitionLoader.java b/core/camel-api/src/main/java/org/apache/camel/spi/XMLRoutesDefinitionLoader.java
index 2a3a741..bc01a2d 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/XMLRoutesDefinitionLoader.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/XMLRoutesDefinitionLoader.java
@@ -28,6 +28,11 @@ import org.apache.camel.NamedNode;
 public interface XMLRoutesDefinitionLoader {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "xmlroutes-loader";
+
+    /**
      * Loads from XML into routes.
      */
     Object loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception;
diff --git a/core/camel-base/src/generated/resources/META-INF/services/org/apache/camel/properties-component-factory b/core/camel-base/src/generated/resources/META-INF/services/org/apache/camel/properties-component-factory
new file mode 100644
index 0000000..106f5da
--- /dev/null
+++ b/core/camel-base/src/generated/resources/META-INF/services/org/apache/camel/properties-component-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.properties.PropertiesComponent
diff --git a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index c971694..a3c50db 100644
--- a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -37,6 +37,7 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.LoadablePropertiesSource;
 import org.apache.camel.spi.PropertiesSource;
+import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.support.OrderedComparator;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.service.ServiceSupport;
@@ -50,6 +51,7 @@ import org.slf4j.LoggerFactory;
  * The properties component allows you to use property placeholders in Camel.
  */
 @ManagedResource(description = "Managed PropertiesComponent")
+@JdkService(org.apache.camel.spi.PropertiesComponent.FACTORY)
 public class PropertiesComponent extends ServiceSupport implements org.apache.camel.spi.PropertiesComponent, StaticService, CamelContextAware {
 
     /**
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
index f0e1c91..df2945d 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
@@ -40,7 +40,7 @@ public class BeanProcessorFactoryResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("bean-processor-factory", context);
+            type = findFactory(BeanProcessorFactory.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
index 6fda9ed..78a9a98 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
@@ -40,7 +40,7 @@ public class BeanProxyFactoryResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("bean-proxy-factory", context);
+            type = findFactory(BeanProxyFactory.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
index 116077d..a2059bb 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
@@ -42,7 +42,7 @@ public class HeadersMapFactoryResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("headers-map-factory", context);
+            type = findFactory(HeadersMapFactory.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
index e9beb5b..1da4e68 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
@@ -40,7 +40,7 @@ public class PropertiesComponentFactoryResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("properties-component-factory", context);
+            type = findFactory(PropertiesComponent.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
index c26bda1..563c803 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
@@ -40,7 +40,7 @@ public class ReactiveExecutorResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("reactive-executor", context);
+            type = findFactory(ReactiveExecutor.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
index 162f9e5..2726bca 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
@@ -42,7 +42,7 @@ public class RestRegistryFactoryResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("rest-registry-factory", context);
+            type = findFactory(RestRegistryFactory.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
index afd1ba3..8c97cf0 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
@@ -42,7 +42,7 @@ public class RuntimeCamelCatalogResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("runtime-camelcatalog", context);
+            type = findFactory(RuntimeCamelCatalog.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-base/src/main/resources/META-INF/services/org/apache/camel/properties-component-factory b/core/camel-base/src/main/resources/META-INF/services/org/apache/camel/properties-component-factory
deleted file mode 100644
index 9f34c8f..0000000
--- a/core/camel-base/src/main/resources/META-INF/services/org/apache/camel/properties-component-factory
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.component.properties.PropertiesComponent
diff --git a/core/camel-core-catalog/src/generated/resources/META-INF/services/org/apache/camel/runtime-camelcatalog b/core/camel-core-catalog/src/generated/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
new file mode 100644
index 0000000..9cc33e0
--- /dev/null
+++ b/core/camel-core-catalog/src/generated/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog
diff --git a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
index 3c7e904..89c821f 100644
--- a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
+++ b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
@@ -22,6 +22,7 @@ import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
+import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
 import org.apache.camel.tooling.model.EipModel;
@@ -32,6 +33,7 @@ import org.apache.camel.tooling.model.OtherModel;
 /**
  * Default {@link RuntimeCamelCatalog}.
  */
+@JdkService(RuntimeCamelCatalog.FACTORY)
 public class DefaultRuntimeCamelCatalog extends AbstractCamelCatalog implements RuntimeCamelCatalog {
 
     private CamelContext camelContext;
diff --git a/core/camel-core-catalog/src/main/resources/META-INF/services/org/apache/camel/runtime-camelcatalog b/core/camel-core-catalog/src/main/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
deleted file mode 100644
index 7cf9492..0000000
--- a/core/camel-core-catalog/src/main/resources/META-INF/services/org/apache/camel/runtime-camelcatalog
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
index 6441a1c..57ac62f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
@@ -43,7 +43,7 @@ public class ModelToXMLDumperResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("modelxml-dumper", context);
+            type = findFactory(ModelToXMLDumper.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
index 822be8c..000c7cb 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
@@ -44,7 +44,7 @@ public class XMLRoutesDefinitionLoaderResolver {
         // use factory finder to find a custom implementations
         Class<?> type = null;
         try {
-            type = findFactory("xmlroutes-loader", context);
+            type = findFactory(XMLRoutesDefinitionLoader.FACTORY, context);
         } catch (Exception e) {
             // ignore
         }
diff --git a/core/camel-headersmap/src/generated/resources/META-INF/services/org/apache/camel/headers-map-factory b/core/camel-headersmap/src/generated/resources/META-INF/services/org/apache/camel/headers-map-factory
new file mode 100644
index 0000000..8acf6f8
--- /dev/null
+++ b/core/camel-headersmap/src/generated/resources/META-INF/services/org/apache/camel/headers-map-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.headersmap.FastHeadersMapFactory
diff --git a/core/camel-headersmap/src/main/java/org/apache/camel/component/headersmap/FastHeadersMapFactory.java b/core/camel-headersmap/src/main/java/org/apache/camel/component/headersmap/FastHeadersMapFactory.java
index b71ec3e..57ce38a2 100644
--- a/core/camel-headersmap/src/main/java/org/apache/camel/component/headersmap/FastHeadersMapFactory.java
+++ b/core/camel-headersmap/src/main/java/org/apache/camel/component/headersmap/FastHeadersMapFactory.java
@@ -20,10 +20,12 @@ import java.util.Map;
 
 import com.cedarsoftware.util.CaseInsensitiveMap;
 import org.apache.camel.spi.HeadersMapFactory;
+import org.apache.camel.spi.annotations.JdkService;
 
 /**
  * A faster {@link HeadersMapFactory} which is using the {@link com.cedarsoftware.util.CaseInsensitiveMap} map implementation.
  */
+@JdkService(HeadersMapFactory.FACTORY)
 public class FastHeadersMapFactory implements HeadersMapFactory {
 
     @Override
diff --git a/core/camel-headersmap/src/main/resources/META-INF/services/org/apache/camel/headers-map-factory b/core/camel-headersmap/src/main/resources/META-INF/services/org/apache/camel/headers-map-factory
deleted file mode 100644
index 1526408..0000000
--- a/core/camel-headersmap/src/main/resources/META-INF/services/org/apache/camel/headers-map-factory
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.component.headersmap.FastHeadersMapFactory
diff --git a/core/camel-xml-io/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader b/core/camel-xml-io/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader
new file mode 100644
index 0000000..bfd59e0
--- /dev/null
+++ b/core/camel-xml-io/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.xml.in.ModelParserXMLRoutesDefinitionLoader
diff --git a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/ModelParserXMLRoutesDefinitionLoader.java b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/ModelParserXMLRoutesDefinitionLoader.java
index e166c52..037300c 100644
--- a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/ModelParserXMLRoutesDefinitionLoader.java
+++ b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/ModelParserXMLRoutesDefinitionLoader.java
@@ -21,11 +21,13 @@ import java.io.InputStream;
 import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.spi.XMLRoutesDefinitionLoader;
+import org.apache.camel.spi.annotations.JdkService;
 
 /**
  * {@link XMLRoutesDefinitionLoader} that uses {@link ModelParser} to load and parse the routes from XML
  * which is fast and light-weight compared to the default that uses JAXB.
  */
+@JdkService(XMLRoutesDefinitionLoader.FACTORY)
 public class ModelParserXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoader {
 
     public static final String NAMESPACE = "http://camel.apache.org/schema/spring";
diff --git a/core/camel-xml-io/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader b/core/camel-xml-io/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader
deleted file mode 100644
index 9ef5255..0000000
--- a/core/camel-xml-io/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.xml.in.ModelParserXMLRoutesDefinitionLoader
diff --git a/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/modelxml-dumper b/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/modelxml-dumper
new file mode 100644
index 0000000..1285809
--- /dev/null
+++ b/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/modelxml-dumper
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.xml.jaxb.JaxbModelToXMLDumper
diff --git a/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader b/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader
new file mode 100644
index 0000000..f0e0768
--- /dev/null
+++ b/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/xmlroutes-loader
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.xml.jaxb.JaxbXMLRoutesDefinitionLoader
diff --git a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
index 921c8a2..95fafa0 100644
--- a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
+++ b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
@@ -55,6 +55,7 @@ import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.spi.TypeConverterRegistry;
+import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.util.xml.XmlLineNumberParser;
 
 import static org.apache.camel.model.ProcessorDefinitionHelper.filterTypeInOutputs;
@@ -62,6 +63,7 @@ import static org.apache.camel.model.ProcessorDefinitionHelper.filterTypeInOutpu
 /**
  * JAXB based {@link ModelToXMLDumper}.
  */
+@JdkService(ModelToXMLDumper.FACTORY)
 public class JaxbModelToXMLDumper implements ModelToXMLDumper {
 
     @Override
diff --git a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXMLRoutesDefinitionLoader.java b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXMLRoutesDefinitionLoader.java
index 45c7c07..ab5e84b 100644
--- a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXMLRoutesDefinitionLoader.java
+++ b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbXMLRoutesDefinitionLoader.java
@@ -48,6 +48,7 @@ import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.spi.XMLRoutesDefinitionLoader;
+import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.util.ObjectHelper;
 
 import static org.apache.camel.model.ProcessorDefinitionHelper.filterTypeInOutputs;
@@ -56,6 +57,7 @@ import static org.apache.camel.model.ProcessorDefinitionHelper.filterTypeInOutpu
  * JAXB based {@link XMLRoutesDefinitionLoader}. This is the default loader used historically by Camel.
  * The camel-xml-io parser is a light-weight alternative.
  */
+@JdkService(XMLRoutesDefinitionLoader.FACTORY)
 public class JaxbXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoader {
 
     @Override
diff --git a/core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/modelxml-dumper b/core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/modelxml-dumper
deleted file mode 100644
index b654d72..0000000
--- a/core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/modelxml-dumper
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.xml.jaxb.JaxbModelToXMLDumper
diff --git a/core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader b/core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader
deleted file mode 100644
index 47af26b..0000000
--- a/core/camel-xml-jaxb/src/main/resources/META-INF/services/org/apache/camel/xmlroutes-loader
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.xml.jaxb.JaxbXMLRoutesDefinitionLoader
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
index f59317e..4da6d7e 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
@@ -142,7 +142,7 @@ public class SpiGeneratorMojo extends AbstractGeneratorMojo {
                 for (String pval : pvals.split(",")) {
                     if (ServiceFactory.JDK_SERVICE.equals(sfa.value().asString())) {
                         updateResource(resourcesOutputDir.toPath(),
-                                "META-INF/services/" + pval.replace('.', '/'),
+                                "META-INF/services/org/apache/camel/" + pval,
                                 "# " + GENERATED_MSG + NL + "class=" + className + NL);
                     } else {
                         StringBuilder sb = new StringBuilder();


[camel] 29/32: DefaultCamelContext is not abstract

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 382930d479ecd38213a8d096f33f47432b69f038
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 08:59:01 2020 +0100

    DefaultCamelContext is not abstract
---
 .../src/main/java/org/apache/camel/impl/DefaultCamelContext.java        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index c5f56f1..14a9cd7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the context used to configure routes and the policies to use.
  */
-public abstract class DefaultCamelContext extends SimpleCamelContext implements ModelCamelContext {
+public class DefaultCamelContext extends SimpleCamelContext implements ModelCamelContext {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultCamelContext.class);
 


[camel] 15/32: Use a single class instead of various resolvers

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 fa5eaad050e2caaef1182f84a3bf14e456e019d4
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 19:48:20 2020 +0100

    Use a single class instead of various resolvers
---
 .../camel/component/file/GenericFileEndpoint.java  | 11 +---
 .../org/apache/camel/ExtendedCamelContext.java     |  3 +-
 .../java/org/apache/camel/spi/FactoryFinder.java   |  2 +
 .../apache/camel/spi/FactoryFinderResolver.java    |  4 +-
 .../component/properties/PropertiesComponent.java  |  3 -
 .../camel/impl/engine/AbstractCamelContext.java    | 36 ++++------
 .../camel/impl/engine/BaseServiceResolver.java     | 64 ++++++++++++++++++
 .../impl/engine/BeanProcessorFactoryResolver.java  | 72 --------------------
 .../impl/engine/BeanProxyFactoryResolver.java      | 72 --------------------
 .../impl/engine/CamelPostProcessorHelper.java      |  3 -
 .../impl/engine/DefaultFactoryFinderResolver.java  |  5 --
 .../impl/engine/HeadersMapFactoryResolver.java     | 76 ----------------------
 .../engine/PropertiesComponentFactoryResolver.java | 72 --------------------
 .../impl/engine/ReactiveExecutorResolver.java      | 73 ---------------------
 .../impl/engine/RestRegistryFactoryResolver.java   | 75 ---------------------
 .../impl/engine/RuntimeCamelCatalogResolver.java   | 76 ----------------------
 .../org/apache/camel/builder/ProxyBuilder.java     |  3 -
 .../org/apache/camel/impl/DefaultCamelContext.java | 55 +++++++++++-----
 .../camel/impl/ModelToXMLDumperResolver.java       | 75 ---------------------
 .../impl/XMLRoutesDefinitionLoaderResolver.java    | 76 ----------------------
 .../java/org/apache/camel/reifier/BeanReifier.java |  3 -
 .../reifier/dataformat/DataFormatReifier.java      | 20 ++----
 .../camel/core/osgi/OsgiFactoryFinderResolver.java |  5 --
 23 files changed, 131 insertions(+), 753 deletions(-)

diff --git a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
index d5e1c4a..81c5e3d 100644
--- a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
+++ b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
@@ -489,14 +489,9 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
      */
     @SuppressWarnings("unchecked")
     protected GenericFileProcessStrategy<T> createGenericFileStrategy() {
-        Class<?> factory = null;
-        try {
-            FactoryFinder finder = getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder("META-INF/services/org/apache/camel/component/");
-            LOG.trace("Using FactoryFinder: {}", finder);
-            factory = finder.findClass(getScheme(), "strategy.factory.", CamelContext.class).orElse(null);
-        } catch (IOException e) {
-            LOG.trace("No strategy factory defined in 'META-INF/services/org/apache/camel/component/'", e);
-        }
+        FactoryFinder finder = getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder("META-INF/services/org/apache/camel/component/");
+        LOG.trace("Using FactoryFinder: {}", finder);
+        Class<?> factory = finder.findClass(getScheme(), "strategy.factory.", CamelContext.class).orElse(null);
 
         if (factory == null) {
             // use default
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 60c5458..3e7dad2 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -312,9 +312,8 @@ public interface ExtendedCamelContext extends CamelContext {
      *
      * @param path the META-INF path
      * @return the factory finder
-     * @throws NoFactoryAvailableException is thrown if a factory could not be found
      */
-    FactoryFinder getFactoryFinder(String path) throws NoFactoryAvailableException;
+    FactoryFinder getFactoryFinder(String path);
 
     /**
      * Sets the factory finder resolver to use.
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
index ddd9948..6e5e584 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
@@ -23,6 +23,8 @@ import java.util.Optional;
  */
 public interface FactoryFinder {
 
+    String DEFAULT_PATH = "META-INF/services/org/apache/camel/";
+
     /**
      * Gets the resource classpath.
      *
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
index 6136127..e487d06 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
@@ -27,7 +27,9 @@ public interface FactoryFinderResolver {
      * @param classResolver the class resolver to use
      * @return a factory finder.
      */
-    FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver);
+    default FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver) {
+        return resolveFactoryFinder(classResolver, FactoryFinder.DEFAULT_PATH);
+    }
 
     /**
      * Creates a new factory finder.
diff --git a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index a3c50db..78feca3 100644
--- a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.StaticService;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
@@ -548,8 +547,6 @@ public class PropertiesComponent extends ServiceSupport implements org.apache.ca
                         LOG.warn("PropertiesComponent cannot add custom PropertiesSource as the type is not a org.apache.camel.component.properties.PropertiesSource but: " + type.getName());
                     }
                 }
-            } catch (NoFactoryAvailableException e) {
-                // ignore
             } catch (Exception e) {
                 LOG.debug("Error discovering and using custom PropertiesSource due to " + e.getMessage() + ". This exception is ignored", e);
             }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 1094d8f..160b839 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -58,7 +58,6 @@ import org.apache.camel.FluentProducerTemplate;
 import org.apache.camel.GlobalEndpointConfiguration;
 import org.apache.camel.IsSingleton;
 import org.apache.camel.MultipleConsumersSupport;
-import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
@@ -264,7 +263,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
     private volatile ProcessorFactory processorFactory;
     private volatile MessageHistoryFactory messageHistoryFactory;
     private volatile FactoryFinderResolver factoryFinderResolver;
-    private volatile FactoryFinder defaultFactoryFinder;
     private volatile StreamCachingStrategy streamCachingStrategy;
     private volatile InflightRepository inflightRepository;
     private volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
@@ -2727,12 +2725,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
 
         forceLazyInitialization();
 
-        // if camel-bean is on classpath then we can load its bean proxy factory
-        BeanProxyFactory beanProxyFactory = new BeanProxyFactoryResolver().resolve(this);
-        if (beanProxyFactory != null) {
-            addService(beanProxyFactory);
-        }
-
         // re-create endpoint registry as the cache size limit may be set after the constructor of this instance was called.
         // and we needed to create endpoints up-front as it may be accessed before this context is started
         endpoints = doAddService(createEndpointRegistry(endpoints));
@@ -3528,7 +3520,11 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         getAsyncProcessorAwaitManager();
         getShutdownStrategy();
         getPackageScanClassResolver();
-        getRestRegistryFactory();
+        try {
+            getRestRegistryFactory();
+        } catch (IllegalStateException e) {
+            // ignore in case camel-rest is not on the classpath
+        }
         getReactiveExecutor();
         getBeanIntrospection();
         getPropertiesComponent();
@@ -3557,8 +3553,12 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         getUuidGenerator();
         getUnitOfWorkFactory();
         getRouteController();
-        getBeanProxyFactory();
-        getBeanProcessorFactory();
+        try {
+            addService(getBeanProxyFactory());
+            getBeanProcessorFactory();
+        } catch (Exception e) {
+            // ignore in case camel-bean is not on the classpath
+        }
         getBeanPostProcessor();
     }
 
@@ -3628,14 +3628,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
 
     @Override
     public FactoryFinder getDefaultFactoryFinder() {
-        if (defaultFactoryFinder == null) {
-            synchronized (lock) {
-                if (defaultFactoryFinder == null) {
-                    defaultFactoryFinder = getFactoryFinderResolver().resolveDefaultFactoryFinder(getClassResolver());
-                }
-            }
-        }
-        return defaultFactoryFinder;
+        return getFactoryFinder(FactoryFinder.DEFAULT_PATH);
     }
 
     @Override
@@ -3656,7 +3649,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
     }
 
     @Override
-    public FactoryFinder getFactoryFinder(String path) throws NoFactoryAvailableException {
+    public FactoryFinder getFactoryFinder(String path) {
         return factories.computeIfAbsent(path, this::createFactoryFinder);
     }
 
@@ -4207,9 +4200,6 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
 
     protected RestRegistry createRestRegistry() {
         RestRegistryFactory factory = getRestRegistryFactory();
-        if (factory == null) {
-            throw new IllegalStateException("No RestRegistryFactory implementation found.  You need to add camel-rest to the classpath.");
-        }
         return factory.createRegistry();
     }
 
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseServiceResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseServiceResolver.java
new file mode 100644
index 0000000..810b99a
--- /dev/null
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseServiceResolver.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.impl.engine;
+
+import java.util.Optional;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.spi.FactoryFinder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BaseServiceResolver<T> {
+
+    protected final Logger LOG = LoggerFactory.getLogger(getClass());
+
+    protected final String factoryKey;
+    protected final Class<T> factoryClass;
+
+    public BaseServiceResolver(String factoryKey, Class<T> factoryClass) {
+        this.factoryKey = factoryKey;
+        this.factoryClass = factoryClass;
+    }
+
+    public Optional<T> resolve(CamelContext context) {
+        // use factory finder to find a custom implementations
+        Class<?> type = null;
+        try {
+            FactoryFinder finder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(FactoryFinder.DEFAULT_PATH);
+            type = finder.findClass(factoryKey).orElse(null);
+        } catch (Exception e) {
+            // ignore
+        }
+
+        if (type != null) {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Found {}: {} via: {}{}", factoryClass.getSimpleName(), type.getName(), FactoryFinder.DEFAULT_PATH, factoryKey);
+            }
+            if (factoryClass.isAssignableFrom(type)) {
+                T answer = factoryClass.cast(context.getInjector().newInstance(type, false));
+                LOG.debug("Detected and using {}: {}", factoryClass.getSimpleName(), answer);
+                return Optional.of(answer);
+            } else {
+                throw new IllegalArgumentException("Type is not a " + factoryClass.getSimpleName() + " implementation. Found: " + type.getName());
+            }
+        }
+        return Optional.empty();
+    }
+
+}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
deleted file mode 100644
index df2945d..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.FactoryFinder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to find the {@link org.apache.camel.spi.BeanProcessorFactory} from the classpath in camel-bean.
- */
-public class BeanProcessorFactoryResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(BeanProcessorFactoryResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public BeanProcessorFactory resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(BeanProcessorFactory.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found BeanProxyFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "bean-processor-factory");
-            }
-            if (BeanProcessorFactory.class.isAssignableFrom(type)) {
-                BeanProcessorFactory answer = (BeanProcessorFactory) context.getInjector().newInstance(type, false);
-                LOG.debug("Detected and using BeanProcessorFactory: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a BeanProcessorFactory implementation. Found: " + type.getName());
-            }
-        }
-
-        LOG.debug("Cannot find BeanProcessorFactory. Make sure camel-bean is on the classpath.");
-        return null;
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
deleted file mode 100644
index 78a9a98..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.BeanProxyFactory;
-import org.apache.camel.spi.FactoryFinder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to find the {@link BeanProxyFactory} from the classpath in camel-bean.
- */
-public class BeanProxyFactoryResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(BeanProxyFactoryResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public BeanProxyFactory resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(BeanProxyFactory.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found BeanProxyFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "bean-proxy-factory");
-            }
-            if (BeanProxyFactory.class.isAssignableFrom(type)) {
-                BeanProxyFactory answer = (BeanProxyFactory) context.getInjector().newInstance(type, false);
-                LOG.debug("Detected and using BeanProxyFactory: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a BeanProxyFactory implementation. Found: " + type.getName());
-            }
-        }
-
-        LOG.debug("Cannot find BeanProxyFactory. Make sure camel-bean is on the classpath.");
-        return null;
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
index 7bf8641..da743bc 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
@@ -238,9 +238,6 @@ public class CamelPostProcessorHelper implements CamelContextAware {
                     try {
                         // use proxy service
                         BeanProxyFactory factory = endpoint.getCamelContext().adapt(ExtendedCamelContext.class).getBeanProxyFactory();
-                        if (factory == null) {
-                            throw new IllegalArgumentException("Cannot find BeanProxyFactory. Make sure camel-bean is on the classpath.");
-                        }
                         return factory.createProxy(endpoint, binding, type);
                     } catch (Exception e) {
                         throw createProxyInstantiationRuntimeException(type, endpoint, e);
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java
index 7fc2fb5..027dead 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinderResolver.java
@@ -26,11 +26,6 @@ import org.apache.camel.spi.FactoryFinderResolver;
 public class DefaultFactoryFinderResolver implements FactoryFinderResolver {
 
     @Override
-    public FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver) {
-        return resolveFactoryFinder(classResolver, "META-INF/services/org/apache/camel/");
-    }
-
-    @Override
     public FactoryFinder resolveFactoryFinder(ClassResolver classResolver, String resourcePath) {
         return new DefaultFactoryFinder(classResolver, resourcePath);
     }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
deleted file mode 100644
index a2059bb..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.HeadersMapFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link HeadersMapFactory} implementation to be used.
- *
- * @see HeadersMapFactory
- */
-public class HeadersMapFactoryResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(HeadersMapFactoryResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public HeadersMapFactory resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(HeadersMapFactory.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found HeadersMapFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "headers-map-factory");
-            }
-            if (HeadersMapFactory.class.isAssignableFrom(type)) {
-                HeadersMapFactory answer = (HeadersMapFactory) context.getInjector().newInstance(type, false);
-                LOG.info("Detected and using HeadersMapFactory: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a HeadersMapFactory implementation. Found: " + type.getName());
-            }
-        }
-
-        // fallback to default
-        LOG.debug("Creating default HeadersMapFactory");
-        return new DefaultHeadersMapFactory();
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
-
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
deleted file mode 100644
index 1da4e68..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/PropertiesComponentFactoryResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.PropertiesComponent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to find the {@link org.apache.camel.spi.PropertiesComponent} from the classpath.
- */
-public class PropertiesComponentFactoryResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(PropertiesComponentFactoryResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public PropertiesComponent resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(PropertiesComponent.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found PropertiesComponent: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "properties-component-factory");
-            }
-            if (PropertiesComponent.class.isAssignableFrom(type)) {
-                PropertiesComponent answer = (PropertiesComponent) context.getInjector().newInstance(type, false);
-                LOG.debug("Detected and using PropertiesComponent: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a PropertiesComponent implementation. Found: " + type.getName());
-            }
-        }
-
-        // use default component
-        return new org.apache.camel.component.properties.PropertiesComponent();
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
deleted file mode 100644
index 563c803..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/ReactiveExecutorResolver.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.ReactiveExecutor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory resolver to create the {@link org.apache.camel.spi.ReactiveExecutor} to be used.
- */
-public class ReactiveExecutorResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(ReactiveExecutorResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public ReactiveExecutor resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(ReactiveExecutor.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found ReactiveExecutor: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "reactive-executor");
-            }
-            if (ReactiveExecutor.class.isAssignableFrom(type)) {
-                ReactiveExecutor answer = (ReactiveExecutor) context.getInjector().newInstance(type, false);
-                LOG.info("Detected and using ReactiveExecutor: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a ReactiveExecutor implementation. Found: " + type.getName());
-            }
-        }
-
-        // fallback to default
-        LOG.debug("Creating default ReactiveExecutor");
-        return new DefaultReactiveExecutor();
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
deleted file mode 100644
index 2726bca..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.RestRegistryFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link RestRegistryFactory} implementation to be used.
- *
- * @see RestRegistryFactory
- */
-public class RestRegistryFactoryResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(RestRegistryFactoryResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public RestRegistryFactory resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(RestRegistryFactory.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found RestRegistryFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "rest-registry-factory");
-            }
-            if (RestRegistryFactory.class.isAssignableFrom(type)) {
-                RestRegistryFactory answer = (RestRegistryFactory) context.getInjector().newInstance(type, false);
-                LOG.debug("Detected and using RestRegistryFactory: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a RestRegistryFactory implementation. Found: " + type.getName());
-            }
-        }
-
-        LOG.debug("Cannot find RestRegistryFactory. Make sure camel-rest is on the classpath.");
-        return null;
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
-
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
deleted file mode 100644
index 8c97cf0..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RuntimeCamelCatalogResolver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.catalog.RuntimeCamelCatalog;
-import org.apache.camel.spi.FactoryFinder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link org.apache.camel.catalog.RuntimeCamelCatalog} implementation to be used.
- *
- * @see RuntimeCamelCatalog
- */
-public class RuntimeCamelCatalogResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(RuntimeCamelCatalogResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public RuntimeCamelCatalog resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(RuntimeCamelCatalog.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found RuntimeCamelCatalog: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "runtime-camelcatalog");
-            }
-            if (RuntimeCamelCatalog.class.isAssignableFrom(type)) {
-                RuntimeCamelCatalog answer = (RuntimeCamelCatalog) context.getInjector().newInstance(type, false);
-                answer.setCamelContext(context);
-                LOG.info("Detected and using RuntimeCamelCatalog: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a RuntimeCamelCatalog implementation. Found: " + type.getName());
-            }
-        }
-
-        // fallback to default
-        throw new IllegalArgumentException("Cannot find RuntimeCamelCatalog on classpath. Add camel-core-catalog to classpath.");
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
-
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java
index 23178c6..6676fc3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ProxyBuilder.java
@@ -83,9 +83,6 @@ public final class ProxyBuilder {
         ObjectHelper.notNull(endpoint, "endpoint");
         // use proxy service
         BeanProxyFactory factory = camelContext.adapt(ExtendedCamelContext.class).getBeanProxyFactory();
-        if (factory == null) {
-            throw new IllegalArgumentException("Cannot find BeanProxyFactory. Make sure camel-bean is on the classpath.");
-        }
         return factory.createProxy(endpoint, binding, interfaceClasses);
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index cf731f8..ede62b8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -26,8 +26,6 @@ import org.apache.camel.TypeConverter;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.health.HealthCheckRegistry;
 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.DefaultBeanIntrospection;
 import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
@@ -38,6 +36,7 @@ import org.apache.camel.impl.engine.DefaultConfigurerResolver;
 import org.apache.camel.impl.engine.DefaultDataFormatResolver;
 import org.apache.camel.impl.engine.DefaultEndpointRegistry;
 import org.apache.camel.impl.engine.DefaultFactoryFinderResolver;
+import org.apache.camel.impl.engine.DefaultHeadersMapFactory;
 import org.apache.camel.impl.engine.DefaultInflightRepository;
 import org.apache.camel.impl.engine.DefaultInjector;
 import org.apache.camel.impl.engine.DefaultLanguageResolver;
@@ -47,6 +46,7 @@ import org.apache.camel.impl.engine.DefaultNodeIdFactory;
 import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
 import org.apache.camel.impl.engine.DefaultPackageScanResourceResolver;
 import org.apache.camel.impl.engine.DefaultProcessorFactory;
+import org.apache.camel.impl.engine.DefaultReactiveExecutor;
 import org.apache.camel.impl.engine.DefaultRouteController;
 import org.apache.camel.impl.engine.DefaultShutdownStrategy;
 import org.apache.camel.impl.engine.DefaultStreamCachingStrategy;
@@ -54,12 +54,8 @@ import org.apache.camel.impl.engine.DefaultTracer;
 import org.apache.camel.impl.engine.DefaultUnitOfWorkFactory;
 import org.apache.camel.impl.engine.DefaultUuidGenerator;
 import org.apache.camel.impl.engine.EndpointKey;
-import org.apache.camel.impl.engine.HeadersMapFactoryResolver;
-import org.apache.camel.impl.engine.PropertiesComponentFactoryResolver;
-import org.apache.camel.impl.engine.ReactiveExecutorResolver;
-import org.apache.camel.impl.engine.RestRegistryFactoryResolver;
-import org.apache.camel.impl.engine.RuntimeCamelCatalogResolver;
 import org.apache.camel.impl.engine.WebSpherePackageScanClassResolver;
+import org.apache.camel.impl.engine.BaseServiceResolver;
 import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
@@ -170,7 +166,8 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected TypeConverter createTypeConverter() {
-        return new DefaultTypeConverter(this, getPackageScanClassResolver(), getInjector(), getDefaultFactoryFinder(), isLoadTypeConverters());
+        return new DefaultTypeConverter(this, getPackageScanClassResolver(), getInjector(),
+                getDefaultFactoryFinder(), isLoadTypeConverters());
     }
 
     @Override
@@ -194,7 +191,9 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected PropertiesComponent createPropertiesComponent() {
-        return new PropertiesComponentFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(PropertiesComponent.FACTORY, PropertiesComponent.class)
+                .resolve(this)
+                .orElseGet(org.apache.camel.component.properties.PropertiesComponent::new);
     }
 
     @Override
@@ -307,7 +306,10 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected RuntimeCamelCatalog createRuntimeCamelCatalog() {
-        return new RuntimeCamelCatalogResolver().resolve(this);
+        return new BaseServiceResolver<>(RuntimeCamelCatalog.FACTORY, RuntimeCamelCatalog.class)
+                .resolve(this)
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find RuntimeCamelCatalog on classpath. "
+                        + "Add camel-core-catalog to classpath."));
     }
 
     @Override
@@ -322,17 +324,25 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected HeadersMapFactory createHeadersMapFactory() {
-        return new HeadersMapFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(HeadersMapFactory.FACTORY, HeadersMapFactory.class)
+                .resolve(this)
+                .orElseGet(DefaultHeadersMapFactory::new);
     }
 
     @Override
     protected BeanProxyFactory createBeanProxyFactory() {
-        return new BeanProxyFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class)
+                .resolve(this)
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. "
+                        + "Add camel-bean to classpath."));
     }
 
     @Override
     protected BeanProcessorFactory createBeanProcessorFactory() {
-        return new BeanProcessorFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class)
+                .resolve(this)
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. "
+                        + "Add camel-bean to classpath."));
     }
 
     @Override
@@ -342,12 +352,18 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected XMLRoutesDefinitionLoader createXMLRoutesDefinitionLoader() {
-        return new XMLRoutesDefinitionLoaderResolver().resolve(this);
+        return new BaseServiceResolver<>(XMLRoutesDefinitionLoader.FACTORY, XMLRoutesDefinitionLoader.class)
+                .resolve(this)
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find XMLRoutesDefinitionLoader on classpath. "
+                        + "Add either camel-xml-io or camel-xml-jaxb to classpath."));
     }
 
     @Override
     protected ModelToXMLDumper createModelToXMLDumper() {
-        return new ModelToXMLDumperResolver().resolve(this);
+        return new BaseServiceResolver<>(ModelToXMLDumper.FACTORY, ModelToXMLDumper.class)
+                .resolve(this)
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find ModelToXMLDumper on classpath. "
+                        + "Add camel-xml-jaxb to classpath."));
     }
 
     @Override
@@ -382,7 +398,10 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected RestRegistryFactory createRestRegistryFactory() {
-        return new RestRegistryFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class)
+                .resolve(this)
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. "
+                        + "Add camel-rest to classpath."));
     }
 
     @Override
@@ -397,7 +416,9 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected ReactiveExecutor createReactiveExecutor() {
-        return new ReactiveExecutorResolver().resolve(this);
+        return new BaseServiceResolver<>(ReactiveExecutor.FACTORY, ReactiveExecutor.class)
+                .resolve(this)
+                .orElseGet(DefaultReactiveExecutor::new);
     }
 
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
deleted file mode 100644
index 57ac62f..0000000
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/ModelToXMLDumperResolver.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.ModelToXMLDumper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link ModelToXMLDumper} implementation to be used.
- *
- * @see ModelToXMLDumper
- */
-public class ModelToXMLDumperResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(ModelToXMLDumperResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public ModelToXMLDumper resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(ModelToXMLDumper.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found ModelToXMLDumper: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "modelxml-dumper");
-            }
-            if (ModelToXMLDumper.class.isAssignableFrom(type)) {
-                ModelToXMLDumper answer = (ModelToXMLDumper) context.getInjector().newInstance(type, false);
-                LOG.info("Detected and using ModelToXMLDumper: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a ModelToXMLDumper implementation. Found: " + type.getName());
-            }
-        }
-
-        throw new RuntimeCamelException("Cannot find XML routes dumper in classpath. Add camel-xml-jaxb to the classpath.");
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
-
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
deleted file mode 100644
index 000c7cb..0000000
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/XMLRoutesDefinitionLoaderResolver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import java.io.IOException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NoFactoryAvailableException;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.XMLRoutesDefinitionLoader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Factory to create the {@link XMLRoutesDefinitionLoader} implementation to be used.
- *
- * @see XMLRoutesDefinitionLoader
- */
-public class XMLRoutesDefinitionLoaderResolver {
-
-    public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/";
-
-    private static final Logger LOG = LoggerFactory.getLogger(XMLRoutesDefinitionLoaderResolver.class);
-
-    private FactoryFinder factoryFinder;
-
-    public XMLRoutesDefinitionLoader resolve(CamelContext context) {
-        // use factory finder to find a custom implementations
-        Class<?> type = null;
-        try {
-            type = findFactory(XMLRoutesDefinitionLoader.FACTORY, context);
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (type != null) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Found XMLRoutesDefinitionLoader: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "xmlroutes-loader");
-            }
-            if (XMLRoutesDefinitionLoader.class.isAssignableFrom(type)) {
-                XMLRoutesDefinitionLoader answer = (XMLRoutesDefinitionLoader) context.getInjector().newInstance(type, false);
-                LOG.info("Detected and using XMLRoutesDefinitionLoader: {}", answer);
-                return answer;
-            } else {
-                throw new IllegalArgumentException("Type is not a XMLRoutesDefinitionLoader implementation. Found: " + type.getName());
-            }
-        }
-
-        throw new RuntimeCamelException("Cannot find XML routes loader in classpath. Add either camel-xml-io or camel-xml-jaxb to the classpath.");
-    }
-
-    private Class<?> findFactory(String name, CamelContext context) throws IOException {
-        if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
-        }
-        return factoryFinder.findClass(name).orElse(null);
-    }
-
-}
-
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
index 4fa6126..8e32da5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
@@ -39,9 +39,6 @@ public class BeanReifier extends ProcessorReifier<BeanDefinition> {
         Class<?> beanClass = definition.getBeanClass();
 
         BeanProcessorFactory fac = camelContext.adapt(ExtendedCamelContext.class).getBeanProcessorFactory();
-        if (fac == null) {
-            throw new IllegalStateException("Cannot find BeanProcessorFactory. Make sure camel-bean is on the classpath.");
-        }
         // use singleton as default scope
         BeanScope scope = BeanScope.Singleton;
         if (definition.getScope() != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index 0707c79..02fb328 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -23,8 +23,6 @@ import java.util.function.BiFunction;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NoFactoryAvailableException;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.Model;
 import org.apache.camel.model.dataformat.ASN1DataFormat;
@@ -271,18 +269,14 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
             }
         }
         if (configurer == null) {
-            try {
-                Class<?> clazz = camelContext.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH)
-                        .findOptionalClass(name + "-dataformat-configurer", null)
-                        .orElse(null);
-                if (clazz != null) {
-                    configurer = org.apache.camel.support.ObjectHelper.newInstance(clazz, PropertyConfigurer.class);
-                    if (LOG.isDebugEnabled() && configurer != null) {
-                        LOG.debug("Discovered dataformat property configurer using the FactoryFinder: {} -> {}", name, configurer);
-                    }
+            Class<?> clazz = camelContext.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH)
+                    .findOptionalClass(name + "-dataformat-configurer", null)
+                    .orElse(null);
+            if (clazz != null) {
+                configurer = org.apache.camel.support.ObjectHelper.newInstance(clazz, PropertyConfigurer.class);
+                if (LOG.isDebugEnabled() && configurer != null) {
+                    LOG.debug("Discovered dataformat property configurer using the FactoryFinder: {} -> {}", name, configurer);
                 }
-            } catch (NoFactoryAvailableException e) {
-                throw new RuntimeCamelException("Unable to retrieve dataformat property configurer factory finder", e);
             }
         }
         return configurer;
diff --git a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java
index 8bed373..631c190 100644
--- a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java
+++ b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java
@@ -30,11 +30,6 @@ public class OsgiFactoryFinderResolver implements FactoryFinderResolver {
     }
 
     @Override
-    public FactoryFinder resolveDefaultFactoryFinder(ClassResolver classResolver) {
-        return resolveFactoryFinder(classResolver, "META-INF/services/org/apache/camel/");
-    }
-
-    @Override
     public FactoryFinder resolveFactoryFinder(ClassResolver classResolver, String resourcePath) {
         return new OsgiFactoryFinder(bundleContext, classResolver, resourcePath);
     }


[camel] 11/32: Use proper generics on 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 389442b018909b7cdda3e754cd3e6a51fdf0be18
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 14:26:42 2020 +0100

    Use proper generics on Model
---
 .../java/org/apache/camel/impl/AbstractModelCamelContext.java    | 4 ++--
 .../src/main/java/org/apache/camel/impl/DefaultModel.java        | 9 +++++----
 .../src/main/java/org/apache/camel/model/Model.java              | 4 ++--
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
index 41f1339..b2f10f3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
@@ -157,12 +157,12 @@ public abstract class AbstractModelCamelContext extends AbstractCamelContext imp
     }
 
     @Override
-    public ProcessorDefinition getProcessorDefinition(String id) {
+    public ProcessorDefinition<?> getProcessorDefinition(String id) {
         return model.getProcessorDefinition(id);
     }
 
     @Override
-    public <T extends ProcessorDefinition> T getProcessorDefinition(String id, Class<T> type) {
+    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) {
         return model.getProcessorDefinition(id, type);
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index cb349cc..f78b865 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -242,12 +242,13 @@ public class DefaultModel implements Model {
         return type;
     }
 
+    @SuppressWarnings("rawtypes")
     @Override
-    public ProcessorDefinition getProcessorDefinition(String id) {
+    public ProcessorDefinition<?> getProcessorDefinition(String id) {
         for (RouteDefinition route : getRouteDefinitions()) {
             Iterator<ProcessorDefinition> it = ProcessorDefinitionHelper.filterTypeInOutputs(route.getOutputs(), ProcessorDefinition.class);
             while (it.hasNext()) {
-                ProcessorDefinition proc = it.next();
+                ProcessorDefinition<?> proc = it.next();
                 if (id.equals(proc.getId())) {
                     return proc;
                 }
@@ -257,8 +258,8 @@ public class DefaultModel implements Model {
     }
 
     @Override
-    public <T extends ProcessorDefinition> T getProcessorDefinition(String id, Class<T> type) {
-        ProcessorDefinition answer = getProcessorDefinition(id);
+    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) {
+        ProcessorDefinition<?> answer = getProcessorDefinition(id);
         if (answer != null) {
             return type.cast(answer);
         }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/model/Model.java b/core/camel-core-engine/src/main/java/org/apache/camel/model/Model.java
index c8bdac7..e03f1d2 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/model/Model.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/model/Model.java
@@ -147,7 +147,7 @@ public interface Model {
      * @param id id of the processor definition
      * @return the processor definition or <tt>null</tt> if not found
      */
-    ProcessorDefinition getProcessorDefinition(String id);
+    ProcessorDefinition<?> getProcessorDefinition(String id);
 
     /**
      * Gets the processor definition from any of the routes which with the given
@@ -158,7 +158,7 @@ public interface Model {
      * @return the processor definition or <tt>null</tt> if not found
      * @throws ClassCastException is thrown if the type is not correct type
      */
-    <T extends ProcessorDefinition> T getProcessorDefinition(String id, Class<T> type);
+    <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type);
 
     /**
      * Sets the validators that can be referenced in the routes.


[camel] 20/32: Fix services creation

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 bcd26a13548933c45e5f083e41249120ba767af0
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 21:14:23 2020 +0100

    Fix services creation
---
 .../main/java/org/apache/camel/impl/engine/AbstractCamelContext.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index d494187..b9f94cf 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -3522,7 +3522,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         getPackageScanClassResolver();
         try {
             getRestRegistryFactory();
-        } catch (IllegalStateException e) {
+        } catch (IllegalArgumentException e) {
             // ignore in case camel-rest is not on the classpath
         }
         getReactiveExecutor();
@@ -3554,7 +3554,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         getUnitOfWorkFactory();
         getRouteController();
         try {
-            addService(getBeanProxyFactory());
+            getBeanProxyFactory();
             getBeanProcessorFactory();
         } catch (Exception e) {
             // ignore in case camel-bean is not on the classpath


[camel] 31/32: Generate service file using @JdkService for DefaultRestRegistryFactory

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 8405dc80b5dfd06f9f9d2599ec20c68bd9517751
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 09:08:48 2020 +0100

    Generate service file using @JdkService for DefaultRestRegistryFactory
---
 .../services/org/apache/camel/rest-registry-factory   |  2 ++
 .../component/rest/DefaultRestRegistryFactory.java    |  2 ++
 .../services/org/apache/camel/rest-registry-factory   | 19 -------------------
 3 files changed, 4 insertions(+), 19 deletions(-)

diff --git a/components/camel-rest/src/generated/resources/META-INF/services/org/apache/camel/rest-registry-factory b/components/camel-rest/src/generated/resources/META-INF/services/org/apache/camel/rest-registry-factory
new file mode 100644
index 0000000..1c31008
--- /dev/null
+++ b/components/camel-rest/src/generated/resources/META-INF/services/org/apache/camel/rest-registry-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.rest.DefaultRestRegistryFactory
diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistryFactory.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistryFactory.java
index b85efae..5094b0e 100644
--- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistryFactory.java
+++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistryFactory.java
@@ -18,7 +18,9 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.spi.RestRegistry;
 import org.apache.camel.spi.RestRegistryFactory;
+import org.apache.camel.spi.annotations.JdkService;
 
+@JdkService(RestRegistryFactory.FACTORY)
 public class DefaultRestRegistryFactory implements RestRegistryFactory {
 
     @Override
diff --git a/components/camel-rest/src/main/resources/META-INF/services/org/apache/camel/rest-registry-factory b/components/camel-rest/src/main/resources/META-INF/services/org/apache/camel/rest-registry-factory
deleted file mode 100644
index 2ec9069..0000000
--- a/components/camel-rest/src/main/resources/META-INF/services/org/apache/camel/rest-registry-factory
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.component.rest.DefaultRestRegistryFactory
-


[camel] 04/32: [CAMEL-13440] Remove RouteContext

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 028a6b8cdc86b39d3a11dfbf7f5aa4ab96b3cce0
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Feb 21 10:29:28 2020 +0100

    [CAMEL-13440] Remove RouteContext
    
    # Conflicts:
    #	core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
---
 .../JtaTransactionErrorHandlerReifier.java         |   6 +-
 .../cdi/transaction/JtaTransactionPolicy.java      |  24 +-
 .../component/controlbus/ControlBusProducer.java   |  18 +-
 .../hystrix/processor/HystrixProcessorFactory.java |   6 +-
 .../hystrix/processor/HystrixReifier.java          |   8 +-
 .../processor/HystrixHierarchicalConfigTest.java   |  16 +-
 .../SpringHystrixRouteHierarchicalConfigTest.java  |  10 +-
 .../infinispan/policy/InfinispanRoutePolicy.java   |   2 +-
 .../component/jcache/policy/JCachePolicy.java      |  10 +-
 .../component/jms/tx/AbstractTransactionTest.java  |   4 +-
 .../camel/routepolicy/quartz/ScheduledJob.java     |   2 +-
 .../resilience4j/ResilienceProcessorFactory.java   |   6 +-
 .../component/resilience4j/ResilienceReifier.java  |   8 +-
 .../shiro/security/ShiroSecurityPolicy.java        |   8 +-
 .../SpringSecurityAuthorizationPolicy.java         |   6 +-
 .../camel/spring/spi/SpringTransactionPolicy.java  |  24 +-
 .../spring/spi/TransactionErrorHandlerBuilder.java |   7 -
 .../spring/spi/TransactionErrorHandlerReifier.java |   6 +-
 .../spring/config/CamelContextFactoryBeanTest.java |   4 +-
 .../spring/config/DummyErrorHandlerBuilder.java    |   6 +-
 .../camel/spring/config/ErrorHandlerTest.java      |   4 +-
 .../java/org/apache/camel/zipkin/ZipkinTracer.java |  14 +-
 .../src/main/java/org/apache/camel/Channel.java    |   6 +-
 .../src/main/java/org/apache/camel/Route.java      | 163 ++++++-
 .../org/apache/camel/RuntimeConfiguration.java     |   2 +-
 .../org/apache/camel/spi/LifecycleStrategy.java    |  26 +-
 .../camel/spi/ManagementObjectNameStrategy.java    |   2 +-
 .../apache/camel/spi/ManagementObjectStrategy.java |   2 +-
 .../src/main/java/org/apache/camel/spi/Policy.java |   9 +-
 .../org/apache/camel/spi/ProcessorFactory.java     |   9 +-
 .../java/org/apache/camel/spi/RouteContext.java    | 242 ----------
 .../main/java/org/apache/camel/spi/UnitOfWork.java |  22 +-
 .../camel/impl/engine/AbstractRouteContext.java    | 537 ---------------------
 .../apache/camel/impl/engine/BaseRouteService.java |  17 +-
 .../engine/DefaultAsyncProcessorAwaitManager.java  |  11 +-
 .../impl/engine/DefaultInflightRepository.java     |  11 +-
 .../camel/impl/engine/DefaultProcessorFactory.java |  14 +-
 .../org/apache/camel/impl/engine/DefaultRoute.java | 490 ++++++++++++++++++-
 .../camel/impl/engine/DefaultRouteError.java       |   4 +-
 .../engine/DefaultRuntimeEndpointRegistry.java     |  21 +-
 .../camel/impl/engine/DefaultShutdownStrategy.java |   8 +-
 .../camel/impl/engine/DefaultUnitOfWork.java       |  24 +-
 .../impl/engine/EventDrivenConsumerRoute.java      | 141 ------
 .../apache/camel/impl/engine/MDCUnitOfWork.java    |  16 +-
 .../impl/engine/SupervisingRouteController.java    |  23 +-
 .../camel/impl/engine/TypedProcessorFactory.java   |  14 +-
 .../apache/camel/impl/health/RouteHealthCheck.java |   6 +-
 .../camel/processor/CamelInternalProcessor.java    |  34 +-
 .../apache/camel/processor/MulticastProcessor.java |  36 +-
 .../camel/processor/RecipientListProcessor.java    |  20 +-
 .../org/apache/camel/processor/RoutingSlip.java    |  11 +-
 .../java/org/apache/camel/processor/Splitter.java  |   8 +-
 .../camel/processor/channel/DefaultChannel.java    |  40 +-
 .../DefaultExceptionPolicyStrategy.java            |   4 +-
 .../errorhandler/RedeliveryErrorHandler.java       |  17 +-
 .../impl/cloud/ServiceCallProcessorFactory.java    |   6 +-
 .../org/apache/camel/builder/NotifyBuilder.java    |   9 +-
 .../java/org/apache/camel/impl/DefaultModel.java   |   5 +-
 .../org/apache/camel/impl/DefaultRouteContext.java |  41 --
 .../java/org/apache/camel/impl/RouteService.java   |  10 +-
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |   3 +-
 .../camel/reifier/AbstractPolicyReifier.java       |   6 +-
 .../org/apache/camel/reifier/AbstractReifier.java  |  13 +-
 .../org/apache/camel/reifier/AggregateReifier.java |   8 +-
 .../java/org/apache/camel/reifier/BeanReifier.java |   8 +-
 .../org/apache/camel/reifier/CatchReifier.java     |   6 +-
 .../org/apache/camel/reifier/ChoiceReifier.java    |   7 +-
 .../camel/reifier/CircuitBreakerReifier.java       |   6 +-
 .../apache/camel/reifier/ClaimCheckReifier.java    |   6 +-
 .../apache/camel/reifier/ConvertBodyReifier.java   |   7 +-
 .../org/apache/camel/reifier/DelayReifier.java     |   6 +-
 .../apache/camel/reifier/DynamicRouterReifier.java |   8 +-
 .../org/apache/camel/reifier/EnrichReifier.java    |   6 +-
 .../apache/camel/reifier/ExpressionReifier.java    |   6 +-
 .../org/apache/camel/reifier/FilterReifier.java    |   6 +-
 .../org/apache/camel/reifier/FinallyReifier.java   |   6 +-
 .../camel/reifier/IdempotentConsumerReifier.java   |   6 +-
 .../apache/camel/reifier/InterceptFromReifier.java |   6 +-
 .../org/apache/camel/reifier/InterceptReifier.java |  10 +-
 .../reifier/InterceptSendToEndpointReifier.java    |  12 +-
 .../apache/camel/reifier/LoadBalanceReifier.java   |   8 +-
 .../java/org/apache/camel/reifier/LogReifier.java  |  10 +-
 .../java/org/apache/camel/reifier/LoopReifier.java |   6 +-
 .../org/apache/camel/reifier/MarshalReifier.java   |   6 +-
 .../org/apache/camel/reifier/MulticastReifier.java |   6 +-
 .../apache/camel/reifier/OnCompletionReifier.java  |  12 +-
 .../apache/camel/reifier/OnExceptionReifier.java   |  16 +-
 .../apache/camel/reifier/OnFallbackReifier.java    |   6 +-
 .../org/apache/camel/reifier/OtherwiseReifier.java |   6 +-
 .../org/apache/camel/reifier/PipelineReifier.java  |   6 +-
 .../org/apache/camel/reifier/PolicyReifier.java    |  10 +-
 .../apache/camel/reifier/PollEnrichReifier.java    |   6 +-
 .../org/apache/camel/reifier/ProcessReifier.java   |   6 +-
 .../org/apache/camel/reifier/ProcessorReifier.java |  83 ++--
 .../apache/camel/reifier/RecipientListReifier.java |   6 +-
 .../apache/camel/reifier/RemoveHeaderReifier.java  |   6 +-
 .../apache/camel/reifier/RemoveHeadersReifier.java |   6 +-
 .../camel/reifier/RemovePropertiesReifier.java     |   6 +-
 .../camel/reifier/RemovePropertyReifier.java       |   6 +-
 .../apache/camel/reifier/ResequenceReifier.java    |  10 +-
 .../org/apache/camel/reifier/RollbackReifier.java  |   6 +-
 .../org/apache/camel/reifier/RouteReifier.java     | 238 ++++++---
 .../apache/camel/reifier/RoutingSlipReifier.java   |   6 +-
 .../java/org/apache/camel/reifier/SagaReifier.java |   7 +-
 .../org/apache/camel/reifier/SamplingReifier.java  |   6 +-
 .../org/apache/camel/reifier/ScriptReifier.java    |   6 +-
 .../java/org/apache/camel/reifier/SendReifier.java |   6 +-
 .../apache/camel/reifier/ServiceCallReifier.java   |   6 +-
 .../org/apache/camel/reifier/SetBodyReifier.java   |   6 +-
 .../camel/reifier/SetExchangePatternReifier.java   |   6 +-
 .../org/apache/camel/reifier/SetHeaderReifier.java |   6 +-
 .../apache/camel/reifier/SetPropertyReifier.java   |   6 +-
 .../java/org/apache/camel/reifier/SortReifier.java |   6 +-
 .../org/apache/camel/reifier/SplitReifier.java     |   6 +-
 .../java/org/apache/camel/reifier/StepReifier.java |   6 +-
 .../java/org/apache/camel/reifier/StopReifier.java |   6 +-
 .../org/apache/camel/reifier/ThreadsReifier.java   |   6 +-
 .../org/apache/camel/reifier/ThrottleReifier.java  |   6 +-
 .../camel/reifier/ThrowExceptionReifier.java       |   6 +-
 .../org/apache/camel/reifier/ToDynamicReifier.java |   6 +-
 .../apache/camel/reifier/TransactedReifier.java    |  10 +-
 .../org/apache/camel/reifier/TransformReifier.java |   6 +-
 .../java/org/apache/camel/reifier/TryReifier.java  |   6 +-
 .../org/apache/camel/reifier/UnmarshalReifier.java |   6 +-
 .../org/apache/camel/reifier/ValidateReifier.java  |   6 +-
 .../java/org/apache/camel/reifier/WhenReifier.java |   6 +-
 .../reifier/WhenSkipSendToEndpointReifier.java     |   6 +-
 .../org/apache/camel/reifier/WireTapReifier.java   |   8 +-
 .../errorhandler/DeadLetterChannelReifier.java     |   6 +-
 .../errorhandler/DefaultErrorHandlerReifier.java   |   6 +-
 .../errorhandler/ErrorHandlerRefReifier.java       |  16 +-
 .../reifier/errorhandler/ErrorHandlerReifier.java  |  42 +-
 .../errorhandler/NoErrorHandlerReifier.java        |   6 +-
 .../loadbalancer/CustomLoadBalancerReifier.java    |   6 +-
 .../loadbalancer/FailoverLoadBalancerReifier.java  |   6 +-
 .../reifier/loadbalancer/LoadBalancerReifier.java  |  16 +-
 .../loadbalancer/RandomLoadBalancerReifier.java    |   6 +-
 .../RoundRobinLoadBalancerReifier.java             |   6 +-
 .../loadbalancer/StickyLoadBalancerReifier.java    |   6 +-
 .../loadbalancer/TopicLoadBalancerReifier.java     |   6 +-
 .../loadbalancer/WeightedLoadBalancerReifier.java  |   6 +-
 .../camel/reifier/rest/RestBindingReifier.java     |   6 +-
 .../camel/builder/ContextErrorHandlerTest.java     |   6 +-
 .../org/apache/camel/builder/ErrorHandlerTest.java |  10 +-
 .../org/apache/camel/builder/RouteBuilderTest.java |  22 +-
 .../component/rest/FromRestGetPolicyTest.java      |   6 +-
 .../apache/camel/impl/DummyLifecycleStrategy.java  |  17 +-
 .../RoutePolicyAutoStartupCancelledOnInitTest.java |   2 +-
 .../apache/camel/issues/AdviceWithPolicyTest.java  |   6 +-
 .../camel/issues/AdviceWithTransactedTest.java     |   6 +-
 .../TransactedPropertyPlaceholderIssueTest.java    |   6 +-
 .../model/LoadRouteFromXmlWithPolicyTest.java      |   6 +-
 .../processor/CustomProcessorFactoryTest.java      |   6 +-
 .../camel/processor/DefaultErrorHandlerTest.java   |   4 +-
 .../DefinitionPolicyPerProcessorTest.java          |   6 +-
 .../camel/processor/PolicyPerProcessorTest.java    |   6 +-
 .../apache/camel/processor/PolicyPerRouteTest.java |   6 +-
 ...pientListContextScopedOnExceptionIssueTest.java |   4 +-
 .../apache/camel/processor/ResequencerTest.java    |   4 +-
 ...utingSlipContextScopedOnExceptionIssueTest.java |   4 +-
 .../camel/processor/SimpleMockTwoRoutesTest.java   |   6 +-
 .../camel/processor/StreamResequencerTest.java     |   4 +-
 .../processor/async/AsyncEndpointPolicyTest.java   |   6 +-
 .../errorhandler/ErrorHandlerSupportTest.java      |  18 +-
 .../DefaultExceptionPolicyStrategyTest.java        |   7 +-
 ...xtScopedOnExceptionCorrectRouteContextTest.java |   4 +-
 .../apache/camel/reifier/ProcessorReifierTest.java |   6 +-
 .../DefaultManagementObjectNameStrategy.java       |  15 +-
 .../DefaultManagementObjectStrategy.java           |  67 ++-
 .../management/JmxManagementLifecycleStrategy.java |  53 +-
 .../management/mbean/ManagedErrorHandler.java      |  16 +-
 .../camel/management/mbean/ManagedRoute.java       |  14 +-
 .../camel/management/ManagedCustomPolicyTest.java  |   6 +-
 .../org/apache/camel/support/ExchangeHelper.java   |  25 +-
 .../camel/support/LifecycleStrategySupport.java    |  17 +-
 .../org/apache/camel/support/MessageHelper.java    |  11 +-
 .../camel/support/builder/ExpressionBuilder.java   |  13 +-
 177 files changed, 1589 insertions(+), 2002 deletions(-)

diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerReifier.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerReifier.java
index 252e3ee..012d113 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerReifier.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerReifier.java
@@ -28,7 +28,7 @@ import org.apache.camel.reifier.TransactedReifier;
 import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.spi.TransactedPolicy;
 import org.apache.camel.util.ObjectHelper;
@@ -44,8 +44,8 @@ public class JtaTransactionErrorHandlerReifier extends ErrorHandlerReifier<JtaTr
 
     private static final Logger LOG = LoggerFactory.getLogger(JtaTransactionErrorHandlerReifier.class);
 
-    public JtaTransactionErrorHandlerReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        super(routeContext, (JtaTransactionErrorHandlerBuilder) definition);
+    public JtaTransactionErrorHandlerReifier(Route route, ErrorHandlerFactory definition) {
+        super(route, (JtaTransactionErrorHandlerBuilder) definition);
     }
 
     @Override
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 124a483..9add464 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
@@ -27,7 +27,7 @@ import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.spi.TransactedPolicy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -51,7 +51,7 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
     protected TransactionManager transactionManager;
 
     @Override
-    public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+    public void beforeWrap(Route route, NamedNode definition) {
         // do not inherit since we create our own
         // (otherwise the default error handler would be used two times
         // because we inherit it on our own but only in case of a
@@ -62,7 +62,7 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
     public abstract void run(Runnable runnable) throws Throwable;
 
     @Override
-    public Processor wrap(RouteContext routeContext, Processor processor) {
+    public Processor wrap(Route route, Processor processor) {
         JtaTransactionErrorHandler answer;
         // the goal is to configure the error handler builder on the route as a
         // transacted error handler. If the configured builder is not transacted,
@@ -74,8 +74,8 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
         // we only need one transacted error handler
 
         // find the existing error handler builder
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerFactory();
+        RouteDefinition routeDefinition = (RouteDefinition) route.getRoute();
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) routeDefinition.getErrorHandlerFactory();
 
         // check if its a ref if so then do a lookup
         if (builder instanceof ErrorHandlerBuilderRef) {
@@ -87,7 +87,7 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
             // and if so then we can safely replace that with our transacted error handler
             if (ErrorHandlerReifier.isErrorHandlerFactoryConfigured(ref)) {
                 LOG.debug("Looking up ErrorHandlerBuilder with ref: {}", ref);
-                builder = (ErrorHandlerBuilder) ErrorHandlerReifier.lookupErrorHandlerFactory(routeContext, ref);
+                builder = (ErrorHandlerBuilder) ErrorHandlerReifier.lookupErrorHandlerFactory(route, ref);
             }
         }
 
@@ -110,23 +110,23 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
 
         // use error handlers from the configured builder
         if (builder != null) {
-            routeContext.addErrorHandlerFactoryReference(builder, txBuilder);
+            route.addErrorHandlerFactoryReference(builder, txBuilder);
         }
 
-        answer = createTransactionErrorHandler(routeContext, processor, txBuilder);
+        answer = createTransactionErrorHandler(route, processor, txBuilder);
 
         // set the route to use our transacted error handler builder
-        route.setErrorHandlerFactory(txBuilder);
+        routeDefinition.setErrorHandlerFactory(txBuilder);
 
         // return with wrapped transacted error handler
         return answer;
     }
 
-    protected JtaTransactionErrorHandler createTransactionErrorHandler(RouteContext routeContext, Processor processor,
-            ErrorHandlerBuilder builder) {
+    protected JtaTransactionErrorHandler createTransactionErrorHandler(Route route, Processor processor,
+                                                                       ErrorHandlerBuilder builder) {
         JtaTransactionErrorHandler answer;
         try {
-            answer = (JtaTransactionErrorHandler) ErrorHandlerReifier.reifier(routeContext, builder).createErrorHandler(processor);
+            answer = (JtaTransactionErrorHandler) ErrorHandlerReifier.reifier(route, builder).createErrorHandler(processor);
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
diff --git a/components/camel-controlbus/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java b/components/camel-controlbus/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
index 072a0e0..dc5ad47 100644
--- a/components/camel-controlbus/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
+++ b/components/camel-controlbus/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
@@ -28,8 +28,6 @@ import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.Language;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.DefaultAsyncProducer;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -93,20 +91,6 @@ public class ControlBusProducer extends DefaultAsyncProducer {
         }
     }
 
-    private static String getRouteId(Exchange exchange) {
-        String answer = null;
-        UnitOfWork uow = exchange.getUnitOfWork();
-        RouteContext rc = uow != null ? uow.getRouteContext() : null;
-        if (rc != null) {
-            answer = rc.getRouteId();
-        }
-        if (answer == null) {
-            // fallback and get from route id on the exchange
-            answer = exchange.getFromRouteId();
-        }
-        return answer;
-    }
-
     /**
      * Tasks to run when processing by language.
      */
@@ -166,7 +150,7 @@ public class ControlBusProducer extends DefaultAsyncProducer {
             String id = getEndpoint().getRouteId();
 
             if (ObjectHelper.equal("current", id)) {
-                id = getRouteId(exchange);
+                id = ExchangeHelper.getRouteId(exchange);
             }
 
             Object result = null;
diff --git a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessorFactory.java b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessorFactory.java
index bb12022..12bd23f 100644
--- a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessorFactory.java
+++ b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessorFactory.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.hystrix.processor;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.engine.TypedProcessorFactory;
 import org.apache.camel.model.CircuitBreakerDefinition;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 
 /**
  * To integrate camel-hystrix with the Camel routes using the Hystrix EIP.
@@ -31,8 +31,8 @@ public class HystrixProcessorFactory extends TypedProcessorFactory<CircuitBreake
     }
 
     @Override
-    public Processor doCreateProcessor(RouteContext routeContext, CircuitBreakerDefinition definition) throws Exception {
-        return new HystrixReifier(routeContext, definition).createProcessor();
+    public Processor doCreateProcessor(Route route, CircuitBreakerDefinition definition) throws Exception {
+        return new HystrixReifier(route, definition).createProcessor();
     }
 
 }
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 1ea7251..a67b314 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
@@ -34,14 +34,14 @@ import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.Model;
 import org.apache.camel.reifier.ProcessorReifier;
 import org.apache.camel.spi.BeanIntrospection;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.function.Suppliers;
 
 public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
 
-    public HystrixReifier(RouteContext routeContext, CircuitBreakerDefinition definition) {
-        super(routeContext, definition);
+    public HystrixReifier(Route route, CircuitBreakerDefinition definition) {
+        super(route, definition);
     }
 
     @Override
@@ -50,7 +50,7 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
         Processor processor = createChildProcessor(true);
         Processor fallback = null;
         if (definition.getOnFallback() != null) {
-            fallback = ProcessorReifier.reifier(routeContext, definition.getOnFallback()).createProcessor();
+            fallback = ProcessorReifier.reifier(route, definition.getOnFallback()).createProcessor();
         }
 
         final HystrixConfigurationDefinition config = buildHystrixConfiguration();
diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java
index 765360a..1d2a06f 100644
--- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java
+++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigTest.java
@@ -18,11 +18,11 @@ package org.apache.camel.component.hystrix.processor;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.DefaultRouteContext;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.model.CircuitBreakerDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.Model;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.SimpleRegistry;
 import org.junit.Assert;
 import org.junit.Test;
@@ -33,7 +33,7 @@ public class HystrixHierarchicalConfigTest {
     public void testRegistryConfiguration() throws Exception {
         final SimpleRegistry registry = new SimpleRegistry();
         final CamelContext context = new DefaultCamelContext(registry);
-        final RouteContext routeContext = new DefaultRouteContext(context, null, null);
+        final Route route = new DefaultRoute(context, null, null, null);
 
         HystrixConfigurationDefinition def = new HystrixConfigurationDefinition();
         def.setGroupKey("global-group-key");
@@ -47,7 +47,7 @@ public class HystrixHierarchicalConfigTest {
         registry.bind(HystrixConstants.DEFAULT_HYSTRIX_CONFIGURATION_ID, def);
         registry.bind("ref-hystrix", ref);
 
-        final HystrixReifier reifier = new HystrixReifier(routeContext,
+        final HystrixReifier reifier = new HystrixReifier(route,
                 new CircuitBreakerDefinition()
                         .configuration("ref-hystrix")
                         .hystrixConfiguration()
@@ -65,7 +65,7 @@ public class HystrixHierarchicalConfigTest {
     @Test
     public void testContextConfiguration() throws Exception {
         final CamelContext context = new DefaultCamelContext();
-        final RouteContext routeContext = new DefaultRouteContext(context, null, null);
+        final Route route = new DefaultRoute(context, null, null, null);
 
         HystrixConfigurationDefinition def = new HystrixConfigurationDefinition();
         def.setGroupKey("global-group-key");
@@ -79,7 +79,7 @@ public class HystrixHierarchicalConfigTest {
         context.getExtension(Model.class).setHystrixConfiguration(def);
         context.getExtension(Model.class).addHystrixConfiguration("ref-hystrix", ref);
 
-        final HystrixReifier reifier = new HystrixReifier(routeContext,
+        final HystrixReifier reifier = new HystrixReifier(route,
                 new CircuitBreakerDefinition()
                         .configuration("ref-hystrix")
                         .hystrixConfiguration()
@@ -98,7 +98,7 @@ public class HystrixHierarchicalConfigTest {
     public void testMixedConfiguration() throws Exception {
         final SimpleRegistry registry = new SimpleRegistry();
         final CamelContext context = new DefaultCamelContext(registry);
-        final RouteContext routeContext = new DefaultRouteContext(context, null, null);
+        final Route route = new DefaultRoute(context, null, null, null);
 
         HystrixConfigurationDefinition def = new HystrixConfigurationDefinition();
         def.setGroupKey("global-group-key");
@@ -120,7 +120,7 @@ public class HystrixHierarchicalConfigTest {
         registry.bind(HystrixConstants.DEFAULT_HYSTRIX_CONFIGURATION_ID, defReg);
         registry.bind("ref-hystrix", ref);
 
-        final HystrixReifier reifier = new HystrixReifier(routeContext,
+        final HystrixReifier reifier = new HystrixReifier(route,
                 new CircuitBreakerDefinition()
                         .configuration("ref-hystrix")
                         .hystrixConfiguration()
diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java
index 105b3e2..bf254bd 100644
--- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java
+++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteHierarchicalConfigTest.java
@@ -17,11 +17,11 @@
 package org.apache.camel.component.hystrix.processor;
 
 import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.impl.DefaultRouteContext;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.model.CircuitBreakerDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.test.spring.CamelSpringTestSupport;
 import org.junit.Assert;
 import org.junit.Test;
@@ -39,13 +39,13 @@ public class SpringHystrixRouteHierarchicalConfigTest extends CamelSpringTestSup
     @Test
     public void testHystrix() throws Exception {
         RouteDefinition routeDefinition = context.getRouteDefinition("hystrix-route");
-        final RouteContext routeContext = new DefaultRouteContext(context, routeDefinition,
-                routeDefinition.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory()));
+        final Route route = new DefaultRoute(context, routeDefinition,
+                routeDefinition.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory()), null);
         CircuitBreakerDefinition hystrixDefinition = findCircuitBreakerDefinition(routeDefinition);
 
         Assert.assertNotNull(hystrixDefinition);
 
-        HystrixReifier reifier = new HystrixReifier(routeContext, hystrixDefinition);
+        HystrixReifier reifier = new HystrixReifier(route, hystrixDefinition);
         HystrixConfigurationDefinition config = reifier.buildHystrixConfiguration();
 
         Assert.assertEquals("local-conf-group-key", config.getGroupKey());
diff --git a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/policy/InfinispanRoutePolicy.java b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/policy/InfinispanRoutePolicy.java
index c3f092f..6bdc82d 100644
--- a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/policy/InfinispanRoutePolicy.java
+++ b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/policy/InfinispanRoutePolicy.java
@@ -112,7 +112,7 @@ public class InfinispanRoutePolicy extends RoutePolicySupport implements CamelCo
         super.onInit(route);
 
         LOGGER.info("Route managed by {}. Setting route {} AutoStartup flag to false.", getClass(), route.getId());
-        route.getRouteContext().setAutoStartup(false);
+        route.setAutoStartup(false);
 
         stoppeddRoutes.add(route);
 
diff --git a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/policy/JCachePolicy.java b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/policy/JCachePolicy.java
index 5fb6db2..981f20e 100644
--- a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/policy/JCachePolicy.java
+++ b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/policy/JCachePolicy.java
@@ -28,7 +28,7 @@ import org.apache.camel.Expression;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -57,12 +57,12 @@ public class JCachePolicy implements Policy {
     private boolean enabled = true;
 
     @Override
-    public void beforeWrap(RouteContext routeContext, NamedNode namedNode) {
+    public void beforeWrap(Route route, NamedNode namedNode) {
 
     }
 
     @Override
-    public Processor wrap(RouteContext routeContext, Processor processor) {
+    public Processor wrap(Route route, Processor processor) {
         //Don't add JCachePolicyProcessor if JCachePolicy is disabled. This means enable/disable has impact only during startup
         if (!isEnabled()) {
             return processor;
@@ -77,7 +77,7 @@ public class JCachePolicy implements Policy {
 
             //Lookup CacheManager from CamelContext if it's not set
             if (cacheManager == null) {
-                Set<CacheManager> lookupResult = routeContext.getCamelContext().getRegistry().findByType(CacheManager.class);
+                Set<CacheManager> lookupResult = route.getCamelContext().getRegistry().findByType(CacheManager.class);
                 if (ObjectHelper.isNotEmpty(lookupResult)) {
 
                     //Use the first cache manager found
@@ -93,7 +93,7 @@ public class JCachePolicy implements Policy {
             }
 
             //Use routeId as cacheName if it's not set
-            String cacheName = ObjectHelper.isNotEmpty(this.cacheName) ? this.cacheName : routeContext.getRouteId();
+            String cacheName = ObjectHelper.isNotEmpty(this.cacheName) ? this.cacheName : route.getRouteId();
             LOG.debug("Getting cache:{}", cacheName);
 
             //Get cache or create a new one using the cacheConfiguration
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/AbstractTransactionTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/AbstractTransactionTest.java
index b8f97e3..99dc9d0 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/AbstractTransactionTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/AbstractTransactionTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.DelegateProcessor;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.builder.NotifyBuilder;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.Pipeline;
 import org.apache.camel.processor.errorhandler.DeadLetterChannel;
 import org.apache.camel.processor.errorhandler.DefaultErrorHandler;
@@ -78,7 +78,7 @@ public abstract class AbstractTransactionTest extends CamelSpringTestSupport {
     protected ConditionalExceptionProcessor getConditionalExceptionProcessor(Route route) {
         // the following is very specific (and brittle) and is not generally
         // useful outside these transaction tests (nor intended to be).
-        EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+        DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
         Processor processor = findProcessorByClass(consumerRoute.getProcessor(), ConditionalExceptionProcessor.class);
         return assertIsInstanceOf(ConditionalExceptionProcessor.class, processor);
     }
diff --git a/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java b/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java
index 63a7d12..cf5ee0e 100644
--- a/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java
+++ b/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java
@@ -43,7 +43,7 @@ public class ScheduledJob implements Job, Serializable, ScheduledRoutePolicyCons
         Action storedAction = state.getAction();
         Route storedRoute = state.getRoute();
 
-        List<RoutePolicy> policyList = storedRoute.getRouteContext().getRoutePolicyList();
+        List<RoutePolicy> policyList = storedRoute.getRoutePolicyList();
         for (RoutePolicy policy : policyList) {
             try {
                 if (policy instanceof ScheduledRoutePolicy) {
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessorFactory.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessorFactory.java
index bcf91c4..3da7d3c 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessorFactory.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessorFactory.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.resilience4j;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.engine.TypedProcessorFactory;
 import org.apache.camel.model.CircuitBreakerDefinition;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 
 /**
  * To integrate camel-resilience4j with the Camel routes using the Circuit
@@ -32,8 +32,8 @@ public class ResilienceProcessorFactory extends TypedProcessorFactory<CircuitBre
     }
 
     @Override
-    public Processor doCreateProcessor(RouteContext routeContext, CircuitBreakerDefinition definition) throws Exception {
-        return new ResilienceReifier(routeContext, definition).createProcessor();
+    public Processor doCreateProcessor(Route route, CircuitBreakerDefinition definition) throws Exception {
+        return new ResilienceReifier(route, definition).createProcessor();
     }
 
 }
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
index f725db8..ec0b35c 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
@@ -34,14 +34,14 @@ import org.apache.camel.model.Resilience4jConfigurationCommon;
 import org.apache.camel.model.Resilience4jConfigurationDefinition;
 import org.apache.camel.reifier.ProcessorReifier;
 import org.apache.camel.spi.BeanIntrospection;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.function.Suppliers;
 
 public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition> {
 
-    public ResilienceReifier(RouteContext routeContext, CircuitBreakerDefinition definition) {
-        super(routeContext, definition);
+    public ResilienceReifier(Route route, CircuitBreakerDefinition definition) {
+        super(route, definition);
     }
 
     @Override
@@ -50,7 +50,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
         Processor processor = createChildProcessor(true);
         Processor fallback = null;
         if (definition.getOnFallback() != null) {
-            fallback = ProcessorReifier.reifier(routeContext, definition.getOnFallback()).createProcessor();
+            fallback = ProcessorReifier.reifier(route, definition.getOnFallback()).createProcessor();
         }
         boolean fallbackViaNetwork = definition.getOnFallback() != null && parseBoolean(definition.getOnFallback().getFallbackViaNetwork(), false);
         if (fallbackViaNetwork) {
diff --git a/components/camel-shiro/src/main/java/org/apache/camel/component/shiro/security/ShiroSecurityPolicy.java b/components/camel-shiro/src/main/java/org/apache/camel/component/shiro/security/ShiroSecurityPolicy.java
index 1b342e0..568bc9b 100644
--- a/components/camel-shiro/src/main/java/org/apache/camel/component/shiro/security/ShiroSecurityPolicy.java
+++ b/components/camel-shiro/src/main/java/org/apache/camel/component/shiro/security/ShiroSecurityPolicy.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.AuthorizationPolicy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authz.Permission;
 import org.apache.shiro.config.Ini;
@@ -99,14 +99,14 @@ public class ShiroSecurityPolicy implements AuthorizationPolicy {
     }
 
     @Override
-    public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+    public void beforeWrap(Route route, NamedNode definition) {
         // noop
     }
 
     @Override
-    public Processor wrap(RouteContext routeContext, final Processor processor) {
+    public Processor wrap(Route route, final Processor processor) {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Securing route {} using Shiro policy {}", routeContext.getRouteId(), this);
+            LOG.debug("Securing route {} using Shiro policy {}", route.getRouteId(), this);
         }
         return new ShiroSecurityProcessor(processor, this);
     }
diff --git a/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java
index 339101e..143d6ab 100644
--- a/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java
+++ b/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java
@@ -27,7 +27,7 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.model.IdentifiedType;
 import org.apache.camel.spi.AuthorizationPolicy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.processor.DelegateProcessor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,11 +56,11 @@ public class SpringSecurityAuthorizationPolicy extends IdentifiedType implements
     private boolean useThreadSecurityContext = true;
 
     @Override
-    public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+    public void beforeWrap(Route route, NamedNode definition) {
     }
 
     @Override
-    public Processor wrap(RouteContext routeContext, Processor processor) {
+    public Processor wrap(Route route, Processor processor) {
         // wrap the processor with authorizeDelegateProcessor
         return new AuthorizeDelegateProcess(processor);
     }
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 cf87eeb..4681af6 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
@@ -23,7 +23,7 @@ import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.spi.TransactedPolicy;
 import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.util.ObjectHelper;
@@ -57,11 +57,11 @@ public class SpringTransactionPolicy implements TransactedPolicy {
     }
 
     @Override
-    public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+    public void beforeWrap(Route route, NamedNode definition) {
     }
 
     @Override
-    public Processor wrap(RouteContext routeContext, Processor processor) {
+    public Processor wrap(Route route, Processor processor) {
         TransactionErrorHandler answer;
 
         // the goal is to configure the error handler builder on the route as a transacted error handler,
@@ -71,8 +71,8 @@ public class SpringTransactionPolicy implements TransactedPolicy {
         // if we should not support this we do not need to wrap the processor as we only need one transacted error handler
 
         // find the existing error handler builder
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerFactory();
+        RouteDefinition routeDefinition = (RouteDefinition) route.getRoute();
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) routeDefinition.getErrorHandlerFactory();
 
         // check if its a ref if so then do a lookup
         if (builder instanceof ErrorHandlerBuilderRef) {
@@ -84,14 +84,14 @@ public class SpringTransactionPolicy implements TransactedPolicy {
             // and if so then we can safely replace that with our transacted error handler
             if (ErrorHandlerReifier.isErrorHandlerFactoryConfigured(ref)) {
                 LOG.debug("Looking up ErrorHandlerBuilder with ref: {}", ref);
-                builder = (ErrorHandlerBuilder) ErrorHandlerReifier.lookupErrorHandlerFactory(routeContext, ref);
+                builder = (ErrorHandlerBuilder) ErrorHandlerReifier.lookupErrorHandlerFactory(route, ref);
             }
         }
 
         if (builder != null && builder.supportTransacted()) {
             // already a TX error handler then we are good to go
             LOG.debug("The ErrorHandlerBuilder configured is already a TransactionErrorHandlerBuilder: {}", builder);
-            answer = createTransactionErrorHandler(routeContext, processor, builder);
+            answer = createTransactionErrorHandler(route, processor, builder);
         } else {
             // no transaction error handler builder configure so create a temporary one as we got all
             // the needed information form the configured builder anyway this allow us to use transacted
@@ -106,22 +106,22 @@ public class SpringTransactionPolicy implements TransactedPolicy {
             txBuilder.setSpringTransactionPolicy(this);
             if (builder != null) {
                 // use error handlers from the configured builder
-                routeContext.addErrorHandlerFactoryReference(builder, txBuilder);
+                route.addErrorHandlerFactoryReference(builder, txBuilder);
             }
-            answer = createTransactionErrorHandler(routeContext, processor, txBuilder);
+            answer = createTransactionErrorHandler(route, processor, txBuilder);
 
             // set the route to use our transacted error handler builder
-            route.setErrorHandlerFactory(txBuilder);
+            routeDefinition.setErrorHandlerFactory(txBuilder);
         }
 
         // return with wrapped transacted error handler
         return answer;
     }
 
-    protected TransactionErrorHandler createTransactionErrorHandler(RouteContext routeContext, Processor processor, ErrorHandlerBuilder builder) {
+    protected TransactionErrorHandler createTransactionErrorHandler(Route route, Processor processor, ErrorHandlerBuilder builder) {
         TransactionErrorHandler answer;
         try {
-            answer = (TransactionErrorHandler) ErrorHandlerReifier.reifier(routeContext, builder).createErrorHandler(processor);
+            answer = (TransactionErrorHandler) ErrorHandlerReifier.reifier(route, builder).createErrorHandler(processor);
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
index 3aa044a..62ad792 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
@@ -16,17 +16,10 @@
  */
 package org.apache.camel.spring.spi;
 
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
 import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.CamelLogger;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.PlatformTransactionManager;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
index 1aa68ca..82a2de7 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
@@ -21,7 +21,7 @@ import java.util.Map;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
 import org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.spi.TransactedPolicy;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -35,8 +35,8 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
 
     private static final Logger LOG = LoggerFactory.getLogger(TransactionErrorHandlerReifier.class);
 
-    public TransactionErrorHandlerReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        super(routeContext, definition);
+    public TransactionErrorHandlerReifier(Route route, ErrorHandlerFactory definition) {
+        super(route, definition);
     }
 
     @Override
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextFactoryBeanTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextFactoryBeanTest.java
index 6fb82ac..5de6bd6 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextFactoryBeanTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextFactoryBeanTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.api.management.JmxSystemPropertyKeys;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.camel.util.IOHelper;
 import org.junit.After;
@@ -103,7 +103,7 @@ public class CamelContextFactoryBeanTest extends XmlConfigTestSupport {
 
         for (Route route : routes) {
             Endpoint key = route.getEndpoint();
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Processor processor = consumerRoute.getProcessor();
             assertNotNull(processor);
 
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
index c7d4764..614c970 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
@@ -22,7 +22,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderSupport;
 import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.processor.DelegateProcessor;
 import org.springframework.beans.factory.BeanNameAware;
 
@@ -58,8 +58,8 @@ public class DummyErrorHandlerBuilder extends ErrorHandlerBuilderSupport impleme
 
     public static class DummyErrorHandlerReifier extends ErrorHandlerReifier<DummyErrorHandlerBuilder> {
 
-        public DummyErrorHandlerReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-            super(routeContext, (DummyErrorHandlerBuilder) definition);
+        public DummyErrorHandlerReifier(Route route, ErrorHandlerFactory definition) {
+            super(route, (DummyErrorHandlerBuilder) definition);
         }
 
         @Override
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerTest.java
index 3b98041..e72ea39 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerTest.java
@@ -20,7 +20,7 @@ import java.util.List;
 
 import org.apache.camel.Channel;
 import org.apache.camel.Route;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.errorhandler.DeadLetterChannel;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
 import org.apache.camel.spring.SpringCamelContext;
@@ -42,7 +42,7 @@ public class ErrorHandlerTest extends SpringTestSupport {
         List<Route> list = context.getRoutes();
         assertEquals("Number routes created" + list, 2, list.size());
         for (Route route : list) {
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumerRoute.getProcessor());
 
             DeadLetterChannel deadLetterChannel = assertIsInstanceOf(DeadLetterChannel.class, channel.getErrorHandler());
diff --git a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java
index 017b8b7..19116f9 100644
--- a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java
+++ b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java
@@ -49,12 +49,11 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
-import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.EventNotifierSupport;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.support.service.ServiceHelper;
@@ -809,16 +808,7 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
         return new Expression() {
             @Override
             public <T> T evaluate(Exchange exchange, Class<T> type) {
-                String answer = null;
-                UnitOfWork uow = exchange.getUnitOfWork();
-                RouteContext rc = uow != null ? uow.getRouteContext() : null;
-                if (rc != null) {
-                    answer = rc.getRouteId();
-                }
-                if (answer == null) {
-                    // fallback and get from route id on the exchange
-                    answer = exchange.getFromRouteId();
-                }
+                String answer = ExchangeHelper.getRouteId(exchange);
                 return type.cast(answer);
             }
         };
diff --git a/core/camel-api/src/main/java/org/apache/camel/Channel.java b/core/camel-api/src/main/java/org/apache/camel/Channel.java
index bdfcbfb..c425b80 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Channel.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Channel.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel;
 
-import org.apache.camel.spi.RouteContext;
-
 /**
  * Channel acts as a channel between {@link Processor}s in the route graph.
  * <p/>
@@ -47,11 +45,11 @@ public interface Channel extends AsyncProcessor, Navigate<Processor> {
     Processor getNextProcessor();
 
     /**
-     * Gets the {@link RouteContext}
+     * Gets the {@link Route}
      *
      * @return the route context
      */
-    RouteContext getRouteContext();
+    Route getRoute();
 
     /**
      * Gets the definition of the next processor
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 30cb281..c596ef2 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
@@ -18,8 +18,13 @@ package org.apache.camel;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.spi.InterceptStrategy;
+import org.apache.camel.spi.ManagementInterceptStrategy;
+import org.apache.camel.spi.RouteController;
+import org.apache.camel.spi.RouteError;
+import org.apache.camel.spi.RoutePolicy;
 
 /**
  * A <a href="http://camel.apache.org/routes.html">Route</a>
@@ -30,7 +35,7 @@ import org.apache.camel.spi.RouteContext;
  * such as starting and stopping using the {@link org.apache.camel.spi.RouteController#startRoute(String)}
  * and {@link org.apache.camel.spi.RouteController#stopRoute(String)} methods.
  */
-public interface Route extends EndpointAware {
+public interface Route extends RuntimeConfiguration {
 
     String ID_PROPERTY = "id";
     String CUSTOM_ID_PROPERTY = "customId";
@@ -105,18 +110,18 @@ public interface Route extends EndpointAware {
     String getDescription();
 
     /**
-     * Gets the route context
+     * Gets the camel context
      *
-     * @return the route context
+     * @return the camel context
      */
-    RouteContext getRouteContext();
+    CamelContext getCamelContext();
 
     /**
-     * Gets the camel context
+     * Gets the input endpoint for this route.
      *
-     * @return the camel context
+     * @return the endpoint
      */
-    CamelContext getCamelContext();
+    Endpoint getEndpoint();
 
     /**
      * A strategy callback allowing special initialization when services are starting.
@@ -160,4 +165,146 @@ public interface Route extends EndpointAware {
      */
     void warmUp();
 
+    /**
+     * Gets the last error.
+     *
+     * @return the error
+     */
+    RouteError getLastError();
+
+    /**
+     * Sets the last error.
+     *
+     * @param error the error
+     */
+    void setLastError(RouteError error);
+
+    Integer getStartupOrder();
+
+    void setStartupOrder(Integer startupOrder);
+
+    /**
+     * Gets the  {@link RouteController} for this route.
+     *
+     * @return the route controller,
+     */
+    RouteController getRouteController();
+
+    /**
+     * Sets the {@link RouteController} for this route.
+     *
+     * @param controller the RouteController
+     */
+    void setRouteController(RouteController controller);
+
+    /**
+     * Sets whether the route should automatically start when Camel starts.
+     * <p/>
+     * Default is <tt>true</tt> to always start up.
+     *
+     * @param autoStartup whether to start up automatically.
+     */
+    void setAutoStartup(Boolean autoStartup);
+
+    /**
+     * Gets whether the route should automatically start when Camel starts.
+     * <p/>
+     * Default is <tt>true</tt> to always start up.
+     *
+     * @return <tt>true</tt> if route should automatically start
+     */
+    Boolean isAutoStartup();
+
+    /**
+     * Gets the route id
+     */
+    String getRouteId();
+
+    /**
+     * Get the route type
+     *
+     * @return the route type
+     */
+    NamedNode getRoute();
+
+    //
+    // CREATION TIME
+    //
+
+    /**
+     * This method retrieves the event driven Processors on this route context.
+     * @return
+     */
+    List<Processor> getEventDrivenProcessors();
+
+    /**
+     * This method retrieves the InterceptStrategy instances this route context.
+     *
+     * @return the strategy
+     */
+    List<InterceptStrategy> getInterceptStrategies();
+
+    /**
+     * Sets a special intercept strategy for management.
+     * <p/>
+     * Is by default used to correlate managed performance counters with processors
+     * when the runtime route is being constructed
+     *
+     * @param interceptStrategy the managed intercept strategy
+     */
+    void setManagementInterceptStrategy(ManagementInterceptStrategy interceptStrategy);
+
+    /**
+     * Gets the special managed intercept strategy if any
+     *
+     * @return the managed intercept strategy, or <tt>null</tt> if not managed
+     */
+    ManagementInterceptStrategy getManagementInterceptStrategy();
+
+    /**
+     * Gets the route policy List
+     *
+     * @return the route policy list if any
+     */
+    List<RoutePolicy> getRoutePolicyList();
+
+    void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
+
+    ErrorHandlerFactory getErrorHandlerFactory();
+
+    Processor createErrorHandler(Processor processor) throws Exception;
+
+    // called at runtime
+    Processor getOnCompletion(String onCompletionId);
+
+    // called at completion time
+    void setOnCompletion(String onCompletionId, Processor processor);
+
+    Processor getOnException(String onExceptionId);
+
+    void setOnException(String onExceptionId, Processor processor);
+
+    /**
+     * Adds error handler for the given exception type
+     *
+     * @param factory       the error handler factory
+     * @param exception     the exception to handle
+     */
+    void addErrorHandler(ErrorHandlerFactory factory, NamedNode exception);
+
+    /**
+     * Gets the error handlers
+     *
+     * @param factory       the error handler factory
+     */
+    Set<NamedNode> getErrorHandlers(ErrorHandlerFactory factory);
+
+    /**
+     * Link the error handlers from a factory to another
+     *
+     * @param source        the source factory
+     * @param target        the target factory
+     */
+    void addErrorHandlerFactoryReference(ErrorHandlerFactory source, ErrorHandlerFactory target);
+
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java b/core/camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java
index 4edbd32..b1bca1e 100644
--- a/core/camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java
+++ b/core/camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java
@@ -17,7 +17,7 @@
 package org.apache.camel;
 
 /**
- * Various runtime configuration options used by {@link org.apache.camel.CamelContext} and {@link org.apache.camel.spi.RouteContext}
+ * Various runtime configuration options used by {@link org.apache.camel.CamelContext} and {@link Route}
  * for cross cutting functions such as tracing, delayer, stream cache and the like.
  */
 public interface RuntimeConfiguration {
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java b/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
index 6a3fd00..6f5349b 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
@@ -86,7 +86,7 @@ public interface LifecycleStrategy {
      * @param service the added service
      * @param route   the route the service belongs to if any possible to determine
      */
-    void onServiceAdd(CamelContext context, Service service, Route route);
+    void onServiceAdd(CamelContext context, Service service, org.apache.camel.Route route);
 
     /**
      * Notification on removing a {@link Service}.
@@ -95,46 +95,46 @@ public interface LifecycleStrategy {
      * @param service the removed service
      * @param route   the route the service belongs to if any possible to determine
      */
-    void onServiceRemove(CamelContext context, Service service, Route route);
+    void onServiceRemove(CamelContext context, Service service, org.apache.camel.Route route);
 
     /**
-     * Notification on adding {@link Route}(s).
+     * Notification on adding {@link org.apache.camel.Route}(s).
      *
      * @param routes the added routes
      */
-    void onRoutesAdd(Collection<Route> routes);
+    void onRoutesAdd(Collection<org.apache.camel.Route> routes);
 
     /**
-     * Notification on removing {@link Route}(s).
+     * Notification on removing {@link org.apache.camel.Route}(s).
      *
      * @param routes the removed routes
      */
-    void onRoutesRemove(Collection<Route> routes);
+    void onRoutesRemove(Collection<org.apache.camel.Route> routes);
 
     /**
-     * Notification on adding {@link RouteContext}(s).
+     * Notification on adding {@link Route}(s).
      *
-     * @param routeContext the added route context
+     * @param route the added route context
      */
-    void onRouteContextCreate(RouteContext routeContext);
+    void onRouteContextCreate(Route route);
 
     /**
      * Notification on adding error handler.
      *
-     * @param routeContext        the added route context
+     * @param route        the added route context
      * @param errorHandler        the error handler
      * @param errorHandlerBuilder the error handler builder
      */
-    void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder);
+    void onErrorHandlerAdd(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder);
 
     /**
      * Notification on removing error handler.
      *
-     * @param routeContext        the removed route context
+     * @param route        the removed route context
      * @param errorHandler        the error handler
      * @param errorHandlerBuilder the error handler builder
      */
-    void onErrorHandlerRemove(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder);
+    void onErrorHandlerRemove(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder);
 
     /**
      * Notification on adding a thread pool.
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
index b83ca38..1656ff8 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
@@ -54,7 +54,7 @@ public interface ManagementObjectNameStrategy {
 
     ObjectName getObjectNameForDataFormat(CamelContext context, DataFormat endpoint) throws MalformedObjectNameException;
 
-    ObjectName getObjectNameForErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory builder) throws MalformedObjectNameException;
+    ObjectName getObjectNameForErrorHandler(Route route, Processor errorHandler, ErrorHandlerFactory builder) throws MalformedObjectNameException;
 
     ObjectName getObjectNameForProcessor(CamelContext context, Processor processor, NamedNode definition) throws MalformedObjectNameException;
 
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
index d759d6d..9649519 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
@@ -45,7 +45,7 @@ public interface ManagementObjectStrategy {
 
     Object getManagedObjectForEndpoint(CamelContext context, Endpoint endpoint);
 
-    Object getManagedObjectForErrorHandler(CamelContext context, RouteContext routeContext,
+    Object getManagedObjectForErrorHandler(CamelContext context, Route route,
                                            Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder);
 
     Object getManagedObjectForRouteController(CamelContext context);
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/Policy.java b/core/camel-api/src/main/java/org/apache/camel/spi/Policy.java
index f235204..070ff61 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/Policy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/Policy.java
@@ -18,6 +18,7 @@ package org.apache.camel.spi;
 
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 
 /**
  * A strategy capable of applying interceptors to a processor.
@@ -41,17 +42,17 @@ public interface Policy {
      * This allows you to do any custom logic before the processor is wrapped. For example to
      * manipulate the {@link org.apache.camel.model.ProcessorDefinition definiton}.
      *
-     * @param routeContext   the route context
+     * @param route   the route context
      * @param definition     the processor definition
      */
-    void beforeWrap(RouteContext routeContext, NamedNode definition);
+    void beforeWrap(Route route, NamedNode definition);
 
     /**
      * Wraps any applicable interceptors around the given processor.
      *
-     * @param routeContext the route context
+     * @param route the route context
      * @param processor the processor to be intercepted
      * @return either the original processor or a processor wrapped in one or more processors
      */
-    Processor wrap(RouteContext routeContext, Processor processor);
+    Processor wrap(Route route, Processor processor);
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
index b88cf57..8eaa016 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
@@ -21,6 +21,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 
 /**
  * A factory to create {@link Processor} based on the {@link org.apache.camel.model.ProcessorDefinition definition}.
@@ -41,23 +42,23 @@ public interface ProcessorFactory {
      * <p/>
      * The child processor is an output from the given definition, for example the sub route in a splitter EIP.
      *
-     * @param routeContext  the route context
+     * @param route  the route context
      * @param definition    the definition which represents the processor
      * @param mandatory     whether or not the child is mandatory
      * @return the created processor, or <tt>null</tt> to let the default implementation in Camel create the processor.
      * @throws Exception can be thrown if error creating the processor
      */
-    Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception;
+    Processor createChildProcessor(Route route, NamedNode definition, boolean mandatory) throws Exception;
 
     /**
      * Creates the processor.
      *
-     * @param routeContext  the route context
+     * @param route  the route context
      * @param definition    the definition which represents the processor
      * @return the created processor, or <tt>null</tt> to let the default implementation in Camel create the processor.
      * @throws Exception can be thrown if error creating the processor
      */
-    Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception;
+    Processor createProcessor(Route route, NamedNode definition) throws Exception;
 
     /**
      * Creates a processor by the name of the definition. This should only be used in some special situations
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
deleted file mode 100644
index 39e9b2c..0000000
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spi;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointAware;
-import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.NamedNode;
-import org.apache.camel.Processor;
-import org.apache.camel.Route;
-import org.apache.camel.RuntimeConfiguration;
-
-/**
- * The context used to activate new routing rules
- */
-public interface RouteContext extends RuntimeConfiguration, EndpointAware {
-
-    /**
-     * Gets the route id
-     */
-    String getRouteId();
-
-    /**
-     * Get the route type
-     *
-     * @return the route type
-     */
-    NamedNode getRoute();
-
-    /**
-     * Gets the camel context
-     *
-     * @return the camel context
-     */
-    CamelContext getCamelContext();
-
-    /**
-     * For completing the route creation, creating a single event driven route
-     * for the current from endpoint with any processors required
-     */
-    Route commit();
-
-    /**
-     * Adds an event driven processor
-     *
-     * @param processor the processor
-     */
-    void addEventDrivenProcessor(Processor processor);
-
-    /**
-     * This method retrieves the InterceptStrategy instances this route context.
-     *
-     * @return the strategy
-     */
-    List<InterceptStrategy> getInterceptStrategies();
-
-    /**
-     * This method sets the InterceptStrategy instances on this route context.
-     *
-     * @param interceptStrategies the strategies
-     */
-    void setInterceptStrategies(List<InterceptStrategy> interceptStrategies);
-
-    /**
-     * Adds a InterceptStrategy to this route context
-     *
-     * @param interceptStrategy the strategy
-     */
-    void addInterceptStrategy(InterceptStrategy interceptStrategy);
-
-    /**
-     * Sets a special intercept strategy for management.
-     * <p/>
-     * Is by default used to correlate managed performance counters with processors
-     * when the runtime route is being constructed
-     *
-     * @param interceptStrategy the managed intercept strategy
-     */
-    void setManagementInterceptStrategy(ManagementInterceptStrategy interceptStrategy);
-
-    /**
-     * Gets the special managed intercept strategy if any
-     *
-     * @return the managed intercept strategy, or <tt>null</tt> if not managed
-     */
-    ManagementInterceptStrategy getManagementInterceptStrategy();
-
-    /**
-     * If this flag is true, {@link org.apache.camel.reifier.ProcessorReifier#addRoutes(RouteContext)}
-     * will not add processor to addEventDrivenProcessor to the RouteContext and it
-     * will prevent from adding an EventDrivenRoute.
-     *
-     * @param value the flag
-     */
-    void setIsRouteAdded(boolean value);
-
-    void setEndpoint(Endpoint endpoint);
-
-    /**
-     * Returns the isRouteAdded flag
-     *
-     * @return the flag
-     */
-    boolean isRouteAdded();
-
-    /**
-     * Gets the route policy List
-     *
-     * @return the route policy list if any
-     */
-    List<RoutePolicy> getRoutePolicyList();
-
-    /**
-     * Sets a custom route policy List
-     *
-     * @param routePolicyList the custom route policy list
-     */
-    void setRoutePolicyList(List<RoutePolicy> routePolicyList);
-
-    /**
-     * Sets whether the route should automatically start when Camel starts.
-     * <p/>
-     * Default is <tt>true</tt> to always start up.
-     *
-     * @param autoStartup whether to start up automatically.
-     */
-    @Override
-    void setAutoStartup(Boolean autoStartup);
-
-    /**
-     * Gets whether the route should automatically start when Camel starts.
-     * <p/>
-     * Default is <tt>true</tt> to always start up.
-     *
-     * @return <tt>true</tt> if route should automatically start
-     */
-    @Override
-    Boolean isAutoStartup();
-
-    void setStartupOrder(Integer startupOrder);
-
-    Integer getStartupOrder();
-
-    void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
-
-    ErrorHandlerFactory getErrorHandlerFactory();
-
-    Processor createErrorHandler(Processor processor) throws Exception;
-
-    void addAdvice(CamelInternalProcessorAdvice<?> advice);
-
-    void addProperty(String key, Object value);
-
-    /**
-     * Gets the last error.
-     *
-     * @return the error
-     */
-    default RouteError getLastError() {
-        return null;
-    }
-
-    /**
-     * Sets the last error.
-     *
-     * @param error the error
-     */
-    default void setLastError(RouteError error) {
-    }
-
-    /**
-     * Gets the  {@link RouteController} for this route.
-     *
-     * @return the route controller,
-     */
-    RouteController getRouteController();
-
-    /**
-     * Sets the {@link RouteController} for this route.
-     *
-     * @param controller the RouteController
-     */
-    void setRouteController(RouteController controller);
-
-    Processor getOnCompletion(String onCompletionId);
-
-    void setOnCompletion(String onCompletionId, Processor processor);
-
-    Processor getOnException(String onExceptionId);
-
-    void setOnException(String onExceptionId, Processor processor);
-
-    /**
-     * Adds error handler for the given exception type
-     *
-     * @param factory   the error handler factory
-     * @param exception the exception to handle
-     */
-    void addErrorHandler(ErrorHandlerFactory factory, NamedNode exception);
-
-    /**
-     * Gets the error handlers
-     *
-     * @param factory the error handler factory
-     */
-    Set<NamedNode> getErrorHandlers(ErrorHandlerFactory factory);
-
-    /**
-     * Removes the error handlers
-     *
-     * @param factory the error handler factory
-     */
-    void removeErrorHandlers(ErrorHandlerFactory factory);
-
-    /**
-     * Link the error handlers from a factory to another
-     *
-     * @param source the source factory
-     * @param target the target factory
-     */
-    void addErrorHandlerFactoryReference(ErrorHandlerFactory source, ErrorHandlerFactory target);
-
-}
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java
index 14b20b1..f0bf408 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java
@@ -151,32 +151,32 @@ public interface UnitOfWork extends Service {
     void endTransactedBy(Object key);
 
     /**
-     * Gets the {@link RouteContext} that this {@link UnitOfWork} currently is being routed through.
+     * Gets the {@link Route} that this {@link UnitOfWork} currently is being routed through.
      * <p/>
      * Notice that an {@link Exchange} can be routed through multiple routes and thus the
-     * {@link org.apache.camel.spi.RouteContext} can change over time.
+     * {@link org.apache.camel.Route} can change over time.
      *
-     * @return the route context, maybe be <tt>null</tt> if not routed through a route currently.
+     * @return the route, maybe be <tt>null</tt> if not routed through a route currently.
      */
-    RouteContext getRouteContext();
+    Route getRoute();
 
     /**
-     * Pushes the {@link RouteContext} that this {@link UnitOfWork} currently is being routed through.
+     * Pushes the {@link Route} that this {@link UnitOfWork} currently is being routed through.
      * <p/>
      * Notice that an {@link Exchange} can be routed through multiple routes and thus the
-     * {@link org.apache.camel.spi.RouteContext} can change over time.
+     * {@link org.apache.camel.Route} can change over time.
      *
-     * @param routeContext the route context
+     * @param route the route
      */
-    void pushRouteContext(RouteContext routeContext);
+    void pushRoute(Route route);
 
     /**
-     * When finished being routed under the current {@link org.apache.camel.spi.RouteContext}
+     * When finished being routed under the current {@link org.apache.camel.Route}
      * it should be removed.
      *
-     * @return the route context or <tt>null</tt> if none existed
+     * @return the route or <tt>null</tt> if none existed
      */
-    RouteContext popRouteContext();
+    Route popRoute();
 
     /**
      * Whether the unit of work should call the before/after process methods or not.
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractRouteContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractRouteContext.java
deleted file mode 100644
index 5bf48b0..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractRouteContext.java
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-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.ConcurrentMap;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.NamedNode;
-import org.apache.camel.Processor;
-import org.apache.camel.Route;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.ShutdownRoute;
-import org.apache.camel.ShutdownRunningTask;
-import org.apache.camel.processor.CamelInternalProcessor;
-import org.apache.camel.processor.Pipeline;
-import org.apache.camel.spi.CamelInternalProcessorAdvice;
-import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.spi.ManagementInterceptStrategy;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.RouteController;
-import org.apache.camel.spi.RouteError;
-import org.apache.camel.spi.RoutePolicy;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * The context used to activate new routing rules
- */
-public abstract class AbstractRouteContext implements RouteContext {
-
-    private NamedNode route;
-    private String routeId;
-    private Route runtimeRoute;
-    private Endpoint endpoint;
-    private final List<Processor> eventDrivenProcessors = new ArrayList<>();
-    private CamelContext camelContext;
-    private List<InterceptStrategy> interceptStrategies = new ArrayList<>();
-    private ManagementInterceptStrategy managementInterceptStrategy;
-    private boolean routeAdded;
-    private Boolean trace;
-    private Boolean backlogTrace;
-    private Boolean debug;
-    private Boolean messageHistory;
-    private Boolean logMask;
-    private Boolean logExhaustedMessageBody;
-    private Boolean streamCache;
-    private Long delay;
-    private Boolean autoStartup = Boolean.TRUE;
-    private List<RoutePolicy> routePolicyList = new ArrayList<>();
-    private ShutdownRoute shutdownRoute;
-    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<>();
-    private final List<CamelInternalProcessorAdvice<?>> advices = new ArrayList<>();
-    private final Map<String, Object> properties = new HashMap<>();
-    private ErrorHandlerFactory errorHandlerFactory;
-    private Integer startupOrder;
-    // must be concurrent as error handlers can be mutated concurrently via multicast/recipientlist EIPs
-    private ConcurrentMap<ErrorHandlerFactory, Set<NamedNode>> errorHandlers = new ConcurrentHashMap<>();
-
-    public AbstractRouteContext(CamelContext camelContext, NamedNode route, String routeId) {
-        this.camelContext = camelContext;
-        this.route = route;
-        this.routeId = routeId;
-    }
-
-    @Override
-    public Endpoint getEndpoint() {
-        return endpoint;
-    }
-
-    @Override
-    public void setEndpoint(Endpoint endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    @Override
-    public NamedNode getRoute() {
-        return route;
-    }
-
-    @Override
-    public String getRouteId() {
-        return routeId;
-    }
-
-    public Route getRuntimeRoute() {
-        return runtimeRoute;
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public Route commit() {
-        // now lets turn all of the event driven consumer processors into a single route
-        if (!eventDrivenProcessors.isEmpty()) {
-            // always use an pipeline even if there are only 1 processor as the pipeline
-            // handles preparing the response from the exchange in regard to IN vs OUT messages etc
-            Processor target = new Pipeline(camelContext, eventDrivenProcessors);
-
-            // 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(camelContext, target);
-            internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(this, camelContext));
-
-            // and then optionally add route policy processor if a custom policy is set
-            List<RoutePolicy> routePolicyList = getRoutePolicyList();
-            if (routePolicyList != null && !routePolicyList.isEmpty()) {
-                for (RoutePolicy policy : routePolicyList) {
-                    // add policy as service if we have not already done that (eg possible if two routes have the same service)
-                    // this ensures Camel can control the lifecycle of the policy
-                    if (!camelContext.hasService(policy)) {
-                        try {
-                            camelContext.addService(policy);
-                        } catch (Exception e) {
-                            throw RuntimeCamelException.wrapRuntimeCamelException(e);
-                        }
-                    }
-                }
-
-                internal.addAdvice(new CamelInternalProcessor.RoutePolicyAdvice(routePolicyList));
-            }
-
-            // wrap in route inflight processor to track number of inflight exchanges for the route
-            internal.addAdvice(new CamelInternalProcessor.RouteInflightRepositoryAdvice(camelContext.getInflightRepository(), routeId));
-
-            // wrap in JMX instrumentation processor that is used for performance stats
-            if (managementInterceptStrategy != null) {
-                internal.addAdvice(CamelInternalProcessor.wrap(managementInterceptStrategy.createProcessor("route")));
-            }
-
-            // wrap in route lifecycle
-            internal.addAdvice(new CamelInternalProcessor.RouteLifecycleAdvice());
-
-            // add advices
-            advices.forEach(internal::addAdvice);
-
-            // and create the route that wraps all of this
-            Route edcr = new EventDrivenConsumerRoute(this, getEndpoint(), internal);
-            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);
-            if (task != null) {
-                task.setRoute(edcr);
-            }
-            CamelInternalProcessor.RouteLifecycleAdvice task2 = internal.getAdvice(CamelInternalProcessor.RouteLifecycleAdvice.class);
-            if (task2 != null) {
-                task2.setRoute(edcr);
-            }
-
-            // invoke init on route policy
-            if (routePolicyList != null && !routePolicyList.isEmpty()) {
-                for (RoutePolicy policy : routePolicyList) {
-                    policy.onInit(edcr);
-                }
-            }
-
-            runtimeRoute = edcr;
-        }
-        return runtimeRoute;
-    }
-
-    @Override
-    public void addEventDrivenProcessor(Processor processor) {
-        eventDrivenProcessors.add(processor);
-    }
-
-    @Override
-    public List<InterceptStrategy> getInterceptStrategies() {
-        return interceptStrategies;
-    }
-
-    @Override
-    public void setInterceptStrategies(List<InterceptStrategy> interceptStrategies) {
-        this.interceptStrategies = interceptStrategies;
-    }
-
-    @Override
-    public void addInterceptStrategy(InterceptStrategy interceptStrategy) {
-        getInterceptStrategies().add(interceptStrategy);
-    }
-
-    @Override
-    public void setManagementInterceptStrategy(ManagementInterceptStrategy interceptStrategy) {
-        this.managementInterceptStrategy = interceptStrategy;
-    }
-
-    @Override
-    public ManagementInterceptStrategy getManagementInterceptStrategy() {
-        return managementInterceptStrategy;
-    }
-
-    @Override
-    public boolean isRouteAdded() {
-        return routeAdded;
-    }
-
-    @Override
-    public void setIsRouteAdded(boolean routeAdded) {
-        this.routeAdded = routeAdded;
-    }
-
-    @Override
-    public void setTracing(Boolean tracing) {
-        this.trace = tracing;
-    }
-
-    @Override
-    public Boolean isTracing() {
-        if (trace != null) {
-            return trace;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.isTracing();
-        }
-    }
-
-    @Override
-    public String getTracingPattern() {
-        // can only set this on context level
-        return camelContext.getTracingPattern();
-    }
-
-    @Override
-    public void setTracingPattern(String tracePattern) {
-        // can only set this on context level
-        camelContext.setTracingPattern(tracePattern);
-    }
-
-    @Override
-    public void setBacklogTracing(Boolean backlogTrace) {
-        this.backlogTrace = backlogTrace;
-    }
-
-    @Override
-    public Boolean isBacklogTracing() {
-        if (backlogTrace != null) {
-            return backlogTrace;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.isBacklogTracing();
-        }
-    }
-
-    @Override
-    public void setDebugging(Boolean debugging) {
-        this.debug = debugging;
-    }
-
-    @Override
-    public Boolean isDebugging() {
-        if (debug != null) {
-            return debug;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.isDebugging();
-        }
-    }
-
-    @Override
-    public void setMessageHistory(Boolean messageHistory) {
-        this.messageHistory = messageHistory;
-    }
-
-    @Override
-    public Boolean isMessageHistory() {
-        if (messageHistory != null) {
-            return messageHistory;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.isMessageHistory();
-        }
-    }
-
-    @Override
-    public void setLogMask(Boolean logMask) {
-        this.logMask = logMask;
-    }
-
-    @Override
-    public Boolean isLogMask() {
-        if (logMask != null) {
-            return logMask;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.isLogMask();
-        }
-    }
-
-    @Override
-    public void setLogExhaustedMessageBody(Boolean logExhaustedMessageBody) {
-        this.logExhaustedMessageBody = logExhaustedMessageBody;
-    }
-
-    @Override
-    public Boolean isLogExhaustedMessageBody() {
-        if (logExhaustedMessageBody != null) {
-            return logExhaustedMessageBody;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.isLogExhaustedMessageBody();
-        }
-    }
-
-    @Override
-    public void setStreamCaching(Boolean cache) {
-        this.streamCache = cache;
-    }
-
-    @Override
-    public Boolean isStreamCaching() {
-        if (streamCache != null) {
-            return streamCache;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.isStreamCaching();
-        }
-    }
-
-    @Override
-    public void setDelayer(Long delay) {
-        this.delay = delay;
-    }
-
-    @Override
-    public Long getDelayer() {
-        if (delay != null) {
-            return delay;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.getDelayer();
-        }
-    }
-
-    @Override
-    public void setAutoStartup(Boolean autoStartup) {
-        this.autoStartup = autoStartup;
-    }
-
-    @Override
-    public Boolean isAutoStartup() {
-        if (autoStartup != null) {
-            return autoStartup;
-        }
-        // default to true
-        return true;
-    }
-
-    @Override
-    public void setStartupOrder(Integer startupOrder) {
-        this.startupOrder = startupOrder;
-    }
-
-    @Override
-    public Integer getStartupOrder() {
-        return startupOrder;
-    }
-
-    @Override
-    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
-        this.errorHandlerFactory = errorHandlerFactory;
-    }
-
-    @Override
-    public ErrorHandlerFactory getErrorHandlerFactory() {
-        return errorHandlerFactory;
-    }
-
-    @Override
-    public void setShutdownRoute(ShutdownRoute shutdownRoute) {
-        this.shutdownRoute = shutdownRoute;
-    }
-
-    @Override
-    public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
-        // can only be configured on CamelContext
-        camelContext.setAllowUseOriginalMessage(allowUseOriginalMessage);
-    }
-
-    @Override
-    public Boolean isAllowUseOriginalMessage() {
-        // can only be configured on CamelContext
-        return camelContext.isAllowUseOriginalMessage();
-    }
-
-    @Override
-    public Boolean isCaseInsensitiveHeaders() {
-        // can only be configured on CamelContext
-        return camelContext.isCaseInsensitiveHeaders();
-    }
-
-    @Override
-    public void setCaseInsensitiveHeaders(Boolean caseInsensitiveHeaders) {
-        // can only be configured on CamelContext
-        camelContext.setCaseInsensitiveHeaders(caseInsensitiveHeaders);
-    }
-
-    @Override
-    public ShutdownRoute getShutdownRoute() {
-        if (shutdownRoute != null) {
-            return shutdownRoute;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.getShutdownRoute();
-        }
-    }
-
-    @Override
-    public void setShutdownRunningTask(ShutdownRunningTask shutdownRunningTask) {
-        this.shutdownRunningTask = shutdownRunningTask;
-    }
-
-    @Override
-    public ShutdownRunningTask getShutdownRunningTask() {
-        if (shutdownRunningTask != null) {
-            return shutdownRunningTask;
-        } else {
-            // fallback to the option from camel context
-            return camelContext.getShutdownRunningTask();
-        }
-    }
-
-    @Override
-    public void setRoutePolicyList(List<RoutePolicy> routePolicyList) {
-        this.routePolicyList = routePolicyList;
-    }
-
-    @Override
-    public List<RoutePolicy> getRoutePolicyList() {
-        return routePolicyList;
-    }
-
-    @Override
-    public RouteError getLastError() {
-        return routeError;
-    }
-
-    @Override
-    public void setLastError(RouteError routeError) {
-        this.routeError = routeError;
-    }
-
-    @Override
-    public RouteController getRouteController() {
-        return routeController;
-    }
-
-    @Override
-    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);
-    }
-
-    @Override
-    public void addAdvice(CamelInternalProcessorAdvice<?> advice) {
-        advices.add(advice);
-    }
-
-    @Override
-    public void addProperty(String key, Object value) {
-        properties.put(key, value);
-    }
-
-    @Override
-    public void addErrorHandler(ErrorHandlerFactory factory, NamedNode onException) {
-        doGetErrorHandlers(factory).add(onException);
-    }
-
-    @Override
-    public Set<NamedNode> getErrorHandlers(ErrorHandlerFactory factory) {
-        return doGetErrorHandlers(factory);
-    }
-
-    public void removeErrorHandlers(ErrorHandlerFactory factory) {
-        errorHandlers.remove(factory);
-    }
-
-    @Override
-    public void addErrorHandlerFactoryReference(ErrorHandlerFactory source, ErrorHandlerFactory target) {
-        Set<NamedNode> list = doGetErrorHandlers(source);
-        Set<NamedNode> previous = errorHandlers.put(target, list);
-        if (list != previous && ObjectHelper.isNotEmpty(previous) && ObjectHelper.isNotEmpty(list)) {
-            throw new IllegalStateException("Multiple references with different handlers");
-        }
-    }
-
-    public Set<NamedNode> doGetErrorHandlers(ErrorHandlerFactory factory) {
-        return errorHandlers.computeIfAbsent(factory, f -> new LinkedHashSet<>());
-    }
-
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseRouteService.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseRouteService.java
index 27748fd..3e66d9d 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseRouteService.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseRouteService.java
@@ -40,7 +40,6 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
 import org.apache.camel.processor.ErrorHandler;
 import org.apache.camel.spi.LifecycleStrategy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteIdAware;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.support.ChildServiceSupport;
@@ -58,7 +57,6 @@ import static org.apache.camel.spi.UnitOfWork.MDC_ROUTE_ID;
 public abstract class BaseRouteService extends ChildServiceSupport {
 
     private final AbstractCamelContext camelContext;
-    private final RouteContext routeContext;
     private final Route route;
     private boolean removingRoutes;
     private final Map<Route, Consumer> inputs = new HashMap<>();
@@ -67,8 +65,7 @@ public abstract class BaseRouteService extends ChildServiceSupport {
 
     public BaseRouteService(Route route) {
         this.route = route;
-        this.routeContext = this.route.getRouteContext();
-        this.camelContext = this.routeContext.getCamelContext().adapt(AbstractCamelContext.class);
+        this.camelContext = this.route.getCamelContext().adapt(AbstractCamelContext.class);
     }
 
     public String getId() {
@@ -79,10 +76,6 @@ public abstract class BaseRouteService extends ChildServiceSupport {
         return camelContext;
     }
 
-    public RouteContext getRouteContext() {
-        return routeContext;
-    }
-
     public Route getRoute() {
         return route;
     }
@@ -324,8 +317,8 @@ public abstract class BaseRouteService extends ChildServiceSupport {
     }
 
     private void routePolicyCallback(java.util.function.BiConsumer<RoutePolicy, Route> callback) {
-        if (routeContext.getRoutePolicyList() != null) {
-            for (RoutePolicy routePolicy : routeContext.getRoutePolicyList()) {
+        if (route.getRoutePolicyList() != null) {
+            for (RoutePolicy routePolicy : route.getRoutePolicyList()) {
                 callback.accept(routePolicy, route);
             }
         }
@@ -346,8 +339,8 @@ public abstract class BaseRouteService extends ChildServiceSupport {
             if (service instanceof ErrorHandler) {
                 // special for error handlers
                 for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
-                    ErrorHandlerFactory errorHandlerFactory = routeContext.getErrorHandlerFactory();
-                    strategy.onErrorHandlerRemove(routeContext, (Processor) service, errorHandlerFactory);
+                    ErrorHandlerFactory errorHandlerFactory = route.getErrorHandlerFactory();
+                    strategy.onErrorHandlerRemove(route, (Processor) service, errorHandlerFactory);
                 }
             } else {
                 for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java
index 3db01a4..f3c2ad9 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java
@@ -33,8 +33,7 @@ import org.apache.camel.StaticService;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.ReactiveExecutor;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.UnitOfWork;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
 import org.apache.camel.support.service.ServiceSupport;
@@ -308,13 +307,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
 
         @Override
         public String getRouteId() {
-            // compute route id
-            UnitOfWork uow = exchange.getUnitOfWork();
-            RouteContext rc = uow != null ? uow.getRouteContext() : null;
-            if (rc != null) {
-                return rc.getRouteId();
-            }
-            return null;
+            return ExchangeHelper.getAtRouteId(exchange);
         }
 
         @Override
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java
index b1e13b8..79adbe9 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java
@@ -31,8 +31,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedExchange;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.spi.InflightRepository;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.UnitOfWork;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.service.ServiceSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -272,13 +271,7 @@ public class DefaultInflightRepository extends ServiceSupport implements Infligh
         @Override
         @SuppressWarnings("unchecked")
         public String getAtRouteId() {
-            // compute route id
-            UnitOfWork uow = exchange.getUnitOfWork();
-            RouteContext rc = uow != null ? uow.getRouteContext() : null;
-            if (rc != null) {
-                return rc.getRouteId();
-            }
-            return null;
+            return ExchangeHelper.getAtRouteId(exchange);
         }
 
         @Override
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProcessorFactory.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProcessorFactory.java
index d6f07fb..3fd256a 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProcessorFactory.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultProcessorFactory.java
@@ -26,11 +26,11 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.Route;
 import org.apache.camel.processor.SendDynamicProcessor;
 import org.apache.camel.processor.UnitOfWorkProducer;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.ProcessorFactory;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Default {@link ProcessorFactory} that supports using 3rd party Camel components to implement the EIP {@link Processor}.
@@ -48,15 +48,15 @@ public class DefaultProcessorFactory implements ProcessorFactory {
     public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/model/";
 
     @Override
-    public Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception {
+    public Processor createChildProcessor(Route route, NamedNode definition, boolean mandatory) throws Exception {
         String name = definition.getClass().getSimpleName();
-        FactoryFinder finder = routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+        FactoryFinder finder = route.getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
         try {
             if (finder != null) {
                 Object object = finder.newInstance(name);
                 if (object instanceof ProcessorFactory) {
                     ProcessorFactory pc = (ProcessorFactory) object;
-                    return pc.createChildProcessor(routeContext, definition, mandatory);
+                    return pc.createChildProcessor(route, definition, mandatory);
                 }
             }
         } catch (NoFactoryAvailableException e) {
@@ -67,13 +67,13 @@ public class DefaultProcessorFactory implements ProcessorFactory {
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception {
+    public Processor createProcessor(Route route, NamedNode definition) throws Exception {
         String name = definition.getClass().getSimpleName();
-        FactoryFinder finder = routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+        FactoryFinder finder = route.getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
         if (finder != null) {
             ProcessorFactory pc = finder.newInstance(name, ProcessorFactory.class).orElse(null);
             if (pc != null) {
-                return pc.createProcessor(routeContext, definition);
+                return pc.createProcessor(route, definition);
             }
         }
 
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 ee0bcf3..47f6602 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
@@ -19,15 +19,37 @@ package org.apache.camel.impl.engine;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+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.ConcurrentMap;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
+import org.apache.camel.ErrorHandlerFactory;
+import org.apache.camel.NamedNode;
+import org.apache.camel.Navigate;
+import org.apache.camel.Processor;
 import org.apache.camel.Route;
+import org.apache.camel.RouteAware;
 import org.apache.camel.Service;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.ShutdownRoute;
+import org.apache.camel.ShutdownRunningTask;
+import org.apache.camel.Suspendable;
+import org.apache.camel.SuspendableService;
+import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.InterceptStrategy;
+import org.apache.camel.spi.ManagementInterceptStrategy;
+import org.apache.camel.spi.RouteController;
+import org.apache.camel.spi.RouteError;
+import org.apache.camel.spi.RouteIdAware;
+import org.apache.camel.spi.RoutePolicy;
+import org.apache.camel.support.PatternHelper;
 import org.apache.camel.support.service.ServiceSupport;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.TimeUtils;
 
 /**
@@ -37,29 +59,53 @@ import org.apache.camel.util.TimeUtils;
  * such as starting and stopping using the {@link org.apache.camel.spi.RouteController#startRoute(String)}
  * and {@link org.apache.camel.spi.RouteController#stopRoute(String)} methods.
  */
-public abstract class DefaultRoute extends ServiceSupport implements Route {
+public class DefaultRoute extends ServiceSupport implements Route {
+
+    private NamedNode route;
+    private String routeId;
+    private final List<Processor> eventDrivenProcessors = new ArrayList<>();
+    private CamelContext camelContext;
+    private List<InterceptStrategy> interceptStrategies = new ArrayList<>();
+    private ManagementInterceptStrategy managementInterceptStrategy;
+    private Boolean trace;
+    private Boolean backlogTrace;
+    private Boolean debug;
+    private Boolean messageHistory;
+    private Boolean logMask;
+    private Boolean logExhaustedMessageBody;
+    private Boolean streamCache;
+    private Long delay;
+    private Boolean autoStartup = Boolean.TRUE;
+    private final List<RoutePolicy> routePolicyList = new ArrayList<>();
+    private ShutdownRoute shutdownRoute;
+    private ShutdownRunningTask shutdownRunningTask;
+    private final Map<String, Processor> onCompletions = new HashMap<>();
+    private final Map<String, Processor> onExceptions = new HashMap<>();
+    private ErrorHandlerFactory errorHandlerFactory;
+    // must be concurrent as error handlers can be mutated concurrently via multicast/recipientlist EIPs
+    private ConcurrentMap<ErrorHandlerFactory, Set<NamedNode>> errorHandlers = new ConcurrentHashMap<>();
 
     private final Endpoint endpoint;
     private final Map<String, Object> properties = new HashMap<>();
     private final List<Service> services = new ArrayList<>();
-    private final RouteContext routeContext;
     private Date startDate;
+    private RouteError routeError;
+    private Integer startupOrder;
+    private RouteController routeController;
 
-    public DefaultRoute(RouteContext routeContext, Endpoint endpoint) {
-        this.routeContext = routeContext;
-        this.endpoint = endpoint;
-    }
+    private Processor processor;
+    private Consumer consumer;
 
-    public DefaultRoute(RouteContext routeContext, Endpoint endpoint, Service... services) {
-        this(routeContext, endpoint);
-        for (Service service : services) {
-            addService(service);
-        }
+    public DefaultRoute(CamelContext camelContext, NamedNode route, String routeId, Endpoint endpoint) {
+        this.camelContext = camelContext;
+        this.route = route;
+        this.routeId = routeId;
+        this.endpoint = endpoint;
     }
 
     @Override
-    public String toString() {
-        return "Route " + getId();
+    public Processor createErrorHandler(Processor processor) throws Exception {
+        throw new UnsupportedOperationException();
     }
 
     @Override
@@ -95,13 +141,8 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
     }
 
     @Override
-    public RouteContext getRouteContext() {
-        return routeContext;
-    }
-
-    @Override
     public CamelContext getCamelContext() {
-        return routeContext.getCamelContext();
+        return camelContext;
     }
 
     @Override
@@ -153,12 +194,6 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
         super.stop();
     }
 
-    /**
-     * Strategy method to allow derived classes to lazily load services for the route
-     */
-    protected void addServices(List<Service> services) throws Exception {
-    }
-
     @Override
     protected void doStart() throws Exception {
         startDate = new Date();
@@ -177,4 +212,407 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
         // clear services when shutting down
         services.clear();
     }
+
+    @Override
+    public RouteError getLastError() {
+        return routeError;
+    }
+
+    @Override
+    public void setLastError(RouteError routeError) {
+        this.routeError = routeError;
+    }
+
+    @Override
+    public Integer getStartupOrder() {
+        return startupOrder;
+    }
+
+    @Override
+    public void setStartupOrder(Integer startupOrder) {
+        this.startupOrder = startupOrder;
+    }
+
+    public RouteController getRouteController() {
+        return routeController;
+    }
+
+    public void setRouteController(RouteController routeController) {
+        this.routeController = routeController;
+    }
+
+    public Boolean isAutoStartup() {
+        return autoStartup;
+    }
+
+    @Override
+    public void setAutoStartup(Boolean autoStartup) {
+        this.autoStartup = autoStartup;
+    }
+
+    @Override
+    public NamedNode getRoute() {
+        return route;
+    }
+
+    @Override
+    public String getRouteId() {
+        return routeId;
+    }
+
+    public List<Processor> getEventDrivenProcessors() {
+        return eventDrivenProcessors;
+    }
+
+    @Override
+    public List<InterceptStrategy> getInterceptStrategies() {
+        return interceptStrategies;
+    }
+
+    @Override
+    public void setManagementInterceptStrategy(ManagementInterceptStrategy interceptStrategy) {
+        this.managementInterceptStrategy = interceptStrategy;
+    }
+
+    @Override
+    public ManagementInterceptStrategy getManagementInterceptStrategy() {
+        return managementInterceptStrategy;
+    }
+
+    @Override
+    public void setTracing(Boolean tracing) {
+        this.trace = tracing;
+    }
+
+    @Override
+    public Boolean isTracing() {
+        if (trace != null) {
+            return trace;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.isTracing();
+        }
+    }
+
+    @Override
+    public String getTracingPattern() {
+        // can only set this on context level
+        return camelContext.getTracingPattern();
+    }
+
+    @Override
+    public void setTracingPattern(String tracePattern) {
+        // can only set this on context level
+        camelContext.setTracingPattern(tracePattern);
+    }
+
+    @Override
+    public void setBacklogTracing(Boolean backlogTrace) {
+        this.backlogTrace = backlogTrace;
+    }
+
+    @Override
+    public Boolean isBacklogTracing() {
+        if (backlogTrace != null) {
+            return backlogTrace;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.isBacklogTracing();
+        }
+    }
+
+    @Override
+    public void setDebugging(Boolean debugging) {
+        this.debug = debugging;
+    }
+
+    @Override
+    public Boolean isDebugging() {
+        if (debug != null) {
+            return debug;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.isDebugging();
+        }
+    }
+
+    @Override
+    public void setMessageHistory(Boolean messageHistory) {
+        this.messageHistory = messageHistory;
+    }
+
+    @Override
+    public Boolean isMessageHistory() {
+        if (messageHistory != null) {
+            return messageHistory;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.isMessageHistory();
+        }
+    }
+
+    @Override
+    public void setLogMask(Boolean logMask) {
+        this.logMask = logMask;
+    }
+
+    @Override
+    public Boolean isLogMask() {
+        if (logMask != null) {
+            return logMask;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.isLogMask();
+        }
+    }
+
+    @Override
+    public void setLogExhaustedMessageBody(Boolean logExhaustedMessageBody) {
+        this.logExhaustedMessageBody = logExhaustedMessageBody;
+    }
+
+    @Override
+    public Boolean isLogExhaustedMessageBody() {
+        if (logExhaustedMessageBody != null) {
+            return logExhaustedMessageBody;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.isLogExhaustedMessageBody();
+        }
+    }
+
+    @Override
+    public void setStreamCaching(Boolean cache) {
+        this.streamCache = cache;
+    }
+
+    @Override
+    public Boolean isStreamCaching() {
+        if (streamCache != null) {
+            return streamCache;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.isStreamCaching();
+        }
+    }
+
+    @Override
+    public void setDelayer(Long delay) {
+        this.delay = delay;
+    }
+
+    @Override
+    public Long getDelayer() {
+        if (delay != null) {
+            return delay;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.getDelayer();
+        }
+    }
+
+    @Override
+    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
+        this.errorHandlerFactory = errorHandlerFactory;
+    }
+
+    @Override
+    public ErrorHandlerFactory getErrorHandlerFactory() {
+        return errorHandlerFactory;
+    }
+
+    @Override
+    public void setShutdownRoute(ShutdownRoute shutdownRoute) {
+        this.shutdownRoute = shutdownRoute;
+    }
+
+    @Override
+    public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
+        // can only be configured on CamelContext
+        camelContext.setAllowUseOriginalMessage(allowUseOriginalMessage);
+    }
+
+    @Override
+    public Boolean isAllowUseOriginalMessage() {
+        // can only be configured on CamelContext
+        return camelContext.isAllowUseOriginalMessage();
+    }
+
+    @Override
+    public Boolean isCaseInsensitiveHeaders() {
+        // can only be configured on CamelContext
+        return camelContext.isCaseInsensitiveHeaders();
+    }
+
+    @Override
+    public void setCaseInsensitiveHeaders(Boolean caseInsensitiveHeaders) {
+        // can only be configured on CamelContext
+        camelContext.setCaseInsensitiveHeaders(caseInsensitiveHeaders);
+    }
+
+    @Override
+    public ShutdownRoute getShutdownRoute() {
+        if (shutdownRoute != null) {
+            return shutdownRoute;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.getShutdownRoute();
+        }
+    }
+
+    @Override
+    public void setShutdownRunningTask(ShutdownRunningTask shutdownRunningTask) {
+        this.shutdownRunningTask = shutdownRunningTask;
+    }
+
+    @Override
+    public ShutdownRunningTask getShutdownRunningTask() {
+        if (shutdownRunningTask != null) {
+            return shutdownRunningTask;
+        } else {
+            // fallback to the option from camel context
+            return camelContext.getShutdownRunningTask();
+        }
+    }
+
+    @Override
+    public List<RoutePolicy> getRoutePolicyList() {
+        return routePolicyList;
+    }
+
+    @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);
+    }
+
+    @Override
+    public Set<NamedNode> getErrorHandlers(ErrorHandlerFactory factory) {
+        return errorHandlers.computeIfAbsent(factory, f -> new LinkedHashSet<>());
+    }
+
+    @Override
+    public void addErrorHandler(ErrorHandlerFactory factory, NamedNode onException) {
+        errorHandlers.computeIfAbsent(factory, f -> new LinkedHashSet<>()).add(onException);
+    }
+
+    @Override
+    public void addErrorHandlerFactoryReference(ErrorHandlerFactory source, ErrorHandlerFactory target) {
+        Set<NamedNode> list = errorHandlers.computeIfAbsent(source, f -> new LinkedHashSet<>());
+        Set<NamedNode> previous = errorHandlers.put(target, list);
+        if (list != previous && ObjectHelper.isNotEmpty(previous) && ObjectHelper.isNotEmpty(list)) {
+            throw new IllegalStateException("Multiple references with different handlers");
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "Route[" + getEndpoint() + " -> " + processor + "]";
+    }
+
+    @Override
+    public Processor getProcessor() {
+        return processor;
+    }
+
+    public void setProcessor(Processor processor) {
+        this.processor = processor;
+    }
+
+    /**
+     * Factory method to lazily create the complete list of services required for this route
+     * such as adding the processor or consumer
+     */
+    protected void addServices(List<Service> services) throws Exception {
+        Endpoint endpoint = getEndpoint();
+        consumer = endpoint.createConsumer(processor);
+        if (consumer != null) {
+            services.add(consumer);
+            if (consumer instanceof RouteAware) {
+                ((RouteAware) consumer).setRoute(this);
+            }
+            if (consumer instanceof RouteIdAware) {
+                ((RouteIdAware) consumer).setRouteId(this.getId());
+            }
+        }
+        Processor processor = getProcessor();
+        if (processor instanceof Service) {
+            services.add((Service)processor);
+        }
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public Navigate<Processor> navigate() {
+        Processor answer = getProcessor();
+
+        // we want navigating routes to be easy, so skip the initial channel
+        // and navigate to its output where it all starts from end user point of view
+        if (answer instanceof Navigate) {
+            Navigate<Processor> nav = (Navigate<Processor>) answer;
+            if (nav.next().size() == 1) {
+                Object first = nav.next().get(0);
+                if (first instanceof Navigate) {
+                    return (Navigate<Processor>) first;
+                }
+            }
+            return (Navigate<Processor>) answer;
+        }
+        return null;
+    }
+
+    @Override
+    public List<Processor> filter(String pattern) {
+        List<Processor> match = new ArrayList<>();
+        doFilter(pattern, navigate(), match);
+        return match;
+    }
+
+    @SuppressWarnings("unchecked")
+    private void doFilter(String pattern, Navigate<Processor> nav, List<Processor> match) {
+        List<Processor> list = nav.next();
+        if (list != null) {
+            for (Processor proc : list) {
+                String id = null;
+                if (proc instanceof IdAware) {
+                    id = ((IdAware) proc).getId();
+                }
+                if (PatternHelper.matchPattern(id, pattern)) {
+                    match.add(proc);
+                }
+                if (proc instanceof Navigate) {
+                    Navigate<Processor> child = (Navigate<Processor>) proc;
+                    doFilter(pattern, child, match);
+                }
+            }
+        }
+    }
+
+    @Override
+    public Consumer getConsumer() {
+        return consumer;
+    }
+
+    @Override
+    public boolean supportsSuspension() {
+        return consumer instanceof Suspendable && consumer instanceof SuspendableService;
+    }
+
+    public void initialized() {
+
+    }
 }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteError.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteError.java
index 06c3ae7..42de2e2 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteError.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteError.java
@@ -54,14 +54,14 @@ public class DefaultRouteError implements RouteError {
     public static void set(CamelContext context, String routeId, RouteError.Phase phase, Throwable throwable) {
         Route route = context.getRoute(routeId);
         if (route != null) {
-            route.getRouteContext().setLastError(new DefaultRouteError(phase, throwable));
+            route.setLastError(new DefaultRouteError(phase, throwable));
         }
     }
 
     public static void reset(CamelContext context, String routeId) {
         Route route = context.getRoute(routeId);
         if (route != null) {
-            route.getRouteContext().setLastError(null);
+            route.setLastError(null);
         }
     }
 }
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java
index b796d8d..956c4726 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRuntimeEndpointRegistry.java
@@ -27,18 +27,15 @@ import java.util.Set;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
 import org.apache.camel.spi.CamelEvent.RouteAddedEvent;
 import org.apache.camel.spi.CamelEvent.RouteRemovedEvent;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RuntimeEndpointRegistry;
-import org.apache.camel.spi.UnitOfWork;
-import org.apache.camel.support.DefaultConsumer;
 import org.apache.camel.support.EventNotifierSupport;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -261,7 +258,7 @@ public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport impleme
         } else if (event instanceof ExchangeSendingEvent) {
             ExchangeSendingEvent ese = (ExchangeSendingEvent) event;
             Endpoint endpoint = ese.getEndpoint();
-            String routeId = getRouteId(ese.getExchange());
+            String routeId = ExchangeHelper.getRouteId(ese.getExchange());
             String uri = endpoint.getEndpointUri();
 
             Map<String, String> uris = outputs.get(routeId);
@@ -277,20 +274,6 @@ public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport impleme
         }
     }
 
-    private String getRouteId(Exchange exchange) {
-        String answer = null;
-        UnitOfWork uow = exchange.getUnitOfWork();
-        RouteContext rc = uow != null ? uow.getRouteContext() : null;
-        if (rc != null) {
-            answer = rc.getRouteId();
-        }
-        if (answer == null) {
-            // fallback and get from route id on the exchange
-            answer = exchange.getFromRouteId();
-        }
-        return answer;
-    }
-
     @Override
     public boolean isDisabled() {
         return !enabled;
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java
index 0c971c4..4210f28 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultShutdownStrategy.java
@@ -360,11 +360,11 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
 
             // set the route to shutdown as fast as possible by stopping after
             // it has completed its current task
-            ShutdownRunningTask current = order.getRoute().getRouteContext().getShutdownRunningTask();
+            ShutdownRunningTask current = order.getRoute().getShutdownRunningTask();
             if (current != ShutdownRunningTask.CompleteCurrentTaskOnly) {
                 LOG.debug("Changing shutdownRunningTask from {} to " +  ShutdownRunningTask.CompleteCurrentTaskOnly
                     + " on route {} to shutdown faster", current, order.getRoute().getId());
-                order.getRoute().getRouteContext().setShutdownRunningTask(ShutdownRunningTask.CompleteCurrentTaskOnly);
+                order.getRoute().setShutdownRunningTask(ShutdownRunningTask.CompleteCurrentTaskOnly);
             }
 
             for (Consumer consumer : order.getInputs()) {
@@ -555,8 +555,8 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
             List<ShutdownDeferredConsumer> deferredConsumers = new ArrayList<>();
             for (RouteStartupOrder order : routes) {
 
-                ShutdownRoute shutdownRoute = order.getRoute().getRouteContext().getShutdownRoute();
-                ShutdownRunningTask shutdownRunningTask = order.getRoute().getRouteContext().getShutdownRunningTask();
+                ShutdownRoute shutdownRoute = order.getRoute().getShutdownRoute();
+                ShutdownRunningTask shutdownRunningTask = order.getRoute().getShutdownRunningTask();
 
                 if (LOG.isTraceEnabled()) {
                     LOG.trace("{}{} with options [{},{}]",
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
index 2b5167e..e404de5 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
@@ -24,7 +24,6 @@ import java.util.Set;
 import java.util.function.Predicate;
 
 import org.apache.camel.AsyncCallback;
-import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.ExtendedExchange;
@@ -33,7 +32,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.spi.InflightRepository;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.Synchronization;
 import org.apache.camel.spi.SynchronizationVetoable;
 import org.apache.camel.spi.UnitOfWork;
@@ -62,8 +60,8 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
     private final Exchange exchange;
     private final ExtendedCamelContext context;
     private Logger log;
-    private RouteContext prevRouteContext;
-    private RouteContext routeContext;
+    private Route prevRoute;
+    private Route route;
     private List<Synchronization> synchronizations;
     private Message originalInMessage;
     private Set<Object> transactedBy;
@@ -287,21 +285,21 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
     }
 
     @Override
-    public RouteContext getRouteContext() {
-        return routeContext;
+    public Route getRoute() {
+        return route;
     }
 
     @Override
-    public void pushRouteContext(RouteContext routeContext) {
-        this.prevRouteContext = this.routeContext;
-        this.routeContext = routeContext;
+    public void pushRoute(Route route) {
+        this.prevRoute = this.route;
+        this.route = route;
     }
 
     @Override
-    public RouteContext popRouteContext() {
-        RouteContext answer = this.routeContext;
-        this.routeContext = this.prevRouteContext;
-        this.prevRouteContext = null;
+    public Route popRoute() {
+        Route answer = this.route;
+        this.route = this.prevRoute;
+        this.prevRoute = null;
         return answer;
     }
 
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/EventDrivenConsumerRoute.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/EventDrivenConsumerRoute.java
deleted file mode 100644
index aacf546..0000000
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/EventDrivenConsumerRoute.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl.engine;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Navigate;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteAware;
-import org.apache.camel.Service;
-import org.apache.camel.Suspendable;
-import org.apache.camel.SuspendableService;
-import org.apache.camel.spi.IdAware;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.RouteIdAware;
-import org.apache.camel.support.PatternHelper;
-
-/**
- * A {@link DefaultRoute} which starts with an
- * <a href="http://camel.apache.org/event-driven-consumer.html">Event Driven Consumer</a>
- * <p/>
- * Use the API from {@link org.apache.camel.CamelContext} to control the lifecycle of a route,
- * such as starting and stopping using the {@link org.apache.camel.spi.RouteController#startRoute(String)}
- * and {@link org.apache.camel.spi.RouteController#stopRoute(String)} methods.
- */
-public class EventDrivenConsumerRoute extends DefaultRoute {
-    private final Processor processor;
-    private Consumer consumer;
-
-    public EventDrivenConsumerRoute(RouteContext routeContext, Endpoint endpoint, Processor processor) {
-        super(routeContext, endpoint);
-        this.processor = processor;
-    }
-
-    @Override
-    public String toString() {
-        return "EventDrivenConsumerRoute[" + getEndpoint() + " -> " + processor + "]";
-    }
-
-    @Override
-    public Processor getProcessor() {
-        return processor;
-    }
-
-    /**
-     * Factory method to lazily create the complete list of services required for this route
-     * such as adding the processor or consumer
-     */
-    @Override
-    protected void addServices(List<Service> services) throws Exception {
-        Endpoint endpoint = getEndpoint();
-        consumer = endpoint.createConsumer(processor);
-        if (consumer != null) {
-            services.add(consumer);
-            if (consumer instanceof RouteAware) {
-                ((RouteAware) consumer).setRoute(this);
-            }
-            if (consumer instanceof RouteIdAware) {
-                ((RouteIdAware) consumer).setRouteId(this.getId());
-            }
-        }
-        Processor processor = getProcessor();
-        if (processor instanceof Service) {
-            services.add((Service)processor);
-        }
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public Navigate<Processor> navigate() {
-        Processor answer = getProcessor();
-
-        // we want navigating routes to be easy, so skip the initial channel
-        // and navigate to its output where it all starts from end user point of view
-        if (answer instanceof Navigate) {
-            Navigate<Processor> nav = (Navigate<Processor>) answer;
-            if (nav.next().size() == 1) {
-                Object first = nav.next().get(0);
-                if (first instanceof Navigate) {
-                    return (Navigate<Processor>) first;
-                }
-            }
-            return (Navigate<Processor>) answer;
-        }
-        return null;
-    }
-
-    @Override
-    public List<Processor> filter(String pattern) {
-        List<Processor> match = new ArrayList<>();
-        doFilter(pattern, navigate(), match);
-        return match;
-    }
-
-    @SuppressWarnings("unchecked")
-    private void doFilter(String pattern, Navigate<Processor> nav, List<Processor> match) {
-        List<Processor> list = nav.next();
-        if (list != null) {
-            for (Processor proc : list) {
-                String id = null;
-                if (proc instanceof IdAware) {
-                    id = ((IdAware) proc).getId();
-                }
-                if (PatternHelper.matchPattern(id, pattern)) {
-                    match.add(proc);
-                }
-                if (proc instanceof Navigate) {
-                    Navigate<Processor> child = (Navigate<Processor>) proc;
-                    doFilter(pattern, child, match);
-                }
-            }
-        }
-    }
-
-    @Override
-    public Consumer getConsumer() {
-        return consumer;
-    }
-
-    @Override
-    public boolean supportsSuspension() {
-        return consumer instanceof Suspendable && consumer instanceof SuspendableService;
-    }
-}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
index 3716909..0a1f48d 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
@@ -22,8 +22,8 @@ import java.util.Map;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.spi.InflightRepository;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.PatternHelper;
 import org.slf4j.Logger;
@@ -94,21 +94,21 @@ public class MDCUnitOfWork extends DefaultUnitOfWork {
     }
 
     @Override
-    public void pushRouteContext(RouteContext routeContext) {
-        super.pushRouteContext(routeContext);
-        if (routeContext != null) {
-            MDC.put(MDC_ROUTE_ID, routeContext.getRouteId());
+    public void pushRoute(Route route) {
+        super.pushRoute(route);
+        if (route != null) {
+            MDC.put(MDC_ROUTE_ID, route.getRouteId());
         } else {
             MDC.remove(MDC_ROUTE_ID);
         }
     }
 
     @Override
-    public RouteContext popRouteContext() {
-        RouteContext answer = super.popRouteContext();
+    public Route popRoute() {
+        Route answer = super.popRoute();
 
         // restore old route id back again after we have popped
-        RouteContext previous = getRouteContext();
+        Route previous = getRoute();
         if (previous != null) {
             // restore old route id back again
             MDC.put(MDC_ROUTE_ID, previous.getRouteId());
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/SupervisingRouteController.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/SupervisingRouteController.java
index 3867836..2f2df57 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/SupervisingRouteController.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/SupervisingRouteController.java
@@ -44,7 +44,6 @@ import org.apache.camel.StartupListener;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
 import org.apache.camel.spi.HasId;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
@@ -344,7 +343,7 @@ public class SupervisingRouteController extends DefaultRouteController {
             LOGGER.info("Route {} has been requested to stop: stop supervising it", route.getId());
 
             // Mark the route as un-managed
-            route.getContext().setRouteController(null);
+            route.get().setRouteController(null);
 
             consumer.accept(route);
         }
@@ -354,7 +353,7 @@ public class SupervisingRouteController extends DefaultRouteController {
         synchronized (lock) {
             // If a manual start is triggered, then the controller should take
             // care that the route is started
-            route.getContext().setRouteController(this);
+            route.get().setRouteController(this);
 
             try {
                 if (checker) {
@@ -419,7 +418,7 @@ public class SupervisingRouteController extends DefaultRouteController {
         }
 
         void start(RouteHolder route) {
-            route.getContext().setRouteController(SupervisingRouteController.this);
+            route.get().setRouteController(SupervisingRouteController.this);
 
             routes.computeIfAbsent(
                 route,
@@ -452,7 +451,7 @@ public class SupervisingRouteController extends DefaultRouteController {
 
                                 if (backOffTask != null && backOffTask.getStatus() == BackOffTimer.Task.Status.Exhausted && stopped) {
                                     LOGGER.info("Back-off for route {} is exhausted, no more attempts will be made and stop supervising it", route.getId());
-                                    r.getContext().setRouteController(null);
+                                    r.get().setRouteController(null);
                                 }
                             }
                         }
@@ -505,12 +504,8 @@ public class SupervisingRouteController extends DefaultRouteController {
             return this.route;
         }
 
-        public RouteContext getContext() {
-            return this.route.getRouteContext();
-        }
-
         public ServiceStatus getStatus() {
-            return getContext().getCamelContext().getRouteController().getRouteStatus(getId());
+            return route.getCamelContext().getRouteController().getRouteStatus(getId());
         }
 
         int getInitializationOrder() {
@@ -518,7 +513,7 @@ public class SupervisingRouteController extends DefaultRouteController {
         }
 
         public int getStartupOrder() {
-            Integer order = route.getRouteContext().getStartupOrder();
+            Integer order = route.getStartupOrder();
             if (order == null) {
                 order = Integer.MAX_VALUE;
             }
@@ -583,7 +578,7 @@ public class SupervisingRouteController extends DefaultRouteController {
 
         @Override
         public void onInit(Route route) {
-            if (!route.getRouteContext().isAutoStartup()) {
+            if (!route.isAutoStartup()) {
                 LOGGER.info("Route {} won't be supervised (reason: has explicit auto-startup flag set to false)", route.getId());
                 return;
             }
@@ -599,8 +594,8 @@ public class SupervisingRouteController extends DefaultRouteController {
 
             RouteHolder holder = new RouteHolder(route, routeCount.incrementAndGet());
             if (routes.add(holder)) {
-                holder.getContext().setRouteController(SupervisingRouteController.this);
-                holder.getContext().setAutoStartup(false);
+                holder.get().setRouteController(SupervisingRouteController.this);
+                holder.get().setAutoStartup(false);
 
                 if (contextStarted.get()) {
                     LOGGER.info("Context is already started: attempt to start route {}", route.getId());
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/TypedProcessorFactory.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/TypedProcessorFactory.java
index 87ccfd1..2f53395 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/TypedProcessorFactory.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/TypedProcessorFactory.java
@@ -21,8 +21,8 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.spi.ProcessorFactory;
-import org.apache.camel.spi.RouteContext;
 
 public class TypedProcessorFactory<T extends NamedNode> implements ProcessorFactory {
     private final Class<T> type;
@@ -32,18 +32,18 @@ public class TypedProcessorFactory<T extends NamedNode> implements ProcessorFact
     }
 
     @Override
-    public Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception {
+    public Processor createChildProcessor(Route route, NamedNode definition, boolean mandatory) throws Exception {
         if (type.isInstance(definition)) {
-            return doCreateChildProcessor(routeContext, type.cast(definition), mandatory);
+            return doCreateChildProcessor(route, type.cast(definition), mandatory);
         }
 
         return null;
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception {
+    public Processor createProcessor(Route route, NamedNode definition) throws Exception {
         if (type.isInstance(definition)) {
-            return doCreateProcessor(routeContext, type.cast(definition));
+            return doCreateProcessor(route, type.cast(definition));
         }
 
         return null;
@@ -54,11 +54,11 @@ public class TypedProcessorFactory<T extends NamedNode> implements ProcessorFact
         return null;
     }
 
-    protected Processor doCreateChildProcessor(RouteContext routeContext, T definition, boolean mandatory) throws Exception {
+    protected Processor doCreateChildProcessor(Route route, T definition, boolean mandatory) throws Exception {
         return null;
     }
 
-    public Processor doCreateProcessor(RouteContext routeContext, T definition) throws Exception {
+    public Processor doCreateProcessor(Route route, T definition) throws Exception {
         return null;
     }
 }
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 fb8713a..3336593 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
@@ -64,7 +64,7 @@ public class RouteHealthCheck extends AbstractHealthCheck {
             builder.detail("route.status", status.name());
             builder.detail("route.context.name", context.getName());
 
-            if (route.getRouteContext().getRouteController() != null || route.getRouteContext().isAutoStartup()) {
+            if (route.getRouteController() != null || route.isAutoStartup()) {
                 if (status.isStarted()) {
                     builder.up();
                 } else if (status.isStopped()) {
@@ -74,8 +74,8 @@ public class RouteHealthCheck extends AbstractHealthCheck {
             } else {
                 LOGGER.debug("Route {} marked as UP (controlled={}, auto-startup={})",
                     route.getId(),
-                    route.getRouteContext().getRouteController() != null,
-                    route.getRouteContext().isAutoStartup()
+                    route.getRouteController() != null,
+                    route.isAutoStartup()
                 );
 
                 // Assuming that if no route controller is configured or if a
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 1658281..1110ca7 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
@@ -44,7 +44,6 @@ import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor;
 import org.apache.camel.spi.MessageHistoryFactory;
 import org.apache.camel.spi.ReactiveExecutor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.spi.StreamCachingStrategy;
@@ -54,6 +53,7 @@ import org.apache.camel.spi.Transformer;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.spi.UnitOfWorkFactory;
 import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.OrderedComparator;
 import org.apache.camel.support.SynchronizationAdapter;
@@ -593,14 +593,14 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
      */
     public static class UnitOfWorkProcessorAdvice implements CamelInternalProcessorAdvice<UnitOfWork> {
 
-        private final RouteContext routeContext;
+        private final Route route;
         private String routeId;
         private UnitOfWorkFactory uowFactory;
 
-        public UnitOfWorkProcessorAdvice(RouteContext routeContext, CamelContext camelContext) {
-            this.routeContext = routeContext;
-            if (routeContext != null) {
-                this.routeId = routeContext.getRouteId();
+        public UnitOfWorkProcessorAdvice(Route route, CamelContext camelContext) {
+            this.route = route;
+            if (route != null) {
+                this.routeId = route.getRouteId();
             }
             this.uowFactory = camelContext.adapt(ExtendedCamelContext.class).getUnitOfWorkFactory();
             // optimize uow factory to initialize it early and once per advice
@@ -611,9 +611,9 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
         public UnitOfWork before(Exchange exchange) throws Exception {
             // if the exchange doesn't have from route id set, then set it if it originated
             // from this unit of work
-            if (routeContext != null && exchange.getFromRouteId() == null) {
+            if (route != null && exchange.getFromRouteId() == null) {
                 if (routeId == null) {
-                    this.routeId = routeContext.getRouteId();
+                    this.routeId = route.getRouteId();
                 }
                 ExtendedExchange ee = (ExtendedExchange) exchange;
                 ee.setFromRouteId(routeId);
@@ -632,10 +632,10 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
             }
 
             // for any exchange we should push/pop route context so we can keep track of which route we are routing
-            if (routeContext != null) {
+            if (route != null) {
                 UnitOfWork existing = exchange.getUnitOfWork();
                 if (existing != null) {
-                    existing.pushRouteContext(routeContext);
+                    existing.pushRoute(route);
                 }
             }
 
@@ -652,8 +652,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
             }
 
             // after UoW is done lets pop the route context which must be done on every existing UoW
-            if (routeContext != null && existing != null) {
-                existing.popRouteContext();
+            if (route != null && existing != null) {
+                existing.popRoute();
             }
         }
 
@@ -674,8 +674,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
 
         private final UnitOfWork parent;
 
-        public ChildUnitOfWorkProcessorAdvice(RouteContext routeContext, CamelContext camelContext, UnitOfWork parent) {
-            super(routeContext, camelContext);
+        public ChildUnitOfWorkProcessorAdvice(Route route, CamelContext camelContext, UnitOfWork parent) {
+            super(route, camelContext);
             this.parent = parent;
         }
 
@@ -709,11 +709,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
             // route id from the exchange UoW state
             String targetRouteId = this.routeId;
             if (targetRouteId == null) {
-                UnitOfWork uow = exchange.getUnitOfWork();
-                RouteContext rc = uow != null ? uow.getRouteContext() : null;
-                if (rc != null) {
-                    targetRouteId = rc.getRouteId();
-                }
+                targetRouteId = ExchangeHelper.getRouteId(exchange);
             }
 
             MessageHistory history = factory.newMessageHistory(targetRouteId, definition, System.currentTimeMillis(), exchange);
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index 65f1587..1a516e0 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -47,12 +47,12 @@ import org.apache.camel.ExtendedExchange;
 import org.apache.camel.Navigate;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StreamCache;
 import org.apache.camel.Traceable;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.ReactiveExecutor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteIdAware;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
@@ -68,7 +68,6 @@ import org.apache.camel.util.concurrent.AsyncCompletionService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 import static org.apache.camel.util.ObjectHelper.notNull;
 
 /**
@@ -137,9 +136,9 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
      * <p/>
      * See the <tt>createProcessorExchangePair</tt> and <tt>createErrorHandler</tt> methods.
      */
-    static final class ErrorHandlerKey extends KeyValueHolder<RouteContext, Processor> {
+    static final class ErrorHandlerKey extends KeyValueHolder<Route, Processor> {
 
-        ErrorHandlerKey(RouteContext key, Processor value) {
+        ErrorHandlerKey(Route key, Processor value) {
             super(key, value);
         }
 
@@ -662,8 +661,8 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
             }
 
             // and add the pair
-            RouteContext routeContext = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRouteContext() : null;
-            result.add(createProcessorExchangePair(index++, processor, copy, routeContext));
+            Route route = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRoute() : null;
+            result.add(createProcessorExchangePair(index++, processor, copy, route));
         }
 
         if (exchange.getException() != null) {
@@ -684,18 +683,18 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
      * @param index        the index
      * @param processor    the processor
      * @param exchange     the exchange
-     * @param routeContext the route context
+     * @param route the route context
      * @return prepared for use
      */
     protected ProcessorExchangePair createProcessorExchangePair(int index, Processor processor, Exchange exchange,
-                                                                RouteContext routeContext) {
+                                                                Route route) {
         Processor prepared = processor;
 
         // set property which endpoint we send to
         setToEndpoint(exchange, prepared);
 
         // rework error handling to support fine grained error handling
-        prepared = createErrorHandler(routeContext, exchange, prepared);
+        prepared = createErrorHandler(route, exchange, prepared);
 
         // invoke on prepare on the exchange if specified
         if (onPrepare != null) {
@@ -708,20 +707,20 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
         return new DefaultProcessorExchangePair(index, processor, prepared, exchange);
     }
 
-    protected Processor createErrorHandler(RouteContext routeContext, Exchange exchange, Processor processor) {
+    protected Processor createErrorHandler(Route route, Exchange exchange, Processor processor) {
         Processor answer;
 
         boolean tryBlock = exchange.getProperty(Exchange.TRY_ROUTE_BLOCK, false, boolean.class);
 
         // do not wrap in error handler if we are inside a try block
-        if (!tryBlock && routeContext != null) {
+        if (!tryBlock && route != null) {
             // wrap the producer in error handler so we have fine grained error handling on
             // the output side instead of the input side
             // this is needed to support redelivery on that output alone and not doing redelivery
             // for the entire multicast block again which will start from scratch again
 
             // create key for cache
-            final ErrorHandlerKey key = new ErrorHandlerKey(routeContext, processor);
+            final ErrorHandlerKey key = new ErrorHandlerKey(route, processor);
 
             // lookup cached first to reuse and preserve memory
             answer = errorHandlers.get(key);
@@ -734,10 +733,10 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
             // create error handler (create error handler directly to keep it light weight,
             // instead of using ProcessorReifier.wrapInErrorHandler)
             try {
-                processor = routeContext.createErrorHandler(processor);
+                processor = route.createErrorHandler(processor);
 
                 // and wrap in unit of work processor so the copy exchange also can run under UoW
-                answer = createUnitOfWorkProcessor(routeContext, processor, exchange);
+                answer = createUnitOfWorkProcessor(route, processor, exchange);
 
                 boolean child = exchange.getProperty(Exchange.PARENT_UNIT_OF_WORK, UnitOfWork.class) != null;
 
@@ -755,7 +754,7 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
             }
         } else {
             // and wrap in unit of work processor so the copy exchange also can run under UoW
-            answer = createUnitOfWorkProcessor(routeContext, processor, exchange);
+            answer = createUnitOfWorkProcessor(route, processor, exchange);
         }
 
         return answer;
@@ -764,20 +763,19 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
     /**
      * Strategy to create the unit of work to be used for the sub route
      *
-     * @param routeContext the route context
      * @param processor    the processor
      * @param exchange     the exchange
      * @return the unit of work processor
      */
-    protected Processor createUnitOfWorkProcessor(RouteContext routeContext, Processor processor, Exchange exchange) {
+    protected Processor createUnitOfWorkProcessor(Route route, Processor processor, Exchange exchange) {
         CamelInternalProcessor internal = new CamelInternalProcessor(exchange.getContext(), processor);
 
         // 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
         UnitOfWork parent = exchange.getProperty(Exchange.PARENT_UNIT_OF_WORK, UnitOfWork.class);
         if (parent != null) {
-            internal.addAdvice(new CamelInternalProcessor.ChildUnitOfWorkProcessorAdvice(routeContext, exchange.getContext(), parent));
+            internal.addAdvice(new CamelInternalProcessor.ChildUnitOfWorkProcessorAdvice(route, exchange.getContext(), parent));
         } else {
-            internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, exchange.getContext()));
+            internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(route, exchange.getContext()));
         }
 
         return internal;
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
index a031939..cbfbd62 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
@@ -33,8 +33,8 @@ import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.NormalizedEndpointUri;
+import org.apache.camel.Route;
 import org.apache.camel.spi.ProducerCache;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.ExchangeHelper;
@@ -254,8 +254,8 @@ public class RecipientListProcessor extends MulticastProcessor {
         setToEndpoint(copy, producer);
 
         // rework error handling to support fine grained error handling
-        RouteContext routeContext = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRouteContext() : null;
-        Processor prepared = createErrorHandler(routeContext, copy, producer);
+        Route route = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRoute() : null;
+        Processor prepared = createErrorHandler(route, copy, producer);
 
         // invoke on prepare on the exchange if specified
         if (onPrepare != null) {
@@ -270,20 +270,6 @@ public class RecipientListProcessor extends MulticastProcessor {
         return new RecipientProcessorExchangePair(index, producerCache, endpoint, producer, prepared, copy, pattern, prototypeEndpoint);
     }
 
-    @Override
-    protected Processor createErrorHandler(RouteContext routeContext, Exchange exchange, Processor processor) {
-        Processor answer = super.createErrorHandler(routeContext, exchange, processor);
-        exchange.adapt(ExtendedExchange.class).addOnCompletion(new SynchronizationAdapter() {
-            @Override
-            public void onDone(Exchange exchange) {
-                // remove error handler builder from route context as we are done with the recipient list
-                // and we cannot reuse this and must remove it to avoid leaking the error handler on the route context
-                routeContext.removeErrorHandlers(routeContext.getErrorHandlerFactory());
-            }
-        });
-        return answer;
-    }
-
     protected static Object prepareRecipient(Exchange exchange, Object recipient) throws NoTypeConversionAvailableException {
         if (recipient instanceof Endpoint || recipient instanceof NormalizedEndpointUri) {
             return recipient;
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java b/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
index d88d9c7..4098ec0 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -28,6 +28,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.Message;
 import org.apache.camel.NoTypeConversionAvailableException;
+import org.apache.camel.Route;
 import org.apache.camel.Traceable;
 import org.apache.camel.impl.engine.DefaultProducerCache;
 import org.apache.camel.impl.engine.EmptyProducerCache;
@@ -35,7 +36,6 @@ import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.NormalizedEndpointUri;
 import org.apache.camel.spi.ProducerCache;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteIdAware;
 import org.apache.camel.support.AsyncProcessorSupport;
 import org.apache.camel.support.ExchangeHelper;
@@ -46,7 +46,6 @@ import org.apache.camel.support.service.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 import static org.apache.camel.processor.PipelineHelper.continueProcessing;
 import static org.apache.camel.util.ObjectHelper.notNull;
 
@@ -388,13 +387,13 @@ public class RoutingSlip extends AsyncProcessorSupport implements Traceable, IdA
         return copy;
     }
 
-    protected AsyncProcessor createErrorHandler(RouteContext routeContext, Exchange exchange, AsyncProcessor processor, Endpoint endpoint) {
+    protected AsyncProcessor createErrorHandler(Route route, Exchange exchange, AsyncProcessor processor, Endpoint endpoint) {
         AsyncProcessor answer = processor;
 
         boolean tryBlock = exchange.getProperty(Exchange.TRY_ROUTE_BLOCK, false, boolean.class);
 
         // do not wrap in error handler if we are inside a try block
-        if (!tryBlock && routeContext != null && errorHandler != null) {
+        if (!tryBlock && route != null && errorHandler != null) {
             // wrap the producer in error handler so we have fine grained error handling on
             // the output side instead of the input side
             // this is needed to support redelivery on that output alone and not doing redelivery
@@ -425,8 +424,8 @@ public class RoutingSlip extends AsyncProcessorSupport implements Traceable, IdA
         return producerCache.doInAsyncProducer(endpoint, exchange, callback, (p, ex, cb) -> {
 
             // rework error handling to support fine grained error handling
-            RouteContext routeContext = ex.getUnitOfWork() != null ? ex.getUnitOfWork().getRouteContext() : null;
-            AsyncProcessor target = createErrorHandler(routeContext, ex, p, endpoint);
+            Route route = ex.getUnitOfWork() != null ? ex.getUnitOfWork().getRoute() : null;
+            AsyncProcessor target = createErrorHandler(route, ex, p, endpoint);
 
             // set property which endpoint we send to and the producer that can do it
             ex.setProperty(Exchange.TO_ENDPOINT, endpoint.getEndpointUri());
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java b/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java
index 491358c..b06e602 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java
@@ -34,11 +34,11 @@ import org.apache.camel.Expression;
 import org.apache.camel.ExtendedExchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Traceable;
 import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
 import org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.util.IOHelper;
@@ -137,7 +137,7 @@ public class Splitter extends MulticastProcessor implements AsyncProcessor, Trac
         final Object value;
         final Iterator<?> iterator;
         private final Exchange copy;
-        private final RouteContext routeContext;
+        private final Route route;
         private final Exchange original;
 
         private SplitterIterable(Exchange exchange, Object value) {
@@ -145,7 +145,7 @@ public class Splitter extends MulticastProcessor implements AsyncProcessor, Trac
             this.value = value;
             this.iterator = ObjectHelper.createIterator(value);
             this.copy = copyAndPrepareSubExchange(exchange, true);
-            this.routeContext = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRouteContext() : null;
+            this.route = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRoute() : null;
         }
 
         @Override
@@ -197,7 +197,7 @@ public class Splitter extends MulticastProcessor implements AsyncProcessor, Trac
                             Message in = newExchange.getIn();
                             in.setBody(part);
                         }
-                        return createProcessorExchangePair(index++, getProcessors().iterator().next(), newExchange, routeContext);
+                        return createProcessorExchangePair(index++, getProcessors().iterator().next(), newExchange, route);
                     } else {
                         return null;
                     }
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java b/core/camel-base/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java
index 5034a07..7b23d0e 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/channel/DefaultChannel.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NamedRoute;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.processor.errorhandler.RedeliveryErrorHandler;
@@ -38,7 +39,6 @@ import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.ManagementInterceptStrategy;
 import org.apache.camel.spi.MessageHistoryFactory;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.Tracer;
 import org.apache.camel.support.OrderedComparator;
 import org.apache.camel.support.service.ServiceHelper;
@@ -67,7 +67,7 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
     private NamedNode definition;
     private ManagementInterceptStrategy.InstrumentationProcessor<?> instrumentationProcessor;
     private CamelContext camelContext;
-    private RouteContext routeContext;
+    private Route route;
     private boolean routeScoped = true;
 
     public DefaultChannel(CamelContext camelContext) {
@@ -131,8 +131,8 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
     }
 
     @Override
-    public RouteContext getRouteContext() {
-        return routeContext;
+    public Route getRoute() {
+        return route;
     }
 
     @Override
@@ -170,22 +170,22 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
      * If the initialized output definition contained outputs (children) then
      * the childDefinition will be set so we can leverage fine grained tracing
      *
-     * @param routeContext      the route context
+     * @param route      the route context
      * @param definition        the route definition the {@link Channel} represents
      * @param childDefinition   the child definition
      * @throws Exception is thrown if some error occurred
      */
-    public void initChannel(RouteContext routeContext,
+    public void initChannel(Route route,
                             NamedNode definition,
                             NamedNode childDefinition,
                             List<InterceptStrategy> interceptors,
                             Processor nextProcessor,
-                            NamedRoute route,
+                            NamedRoute routeDefinition,
                             boolean first,
                             boolean routeScoped) throws Exception {
-        this.routeContext = routeContext;
+        this.route = route;
         this.definition = definition;
-        this.camelContext = routeContext.getCamelContext();
+        this.camelContext = route.getCamelContext();
         this.nextProcessor = nextProcessor;
         this.routeScoped = routeScoped;
 
@@ -201,12 +201,12 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
 
         // setup instrumentation processor for management (jmx)
         // this is later used in postInitChannel as we need to setup the error handler later as well
-        ManagementInterceptStrategy managed = routeContext.getManagementInterceptStrategy();
+        ManagementInterceptStrategy managed = route.getManagementInterceptStrategy();
         if (managed != null) {
             instrumentationProcessor = managed.createProcessor(targetOutputDef, nextProcessor);
         }
 
-        if (routeContext.isMessageHistory()) {
+        if (route.isMessageHistory()) {
             // add message history advice
             MessageHistoryFactory factory = camelContext.getMessageHistoryFactory();
             addAdvice(new MessageHistoryAdvice(factory, targetOutputDef));
@@ -216,7 +216,7 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
 
         // then wrap the output with the tracer and debugger (debugger first,
         // as we do not want regular tracer to trace the debugger)
-        if (routeContext.isDebugging()) {
+        if (route.isDebugging()) {
             if (camelContext.getDebugger() != null) {
                 // use custom debugger
                 Debugger debugger = camelContext.getDebugger();
@@ -229,15 +229,15 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
             }
         }
 
-        if (routeContext.isBacklogTracing()) {
+        if (route.isBacklogTracing()) {
             // add jmx backlog tracer
             BacklogTracer backlogTracer = getOrCreateBacklogTracer();
-            addAdvice(new BacklogTracerAdvice(backlogTracer, targetOutputDef, route, first));
+            addAdvice(new BacklogTracerAdvice(backlogTracer, targetOutputDef, routeDefinition, first));
         }
-        if (routeContext.isTracing()) {
+        if (route.isTracing()) {
             // add logger tracer
             Tracer tracer = camelContext.getTracer();
-            addAdvice(new TracingAdvice(tracer, targetOutputDef, route, first));
+            addAdvice(new TracingAdvice(tracer, targetOutputDef, routeDefinition, first));
         }
 
         // sort interceptors according to ordered
@@ -249,7 +249,7 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
         for (InterceptStrategy strategy : interceptors) {
             Processor next = target == nextProcessor ? null : nextProcessor;
             // use the fine grained definition (eg the child if available). Its always possible to get back to the parent
-            Processor wrapped = strategy.wrapProcessorInInterceptors(routeContext.getCamelContext(), targetOutputDef, target, next);
+            Processor wrapped = strategy.wrapProcessorInInterceptors(route.getCamelContext(), targetOutputDef, target, next);
             if (!(wrapped instanceof AsyncProcessor)) {
                 LOG.warn("Interceptor: " + strategy + " at: " + definition + " does not return an AsyncProcessor instance."
                         + " This causes the asynchronous routing engine to not work as optimal as possible."
@@ -264,12 +264,12 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
             target = wrapped;
         }
 
-        if (routeContext.isStreamCaching()) {
+        if (route.isStreamCaching()) {
             addAdvice(new StreamCachingAdvice(camelContext.getStreamCachingStrategy()));
         }
 
-        if (routeContext.getDelayer() != null && routeContext.getDelayer() > 0) {
-            addAdvice(new DelayerAdvice(routeContext.getDelayer()));
+        if (route.getDelayer() != null && route.getDelayer() > 0) {
+            addAdvice(new DelayerAdvice(route.getDelayer()));
         }
 
         // sets the delegate to our wrapped output
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java
index a99fdb49f..33660bd 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java
@@ -23,7 +23,7 @@ import java.util.Set;
 import java.util.TreeMap;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -133,7 +133,7 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy {
             // so we will not pick an ExceptionPolicy from another route
             String typeRoute = type.getRouteId();
             if (exchange != null && exchange.getUnitOfWork() != null && ObjectHelper.isNotEmpty(typeRoute)) {
-                RouteContext rc = exchange.getUnitOfWork().getRouteContext();
+                Route rc = exchange.getUnitOfWork().getRoute();
                 String route = rc != null ? rc.getRouteId() : null;
                 if (route != null && !route.equals(typeRoute)) {
                     if (LOG.isTraceEnabled()) {
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index c8b0b08..807ee5a 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -36,12 +36,12 @@ import org.apache.camel.Message;
 import org.apache.camel.Navigate;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.ReactiveExecutor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.ShutdownPrepared;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.spi.UnitOfWork;
@@ -486,8 +486,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
             // and put failure endpoint back as well
             ee.setProperty(Exchange.FAILURE_ENDPOINT, ee.getProperty(Exchange.TO_ENDPOINT));
             // and store the route id so we know in which route we failed
-            UnitOfWork uow = ee.getUnitOfWork();
-            RouteContext rc = uow != null ? uow.getRouteContext() : null;
+            Route rc = ExchangeHelper.getRoute(ee);
             if (rc != null) {
                 ee.setProperty(Exchange.FAILURE_ROUTE_ID, rc.getRouteId());
             }
@@ -873,8 +872,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
 
                 // route specific failure handler?
                 Processor processor = null;
-                UnitOfWork uow = exchange.getUnitOfWork();
-                RouteContext rc = uow != null ? uow.getRouteContext() : null;
+                Route rc = ExchangeHelper.getRoute(exchange);
                 if (rc != null) {
                     processor = rc.getOnException(exceptionPolicy.getId());
                 } else {
@@ -1033,7 +1031,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
                 exchange.setProperty(Exchange.FAILURE_ENDPOINT, exchange.getProperty(Exchange.TO_ENDPOINT));
                 // and store the route id so we know in which route we failed
                 UnitOfWork uow = exchange.getUnitOfWork();
-                RouteContext rc = uow != null ? uow.getRouteContext() : null;
+                Route rc = uow != null ? uow.getRoute() : null;
                 if (rc != null) {
                     exchange.setProperty(Exchange.FAILURE_ROUTE_ID, rc.getRouteId());
                 }
@@ -1171,10 +1169,9 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
             // and put failure endpoint back as well
             ee.setProperty(Exchange.FAILURE_ENDPOINT, ee.getProperty(Exchange.TO_ENDPOINT));
             // and store the route id so we know in which route we failed
-            UnitOfWork uow = ee.getUnitOfWork();
-            RouteContext rc = uow != null ? uow.getRouteContext() : null;
-            if (rc != null) {
-                ee.setProperty(Exchange.FAILURE_ROUTE_ID, rc.getRouteId());
+            String routeId = ExchangeHelper.getAtRouteId(ee);
+            if (routeId != null) {
+                ee.setProperty(Exchange.FAILURE_ROUTE_ID, routeId);
             }
         }
 
diff --git a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
index 367f091..e8f54f1 100644
--- a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
+++ b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
@@ -39,7 +39,7 @@ import org.apache.camel.model.Model;
 import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 import org.apache.camel.model.cloud.ServiceCallDefinition;
 import org.apache.camel.model.cloud.ServiceCallDefinitionConstants;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.function.Suppliers;
@@ -61,10 +61,10 @@ public class ServiceCallProcessorFactory extends TypedProcessorFactory<ServiceCa
     // *****************************
 
     @Override
-    public Processor doCreateProcessor(RouteContext routeContext, ServiceCallDefinition definition) throws Exception {
+    public Processor doCreateProcessor(Route route, ServiceCallDefinition definition) throws Exception {
         this.definition = definition;
 
-        final CamelContext camelContext = routeContext.getCamelContext();
+        final CamelContext camelContext = route.getCamelContext();
         final ServiceDiscovery serviceDiscovery = retrieveServiceDiscovery(camelContext);
         final ServiceFilter serviceFilter = retrieveServiceFilter(camelContext);
         final ServiceChooser serviceChooser = retrieveServiceChooser(camelContext);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/NotifyBuilder.java
index ba32713..c70a64e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/NotifyBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/NotifyBuilder.java
@@ -38,10 +38,9 @@ import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeFailedEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.spi.NotifyBuilderMatcher;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.EventNotifierSupport;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -211,10 +210,8 @@ public class NotifyBuilder {
 
             @Override
             public boolean onExchangeSent(Exchange exchange, Endpoint endpoint, long timeTaken) {
-                UnitOfWork uow = exchange.getUnitOfWork();
-                RouteContext rc = uow != null ? uow.getRouteContext() : null;
-                if (rc != null) {
-                    String id = rc.getRouteId();
+                String id = ExchangeHelper.getAtRouteId(exchange);
+                if (id != null) {
                     return PatternHelper.matchPattern(id, routeId);
                 } else {
                     return false;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index 1593bb3..cb349cc 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -45,7 +45,6 @@ import org.apache.camel.model.rest.RestDefinition;
 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 {
 
@@ -350,9 +349,7 @@ public class DefaultModel implements Model {
         AbstractCamelContext mcc = camelContext.adapt(AbstractCamelContext.class);
         mcc.setStartingRoutes(true);
         try {
-            String id = routeDefinition.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-            RouteContext routeContext = new DefaultRouteContext(camelContext, routeDefinition, id);
-            Route route = new RouteReifier(routeContext, routeDefinition).createRoute();
+            Route route = new RouteReifier(camelContext, routeDefinition).createRoute();
             RouteService routeService = new RouteService(route);
             mcc.startRouteService(routeService, true);
         } finally {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
deleted file mode 100644
index 821f74a..0000000
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.NamedNode;
-import org.apache.camel.Processor;
-import org.apache.camel.impl.engine.AbstractRouteContext;
-import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
-
-/**
- * The context used to activate new routing rules
- */
-public class DefaultRouteContext extends AbstractRouteContext implements RouteContext {
-
-    public DefaultRouteContext(CamelContext camelContext, NamedNode route, String routeId) {
-        super(camelContext, route, routeId);
-    }
-
-    @Override
-    public Processor createErrorHandler(Processor processor) throws Exception {
-        return ErrorHandlerReifier.reifier(this, getErrorHandlerFactory())
-                .createErrorHandler(processor);
-    }
-
-}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/RouteService.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/RouteService.java
index 81eb623..cbc1b7e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/RouteService.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/RouteService.java
@@ -41,7 +41,7 @@ public class RouteService extends BaseRouteService {
 
     public RouteService(Route route) {
         super(route);
-        this.routeDefinition = (RouteDefinition)route.getRouteContext().getRoute();
+        this.routeDefinition = (RouteDefinition) route.getRoute();
     }
 
     public RouteDefinition getRouteDefinition() {
@@ -63,7 +63,7 @@ public class RouteService extends BaseRouteService {
         if (!getCamelContext().isAutoStartup()) {
             return false;
         }
-        if (!getRouteContext().isAutoStartup()) {
+        if (!getRoute().isAutoStartup()) {
             return false;
         }
         if (routeDefinition.getAutoStartup() == null) {
@@ -84,7 +84,7 @@ public class RouteService extends BaseRouteService {
         // the XML DSL will configure error handlers using refs, so we need this
         // additional test
         if (routeDefinition.getErrorHandlerRef() != null) {
-            ErrorHandlerFactory routeScoped = getRouteContext().getErrorHandlerFactory();
+            ErrorHandlerFactory routeScoped = getRoute().getErrorHandlerFactory();
             ErrorHandlerFactory contextScoped = getCamelContext().adapt(ExtendedCamelContext.class).getErrorHandlerFactory();
             return routeScoped != null && contextScoped != null && routeScoped == contextScoped;
         }
@@ -103,7 +103,7 @@ public class RouteService extends BaseRouteService {
             if (output instanceof OnExceptionDefinition) {
                 OnExceptionDefinition onExceptionDefinition = (OnExceptionDefinition)output;
                 if (onExceptionDefinition.isRouteScoped()) {
-                    Processor errorHandler = getRouteContext().getOnException(onExceptionDefinition.getId());
+                    Processor errorHandler = getRoute().getOnException(onExceptionDefinition.getId());
                     if (errorHandler instanceof Service) {
                         services.add((Service)errorHandler);
                     }
@@ -111,7 +111,7 @@ public class RouteService extends BaseRouteService {
             } else if (output instanceof OnCompletionDefinition) {
                 OnCompletionDefinition onCompletionDefinition = (OnCompletionDefinition)output;
                 if (onCompletionDefinition.isRouteScoped()) {
-                    Processor onCompletionProcessor = getRouteContext().getOnCompletion(onCompletionDefinition.getId());
+                    Processor onCompletionProcessor = getRoute().getOnCompletion(onCompletionDefinition.getId());
                     if (onCompletionProcessor instanceof Service) {
                         services.add((Service)onCompletionProcessor);
                     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index e1b179a..2d09695 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -38,7 +38,6 @@ import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.cluster.CamelClusterView;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
-import org.apache.camel.support.DefaultConsumer;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.support.cluster.ClusterServiceHelper;
@@ -171,7 +170,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
         super.onInit(route);
 
         LOG.info("Route managed by {}. Setting route {} AutoStartup flag to false.", getClass(), route.getId());
-        route.getRouteContext().setAutoStartup(false);
+        route.setAutoStartup(false);
 
         this.refCount.retain();
         this.stoppedRoutes.add(route);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
index 8f111b4..452bfc6 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
@@ -21,10 +21,10 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,8 +35,8 @@ public abstract class AbstractPolicyReifier<T extends ProcessorDefinition<?>> ex
 
     private static final Logger LOG = LoggerFactory.getLogger(TransactedReifier.class);
 
-    public AbstractPolicyReifier(RouteContext routeContext, T definition) {
-        super(routeContext, definition);
+    public AbstractPolicyReifier(Route route, T definition) {
+        super(route, definition);
     }
 
     public AbstractPolicyReifier(CamelContext camelContext, T definition) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
index 0d82b28..959eb5d 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
@@ -22,29 +22,28 @@ import java.util.Set;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
-import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Predicate;
+import org.apache.camel.Route;
 import org.apache.camel.model.ExpressionSubElementDefinition;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.reifier.language.ExpressionReifier;
 import org.apache.camel.spi.BeanRepository;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public abstract class AbstractReifier implements BeanRepository {
 
-    protected final RouteContext routeContext;
+    protected final org.apache.camel.Route route;
     protected final CamelContext camelContext;
 
-    public AbstractReifier(RouteContext routeContext) {
-        this.routeContext = ObjectHelper.notNull(routeContext, "RouteContext");
-        this.camelContext = routeContext.getCamelContext();
+    public AbstractReifier(Route route) {
+        this.route = ObjectHelper.notNull(route, "Route");
+        this.camelContext = route.getCamelContext();
     }
 
     public AbstractReifier(CamelContext camelContext) {
-        this.routeContext = null;
+        this.route = null;
         this.camelContext = ObjectHelper.notNull(camelContext, "CamelContext");
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
index 16ea9d3..1b0cfce 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.AggregateDefinition;
 import org.apache.camel.model.OptimisticLockRetryPolicyDefinition;
 import org.apache.camel.model.ProcessorDefinition;
@@ -33,13 +34,12 @@ import org.apache.camel.processor.aggregate.AggregateProcessor;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.OptimisticLockRetryPolicy;
 import org.apache.camel.spi.AggregationRepository;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.concurrent.SynchronousExecutorService;
 
 public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
 
-    public AggregateReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, AggregateDefinition.class.cast(definition));
+    public AggregateReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, AggregateDefinition.class.cast(definition));
     }
 
     @Override
@@ -52,7 +52,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
 
         // wrap the aggregate route in a unit of work processor
         CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, childProcessor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(route, camelContext));
 
         Expression correlation = createExpression(definition.getExpression());
         AggregationStrategy strategy = createAggregationStrategy();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
index 1ba7589..4fa6126 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/BeanReifier.java
@@ -17,19 +17,17 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.BeanScope;
-import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.BeanDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 public class BeanReifier extends ProcessorReifier<BeanDefinition> {
 
-    public BeanReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, BeanDefinition.class.cast(definition));
+    public BeanReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, BeanDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java
index 3a28fa3..f8d8009 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java
@@ -21,16 +21,16 @@ import java.util.List;
 
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.CatchDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.TryDefinition;
 import org.apache.camel.processor.CatchProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class CatchReifier extends ProcessorReifier<CatchDefinition> {
 
-    public CatchReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, CatchDefinition.class.cast(definition));
+    public CatchReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, CatchDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
index baa6add..46ab340 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
@@ -22,20 +22,19 @@ import java.util.List;
 import org.apache.camel.ExpressionFactory;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.model.ChoiceDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.WhenDefinition;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.ChoiceProcessor;
 import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class ChoiceReifier extends ProcessorReifier<ChoiceDefinition> {
 
-    public ChoiceReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, ChoiceDefinition.class.cast(definition));
+    public ChoiceReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, ChoiceDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CircuitBreakerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CircuitBreakerReifier.java
index 40cea74..2b454d4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CircuitBreakerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CircuitBreakerReifier.java
@@ -17,14 +17,14 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.CircuitBreakerDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.RouteContext;
 
 public class CircuitBreakerReifier extends ProcessorReifier<CircuitBreakerDefinition> {
 
-    public CircuitBreakerReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, CircuitBreakerDefinition.class.cast(definition));
+    public CircuitBreakerReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, CircuitBreakerDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
index f725bc7..4d7c09f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
@@ -19,20 +19,20 @@ package org.apache.camel.reifier;
 import org.apache.camel.AggregationStrategy;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ClaimCheckDefinition;
 import org.apache.camel.model.ClaimCheckOperation;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.ClaimCheckProcessor;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.ObjectHelper;
 
 import static org.apache.camel.util.ObjectHelper.notNull;
 
 public class ClaimCheckReifier extends ProcessorReifier<ClaimCheckDefinition> {
 
-    public ClaimCheckReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, ClaimCheckDefinition.class.cast(definition));
+    public ClaimCheckReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, ClaimCheckDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java
index 53fb78e..0c109eb 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java
@@ -20,16 +20,15 @@ import java.nio.charset.Charset;
 import java.nio.charset.UnsupportedCharsetException;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ConvertBodyDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.ConvertBodyProcessor;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 public class ConvertBodyReifier extends ProcessorReifier<ConvertBodyDefinition> {
 
-    public ConvertBodyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, ConvertBodyDefinition.class.cast(definition));
+    public ConvertBodyReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, ConvertBodyDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java
index 8f65fab..ae4db8a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DelayReifier.java
@@ -20,15 +20,15 @@ import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.DelayDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.Delayer;
-import org.apache.camel.spi.RouteContext;
 
 public class DelayReifier extends ExpressionReifier<DelayDefinition> {
 
-    public DelayReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, DelayDefinition.class.cast(definition));
+    public DelayReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, DelayDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
index b84af32..58c75fa 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
@@ -19,15 +19,15 @@ package org.apache.camel.reifier;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.DynamicRouterDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DynamicRouter;
-import org.apache.camel.spi.RouteContext;
 
 public class DynamicRouterReifier extends ExpressionReifier<DynamicRouterDefinition<?>> {
 
-    public DynamicRouterReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, DynamicRouterDefinition.class.cast(definition));
+    public DynamicRouterReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, DynamicRouterDefinition.class.cast(definition));
     }
 
     @Override
@@ -46,7 +46,7 @@ public class DynamicRouterReifier extends ExpressionReifier<DynamicRouterDefinit
         // create error handler (create error handler directly to keep it light
         // weight,
         // instead of using ProcessorReifier.wrapInErrorHandler)
-        AsyncProcessor errorHandler = (AsyncProcessor) routeContext.createErrorHandler(dynamicRouter.newRoutingSlipProcessorForErrorHandler());
+        AsyncProcessor errorHandler = (AsyncProcessor) route.createErrorHandler(dynamicRouter.newRoutingSlipProcessorForErrorHandler());
         dynamicRouter.setErrorHandler(errorHandler);
 
         return dynamicRouter;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
index 7dd0d53..b1d8714 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
@@ -20,16 +20,16 @@ import org.apache.camel.AggregationStrategy;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.EnrichDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.Enricher;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
-import org.apache.camel.spi.RouteContext;
 
 public class EnrichReifier extends ExpressionReifier<EnrichDefinition> {
 
-    public EnrichReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, EnrichDefinition.class.cast(definition));
+    public EnrichReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, EnrichDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
index 548c0e8..77667eb 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
@@ -18,14 +18,14 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ExpressionNode;
 import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.spi.RouteContext;
 
 abstract class ExpressionReifier<T extends ExpressionNode> extends ProcessorReifier<T> {
 
-    protected ExpressionReifier(RouteContext routeContext, T definition) {
-        super(routeContext, definition);
+    protected ExpressionReifier(Route route, T definition) {
+        super(route, definition);
     }
 
     /**
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java
index a440805..4d070ef 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FilterReifier.java
@@ -17,15 +17,15 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.FilterDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class FilterReifier extends ExpressionReifier<FilterDefinition> {
 
-    public FilterReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, FilterDefinition.class.cast(definition));
+    public FilterReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, FilterDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FinallyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FinallyReifier.java
index a97d7e2..5044ede 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FinallyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/FinallyReifier.java
@@ -17,16 +17,16 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.FinallyDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.TryDefinition;
 import org.apache.camel.processor.FinallyProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class FinallyReifier extends ProcessorReifier<FinallyDefinition> {
 
-    public FinallyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, FinallyDefinition.class.cast(definition));
+    public FinallyReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, FinallyDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
index 95e7620..3c6cd08 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
@@ -18,17 +18,17 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.IdempotentConsumerDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.idempotent.IdempotentConsumer;
 import org.apache.camel.spi.IdempotentRepository;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class IdempotentConsumerReifier extends ExpressionReifier<IdempotentConsumerDefinition> {
 
-    public IdempotentConsumerReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, IdempotentConsumerDefinition.class.cast(definition));
+    public IdempotentConsumerReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, IdempotentConsumerDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
index 181a57d..3b0798a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
@@ -18,16 +18,16 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.InterceptFromDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetHeaderDefinition;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.ExpressionAdapter;
 
 public class InterceptFromReifier extends InterceptReifier<InterceptFromDefinition> {
 
-    public InterceptFromReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, definition);
+    public InterceptFromReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptReifier.java
index 7caa191..9f7877b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptReifier.java
@@ -19,17 +19,17 @@ package org.apache.camel.reifier;
 import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.InterceptDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.Pipeline;
 import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.spi.RouteContext;
 
 public class InterceptReifier<T extends InterceptDefinition> extends ProcessorReifier<T> {
 
-    public InterceptReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (T) definition);
+    public InterceptReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (T) definition);
     }
 
     @Override
@@ -39,7 +39,7 @@ public class InterceptReifier<T extends InterceptDefinition> extends ProcessorRe
 
         // add the output as a intercept strategy to the route context so its
         // invoked on each processing step
-        routeContext.getInterceptStrategies().add(new InterceptStrategy() {
+        route.getInterceptStrategies().add(new InterceptStrategy() {
             private Processor interceptedTarget;
 
             public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
@@ -64,7 +64,7 @@ public class InterceptReifier<T extends InterceptDefinition> extends ProcessorRe
         });
 
         // remove me from the route so I am not invoked in a regular route path
-        ((RouteDefinition)routeContext.getRoute()).getOutputs().remove(definition);
+        ((RouteDefinition) route.getRoute()).getOutputs().remove(definition);
         // and return no processor to invoke next from me
         return null;
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
index 8f67c94..9a6940a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
@@ -21,6 +21,7 @@ import java.util.List;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.impl.engine.DefaultInterceptSendToEndpoint;
 import org.apache.camel.model.InterceptSendToEndpointDefinition;
 import org.apache.camel.model.ProcessorDefinition;
@@ -28,14 +29,13 @@ import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.processor.InterceptEndpointProcessor;
 import org.apache.camel.spi.EndpointStrategy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.util.URISupport;
 
 public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSendToEndpointDefinition> {
 
-    public InterceptSendToEndpointReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (InterceptSendToEndpointDefinition) definition);
+    public InterceptSendToEndpointReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (InterceptSendToEndpointDefinition) definition);
     }
 
     @Override
@@ -48,12 +48,12 @@ public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSe
             ToDefinition to = new ToDefinition(parseString(definition.getAfterUri()));
             // at first use custom factory
             if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
-                afterProcessor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(routeContext, to);
+                afterProcessor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route, to);
             }
             // fallback to default implementation if factory did not create the
             // processor
             if (afterProcessor == null) {
-                afterProcessor = reifier(routeContext, to).createProcessor();
+                afterProcessor = reifier(route, to).createProcessor();
             }
         }
         final Processor after = afterProcessor;
@@ -86,7 +86,7 @@ public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSe
         // instead we use the proxy endpoints producer do the triggering. That
         // is we trigger when someone sends
         // an exchange to the endpoint, see InterceptSendToEndpoint for details.
-        RouteDefinition route = (RouteDefinition)routeContext.getRoute();
+        RouteDefinition route = (RouteDefinition) this.route.getRoute();
         List<ProcessorDefinition<?>> outputs = route.getOutputs();
         outputs.remove(definition);
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java
index 72c3d03..b4f28b2 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java
@@ -18,17 +18,17 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Channel;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalanceDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.reifier.loadbalancer.LoadBalancerReifier;
-import org.apache.camel.spi.RouteContext;
 
 public class LoadBalanceReifier extends ProcessorReifier<LoadBalanceDefinition> {
 
-    public LoadBalanceReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (LoadBalanceDefinition)definition);
+    public LoadBalanceReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (LoadBalanceDefinition)definition);
     }
 
     @Override
@@ -39,7 +39,7 @@ public class LoadBalanceReifier extends ProcessorReifier<LoadBalanceDefinition>
         LoadBalancer loadBalancer = definition.getLoadBalancerType().getLoadBalancer();
         if (loadBalancer == null) {
             // then create it and reuse it
-            loadBalancer = LoadBalancerReifier.reifier(routeContext, definition.getLoadBalancerType()).createLoadBalancer();
+            loadBalancer = LoadBalancerReifier.reifier(route, definition.getLoadBalancerType()).createLoadBalancer();
             definition.getLoadBalancerType().setLoadBalancer(loadBalancer);
 
             // some load balancer can only support a fixed number of outputs
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
index 7aa69a8..7a3a223 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
@@ -23,12 +23,12 @@ import org.apache.camel.Expression;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.LogDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.LogProcessor;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.MaskingFormatter;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.processor.DefaultMaskingFormatter;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -37,8 +37,8 @@ import org.slf4j.LoggerFactory;
 
 public class LogReifier extends ProcessorReifier<LogDefinition> {
 
-    public LogReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (LogDefinition)definition);
+    public LogReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (LogDefinition)definition);
     }
 
     @Override
@@ -78,7 +78,7 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
                 }
             }
             if (name == null) {
-                name = routeContext.getRouteId();
+                name = route.getRouteId();
                 log.debug("LogName is not configured, using route id as logName: {}", name);
             }
             logger = LoggerFactory.getLogger(name);
@@ -92,7 +92,7 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
     }
 
     private MaskingFormatter getMaskingFormatter() {
-        if (routeContext.isLogMask()) {
+        if (route.isLogMask()) {
             MaskingFormatter formatter = lookup(MaskingFormatter.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
             if (formatter == null) {
                 formatter = new DefaultMaskingFormatter();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoopReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoopReifier.java
index 70b2a6b..47b0ca0 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoopReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LoopReifier.java
@@ -19,15 +19,15 @@ package org.apache.camel.reifier;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.LoopDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.LoopProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class LoopReifier extends ExpressionReifier<LoopDefinition> {
 
-    public LoopReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (LoopDefinition)definition);
+    public LoopReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (LoopDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MarshalReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MarshalReifier.java
index b4fb614..367137b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MarshalReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MarshalReifier.java
@@ -17,17 +17,17 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.MarshalDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.reifier.dataformat.DataFormatReifier;
 import org.apache.camel.spi.DataFormat;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.processor.MarshalProcessor;
 
 public class MarshalReifier extends ProcessorReifier<MarshalDefinition> {
 
-    public MarshalReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (MarshalDefinition) definition);
+    public MarshalReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (MarshalDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
index c4a689d..50b0d23 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
@@ -23,18 +23,18 @@ import java.util.concurrent.ExecutorService;
 import org.apache.camel.AggregationStrategy;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.MulticastDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.MulticastProcessor;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
-import org.apache.camel.spi.RouteContext;
 
 public class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
 
-    public MulticastReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (MulticastDefinition) definition);
+    public MulticastReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (MulticastDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
index e97f67e..0221712 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
@@ -20,17 +20,17 @@ import java.util.concurrent.ExecutorService;
 
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.OnCompletionDefinition;
 import org.apache.camel.model.OnCompletionMode;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.OnCompletionProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class OnCompletionReifier extends ProcessorReifier<OnCompletionDefinition> {
 
-    public OnCompletionReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (OnCompletionDefinition)definition);
+    public OnCompletionReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (OnCompletionDefinition)definition);
     }
 
     @Override
@@ -59,16 +59,16 @@ public class OnCompletionReifier extends ProcessorReifier<OnCompletionDefinition
         }
         if (original) {
             // ensure allow original is turned on
-            routeContext.setAllowUseOriginalMessage(true);
+            route.setAllowUseOriginalMessage(true);
         }
 
         Processor childProcessor = this.createChildProcessor(true);
 
         // wrap the on completion route in a unit of work processor
         CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, childProcessor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(route, camelContext));
 
-        routeContext.setOnCompletion(getId(definition), internal);
+        route.setOnCompletion(getId(definition), internal);
 
         Predicate when = null;
         if (definition.getOnWhen() != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
index 99428ca..61652aa 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
@@ -22,17 +22,17 @@ import java.util.List;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.CatchProcessor;
 import org.apache.camel.processor.FatalFallbackErrorHandler;
 import org.apache.camel.spi.ClassResolver;
-import org.apache.camel.spi.RouteContext;
 
 public class OnExceptionReifier extends ProcessorReifier<OnExceptionDefinition> {
 
-    public OnExceptionReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (OnExceptionDefinition)definition);
+    public OnExceptionReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (OnExceptionDefinition)definition);
     }
 
     @Override
@@ -54,7 +54,7 @@ public class OnExceptionReifier extends ProcessorReifier<OnExceptionDefinition>
 
         if (parseBoolean(definition.getUseOriginalMessage(), false)) {
             // ensure allow original is turned on
-            routeContext.setAllowUseOriginalMessage(true);
+            route.setAllowUseOriginalMessage(true);
         }
 
         // lets attach this on exception to the route error handler
@@ -64,12 +64,12 @@ public class OnExceptionReifier extends ProcessorReifier<OnExceptionDefinition>
             // have child output
             Processor errorHandler = new FatalFallbackErrorHandler(child);
             String id = getId(definition);
-            routeContext.setOnException(id, errorHandler);
+            route.setOnException(id, errorHandler);
         }
         // lookup the error handler builder
-        ErrorHandlerFactory builder = routeContext.getErrorHandlerFactory();
+        ErrorHandlerFactory builder = route.getErrorHandlerFactory();
         // and add this as error handlers
-        routeContext.addErrorHandler(builder, definition);
+        route.addErrorHandler(builder, definition);
     }
 
     @Override
@@ -82,7 +82,7 @@ public class OnExceptionReifier extends ProcessorReifier<OnExceptionDefinition>
 
         if (parseBoolean(definition.getUseOriginalMessage(), false)) {
             // ensure allow original is turned on
-            routeContext.setAllowUseOriginalMessage(true);
+            route.setAllowUseOriginalMessage(true);
         }
 
         // must validate configuration before creating processor
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java
index 3a6e2d1..80f423c 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java
@@ -17,14 +17,14 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.OnFallbackDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.RouteContext;
 
 public class OnFallbackReifier extends ProcessorReifier<OnFallbackDefinition> {
 
-    public OnFallbackReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (OnFallbackDefinition)definition);
+    public OnFallbackReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (OnFallbackDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java
index 2e78b4f..11c1090 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java
@@ -17,14 +17,14 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.OtherwiseDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.RouteContext;
 
 public class OtherwiseReifier extends ProcessorReifier<OtherwiseDefinition> {
 
-    public OtherwiseReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, OtherwiseDefinition.class.cast(definition));
+    public OtherwiseReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, OtherwiseDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PipelineReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PipelineReifier.java
index 441d83c..659e691 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PipelineReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PipelineReifier.java
@@ -17,14 +17,14 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.PipelineDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.RouteContext;
 
 public class PipelineReifier extends ProcessorReifier<PipelineDefinition> {
 
-    public PipelineReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, PipelineDefinition.class.cast(definition));
+    public PipelineReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, PipelineDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
index de5b2ec..8c2bd4b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
@@ -17,18 +17,18 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.model.PolicyDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class PolicyReifier extends AbstractPolicyReifier<PolicyDefinition> {
 
-    public PolicyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (PolicyDefinition) definition);
+    public PolicyReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (PolicyDefinition) definition);
     }
 
     @Override
@@ -37,13 +37,13 @@ public class PolicyReifier extends AbstractPolicyReifier<PolicyDefinition> {
         ObjectHelper.notNull(policy, "policy", definition);
 
         // before wrap
-        policy.beforeWrap(routeContext, definition);
+        policy.beforeWrap(route, definition);
 
         // create processor after the before wrap
         Processor childProcessor = this.createChildProcessor(true);
 
         // wrap
-        Processor target = policy.wrap(routeContext, childProcessor);
+        Processor target = policy.wrap(route, childProcessor);
 
         if (!(target instanceof Service)) {
             // wrap the target so it becomes a service and we can manage its
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
index b885cfa..ec310c4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
@@ -20,16 +20,16 @@ import org.apache.camel.AggregationStrategy;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.PollEnrichDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.PollEnricher;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
-import org.apache.camel.spi.RouteContext;
 
 public class PollEnrichReifier extends ProcessorReifier<PollEnrichDefinition> {
 
-    public PollEnrichReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (PollEnrichDefinition)definition);
+    public PollEnrichReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (PollEnrichDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
index 9ad3c5c..ad7cf24 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
@@ -18,18 +18,18 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.processor.DelegateAsyncProcessor;
 import org.apache.camel.support.processor.DelegateSyncProcessor;
 import org.apache.camel.util.ObjectHelper;
 
 public class ProcessReifier extends ProcessorReifier<ProcessDefinition> {
 
-    public ProcessReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (ProcessDefinition)definition);
+    public ProcessReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (ProcessDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 8012339..f41b21b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -30,6 +30,7 @@ import org.apache.camel.Channel;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.AggregateDefinition;
 import org.apache.camel.model.BeanDefinition;
 import org.apache.camel.model.CatchDefinition;
@@ -109,7 +110,6 @@ import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.ReifierStrategy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteIdAware;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -117,11 +117,11 @@ import org.slf4j.LoggerFactory;
 
 public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends AbstractReifier {
 
-    private static final Map<Class<?>, BiFunction<RouteContext, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> PROCESSORS;
+    private static final Map<Class<?>, BiFunction<Route, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> PROCESSORS;
     static {
         // NOTE: if adding a new class then update the initial capacity of the
         // HashMap
-        Map<Class<?>, BiFunction<RouteContext, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> map = new HashMap<>(65);
+        Map<Class<?>, BiFunction<Route, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> map = new HashMap<>(65);
         map.put(AggregateDefinition.class, AggregateReifier::new);
         map.put(BeanDefinition.class, BeanReifier::new);
         map.put(CatchDefinition.class, CatchReifier::new);
@@ -160,7 +160,6 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         map.put(RemovePropertyDefinition.class, RemovePropertyReifier::new);
         map.put(ResequenceDefinition.class, ResequenceReifier::new);
         map.put(RollbackDefinition.class, RollbackReifier::new);
-        map.put(RouteDefinition.class, RouteReifier::new);
         map.put(RoutingSlipDefinition.class, RoutingSlipReifier::new);
         map.put(SagaDefinition.class, SagaReifier::new);
         map.put(SamplingDefinition.class, SamplingReifier::new);
@@ -194,8 +193,8 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
 
     protected final T definition;
 
-    public ProcessorReifier(RouteContext routeContext, T definition) {
-        super(routeContext);
+    public ProcessorReifier(Route route, T definition) {
+        super(route);
         this.definition = definition;
     }
 
@@ -204,7 +203,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         this.definition = definition;
     }
 
-    public static void registerReifier(Class<?> processorClass, BiFunction<RouteContext, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>> creator) {
+    public static void registerReifier(Class<?> processorClass, BiFunction<Route, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>> creator) {
         PROCESSORS.put(processorClass, creator);
     }
 
@@ -212,10 +211,10 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         PROCESSORS.clear();
     }
 
-    public static ProcessorReifier<? extends ProcessorDefinition<?>> reifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        BiFunction<RouteContext, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>> reifier = PROCESSORS.get(definition.getClass());
+    public static ProcessorReifier<? extends ProcessorDefinition<?>> reifier(Route route, ProcessorDefinition<?> definition) {
+        BiFunction<Route, ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>> reifier = PROCESSORS.get(definition.getClass());
         if (reifier != null) {
-            return reifier.apply(routeContext, definition);
+            return reifier.apply(route, definition);
         }
         throw new IllegalStateException("Unsupported definition: " + definition);
     }
@@ -494,7 +493,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         Processor children = null;
         // at first use custom factory
         if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
-            children = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createChildProcessor(routeContext, definition, mandatory);
+            children = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createChildProcessor(route, definition, mandatory);
         }
         // fallback to default implementation if factory did not create the
         // child
@@ -515,19 +514,17 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
             return;
         }
 
-        if (!routeContext.isRouteAdded()) {
-            // are we routing to an endpoint interceptor, if so we should not
-            // add it as an event driven
-            // processor as we use the producer to trigger the interceptor
-            boolean endpointInterceptor = processor.getNextProcessor() instanceof InterceptEndpointProcessor;
+        // are we routing to an endpoint interceptor, if so we should not
+        // add it as an event driven
+        // processor as we use the producer to trigger the interceptor
+        boolean endpointInterceptor = processor.getNextProcessor() instanceof InterceptEndpointProcessor;
 
-            // only add regular processors as event driven
-            if (endpointInterceptor) {
-                log.debug("Endpoint interceptor should not be added as an event driven consumer route: {}", processor);
-            } else {
-                log.trace("Adding event driven processor: {}", processor);
-                routeContext.addEventDrivenProcessor(processor);
-            }
+        // only add regular processors as event driven
+        if (endpointInterceptor) {
+            log.debug("Endpoint interceptor should not be added as an event driven consumer route: {}", processor);
+        } else {
+            log.trace("Adding event driven processor: {}", processor);
+            route.getEventDrivenProcessors().add(processor);
         }
     }
 
@@ -555,9 +552,9 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         // add interceptor strategies to the channel must be in this order:
         // camel context, route context, local
         List<InterceptStrategy> interceptors = new ArrayList<>();
-        addInterceptStrategies(interceptors, camelContext.adapt(ExtendedCamelContext.class).getInterceptStrategies());
-        addInterceptStrategies(interceptors, routeContext.getInterceptStrategies());
-        addInterceptStrategies(interceptors, definition.getInterceptStrategies());
+        interceptors.addAll(camelContext.adapt(ExtendedCamelContext.class).getInterceptStrategies());
+        interceptors.addAll(route.getInterceptStrategies());
+        interceptors.addAll(definition.getInterceptStrategies());
 
         // force the creation of an id
         RouteDefinitionHelper.forceAssignIds(camelContext, definition);
@@ -592,7 +589,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
             routeScoped = ((OnCompletionDefinition)definition).isRouteScoped();
         }
         // initialize the channel
-        channel.initChannel(routeContext, definition, child, interceptors, processor, route, first, routeScoped);
+        channel.initChannel(this.route, definition, child, interceptors, processor, route, first, routeScoped);
 
         boolean wrap = false;
         // set the error handler, must be done after init as we can set the
@@ -678,15 +675,15 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
      * @throws Exception can be thrown if failed to create error handler builder
      */
     protected Processor wrapInErrorHandler(Processor output, boolean longLived) throws Exception {
-        ErrorHandlerFactory builder = routeContext.getErrorHandlerFactory();
+        ErrorHandlerFactory builder = route.getErrorHandlerFactory();
 
         // create error handler
-        Processor errorHandler = ErrorHandlerReifier.reifier(routeContext, builder).createErrorHandler(output);
+        Processor errorHandler = ErrorHandlerReifier.reifier(route, builder).createErrorHandler(output);
 
         if (longLived) {
             // invoke lifecycles so we can manage this error handler builder
             for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
-                strategy.onErrorHandlerAdd(routeContext, errorHandler, builder);
+                strategy.onErrorHandlerAdd(route, errorHandler, builder);
             }
         }
 
@@ -694,16 +691,6 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
     }
 
     /**
-     * Adds the given list of interceptors to the channel.
-     *
-     * @param interceptors the list to add strategies
-     * @param strategies list of strategies to add.
-     */
-    protected void addInterceptStrategies(List<InterceptStrategy> interceptors, List<InterceptStrategy> strategies) {
-        interceptors.addAll(strategies);
-    }
-
-    /**
      * Creates a new instance of some kind of composite processor which defaults
      * to using a {@link Pipeline} but derived classes could change the
      * behaviour
@@ -713,15 +700,11 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
     }
 
     protected Processor createOutputsProcessor(Collection<ProcessorDefinition<?>> outputs) throws Exception {
-        return createOutputsProcessorImpl(outputs);
-    }
-
-    protected Processor createOutputsProcessorImpl(Collection<ProcessorDefinition<?>> outputs) throws Exception {
         List<Processor> list = new ArrayList<>();
         for (ProcessorDefinition<?> output : outputs) {
 
             // allow any custom logic before we create the processor
-            reifier(routeContext, output).preCreateProcessor();
+            reifier(route, output).preCreateProcessor();
 
             Processor processor = createProcessor(output);
 
@@ -731,7 +714,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
                 ((IdAware)processor).setId(id);
             }
             if (processor instanceof RouteIdAware) {
-                ((RouteIdAware)processor).setRouteId(routeContext.getRouteId());
+                ((RouteIdAware)processor).setRouteId(route.getRouteId());
             }
 
             if (output instanceof Channel && processor == null) {
@@ -760,12 +743,12 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         Processor processor = null;
         // at first use custom factory
         if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
-            processor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(routeContext, output);
+            processor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route, output);
         }
         // fallback to default implementation if factory did not create the
         // processor
         if (processor == null) {
-            processor = reifier(routeContext, output).createProcessor();
+            processor = reifier(route, output).createProcessor();
         }
         return processor;
     }
@@ -782,7 +765,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
 
         // at first use custom factory
         if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
-            processor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(routeContext, definition);
+            processor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route, definition);
         }
         // fallback to default implementation if factory did not create the
         // processor
@@ -796,7 +779,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
             ((IdAware)processor).setId(id);
         }
         if (processor instanceof RouteIdAware) {
-            ((RouteIdAware)processor).setRouteId(routeContext.getRouteId());
+            ((RouteIdAware)processor).setRouteId(route.getRouteId());
         }
 
         if (processor == null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
index 9ad47d8..cdb6cb5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
@@ -24,6 +24,7 @@ import org.apache.camel.AggregationStrategy;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RecipientListDefinition;
 import org.apache.camel.processor.EvaluateExpressionProcessor;
@@ -31,12 +32,11 @@ import org.apache.camel.processor.RecipientList;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
-import org.apache.camel.spi.RouteContext;
 
 public class RecipientListReifier extends ProcessorReifier<RecipientListDefinition<?>> {
 
-    public RecipientListReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RecipientListDefinition<?>)definition);
+    public RecipientListReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (RecipientListDefinition<?>)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeaderReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeaderReifier.java
index 4104841..0f8678d 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeaderReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeaderReifier.java
@@ -17,16 +17,16 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RemoveHeaderDefinition;
 import org.apache.camel.processor.RemoveHeaderProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class RemoveHeaderReifier extends ProcessorReifier<RemoveHeaderDefinition> {
 
-    public RemoveHeaderReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RemoveHeaderDefinition) definition);
+    public RemoveHeaderReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (RemoveHeaderDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeadersReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeadersReifier.java
index f0e57a9..fef4d11 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeadersReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemoveHeadersReifier.java
@@ -19,16 +19,16 @@ package org.apache.camel.reifier;
 import java.util.stream.Stream;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RemoveHeadersDefinition;
 import org.apache.camel.processor.RemoveHeadersProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class RemoveHeadersReifier extends ProcessorReifier<RemoveHeadersDefinition> {
 
-    public RemoveHeadersReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RemoveHeadersDefinition) definition);
+    public RemoveHeadersReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (RemoveHeadersDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertiesReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertiesReifier.java
index b53c010..4b57788 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertiesReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertiesReifier.java
@@ -19,16 +19,16 @@ package org.apache.camel.reifier;
 import java.util.stream.Stream;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RemovePropertiesDefinition;
 import org.apache.camel.processor.RemovePropertiesProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class RemovePropertiesReifier extends ProcessorReifier<RemovePropertiesDefinition> {
 
-    public RemovePropertiesReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RemovePropertiesDefinition) definition);
+    public RemovePropertiesReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (RemovePropertiesDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertyReifier.java
index f7b4eea..4e51bd4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RemovePropertyReifier.java
@@ -17,16 +17,16 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RemovePropertyDefinition;
 import org.apache.camel.processor.RemovePropertyProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class RemovePropertyReifier extends ProcessorReifier<RemovePropertyDefinition> {
 
-    public RemovePropertyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RemovePropertyDefinition)definition);
+    public RemovePropertyReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (RemovePropertyDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
index 74d92d9..19a401b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
@@ -18,6 +18,7 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ResequenceDefinition;
 import org.apache.camel.model.config.BatchResequencerConfig;
@@ -28,13 +29,12 @@ import org.apache.camel.processor.Resequencer;
 import org.apache.camel.processor.StreamResequencer;
 import org.apache.camel.processor.resequencer.DefaultExchangeComparator;
 import org.apache.camel.processor.resequencer.ExpressionResultComparator;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
 
-    public ResequenceReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (ResequenceDefinition)definition);
+    public ResequenceReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (ResequenceDefinition)definition);
     }
 
     @Override
@@ -75,7 +75,7 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
 
         // and wrap in unit of work
         CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, processor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(route, camelContext));
 
         ObjectHelper.notNull(config, "config", this);
         ObjectHelper.notNull(expression, "expression", this);
@@ -107,7 +107,7 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
         Expression expression = createExpression(definition.getExpression());
 
         CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, processor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(route, camelContext));
 
         ObjectHelper.notNull(config, "config", this);
         ObjectHelper.notNull(expression, "expression", this);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RollbackReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RollbackReifier.java
index 7af8128f..2157ed9 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RollbackReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RollbackReifier.java
@@ -17,15 +17,15 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RollbackDefinition;
 import org.apache.camel.processor.RollbackProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class RollbackReifier extends ProcessorReifier<RollbackDefinition> {
 
-    public RollbackReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RollbackDefinition)definition);
+    public RollbackReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (RollbackDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
index c403cc1..9223e51 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -17,7 +17,9 @@
 package org.apache.camel.reifier;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.StringTokenizer;
 
 import org.apache.camel.CamelContext;
@@ -33,31 +35,26 @@ import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.AdviceWithTask;
 import org.apache.camel.builder.EndpointConsumerBuilder;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.model.Model;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.PropertyDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.ContractAdvice;
+import org.apache.camel.processor.Pipeline;
+import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 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.ManagementInterceptStrategy;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
-    public RouteReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RouteDefinition) definition);
-    }
-
-    public RouteReifier(CamelContext camelContext, ProcessorDefinition<?> definition) {
-        super(camelContext, (RouteDefinition) definition);
-    }
-
     /**
      * Advices this route with the route builder.
      * <p/>
@@ -90,7 +87,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
      * @throws Exception can be thrown from the route builder
      * @see AdviceWithRouteBuilder
      */
-    public static RouteDefinition adviceWith(RouteDefinition definition, CamelContext camelContext, RouteBuilder builder) throws Exception {
+    public static RouteDefinition adviceWith(RouteDefinition definition, CamelContext camelContext, AdviceWithRouteBuilder builder) throws Exception {
         ObjectHelper.notNull(definition, "RouteDefinition");
         ObjectHelper.notNull(camelContext, "CamelContext");
         ObjectHelper.notNull(builder, "RouteBuilder");
@@ -101,6 +98,15 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         return new RouteReifier(camelContext, definition).adviceWith(builder);
     }
 
+    private static final String[] reservedProperties = new String[] {
+            Route.ID_PROPERTY, Route.CUSTOM_ID_PROPERTY, Route.PARENT_PROPERTY,
+            Route.DESCRIPTION_PROPERTY, Route.GROUP_PROPERTY,
+            Route.REST_PROPERTY};
+
+    public RouteReifier(CamelContext camelContext, ProcessorDefinition<?> definition) {
+        super(camelContext, (RouteDefinition) definition);
+    }
+
     @Override
     public Processor createProcessor() throws Exception {
         throw new UnsupportedOperationException("Not implemented for RouteDefinition");
@@ -150,19 +156,17 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
      * @see AdviceWithRouteBuilder
      */
     @SuppressWarnings("deprecation")
-    public RouteDefinition adviceWith(RouteBuilder builder) throws Exception {
+    public RouteDefinition adviceWith(AdviceWithRouteBuilder builder) throws Exception {
         ObjectHelper.notNull(builder, "RouteBuilder");
+        Model model = camelContext.getExtension(Model.class);
+        ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
 
         log.debug("AdviceWith route before: {}", this);
 
         // inject this route into the advice route builder so it can access this route
         // and offer features to manipulate the route directly
-        boolean logRoutesAsXml = true;
-        if (builder instanceof AdviceWithRouteBuilder) {
-            AdviceWithRouteBuilder arb = (AdviceWithRouteBuilder)builder;
-            arb.setOriginalRoute(definition);
-            logRoutesAsXml = arb.isLogRouteAsXml();
-        }
+        boolean logRoutesAsXml = builder.isLogRouteAsXml();
+        builder.setOriginalRoute(definition);
 
         // configure and prepare the routes from the builder
         RoutesDefinition routes = builder.configureRoutes(camelContext);
@@ -180,14 +184,13 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         // context scoped error handler, in case no error handlers was
         // configured
         if (builder.getRouteCollection().getErrorHandlerFactory() != null
-            && camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory() != builder.getRouteCollection().getErrorHandlerFactory()) {
+            && ecc.getErrorHandlerFactory() != builder.getRouteCollection().getErrorHandlerFactory()) {
             throw new IllegalArgumentException("You can not advice with error handlers. Remove the error handlers from the route builder.");
         }
 
         String beforeAsXml = null;
         if (logRoutesAsXml && log.isInfoEnabled()) {
             try {
-                ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
                 beforeAsXml = ecc.getModelToXMLDumper().dumpModelAsXml(camelContext, definition);
             } catch (Throwable e) {
                 // ignore, it may be due jaxb is not on classpath etc
@@ -195,14 +198,12 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         }
 
         // stop and remove this existing route
-        camelContext.getExtension(Model.class).removeRouteDefinition(definition);
+        model.removeRouteDefinition(definition);
 
         // any advice with tasks we should execute first?
-        if (builder instanceof AdviceWithRouteBuilder) {
-            List<AdviceWithTask> tasks = ((AdviceWithRouteBuilder)builder).getAdviceWithTasks();
-            for (AdviceWithTask task : tasks) {
-                task.task();
-            }
+        List<AdviceWithTask> tasks = builder.getAdviceWithTasks();
+        for (AdviceWithTask task : tasks) {
+            task.task();
         }
 
         // now merge which also ensures that interceptors and the likes get
@@ -210,7 +211,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         RouteDefinition merged = routes.route(definition);
 
         // add the new merged route
-        camelContext.getExtension(Model.class).getRouteDefinitions().add(0, merged);
+        model.getRouteDefinitions().add(0, merged);
 
         // log the merged route at info level to make it easier to end users to
         // spot any mistakes they may have made
@@ -220,7 +221,6 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         if (beforeAsXml != null && logRoutesAsXml && log.isInfoEnabled()) {
             try {
-                ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
                 String afterAsXml = ecc.getModelToXMLDumper().dumpModelAsXml(camelContext, merged);
                 log.info("Adviced route before/after as XML:\n{}\n{}", beforeAsXml, afterAsXml);
             } catch (Throwable e) {
@@ -230,7 +230,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         // If the camel context is started then we start the route
         if (camelContext.isStarted()) {
-            camelContext.getExtension(Model.class).addRouteDefinition(merged);
+            model.addRouteDefinition(merged);
         }
         return merged;
     }
@@ -238,14 +238,35 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
     // Implementation methods
     // -------------------------------------------------------------------------
     protected Route doCreateRoute() throws Exception {
+        // resolve endpoint
+        Endpoint endpoint = definition.getInput().getEndpoint();
+        if (endpoint == null) {
+            EndpointConsumerBuilder def = definition.getInput().getEndpointConsumerBuilder();
+            if (def != null) {
+                endpoint = def.resolve(camelContext);
+            } else {
+                endpoint = resolveEndpoint(definition.getInput().getEndpointUri());
+            }
+        }
+
+        // create route
+        String id = definition.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        DefaultRoute route = new DefaultRoute(camelContext, definition, id, endpoint) {
+            @Override
+            public Processor createErrorHandler(Processor processor) throws Exception {
+                return ErrorHandlerReifier.reifier(this, getErrorHandlerFactory())
+                        .createErrorHandler(processor);
+            }
+        };
+
         // configure error handler
-        routeContext.setErrorHandlerFactory(definition.getErrorHandlerFactory());
+        route.setErrorHandlerFactory(definition.getErrorHandlerFactory());
 
         // configure tracing
         if (definition.getTrace() != null) {
             Boolean isTrace = parseBoolean(definition.getTrace());
             if (isTrace != null) {
-                routeContext.setTracing(isTrace);
+                route.setTracing(isTrace);
                 if (isTrace) {
                     log.debug("Tracing is enabled on route: {}", definition.getId());
                     // tracing is added in the DefaultChannel so we can enable
@@ -258,7 +279,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         if (definition.getMessageHistory() != null) {
             Boolean isMessageHistory = parseBoolean(definition.getMessageHistory());
             if (isMessageHistory != null) {
-                routeContext.setMessageHistory(isMessageHistory);
+                route.setMessageHistory(isMessageHistory);
                 if (isMessageHistory) {
                     log.debug("Message history is enabled on route: {}", definition.getId());
                 }
@@ -269,7 +290,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         if (definition.getLogMask() != null) {
             Boolean isLogMask = parseBoolean(definition.getLogMask());
             if (isLogMask != null) {
-                routeContext.setLogMask(isLogMask);
+                route.setLogMask(isLogMask);
                 if (isLogMask) {
                     log.debug("Security mask for Logging is enabled on route: {}", definition.getId());
                 }
@@ -280,7 +301,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         if (definition.getStreamCache() != null) {
             Boolean isStreamCache = parseBoolean(definition.getStreamCache());
             if (isStreamCache != null) {
-                routeContext.setStreamCaching(isStreamCache);
+                route.setStreamCaching(isStreamCache);
                 if (isStreamCache) {
                     log.debug("StreamCaching is enabled on route: {}", definition.getId());
                 }
@@ -291,7 +312,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         if (definition.getDelayer() != null) {
             Long delayer = parseLong(definition.getDelayer());
             if (delayer != null) {
-                routeContext.setDelayer(delayer);
+                route.setDelayer(delayer);
                 if (delayer > 0) {
                     log.debug("Delayer is enabled with: {} ms. on route: {}", delayer, definition.getId());
                 } else {
@@ -304,7 +325,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         if (definition.getRoutePolicies() != null && !definition.getRoutePolicies().isEmpty()) {
             for (RoutePolicy policy : definition.getRoutePolicies()) {
                 log.debug("RoutePolicy is enabled: {} on route: {}", policy, definition.getId());
-                routeContext.getRoutePolicyList().add(policy);
+                route.getRoutePolicyList().add(policy);
             }
         }
         if (definition.getRoutePolicyRef() != null) {
@@ -313,7 +334,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
                 String ref = policyTokens.nextToken().trim();
                 RoutePolicy policy = mandatoryLookup(ref, RoutePolicy.class);
                 log.debug("RoutePolicy is enabled: {} on route: {}", policy, definition.getId());
-                routeContext.getRoutePolicyList().add(policy);
+                route.getRoutePolicyList().add(policy);
             }
         }
         if (camelContext.getRoutePolicyFactories() != null) {
@@ -321,51 +342,33 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
                 RoutePolicy policy = factory.createRoutePolicy(camelContext, definition.getId(), definition);
                 if (policy != null) {
                     log.debug("RoutePolicy is enabled: {} on route: {}", policy, definition.getId());
-                    routeContext.getRoutePolicyList().add(policy);
+                    route.getRoutePolicyList().add(policy);
                 }
             }
         }
 
         // configure auto startup
         Boolean isAutoStartup = parseBoolean(definition.getAutoStartup());
-        if (isAutoStartup != null) {
-            log.debug("Using AutoStartup {} on route: {}", isAutoStartup, definition.getId());
-            routeContext.setAutoStartup(isAutoStartup);
-        }
 
         // configure startup order
-        if (definition.getStartupOrder() != null) {
-            routeContext.setStartupOrder(definition.getStartupOrder());
-        }
+        Integer startupOrder = definition.getStartupOrder();
 
         // configure shutdown
         if (definition.getShutdownRoute() != null) {
             log.debug("Using ShutdownRoute {} on route: {}", definition.getShutdownRoute(), definition.getId());
-            routeContext.setShutdownRoute(parse(ShutdownRoute.class, definition.getShutdownRoute()));
+            route.setShutdownRoute(parse(ShutdownRoute.class, definition.getShutdownRoute()));
         }
         if (definition.getShutdownRunningTask() != null) {
             log.debug("Using ShutdownRunningTask {} on route: {}", definition.getShutdownRunningTask(), definition.getId());
-            routeContext.setShutdownRunningTask(parse(ShutdownRunningTask.class, definition.getShutdownRunningTask()));
+            route.setShutdownRunningTask(parse(ShutdownRunningTask.class, definition.getShutdownRunningTask()));
         }
 
         // should inherit the intercept strategies we have defined
-        routeContext.setInterceptStrategies(definition.getInterceptStrategies());
-
-        // resolve endpoint
-        Endpoint endpoint = definition.getInput().getEndpoint();
-        if (endpoint == null) {
-            EndpointConsumerBuilder def = definition.getInput().getEndpointConsumerBuilder();
-            if (def != null) {
-                endpoint = def.resolve(camelContext);
-            } else {
-                endpoint = resolveEndpoint(definition.getInput().getEndpointUri());
-            }
-        }
-        routeContext.setEndpoint(endpoint);
+        route.getInterceptStrategies().addAll(definition.getInterceptStrategies());
 
         // notify route context created
         for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
-            strategy.onRouteContextCreate(routeContext);
+            strategy.onRouteContextCreate(route);
         }
 
         // validate route has output processors
@@ -379,15 +382,63 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         List<ProcessorDefinition<?>> list = new ArrayList<>(definition.getOutputs());
         for (ProcessorDefinition<?> output : list) {
             try {
-                ProcessorReifier.reifier(routeContext, output).addRoutes();
+                ProcessorReifier.reifier(route, output).addRoutes();
             } catch (Exception e) {
                 throw new FailedToCreateRouteException(definition.getId(), definition.toString(), output.toString(), e);
             }
         }
 
+        // now lets turn all of the event driven consumer processors into a single route
+        List<Processor> eventDrivenProcessors = route.getEventDrivenProcessors();
+        if (eventDrivenProcessors.isEmpty()) {
+            return null;
+        }
+
+        // Set route properties
+        Map<String, Object> routeProperties = computeRouteProperties();
+
+        // always use an pipeline even if there are only 1 processor as the pipeline
+        // handles preparing the response from the exchange in regard to IN vs OUT messages etc
+        Processor target = new Pipeline(camelContext, eventDrivenProcessors);
+
+        // 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(camelContext, target);
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(route, camelContext));
+
+        // and then optionally add route policy processor if a custom policy is set
+        List<RoutePolicy> routePolicyList = route.getRoutePolicyList();
+        if (routePolicyList != null && !routePolicyList.isEmpty()) {
+            for (RoutePolicy policy : routePolicyList) {
+                // add policy as service if we have not already done that (eg possible if two routes have the same service)
+                // this ensures Camel can control the lifecycle of the policy
+                if (!camelContext.hasService(policy)) {
+                    try {
+                        camelContext.addService(policy);
+                    } catch (Exception e) {
+                        throw RuntimeCamelException.wrapRuntimeCamelException(e);
+                    }
+                }
+            }
+
+            internal.addAdvice(new CamelInternalProcessor.RoutePolicyAdvice(routePolicyList));
+        }
+
+        // wrap in route inflight processor to track number of inflight exchanges for the route
+        internal.addAdvice(new CamelInternalProcessor.RouteInflightRepositoryAdvice(camelContext.getInflightRepository(), route.getRouteId()));
+
+        // wrap in JMX instrumentation processor that is used for performance stats
+        ManagementInterceptStrategy managementInterceptStrategy = route.getManagementInterceptStrategy();
+        if (managementInterceptStrategy != null) {
+            internal.addAdvice(CamelInternalProcessor.wrap(managementInterceptStrategy.createProcessor("route")));
+        }
+
+        // wrap in route lifecycle
+        internal.addAdvice(new CamelInternalProcessor.RouteLifecycleAdvice());
+
+        // add advices
         if (definition.getRestBindingDefinition() != null) {
             try {
-                routeContext.addAdvice(new RestBindingReifier(routeContext, definition.getRestBindingDefinition()).createRestBindingAdvice());
+                internal.addAdvice(new RestBindingReifier(route, definition.getRestBindingDefinition()).createRestBindingAdvice());
             } catch (Exception e) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
@@ -404,47 +455,74 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
                 contract.setOutputType(parseString(definition.getOutputType().getUrn()));
                 contract.setValidateOutput(parseBoolean(definition.getOutputType().getValidate(), false));
             }
-            routeContext.addAdvice(new ContractAdvice(contract));
+            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);
         }
 
-        // Set route properties
-        routeContext.addProperty(Route.ID_PROPERTY, definition.getId());
-        routeContext.addProperty(Route.CUSTOM_ID_PROPERTY, Boolean.toString(definition.hasCustomIdAssigned()));
-        routeContext.addProperty(Route.PARENT_PROPERTY, Integer.toHexString(definition.hashCode()));
-        routeContext.addProperty(Route.DESCRIPTION_PROPERTY, definition.getDescriptionText());
+        // and create the route that wraps all of this
+        route.setProcessor(internal);
+        route.getProperties().putAll(routeProperties);
+        route.setStartupOrder(startupOrder);
+        if (isAutoStartup != null) {
+            log.debug("Using AutoStartup {} on route: {}", isAutoStartup, definition.getId());
+            route.setAutoStartup(isAutoStartup);
+        }
+
+        // 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);
+        if (task != null) {
+            task.setRoute(route);
+        }
+        CamelInternalProcessor.RouteLifecycleAdvice task2 = internal.getAdvice(CamelInternalProcessor.RouteLifecycleAdvice.class);
+        if (task2 != null) {
+            task2.setRoute(route);
+        }
+
+        // invoke init on route policy
+        if (routePolicyList != null && !routePolicyList.isEmpty()) {
+            for (RoutePolicy policy : routePolicyList) {
+                policy.onInit(route);
+            }
+        }
+
+        route.initialized();
+
+        return route;
+    }
+
+    protected Map<String, Object> computeRouteProperties() {
+        Map<String, Object> routeProperties = new HashMap<>();
+        routeProperties.put(Route.ID_PROPERTY, definition.getId());
+        routeProperties.put(Route.CUSTOM_ID_PROPERTY, Boolean.toString(definition.hasCustomIdAssigned()));
+        routeProperties.put(Route.PARENT_PROPERTY, Integer.toHexString(definition.hashCode()));
+        routeProperties.put(Route.DESCRIPTION_PROPERTY, definition.getDescriptionText());
         if (definition.getGroup() != null) {
-            routeContext.addProperty(Route.GROUP_PROPERTY, definition.getGroup());
+            routeProperties.put(Route.GROUP_PROPERTY, definition.getGroup());
         }
         String rest = Boolean.toString(definition.isRest() != null && definition.isRest());
-        routeContext.addProperty(Route.REST_PROPERTY, rest);
+        routeProperties.put(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());
-
+                    final String key = parseString(prop.getKey());
+                    final String val = parseString(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);
+                    routeProperties.put(key, val);
                 } catch (Exception e) {
                     throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
             }
         }
-
-        return routeContext.commit();
+        return routeProperties;
     }
 
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java
index 611392d..c7b7027 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java
@@ -19,17 +19,17 @@ package org.apache.camel.reifier;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RoutingSlipDefinition;
 import org.apache.camel.processor.RoutingSlip;
-import org.apache.camel.spi.RouteContext;
 
 import static org.apache.camel.model.RoutingSlipDefinition.DEFAULT_DELIMITER;
 
 public class RoutingSlipReifier extends ExpressionReifier<RoutingSlipDefinition<?>> {
 
-    public RoutingSlipReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (RoutingSlipDefinition) definition);
+    public RoutingSlipReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (RoutingSlipDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
index 17f300d..fa89360 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
@@ -23,6 +23,7 @@ import java.util.TreeMap;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SagaActionUriDefinition;
@@ -33,13 +34,11 @@ import org.apache.camel.processor.saga.SagaProcessorBuilder;
 import org.apache.camel.processor.saga.SagaPropagation;
 import org.apache.camel.saga.CamelSagaService;
 import org.apache.camel.saga.CamelSagaStep;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 public class SagaReifier extends ProcessorReifier<SagaDefinition> {
 
-    public SagaReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SagaDefinition)definition);
+    public SagaReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SagaDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SamplingReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SamplingReifier.java
index 7951b25..75c93ae 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SamplingReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SamplingReifier.java
@@ -19,15 +19,15 @@ package org.apache.camel.reifier;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SamplingDefinition;
 import org.apache.camel.processor.SamplingThrottler;
-import org.apache.camel.spi.RouteContext;
 
 public class SamplingReifier extends ProcessorReifier<SamplingDefinition> {
 
-    public SamplingReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SamplingDefinition)definition);
+    public SamplingReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SamplingDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ScriptReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ScriptReifier.java
index e7f6568..e5475b3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ScriptReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ScriptReifier.java
@@ -18,15 +18,15 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ScriptDefinition;
 import org.apache.camel.processor.ScriptProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class ScriptReifier extends ExpressionReifier<ScriptDefinition> {
 
-    public ScriptReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (ScriptDefinition)definition);
+    public ScriptReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (ScriptDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
index 09a9ea5..2e1a945 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
@@ -19,16 +19,16 @@ package org.apache.camel.reifier;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SendDefinition;
 import org.apache.camel.processor.SendProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
 
 public class SendReifier extends ProcessorReifier<SendDefinition<?>> {
 
-    public SendReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SendDefinition) definition);
+    public SendReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SendDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ServiceCallReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ServiceCallReifier.java
index 84368e6..1f256e5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ServiceCallReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ServiceCallReifier.java
@@ -17,14 +17,14 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.cloud.ServiceCallDefinition;
-import org.apache.camel.spi.RouteContext;
 
 public class ServiceCallReifier extends ProcessorReifier<ServiceCallDefinition> {
 
-    public ServiceCallReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, ServiceCallDefinition.class.cast(definition));
+    public ServiceCallReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, ServiceCallDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetBodyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetBodyReifier.java
index 840bc37..3ace259 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetBodyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetBodyReifier.java
@@ -18,15 +18,15 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.processor.SetBodyProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class SetBodyReifier extends ExpressionReifier<SetBodyDefinition> {
 
-    public SetBodyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SetBodyDefinition)definition);
+    public SetBodyReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SetBodyDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java
index af54620..6bbb379 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java
@@ -18,15 +18,15 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetExchangePatternDefinition;
 import org.apache.camel.processor.ExchangePatternProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class SetExchangePatternReifier extends ProcessorReifier<SetExchangePatternDefinition> {
 
-    public SetExchangePatternReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SetExchangePatternDefinition)definition);
+    public SetExchangePatternReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SetExchangePatternDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetHeaderReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetHeaderReifier.java
index 4da7bcb..2628b5a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetHeaderReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetHeaderReifier.java
@@ -18,17 +18,17 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetHeaderDefinition;
 import org.apache.camel.processor.SetHeaderProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class SetHeaderReifier extends ExpressionReifier<SetHeaderDefinition> {
 
-    public SetHeaderReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SetHeaderDefinition)definition);
+    public SetHeaderReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SetHeaderDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetPropertyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetPropertyReifier.java
index a077bde..9dd6a01 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetPropertyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetPropertyReifier.java
@@ -18,17 +18,17 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetPropertyDefinition;
 import org.apache.camel.processor.SetPropertyProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class SetPropertyReifier extends ExpressionReifier<SetPropertyDefinition> {
 
-    public SetPropertyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SetPropertyDefinition)definition);
+    public SetPropertyReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SetPropertyDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
index dc3bc07..2a50a02 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
@@ -20,10 +20,10 @@ import java.util.Comparator;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SortDefinition;
 import org.apache.camel.processor.SortProcessor;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.ObjectHelper;
 
 import static org.apache.camel.builder.ExpressionBuilder.bodyExpression;
@@ -31,8 +31,8 @@ import static org.apache.camel.util.ObjectHelper.isNotEmpty;
 
 public class SortReifier<T, U extends SortDefinition<T>> extends ExpressionReifier<U> {
 
-    public SortReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (U) definition);
+    public SortReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (U) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
index 4c4e592..a34a2e8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
@@ -22,17 +22,17 @@ import org.apache.camel.AggregationStrategy;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SplitDefinition;
 import org.apache.camel.processor.Splitter;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
-import org.apache.camel.spi.RouteContext;
 
 public class SplitReifier extends ExpressionReifier<SplitDefinition> {
 
-    public SplitReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (SplitDefinition)definition);
+    public SplitReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (SplitDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java
index 40b2ebd..4b7dbd3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java
@@ -19,15 +19,15 @@ package org.apache.camel.reifier;
 import java.util.List;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.StepDefinition;
 import org.apache.camel.processor.StepProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class StepReifier extends ProcessorReifier<StepDefinition> {
 
-    public StepReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, StepDefinition.class.cast(definition));
+    public StepReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, StepDefinition.class.cast(definition));
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StopReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StopReifier.java
index 7e405dc..2e00eaf 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StopReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StopReifier.java
@@ -17,15 +17,15 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.StopDefinition;
 import org.apache.camel.processor.StopProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class StopReifier extends ProcessorReifier<StopDefinition> {
 
-    public StopReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (StopDefinition) definition);
+    public StopReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (StopDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java
index cd7282b..197f215 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java
@@ -20,19 +20,19 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.ThreadPoolProfileBuilder;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ThreadsDefinition;
 import org.apache.camel.processor.ThreadsProcessor;
 import org.apache.camel.spi.ExecutorServiceManager;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy;
 
 public class ThreadsReifier extends ProcessorReifier<ThreadsDefinition> {
 
-    public ThreadsReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (ThreadsDefinition) definition);
+    public ThreadsReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (ThreadsDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java
index 34c2ed0..9c9904f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrottleReifier.java
@@ -20,15 +20,15 @@ import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ThrottleDefinition;
 import org.apache.camel.processor.Throttler;
-import org.apache.camel.spi.RouteContext;
 
 public class ThrottleReifier extends ExpressionReifier<ThrottleDefinition> {
 
-    public ThrottleReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (ThrottleDefinition) definition);
+    public ThrottleReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (ThrottleDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
index efd6c35..f7959da 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
@@ -17,15 +17,15 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ThrowExceptionDefinition;
 import org.apache.camel.processor.ThrowExceptionProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class ThrowExceptionReifier extends ProcessorReifier<ThrowExceptionDefinition> {
 
-    public ThrowExceptionReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (ThrowExceptionDefinition) definition);
+    public ThrowExceptionReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (ThrowExceptionDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java
index a323fc3..3e016e3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java
@@ -23,20 +23,20 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.NoSuchLanguageException;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ToDynamicDefinition;
 import org.apache.camel.processor.SendDynamicProcessor;
 import org.apache.camel.spi.Language;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.Pair;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 
 public class ToDynamicReifier<T extends ToDynamicDefinition> extends ProcessorReifier<T> {
 
-    public ToDynamicReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (T) definition);
+    public ToDynamicReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (T) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
index 3750a8e..d8d7c68 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
@@ -18,17 +18,17 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.TransactedDefinition;
 import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
 
 public class TransactedReifier extends AbstractPolicyReifier<TransactedDefinition> {
 
-    public TransactedReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (TransactedDefinition) definition);
+    public TransactedReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (TransactedDefinition) definition);
     }
 
     public TransactedReifier(CamelContext camelContext, ProcessorDefinition<?> definition) {
@@ -41,13 +41,13 @@ public class TransactedReifier extends AbstractPolicyReifier<TransactedDefinitio
         org.apache.camel.util.ObjectHelper.notNull(policy, "policy", this);
 
         // before wrap
-        policy.beforeWrap(routeContext, definition);
+        policy.beforeWrap(route, definition);
 
         // create processor after the before wrap
         Processor childProcessor = this.createChildProcessor(true);
 
         // wrap
-        Processor target = policy.wrap(routeContext, childProcessor);
+        Processor target = policy.wrap(route, childProcessor);
 
         if (!(target instanceof Service)) {
             // wrap the target so it becomes a service and we can manage its
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransformReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransformReifier.java
index 0532fc0..4f7c4e1 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransformReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransformReifier.java
@@ -18,15 +18,15 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.TransformDefinition;
 import org.apache.camel.processor.TransformProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class TransformReifier extends ExpressionReifier<TransformDefinition> {
 
-    public TransformReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (TransformDefinition) definition);
+    public TransformReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (TransformDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TryReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TryReifier.java
index b201dd0..f4aa169 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TryReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TryReifier.java
@@ -20,17 +20,17 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.CatchDefinition;
 import org.apache.camel.model.FinallyDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.TryDefinition;
 import org.apache.camel.processor.TryProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class TryReifier extends ProcessorReifier<TryDefinition> {
 
-    public TryReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (TryDefinition) definition);
+    public TryReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (TryDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java
index 7b1d1d5..cb678ca 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java
@@ -17,17 +17,17 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.UnmarshalDefinition;
 import org.apache.camel.reifier.dataformat.DataFormatReifier;
 import org.apache.camel.spi.DataFormat;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.processor.UnmarshalProcessor;
 
 public class UnmarshalReifier extends ProcessorReifier<UnmarshalDefinition> {
 
-    public UnmarshalReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (UnmarshalDefinition) definition);
+    public UnmarshalReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (UnmarshalDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ValidateReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ValidateReifier.java
index 30fbeb3..ccf71ff 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ValidateReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ValidateReifier.java
@@ -18,15 +18,15 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ValidateDefinition;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.processor.PredicateValidatingProcessor;
 
 public class ValidateReifier extends ExpressionReifier<ValidateDefinition> {
 
-    public ValidateReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (ValidateDefinition) definition);
+    public ValidateReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (ValidateDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java
index 53009eb..1a1491f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenReifier.java
@@ -16,15 +16,15 @@
  */
 package org.apache.camel.reifier;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.WhenDefinition;
 import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class WhenReifier extends ExpressionReifier<WhenDefinition> {
 
-    public WhenReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (WhenDefinition) definition);
+    public WhenReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (WhenDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java
index d1facb2..3497013 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java
@@ -18,15 +18,15 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.WhenSkipSendToEndpointDefinition;
 import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class WhenSkipSendToEndpointReifier extends ExpressionReifier<WhenSkipSendToEndpointDefinition> {
 
-    public WhenSkipSendToEndpointReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (WhenSkipSendToEndpointDefinition) definition);
+    public WhenSkipSendToEndpointReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, (WhenSkipSendToEndpointDefinition) definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
index 063b543..b789a8b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ExecutorService;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetHeaderDefinition;
@@ -28,12 +29,11 @@ import org.apache.camel.model.WireTapDefinition;
 import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.SendDynamicProcessor;
 import org.apache.camel.processor.WireTapProcessor;
-import org.apache.camel.spi.RouteContext;
 
 public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
 
-    public WireTapReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, definition);
+    public WireTapReifier(Route route, ProcessorDefinition<?> definition) {
+        super(route, definition);
     }
 
     @Override
@@ -53,7 +53,7 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
 
         // and wrap in unit of work
         CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, target);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(route, camelContext));
 
         // is true by default
         boolean isCopy = parseBoolean(definition.getCopy(), true);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
index 716a9bf..3ce447a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
@@ -20,15 +20,15 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.processor.errorhandler.DeadLetterChannel;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.StringHelper;
 
 public class DeadLetterChannelReifier extends DefaultErrorHandlerReifier<DeadLetterChannelBuilder> {
 
-    public DeadLetterChannelReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        super(routeContext, definition);
+    public DeadLetterChannelReifier(Route route, ErrorHandlerFactory definition) {
+        super(route, definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
index 88a50ea..29f0a24 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
@@ -21,16 +21,16 @@ import java.util.concurrent.ScheduledExecutorService;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
 import org.apache.camel.processor.errorhandler.DefaultErrorHandler;
 import org.apache.camel.spi.ExecutorServiceManager;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.ThreadPoolProfile;
 
 public class DefaultErrorHandlerReifier<T extends DefaultErrorHandlerBuilder> extends ErrorHandlerReifier<T> {
 
-    public DefaultErrorHandlerReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        super(routeContext, (T)definition);
+    public DefaultErrorHandlerReifier(Route route, ErrorHandlerFactory definition) {
+        super(route, (T)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
index df793fb..33333b5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerRefReifier.java
@@ -18,27 +18,27 @@ package org.apache.camel.reifier.errorhandler;
 
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class ErrorHandlerRefReifier extends ErrorHandlerReifier<ErrorHandlerBuilderRef> {
 
-    public ErrorHandlerRefReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        super(routeContext, (ErrorHandlerBuilderRef)definition);
+    public ErrorHandlerRefReifier(Route route, ErrorHandlerFactory definition) {
+        super(route, (ErrorHandlerBuilderRef)definition);
     }
 
     @Override
     public Processor createErrorHandler(Processor processor) throws Exception {
-        ErrorHandlerFactory handler = lookupErrorHandler(routeContext);
-        return ErrorHandlerReifier.reifier(routeContext, handler).createErrorHandler(processor);
+        ErrorHandlerFactory handler = lookupErrorHandler(route);
+        return ErrorHandlerReifier.reifier(route, handler).createErrorHandler(processor);
     }
 
-    private ErrorHandlerFactory lookupErrorHandler(RouteContext routeContext) {
+    private ErrorHandlerFactory lookupErrorHandler(Route route) {
         ErrorHandlerFactory handler =
-                ErrorHandlerReifier.lookupErrorHandlerFactory(routeContext, definition.getRef());
+                ErrorHandlerReifier.lookupErrorHandlerFactory(route, definition.getRef());
         ObjectHelper.notNull(handler, "error handler '" + definition.getRef() + "'");
-        routeContext.addErrorHandlerFactoryReference(definition, handler);
+        route.addErrorHandlerFactoryReference(definition, handler);
         return handler;
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
index f58379c..6aa50e9 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
@@ -29,6 +29,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
@@ -48,16 +49,15 @@ import org.apache.camel.processor.errorhandler.ExceptionPolicyKey;
 import org.apache.camel.processor.errorhandler.RedeliveryErrorHandler;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
 import org.apache.camel.reifier.AbstractReifier;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport> extends AbstractReifier {
 
     public static final String DEFAULT_ERROR_HANDLER_BUILDER = "CamelDefaultErrorHandlerBuilder";
-    private static final Map<Class<?>, BiFunction<RouteContext, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>>> ERROR_HANDLERS;
+    private static final Map<Class<?>, BiFunction<Route, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>>> ERROR_HANDLERS;
     static {
-        Map<Class<?>, BiFunction<RouteContext, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>>> map = new HashMap<>();
+        Map<Class<?>, BiFunction<Route, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>>> map = new HashMap<>();
         map.put(DeadLetterChannelBuilder.class, DeadLetterChannelReifier::new);
         map.put(DefaultErrorHandlerBuilder.class, DefaultErrorHandlerReifier::new);
         map.put(ErrorHandlerBuilderRef.class, ErrorHandlerRefReifier::new);
@@ -70,19 +70,19 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
     /**
      * Utility classes should not have a public constructor.
      */
-    protected ErrorHandlerReifier(RouteContext routeContext, T definition) {
-        super(routeContext);
+    protected ErrorHandlerReifier(Route route, T definition) {
+        super(route);
         this.definition = definition;
     }
 
-    public static void registerReifier(Class<?> errorHandlerClass, BiFunction<RouteContext, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>> creator) {
+    public static void registerReifier(Class<?> errorHandlerClass, BiFunction<Route, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>> creator) {
         ERROR_HANDLERS.put(errorHandlerClass, creator);
     }
 
-    public static ErrorHandlerReifier<? extends ErrorHandlerFactory> reifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        BiFunction<RouteContext, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>> reifier = ERROR_HANDLERS.get(definition.getClass());
+    public static ErrorHandlerReifier<? extends ErrorHandlerFactory> reifier(Route route, ErrorHandlerFactory definition) {
+        BiFunction<Route, ErrorHandlerFactory, ErrorHandlerReifier<? extends ErrorHandlerFactory>> reifier = ERROR_HANDLERS.get(definition.getClass());
         if (reifier != null) {
-            return reifier.apply(routeContext, definition);
+            return reifier.apply(route, definition);
         }
         throw new IllegalStateException("Unsupported definition: " + definition);
     }
@@ -158,26 +158,26 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
     /**
      * Lookup the error handler by the given ref
      *
-     * @param routeContext the route context
+     * @param route the route context
      * @param ref reference id for the error handler
      * @return the error handler
      */
-    public static ErrorHandlerFactory lookupErrorHandlerFactory(RouteContext routeContext, String ref) {
-        return lookupErrorHandlerFactory(routeContext, ref, true);
+    public static ErrorHandlerFactory lookupErrorHandlerFactory(Route route, String ref) {
+        return lookupErrorHandlerFactory(route, ref, true);
     }
 
     /**
      * Lookup the error handler by the given ref
      *
-     * @param routeContext the route context
+     * @param route the route
      * @param ref reference id for the error handler
      * @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 lookupErrorHandlerFactory(RouteContext routeContext, String ref, boolean mandatory) {
+    public static ErrorHandlerFactory lookupErrorHandlerFactory(Route route, String ref, boolean mandatory) {
         ErrorHandlerFactory answer;
-        CamelContext camelContext = routeContext.getCamelContext();
+        CamelContext camelContext = route.getCamelContext();
 
         // if the ref is the default then we do not have any explicit error
         // handler configured
@@ -188,8 +188,8 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
         if (!isErrorHandlerFactoryConfigured(ref)) {
             // see if there has been configured a error handler builder on the route
             // TODO: Avoid using RouteDefinition - tests should pass: https://issues.apache.org/jira/browse/CAMEL-13984
-            RouteDefinition route = (RouteDefinition)routeContext.getRoute();
-            answer = route.getErrorHandlerFactory();
+            RouteDefinition def = (RouteDefinition) route.getRoute();
+            answer = def.getErrorHandlerFactory();
             // check if its also a ref with no error handler configuration like me
             if (answer instanceof ErrorHandlerBuilderRef) {
                 ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef)answer;
@@ -211,7 +211,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
                 // shared
                 // this is needed by camel-spring when none error handler has
                 // been explicit configured
-                routeContext.addErrorHandlerFactoryReference(other, answer);
+                route.addErrorHandlerFactoryReference(other, answer);
             }
         } else {
             // use specific configured error handler
@@ -257,7 +257,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
 
     public void addExceptionPolicy(ErrorHandlerSupport handlerSupport, OnExceptionDefinition exceptionType) {
         // add error handler as child service so they get lifecycle handled
-        Processor errorHandler = routeContext.getOnException(exceptionType.getId());
+        Processor errorHandler = route.getOnException(exceptionType.getId());
         handlerSupport.addErrorHandler(errorHandler);
 
         // load exception classes
@@ -309,7 +309,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
         if (handler instanceof ErrorHandlerSupport) {
             ErrorHandlerSupport handlerSupport = (ErrorHandlerSupport)handler;
 
-            for (NamedNode exception : routeContext.getErrorHandlers(definition)) {
+            for (NamedNode exception : route.getErrorHandlers(definition)) {
                 addExceptionPolicy(handlerSupport, (OnExceptionDefinition) exception);
             }
         }
@@ -317,7 +317,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
             boolean original = ((RedeliveryErrorHandler)handler).isUseOriginalMessagePolicy() || ((RedeliveryErrorHandler)handler).isUseOriginalMessagePolicy();
             if (original) {
                 // ensure allow original is turned on
-                routeContext.setAllowUseOriginalMessage(true);
+                route.setAllowUseOriginalMessage(true);
             }
         }
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/NoErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/NoErrorHandlerReifier.java
index d6c6401..c2b21f9 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/NoErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/NoErrorHandlerReifier.java
@@ -21,14 +21,14 @@ import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedExchange;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.NoErrorHandlerBuilder;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.processor.DelegateAsyncProcessor;
 
 public class NoErrorHandlerReifier extends ErrorHandlerReifier<NoErrorHandlerBuilder> {
 
-    public NoErrorHandlerReifier(RouteContext routeContext, ErrorHandlerFactory definition) {
-        super(routeContext, (NoErrorHandlerBuilder)definition);
+    public NoErrorHandlerReifier(Route route, ErrorHandlerFactory definition) {
+        super(route, (NoErrorHandlerBuilder)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
index fa13084..834a06f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.reifier.loadbalancer;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.StringHelper;
 
 public class CustomLoadBalancerReifier extends LoadBalancerReifier<CustomLoadBalancerDefinition> {
 
-    public CustomLoadBalancerReifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        super(routeContext, (CustomLoadBalancerDefinition)definition);
+    public CustomLoadBalancerReifier(Route route, LoadBalancerDefinition definition) {
+        super(route, (CustomLoadBalancerDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/FailoverLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/FailoverLoadBalancerReifier.java
index e861200..5b87680 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/FailoverLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/FailoverLoadBalancerReifier.java
@@ -19,17 +19,17 @@ package org.apache.camel.reifier.loadbalancer;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.FailOverLoadBalancer;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 public class FailoverLoadBalancerReifier extends LoadBalancerReifier<FailoverLoadBalancerDefinition> {
 
-    public FailoverLoadBalancerReifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        super(routeContext, (FailoverLoadBalancerDefinition)definition);
+    public FailoverLoadBalancerReifier(Route route, LoadBalancerDefinition definition) {
+        super(route, (FailoverLoadBalancerDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
index cbec76a..fe049c0 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
@@ -20,6 +20,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.function.BiFunction;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition;
@@ -31,14 +32,13 @@ import org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.reifier.AbstractReifier;
 import org.apache.camel.spi.ReifierStrategy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.StringHelper;
 
 public class LoadBalancerReifier<T extends LoadBalancerDefinition> extends AbstractReifier {
 
-    private static final Map<Class<?>, BiFunction<RouteContext, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>>> LOAD_BALANCERS;
+    private static final Map<Class<?>, BiFunction<Route, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>>> LOAD_BALANCERS;
     static {
-        Map<Class<?>, BiFunction<RouteContext, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>>> map = new HashMap<>();
+        Map<Class<?>, BiFunction<Route, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>>> map = new HashMap<>();
         map.put(LoadBalancerDefinition.class, LoadBalancerReifier::new);
         map.put(CustomLoadBalancerDefinition.class, CustomLoadBalancerReifier::new);
         map.put(FailoverLoadBalancerDefinition.class, FailoverLoadBalancerReifier::new);
@@ -53,15 +53,15 @@ public class LoadBalancerReifier<T extends LoadBalancerDefinition> extends Abstr
 
     protected final T definition;
 
-    public LoadBalancerReifier(RouteContext routeContext, T definition) {
-        super(routeContext);
+    public LoadBalancerReifier(Route route, T definition) {
+        super(route);
         this.definition = definition;
     }
 
-    public static LoadBalancerReifier<? extends LoadBalancerDefinition> reifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        BiFunction<RouteContext, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>> reifier = LOAD_BALANCERS.get(definition.getClass());
+    public static LoadBalancerReifier<? extends LoadBalancerDefinition> reifier(Route route, LoadBalancerDefinition definition) {
+        BiFunction<Route, LoadBalancerDefinition, LoadBalancerReifier<? extends LoadBalancerDefinition>> reifier = LOAD_BALANCERS.get(definition.getClass());
         if (reifier != null) {
-            return reifier.apply(routeContext, definition);
+            return reifier.apply(route, definition);
         }
         throw new IllegalStateException("Unsupported definition: " + definition);
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RandomLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RandomLoadBalancerReifier.java
index 4e9922a..23cc0ab 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RandomLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RandomLoadBalancerReifier.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.reifier.loadbalancer;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.RandomLoadBalancer;
-import org.apache.camel.spi.RouteContext;
 
 public class RandomLoadBalancerReifier extends LoadBalancerReifier<RandomLoadBalancerDefinition> {
 
-    public RandomLoadBalancerReifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        super(routeContext, (RandomLoadBalancerDefinition)definition);
+    public RandomLoadBalancerReifier(Route route, LoadBalancerDefinition definition) {
+        super(route, (RandomLoadBalancerDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RoundRobinLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RoundRobinLoadBalancerReifier.java
index d5244a3..acbac02 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RoundRobinLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/RoundRobinLoadBalancerReifier.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.reifier.loadbalancer;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer;
-import org.apache.camel.spi.RouteContext;
 
 public class RoundRobinLoadBalancerReifier extends LoadBalancerReifier<RoundRobinLoadBalancerDefinition> {
 
-    public RoundRobinLoadBalancerReifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        super(routeContext, (RoundRobinLoadBalancerDefinition)definition);
+    public RoundRobinLoadBalancerReifier(Route route, LoadBalancerDefinition definition) {
+        super(route, (RoundRobinLoadBalancerDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/StickyLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/StickyLoadBalancerReifier.java
index f908307..2e41fca 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/StickyLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/StickyLoadBalancerReifier.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.reifier.loadbalancer;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.StickyLoadBalancer;
-import org.apache.camel.spi.RouteContext;
 
 public class StickyLoadBalancerReifier extends LoadBalancerReifier<StickyLoadBalancerDefinition> {
 
-    public StickyLoadBalancerReifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        super(routeContext, (StickyLoadBalancerDefinition)definition);
+    public StickyLoadBalancerReifier(Route route, LoadBalancerDefinition definition) {
+        super(route, (StickyLoadBalancerDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/TopicLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/TopicLoadBalancerReifier.java
index 4e749c6..21aa9cb 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/TopicLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/TopicLoadBalancerReifier.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.reifier.loadbalancer;
 
+import org.apache.camel.Route;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.TopicLoadBalancer;
-import org.apache.camel.spi.RouteContext;
 
 public class TopicLoadBalancerReifier extends LoadBalancerReifier<TopicLoadBalancerDefinition> {
 
-    public TopicLoadBalancerReifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        super(routeContext, (TopicLoadBalancerDefinition)definition);
+    public TopicLoadBalancerReifier(Route route, LoadBalancerDefinition definition) {
+        super(route, (TopicLoadBalancerDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/WeightedLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/WeightedLoadBalancerReifier.java
index 03ea26f..3c6a2b8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/WeightedLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/WeightedLoadBalancerReifier.java
@@ -19,6 +19,7 @@ package org.apache.camel.reifier.loadbalancer;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition;
@@ -26,12 +27,11 @@ import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.WeightedLoadBalancer;
 import org.apache.camel.processor.loadbalancer.WeightedRandomLoadBalancer;
 import org.apache.camel.processor.loadbalancer.WeightedRoundRobinLoadBalancer;
-import org.apache.camel.spi.RouteContext;
 
 public class WeightedLoadBalancerReifier extends LoadBalancerReifier<WeightedLoadBalancerDefinition> {
 
-    public WeightedLoadBalancerReifier(RouteContext routeContext, LoadBalancerDefinition definition) {
-        super(routeContext, (WeightedLoadBalancerDefinition)definition);
+    public WeightedLoadBalancerReifier(Route route, LoadBalancerDefinition definition) {
+        super(route, (WeightedLoadBalancerDefinition)definition);
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
index 7c00ba8..af2b124 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
@@ -22,21 +22,21 @@ import java.util.Map;
 import javax.xml.bind.JAXBContext;
 
 import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.Route;
 import org.apache.camel.model.rest.RestBindingDefinition;
 import org.apache.camel.model.rest.RestBindingMode;
 import org.apache.camel.processor.RestBindingAdvice;
 import org.apache.camel.reifier.AbstractReifier;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.RestConfiguration;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.PropertyBindingSupport;
 
 public class RestBindingReifier extends AbstractReifier {
 
     private final RestBindingDefinition definition;
 
-    public RestBindingReifier(RouteContext routeContext, RestBindingDefinition definition) {
-        super(routeContext);
+    public RestBindingReifier(Route route, RestBindingDefinition definition) {
+        super(route);
         this.definition = definition;
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
index 43f4849..7c7a1bc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.processor.errorhandler.DeadLetterChannel;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
@@ -80,7 +80,7 @@ public class ContextErrorHandlerTest extends ContextTestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "seda://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Processor processor = consumerRoute.getProcessor();
 
             Channel channel = unwrapChannel(processor);
@@ -104,7 +104,7 @@ public class ContextErrorHandlerTest extends ContextTestSupport {
         assertEquals("Number routes created" + list, 2, list.size());
         for (Route route : list) {
 
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Processor processor = consumerRoute.getProcessor();
 
             Channel channel = unwrapChannel(processor);
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java
index 100af12..05b793f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.TestSupport;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.FilterProcessor;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.processor.errorhandler.DeadLetterChannel;
@@ -67,7 +67,7 @@ public class ErrorHandlerTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "seda://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumerRoute.getProcessor());
 
             assertIsInstanceOf(DeadLetterChannel.class, channel.getErrorHandler());
@@ -121,7 +121,7 @@ public class ErrorHandlerTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "seda://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumerRoute.getProcessor());
 
             assertIsInstanceOf(SendProcessor.class, channel.getNextProcessor());
@@ -150,7 +150,7 @@ public class ErrorHandlerTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "seda://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Processor processor = consumerRoute.getProcessor();
             Channel channel = unwrapChannel(processor);
 
@@ -178,7 +178,7 @@ public class ErrorHandlerTest extends TestSupport {
         for (Route route : routes) {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "seda://a", key.getEndpointUri());
-            EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumerRoute.getProcessor());
 
             assertIsInstanceOf(DeadLetterChannel.class, channel.getErrorHandler());
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
index 5574d48..1df4d4d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
@@ -31,7 +31,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.Route;
 import org.apache.camel.TestSupport;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.ChoiceProcessor;
 import org.apache.camel.processor.EvaluateExpressionProcessor;
 import org.apache.camel.processor.FilterProcessor;
@@ -82,7 +82,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumer.getProcessor());
 
             SendProcessor sendProcessor = assertIsInstanceOf(SendProcessor.class, channel.getNextProcessor());
@@ -114,7 +114,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumer.getProcessor());
 
             FilterProcessor filterProcessor = assertIsInstanceOf(FilterProcessor.class, channel.getNextProcessor());
@@ -147,7 +147,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumer.getProcessor());
 
             ChoiceProcessor choiceProcessor = assertIsInstanceOf(ChoiceProcessor.class, channel.getNextProcessor());
@@ -244,7 +244,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumer.getProcessor());
 
             MulticastProcessor multicastProcessor = assertIsInstanceOf(MulticastProcessor.class, channel.getNextProcessor());
@@ -284,7 +284,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
 
             Pipeline line = assertIsInstanceOf(Pipeline.class, unwrap(consumer.getProcessor()));
             assertEquals(3, line.next().size());
@@ -356,7 +356,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumer.getProcessor());
 
             Pipeline line = assertIsInstanceOf(Pipeline.class, channel.getNextProcessor());
@@ -398,7 +398,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumer.getProcessor());
             assertIsInstanceOf(Splitter.class, channel.getNextProcessor());
         }
@@ -429,7 +429,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
             Channel channel = unwrapChannel(consumer.getProcessor());
 
             IdempotentConsumer idempotentConsumer = assertIsInstanceOf(IdempotentConsumer.class, channel.getNextProcessor());
@@ -466,7 +466,7 @@ public class RouteBuilderTest extends TestSupport {
             Endpoint key = route.getEndpoint();
             assertEquals("From endpoint", "direct://a", key.getEndpointUri());
 
-            EventDrivenConsumerRoute consumer = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+            DefaultRoute consumer = assertIsInstanceOf(DefaultRoute.class, route);
 
             Pipeline line = assertIsInstanceOf(Pipeline.class, unwrap(consumer.getProcessor()));
             Iterator<Processor> it = line.next().iterator();
@@ -504,7 +504,7 @@ public class RouteBuilderTest extends TestSupport {
      * lets unwrap that and return the actual processor
      */
     protected Processor getProcessorWithoutErrorHandler(Route route) {
-        EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+        DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
         Processor processor = unwrap(consumerRoute.getProcessor());
         return unwrapErrorHandler(processor);
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
index f661ef2..05f22ba 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class FromRestGetPolicyTest extends ContextTestSupport {
@@ -60,12 +60,12 @@ public class FromRestGetPolicyTest extends ContextTestSupport {
     private class MyDummyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // noop
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, Processor processor) {
+        public Processor wrap(Route route, Processor processor) {
             return processor;
         }
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java b/core/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java
index 67c3986..4ecd81c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java
@@ -26,10 +26,9 @@ import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
-import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.VetoCamelContextStartException;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.LifecycleStrategySupport;
 
 public class DummyLifecycleStrategy extends LifecycleStrategySupport {
@@ -67,37 +66,37 @@ public class DummyLifecycleStrategy extends LifecycleStrategySupport {
     }
 
     @Override
-    public void onServiceAdd(CamelContext context, Service service, Route route) {
+    public void onServiceAdd(CamelContext context, Service service, org.apache.camel.Route route) {
         events.add("onServiceAdd");
     }
 
     @Override
-    public void onServiceRemove(CamelContext context, Service service, Route route) {
+    public void onServiceRemove(CamelContext context, Service service, org.apache.camel.Route route) {
         events.add("onServiceRemove");
     }
 
     @Override
-    public void onRoutesAdd(Collection<Route> routes) {
+    public void onRoutesAdd(Collection<org.apache.camel.Route> routes) {
         events.add("onRoutesAdd");
     }
 
     @Override
-    public void onRoutesRemove(Collection<Route> routes) {
+    public void onRoutesRemove(Collection<org.apache.camel.Route> routes) {
         events.add("onRoutesRemove");
     }
 
     @Override
-    public void onRouteContextCreate(RouteContext routeContext) {
+    public void onRouteContextCreate(Route route) {
         events.add("onRouteContextCreate");
     }
 
     @Override
-    public void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
+    public void onErrorHandlerAdd(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
         events.add("onErrorHandlerAdd");
     }
 
     @Override
-    public void onErrorHandlerRemove(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
+    public void onErrorHandlerRemove(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
         events.add("onErrorHandlerRemove");
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyAutoStartupCancelledOnInitTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyAutoStartupCancelledOnInitTest.java
index bacd9e2..dcafa33 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyAutoStartupCancelledOnInitTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyAutoStartupCancelledOnInitTest.java
@@ -30,7 +30,7 @@ public class RoutePolicyAutoStartupCancelledOnInitTest extends ContextTestSuppor
     private RoutePolicy policy = new RoutePolicySupport() {
         @Override
         public void onInit(Route route) {
-            route.getRouteContext().setAutoStartup(false);
+            route.setAutoStartup(false);
         }
     };
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java
index ad78dfd..e4a9953 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.reifier.RouteReifier;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class AdviceWithPolicyTest extends ContextTestSupport {
@@ -62,12 +62,12 @@ public class AdviceWithPolicyTest extends ContextTestSupport {
     private static final class MyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // noop
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, Processor processor) {
+        public Processor wrap(Route route, Processor processor) {
             return processor;
         }
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java
index a830f7c..fa16993 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.reifier.RouteReifier;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class AdviceWithTransactedTest extends ContextTestSupport {
@@ -60,12 +60,12 @@ public class AdviceWithTransactedTest extends ContextTestSupport {
     private static final class MyDummyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // noop
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, Processor processor) {
+        public Processor wrap(Route route, Processor processor) {
             return processor;
         }
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java
index 4ce6d43..473f419 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 /**
@@ -58,12 +58,12 @@ public class TransactedPropertyPlaceholderIssueTest extends ContextTestSupport {
     private static final class MyDummyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // noop
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, Processor processor) {
+        public Processor wrap(Route route, Processor processor) {
             return processor;
         }
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
index a4e227e..3e00dff 100644
--- a/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
@@ -25,7 +25,7 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class LoadRouteFromXmlWithPolicyTest extends ContextTestSupport {
@@ -83,12 +83,12 @@ public class LoadRouteFromXmlWithPolicyTest extends ContextTestSupport {
         }
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // no need to modify the route
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, final Processor processor) {
+        public Processor wrap(Route route, final Processor processor) {
             return new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     invoked++;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java
index f19ad47..f537978 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java
@@ -29,7 +29,7 @@ import org.apache.camel.model.SplitDefinition;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.spi.ProcessorFactory;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class CustomProcessorFactoryTest extends ContextTestSupport {
@@ -82,12 +82,12 @@ public class CustomProcessorFactoryTest extends ContextTestSupport {
     public static class MyFactory implements ProcessorFactory {
 
         @Override
-        public Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception {
+        public Processor createChildProcessor(Route route, NamedNode definition, boolean mandatory) throws Exception {
             return null;
         }
 
         @Override
-        public Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception {
+        public Processor createProcessor(Route route, NamedNode definition) throws Exception {
             if (definition instanceof SplitDefinition) {
                 // add additional output to the splitter
                 SplitDefinition split = (SplitDefinition)definition;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerTest.java
index ba52941..ad5c048 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.errorhandler.DefaultErrorHandler;
 import org.junit.Test;
 
@@ -36,7 +36,7 @@ public class DefaultErrorHandlerTest extends ContextTestSupport {
     @Test
     public void testRoute() {
         Route route = context.getRoutes().get(0);
-        EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+        DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
 
         Processor processor = unwrap(consumerRoute.getProcessor());
         Pipeline pipeline = assertIsInstanceOf(Pipeline.class, processor);
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
index b7ff263..cf914ee 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
@@ -26,7 +26,7 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class DefinitionPolicyPerProcessorTest extends ContextTestSupport {
@@ -80,13 +80,13 @@ public class DefinitionPolicyPerProcessorTest extends ContextTestSupport {
         }
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             SetBodyDefinition bodyDef = (SetBodyDefinition)((ProcessorDefinition<?>)definition).getOutputs().get(0);
             bodyDef.setExpression(new ConstantExpression("body was altered"));
         }
 
         @Override
-        public Processor wrap(final RouteContext routeContext, final Processor processor) {
+        public Processor wrap(final Route route, final Processor processor) {
             return new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     invoked++;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
index 3ee39f4..9669ae9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class PolicyPerProcessorTest extends ContextTestSupport {
@@ -88,12 +88,12 @@ public class PolicyPerProcessorTest extends ContextTestSupport {
         }
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // no need to modify the route
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, final Processor processor) {
+        public Processor wrap(Route route, final Processor processor) {
             return new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     invoked++;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
index 55c646a..2979e8e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class PolicyPerRouteTest extends ContextTestSupport {
@@ -81,12 +81,12 @@ public class PolicyPerRouteTest extends ContextTestSupport {
         }
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // no need to modify the route
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, final Processor processor) {
+        public Processor wrap(Route route, final Processor processor) {
             return new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     invoked++;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListContextScopedOnExceptionIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListContextScopedOnExceptionIssueTest.java
index dec286c..eec7885 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListContextScopedOnExceptionIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListContextScopedOnExceptionIssueTest.java
@@ -38,7 +38,7 @@ public class RecipientListContextScopedOnExceptionIssueTest extends ContextTestS
                 onException(Exception.class).handled(true).process(new Processor() {
                     @Override
                     public void process(Exchange exchange) throws Exception {
-                        String routeId = exchange.getUnitOfWork().getRouteContext().getRouteId();
+                        String routeId = exchange.getUnitOfWork().getRoute().getRouteId();
                         assertEquals("fail", routeId);
                     }
 
@@ -91,7 +91,7 @@ public class RecipientListContextScopedOnExceptionIssueTest extends ContextTestS
                 onException(Exception.class).handled(true).process(new Processor() {
                     @Override
                     public void process(Exchange exchange) throws Exception {
-                        String routeId = exchange.getUnitOfWork().getRouteContext().getRouteId();
+                        String routeId = exchange.getUnitOfWork().getRoute().getRouteId();
                         assertEquals("fail", routeId);
                     }
                 }).to("mock:error");
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
index 1323d07..ae7fef9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.channel.DefaultChannel;
 import org.apache.camel.processor.errorhandler.DefaultErrorHandler;
 import org.junit.After;
@@ -82,7 +82,7 @@ public class ResequencerTest extends ContextTestSupport {
         assertEquals("Number of routes created: " + list, 1, list.size());
 
         Route route = list.get(0);
-        EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+        DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
 
         DefaultChannel channel = assertIsInstanceOf(DefaultChannel.class, unwrapChannel(consumerRoute.getProcessor()));
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RoutingSlipContextScopedOnExceptionIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RoutingSlipContextScopedOnExceptionIssueTest.java
index acf34fe..4bfebd7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RoutingSlipContextScopedOnExceptionIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RoutingSlipContextScopedOnExceptionIssueTest.java
@@ -38,7 +38,7 @@ public class RoutingSlipContextScopedOnExceptionIssueTest extends ContextTestSup
                 onException(Exception.class).handled(true).process(new Processor() {
                     @Override
                     public void process(Exchange exchange) throws Exception {
-                        String routeId = exchange.getUnitOfWork().getRouteContext().getRouteId();
+                        String routeId = exchange.getUnitOfWork().getRoute().getRouteId();
                         assertEquals("fail", routeId);
                     }
                 }).to("mock:error");
@@ -82,7 +82,7 @@ public class RoutingSlipContextScopedOnExceptionIssueTest extends ContextTestSup
                 onException(Exception.class).handled(true).process(new Processor() {
                     @Override
                     public void process(Exchange exchange) throws Exception {
-                        String routeId = exchange.getUnitOfWork().getRouteContext().getRouteId();
+                        String routeId = exchange.getUnitOfWork().getRoute().getRouteId();
                         assertEquals("fail", routeId);
                     }
                 }).to("mock:error");
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTwoRoutesTest.java
index 63b1efb..8deadd5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTwoRoutesTest.java
@@ -60,7 +60,7 @@ public class SimpleMockTwoRoutesTest extends ContextTestSupport {
                         .process(new Processor() {
                             @Override
                             public void process(Exchange exchange) throws Exception {
-                                assertEquals("foo", exchange.getUnitOfWork().getRouteContext().getRouteId());
+                                assertEquals("foo", exchange.getUnitOfWork().getRoute().getRouteId());
                             }
                         })
                         .to("mock:foo")
@@ -68,7 +68,7 @@ public class SimpleMockTwoRoutesTest extends ContextTestSupport {
                         .process(new Processor() {
                             @Override
                             public void process(Exchange exchange) throws Exception {
-                                assertEquals("foo", exchange.getUnitOfWork().getRouteContext().getRouteId());
+                                assertEquals("foo", exchange.getUnitOfWork().getRoute().getRouteId());
                             }
                         })
                         .to("mock:result");
@@ -78,7 +78,7 @@ public class SimpleMockTwoRoutesTest extends ContextTestSupport {
                         .process(new Processor() {
                             @Override
                             public void process(Exchange exchange) throws Exception {
-                                assertEquals("bar", exchange.getUnitOfWork().getRouteContext().getRouteId());
+                                assertEquals("bar", exchange.getUnitOfWork().getRoute().getRouteId());
                             }
                         })
                         .to("mock:bar");
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
index 1f79bec..8549b6e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
@@ -28,7 +28,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.engine.EventDrivenConsumerRoute;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.processor.errorhandler.DefaultErrorHandler;
 import org.apache.camel.support.service.ServiceHelper;
 import org.junit.Test;
@@ -117,7 +117,7 @@ public class StreamResequencerTest extends ContextTestSupport {
         assertEquals("Number of routes created: " + list, 1, list.size());
 
         Route route = list.get(0);
-        EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+        DefaultRoute consumerRoute = assertIsInstanceOf(DefaultRoute.class, route);
 
         Channel channel = unwrapChannel(consumerRoute.getProcessor());
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
index fca65ac..04ce1e6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
@@ -29,7 +29,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.AsyncCallbackToCompletableFutureAdapter;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.junit.Test;
@@ -102,12 +102,12 @@ public class AsyncEndpointPolicyTest extends ContextTestSupport {
         }
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // no need to modify the route
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, final Processor processor) {
+        public Processor wrap(Route route, final Processor processor) {
             return new AsyncProcessor() {
                 public boolean process(final Exchange exchange, final AsyncCallback callback) {
                     invoked++;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java
index 9ecc356..2cccb31 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupportTest.java
@@ -25,7 +25,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class ErrorHandlerSupportTest extends ContextTestSupport {
@@ -37,7 +37,7 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
         exceptions.add(ParentException.class);
 
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(exceptions));
+        addExceptionPolicy(support, context.getRoute("foo"), new OnExceptionDefinition(exceptions));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 0));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 1));
@@ -50,7 +50,7 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
         exceptions.add(ChildException.class);
 
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(exceptions));
+        addExceptionPolicy(support, context.getRoute("foo"), new OnExceptionDefinition(exceptions));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 1));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 0));
@@ -59,8 +59,8 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
     @Test
     public void testTwoPolicyChildFirst() {
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ChildException.class));
-        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ParentException.class));
+        addExceptionPolicy(support, context.getRoute("foo"), new OnExceptionDefinition(ChildException.class));
+        addExceptionPolicy(support, context.getRoute("foo"), new OnExceptionDefinition(ParentException.class));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 0));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 0));
@@ -69,15 +69,15 @@ public class ErrorHandlerSupportTest extends ContextTestSupport {
     @Test
     public void testTwoPolicyChildLast() {
         ErrorHandlerSupport support = new ShuntErrorHandlerSupport();
-        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ParentException.class));
-        addExceptionPolicy(support, context.getRoute("foo").getRouteContext(), new OnExceptionDefinition(ChildException.class));
+        addExceptionPolicy(support, context.getRoute("foo"), new OnExceptionDefinition(ParentException.class));
+        addExceptionPolicy(support, context.getRoute("foo"), new OnExceptionDefinition(ChildException.class));
 
         assertEquals(ChildException.class.getName(), getExceptionPolicyFor(support, new ChildException(), 0));
         assertEquals(ParentException.class.getName(), getExceptionPolicyFor(support, new ParentException(), 0));
     }
 
-    private static void addExceptionPolicy(ErrorHandlerSupport handlerSupport, RouteContext routeContext, OnExceptionDefinition exceptionType) {
-        new DefaultErrorHandlerReifier<>(routeContext, null).addExceptionPolicy(handlerSupport, exceptionType);
+    private static void addExceptionPolicy(ErrorHandlerSupport handlerSupport, Route route, OnExceptionDefinition exceptionType) {
+        new DefaultErrorHandlerReifier<>(route, null).addExceptionPolicy(handlerSupport, exceptionType);
     }
 
     private static String getExceptionPolicyFor(ErrorHandlerSupport support, Throwable childException, int index) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java
index 62ee77c..bf0153a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyTest.java
@@ -30,14 +30,13 @@ import org.apache.camel.ExchangeTimedOutException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ValidationException;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.DefaultRouteContext;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.processor.errorhandler.DefaultExceptionPolicyStrategy;
 import org.apache.camel.processor.errorhandler.ExceptionPolicy;
 import org.apache.camel.processor.errorhandler.ExceptionPolicyKey;
 import org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier;
-import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -54,7 +53,7 @@ public class DefaultExceptionPolicyStrategyTest extends Assert {
 
     private ExceptionPolicy exceptionPolicy(Class<? extends Throwable> exceptionClass) {
         CamelContext cc = new DefaultCamelContext();
-        RouteContext context = new DefaultRouteContext(cc, null, null);
+        Route context = new DefaultRoute(cc, null, null, null);
         return new DefaultErrorHandlerReifier<>(context, null)
                 .createExceptionPolicy(new OnExceptionDefinition(exceptionClass));
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/ContextScopedOnExceptionCorrectRouteContextTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/ContextScopedOnExceptionCorrectRouteContextTest.java
index 10c2992..b0179f3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/ContextScopedOnExceptionCorrectRouteContextTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/ContextScopedOnExceptionCorrectRouteContextTest.java
@@ -41,7 +41,7 @@ public class ContextScopedOnExceptionCorrectRouteContextTest extends ContextTest
                 onException(Exception.class).log("Error due ${exception.message}").process(new Processor() {
                     @Override
                     public void process(Exchange exchange) throws Exception {
-                        String routeId = exchange.getUnitOfWork().getRouteContext().getRouteId();
+                        String routeId = exchange.getUnitOfWork().getRoute().getRouteId();
                         assertEquals("bar", routeId);
                     }
                 });
@@ -76,7 +76,7 @@ public class ContextScopedOnExceptionCorrectRouteContextTest extends ContextTest
                 onException(Exception.class).log("Error due ${exception.message}").process(new Processor() {
                     @Override
                     public void process(Exchange exchange) throws Exception {
-                        String routeId = exchange.getUnitOfWork().getRouteContext().getRouteId();
+                        String routeId = exchange.getUnitOfWork().getRoute().getRouteId();
                         assertEquals("foo", routeId);
                     }
                 });
diff --git a/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java b/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java
index 1deeae8..789dffd 100644
--- a/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/reifier/ProcessorReifierTest.java
@@ -16,9 +16,9 @@
  */
 package org.apache.camel.reifier;
 
-import org.apache.camel.impl.DefaultRouteContext;
+import org.apache.camel.impl.engine.DefaultRoute;
 import org.apache.camel.model.ProcessDefinition;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 import static junit.framework.TestCase.fail;
@@ -26,7 +26,7 @@ import static junit.framework.TestCase.fail;
 public class ProcessorReifierTest {
     @Test
     public void testHandleCustomProcessorDefinition() {
-        RouteContext ctx = new DefaultRouteContext(null, null, null);
+        Route ctx = new DefaultRoute(null, null, null, null);
         try {
             ProcessorReifier.reifier(ctx, new MyProcessor());
 
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
index 8c07f1f..97d769e 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
@@ -31,7 +31,6 @@ import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.StaticService;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
@@ -59,7 +58,7 @@ import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementObjectNameStrategy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.util.InetAddressUtil;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
@@ -149,7 +148,7 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
             objectName = getObjectNameForRoute(mr.getRoute());
         } else if (managedObject instanceof ManagedErrorHandler) {
             ManagedErrorHandler meh = (ManagedErrorHandler) managedObject;
-            objectName = getObjectNameForErrorHandler(meh.getRouteContext(), meh.getErrorHandler(), meh.getErrorHandlerBuilder());
+            objectName = getObjectNameForErrorHandler(meh.getRoute(), meh.getErrorHandler(), meh.getErrorHandlerBuilder());
         } else if (managedObject instanceof ManagedStep) {
             ManagedStep mp = (ManagedStep) managedObject;
             objectName = getObjectNameForStep(mp.getContext(), mp.getProcessor(), mp.getDefinition());
@@ -302,10 +301,10 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
     }
 
     @Override
-    public ObjectName getObjectNameForErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory builder) throws MalformedObjectNameException {
+    public ObjectName getObjectNameForErrorHandler(Route route, Processor errorHandler, ErrorHandlerFactory builder) throws MalformedObjectNameException {
         StringBuilder buffer = new StringBuilder();
         buffer.append(domainName).append(":");
-        buffer.append(KEY_CONTEXT + "=").append(getContextId(routeContext.getCamelContext())).append(",");
+        buffer.append(KEY_CONTEXT + "=").append(getContextId(route.getCamelContext())).append(",");
         buffer.append(KEY_TYPE + "=").append(TYPE_ERRORHANDLER + ",");
 
         // we want to only register one instance of the various error handler types and thus do some lookup
@@ -316,7 +315,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 = ErrorHandlerReifier.lookupErrorHandlerFactory(routeContext, builderRef.getRef(), false);
+            ErrorHandlerFactory refBuilder = ErrorHandlerReifier.lookupErrorHandlerFactory(route, builderRef.getRef(), false);
             if (refBuilder != null) {
                 builder = refBuilder;
             }
@@ -328,7 +327,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(ErrorHandlerReifier.DEFAULT_ERROR_HANDLER_BUILDER)) {
-                    refBuilder = ErrorHandlerReifier.lookupErrorHandlerFactory(routeContext, builderRef.getRef(), false);
+                    refBuilder = ErrorHandlerReifier.lookupErrorHandlerFactory(route, builderRef.getRef(), false);
                     if (refBuilder != null) {
                         ref = builderRef.getRef();
                         builder = refBuilder;
@@ -417,7 +416,7 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
     }
 
     @Override
-    public ObjectName getObjectNameForRoute(Route route) throws MalformedObjectNameException {
+    public ObjectName getObjectNameForRoute(org.apache.camel.Route route) throws MalformedObjectNameException {
         Endpoint ep = route.getEndpoint();
         String id = route.getId();
 
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
index 494f43f..6815e9a 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
@@ -28,7 +28,6 @@ import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.component.bean.BeanProcessor;
@@ -101,11 +100,27 @@ import org.apache.camel.management.mbean.ManagedUnmarshal;
 import org.apache.camel.management.mbean.ManagedValidate;
 import org.apache.camel.management.mbean.ManagedWeightedLoadBalancer;
 import org.apache.camel.management.mbean.ManagedWireTapProcessor;
+import org.apache.camel.model.AggregateDefinition;
+import org.apache.camel.model.DynamicRouterDefinition;
+import org.apache.camel.model.EnrichDefinition;
 import org.apache.camel.model.ExpressionNode;
+import org.apache.camel.model.IdempotentConsumerDefinition;
 import org.apache.camel.model.LoadBalanceDefinition;
+import org.apache.camel.model.LoopDefinition;
+import org.apache.camel.model.MarshalDefinition;
+import org.apache.camel.model.PollEnrichDefinition;
 import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RecipientListDefinition;
+import org.apache.camel.model.RoutingSlipDefinition;
+import org.apache.camel.model.ScriptDefinition;
+import org.apache.camel.model.SetBodyDefinition;
+import org.apache.camel.model.SetHeaderDefinition;
+import org.apache.camel.model.SetPropertyDefinition;
+import org.apache.camel.model.SplitDefinition;
+import org.apache.camel.model.TransformDefinition;
+import org.apache.camel.model.UnmarshalDefinition;
+import org.apache.camel.model.ValidateDefinition;
 import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.processor.ChoiceProcessor;
 import org.apache.camel.processor.ClaimCheckProcessor;
@@ -158,7 +173,7 @@ import org.apache.camel.spi.BrowsableEndpoint;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementObjectStrategy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.support.ScheduledPollConsumer;
 import org.apache.camel.support.processor.MarshalProcessor;
 import org.apache.camel.support.processor.PredicateValidatingProcessor;
@@ -220,9 +235,9 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
     }
 
     @Override
-    public Object getManagedObjectForErrorHandler(CamelContext context, RouteContext routeContext,
+    public Object getManagedObjectForErrorHandler(CamelContext context, Route route,
                                                   Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
-        ManagedErrorHandler me = new ManagedErrorHandler(routeContext, errorHandler, errorHandlerBuilder);
+        ManagedErrorHandler me = new ManagedErrorHandler(route, errorHandler, errorHandlerBuilder);
         me.init(context.getManagementStrategy());
         return me;
     }
@@ -331,35 +346,35 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
             } else if (target instanceof Throttler) {
                 answer = new ManagedThrottler(context, (Throttler) target, definition);
             } else if (target instanceof DynamicRouter) {
-                answer = new ManagedDynamicRouter(context, (DynamicRouter) target, (org.apache.camel.model.DynamicRouterDefinition) definition);
+                answer = new ManagedDynamicRouter(context, (DynamicRouter) target, (DynamicRouterDefinition) definition);
             } else if (target instanceof RoutingSlip) {
-                answer = new ManagedRoutingSlip(context, (RoutingSlip) target, (org.apache.camel.model.RoutingSlipDefinition) definition);
+                answer = new ManagedRoutingSlip(context, (RoutingSlip) target, (RoutingSlipDefinition) definition);
             } else if (target instanceof FilterProcessor) {
                 answer = new ManagedFilter(context, (FilterProcessor) target, (ExpressionNode)definition);
             } else if (target instanceof LogProcessor) {
                 answer = new ManagedLog(context, (LogProcessor) target, definition);
             } else if (target instanceof LoopProcessor) {
-                answer = new ManagedLoop(context, (LoopProcessor) target, (org.apache.camel.model.LoopDefinition) definition);
+                answer = new ManagedLoop(context, (LoopProcessor) target, (LoopDefinition) definition);
             } else if (target instanceof MarshalProcessor) {
-                answer = new ManagedMarshal(context, (MarshalProcessor) target, (org.apache.camel.model.MarshalDefinition) definition);
+                answer = new ManagedMarshal(context, (MarshalProcessor) target, (MarshalDefinition) definition);
             } else if (target instanceof UnmarshalProcessor) {
-                answer = new ManagedUnmarshal(context, (UnmarshalProcessor) target, (org.apache.camel.model.UnmarshalDefinition) definition);
+                answer = new ManagedUnmarshal(context, (UnmarshalProcessor) target, (UnmarshalDefinition) definition);
             } else if (target instanceof FailOverLoadBalancer) {
-                answer = new ManagedFailoverLoadBalancer(context, (FailOverLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
+                answer = new ManagedFailoverLoadBalancer(context, (FailOverLoadBalancer) target, (LoadBalanceDefinition) definition);
             } else if (target instanceof RandomLoadBalancer) {
-                answer = new ManagedRandomLoadBalancer(context, (RandomLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
+                answer = new ManagedRandomLoadBalancer(context, (RandomLoadBalancer) target, (LoadBalanceDefinition) definition);
             } else if (target instanceof RoundRobinLoadBalancer) {
-                answer = new ManagedRoundRobinLoadBalancer(context, (RoundRobinLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
+                answer = new ManagedRoundRobinLoadBalancer(context, (RoundRobinLoadBalancer) target, (LoadBalanceDefinition) definition);
             } else if (target instanceof StickyLoadBalancer) {
-                answer = new ManagedStickyLoadBalancer(context, (StickyLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
+                answer = new ManagedStickyLoadBalancer(context, (StickyLoadBalancer) target, (LoadBalanceDefinition) definition);
             } else if (target instanceof TopicLoadBalancer) {
-                answer = new ManagedTopicLoadBalancer(context, (TopicLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
+                answer = new ManagedTopicLoadBalancer(context, (TopicLoadBalancer) target, (LoadBalanceDefinition) definition);
             } else if (target instanceof WeightedLoadBalancer) {
-                answer = new ManagedWeightedLoadBalancer(context, (WeightedLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
+                answer = new ManagedWeightedLoadBalancer(context, (WeightedLoadBalancer) target, (LoadBalanceDefinition) definition);
             } else if (target instanceof RecipientList) {
                 answer = new ManagedRecipientList(context, (RecipientList) target, (RecipientListDefinition) definition);
             } else if (target instanceof Splitter) {
-                answer = new ManagedSplitter(context, (Splitter) target, (org.apache.camel.model.SplitDefinition) definition);
+                answer = new ManagedSplitter(context, (Splitter) target, (SplitDefinition) definition);
             } else if (target instanceof MulticastProcessor) {
                 answer = new ManagedMulticast(context, (MulticastProcessor) target, definition);
             } else if (target instanceof SamplingThrottler) {
@@ -371,23 +386,23 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
             } else if (target instanceof StreamResequencer) {
                 answer = new ManagedResequencer(context, (StreamResequencer) target, definition);
             } else if (target instanceof SetBodyProcessor) {
-                answer = new ManagedSetBody(context, (SetBodyProcessor) target, (org.apache.camel.model.SetBodyDefinition) definition);
+                answer = new ManagedSetBody(context, (SetBodyProcessor) target, (SetBodyDefinition) definition);
             } else if (target instanceof RemoveHeaderProcessor) {
                 answer = new ManagedRemoveHeader(context, (RemoveHeaderProcessor) target, definition);
             } else if (target instanceof RemoveHeadersProcessor) {
                 answer = new ManagedRemoveHeaders(context, (RemoveHeadersProcessor) target, definition);
             } else if (target instanceof SetHeaderProcessor) {
-                answer = new ManagedSetHeader(context, (SetHeaderProcessor) target, (org.apache.camel.model.SetHeaderDefinition) definition);
+                answer = new ManagedSetHeader(context, (SetHeaderProcessor) target, (SetHeaderDefinition) definition);
             } else if (target instanceof RemovePropertyProcessor) {
                 answer = new ManagedRemoveProperty(context, (RemovePropertyProcessor) target, definition);
             } else if (target instanceof RemovePropertiesProcessor) {
                 answer = new ManagedRemoveProperties(context, (RemovePropertiesProcessor) target, definition);
             } else if (target instanceof SetPropertyProcessor) {
-                answer = new ManagedSetProperty(context, (SetPropertyProcessor) target, (org.apache.camel.model.SetPropertyDefinition) definition);
+                answer = new ManagedSetProperty(context, (SetPropertyProcessor) target, (SetPropertyDefinition) definition);
             } else if (target instanceof ExchangePatternProcessor) {
                 answer = new ManagedSetExchangePattern(context, (ExchangePatternProcessor) target, definition);
             } else if (target instanceof ScriptProcessor) {
-                answer = new ManagedScript(context, (ScriptProcessor) target, (org.apache.camel.model.ScriptDefinition) definition);
+                answer = new ManagedScript(context, (ScriptProcessor) target, (ScriptDefinition) definition);
             } else if (target instanceof StepProcessor) {
                 answer = new ManagedStep(context, (StepProcessor) target, definition);
             } else if (target instanceof StopProcessor) {
@@ -397,9 +412,9 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
             } else if (target instanceof ThrowExceptionProcessor) {
                 answer = new ManagedThrowException(context, (ThrowExceptionProcessor) target, definition);
             } else if (target instanceof TransformProcessor) {
-                answer = new ManagedTransformer(context, (TransformProcessor) target, (org.apache.camel.model.TransformDefinition) definition);
+                answer = new ManagedTransformer(context, (TransformProcessor) target, (TransformDefinition) definition);
             } else if (target instanceof PredicateValidatingProcessor) {
-                answer = new ManagedValidate(context, (PredicateValidatingProcessor) target, (org.apache.camel.model.ValidateDefinition) definition);
+                answer = new ManagedValidate(context, (PredicateValidatingProcessor) target, (ValidateDefinition) definition);
             } else if (target instanceof WireTapProcessor) {
                 answer = new ManagedWireTapProcessor(context, (WireTapProcessor) target, definition);
             } else if (target instanceof SendDynamicProcessor) {
@@ -421,13 +436,13 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
             } else if (target instanceof BeanProcessor) {
                 answer = new ManagedBeanProcessor(context, (BeanProcessor) target, definition);
             } else if (target instanceof IdempotentConsumer) {
-                answer = new ManagedIdempotentConsumer(context, (IdempotentConsumer) target, (org.apache.camel.model.IdempotentConsumerDefinition) definition);
+                answer = new ManagedIdempotentConsumer(context, (IdempotentConsumer) target, (IdempotentConsumerDefinition) definition);
             } else if (target instanceof AggregateProcessor) {
-                answer = new ManagedAggregateProcessor(context, (AggregateProcessor) target, (org.apache.camel.model.AggregateDefinition) definition);
+                answer = new ManagedAggregateProcessor(context, (AggregateProcessor) target, (AggregateDefinition) definition);
             } else if (target instanceof Enricher) {
-                answer = new ManagedEnricher(context, (Enricher) target, (org.apache.camel.model.EnrichDefinition) definition);
+                answer = new ManagedEnricher(context, (Enricher) target, (EnrichDefinition) definition);
             } else if (target instanceof PollEnricher) {
-                answer = new ManagedPollEnricher(context, (PollEnricher) target, (org.apache.camel.model.PollEnrichDefinition) definition);
+                answer = new ManagedPollEnricher(context, (PollEnricher) target, (PollEnrichDefinition) definition);
             }
 
             // special for custom load balancer
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java b/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
index cea1e3c..03210c6 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
@@ -43,7 +43,6 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.NonManagedService;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
 import org.apache.camel.StartupListener;
@@ -96,7 +95,7 @@ import org.apache.camel.spi.ManagementObjectStrategy;
 import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.spi.RestRegistry;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.apache.camel.spi.RuntimeEndpointRegistry;
 import org.apache.camel.spi.StreamCachingStrategy;
 import org.apache.camel.spi.Tracer;
@@ -430,7 +429,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @Override
-    public void onServiceAdd(CamelContext context, Service service, Route route) {
+    public void onServiceAdd(CamelContext context, Service service, org.apache.camel.Route route) {
         if (!initialized) {
             // pre register so we can register later when we have been initialized
             PreRegisterService pre = new PreRegisterService();
@@ -467,7 +466,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @Override
-    public void onServiceRemove(CamelContext context, Service service, Route route) {
+    public void onServiceRemove(CamelContext context, Service service, org.apache.camel.Route route) {
         // the agent hasn't been started
         if (!initialized) {
             return;
@@ -484,7 +483,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @SuppressWarnings("unchecked")
-    private Object getManagedObjectForService(CamelContext context, Service service, Route route) {
+    private Object getManagedObjectForService(CamelContext context, Service service, org.apache.camel.Route route) {
         // skip channel, UoW and dont double wrap instrumentation
         if (service instanceof Channel || service instanceof UnitOfWork || service instanceof InstrumentationProcessor) {
             return null;
@@ -576,7 +575,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
         return answer;
     }
 
-    private Object getManagedObjectForProcessor(CamelContext context, Processor processor, Route route) {
+    private Object getManagedObjectForProcessor(CamelContext context, Processor processor, org.apache.camel.Route route) {
         // a bit of magic here as the processors we want to manage have already been registered
         // in the wrapped processors map when Camel have instrumented the route on route initialization
         // so the idea is now to only manage the processors from the map
@@ -604,8 +603,8 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @Override
-    public void onRoutesAdd(Collection<Route> routes) {
-        for (Route route : routes) {
+    public void onRoutesAdd(Collection<org.apache.camel.Route> routes) {
+        for (org.apache.camel.Route route : routes) {
 
             // if we are starting CamelContext or either of the two options has been
             // enabled, then enlist the route as a known route
@@ -659,13 +658,13 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @Override
-    public void onRoutesRemove(Collection<Route> routes) {
+    public void onRoutesRemove(Collection<org.apache.camel.Route> routes) {
         // the agent hasn't been started
         if (!initialized) {
             return;
         }
 
-        for (Route route : routes) {
+        for (org.apache.camel.Route route : routes) {
             Object mr = getManagementObjectStrategy().getManagedObjectForRoute(camelContext, route);
 
             // skip unmanaged routes
@@ -690,13 +689,13 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @Override
-    public void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
+    public void onErrorHandlerAdd(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
         if (!shouldRegister(errorHandler, null)) {
             // avoid registering if not needed
             return;
         }
 
-        Object me = getManagementObjectStrategy().getManagedObjectForErrorHandler(camelContext, routeContext, errorHandler, errorHandlerBuilder);
+        Object me = getManagementObjectStrategy().getManagedObjectForErrorHandler(camelContext, route, errorHandler, errorHandlerBuilder);
 
         // skip already managed services, for example if a route has been restarted
         if (getManagementStrategy().isManaged(me)) {
@@ -712,12 +711,12 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @Override
-    public void onErrorHandlerRemove(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
+    public void onErrorHandlerRemove(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
         if (!initialized) {
             return;
         }
 
-        Object me = getManagementObjectStrategy().getManagedObjectForErrorHandler(camelContext, routeContext, errorHandler, errorHandlerBuilder);
+        Object me = getManagementObjectStrategy().getManagedObjectForErrorHandler(camelContext, route, errorHandler, errorHandlerBuilder);
         if (me != null) {
             try {
                 unmanageObject(me);
@@ -778,7 +777,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
     }
 
     @Override
-    public void onRouteContextCreate(RouteContext routeContext) {
+    public void onRouteContextCreate(Route route) {
         if (!initialized) {
             return;
         }
@@ -790,16 +789,16 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
         // Each processor in a route will have its own performance counter.
         // These performance counter will be embedded to InstrumentationProcessor
         // and wrap the appropriate processor by InstrumentationInterceptStrategy.
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        RouteDefinition routeDefinition = (RouteDefinition) route.getRoute();
 
         // register performance counters for all processors and its children
-        for (ProcessorDefinition<?> processor : route.getOutputs()) {
-            registerPerformanceCounters(routeContext, processor, registeredCounters);
+        for (ProcessorDefinition<?> processor : routeDefinition.getOutputs()) {
+            registerPerformanceCounters(route, processor, registeredCounters);
         }
 
         // set this managed intercept strategy that executes the JMX instrumentation for performance metrics
         // so our registered counters can be used for fine grained performance instrumentation
-        routeContext.setManagementInterceptStrategy(new InstrumentationInterceptStrategy(registeredCounters, wrappedProcessors));
+        route.setManagementInterceptStrategy(new InstrumentationInterceptStrategy(registeredCounters, wrappedProcessors));
     }
 
     /**
@@ -809,9 +808,9 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
      *
      * @param routes the routes
      */
-    private void removeWrappedProcessorsForRoutes(Collection<Route> routes) {
+    private void removeWrappedProcessorsForRoutes(Collection<org.apache.camel.Route> routes) {
         // loop the routes, and remove the route associated wrapped processors, as they are no longer in use
-        for (Route route : routes) {
+        for (org.apache.camel.Route route : routes) {
             String id = route.getId();
 
             Iterator<KeyValueHolder<NamedNode, InstrumentationProcessor>> it = wrappedProcessors.values().iterator();
@@ -826,13 +825,13 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
         
     }
 
-    private void registerPerformanceCounters(RouteContext routeContext, ProcessorDefinition<?> processor,
+    private void registerPerformanceCounters(Route route, ProcessorDefinition<?> processor,
                                              Map<NamedNode, PerformanceCounter> registeredCounters) {
 
         // traverse children if any exists
         List<ProcessorDefinition<?>> children = processor.getOutputs();
         for (ProcessorDefinition<?> child : children) {
-            registerPerformanceCounters(routeContext, child, registeredCounters);
+            registerPerformanceCounters(route, child, registeredCounters);
         }
 
         // skip processors that should not be registered
@@ -936,7 +935,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
      * @param route   an optional route the mbean is associated with, can be <tt>null</tt>
      * @return <tt>true</tt> to register, <tt>false</tt> to skip registering
      */
-    protected boolean shouldRegister(Object service, Route route) {
+    protected boolean shouldRegister(Object service, org.apache.camel.Route route) {
         // the agent hasn't been started
         if (!initialized) {
             return false;
@@ -1030,7 +1029,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
         private Endpoint endpoint;
         private CamelContext camelContext;
         private Service service;
-        private Route route;
+        private org.apache.camel.Route route;
 
         public void onComponentAdd(String name, Component component) {
             this.name = name;
@@ -1041,7 +1040,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
             this.endpoint = endpoint;
         }
 
-        public void onServiceAdd(CamelContext camelContext, Service service, Route route) {
+        public void onServiceAdd(CamelContext camelContext, Service service, org.apache.camel.Route route) {
             this.camelContext = camelContext;
             this.service = service;
             this.route = route;
@@ -1067,7 +1066,7 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
             return service;
         }
 
-        public Route getRoute() {
+        public org.apache.camel.Route getRoute() {
             return route;
         }
     }
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
index ddfc3bf..2862351 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
@@ -24,16 +24,16 @@ import org.apache.camel.api.management.mbean.ManagedErrorHandlerMBean;
 import org.apache.camel.processor.errorhandler.ErrorHandlerSupport;
 import org.apache.camel.processor.errorhandler.RedeliveryErrorHandler;
 import org.apache.camel.spi.ManagementStrategy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 
 @ManagedResource(description = "Managed ErrorHandler")
 public class ManagedErrorHandler implements ManagedErrorHandlerMBean {
-    private final RouteContext routeContext;
+    private final Route route;
     private final Processor errorHandler;
     private final ErrorHandlerFactory errorHandlerBuilder;
 
-    public ManagedErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory builder) {
-        this.routeContext = routeContext;
+    public ManagedErrorHandler(Route route, Processor errorHandler, ErrorHandlerFactory builder) {
+        this.route = route;
         this.errorHandler = errorHandler;
         this.errorHandlerBuilder = builder;
     }
@@ -42,8 +42,8 @@ public class ManagedErrorHandler implements ManagedErrorHandlerMBean {
         // do nothing
     }
 
-    public RouteContext getRouteContext() {
-        return routeContext;
+    public Route getRoute() {
+        return route;
     }
 
     public Processor getErrorHandler() {
@@ -56,12 +56,12 @@ public class ManagedErrorHandler implements ManagedErrorHandlerMBean {
 
     @Override
     public String getCamelId() {
-        return routeContext.getCamelContext().getName();
+        return route.getCamelContext().getName();
     }
 
     @Override
     public String getCamelManagementName() {
-        return routeContext.getCamelContext().getManagementName();
+        return route.getCamelContext().getManagementName();
     }
 
     @Override
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
index cb35cbf..ed0a340 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
@@ -186,27 +186,27 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList
 
     @Override
     public Boolean getTracing() {
-        return route.getRouteContext().isTracing();
+        return route.isTracing();
     }
 
     @Override
     public void setTracing(Boolean tracing) {
-        route.getRouteContext().setTracing(tracing);
+        route.setTracing(tracing);
     }
 
     @Override
     public Boolean getMessageHistory() {
-        return route.getRouteContext().isMessageHistory();
+        return route.isMessageHistory();
     }
 
     @Override
     public Boolean getLogMask() {
-        return route.getRouteContext().isLogMask();
+        return route.isLogMask();
     }
 
     @Override
     public String getRoutePolicyList() {
-        List<RoutePolicy> policyList = route.getRouteContext().getRoutePolicyList();
+        List<RoutePolicy> policyList = route.getRoutePolicyList();
 
         if (policyList == null || policyList.isEmpty()) {
             // return an empty string to have it displayed nicely in JMX consoles
@@ -594,12 +594,12 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList
 
     @Override
     public Boolean getHasRouteController() {
-        return route.getRouteContext().getRouteController() != null;
+        return route.getRouteController() != null;
     }
 
     @Override
     public RouteError getLastError() {
-        org.apache.camel.spi.RouteError error = route.getRouteContext().getLastError();
+        org.apache.camel.spi.RouteError error = route.getLastError();
         if (error == null) {
             return null;
         } else {
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
index d45c54b..2a622a8 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
@@ -26,7 +26,7 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 import org.junit.Test;
 
 public class ManagedCustomPolicyTest extends ManagementTestSupport {
@@ -81,12 +81,12 @@ public class ManagedCustomPolicyTest extends ManagementTestSupport {
     private final class MyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+        public void beforeWrap(Route route, NamedNode definition) {
             // noop
         }
 
         @Override
-        public Processor wrap(RouteContext routeContext, final Processor processor) {
+        public Processor wrap(Route route, final Processor processor) {
             return exchange -> {
                 counter.incrementAndGet();
                 processor.process(exchange);
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
index 87b7655..80a6f08 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
@@ -645,7 +645,7 @@ public final class ExchangeHelper {
     public static boolean isStreamCachingEnabled(final Exchange exchange) {
         Route route = exchange.getContext().getRoute(exchange.getFromRouteId());
         if (route != null) {
-            return route.getRouteContext().isStreamCaching();
+            return route.isStreamCaching();
         } else {
             return exchange.getContext().getStreamCachingStrategy().isEnabled();
         }
@@ -1003,4 +1003,27 @@ public final class ExchangeHelper {
         }
         return scanner;
     }
+
+    public static String getRouteId(Exchange exchange) {
+        String answer = getAtRouteId(exchange);
+        if (answer == null) {
+            // fallback and get from route id on the exchange
+            answer = exchange.getFromRouteId();
+        }
+        return answer;
+    }
+
+    public static String getAtRouteId(Exchange exchange) {
+        String answer = null;
+        Route rc = getRoute(exchange);
+        if (rc != null) {
+            answer = rc.getRouteId();
+        }
+        return answer;
+    }
+
+    public static Route getRoute(Exchange exchange) {
+        UnitOfWork uow = exchange.getUnitOfWork();
+        return uow != null ? uow.getRoute() : null;
+    }
 }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LifecycleStrategySupport.java b/core/camel-support/src/main/java/org/apache/camel/support/LifecycleStrategySupport.java
index 49d4267..5b10a39 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/LifecycleStrategySupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LifecycleStrategySupport.java
@@ -24,11 +24,10 @@ import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
-import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.VetoCamelContextStartException;
 import org.apache.camel.spi.LifecycleStrategy;
-import org.apache.camel.spi.RouteContext;
+import org.apache.camel.Route;
 
 /**
  * A useful base class for {@link LifecycleStrategy} implementations.
@@ -66,37 +65,37 @@ public abstract class LifecycleStrategySupport implements LifecycleStrategy {
     }
 
     @Override
-    public void onServiceAdd(CamelContext context, Service service, Route route) {
+    public void onServiceAdd(CamelContext context, Service service, org.apache.camel.Route route) {
         // noop
     }
 
     @Override
-    public void onServiceRemove(CamelContext context, Service service, Route route) {
+    public void onServiceRemove(CamelContext context, Service service, org.apache.camel.Route route) {
         // noop
     }
 
     @Override
-    public void onRoutesAdd(Collection<Route> routes) {
+    public void onRoutesAdd(Collection<org.apache.camel.Route> routes) {
         // noop
     }
 
     @Override
-    public void onRoutesRemove(Collection<Route> routes) {
+    public void onRoutesRemove(Collection<org.apache.camel.Route> routes) {
         // noop
     }
 
     @Override
-    public void onRouteContextCreate(RouteContext routeContext) {
+    public void onRouteContextCreate(Route route) {
         // noop
     }
 
     @Override
-    public void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
+    public void onErrorHandlerAdd(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
         // noop
     }
 
     @Override
-    public void onErrorHandlerRemove(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
+    public void onErrorHandlerRemove(Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder) {
         // noop
     }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
index 8756f9a..807bf25 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
@@ -22,8 +22,6 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Reader;
 import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
@@ -36,8 +34,6 @@ import org.apache.camel.StreamCache;
 import org.apache.camel.WrappedFile;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
@@ -586,10 +582,9 @@ public final class MessageHelper {
             id = exchange.adapt(ExtendedExchange.class).getHistoryNodeId();
             if (id != null) {
                 // compute route id
-                UnitOfWork uow = exchange.getUnitOfWork();
-                RouteContext rc = uow != null ? uow.getRouteContext() : null;
-                if (rc != null) {
-                    routeId = rc.getRouteId();
+                String rid = ExchangeHelper.getAtRouteId(exchange);
+                if (rid != null) {
+                    routeId = rid;
                 }
                 label = exchange.adapt(ExtendedExchange.class).getHistoryNodeLabel();
                 // we need to avoid leak the sensible information here
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 9085cd5..71f1d68 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
@@ -39,8 +39,6 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.RuntimeExchangeException;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.PropertiesComponent;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ExpressionAdapter;
 import org.apache.camel.support.GroupIterator;
@@ -1242,16 +1240,7 @@ public class ExpressionBuilder {
     public static Expression routeIdExpression() {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
-                String answer = null;
-                UnitOfWork uow = exchange.getUnitOfWork();
-                RouteContext rc = uow != null ? uow.getRouteContext() : null;
-                if (rc != null) {
-                    answer = rc.getRouteId();
-                }
-                if (answer == null) {
-                    // fallback and get from route id on the exchange
-                    answer = exchange.getFromRouteId();
-                }
+                String answer = ExchangeHelper.getRouteId(exchange);
                 return answer;
             }
 


[camel] 30/32: Use @JdkService for CaffeineLRUCacheFactory

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 19228584bbb2d59532543d44d81dd73dc0a9821b
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 08:59:50 2020 +0100

    Use @JdkService for CaffeineLRUCacheFactory
---
 .../services/org/apache/camel/lru-cache-factory       |  2 ++
 .../caffeine/lrucache/CaffeineLRUCacheFactory.java    |  2 ++
 .../services/org/apache/camel/lru-cache-factory       | 19 -------------------
 .../org/apache/camel/support/LRUCacheFactory.java     |  7 ++++++-
 4 files changed, 10 insertions(+), 20 deletions(-)

diff --git a/core/camel-caffeine-lrucache/src/generated/resources/META-INF/services/org/apache/camel/lru-cache-factory b/core/camel-caffeine-lrucache/src/generated/resources/META-INF/services/org/apache/camel/lru-cache-factory
new file mode 100644
index 0000000..6154219
--- /dev/null
+++ b/core/camel-caffeine-lrucache/src/generated/resources/META-INF/services/org/apache/camel/lru-cache-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.caffeine.lrucache.CaffeineLRUCacheFactory
diff --git a/core/camel-caffeine-lrucache/src/main/java/org/apache/camel/component/caffeine/lrucache/CaffeineLRUCacheFactory.java b/core/camel-caffeine-lrucache/src/main/java/org/apache/camel/component/caffeine/lrucache/CaffeineLRUCacheFactory.java
index 037e6ba..93325b8 100644
--- a/core/camel-caffeine-lrucache/src/main/java/org/apache/camel/component/caffeine/lrucache/CaffeineLRUCacheFactory.java
+++ b/core/camel-caffeine-lrucache/src/main/java/org/apache/camel/component/caffeine/lrucache/CaffeineLRUCacheFactory.java
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Consumer;
 
+import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.concurrent.ThreadHelper;
@@ -29,6 +30,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Factory to create {@link CaffeineLRUCache} instances.
  */
+@JdkService(LRUCacheFactory.FACTORY)
 public final class CaffeineLRUCacheFactory extends LRUCacheFactory {
 
     private static final Logger LOG = LoggerFactory.getLogger(CaffeineLRUCacheFactory.class);
diff --git a/core/camel-caffeine-lrucache/src/main/resources/META-INF/services/org/apache/camel/lru-cache-factory b/core/camel-caffeine-lrucache/src/main/resources/META-INF/services/org/apache/camel/lru-cache-factory
deleted file mode 100644
index 07b3807..0000000
--- a/core/camel-caffeine-lrucache/src/main/resources/META-INF/services/org/apache/camel/lru-cache-factory
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class=org.apache.camel.component.caffeine.lrucache.CaffeineLRUCacheFactory
-
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LRUCacheFactory.java b/core/camel-support/src/main/java/org/apache/camel/support/LRUCacheFactory.java
index 352d75a..2fc70c6 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/LRUCacheFactory.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LRUCacheFactory.java
@@ -30,6 +30,11 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class LRUCacheFactory {
 
+    /**
+     * Factory key
+     */
+    public static final String FACTORY = "lru-cache-factory";
+
     private static final Logger LOG = LoggerFactory.getLogger(LRUCacheFactory.class);
 
     private static volatile LRUCacheFactory instance;
@@ -69,7 +74,7 @@ public abstract class LRUCacheFactory {
         LOG.trace("createLRUCacheFactory");
         try {
             ClassLoader classLoader = LRUCacheFactory.class.getClassLoader();
-            URL url = classLoader.getResource("META-INF/services/org/apache/camel/lru-cache-factory");
+            URL url = classLoader.getResource("META-INF/services/org/apache/camel/" + FACTORY);
             if (url != null) {
                 Properties props = new Properties();
                 try (InputStream is = url.openStream()) {


[camel] 22/32: Camel-test-junit5: Added camel-core-languages as dep

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 0f817b0613ea75bca64012b25366315fd305ac42
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 21:23:25 2020 +0100

    Camel-test-junit5: Added camel-core-languages as dep
---
 components/camel-test-junit5/pom.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/components/camel-test-junit5/pom.xml b/components/camel-test-junit5/pom.xml
index d8aacad..48e1a50 100644
--- a/components/camel-test-junit5/pom.xml
+++ b/components/camel-test-junit5/pom.xml
@@ -48,6 +48,10 @@
 			<groupId>org.apache.camel</groupId>
 			<artifactId>camel-management</artifactId>
 		</dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-languages</artifactId>
+        </dependency>
 
         <!-- common deps used in tests -->
         <dependency>


[camel] 24/32: Refactor tests to avoid the usage of deprecated JndiRegistry

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 4108b4eb3bc73673092b8dd2bb11534099b7c987
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 23:26:06 2020 +0100

    Refactor tests to avoid the usage of deprecated JndiRegistry
---
 .../java/org/apache/camel/ContextTestSupport.java    |  7 ++++---
 .../camel/builder/NotifyBuilderFromRouteTest.java    |  6 +++---
 .../apache/camel/builder/ThreadPoolBuilderTest.java  |  6 +++---
 ...hoseMethodWithMatchingTypeAndSkipSettersTest.java |  6 +++---
 .../bean/BeanComponentMissingParenthesisTest.java    |  6 +++---
 .../camel/component/bean/BeanConcurrentTest.java     |  6 +++---
 .../camel/component/bean/BeanEndpointTest.java       |  6 +++---
 .../bean/BeanExchangeAsReturnTypeNotAllowedTest.java | 10 ++++------
 .../bean/BeanExplicitMethodAmbiguousTest.java        |  6 +++---
 .../camel/component/bean/BeanExplicitMethodTest.java |  6 +++---
 .../component/bean/BeanExpressionConcurrentTest.java |  6 +++---
 .../camel/component/bean/BeanImplicitMethodTest.java | 10 ++++------
 .../camel/component/bean/BeanInPipelineTest.java     |  8 +++-----
 .../component/bean/BeanInfoSelectMethodTest.java     |  6 +++---
 .../component/bean/BeanInvokeWithNullBodyTest.java   |  6 +++---
 .../camel/component/bean/BeanLifecycleTest.java      |  6 +++---
 .../apache/camel/component/bean/BeanMapPutTest.java  |  6 +++---
 .../component/bean/BeanMethodValueWithCommaTest.java |  6 +++---
 .../bean/BeanMethodValueWithExchangeTest.java        |  6 +++---
 ...ParameterAndNoMethodWithNoParameterIssueTest.java |  6 +++---
 .../bean/BeanMethodWithStringParameterTest.java      |  6 +++---
 .../component/bean/BeanOgnlPerformanceTest.java      |  6 +++---
 .../bean/BeanParameterInvalidSyntaxTest.java         |  6 +++---
 .../bean/BeanParameterInvalidValueTest.java          |  6 +++---
 .../BeanParameterMethodCallThreeBodyOgnlTest.java    |  6 +++---
 .../bean/BeanParameterNoBeanBindingTest.java         |  6 +++---
 .../bean/BeanParameterThreeBodyOgnlTest.java         |  6 +++---
 .../component/bean/BeanParameterValueOgnlTest.java   |  6 +++---
 .../bean/BeanParameterValueOverloadedTest.java       |  6 +++---
 .../camel/component/bean/BeanParameterValueTest.java |  6 +++---
 .../camel/component/bean/BeanPipelineTest.java       |  8 +++-----
 .../component/bean/BeanPropagateHeaderTest.java      |  6 +++---
 .../component/bean/BeanRefMethodNotFoundTest.java    |  6 +++---
 .../camel/component/bean/BeanRefNotFoundTest.java    |  6 +++---
 .../camel/component/bean/BeanRegistryBeanTest.java   |  6 +++---
 .../bean/BeanReturnCallableReturnNullTest.java       | 10 ++++------
 .../camel/component/bean/BeanReturnCallableTest.java | 10 ++++------
 .../bean/BeanWithAnnotationAndExchangeTest.java      | 10 ++++------
 .../bean/BeanWithAnnotationInheritedTest.java        |  9 ++++-----
 .../BeanWithExchangeExceptionAnnotationTest.java     | 10 ++++------
 .../BeanWithExpressionInjectionPredicateTest.java    |  8 +++-----
 .../bean/BeanWithExpressionInjectionTest.java        |  9 ++++-----
 .../camel/component/bean/BeanWithHeaderTest.java     | 10 ++++------
 .../bean/BeanWithHeadersAndBodyInject2Test.java      |  8 +++-----
 .../bean/BeanWithHeadersAndBodyInject3Test.java      |  8 +++-----
 .../bean/BeanWithHeadersAndBodyInjectionTest.java    |  8 +++-----
 .../component/bean/BeanWithInputStreamBodyTest.java  |  6 +++---
 .../component/bean/BeanWithMethodHeaderTest.java     |  8 +++-----
 ...WithPropertiesAndHeadersAndBodyInjectionTest.java |  8 +++-----
 .../BeanWithPropertiesAndHeadersInjectionTest.java   |  8 +++-----
 .../BeanWithXPathInjectionUsingHeaderValueTest.java  |  8 +++-----
 .../BeanWithXPathInjectionUsingResultTypeTest.java   |  9 ++++-----
 .../BodyAnnotationToDisambiguateMethodsTest.java     |  8 +++-----
 ...onentWithPropertiesLookupSetFromEndpointTest.java |  6 +++---
 .../bean/CustomParameterMappingStrategyTest.java     |  6 +++---
 .../bean/DefaultParameterMappingStrategyTest.java    |  5 ++---
 ...xpressionAnnotationToDisambiguateMethodsTest.java |  8 +++-----
 .../component/bean/FileBeanParameterBindingTest.java |  6 +++---
 .../bean/MethodCallBeanRefMethodNotFoundTest.java    |  6 +++---
 .../bean/MethodCallBeanRefNotFoundTest.java          |  6 +++---
 .../bean/MethodCallRefOrBeanPrefixTest.java          |  6 +++---
 .../camel/component/bean/MyCurrencyBeanTest.java     |  6 +++---
 .../apache/camel/component/bean/NewInstanceTest.java |  9 +++++----
 .../camel/component/bean/PredicateAsBeanTest.java    |  8 +++-----
 ...LanguageBeanFunctionMethodValueWithCommaTest.java |  6 +++---
 ...geBeanFunctionMethodValueWithParenthesisTest.java |  6 +++---
 .../bean/issues/BeanRouteToDerivedClassTest.java     |  6 +++---
 .../bean/issues/BeanVsProcessorPerformanceTest.java  |  6 +++---
 .../bean/issues/FilterBeanRegistryTest.java          |  6 +++---
 .../camel/component/dataset/BigDataSetTest.java      | 11 +++++------
 .../camel/component/dataset/CustomDataSetTest.java   | 11 +++++------
 .../camel/component/dataset/DataSetConsumerTest.java | 11 +++++------
 .../camel/component/dataset/DataSetPreloadTest.java  | 11 +++++------
 .../camel/component/dataset/DataSetProducerTest.java | 11 +++++------
 .../camel/component/dataset/DataSetSedaTest.java     | 11 +++++------
 .../apache/camel/component/dataset/DataSetTest.java  | 11 +++++------
 .../component/dataset/FileDataSetConsumerTest.java   | 11 +++++------
 .../dataset/FileDataSetConsumerWithSplitTest.java    | 11 +++++------
 .../component/dataset/FileDataSetProducerTest.java   | 11 +++++------
 .../dataset/FileDataSetProducerWithSplitTest.java    | 11 +++++------
 .../component/dataset/ListDataSetConsumerTest.java   | 11 +++++------
 .../component/dataset/ListDataSetProducerTest.java   | 11 +++++------
 .../component/dataset/RoutePerformanceTest.java      | 11 +++++------
 .../directvm/DirectVmHeaderFilterStrategyTest.java   |  3 +--
 .../file/AntPathMatcherGenericFileFilterTest.java    |  6 +++---
 .../apache/camel/component/file/BeanToFileTest.java  |  8 +++-----
 .../component/file/FileBeginFailureOneTimeTest.java  |  6 +++---
 .../FileConsumerBridgeRouteExceptionHandlerTest.java |  6 +++---
 .../file/FileConsumerCustomExceptionHandlerTest.java |  6 +++---
 .../file/FileConsumerCustomSchedulerTest.java        |  6 +++---
 .../file/FileConsumerDirectoryFilterTest.java        |  6 +++---
 .../file/FileConsumerFileExpressionTest.java         |  6 +++---
 ...FileConsumerFileExpressionThrowExceptionTest.java |  6 +++---
 .../component/file/FileConsumerFileFilterTest.java   |  6 +++---
 .../file/FileConsumerIdempotentRefTest.java          |  6 +++---
 .../file/FileConsumerMoveExpressionTest.java         |  6 +++---
 .../file/FileConsumerPollStrategyNotBeginTest.java   |  6 +++---
 .../FileConsumerPollStrategyPolledMessagesTest.java  |  6 +++---
 ...nsumerPollStrategyRollbackThrowExceptionTest.java |  6 +++---
 .../FileConsumerPollStrategyStopOnRollbackTest.java  |  6 +++---
 .../component/file/FileConsumerPollStrategyTest.java |  6 +++---
 ...kerFileRecursiveFilterDeleteOldLockFilesTest.java |  6 +++---
 .../component/file/FileProducerExpressionTest.java   |  6 +++---
 .../file/FileProducerMoveExistingStrategyTest.java   |  6 +++---
 .../camel/component/file/FileSorterRefTest.java      |  6 +++---
 .../file/FilerProducerDoneFileNameRouteTest.java     |  6 +++---
 .../file/FilerProducerDoneFileNameTest.java          |  6 +++---
 .../apache/camel/component/file/ToFileRouteTest.java |  6 +++---
 .../FileIdempotentReadLockDelayedAsyncTest.java      |  6 +++---
 .../strategy/FileIdempotentReadLockDelayedTest.java  |  6 +++---
 .../file/strategy/FileIdempotentReadLockTest.java    |  6 +++---
 .../component/language/LanguageScriptRouteTest.java  |  6 +++---
 .../apache/camel/component/log/LogListenerTest.java  |  5 +----
 .../org/apache/camel/component/log/LogMaskTest.java  |  8 ++++----
 .../apache/camel/component/mock/MockAsBeanTest.java  |  6 +++---
 .../camel/component/mock/MockEndpointTest.java       |  6 +++---
 .../PropertiesComponentOnExceptionTest.java          |  6 +++---
 ...pertiesComponentSomethingElseBoundToJndiTest.java |  6 +++---
 .../apache/camel/component/rest/FromRestApiTest.java |  6 +++---
 .../component/rest/FromRestConfigurationTest.java    |  6 +++---
 .../component/rest/FromRestDefaultValueTest.java     |  6 +++---
 .../camel/component/rest/FromRestDuplicateTest.java  |  6 +++---
 .../component/rest/FromRestGetContentTypeTest.java   |  6 +++---
 .../rest/FromRestGetCorsAllowCredentialsTest.java    |  6 +++---
 .../component/rest/FromRestGetCorsCustomTest.java    |  6 +++---
 .../camel/component/rest/FromRestGetCorsTest.java    |  6 +++---
 .../component/rest/FromRestGetEmbeddedRouteTest.java |  6 +++---
 .../component/rest/FromRestGetHttpErrorCodeTest.java |  6 +++---
 .../component/rest/FromRestGetInterceptTest.java     |  6 +++---
 .../component/rest/FromRestGetOnExceptionTest.java   |  6 +++---
 .../rest/FromRestGetPlaceholderParamTest.java        | 11 +++++------
 .../camel/component/rest/FromRestGetPolicyTest.java  |  8 ++++----
 .../apache/camel/component/rest/FromRestGetTest.java |  6 +++---
 .../rest/RestComponentVerifierExtensionTest.java     |  6 +++---
 .../component/rest/RestComponentVerifierTest.java    |  6 +++---
 .../component/scheduler/SchedulerRouteTest.java      |  8 +++-----
 .../component/seda/SedaConcurrentConsumersTest.java  |  6 +++---
 .../component/seda/SedaDefaultBlockWhenFullTest.java |  6 +++---
 .../component/timer/TimerGracefulShutdownTest.java   |  6 +++---
 .../timer/TimerReferenceConfigurationTest.java       |  6 +++---
 .../apache/camel/component/timer/TimerRouteTest.java |  8 +++-----
 .../validator/CustomSchemaFactoryFeatureTest.java    |  6 +++---
 .../component/validator/ValidatorBeanCallTest.java   |  6 +++---
 .../ValidatorResourceResolverFactoryTest.java        | 20 ++++++++++++--------
 .../apache/camel/component/vm/VMSplitterTest.java    |  6 +++---
 .../xslt/XsltCustomizeEntityResolverTest.java        |  6 +++---
 .../component/xslt/XsltCustomizeURIResolverTest.java |  6 +++---
 .../apache/camel/component/xslt/XsltRouteTest.java   |  6 +++---
 .../component/xslt/XsltUriResolverFactoryTest.java   | 19 +++++++++++--------
 .../camel/impl/BeanInjectRouteBuilderTest.java       |  9 +++++----
 .../CamelContextAddRestDefinitionsFromXmlTest.java   | 11 ++++++-----
 .../camel/impl/DataFormatContextAwareTest.java       |  9 +++++----
 .../DefaultComponentReferencePropertiesTest.java     |  9 +++++----
 .../org/apache/camel/impl/DefaultComponentTest.java  | 19 ++++++++++---------
 .../camel/impl/LanguageCamelContextAwareTest.java    |  9 +++++----
 .../camel/impl/LogDebugBodyMaxCharsOffTest.java      |  9 +++++----
 .../apache/camel/impl/LogDebugBodyMaxCharsTest.java  |  9 +++++----
 .../apache/camel/impl/LogDebugBodyStreamsTest.java   |  9 +++++----
 .../org/apache/camel/impl/RefDataFormatTest.java     |  9 +++++----
 .../apache/camel/impl/RouteIdRestDefinitionTest.java | 11 ++++++-----
 .../camel/impl/RoutePolicyRefCallbackTest.java       |  9 +++++----
 .../StartupListenerComponentFromRegistryTest.java    |  5 +++--
 .../impl/engine/CamelPostProcessorHelperTest.java    |  7 ++++---
 .../apache/camel/impl/model/RouteIdFactoryTest.java  |  6 +++---
 .../validator/BeanValidatorInputValidateTest.java    |  6 +++---
 .../validator/BeanValidatorOutputValidateTest.java   |  6 +++---
 ...extScopedOnExceptionErrorHandlerRefIssueTest.java |  6 +++---
 ...OnExceptionErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 ...nExceptionNotHandledErrorHandlerRefIssueTest.java |  6 +++---
 ...nNotHandledErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 ...otHandledRouteScopedErrorHandlerRefIssueTest.java |  6 +++---
 ...RouteScopedErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 ...ExceptionRouteScopedErrorHandlerRefIssueTest.java |  6 +++---
 ...RouteScopedErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 .../issues/OnExceptionErrorHandlerRefIssueTest.java  |  6 +++---
 ...OnExceptionErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 ...nExceptionNotHandledErrorHandlerRefIssueTest.java |  6 +++---
 ...nNotHandledErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 ...otHandledRouteScopedErrorHandlerRefIssueTest.java |  6 +++---
 ...RouteScopedErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 ...ExceptionRouteScopedErrorHandlerRefIssueTest.java |  6 +++---
 ...RouteScopedErrorHandlerRefIssueTwoRoutesTest.java |  6 +++---
 .../camel/issues/OnExceptionWithTwoBeansTest.java    |  7 ++++---
 .../RetryRouteScopedUntilRecipientListIssueTest.java |  6 +++---
 .../camel/issues/SedaFileIdempotentIssueTest.java    |  6 +++---
 .../camel/issues/SetHeaderInDoCatchIssueTest.java    |  7 ++++---
 ...itterUsingBeanReturningCloseableIteratorTest.java |  6 +++---
 .../SplitterUsingBeanReturningMessageTest.java       |  6 +++---
 .../camel/issues/TryCatchWithSplitIssueTest.java     |  6 +++---
 .../camel/language/BeanAnnotationParameterTest.java  |  6 +++---
 .../language/BeanAnnotationParameterTwoTest.java     |  6 +++---
 ...GNLWithDotInParameterPropertyPlaceholderTest.java |  6 +++---
 .../BeanLanguageOGNLWithDotInParameterTest.java      |  6 +++---
 .../java/org/apache/camel/language/BeanTest.java     | 13 ++++++-------
 .../org/apache/camel/language/FileLanguageTest.java  |  6 +++---
 .../apache/camel/language/LanguageServiceTest.java   |  6 +++---
 .../org/apache/camel/language/RefPredicateTest.java  |  6 +++---
 .../test/java/org/apache/camel/language/RefTest.java |  6 +++---
 .../camel/language/simple/SimpleOperatorTest.java    |  6 +++---
 .../language/simple/SimpleParserPredicateTest.java   |  6 +++---
 .../org/apache/camel/language/simple/SimpleTest.java |  6 +++---
 .../org/apache/camel/model/LoadRestFromXmlTest.java  |  6 +++---
 .../model/LoadRouteFromXmlWithOnExceptionTest.java   |  6 +++---
 .../camel/model/LoadRouteFromXmlWithPolicyTest.java  |  8 ++++----
 .../camel/processor/BeanCachedProcessorTest.java     | 15 ++++++++-------
 .../org/apache/camel/processor/BeanCachedTest.java   | 15 ++++++++-------
 .../BeanOgnMethodWithXPathInjectionTest.java         |  8 +++-----
 .../BeanRecipientListInterfaceAnnotationTest.java    | 10 ++++------
 .../camel/processor/BeanRecipientListTest.java       |  8 +++-----
 .../processor/BeanRecipientListTimeoutTest.java      |  8 +++-----
 .../org/apache/camel/processor/BeanRouteTest.java    |  8 +++-----
 .../apache/camel/processor/BeanSingletonTest.java    | 16 ++++++++--------
 .../camel/processor/BeanWithExceptionTest.java       |  8 +++-----
 .../camel/processor/BeanWithXPathInjectionTest.java  |  9 ++++-----
 .../CBRPredicateBeanThrowExceptionTest.java          |  6 +++---
 .../org/apache/camel/processor/ClaimCheckTest.java   |  6 +++---
 .../processor/ComposedMessageProcessorTest.java      |  6 +++---
 .../CustomConsumerExceptionHandlerTest.java          |  6 +++---
 .../camel/processor/CustomRefLoadBalanceTest.java    |  6 +++---
 .../processor/DataFormatServiceCustomRefTest.java    |  6 +++---
 .../DeadLetterChannelAlwaysHandledTest.java          |  6 +++---
 .../DeadLetterChannelRestartFromBeginningTest.java   |  6 +++---
 .../processor/DefinitionPolicyPerProcessorTest.java  |  8 ++++----
 .../java/org/apache/camel/processor/DetourTest.java  |  6 +++---
 .../processor/ErrorHandlerWrappedEachNodeTest.java   |  6 +++---
 .../apache/camel/processor/LogEipListenerTest.java   |  6 +++---
 .../org/apache/camel/processor/LogEipMaskTest.java   |  8 ++++----
 .../org/apache/camel/processor/MethodFilterTest.java | 11 +++++------
 .../org/apache/camel/processor/NormalizerTest.java   |  8 +++-----
 .../camel/processor/PolicyPerProcessorTest.java      |  8 ++++----
 .../apache/camel/processor/PolicyPerRouteTest.java   |  8 ++++----
 .../processor/RecipientListBeanOnPrepareTest.java    |  6 +++---
 .../camel/processor/RecipientListBeanTest.java       |  6 +++---
 .../RecipientListFineGrainedErrorHandlingTest.java   |  6 +++---
 ...ientListParallelFineGrainedErrorHandlingTest.java |  6 +++---
 .../processor/RecipientListReturnValueTest.java      |  6 +++---
 .../apache/camel/processor/RoutePoliciesRefTest.java |  6 +++---
 .../org/apache/camel/processor/SimulatorTest.java    |  8 +++-----
 .../camel/processor/SplitAggregateInOutTest.java     |  6 +++---
 .../processor/SplitRefCustomExpressionTest.java      |  6 +++---
 .../camel/processor/SplitterMethodCallTest.java      |  6 +++---
 .../org/apache/camel/processor/SplitterPojoTest.java |  6 +++---
 .../camel/processor/ThrottlerMethodCallTest.java     |  6 +++---
 .../TryCatchCaughtExceptionFinallyTest.java          |  6 +++---
 .../camel/processor/TryCatchCaughtExceptionTest.java |  6 +++---
 .../TryCatchCaughtExceptionTwoTimesTest.java         |  6 +++---
 .../processor/TryFinallyCaughtExceptionTest.java     |  6 +++---
 .../camel/processor/WireTapBeanAsProcessorTest.java  |  6 +++---
 .../camel/processor/WireTapOnPrepareRefTest.java     |  6 +++---
 .../camel/processor/WireTapShutdownBeanTest.java     |  6 +++---
 .../camel/processor/WireTapShutdownRouteTest.java    |  6 +++---
 .../apache/camel/processor/WireTapVoidBeanTest.java  |  6 +++---
 .../AggregateForceCompletionOnStopTest.java          |  6 +++---
 ...regationStrategyBeanAdapterRefMethodNameTest.java |  6 +++---
 .../AggregationStrategyBeanAdapterRefTest.java       |  6 +++---
 .../processor/async/AsyncEndpointPolicyTest.java     |  8 ++++----
 .../async/AsyncEndpointRecipientListBean3Test.java   |  6 +++---
 .../async/AsyncEndpointRecipientListBean4Test.java   |  6 +++---
 .../async/AsyncEndpointRecipientListBeanTest.java    |  6 +++---
 ...intRecipientListFineGrainedErrorHandlingTest.java |  6 +++---
 .../async/AsyncEndpointRoutingSlipBean2Test.java     |  6 +++---
 .../async/AsyncEndpointRoutingSlipBean3Test.java     |  6 +++---
 .../AsyncEndpointRoutingSlipBeanNonBlockingTest.java |  6 +++---
 .../async/AsyncEndpointRoutingSlipBeanTest.java      |  6 +++---
 ...essorAwaitManagerInterruptWithRedeliveryTest.java | 13 +++++--------
 .../camel/processor/enricher/EnricherRefTest.java    |  6 +++---
 .../enricher/PollEnrichBridgeErrorHandlerTest.java   |  6 +++---
 .../processor/enricher/PollEnricherRefTest.java      |  6 +++---
 .../DefaultErrorHandlerExchangeFormatterRefTest.java |  6 +++---
 ...ErrorHandlerOnExceptionOccurredProcessorTest.java |  6 +++---
 .../DefaultErrorHandlerRetryWhileTest.java           |  6 +++---
 .../onexception/OnExceptionComplexRouteTest.java     |  6 +++---
 .../onexception/OnExceptionFromChoiceTest.java       |  6 +++---
 .../OnExceptionFromChoiceUseOriginalBodyTest.java    |  6 +++---
 .../OnExceptionOccurredProcessorOnExceptionTest.java |  6 +++---
 .../OnExceptionOccurredProcessorTest.java            |  6 +++---
 .../onexception/OnExceptionRetryUntilTest.java       |  6 +++---
 ...ceptionRetryUntilWithDefaultErrorHandlerTest.java |  6 +++---
 .../processor/onexception/OnExceptionRouteTest.java  |  6 +++---
 .../OnExceptionRouteWithDefaultErrorHandlerTest.java |  6 +++---
 .../routingslip/RoutingSlipDataModificationTest.java |  8 +++-----
 .../routingslip/RoutingSlipWithExceptionTest.java    |  8 +++-----
 .../JndiCamelSingletonInitialContextFactoryTest.java | 11 ++++++-----
 .../apache/camel/util/CamelContextHelperTest.java    |  6 +++---
 .../util/DumpModelAsXmlDanishCharactersTest.java     |  6 +++---
 .../util/DumpModelAsXmlRouteExpressionTest.java      |  6 +++---
 .../camel/util/DumpModelAsXmlRoutePredicateTest.java |  6 +++---
 .../management/ManagedCustomLoadBalancerTest.java    | 10 +++++-----
 .../apache/camel/management/ManagedProcessTest.java  | 10 +++++-----
 289 files changed, 995 insertions(+), 1062 deletions(-)

diff --git a/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java b/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
index 80d0f62..8af9e69 100644
--- a/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
+++ b/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
@@ -24,9 +24,10 @@ import org.apache.camel.builder.NotifyBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.spi.Language;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
 import org.apache.camel.support.jndi.JndiTest;
 import org.junit.After;
 import org.junit.Before;
@@ -190,8 +191,8 @@ public abstract class ContextTestSupport extends TestSupport {
         return context;
     }
 
-    protected JndiRegistry createRegistry() throws Exception {
-        return new JndiRegistry(createJndiContext());
+    protected Registry createRegistry() throws Exception {
+        return new DefaultRegistry();
     }
 
     protected Context createJndiContext() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderFromRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderFromRouteTest.java
index ee0cf75..20838fb 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderFromRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderFromRouteTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.DefaultEndpoint;
 import org.junit.Test;
@@ -64,8 +64,8 @@ public class NotifyBuilderFromRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        final JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        final Registry registry = super.createRegistry();
         registry.bind("proxy", new ProxyComponent());
         return registry;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java
index fc03d15..3fd5d89 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java
@@ -22,15 +22,15 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy;
 import org.junit.Test;
 
 public class ThreadPoolBuilderTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         ExecutorService someone = Executors.newCachedThreadPool();
         jndi.bind("someonesPool", someone);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java
index 62d8c5c..1764faa 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -37,8 +37,8 @@ public class BeanChoseMethodWithMatchingTypeAndSkipSettersTest extends ContextTe
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("orderService", service);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanComponentMissingParenthesisTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanComponentMissingParenthesisTest.java
index a388a35..4ad699e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanComponentMissingParenthesisTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanComponentMissingParenthesisTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.component.bean;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanComponentMissingParenthesisTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyContactBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanConcurrentTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanConcurrentTest.java
index 1cd5ab6..fcb3df7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanConcurrentTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanConcurrentTest.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanConcurrentTest extends ContextTestSupport {
@@ -60,8 +60,8 @@ public class BeanConcurrentTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
index 06750b7..dfb98a6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanEndpointTest extends ContextTestSupport {
@@ -29,8 +29,8 @@ public class BeanEndpointTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new FooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExchangeAsReturnTypeNotAllowedTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExchangeAsReturnTypeNotAllowedTest.java
index 402fbe1..989ac24 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExchangeAsReturnTypeNotAllowedTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExchangeAsReturnTypeNotAllowedTest.java
@@ -16,14 +16,12 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -48,13 +46,13 @@ public class BeanExchangeAsReturnTypeNotAllowedTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    @Override
+@Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodAmbiguousTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodAmbiguousTest.java
index 30f0474..56e3896 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodAmbiguousTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodAmbiguousTest.java
@@ -21,14 +21,14 @@ import java.io.ByteArrayInputStream;
 import org.apache.camel.BeanScope;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanExplicitMethodAmbiguousTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy", new MyDummyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodTest.java
index ce3849a..dace948 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExplicitMethodTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.component.bean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanExplicitMethodTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyOtherFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExpressionConcurrentTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExpressionConcurrentTest.java
index 62c6101..9e054eb 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExpressionConcurrentTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanExpressionConcurrentTest.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanExpressionConcurrentTest extends ContextTestSupport {
@@ -60,8 +60,8 @@ public class BeanExpressionConcurrentTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanImplicitMethodTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanImplicitMethodTest.java
index 2a94e43..1b8c6f6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanImplicitMethodTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanImplicitMethodTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanImplicitMethodTest extends ContextTestSupport {
@@ -47,13 +45,13 @@ public class BeanImplicitMethodTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    public static class MyBean {
+public static class MyBean {
 
         public Integer intRequest(Integer request) {
             return request;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInPipelineTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInPipelineTest.java
index 24b0885..2fd4af9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInPipelineTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInPipelineTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -35,8 +33,8 @@ public class BeanInPipelineTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("one", new MyBean("one"));
         answer.bind("two", new MyBean("two"));
         answer.bind("three", new MyBean("three"));
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoSelectMethodTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoSelectMethodTest.java
index 52e0052..9670364 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoSelectMethodTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoSelectMethodTest.java
@@ -22,14 +22,14 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeException;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanInfoSelectMethodTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInvokeWithNullBodyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInvokeWithNullBodyTest.java
index 76c5aa0..5017640 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInvokeWithNullBodyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanInvokeWithNullBodyTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanInvokeWithNullBodyTest extends ContextTestSupport {
@@ -52,8 +52,8 @@ public class BeanInvokeWithNullBodyTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyNullFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLifecycleTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLifecycleTest.java
index 6f77e3b..8a4676c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLifecycleTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLifecycleTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Service;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -72,8 +72,8 @@ public class BeanLifecycleTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("statefulInstanceInRegistry", statefulInstanceInRegistry);
         jndi.bind("statefulInstanceInRegistryNoCache", statefulInstanceInRegistryNoCache);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMapPutTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMapPutTest.java
index f0ccd37..790a95c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMapPutTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMapPutTest.java
@@ -21,7 +21,7 @@ import java.util.Map;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanMapPutTest extends ContextTestSupport {
@@ -29,8 +29,8 @@ public class BeanMapPutTest extends ContextTestSupport {
     private Map<String, String> myMap = new HashMap<>();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myMap", myMap);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithCommaTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithCommaTest.java
index 27e880d..eeb4665 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithCommaTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithCommaTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -63,8 +63,8 @@ public class BeanMethodValueWithCommaTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithExchangeTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithExchangeTest.java
index 38f04d5..08fb905 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithExchangeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodValueWithExchangeTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.bean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -46,8 +46,8 @@ public class BeanMethodValueWithExchangeTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithEmptyParameterAndNoMethodWithNoParameterIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithEmptyParameterAndNoMethodWithNoParameterIssueTest.java
index 9e89512..756e85f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithEmptyParameterAndNoMethodWithNoParameterIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithEmptyParameterAndNoMethodWithNoParameterIssueTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -29,8 +29,8 @@ import org.junit.Test;
 public class BeanMethodWithEmptyParameterAndNoMethodWithNoParameterIssueTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyBean());
         jndi.bind("myOtherBean", new MyOtherBean());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithStringParameterTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithStringParameterTest.java
index 7ef0b7a..9f4811f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithStringParameterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithStringParameterTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.bean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -28,8 +28,8 @@ import org.junit.Test;
 public class BeanMethodWithStringParameterTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanOgnlPerformanceTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanOgnlPerformanceTest.java
index 52ab904..420c592 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanOgnlPerformanceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanOgnlPerformanceTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.StopWatch;
 import org.junit.Test;
 
@@ -31,8 +31,8 @@ public class BeanOgnlPerformanceTest extends ContextTestSupport {
     private String cache = "true";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidSyntaxTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidSyntaxTest.java
index dd2412e..1e5a65f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidSyntaxTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidSyntaxTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.bean;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanParameterInvalidSyntaxTest extends ContextTestSupport {
@@ -40,8 +40,8 @@ public class BeanParameterInvalidSyntaxTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidValueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidValueTest.java
index d42dde1..9023143 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidValueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterInvalidValueTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExpressionEvaluationException;
 import org.apache.camel.TypeConversionException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -91,8 +91,8 @@ public class BeanParameterInvalidValueTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterMethodCallThreeBodyOgnlTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterMethodCallThreeBodyOgnlTest.java
index 371b3bd..67fd8ea 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterMethodCallThreeBodyOgnlTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterMethodCallThreeBodyOgnlTest.java
@@ -21,7 +21,7 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -43,8 +43,8 @@ public class BeanParameterMethodCallThreeBodyOgnlTest extends ContextTestSupport
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("router", new MyRouter());
         jndi.bind("foo", new MyBean());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterNoBeanBindingTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterNoBeanBindingTest.java
index 2caec1b..eedcba0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterNoBeanBindingTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterNoBeanBindingTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.RuntimeExchangeException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -46,8 +46,8 @@ public class BeanParameterNoBeanBindingTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterThreeBodyOgnlTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterThreeBodyOgnlTest.java
index d120db5..b843efc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterThreeBodyOgnlTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterThreeBodyOgnlTest.java
@@ -21,7 +21,7 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -43,8 +43,8 @@ public class BeanParameterThreeBodyOgnlTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOgnlTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOgnlTest.java
index 02ba5b1..9a3913c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOgnlTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOgnlTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -59,8 +59,8 @@ public class BeanParameterValueOgnlTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOverloadedTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOverloadedTest.java
index 2577db1..4f99763 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOverloadedTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueOverloadedTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -45,8 +45,8 @@ public class BeanParameterValueOverloadedTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueTest.java
index 20495f8..116cef3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanParameterValueTest.java
@@ -21,7 +21,7 @@ import java.util.Map;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -107,8 +107,8 @@ public class BeanParameterValueTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java
index a62cc2b..e2c4acc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java
@@ -18,15 +18,13 @@ package org.apache.camel.component.bean;
 
 import java.util.Map;
 
-import javax.naming.Context;
-
 import org.apache.camel.Body;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Headers;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -54,8 +52,8 @@ public class BeanPipelineTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("foo", new FooBean());
         answer.bind("bar", new BarBean());
         answer.bind("baz", new BazBean());
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPropagateHeaderTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPropagateHeaderTest.java
index db3b8f9..9cee357 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPropagateHeaderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPropagateHeaderTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.bean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanPropagateHeaderTest extends ContextTestSupport {
@@ -37,8 +37,8 @@ public class BeanPropagateHeaderTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("order", new MyOrderService());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefMethodNotFoundTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefMethodNotFoundTest.java
index cb3442a..ce093a6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefMethodNotFoundTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefMethodNotFoundTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.component.bean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanRefMethodNotFoundTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefNotFoundTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefNotFoundTest.java
index 414a019..2c9e3c5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefNotFoundTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRefNotFoundTest.java
@@ -20,14 +20,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanRefNotFoundTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java
index 08abffc..512a722 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanRegistryBeanTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.component.bean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Expression;
 import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanRegistryBeanTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         jndi.bind("static", MyFooBean.class);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableReturnNullTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableReturnNullTest.java
index 209b681..c4ed584 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableReturnNullTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableReturnNullTest.java
@@ -18,13 +18,11 @@ package org.apache.camel.component.bean;
 
 import java.util.concurrent.Callable;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanReturnCallableReturnNullTest extends ContextTestSupport {
@@ -42,13 +40,13 @@ public class BeanReturnCallableReturnNullTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    @Override
+@Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableTest.java
index 51c4e94..8c89aee 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanReturnCallableTest.java
@@ -18,12 +18,10 @@ package org.apache.camel.component.bean;
 
 import java.util.concurrent.Callable;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanReturnCallableTest extends ContextTestSupport {
@@ -40,13 +38,13 @@ public class BeanReturnCallableTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    @Override
+@Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationAndExchangeTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationAndExchangeTest.java
index 84843f9..ebd9228 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationAndExchangeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationAndExchangeTest.java
@@ -16,15 +16,13 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.Body;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Header;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -44,13 +42,13 @@ public class BeanWithAnnotationAndExchangeTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    @Override
+@Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationInheritedTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationInheritedTest.java
index bf1482d..181b677 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationInheritedTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithAnnotationInheritedTest.java
@@ -20,13 +20,11 @@ import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Header;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -76,8 +74,9 @@ public class BeanWithAnnotationInheritedTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+
         answer.bind("b", new B());
         answer.bind("p", Proxy.newProxyInstance(I1.class.getClassLoader(), new Class[] {I1.class}, new InvocationHandler() {
             @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExchangeExceptionAnnotationTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExchangeExceptionAnnotationTest.java
index 29afd66..941421d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExchangeExceptionAnnotationTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExchangeExceptionAnnotationTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExchangeException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanWithExchangeExceptionAnnotationTest extends ContextTestSupport {
@@ -43,13 +41,13 @@ public class BeanWithExchangeExceptionAnnotationTest extends ContextTestSupport
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    @Override
+@Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionPredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionPredicateTest.java
index aadcc44..cc02396 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionPredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionPredicateTest.java
@@ -16,12 +16,10 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.language.simple.Simple;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanWithExpressionInjectionPredicateTest extends ContextTestSupport {
@@ -44,8 +42,8 @@ public class BeanWithExpressionInjectionPredicateTest extends ContextTestSupport
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionTest.java
index 6811438..b24e93b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithExpressionInjectionTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.language.simple.Simple;
 import org.apache.camel.processor.BeanRouteTest;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,8 +40,9 @@ public class BeanWithExpressionInjectionTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeaderTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeaderTest.java
index bcae570..914073c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeaderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeaderTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -43,13 +41,13 @@ public class BeanWithHeaderTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    @Override
+@Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject2Test.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject2Test.java
index ea579ac..9159955 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject2Test.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject2Test.java
@@ -21,8 +21,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Header;
@@ -31,7 +29,7 @@ import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -95,8 +93,8 @@ public class BeanWithHeadersAndBodyInject2Test extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java
index e49f616..1078536 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInject3Test.java
@@ -18,14 +18,12 @@ package org.apache.camel.component.bean;
 
 import java.util.Map;
 
-import javax.naming.Context;
-
 import org.apache.camel.Body;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Headers;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanWithHeadersAndBodyInject3Test extends ContextTestSupport {
@@ -70,8 +68,8 @@ public class BeanWithHeadersAndBodyInject3Test extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInjectionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInjectionTest.java
index 51e3262..1f38f6e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInjectionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithHeadersAndBodyInjectionTest.java
@@ -18,8 +18,6 @@ package org.apache.camel.component.bean;
 
 import java.util.Map;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Headers;
@@ -27,7 +25,7 @@ import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.processor.BeanRouteTest;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,8 +58,8 @@ public class BeanWithHeadersAndBodyInjectionTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithInputStreamBodyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithInputStreamBodyTest.java
index ca94e5b..e322659 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithInputStreamBodyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithInputStreamBodyTest.java
@@ -22,14 +22,14 @@ import java.io.InputStream;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanWithInputStreamBodyTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyCoolBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithMethodHeaderTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithMethodHeaderTest.java
index 9494243..17ab211 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithMethodHeaderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithMethodHeaderTest.java
@@ -16,15 +16,13 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanWithMethodHeaderTest extends ContextTestSupport {
@@ -128,8 +126,8 @@ public class BeanWithMethodHeaderTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         bean = new MyBean();
         answer.bind("myBean", bean);
         return answer;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersAndBodyInjectionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersAndBodyInjectionTest.java
index b9ad77e..1dfe79e8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersAndBodyInjectionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersAndBodyInjectionTest.java
@@ -18,8 +18,6 @@ package org.apache.camel.component.bean;
 
 import java.util.Map;
 
-import javax.naming.Context;
-
 import org.apache.camel.Body;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
@@ -28,7 +26,7 @@ import org.apache.camel.Headers;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanWithPropertiesAndHeadersAndBodyInjectionTest extends ContextTestSupport {
@@ -64,8 +62,8 @@ public class BeanWithPropertiesAndHeadersAndBodyInjectionTest extends ContextTes
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersInjectionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersInjectionTest.java
index 4542312..04d134a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersInjectionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithPropertiesAndHeadersInjectionTest.java
@@ -18,8 +18,6 @@ package org.apache.camel.component.bean;
 
 import java.util.Map;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeProperties;
@@ -28,7 +26,7 @@ import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.processor.BeanRouteTest;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -63,8 +61,8 @@ public class BeanWithPropertiesAndHeadersInjectionTest extends ContextTestSuppor
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingHeaderValueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingHeaderValueTest.java
index 3a0826c..287208f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingHeaderValueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingHeaderValueTest.java
@@ -16,12 +16,10 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Handler;
 import org.apache.camel.language.xpath.XPath;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -42,8 +40,8 @@ public class BeanWithXPathInjectionUsingHeaderValueTest extends ContextTestSuppo
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingResultTypeTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingResultTypeTest.java
index a7cdd0e..226af39 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingResultTypeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanWithXPathInjectionUsingResultTypeTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.language.xpath.XPath;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanWithXPathInjectionUsingResultTypeTest extends ContextTestSupport {
@@ -35,8 +33,9 @@ public class BeanWithXPathInjectionUsingResultTypeTest extends ContextTestSuppor
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BodyAnnotationToDisambiguateMethodsTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BodyAnnotationToDisambiguateMethodsTest.java
index 6f85200..e062abb 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BodyAnnotationToDisambiguateMethodsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BodyAnnotationToDisambiguateMethodsTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.Body;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.processor.BeanRouteTest;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,8 +39,8 @@ public class BodyAnnotationToDisambiguateMethodsTest extends ContextTestSupport
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java
index 95e7804..f2209d6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class ClassComponentWithPropertiesLookupSetFromEndpointTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", "Hi");
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/CustomParameterMappingStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/CustomParameterMappingStrategyTest.java
index 42a85cb..195a485 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/CustomParameterMappingStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/CustomParameterMappingStrategyTest.java
@@ -20,15 +20,15 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.ExpressionAdapter;
 import org.junit.Test;
 
 public class CustomParameterMappingStrategyTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         jndi.bind(BeanConstants.BEAN_PARAMETER_MAPPING_STRATEGY, new MyCustomStrategy());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java
index 66099ea..b98e72d1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/DefaultParameterMappingStrategyTest.java
@@ -23,15 +23,14 @@ import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class DefaultParameterMappingStrategyTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/ExpressionAnnotationToDisambiguateMethodsTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/ExpressionAnnotationToDisambiguateMethodsTest.java
index 959aa69..8dd6b6b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/ExpressionAnnotationToDisambiguateMethodsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/ExpressionAnnotationToDisambiguateMethodsTest.java
@@ -16,14 +16,12 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Handler;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.language.simple.Simple;
 import org.apache.camel.processor.BeanRouteTest;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,8 +46,8 @@ public class ExpressionAnnotationToDisambiguateMethodsTest extends ContextTestSu
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         answer.bind("myOtherBean", myOtherBean);
         return answer;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/FileBeanParameterBindingTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/FileBeanParameterBindingTest.java
index 112c068..8fb8767 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/FileBeanParameterBindingTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/FileBeanParameterBindingTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Header;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -35,8 +35,8 @@ public class FileBeanParameterBindingTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefMethodNotFoundTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefMethodNotFoundTest.java
index 90e79c3..c56b0b5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefMethodNotFoundTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefMethodNotFoundTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.component.bean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class MethodCallBeanRefMethodNotFoundTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefNotFoundTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefNotFoundTest.java
index 0e5ad4d..8988a60 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefNotFoundTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallBeanRefNotFoundTest.java
@@ -20,14 +20,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class MethodCallBeanRefNotFoundTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallRefOrBeanPrefixTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallRefOrBeanPrefixTest.java
index cdb8cea..3310d82 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallRefOrBeanPrefixTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/MethodCallRefOrBeanPrefixTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class MethodCallRefOrBeanPrefixTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/MyCurrencyBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/MyCurrencyBeanTest.java
index e7bac38..7ef6a6c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/MyCurrencyBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/MyCurrencyBeanTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class MyCurrencyBeanTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myCurrencyBean", new MyCurrencyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/NewInstanceTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/NewInstanceTest.java
index 8ce6598..2d09304 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/NewInstanceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/NewInstanceTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.BeanScope;
 import org.apache.camel.Body;
 import org.apache.camel.ContextTestSupport;
@@ -25,6 +23,9 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.processor.BeanRouteTest;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.apache.camel.support.jndi.JndiContext;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -51,10 +52,10 @@ public class NewInstanceTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
+    protected Registry createRegistry() throws Exception {
         jndiContext = new JndiContext();
         jndiContext.bind("myBean", new MyBean());
-        return jndiContext;
+        return new DefaultRegistry(new JndiBeanRepository(jndiContext));
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/PredicateAsBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/PredicateAsBeanTest.java
index e0cfaa0..e49cd48 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/PredicateAsBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/PredicateAsBeanTest.java
@@ -16,14 +16,12 @@
  */
 package org.apache.camel.component.bean;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.processor.BeanRouteTest;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,8 +40,8 @@ public class PredicateAsBeanTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myPredicate", myPredicate);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithCommaTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithCommaTest.java
index 6118fce..d9eacd8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithCommaTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithCommaTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -67,8 +67,8 @@ public class SimpleLanguageBeanFunctionMethodValueWithCommaTest extends ContextT
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithParenthesisTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithParenthesisTest.java
index 682cad6..e7a0024 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithParenthesisTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/SimpleLanguageBeanFunctionMethodValueWithParenthesisTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -67,8 +67,8 @@ public class SimpleLanguageBeanFunctionMethodValueWithParenthesisTest extends Co
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanRouteToDerivedClassTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanRouteToDerivedClassTest.java
index ec35df6..fde0527 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanRouteToDerivedClassTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanRouteToDerivedClassTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.bean.issues;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanRouteToDerivedClassTest extends ContextTestSupport {
@@ -103,8 +103,8 @@ public class BeanRouteToDerivedClassTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("derived", derived);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanVsProcessorPerformanceTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanVsProcessorPerformanceTest.java
index 8d747e1..bccac45 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanVsProcessorPerformanceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/BeanVsProcessorPerformanceTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean.issues;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.StopWatch;
 import org.junit.Test;
 
@@ -30,8 +30,8 @@ public class BeanVsProcessorPerformanceTest extends ContextTestSupport {
     private final int size = 100000;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myLittleBean", new MyLittleBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/FilterBeanRegistryTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/FilterBeanRegistryTest.java
index 82acd2e..5b62331 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/FilterBeanRegistryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/issues/FilterBeanRegistryTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.bean.issues;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FilterBeanRegistryTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/BigDataSetTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/BigDataSetTest.java
index 3e93e7e..df461e3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/BigDataSetTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/BigDataSetTest.java
@@ -18,11 +18,10 @@ package org.apache.camel.component.dataset;
 
 import java.util.concurrent.TimeUnit;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -38,10 +37,10 @@ public class BigDataSetTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java
index ed3bf8f..8257ba1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/CustomDataSetTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
@@ -26,6 +24,7 @@ import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.builder.PredicateBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.language.xpath.XPathBuilder;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.PredicateAssertHelper;
 import org.junit.Test;
 
@@ -48,10 +47,10 @@ public class CustomDataSetTest extends ContextTestSupport {
     };
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetConsumerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetConsumerTest.java
index eb82dc5..651eae1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetConsumerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetConsumerTest.java
@@ -16,12 +16,11 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -37,10 +36,10 @@ public class DataSetConsumerTest extends ContextTestSupport {
     final String resultUri = "mock://result";
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     /**
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetPreloadTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetPreloadTest.java
index 6f4d1ad..6377912 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetPreloadTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetPreloadTest.java
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -31,10 +30,10 @@ public class DataSetPreloadTest extends ContextTestSupport {
     private String uri = "dataset:foo?initialDelay=0&preloadSize=5";
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetProducerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetProducerTest.java
index a5cf902..120adcc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetProducerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetProducerTest.java
@@ -16,12 +16,11 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -38,10 +37,10 @@ public class DataSetProducerTest extends ContextTestSupport {
     final String resultUri = "mock://result";
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetSedaTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetSedaTest.java
index 1a97a9f..dd645d2 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetSedaTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetSedaTest.java
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -33,10 +32,10 @@ public class DataSetSedaTest extends ContextTestSupport {
     private String uri = "dataset:foo?initialDelay=0&produceDelay=1";
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetTest.java
index 36d989f..c189c55 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetTest.java
@@ -16,10 +16,9 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class DataSetTest extends ContextTestSupport {
@@ -27,10 +26,10 @@ public class DataSetTest extends ContextTestSupport {
     protected SimpleDataSet dataSet = new SimpleDataSet(20);
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerTest.java
index 0356614..093f525 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerTest.java
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -36,10 +35,10 @@ public class FileDataSetConsumerTest extends ContextTestSupport {
     final String dataSetUri = "dataset://" + dataSetName;
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerWithSplitTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerWithSplitTest.java
index 4d772ae..0b786ab 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerWithSplitTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetConsumerWithSplitTest.java
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.component.dataset;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -37,10 +36,10 @@ public class FileDataSetConsumerWithSplitTest extends ContextTestSupport {
     final String dataSetUri = "dataset://" + dataSetName;
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerTest.java
index 93eb16d..7ada9ae 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerTest.java
@@ -22,11 +22,10 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.Registry;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Rule;
@@ -47,10 +46,10 @@ public class FileDataSetProducerTest extends ContextTestSupport {
     final String dataSetUri = "dataset://" + dataSetName;
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerWithSplitTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerWithSplitTest.java
index ce02303..915ec1f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerWithSplitTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/FileDataSetProducerWithSplitTest.java
@@ -22,11 +22,10 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.Registry;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Rule;
@@ -47,10 +46,10 @@ public class FileDataSetProducerWithSplitTest extends ContextTestSupport {
     final String dataSetUri = "dataset://" + dataSetName;
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetConsumerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetConsumerTest.java
index 5618bf4..2b57272 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetConsumerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetConsumerTest.java
@@ -19,11 +19,10 @@ package org.apache.camel.component.dataset;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -36,10 +35,10 @@ public class ListDataSetConsumerTest extends ContextTestSupport {
     final String dataSetUri = "dataset://" + dataSetName;
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetProducerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetProducerTest.java
index 15c69f8..3e05055 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetProducerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/ListDataSetProducerTest.java
@@ -19,11 +19,10 @@ package org.apache.camel.component.dataset;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -36,10 +35,10 @@ public class ListDataSetProducerTest extends ContextTestSupport {
     final String dataSetUri = "dataset://" + dataSetName;
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/dataset/RoutePerformanceTest.java b/core/camel-core/src/test/java/org/apache/camel/component/dataset/RoutePerformanceTest.java
index c9e6428..cf888c5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/dataset/RoutePerformanceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/dataset/RoutePerformanceTest.java
@@ -20,11 +20,10 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.StopWatch;
 import org.junit.Test;
 
@@ -42,10 +41,10 @@ public class RoutePerformanceTest extends ContextTestSupport {
     private String uri = "mock:results";
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", dataSet);
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", dataSet);
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
index be07012..fc4aa6f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.directvm;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.junit.Test;
 
@@ -30,7 +29,7 @@ public class DirectVmHeaderFilterStrategyTest extends ContextTestSupport {
 
     @Test
     public void testPropertiesPropagatedOrNot() throws Exception {
-        context.getRegistry(JndiRegistry.class).bind("headerFilterStrategy", new HeaderFilterStrategy() {
+        context.getRegistry().bind("headerFilterStrategy", new HeaderFilterStrategy() {
             @Override
             public boolean applyFilterToExternalHeaders(String headerName, Object headerValue, Exchange exchange) {
                 return headerName.equals("Header2");
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/AntPathMatcherGenericFileFilterTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/AntPathMatcherGenericFileFilterTest.java
index 98774ee..ee094f5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/AntPathMatcherGenericFileFilterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/AntPathMatcherGenericFileFilterTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -39,11 +39,11 @@ public class AntPathMatcherGenericFileFilterTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
+    protected Registry createRegistry() throws Exception {
         AntPathMatcherGenericFileFilter<File> filterNotCaseSensitive = new AntPathMatcherGenericFileFilter<>("**/c*");
         filterNotCaseSensitive.setCaseSensitive(false);
 
-        JndiRegistry jndi = super.createRegistry();
+        Registry jndi = super.createRegistry();
         jndi.bind("filter", new AntPathMatcherGenericFileFilter<File>("**/c*"));
         jndi.bind("caseInsensitiveFilter", filterNotCaseSensitive);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/BeanToFileTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/BeanToFileTest.java
index f491036..e4de993 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/BeanToFileTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/BeanToFileTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.component.file;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -43,8 +41,8 @@ public class BeanToFileTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileBeginFailureOneTimeTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileBeginFailureOneTimeTest.java
index 6e71bcc..d021932 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileBeginFailureOneTimeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileBeginFailureOneTimeTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -38,8 +38,8 @@ public class FileBeginFailureOneTimeTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myStrategy", myStrategy);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerBridgeRouteExceptionHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerBridgeRouteExceptionHandlerTest.java
index eb84f82..b569238 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerBridgeRouteExceptionHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerBridgeRouteExceptionHandlerTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -47,8 +47,8 @@ public class FileConsumerBridgeRouteExceptionHandlerTest extends ContextTestSupp
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myReadLockStrategy", myReadLockStrategy);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomExceptionHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomExceptionHandlerTest.java
index 327d87f..3594e39 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomExceptionHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomExceptionHandlerTest.java
@@ -25,8 +25,8 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -53,8 +53,8 @@ public class FileConsumerCustomExceptionHandlerTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myExceptionHandler", myExceptionHandler);
         jndi.bind("myReadLockStrategy", myReadLockStrategy);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomSchedulerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomSchedulerTest.java
index 732cb05..f0af560 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomSchedulerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerCustomSchedulerTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ScheduledPollConsumerScheduler;
 import org.junit.Before;
 import org.junit.Test;
@@ -34,8 +34,8 @@ public class FileConsumerCustomSchedulerTest extends ContextTestSupport {
     private MyScheduler scheduler = new MyScheduler();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myScheduler", scheduler);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerDirectoryFilterTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerDirectoryFilterTest.java
index 8c1f1a9..e1f3af3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerDirectoryFilterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerDirectoryFilterTest.java
@@ -25,7 +25,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -38,8 +38,8 @@ public class FileConsumerDirectoryFilterTest extends ContextTestSupport {
     private final Set<String> names = new TreeSet<>();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myFilter", new MyDirectoryFilter<>());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionTest.java
index 84faad1..37c12e8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -39,8 +39,8 @@ public class FileConsumerFileExpressionTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("counter", new MyGuidGenerator());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionThrowExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionThrowExceptionTest.java
index bc9ca36..71aacc1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionThrowExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileExpressionThrowExceptionTest.java
@@ -25,8 +25,8 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.bean.MethodNotFoundException;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -50,8 +50,8 @@ public class FileConsumerFileExpressionThrowExceptionTest extends ContextTestSup
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("counter", new MyGuidGenerator());
         jndi.bind("myPoll", new MyPollStrategy());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java
index 7010085..b3d51c0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -32,8 +32,8 @@ public class FileConsumerFileFilterTest extends ContextTestSupport {
     private String fileUrl = "file://target/data/filefilter/?initialDelay=0&delay=10&filter=#myFilter";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myFilter", new MyFileFilter<>());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerIdempotentRefTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerIdempotentRefTest.java
index 4a82889..a13cd19 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerIdempotentRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerIdempotentRefTest.java
@@ -22,8 +22,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.IdempotentRepository;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -35,8 +35,8 @@ public class FileConsumerIdempotentRefTest extends ContextTestSupport {
     private static volatile boolean invoked;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRepo", new MyIdempotentRepository());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerMoveExpressionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerMoveExpressionTest.java
index 8b5434d..d186c73 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerMoveExpressionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerMoveExpressionTest.java
@@ -22,8 +22,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.bean.BeanExpression;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -45,8 +45,8 @@ public class FileConsumerMoveExpressionTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myguidgenerator", new MyGuidGenerator());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyNotBeginTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyNotBeginTest.java
index 5a8149d..9b8b0dd 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyNotBeginTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyNotBeginTest.java
@@ -22,8 +22,8 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -38,8 +38,8 @@ public class FileConsumerPollStrategyNotBeginTest extends ContextTestSupport {
     private String fileUrl = "file://target/data/pollstrategy/?pollStrategy=#myPoll&noop=true&initialDelay=0&delay=10";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPoll", new MyPollStrategy());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyPolledMessagesTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyPolledMessagesTest.java
index fc3c634..e8add4d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyPolledMessagesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyPolledMessagesTest.java
@@ -25,8 +25,8 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -41,8 +41,8 @@ public class FileConsumerPollStrategyPolledMessagesTest extends ContextTestSuppo
     private String fileUrl = "file://target/data/pollstrategy/?pollStrategy=#myPoll&initialDelay=0&delay=10";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPoll", new MyPollStrategy());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyRollbackThrowExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyRollbackThrowExceptionTest.java
index 684efea..8b688ac 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyRollbackThrowExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyRollbackThrowExceptionTest.java
@@ -24,8 +24,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -43,8 +43,8 @@ public class FileConsumerPollStrategyRollbackThrowExceptionTest extends ContextT
     private String fileUrl = "file://target/data/pollstrategy/?pollStrategy=#myPoll&initialDelay=0&delay=10";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPoll", new MyPollStrategy());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyStopOnRollbackTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyStopOnRollbackTest.java
index 59aecec..3c46c66 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyStopOnRollbackTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyStopOnRollbackTest.java
@@ -23,8 +23,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -39,8 +39,8 @@ public class FileConsumerPollStrategyStopOnRollbackTest extends ContextTestSuppo
     private String fileUrl = "file://target/data/pollstrategy/?pollStrategy=#myPoll&initialDelay=0&delay=10";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPoll", new MyPollStrategy());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyTest.java
index 7695d4b..4166560 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerPollStrategyTest.java
@@ -22,8 +22,8 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -38,8 +38,8 @@ public class FileConsumerPollStrategyTest extends ContextTestSupport {
     private String fileUrl = "file://target/data/pollstrategy/?pollStrategy=#myPoll&noop=true&initialDelay=0&delay=10";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPoll", new MyPollStrategy());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileMarkerFileRecursiveFilterDeleteOldLockFilesTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileMarkerFileRecursiveFilterDeleteOldLockFilesTest.java
index 1f3d404..57705a0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileMarkerFileRecursiveFilterDeleteOldLockFilesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileMarkerFileRecursiveFilterDeleteOldLockFilesTest.java
@@ -22,15 +22,15 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
 public class FileMarkerFileRecursiveFilterDeleteOldLockFilesTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myFilter", new MyFileFilter());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java
index f6762fd..2cea959 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java
@@ -22,7 +22,7 @@ import java.util.Date;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -41,8 +41,8 @@ public class FileProducerExpressionTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myguidgenerator", new MyGuidGenerator());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerMoveExistingStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerMoveExistingStrategyTest.java
index 4d1878e..9d7256f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerMoveExistingStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileProducerMoveExistingStrategyTest.java
@@ -21,7 +21,7 @@ import java.io.File;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.file.strategy.FileMoveExistingStrategy;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.ObjectHelper;
 import org.junit.Before;
@@ -44,8 +44,8 @@ public class FileProducerMoveExistingStrategyTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myStrategy", myStrategy);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java
index bdc7200..6ac4d97 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -34,8 +34,8 @@ public class FileSorterRefTest extends ContextTestSupport {
     private String fileUrl = "file://target/data/filesorter/?initialDelay=0&delay=10&sorter=#mySorter";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("mySorter", new MyFileSorter<>());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameRouteTest.java
index c0cd5a2..60ed4a5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameRouteTest.java
@@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -42,8 +42,8 @@ public class FilerProducerDoneFileNameRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myProp", myProp);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameTest.java
index c750f9c..930df68 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FilerProducerDoneFileNameTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExpressionIllegalSyntaxException;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -43,8 +43,8 @@ public class FilerProducerDoneFileNameTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myProp", myProp);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java
index 2b46255..44472b4 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -42,9 +42,9 @@ public class ToFileRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
+    protected Registry createRegistry() throws Exception {
         // bind our processor in the registry with the given id
-        JndiRegistry reg = super.createRegistry();
+        Registry reg = super.createRegistry();
         reg.bind("processReport", new ProcessReport());
         return reg;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedAsyncTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedAsyncTest.java
index 7a154a8..c377a07 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedAsyncTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedAsyncTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.NotifyBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.processor.idempotent.MemoryIdempotentRepository;
 import org.junit.Before;
 import org.junit.Test;
@@ -42,8 +42,8 @@ public class FileIdempotentReadLockDelayedAsyncTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRepo", myRepo);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedTest.java
index 385c4d3..9a9e65b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockDelayedTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.NotifyBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.processor.idempotent.MemoryIdempotentRepository;
 import org.junit.Before;
 import org.junit.Test;
@@ -42,8 +42,8 @@ public class FileIdempotentReadLockDelayedTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRepo", myRepo);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockTest.java
index 5fde4dd..cd4d84e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/strategy/FileIdempotentReadLockTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.NotifyBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.processor.idempotent.MemoryIdempotentRepository;
 import org.junit.Before;
 import org.junit.Test;
@@ -42,8 +42,8 @@ public class FileIdempotentReadLockTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRepo", myRepo);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/language/LanguageScriptRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/language/LanguageScriptRouteTest.java
index 039b79d..a135539 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/language/LanguageScriptRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/language/LanguageScriptRouteTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.language;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class LanguageScriptRouteTest extends ContextTestSupport {
@@ -33,8 +33,8 @@ public class LanguageScriptRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myScript", "Hello ${body}");
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java b/core/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java
index 2e14387..0c6c62e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/log/LogListenerTest.java
@@ -21,8 +21,6 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.support.jndi.JndiTest;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -48,8 +46,7 @@ public class LogListenerTest {
     }
 
     protected CamelContext createCamelContext() throws Exception {
-        JndiRegistry registry = new JndiRegistry(JndiTest.createInitialContext());
-        CamelContext context = new DefaultCamelContext(registry);
+        CamelContext context = new DefaultCamelContext();
         context.addRoutes(createRouteBuilder());
         return context;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/log/LogMaskTest.java b/core/camel-core/src/test/java/org/apache/camel/component/log/LogMaskTest.java
index ef7c21e..7078364 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/log/LogMaskTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/log/LogMaskTest.java
@@ -19,18 +19,18 @@ package org.apache.camel.component.log;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.MaskingFormatter;
-import org.apache.camel.support.jndi.JndiTest;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
 import org.junit.Assert;
 import org.junit.Test;
 
 public class LogMaskTest {
 
-    protected JndiRegistry registry;
+    protected Registry registry;
 
     protected CamelContext createCamelContext() throws Exception {
-        registry = new JndiRegistry(JndiTest.createInitialContext());
+        registry = new DefaultRegistry();
         CamelContext context = new DefaultCamelContext(registry);
         return context;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/mock/MockAsBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/component/mock/MockAsBeanTest.java
index 48e9dd1..f479cd1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/mock/MockAsBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/mock/MockAsBeanTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class MockAsBeanTest extends ContextTestSupport {
@@ -30,8 +30,8 @@ public class MockAsBeanTest extends ContextTestSupport {
     private MockEndpoint foo = new MockEndpoint("mock:foo", new MockComponent(context));
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", foo);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java b/core/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
index 0e51ff2..4ae0554 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
@@ -31,8 +31,8 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.xpath.XPathBuilder;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class MockEndpointTest extends ContextTestSupport {
@@ -1274,8 +1274,8 @@ public class MockEndpointTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyHelloBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentOnExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentOnExceptionTest.java
index ac13d66..7ca3007 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentOnExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentOnExceptionTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class PropertiesComponentOnExceptionTest extends ContextTestSupport {
@@ -58,8 +58,8 @@ public class PropertiesComponentOnExceptionTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
 
         Properties cool = new Properties();
         cool.put("delay", "25");
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java
index a24688a..9c0c7ae 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.properties;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class PropertiesComponentSomethingElseBoundToJndiTest extends ContextTestSupport {
@@ -49,8 +49,8 @@ public class PropertiesComponentSomethingElseBoundToJndiTest extends ContextTest
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         // bind something else as properties, but this should not cause Camel to
         // fail start
         jndi.bind("properties", this);
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestApiTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestApiTest.java
index b6ec0e8..92394a8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestApiTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestApiTest.java
@@ -18,16 +18,16 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.model.rest.RestDefinition;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestApiTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         jndi.bind("dummy-rest-api", new DummyRestProcessorFactory());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestConfigurationTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestConfigurationTest.java
index b9c8e14..5a12bca 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestConfigurationTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestConfigurationTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.FooBar;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestConfigurationTest extends FromRestGetTest {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDummy", new FooBar());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java
index e070b94..b61a81b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java
@@ -18,15 +18,15 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.rest.RestParamType;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestDefaultValueTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDuplicateTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDuplicateTest.java
index 7a7fbb0..2ef42da 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDuplicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDuplicateTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestDuplicateTest extends ContextTestSupport {
@@ -29,8 +29,8 @@ public class FromRestDuplicateTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java
index 302fcf4..e841ace 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java
@@ -20,14 +20,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetContentTypeTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java
index 3d07565..128e89e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java
@@ -20,15 +20,15 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.RestConfiguration;
 import org.junit.Test;
 
 public class FromRestGetCorsAllowCredentialsTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java
index 6822055..c350f36 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java
@@ -20,15 +20,15 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.RestConfiguration;
 import org.junit.Test;
 
 public class FromRestGetCorsCustomTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java
index b02fb54..cbd8d72 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java
@@ -20,15 +20,15 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.RestConfiguration;
 import org.junit.Test;
 
 public class FromRestGetCorsTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetEmbeddedRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetEmbeddedRouteTest.java
index 9a0e70f..c9f59fe 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetEmbeddedRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetEmbeddedRouteTest.java
@@ -18,16 +18,16 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.model.rest.RestDefinition;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetEmbeddedRouteTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-test", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java
index 8ece09a..2551ec9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java
@@ -20,14 +20,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetHttpErrorCodeTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetInterceptTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetInterceptTest.java
index c1a38c1..8640596 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetInterceptTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetInterceptTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetInterceptTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetOnExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetOnExceptionTest.java
index 6dd6eb6..e03607a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetOnExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetOnExceptionTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.component.rest;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetOnExceptionTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPlaceholderParamTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPlaceholderParamTest.java
index a3b47f9..0cc5eae 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPlaceholderParamTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPlaceholderParamTest.java
@@ -18,23 +18,22 @@ package org.apache.camel.component.rest;
 
 import java.util.List;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.RestOperationParamDefinition;
 import org.apache.camel.model.rest.RestParamType;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetPlaceholderParamTest extends ContextTestSupport {
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("dummy-rest", new DummyRestConsumerFactory());
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("dummy-rest", new DummyRestConsumerFactory());
+        return answer;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
index 05f22ba..719cecd 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
@@ -19,17 +19,17 @@ package org.apache.camel.component.rest;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.Route;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetPolicyTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java
index ade0046..1fbb4f0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetTest.java
@@ -20,18 +20,18 @@ import java.util.Arrays;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.model.rest.CollectionFormat;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.RestParamType;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class FromRestGetTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierExtensionTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierExtensionTest.java
index b0a1eef..6611f17 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierExtensionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierExtensionTest.java
@@ -28,7 +28,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorHelper;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
@@ -38,8 +38,8 @@ import org.junit.Test;
 
 public class RestComponentVerifierExtensionTest extends ContextTestSupport {
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
         registry.bind("rest", new RestComponent());
         registry.bind("rest-component", new MyComponent());
         return registry;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierTest.java
index 75f307c..4a7f3ac 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/RestComponentVerifierTest.java
@@ -28,7 +28,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorHelper;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
@@ -38,8 +38,8 @@ import org.junit.Test;
 
 public class RestComponentVerifierTest extends ContextTestSupport {
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
         registry.bind("rest", new RestComponent());
         registry.bind("rest-component", new MyComponent());
         return registry;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/scheduler/SchedulerRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/scheduler/SchedulerRouteTest.java
index 51a24bd..853103f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/scheduler/SchedulerRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/scheduler/SchedulerRouteTest.java
@@ -18,12 +18,10 @@ package org.apache.camel.component.scheduler;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,8 +50,8 @@ public class SchedulerRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", bean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaConcurrentConsumersTest.java b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaConcurrentConsumersTest.java
index 93adc91..3db9f3e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaConcurrentConsumersTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaConcurrentConsumersTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.component.seda;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class SedaConcurrentConsumersTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("count", "5");
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaDefaultBlockWhenFullTest.java b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaDefaultBlockWhenFullTest.java
index 309ba64..eee436f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaDefaultBlockWhenFullTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaDefaultBlockWhenFullTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.seda;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -35,11 +35,11 @@ public class SedaDefaultBlockWhenFullTest extends ContextTestSupport {
     private static final String DEFAULT_URI = "seda:foo" + String.format(SIZE_PARAM, QUEUE_SIZE) + "&blockWhenFull=false&timeout=0";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
+    protected Registry createRegistry() throws Exception {
         SedaComponent component = new SedaComponent();
         component.setDefaultBlockWhenFull(true);
 
-        JndiRegistry registry = super.createRegistry();
+        Registry registry = super.createRegistry();
         registry.bind("seda", component);
 
         return registry;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerGracefulShutdownTest.java b/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerGracefulShutdownTest.java
index 4ca807d..59a3747 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerGracefulShutdownTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerGracefulShutdownTest.java
@@ -20,8 +20,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.spi.Registry;
 import org.junit.After;
 import org.junit.Test;
 
@@ -30,8 +30,8 @@ public class TimerGracefulShutdownTest extends ContextTestSupport {
     private MyExceptionHandler eh = new MyExceptionHandler();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("eh", eh);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerReferenceConfigurationTest.java b/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerReferenceConfigurationTest.java
index b97d52d..4cbeb1a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerReferenceConfigurationTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerReferenceConfigurationTest.java
@@ -22,7 +22,7 @@ import java.util.Date;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class TimerReferenceConfigurationTest extends ContextTestSupport {
@@ -58,8 +58,8 @@ public class TimerReferenceConfigurationTest extends ContextTestSupport {
     final String mockEndpointUri = "mock:result";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry reg = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry reg = super.createRegistry();
         reg.bind("refExpectedTimeString", refExpectedTimeString);
         reg.bind("refExpectedPattern", refExpectedPattern);
         reg.bind("refExpectedPeriod", refExpectedPeriod);
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerRouteTest.java
index c45ede8..5dd4466 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/timer/TimerRouteTest.java
@@ -18,12 +18,10 @@ package org.apache.camel.component.timer;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,8 +50,8 @@ public class TimerRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", bean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/validator/CustomSchemaFactoryFeatureTest.java b/core/camel-core/src/test/java/org/apache/camel/component/validator/CustomSchemaFactoryFeatureTest.java
index 07a79d3..28968eb 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/validator/CustomSchemaFactoryFeatureTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/validator/CustomSchemaFactoryFeatureTest.java
@@ -20,14 +20,14 @@ import javax.xml.XMLConstants;
 import javax.xml.validation.SchemaFactory;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class CustomSchemaFactoryFeatureTest extends ContextTestSupport {
     // Need to bind the CustomerSchemaFactory
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
         SchemaFactory mySchemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
         mySchemaFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, false);
         registry.bind("MySchemaFactory", mySchemaFactory);
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorBeanCallTest.java b/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorBeanCallTest.java
index af87fbd..a0d1561 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorBeanCallTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorBeanCallTest.java
@@ -23,7 +23,7 @@ import java.nio.file.Paths;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -55,8 +55,8 @@ public class ValidatorBeanCallTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyValidatorBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorResourceResolverFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorResourceResolverFactoryTest.java
index 9a2e493..9b1a3fb 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorResourceResolverFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorResourceResolverFactoryTest.java
@@ -20,6 +20,8 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
+import javax.naming.Context;
+
 import org.w3c.dom.ls.LSInput;
 import org.w3c.dom.ls.LSResourceResolver;
 
@@ -27,9 +29,11 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.model.language.SimpleExpression;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -37,13 +41,13 @@ import static org.awaitility.Awaitility.await;
 
 public class ValidatorResourceResolverFactoryTest extends ContextTestSupport {
 
-    private JndiRegistry registry;
+    private Context jndiContext;
 
     @Test
     public void testConfigurationOnEndpoint() throws Exception {
         // ensure that validator from test method "testConfigurationOnComponent"
         // is unbind
-        registry.getContext().unbind("validator");
+        jndiContext.unbind("validator");
 
         String directStart = "direct:start";
         String endpointUri = "validator:org/apache/camel/component/validator/xsds/person.xsd?resourceResolverFactory=#resourceResolverFactory";
@@ -56,7 +60,7 @@ public class ValidatorResourceResolverFactoryTest extends ContextTestSupport {
         // set resource resolver factory on component
         ValidatorComponent validatorComponent = new ValidatorComponent();
         validatorComponent.setResourceResolverFactory(new ResourceResolverFactoryImpl());
-        registry.bind("validator", validatorComponent);
+        jndiContext.bind("validator", validatorComponent);
 
         String directStart = "direct:startComponent";
         String endpointUri = "validator:org/apache/camel/component/validator/xsds/person.xsd";
@@ -105,10 +109,10 @@ public class ValidatorResourceResolverFactoryTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        registry = super.createRegistry();
-        registry.bind("resourceResolverFactory", new ResourceResolverFactoryImpl());
-        return registry;
+    protected Registry createRegistry() throws Exception {
+        jndiContext = createJndiContext();
+        jndiContext.bind("resourceResolverFactory", new ResourceResolverFactoryImpl());
+        return new DefaultRegistry(new JndiBeanRepository(jndiContext));
 
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/vm/VMSplitterTest.java b/core/camel-core/src/test/java/org/apache/camel/component/vm/VMSplitterTest.java
index 9ea026f..24b1fbe 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/vm/VMSplitterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/vm/VMSplitterTest.java
@@ -21,14 +21,14 @@ import java.util.List;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class VMSplitterTest extends AbstractVmTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("splitterBean", new SplitWordsBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java
index 69c4a9e..fc1dd81 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java
@@ -26,7 +26,7 @@ import org.xml.sax.SAXException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class XsltCustomizeEntityResolverTest extends ContextTestSupport {
@@ -64,8 +64,8 @@ public class XsltCustomizeEntityResolverTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
         EntityResolver customEntityResolver = getCustomEntityResolver();
         registry.bind("customEntityResolver", customEntityResolver);
         return registry;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java
index 34c155a..deb1575 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java
@@ -27,7 +27,7 @@ import javax.xml.transform.stream.StreamSource;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.ResourceHelper;
 import org.junit.Test;
 
@@ -80,8 +80,8 @@ public class XsltCustomizeURIResolverTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
         URIResolver customURIResolver = getCustomURIResolver();
         registry.bind("customURIResolver", customURIResolver);
         return registry;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltRouteTest.java
index bddb34a..aff1684 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltRouteTest.java
@@ -25,7 +25,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.converter.jaxp.XmlConverter;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class XsltRouteTest extends ContextTestSupport {
@@ -84,8 +84,8 @@ public class XsltRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("testBean", new TestBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java
index d19ebaa..faeeef9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java
@@ -21,6 +21,7 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
+import javax.naming.Context;
 import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.URIResolver;
@@ -29,9 +30,11 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.model.language.SimpleExpression;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -42,7 +45,7 @@ import static org.awaitility.Awaitility.await;
  */
 public class XsltUriResolverFactoryTest extends ContextTestSupport {
 
-    private JndiRegistry registry;
+    private Context jndiContext;
 
     @Test
     public void testConfigurationOnEndpoint() throws Exception {
@@ -51,7 +54,7 @@ public class XsltUriResolverFactoryTest extends ContextTestSupport {
 
         // ensure that the URI resolver factory is not set on the component by
         // the method "testConfigurationOnComponent"
-        registry.getContext().unbind("xslt");
+        jndiContext.unbind("xslt");
         execute(endpointUri, directStart);
     }
 
@@ -60,7 +63,7 @@ public class XsltUriResolverFactoryTest extends ContextTestSupport {
 
         XsltComponent xsltComponent = new XsltComponent();
         xsltComponent.setUriResolverFactory(new CustomXsltUriResolverFactory());
-        registry.bind("xslt", xsltComponent);
+        jndiContext.bind("xslt", xsltComponent);
 
         String endpointUri = "xslt:xslt/staff/staff.xsl";
         String directStart = "direct:startComponent";
@@ -110,10 +113,10 @@ public class XsltUriResolverFactoryTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        registry = super.createRegistry();
-        registry.bind("uriResolverFactory", new CustomXsltUriResolverFactory());
-        return registry;
+    protected Registry createRegistry() throws Exception {
+        jndiContext = createJndiContext();
+        jndiContext.bind("uriResolverFactory", new CustomXsltUriResolverFactory());
+        return new DefaultRegistry(new JndiBeanRepository(jndiContext));
 
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/BeanInjectRouteBuilderTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/BeanInjectRouteBuilderTest.java
index e5265cb..1a597e1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/BeanInjectRouteBuilderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/BeanInjectRouteBuilderTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.CamelBeanPostProcessor;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanInjectRouteBuilderTest extends ContextTestSupport {
@@ -32,10 +33,10 @@ public class BeanInjectRouteBuilderTest extends ContextTestSupport {
     private FooBar foo;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("foo", new FooBar());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("foo", new FooBar());
+        return registry;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java
index a7c24be..328b89c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java
@@ -30,6 +30,7 @@ import org.apache.camel.component.rest.DummyRestConsumerFactory;
 import org.apache.camel.component.rest.DummyRestProcessorFactory;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.rest.RestDefinition;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -38,11 +39,11 @@ public class CamelContextAddRestDefinitionsFromXmlTest extends ContextTestSuppor
     protected JAXBContext jaxbContext;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("dummy-rest", new DummyRestConsumerFactory());
-        jndi.bind("dummy-rest-api", new DummyRestProcessorFactory());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("dummy-rest", new DummyRestConsumerFactory());
+        registry.bind("dummy-rest-api", new DummyRestProcessorFactory());
+        return registry;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java
index 240aa36..f9e3203 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/DataFormatContextAwareTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.service.ServiceSupport;
 import org.junit.Test;
 
@@ -35,10 +36,10 @@ public class DataFormatContextAwareTest extends ContextTestSupport {
     private MyDataFormat my = new MyDataFormat();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("my", my);
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("my", my);
+        return registry;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentReferencePropertiesTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentReferencePropertiesTest.java
index 6cbf575..1fcabe7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentReferencePropertiesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentReferencePropertiesTest.java
@@ -30,6 +30,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.builder.ExpressionBuilder;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.support.DefaultExchange;
@@ -103,10 +104,10 @@ public class DefaultComponentReferencePropertiesTest extends ContextTestSupport
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("myExpression", ExpressionBuilder.bodyExpression());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("myExpression", ExpressionBuilder.bodyExpression());
+        return registry;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
index 8e019de..b97e6ba 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
@@ -27,6 +27,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.TypeConversionException;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.DefaultComponent;
 import org.junit.Test;
 
@@ -263,17 +264,17 @@ public class DefaultComponentTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
+    protected Registry createRegistry() throws Exception {
         Date bean1 = new Date(10);
         Date bean2 = new Date(11);
-        JndiRegistry jndiRegistry = super.createRegistry();
-        jndiRegistry.bind("beginning", new Date(0));
-        jndiRegistry.bind("bean1", bean1);
-        jndiRegistry.bind("bean2", bean2);
-        jndiRegistry.bind("listBean", Arrays.asList(bean1, bean2));
-        jndiRegistry.bind("numeric", "12345");
-        jndiRegistry.bind("non-numeric", "abc");
-        return jndiRegistry;
+        Registry registry = super.createRegistry();
+        registry.bind("beginning", new Date(0));
+        registry.bind("bean1", bean1);
+        registry.bind("bean2", bean2);
+        registry.bind("listBean", Arrays.asList(bean1, bean2));
+        registry.bind("numeric", "12345");
+        registry.bind("non-numeric", "abc");
+        return registry;
     }
 
 }
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/LanguageCamelContextAwareTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/LanguageCamelContextAwareTest.java
index 23bdb52..f818323 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/LanguageCamelContextAwareTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/LanguageCamelContextAwareTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.spi.Language;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -32,10 +33,10 @@ public class LanguageCamelContextAwareTest extends ContextTestSupport {
     private MyLanguage my = new MyLanguage();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("my", my);
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("my", my);
+        return registry;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsOffTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsOffTest.java
index f164c07..ba16943 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsOffTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsOffTest.java
@@ -20,6 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -33,10 +34,10 @@ public class LogDebugBodyMaxCharsOffTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("logFormatter", new TraceExchangeFormatter());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("logFormatter", new TraceExchangeFormatter());
+        return registry;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsTest.java
index bab4128..e2b8fdf 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyMaxCharsTest.java
@@ -20,6 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -33,10 +34,10 @@ public class LogDebugBodyMaxCharsTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("logFormatter", new TraceExchangeFormatter());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("logFormatter", new TraceExchangeFormatter());
+        return registry;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyStreamsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyStreamsTest.java
index 7f540c9..13273f6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyStreamsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/LogDebugBodyStreamsTest.java
@@ -23,16 +23,17 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.xml.StringSource;
 import org.junit.Test;
 
 public class LogDebugBodyStreamsTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("logFormatter", new TraceExchangeFormatter());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("logFormatter", new TraceExchangeFormatter());
+        return registry;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
index f116680..1a7f725 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/RefDataFormatTest.java
@@ -23,6 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.service.ServiceSupport;
 import org.junit.Test;
 
@@ -32,10 +33,10 @@ import org.junit.Test;
 public class RefDataFormatTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("reverse", new MyReverseDataFormat());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("reverse", new MyReverseDataFormat());
+        return registry;
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java
index 50e31a7..6ee073c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java
@@ -20,16 +20,17 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
 import org.apache.camel.component.rest.DummyRestProcessorFactory;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class RouteIdRestDefinitionTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("dummy-rest", new DummyRestConsumerFactory());
-        jndi.bind("dummy-rest-api", new DummyRestProcessorFactory());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("dummy-rest", new DummyRestConsumerFactory());
+        registry.bind("dummy-rest-api", new DummyRestProcessorFactory());
+        return registry;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyRefCallbackTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyRefCallbackTest.java
index f8a7909..255f3ba 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyRefCallbackTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyRefCallbackTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.Registry;
 
 /**
  *
@@ -24,10 +25,10 @@ import org.apache.camel.builder.RouteBuilder;
 public class RoutePolicyRefCallbackTest extends RoutePolicyCallbackTest {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("myPolicy", policy);
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
+        registry.bind("myPolicy", policy);
+        return registry;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/StartupListenerComponentFromRegistryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/StartupListenerComponentFromRegistryTest.java
index e2b70af..cc87dd7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/StartupListenerComponentFromRegistryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/StartupListenerComponentFromRegistryTest.java
@@ -21,6 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.StartupListener;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.direct.DirectComponent;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class StartupListenerComponentFromRegistryTest extends ContextTestSupport {
@@ -28,10 +29,10 @@ public class StartupListenerComponentFromRegistryTest extends ContextTestSupport
     private MyComponent my;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
+    protected Registry createRegistry() throws Exception {
         my = new MyComponent();
 
-        JndiRegistry jndi = super.createRegistry();
+        Registry jndi = super.createRegistry();
         jndi.bind("my", my);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperTest.java
index ebe5477..bda5027 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/CamelPostProcessorHelperTest.java
@@ -39,8 +39,9 @@ import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.FooBar;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.DefaultExchange;
+import org.apache.camel.support.DefaultRegistry;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.support.SynchronizationAdapter;
 import org.junit.Test;
@@ -53,8 +54,8 @@ public class CamelPostProcessorHelperTest extends ContextTestSupport {
     private Properties myProp = new Properties();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = new DefaultRegistry();
         jndi.bind("myProp", myProp);
         jndi.bind("foo", new FooBar());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/model/RouteIdFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/model/RouteIdFactoryTest.java
index 5bc0d17..1f12dbc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/model/RouteIdFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/model/RouteIdFactoryTest.java
@@ -21,15 +21,15 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
 import org.apache.camel.component.rest.DummyRestProcessorFactory;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.impl.RouteIdFactory;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class RouteIdFactoryTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         jndi.bind("dummy-rest-api", new DummyRestProcessorFactory());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorInputValidateTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorInputValidateTest.java
index 5079dac..0a40114 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorInputValidateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorInputValidateTest.java
@@ -20,8 +20,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Message;
 import org.apache.camel.ValidationException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.DataType;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.Validator;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -59,8 +59,8 @@ public class BeanValidatorInputValidateTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
 
         registry.bind("testValidator", new TestValidator());
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorOutputValidateTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorOutputValidateTest.java
index c8b4456..47cc2519 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorOutputValidateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/validator/BeanValidatorOutputValidateTest.java
@@ -21,8 +21,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Message;
 import org.apache.camel.ValidationException;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.DataType;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.Validator;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -60,8 +60,8 @@ public class BeanValidatorOutputValidateTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry registry = super.createRegistry();
 
         registry.bind("testValidator", new TestValidator());
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTest.java
index f95de29..5c00e3d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -40,8 +40,8 @@ public class ContextScopedOnExceptionErrorHandlerRefIssueTest extends ContextTes
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTwoRoutesTest.java
index 4525818..6555e06 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionErrorHandlerRefIssueTwoRoutesTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -53,8 +53,8 @@ public class ContextScopedOnExceptionErrorHandlerRefIssueTwoRoutesTest extends C
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTest.java
index c8bb72b..66c1501 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -47,8 +47,8 @@ public class ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTest extends
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java
index 083bed7..3060806 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -60,8 +60,8 @@ public class ContextScopedOnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java
index 768a984..4c7d7a6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -47,8 +47,8 @@ public class ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTe
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
index 6cd8e35..7c30f34 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -60,8 +60,8 @@ public class ContextScopedOnExceptionNotHandledRouteScopedErrorHandlerRefIssueTw
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTest.java
index 2933d4c..3a77f06 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -40,8 +40,8 @@ public class ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTest extends
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
index 6562297..39be6c6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -53,8 +53,8 @@ public class ContextScopedOnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTes
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTest.java
index 77c59e4..e081ba9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -40,8 +40,8 @@ public class OnExceptionErrorHandlerRefIssueTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTwoRoutesTest.java
index 9f7f619..baea91c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerRefIssueTwoRoutesTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -51,8 +51,8 @@ public class OnExceptionErrorHandlerRefIssueTwoRoutesTest extends ContextTestSup
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTest.java
index acb33e0..c7ba66a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -47,8 +47,8 @@ public class OnExceptionNotHandledErrorHandlerRefIssueTest extends ContextTestSu
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java
index b28d33f..7d4ac5b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -58,8 +58,8 @@ public class OnExceptionNotHandledErrorHandlerRefIssueTwoRoutesTest extends Cont
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java
index 24bee07..998b40b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -47,8 +47,8 @@ public class OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTest extends Co
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
index d2445d0..09cde7f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -58,8 +58,8 @@ public class OnExceptionNotHandledRouteScopedErrorHandlerRefIssueTwoRoutesTest e
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTest.java
index e845b0c..b5354fa 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -40,8 +40,8 @@ public class OnExceptionRouteScopedErrorHandlerRefIssueTest extends ContextTestS
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
index 33eb099..e29ede5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -51,8 +51,8 @@ public class OnExceptionRouteScopedErrorHandlerRefIssueTwoRoutesTest extends Con
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myDLC", new DeadLetterChannelBuilder("mock:dead"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionWithTwoBeansTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionWithTwoBeansTest.java
index 26422cb..9e48653 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionWithTwoBeansTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionWithTwoBeansTest.java
@@ -18,14 +18,15 @@ package org.apache.camel.issues;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
 import org.junit.Test;
 
 public class OnExceptionWithTwoBeansTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = new JndiRegistry(createJndiContext());
+    protected Registry createRegistry() throws Exception {
+        Registry registry = new DefaultRegistry();
         registry.bind("checkin", new MyBean1());
         registry.bind("handler", new MyBean2());
         return registry;
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/RetryRouteScopedUntilRecipientListIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/RetryRouteScopedUntilRecipientListIssueTest.java
index b2336f5..aa5df44 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/RetryRouteScopedUntilRecipientListIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/RetryRouteScopedUntilRecipientListIssueTest.java
@@ -30,7 +30,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.builder.NotifyBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.support.DefaultProducer;
 import org.junit.Test;
@@ -40,8 +40,8 @@ public class RetryRouteScopedUntilRecipientListIssueTest extends ContextTestSupp
     protected static AtomicInteger invoked = new AtomicInteger();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRetryBean", new MyRetryBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/SedaFileIdempotentIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/SedaFileIdempotentIssueTest.java
index 3b12220..b8fe6aa 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/SedaFileIdempotentIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/SedaFileIdempotentIssueTest.java
@@ -25,7 +25,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.processor.idempotent.FileIdempotentRepository;
 import org.junit.Before;
 import org.junit.Test;
@@ -55,8 +55,8 @@ public class SedaFileIdempotentIssueTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
 
         repository.setFileStore(new File("target/repo.txt"));
         jndi.bind("repo", repository);
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java
index ef5dd5a..3b39521 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java
@@ -21,7 +21,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeTimedOutException;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
 import org.junit.Test;
 
 public class SetHeaderInDoCatchIssueTest extends ContextTestSupport {
@@ -60,8 +61,8 @@ public class SetHeaderInDoCatchIssueTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = new JndiRegistry(createJndiContext());
+    protected Registry createRegistry() throws Exception {
+        Registry registry = new DefaultRegistry();
 
         registry.bind("A", new Processor() {
             public void process(Exchange exchange) throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningCloseableIteratorTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningCloseableIteratorTest.java
index 26ce6835..a2a0bf8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningCloseableIteratorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningCloseableIteratorTest.java
@@ -24,14 +24,14 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class SplitterUsingBeanReturningCloseableIteratorTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("mySplitter", new MyOtherSplitterBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningMessageTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningMessageTest.java
index cf50dec..795e563 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningMessageTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/SplitterUsingBeanReturningMessageTest.java
@@ -24,14 +24,14 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class SplitterUsingBeanReturningMessageTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("mySplitter", new MyOtherSplitterBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitIssueTest.java
index 67405b9..227eb8e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitIssueTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class TryCatchWithSplitIssueTest extends ContextTestSupport {
@@ -53,8 +53,8 @@ public class TryCatchWithSplitIssueTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("error", new GenerateError());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTest.java b/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTest.java
index ee1a21d..a44f617 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.language;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.bean.Bean;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -66,8 +66,8 @@ public class BeanAnnotationParameterTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("GreetingService", new GreetingService());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTwoTest.java b/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTwoTest.java
index 740a1fd..d0d2031 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTwoTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/BeanAnnotationParameterTwoTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.language;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.bean.Bean;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -66,8 +66,8 @@ public class BeanAnnotationParameterTwoTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("GreetingService", new GreetingService());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterPropertyPlaceholderTest.java b/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterPropertyPlaceholderTest.java
index c6eb55c..548ac0a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterPropertyPlaceholderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterPropertyPlaceholderTest.java
@@ -21,7 +21,7 @@ import java.util.Properties;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanLanguageOGNLWithDotInParameterPropertyPlaceholderTest extends ContextTestSupport {
@@ -39,8 +39,8 @@ public class BeanLanguageOGNLWithDotInParameterPropertyPlaceholderTest extends C
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyDestinationBean());
 
         myProp = new Properties();
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterTest.java b/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterTest.java
index 6c3021c..98c27aa 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/BeanLanguageOGNLWithDotInParameterTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.language;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanLanguageOGNLWithDotInParameterTest extends ContextTestSupport {
@@ -35,8 +35,8 @@ public class BeanLanguageOGNLWithDotInParameterTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyDestinationBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/BeanTest.java b/core/camel-core/src/test/java/org/apache/camel/language/BeanTest.java
index d861a0e..e98c05d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/BeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/BeanTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.language;
 
-import javax.naming.Context;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Header;
@@ -25,6 +23,7 @@ import org.apache.camel.LanguageTestSupport;
 import org.apache.camel.Message;
 import org.apache.camel.component.bean.MethodNotFoundException;
 import org.apache.camel.language.bean.BeanExpression;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanTest extends LanguageTestSupport {
@@ -118,11 +117,11 @@ public class BeanTest extends LanguageTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("foo", new MyBean());
-        context.bind("my.company.MyClass", new MyBean());
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", new MyBean());
+        answer.bind("my.company.MyClass", new MyBean());
+        return answer;
     }
 
     public static class MyBean {
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java b/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
index fe5db4f..38c91fc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
@@ -27,8 +27,8 @@ import org.apache.camel.LanguageTestSupport;
 import org.apache.camel.component.file.FileConsumer;
 import org.apache.camel.component.file.FileEndpoint;
 import org.apache.camel.component.file.GenericFile;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.simple.SimpleLanguage;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.FileUtil;
 import org.junit.Test;
 
@@ -40,8 +40,8 @@ public class FileLanguageTest extends LanguageTestSupport {
     private File file;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("generator", new MyFileNameGenerator());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/LanguageServiceTest.java b/core/camel-core/src/test/java/org/apache/camel/language/LanguageServiceTest.java
index 7bd0b4c..c9a6fe7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/LanguageServiceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/LanguageServiceTest.java
@@ -22,8 +22,8 @@ import org.apache.camel.IsSingleton;
 import org.apache.camel.Predicate;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.builder.PredicateBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Language;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.service.ServiceSupport;
 import org.junit.Test;
 
@@ -32,8 +32,8 @@ public class LanguageServiceTest extends ContextTestSupport {
     private MyLanguage my = new MyLanguage();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("my", my);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/RefPredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/language/RefPredicateTest.java
index 685e498..1567a4d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/RefPredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/RefPredicateTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.language;
 import org.apache.camel.Exchange;
 import org.apache.camel.LanguageTestSupport;
 import org.apache.camel.Predicate;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class RefPredicateTest extends LanguageTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPredicate", new MyPredicate());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/RefTest.java b/core/camel-core/src/test/java/org/apache/camel/language/RefTest.java
index 1396bc1..4a665c1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/RefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/RefTest.java
@@ -18,15 +18,15 @@ package org.apache.camel.language;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.LanguageTestSupport;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.ExpressionAdapter;
 import org.junit.Test;
 
 public class RefTest extends LanguageTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myExp", new MyExpression());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java
index 5332b9c..a860216 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java
@@ -18,15 +18,15 @@ package org.apache.camel.language.simple;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.LanguageTestSupport;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.simple.types.SimpleIllegalSyntaxException;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class SimpleOperatorTest extends LanguageTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("generator", new MyFileNameGenerator());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java
index 9912369..13e74e9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleParserPredicateTest.java
@@ -23,7 +23,7 @@ import java.util.Map;
 
 import org.apache.camel.ExchangeTestSupport;
 import org.apache.camel.Predicate;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -249,8 +249,8 @@ public class SimpleParserPredicateTest extends ExchangeTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
 
         List<String> list = new ArrayList<>();
         list.add("foo");
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
index a2a15e6..b1c62ca 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
@@ -37,10 +37,10 @@ import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.LanguageTestSupport;
 import org.apache.camel.Predicate;
 import org.apache.camel.component.bean.MethodNotFoundException;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.bean.RuntimeBeanExpressionException;
 import org.apache.camel.language.simple.types.SimpleIllegalSyntaxException;
 import org.apache.camel.spi.Language;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.InetAddressUtil;
 import org.junit.Test;
 
@@ -50,8 +50,8 @@ public class SimpleTest extends LanguageTestSupport {
     private static final String INDEX_OUT_OF_BOUNDS_ERROR_MSG = "Index 2 out of bounds for length 2";
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myAnimal", new Animal("Donkey", 17));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/model/LoadRestFromXmlTest.java b/core/camel-core/src/test/java/org/apache/camel/model/LoadRestFromXmlTest.java
index 4780778..815bd07 100644
--- a/core/camel-core/src/test/java/org/apache/camel/model/LoadRestFromXmlTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/model/LoadRestFromXmlTest.java
@@ -24,15 +24,15 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
 import org.apache.camel.component.rest.DummyRestProcessorFactory;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.rest.RestsDefinition;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class LoadRestFromXmlTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("dummy-rest", new DummyRestConsumerFactory());
         jndi.bind("dummy-rest-api", new DummyRestProcessorFactory());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithOnExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithOnExceptionTest.java
index f76b02e..2c2f922 100644
--- a/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithOnExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithOnExceptionTest.java
@@ -22,14 +22,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class LoadRouteFromXmlWithOnExceptionTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myProcessor", new MyProcessor());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
index 3e00dff..a693ba8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
@@ -23,16 +23,16 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.spi.Policy;
 import org.apache.camel.Route;
+import org.apache.camel.spi.Policy;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class LoadRouteFromXmlWithPolicyTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyPolicy("foo"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedProcessorTest.java
index 5745fa1..c063c4b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedProcessorTest.java
@@ -23,14 +23,16 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.junit.Test;
 
 public class BeanCachedProcessorTest extends ContextTestSupport {
 
     private Context context;
 
-    private JndiRegistry registry;
+    private Registry registry;
 
     @Override
     protected RouteBuilder createRouteBuilder() {
@@ -45,11 +47,10 @@ public class BeanCachedProcessorTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
-        registry.bind("something", new MyBean());
-        this.context = registry.getContext();
-        this.registry = registry;
+    protected Registry createRegistry() throws Exception {
+        context = createJndiContext();
+        context.bind("something", new MyBean());
+        registry = new DefaultRegistry(new JndiBeanRepository(context));
         return registry;
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedTest.java
index 9f1e053..9c316aa 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanCachedTest.java
@@ -22,7 +22,9 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.junit.Test;
 
 @Deprecated
@@ -30,7 +32,7 @@ public class BeanCachedTest extends ContextTestSupport {
 
     private Context context;
 
-    private JndiRegistry registry;
+    private Registry registry;
 
     @Override
     protected RouteBuilder createRouteBuilder() {
@@ -45,11 +47,10 @@ public class BeanCachedTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
-        registry.bind("something", new MyBean());
-        this.context = registry.getContext();
-        this.registry = registry;
+    protected Registry createRegistry() throws Exception {
+        context = createJndiContext();
+        context.bind("something", new MyBean());
+        registry = new DefaultRegistry(new JndiBeanRepository(context));
         return registry;
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanOgnMethodWithXPathInjectionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanOgnMethodWithXPathInjectionTest.java
index 29340c3..cd9f429 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanOgnMethodWithXPathInjectionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanOgnMethodWithXPathInjectionTest.java
@@ -16,12 +16,10 @@
  */
 package org.apache.camel.processor;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.language.xpath.XPath;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -64,8 +62,8 @@ public class BeanOgnMethodWithXPathInjectionTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         answer.bind("myOtherBean", myOtherBean);
         return answer;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListInterfaceAnnotationTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListInterfaceAnnotationTest.java
index aa99ac3..b017a3c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListInterfaceAnnotationTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListInterfaceAnnotationTest.java
@@ -18,9 +18,7 @@ package org.apache.camel.processor;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.naming.Context;
-
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 
 public class BeanRecipientListInterfaceAnnotationTest extends BeanRecipientListTest {
     @Override
@@ -29,13 +27,13 @@ public class BeanRecipientListInterfaceAnnotationTest extends BeanRecipientListT
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         return answer;
     }
 
-    interface Route {
+interface Route {
         @org.apache.camel.RecipientList
         String[] route(String body);
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTest.java
index 7ec1dea..b575103 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTest.java
@@ -18,11 +18,9 @@ package org.apache.camel.processor;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -57,8 +55,8 @@ public class BeanRecipientListTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTimeoutTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTimeoutTest.java
index 36f94f9..ee2d684 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTimeoutTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRecipientListTimeoutTest.java
@@ -16,15 +16,13 @@
  */
 package org.apache.camel.processor;
 
-import javax.naming.Context;
-
 import org.apache.camel.AggregationStrategy;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.RecipientList;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class BeanRecipientListTimeoutTest extends ContextTestSupport {
@@ -51,8 +49,8 @@ public class BeanRecipientListTimeoutTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new MyBean());
         answer.bind("myStrategy", new MyAggregationStrategy());
         return answer;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java
index 1be26cc..e1e3caf 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanRouteTest.java
@@ -18,14 +18,12 @@ package org.apache.camel.processor;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -68,8 +66,8 @@ public class BeanRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanSingletonTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanSingletonTest.java
index 730b2af..d331521 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanSingletonTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanSingletonTest.java
@@ -22,14 +22,15 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.junit.Test;
 
 public class BeanSingletonTest extends ContextTestSupport {
 
     private Context context;
-
-    private JndiRegistry registry;
+    private Registry registry;
 
     @Override
     protected RouteBuilder createRouteBuilder() {
@@ -43,11 +44,10 @@ public class BeanSingletonTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
-        registry.bind("something", new MyBean());
-        this.context = registry.getContext();
-        this.registry = registry;
+    protected Registry createRegistry() throws Exception {
+        context = createJndiContext();
+        context.bind("something", new MyBean());
+        registry = new DefaultRegistry(new JndiBeanRepository(context));
         return registry;
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java
index 55cfb7e..fd26dcc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithExceptionTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.processor;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeProperty;
@@ -26,7 +24,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.ValidationException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -82,8 +80,8 @@ public class BeanWithExceptionTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", new ValidationBean());
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithXPathInjectionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithXPathInjectionTest.java
index 22f0d2a..96fc899 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithXPathInjectionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/BeanWithXPathInjectionTest.java
@@ -16,12 +16,10 @@
  */
 package org.apache.camel.processor;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.language.xpath.XPath;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,8 +58,9 @@ public class BeanWithXPathInjectionTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/CBRPredicateBeanThrowExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/CBRPredicateBeanThrowExceptionTest.java
index 0da3d6c..0d97e72 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/CBRPredicateBeanThrowExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/CBRPredicateBeanThrowExceptionTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class CBRPredicateBeanThrowExceptionTest extends ContextTestSupport {
@@ -31,8 +31,8 @@ public class CBRPredicateBeanThrowExceptionTest extends ContextTestSupport {
     private static AtomicBoolean check2 = new AtomicBoolean();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("cbrBean", new MyCBRBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/ClaimCheckTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/ClaimCheckTest.java
index 8a6a26c..6ef8dae 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/ClaimCheckTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/ClaimCheckTest.java
@@ -25,8 +25,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Header;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.xpath.XPath;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class ClaimCheckTest extends ContextTestSupport {
@@ -56,8 +56,8 @@ public class ClaimCheckTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("checkLuggage", new CheckLuggageBean());
         jndi.bind("dataEnricher", new DataEnricherBean());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/ComposedMessageProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/ComposedMessageProcessorTest.java
index 6a19e99..bfa575f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/ComposedMessageProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/ComposedMessageProcessorTest.java
@@ -26,7 +26,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class ComposedMessageProcessorTest extends ContextTestSupport {
@@ -70,8 +70,8 @@ public class ComposedMessageProcessorTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("orderItemHelper", new OrderItemHelper());
         jndi.bind("widgetInventory", new WidgetInventory());
         jndi.bind("gadgetInventory", new GadgetInventory());
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/CustomConsumerExceptionHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/CustomConsumerExceptionHandlerTest.java
index 70c11b7..c66ec1a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/CustomConsumerExceptionHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/CustomConsumerExceptionHandlerTest.java
@@ -22,8 +22,8 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class CustomConsumerExceptionHandlerTest extends ContextTestSupport {
@@ -31,8 +31,8 @@ public class CustomConsumerExceptionHandlerTest extends ContextTestSupport {
     private static final CountDownLatch LATCH = new CountDownLatch(1);
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myHandler", new MyExceptionHandler());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java
index 66b7594..7cb8ea5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/CustomRefLoadBalanceTest.java
@@ -17,13 +17,13 @@
 package org.apache.camel.processor;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 
 public class CustomRefLoadBalanceTest extends CustomLoadBalanceTest {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBalancer", new MyLoadBalancer());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/DataFormatServiceCustomRefTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/DataFormatServiceCustomRefTest.java
index 7d1e0d0..ca9a3da 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/DataFormatServiceCustomRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/DataFormatServiceCustomRefTest.java
@@ -17,13 +17,13 @@
 package org.apache.camel.processor;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 
 public class DataFormatServiceCustomRefTest extends DataFormatServiceTest {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myCustomDataFormat", my);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelAlwaysHandledTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelAlwaysHandledTest.java
index 0c40754..03efaf2 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelAlwaysHandledTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelAlwaysHandledTest.java
@@ -21,8 +21,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class DeadLetterChannelAlwaysHandledTest extends ContextTestSupport {
@@ -30,8 +30,8 @@ public class DeadLetterChannelAlwaysHandledTest extends ContextTestSupport {
     private static final AtomicBoolean CALLLED = new AtomicBoolean();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myHandler", new MyExceptionHandler());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRestartFromBeginningTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRestartFromBeginningTest.java
index 4fddede..a13825b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRestartFromBeginningTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRestartFromBeginningTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RecipientList;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -30,8 +30,8 @@ import org.junit.Test;
 public class DeadLetterChannelRestartFromBeginningTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("retryBean", new RetryBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
index cf914ee..8aac89c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
@@ -20,13 +20,13 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.Route;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class DefinitionPolicyPerProcessorTest extends ContextTestSupport {
@@ -46,8 +46,8 @@ public class DefinitionPolicyPerProcessorTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyPolicy("foo"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/DetourTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/DetourTest.java
index 871ef82..88e5135 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/DetourTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/DetourTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.processor;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class DetourTest extends ContextTestSupport {
@@ -61,8 +61,8 @@ public class DetourTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         controlBean = new ControlBean();
         jndi.bind("controlBean", controlBean);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/ErrorHandlerWrappedEachNodeTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/ErrorHandlerWrappedEachNodeTest.java
index ae7c8ce..f7f3fd4 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/ErrorHandlerWrappedEachNodeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/ErrorHandlerWrappedEachNodeTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.processor;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -65,8 +65,8 @@ public class ErrorHandlerWrappedEachNodeTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java
index 977abd8..df3263c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/LogEipListenerTest.java
@@ -21,8 +21,8 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.support.jndi.JndiTest;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -48,7 +48,7 @@ public class LogEipListenerTest {
     }
 
     protected CamelContext createCamelContext() throws Exception {
-        JndiRegistry registry = new JndiRegistry(JndiTest.createInitialContext());
+        Registry registry = new DefaultRegistry();
         CamelContext context = new DefaultCamelContext(registry);
         context.addRoutes(createRouteBuilder());
         return context;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/LogEipMaskTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/LogEipMaskTest.java
index 8d344dd..bd790ac 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/LogEipMaskTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/LogEipMaskTest.java
@@ -20,18 +20,18 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.MaskingFormatter;
-import org.apache.camel.support.jndi.JndiTest;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
 import org.junit.Assert;
 import org.junit.Test;
 
 public class LogEipMaskTest {
 
-    protected JndiRegistry registry;
+    protected Registry registry;
 
     protected CamelContext createCamelContext() throws Exception {
-        registry = new JndiRegistry(JndiTest.createInitialContext());
+        registry = new DefaultRegistry();
         CamelContext context = new DefaultCamelContext(registry);
         context.addRoutes(createRouteBuilder());
         return context;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/MethodFilterTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/MethodFilterTest.java
index ec9549f..d03cd2b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/MethodFilterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/MethodFilterTest.java
@@ -16,12 +16,11 @@
  */
 package org.apache.camel.processor;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Header;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class MethodFilterTest extends ContextTestSupport {
@@ -57,10 +56,10 @@ public class MethodFilterTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        context.bind("myBean", new MyBean());
-        return context;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("myBean", new MyBean());
+        return answer;
     }
 
     // START SNIPPET: filter
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/NormalizerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/NormalizerTest.java
index b27718f..8c1cdac 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/NormalizerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/NormalizerTest.java
@@ -16,12 +16,10 @@
  */
 package org.apache.camel.processor;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class NormalizerTest extends ContextTestSupport {
@@ -47,8 +45,8 @@ public class NormalizerTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("normalizer", new MyNormalizer());
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
index 9669ae9..30212c0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
@@ -20,10 +20,10 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.Route;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class PolicyPerProcessorTest extends ContextTestSupport {
@@ -51,8 +51,8 @@ public class PolicyPerProcessorTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyPolicy("foo"));
         jndi.bind("bar", new MyPolicy("bar"));
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
index 2979e8e..88d840b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
@@ -20,10 +20,10 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.Route;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class PolicyPerRouteTest extends ContextTestSupport {
@@ -49,8 +49,8 @@ public class PolicyPerRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyPolicy("foo"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanOnPrepareTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanOnPrepareTest.java
index 4a314e1..6119029 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanOnPrepareTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanOnPrepareTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -29,8 +29,8 @@ import org.junit.Test;
 public class RecipientListBeanOnPrepareTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPrepare", new AnimalDeepClonePrepare());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanTest.java
index c3a54f8..46988b8 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListBeanTest.java
@@ -22,14 +22,14 @@ import java.util.Map;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class RecipientListBeanTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListFineGrainedErrorHandlingTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListFineGrainedErrorHandlingTest.java
index 0da7d82..e89dff21 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListFineGrainedErrorHandlingTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListFineGrainedErrorHandlingTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class RecipientListFineGrainedErrorHandlingTest extends ContextTestSupport {
@@ -31,8 +31,8 @@ public class RecipientListFineGrainedErrorHandlingTest extends ContextTestSuppor
     private static int tries;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("fail", new MyFailBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListParallelFineGrainedErrorHandlingTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListParallelFineGrainedErrorHandlingTest.java
index a81602b..8222b9e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListParallelFineGrainedErrorHandlingTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListParallelFineGrainedErrorHandlingTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class RecipientListParallelFineGrainedErrorHandlingTest extends ContextTestSupport {
@@ -29,8 +29,8 @@ public class RecipientListParallelFineGrainedErrorHandlingTest extends ContextTe
     private static int counter;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("fail", new MyFailBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java
index d58aa69..1fd68d5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.processor;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -29,8 +29,8 @@ import org.junit.Test;
 public class RecipientListReturnValueTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/RoutePoliciesRefTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/RoutePoliciesRefTest.java
index 7665a48..91cad8f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/RoutePoliciesRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/RoutePoliciesRefTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.RoutePolicySupport;
 import org.junit.Test;
 
@@ -31,8 +31,8 @@ public class RoutePoliciesRefTest extends ContextTestSupport {
     private final MyCustomRoutePolicy policyB = new MyCustomRoutePolicy("B");
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("policy-a", policyA);
         jndi.bind("policy-b", policyB);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java
index 80751af..093f916 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java
@@ -16,22 +16,20 @@
  */
 package org.apache.camel.processor;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class SimulatorTest extends ContextTestSupport {
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("foo", new MyBean("foo"));
         answer.bind("bar", new MyBean("bar"));
         return answer;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SplitAggregateInOutTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SplitAggregateInOutTest.java
index dae7907..c95d02d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SplitAggregateInOutTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SplitAggregateInOutTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,8 +46,8 @@ public class SplitAggregateInOutTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("MyOrderService", new MyOrderService());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SplitRefCustomExpressionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SplitRefCustomExpressionTest.java
index d1de4b6..923c556 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SplitRefCustomExpressionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SplitRefCustomExpressionTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -32,8 +32,8 @@ import org.junit.Test;
 public class SplitRefCustomExpressionTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myCustomExpression", new MyCustomExpression());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java
index 906dbbf..a672638 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class SplitterMethodCallTest extends ContextTestSupport {
@@ -38,8 +38,8 @@ public class SplitterMethodCallTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("splitterBean", new SplitWordsBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java
index 4c57cd7..808a872 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java
@@ -27,15 +27,15 @@ import org.apache.camel.Header;
 import org.apache.camel.Message;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.DefaultMessage;
 import org.junit.Test;
 
 public class SplitterPojoTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("mySplitterBean", new MySplitterBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/ThrottlerMethodCallTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/ThrottlerMethodCallTest.java
index fb5562c..5d4cd4b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/ThrottlerMethodCallTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/ThrottlerMethodCallTest.java
@@ -22,7 +22,7 @@ import java.util.concurrent.Executors;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.util.StopWatch;
 import org.junit.Test;
 
@@ -36,8 +36,8 @@ public class ThrottlerMethodCallTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", this);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionFinallyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionFinallyTest.java
index e910b63..705f660 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionFinallyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionFinallyTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -39,8 +39,8 @@ public class TryCatchCaughtExceptionFinallyTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", this);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTest.java
index f3d8e03..f54dbe4 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -39,8 +39,8 @@ public class TryCatchCaughtExceptionTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", this);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTwoTimesTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTwoTimesTest.java
index c70fb31..e843372 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTwoTimesTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/TryCatchCaughtExceptionTwoTimesTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -41,8 +41,8 @@ public class TryCatchCaughtExceptionTwoTimesTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", this);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/TryFinallyCaughtExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/TryFinallyCaughtExceptionTest.java
index 30226f2..a989bd2 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/TryFinallyCaughtExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/TryFinallyCaughtExceptionTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -54,8 +54,8 @@ public class TryFinallyCaughtExceptionTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", this);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapBeanAsProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapBeanAsProcessorTest.java
index fae6946..21688ba 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapBeanAsProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapBeanAsProcessorTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -37,8 +37,8 @@ public class WireTapBeanAsProcessorTest extends ContextTestSupport {
     private MockEndpoint result;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("tap", myBean);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapOnPrepareRefTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapOnPrepareRefTest.java
index 5c14cea..8f68be4 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapOnPrepareRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapOnPrepareRefTest.java
@@ -17,7 +17,7 @@
 package org.apache.camel.processor;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 
 /**
  *
@@ -25,8 +25,8 @@ import org.apache.camel.impl.JndiRegistry;
 public class WireTapOnPrepareRefTest extends WireTapOnPrepareTest {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("deepClone", new AnimalDeepClonePrepare());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java
index 1d6bd46..76f937e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java
@@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,8 +60,8 @@ public class WireTapShutdownBeanTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("tap", new MyTapBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownRouteTest.java
index 82430e8..c3548f6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownRouteTest.java
@@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,8 +60,8 @@ public class WireTapShutdownRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("tap", new MyTapBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapVoidBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapVoidBeanTest.java
index 1f84400..e989f98 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/WireTapVoidBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/WireTapVoidBeanTest.java
@@ -20,7 +20,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,8 +50,8 @@ public class WireTapVoidBeanTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("tap", new MyTapBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateForceCompletionOnStopTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateForceCompletionOnStopTest.java
index 1871d22..5ef9137 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateForceCompletionOnStopTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateForceCompletionOnStopTest.java
@@ -18,8 +18,8 @@ package org.apache.camel.processor.aggregator;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.processor.BodyInAggregatingStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AggregateForceCompletionOnStopTest extends ContextTestSupport {
@@ -98,8 +98,8 @@ public class AggregateForceCompletionOnStopTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myCompletionProcessor", new MyCompletionProcessor());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefMethodNameTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefMethodNameTest.java
index f56519d..7818916 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefMethodNameTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefMethodNameTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.processor.aggregator;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AggregationStrategyBeanAdapterRefMethodNameTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myAppender", new AggregationStrategyBeanAdapterRefMethodNameTest.MyBodyAppender());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefTest.java
index 1de9b45..b3b9e03 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregationStrategyBeanAdapterRefTest.java
@@ -18,14 +18,14 @@ package org.apache.camel.processor.aggregator;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AggregationStrategyBeanAdapterRefTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myAppender", new AggregationStrategyBeanAdapterTest.MyBodyAppender());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
index 04ce1e6..6f3cc27 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
@@ -25,11 +25,11 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.Route;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.AsyncCallbackToCompletableFutureAdapter;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.junit.Test;
@@ -40,8 +40,8 @@ public class AsyncEndpointPolicyTest extends ContextTestSupport {
     private static String afterThreadName;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyPolicy("foo"));
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java
index 0bd9bd1..e77d906 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RecipientList;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AsyncEndpointRecipientListBean3Test extends ContextTestSupport {
@@ -30,8 +30,8 @@ public class AsyncEndpointRecipientListBean3Test extends ContextTestSupport {
     private static String afterThreadName;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyRecipientBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java
index 26bb014..99fe545 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RecipientList;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AsyncEndpointRecipientListBean4Test extends ContextTestSupport {
@@ -30,8 +30,8 @@ public class AsyncEndpointRecipientListBean4Test extends ContextTestSupport {
     private static String afterThreadName;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyRecipientBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBeanTest.java
index 0507a23..3a80be7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBeanTest.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RecipientList;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AsyncEndpointRecipientListBeanTest extends ContextTestSupport {
@@ -30,8 +30,8 @@ public class AsyncEndpointRecipientListBeanTest extends ContextTestSupport {
     private static String afterThreadName;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyRecipientBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListFineGrainedErrorHandlingTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListFineGrainedErrorHandlingTest.java
index 7354599..a57be71 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListFineGrainedErrorHandlingTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListFineGrainedErrorHandlingTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.processor.async;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AsyncEndpointRecipientListFineGrainedErrorHandlingTest extends ContextTestSupport {
@@ -27,8 +27,8 @@ public class AsyncEndpointRecipientListFineGrainedErrorHandlingTest extends Cont
     private static int counter;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("fail", new MyFailBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean2Test.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean2Test.java
index 4024dc7..1c4fc46 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean2Test.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean2Test.java
@@ -19,14 +19,14 @@ package org.apache.camel.processor.async;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.RoutingSlip;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AsyncEndpointRoutingSlipBean2Test extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyRoutingSlipBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java
index d74b6bd..ea3fdc7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java
@@ -21,7 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RoutingSlip;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AsyncEndpointRoutingSlipBean3Test extends ContextTestSupport {
@@ -30,8 +30,8 @@ public class AsyncEndpointRoutingSlipBean3Test extends ContextTestSupport {
     private static String afterThreadName;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyRoutingSlipBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java
index 3e665e3..2dbd692 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java
@@ -28,8 +28,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.RoutingSlip;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.processor.SendProcessor;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.AsyncProcessorSupport;
 import org.apache.camel.support.service.ServiceHelper;
 import org.junit.Assert;
@@ -40,8 +40,8 @@ public class AsyncEndpointRoutingSlipBeanNonBlockingTest extends ContextTestSupp
     private Exchange innerExchange;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyRoutingSlipBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanTest.java
index 7d17989..63a2329 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.processor.async;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.RoutingSlip;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class AsyncEndpointRoutingSlipBeanTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myBean", new MyRoutingSlipBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java
index f697182..ccb73d6 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java
@@ -21,14 +21,12 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.TimeUnit;
 
-import javax.naming.Context;
-
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -100,11 +98,10 @@ public class AsyncProcessorAwaitManagerInterruptWithRedeliveryTest extends Conte
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext jndiContext = new JndiContext();
-
-        jndiContext.bind("myBean", bean);
-        return jndiContext;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("myBean", bean);
+        return answer;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
index 43b1119..71b6d96 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
@@ -22,8 +22,8 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockComponent;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class EnricherRefTest extends ContextTestSupport {
@@ -31,8 +31,8 @@ public class EnricherRefTest extends ContextTestSupport {
     private MockEndpoint cool = new MockEndpoint("mock:cool", new MockComponent(context));
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("cool", cool);
         jndi.bind("agg", new UseLatestAggregationStrategy());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnrichBridgeErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnrichBridgeErrorHandlerTest.java
index 17fba5b..cfd5a03 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnrichBridgeErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnrichBridgeErrorHandlerTest.java
@@ -21,9 +21,9 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class PollEnrichBridgeErrorHandlerTest extends ContextTestSupport {
@@ -31,8 +31,8 @@ public class PollEnrichBridgeErrorHandlerTest extends ContextTestSupport {
     private MyPollingStrategy myPoll = new MyPollingStrategy();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myPoll", myPoll);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java
index fbcf06e..b299d59 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java
@@ -21,8 +21,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.seda.SedaEndpoint;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.DefaultExchange;
 import org.junit.Test;
 
@@ -31,8 +31,8 @@ public class PollEnricherRefTest extends ContextTestSupport {
     private SedaEndpoint cool = new SedaEndpoint();
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("cool", cool);
         jndi.bind("agg", new UseLatestAggregationStrategy());
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerExchangeFormatterRefTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerExchangeFormatterRefTest.java
index 500785c..9061037 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerExchangeFormatterRefTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerExchangeFormatterRefTest.java
@@ -20,8 +20,8 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.ExchangeFormatter;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class DefaultErrorHandlerExchangeFormatterRefTest extends ContextTestSupport {
@@ -29,8 +29,8 @@ public class DefaultErrorHandlerExchangeFormatterRefTest extends ContextTestSupp
     private static int invoked;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myExchangeFormatter", new MyExchangeFormatter());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerOnExceptionOccurredProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerOnExceptionOccurredProcessorTest.java
index 1a395fc..32bc057 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerOnExceptionOccurredProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerOnExceptionOccurredProcessorTest.java
@@ -20,14 +20,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class DefaultErrorHandlerOnExceptionOccurredProcessorTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myProcessor", new MyProcessor());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java
index ded56c1..861bb95 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -31,8 +31,8 @@ public class DefaultErrorHandlerRetryWhileTest extends ContextTestSupport {
     private static int invoked;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRetryHandler", new MyRetryBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionComplexRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionComplexRouteTest.java
index d36d65a..7604723 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionComplexRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionComplexRouteTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.processor.onexception;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -98,8 +98,8 @@ public class OnExceptionComplexRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myServiceBean", myServiceBean);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java
index 64d1b2c..5fe725e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.processor.onexception;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -83,8 +83,8 @@ public class OnExceptionFromChoiceTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myServiceBean", myServiceBean);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceUseOriginalBodyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceUseOriginalBodyTest.java
index 3f00ba5..d357f7d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceUseOriginalBodyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceUseOriginalBodyTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.processor.onexception;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -83,8 +83,8 @@ public class OnExceptionFromChoiceUseOriginalBodyTest extends ContextTestSupport
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myServiceBean", myServiceBean);
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorOnExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorOnExceptionTest.java
index 78526aa..8c88dab 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorOnExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorOnExceptionTest.java
@@ -20,14 +20,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class OnExceptionOccurredProcessorOnExceptionTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myProcessor", new MyProcessor());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorTest.java
index 618de36..7ab8bee 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionOccurredProcessorTest.java
@@ -20,14 +20,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class OnExceptionOccurredProcessorTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myProcessor", new MyProcessor());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java
index 19285ca..b4d3aac 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ExchangeException;
 import org.apache.camel.Header;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -34,8 +34,8 @@ public class OnExceptionRetryUntilTest extends ContextTestSupport {
     private static int invoked;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRetryHandler", new MyRetryBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilWithDefaultErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilWithDefaultErrorHandlerTest.java
index 54f8639..cf503b3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilWithDefaultErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilWithDefaultErrorHandlerTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ExchangeException;
 import org.apache.camel.Header;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -34,8 +34,8 @@ public class OnExceptionRetryUntilWithDefaultErrorHandlerTest extends ContextTes
     private static int invoked;
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myRetryHandler", new MyRetryBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java
index 7ff0e9d..3e845f4 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -107,8 +107,8 @@ public class OnExceptionRouteTest extends ContextTestSupport {
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myOwnHandler", myOwnHandlerBean);
         jndi.bind("myServiceBean", myServiceBean);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteWithDefaultErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteWithDefaultErrorHandlerTest.java
index 2e93dae..492ce72 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteWithDefaultErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteWithDefaultErrorHandlerTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -91,8 +91,8 @@ public class OnExceptionRouteWithDefaultErrorHandlerTest extends ContextTestSupp
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myOwnHandler", myOwnHandlerBean);
         jndi.bind("myServiceBean", myServiceBean);
         return jndi;
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipDataModificationTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipDataModificationTest.java
index 7ef0bfd..220d9b5 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipDataModificationTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipDataModificationTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.processor.routingslip;
 
-import javax.naming.Context;
-
 import org.apache.camel.Body;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -58,8 +56,8 @@ public class RoutingSlipDataModificationTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
index 23484df..2d3e4ed 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
@@ -18,14 +18,12 @@ package org.apache.camel.processor.routingslip;
 
 import java.util.concurrent.TimeUnit;
 
-import javax.naming.Context;
-
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jndi.JndiContext;
+import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -139,8 +137,8 @@ public class RoutingSlipWithExceptionTest extends ContextTestSupport {
     }
 
     @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
         answer.bind("myBean", myBean);
         return answer;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/support/jndi/JndiCamelSingletonInitialContextFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/support/jndi/JndiCamelSingletonInitialContextFactoryTest.java
index b2ba0e7..6765e6b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/support/jndi/JndiCamelSingletonInitialContextFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/support/jndi/JndiCamelSingletonInitialContextFactoryTest.java
@@ -26,7 +26,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.DefaultRegistry;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -47,10 +48,10 @@ public class JndiCamelSingletonInitialContextFactoryTest extends ContextTestSupp
     }
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = new JndiRegistry(new InitialContext(env));
-        jndi.bind("jdbc/myDataSource", FAKE);
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Context context = new InitialContext(env);
+        context.bind("jdbc/myDataSource", FAKE);
+        return new DefaultRegistry(new JndiBeanRepository(context));
     }
 
     @Test
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java
index 81272f9..3455d5e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.apache.camel.support.CamelContextHelper;
 import org.junit.Assert;
 import org.junit.Test;
@@ -30,8 +30,8 @@ import org.junit.Test;
 public class CamelContextHelperTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("foo", new MyFooBean());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlDanishCharactersTest.java b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlDanishCharactersTest.java
index 21dc50f..79485d9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlDanishCharactersTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlDanishCharactersTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.MyBarSingleton;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -29,8 +29,8 @@ import org.junit.Test;
 public class DumpModelAsXmlDanishCharactersTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myCoolBean", new MyBarSingleton());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java
index e7acee7..eded380 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.MyBarSingleton;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -29,8 +29,8 @@ import org.junit.Test;
 public class DumpModelAsXmlRouteExpressionTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myCoolBean", new MyBarSingleton());
         return jndi;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java
index 22ecd45..f750829 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.MyBarSingleton;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 /**
@@ -29,8 +29,8 @@ import org.junit.Test;
 public class DumpModelAsXmlRoutePredicateTest extends ContextTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
+    protected Registry createRegistry() throws Exception {
+        Registry jndi = super.createRegistry();
         jndi.bind("myCoolBean", new MyBarSingleton());
         return jndi;
     }
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
index 564a35b..0d8109c 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
@@ -23,17 +23,17 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.processor.loadbalancer.LoadBalancerSupport;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class ManagedCustomLoadBalancerTest extends ManagementTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("myBalancer", new MyLoadBalancer());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("myBalancer", new MyLoadBalancer());
+        return answer;
     }
 
     @Test
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedProcessTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedProcessTest.java
index f39c550..72e610e 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedProcessTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedProcessTest.java
@@ -22,16 +22,16 @@ import javax.management.ObjectName;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.spi.Registry;
 import org.junit.Test;
 
 public class ManagedProcessTest extends ManagementTestSupport {
 
     @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("foo", new MyDummyProcessor());
-        return jndi;
+    protected Registry createRegistry() throws Exception {
+        Registry answer = super.createRegistry();
+        answer.bind("foo", new MyDummyProcessor());
+        return answer;
     }
 
     @Test


[camel] 02/32: Remove remaining RouteContext / CamelContext parameters in reifiers methods

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 56bac57e8bccb59a8197bfff4d51b54e3065d1dc
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Feb 19 14:55:00 2020 +0100

    Remove remaining RouteContext / CamelContext parameters in reifiers methods
---
 .../camel/component/hystrix/processor/HystrixReifier.java      |  2 +-
 .../camel/spring/spi/TransactionErrorHandlerReifier.java       |  2 +-
 .../main/java/org/apache/camel/reifier/AbstractReifier.java    |  4 ++++
 .../main/java/org/apache/camel/reifier/AggregateReifier.java   |  4 ++--
 .../src/main/java/org/apache/camel/reifier/CatchReifier.java   |  7 +++----
 .../org/apache/camel/reifier/IdempotentConsumerReifier.java    |  5 ++---
 .../apache/camel/reifier/InterceptSendToEndpointReifier.java   |  6 ++----
 .../java/org/apache/camel/reifier/OnCompletionReifier.java     |  2 +-
 .../main/java/org/apache/camel/reifier/OnExceptionReifier.java |  6 +++---
 .../main/java/org/apache/camel/reifier/ProcessorReifier.java   |  6 +++---
 .../main/java/org/apache/camel/reifier/ResequenceReifier.java  | 10 ++++------
 .../src/main/java/org/apache/camel/reifier/SagaReifier.java    |  9 ++++-----
 .../org/apache/camel/reifier/SetExchangePatternReifier.java    |  2 +-
 .../src/main/java/org/apache/camel/reifier/StepReifier.java    |  2 +-
 .../src/main/java/org/apache/camel/reifier/ThreadsReifier.java |  4 ++--
 .../main/java/org/apache/camel/reifier/ToDynamicReifier.java   |  4 ++--
 .../src/main/java/org/apache/camel/reifier/WireTapReifier.java |  4 ++--
 .../org/apache/camel/reifier/dataformat/DataFormatReifier.java |  8 ++++----
 .../camel/reifier/errorhandler/DeadLetterChannelReifier.java   |  2 +-
 .../camel/reifier/errorhandler/DefaultErrorHandlerReifier.java |  2 +-
 .../apache/camel/reifier/errorhandler/ErrorHandlerReifier.java |  4 ++--
 21 files changed, 46 insertions(+), 49 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 10d535a..1ea7251 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
@@ -54,7 +54,7 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
         }
 
         final HystrixConfigurationDefinition config = buildHystrixConfiguration();
-        final String id = getId(definition, routeContext);
+        final String id = getId(definition);
 
         // 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/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
index 29dc00b..1aa68ca 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
@@ -99,7 +99,7 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
                 getExecutorService(camelContext),
                 definition.getRollbackLoggingLevel(), definition.getOnExceptionOccurred());
         // configure error handler before we can use it
-        configure(routeContext, answer);
+        configure(answer);
         return answer;
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
index 8e4d9b8..0d82b28 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
@@ -131,6 +131,10 @@ public abstract class AbstractReifier implements BeanRepository {
         return CamelContextHelper.mandatoryLookup(camelContext, name, beanType);
     }
 
+    public <T> T findSingleByType(Class<T> type) {
+        return CamelContextHelper.findByType(camelContext, type);
+    }
+
     @Override
     public Object lookupByName(String name) {
         return getRegistry().lookupByName(name);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
index 5f60275..16ea9d3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
@@ -70,7 +70,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
 
         AggregateProcessor answer = new AggregateProcessor(camelContext, internal, correlation, strategy, threadPool, shutdownThreadPool);
 
-        AggregationRepository repository = createAggregationRepository(routeContext);
+        AggregationRepository repository = createAggregationRepository();
         if (repository != null) {
             answer.setAggregationRepository(repository);
         }
@@ -243,7 +243,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
         return strategy;
     }
 
-    private AggregationRepository createAggregationRepository(RouteContext routeContext) {
+    private AggregationRepository createAggregationRepository() {
         AggregationRepository repository = definition.getAggregationRepository();
         if (repository == null && definition.getAggregationRepositoryRef() != null) {
             repository = mandatoryLookup(definition.getAggregationRepositoryRef(), AggregationRepository.class);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java
index 82fbeb9..3a28fa3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/CatchReifier.java
@@ -19,7 +19,6 @@ package org.apache.camel.reifier;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.model.CatchDefinition;
@@ -38,7 +37,7 @@ public class CatchReifier extends ProcessorReifier<CatchDefinition> {
     public CatchProcessor createProcessor() throws Exception {
         // create and load exceptions if not done
         if (definition.getExceptionClasses() == null) {
-            definition.setExceptionClasses(createExceptionClasses(camelContext));
+            definition.setExceptionClasses(createExceptionClasses());
         }
 
         // must have at least one exception
@@ -62,7 +61,7 @@ public class CatchReifier extends ProcessorReifier<CatchDefinition> {
         return new CatchProcessor(definition.getExceptionClasses(), childProcessor, when, null);
     }
 
-    protected List<Class<? extends Throwable>> createExceptionClasses(CamelContext context) throws ClassNotFoundException {
+    protected List<Class<? extends Throwable>> createExceptionClasses() throws ClassNotFoundException {
         // must use the class resolver from CamelContext to load classes to
         // ensure it can
         // be loaded in all kind of environments such as JEE servers and OSGi
@@ -70,7 +69,7 @@ public class CatchReifier extends ProcessorReifier<CatchDefinition> {
         List<String> list = definition.getExceptions();
         List<Class<? extends Throwable>> answer = new ArrayList<>(list.size());
         for (String name : list) {
-            Class<Throwable> type = context.getClassResolver().resolveMandatoryClass(name, Throwable.class);
+            Class<Throwable> type = camelContext.getClassResolver().resolveMandatoryClass(name, Throwable.class);
             answer.add(type);
         }
         return answer;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
index ea01951..95e7620 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
@@ -35,7 +35,7 @@ public class IdempotentConsumerReifier extends ExpressionReifier<IdempotentConsu
     public Processor createProcessor() throws Exception {
         Processor childProcessor = this.createChildProcessor(true);
 
-        IdempotentRepository idempotentRepository = resolveMessageIdRepository(routeContext);
+        IdempotentRepository idempotentRepository = resolveMessageIdRepository();
         ObjectHelper.notNull(idempotentRepository, "idempotentRepository", definition);
 
         Expression expression = createExpression(definition.getExpression());
@@ -55,10 +55,9 @@ public class IdempotentConsumerReifier extends ExpressionReifier<IdempotentConsu
      * Strategy method to resolve the
      * {@link org.apache.camel.spi.IdempotentRepository} to use
      *
-     * @param routeContext route context
      * @return the repository
      */
-    protected <T> IdempotentRepository resolveMessageIdRepository(RouteContext routeContext) {
+    protected <T> IdempotentRepository resolveMessageIdRepository() {
         if (definition.getMessageIdRepositoryRef() != null) {
             definition.setMessageIdRepository(mandatoryLookup(parseString(definition.getMessageIdRepositoryRef()), IdempotentRepository.class));
         }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
index 694f2ff..8f67c94 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
@@ -18,7 +18,6 @@ package org.apache.camel.reifier;
 
 import java.util.List;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
@@ -66,7 +65,7 @@ public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSe
                 if (endpoint instanceof DefaultInterceptSendToEndpoint) {
                     // endpoint already decorated
                     return endpoint;
-                } else if (matchURI == null || matchPattern(camelContext, uri, matchURI)) {
+                } else if (matchURI == null || matchPattern(uri, matchURI)) {
                     // only proxy if the uri is matched decorate endpoint with
                     // our proxy
                     // should be false by default
@@ -97,13 +96,12 @@ public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSe
     /**
      * Does the uri match the pattern.
      *
-     * @param camelContext the CamelContext
      * @param uri the uri
      * @param pattern the pattern, which can be an endpoint uri as well
      * @return <tt>true</tt> if matched and we should intercept, <tt>false</tt>
      *         if not matched, and not intercept.
      */
-    protected boolean matchPattern(CamelContext camelContext, String uri, String pattern) {
+    protected boolean matchPattern(String uri, String pattern) {
         // match using the pattern as-is
         boolean match = EndpointHelper.matchEndpoint(camelContext, uri, pattern);
         if (!match) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
index c0ed578..e97f67e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
@@ -68,7 +68,7 @@ public class OnCompletionReifier extends ProcessorReifier<OnCompletionDefinition
         CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, childProcessor);
         internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
 
-        routeContext.setOnCompletion(getId(definition, routeContext), internal);
+        routeContext.setOnCompletion(getId(definition), internal);
 
         Predicate when = null;
         if (definition.getOnWhen() != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
index 0797a09..99428ca 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
@@ -19,9 +19,9 @@ package org.apache.camel.reifier;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Predicate;
 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.processor.CatchProcessor;
@@ -63,11 +63,11 @@ public class OnExceptionReifier extends ProcessorReifier<OnExceptionDefinition>
             // wrap in our special safe fallback error handler if OnException
             // have child output
             Processor errorHandler = new FatalFallbackErrorHandler(child);
-            String id = getId(definition, routeContext);
+            String id = getId(definition);
             routeContext.setOnException(id, errorHandler);
         }
         // lookup the error handler builder
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder)routeContext.getErrorHandlerFactory();
+        ErrorHandlerFactory builder = routeContext.getErrorHandlerFactory();
         // and add this as error handlers
         routeContext.addErrorHandler(builder, definition);
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 68e6caf..c693938 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -723,7 +723,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
 
             // inject id
             if (processor instanceof IdAware) {
-                String id = getId(output, routeContext);
+                String id = getId(output);
                 ((IdAware)processor).setId(id);
             }
             if (processor instanceof RouteIdAware) {
@@ -788,7 +788,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
 
         // inject id
         if (processor instanceof IdAware) {
-            String id = getId(definition, routeContext);
+            String id = getId(definition);
             ((IdAware)processor).setId(id);
         }
         if (processor instanceof RouteIdAware) {
@@ -819,7 +819,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         // noop
     }
 
-    protected String getId(OptionalIdentifiedDefinition<?> def, RouteContext routeContext) {
+    protected String getId(OptionalIdentifiedDefinition<?> def) {
         return def.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
index 2d8e4e5..74d92d9 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
@@ -50,13 +50,13 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
         }
 
         if (stream != null) {
-            return createStreamResequencer(routeContext, stream);
+            return createStreamResequencer(stream);
         } else {
             // default as batch mode
             if (batch == null) {
                 batch = BatchResequencerConfig.getDefault();
             }
-            return createBatchResequencer(routeContext, batch);
+            return createBatchResequencer(batch);
         }
     }
 
@@ -64,13 +64,12 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
      * Creates a batch {@link Resequencer} instance applying the given
      * <code>config</code>.
      *
-     * @param routeContext route context.
      * @param config batch resequencer configuration.
      * @return the configured batch resequencer.
      * @throws Exception can be thrown
      */
     @SuppressWarnings("deprecation")
-    protected Resequencer createBatchResequencer(RouteContext routeContext, BatchResequencerConfig config) throws Exception {
+    protected Resequencer createBatchResequencer(BatchResequencerConfig config) throws Exception {
         Processor processor = this.createChildProcessor(true);
         Expression expression = createExpression(definition.getExpression());
 
@@ -99,12 +98,11 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
      * Creates a {@link StreamResequencer} instance applying the given
      * <code>config</code>.
      *
-     * @param routeContext route context.
      * @param config stream resequencer configuration.
      * @return the configured stream resequencer.
      * @throws Exception can be thrwon
      */
-    protected StreamResequencer createStreamResequencer(RouteContext routeContext, StreamResequencerConfig config) throws Exception {
+    protected StreamResequencer createStreamResequencer(StreamResequencerConfig config) throws Exception {
         Processor processor = this.createChildProcessor(true);
         Expression expression = createExpression(definition.getExpression());
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
index a6ce8b1..17f300d 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.TreeMap;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
@@ -78,7 +77,7 @@ public class SagaReifier extends ProcessorReifier<SagaDefinition> {
         }
 
         Processor childProcessor = this.createChildProcessor(true);
-        CamelSagaService camelSagaService = findSagaService(camelContext);
+        CamelSagaService camelSagaService = findSagaService();
 
         camelSagaService.registerStep(step);
 
@@ -87,7 +86,7 @@ public class SagaReifier extends ProcessorReifier<SagaDefinition> {
                 .propagation(propagation).completionMode(completionMode).build();
     }
 
-    protected CamelSagaService findSagaService(CamelContext context) {
+    protected CamelSagaService findSagaService() {
         CamelSagaService sagaService = definition.getSagaService();
         if (sagaService != null) {
             return sagaService;
@@ -97,12 +96,12 @@ public class SagaReifier extends ProcessorReifier<SagaDefinition> {
             return mandatoryLookup(parseString(definition.getSagaServiceRef()), CamelSagaService.class);
         }
 
-        sagaService = context.hasService(CamelSagaService.class);
+        sagaService = camelContext.hasService(CamelSagaService.class);
         if (sagaService != null) {
             return sagaService;
         }
 
-        sagaService = CamelContextHelper.findByType(context, CamelSagaService.class);
+        sagaService = findSingleByType(CamelSagaService.class);
         if (sagaService != null) {
             return sagaService;
         }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java
index 71ed650..af54620 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java
@@ -25,7 +25,7 @@ import org.apache.camel.spi.RouteContext;
 
 public class SetExchangePatternReifier extends ProcessorReifier<SetExchangePatternDefinition> {
 
-    SetExchangePatternReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
+    public SetExchangePatternReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
         super(routeContext, (SetExchangePatternDefinition)definition);
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java
index fcfb79a..40b2ebd 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/StepReifier.java
@@ -37,7 +37,7 @@ public class StepReifier extends ProcessorReifier<StepDefinition> {
 
     @Override
     protected Processor createCompositeProcessor(List<Processor> list) throws Exception {
-        String stepId = getId(definition, routeContext);
+        String stepId = getId(definition);
         return StepProcessor.newInstance(camelContext, list, stepId);
     }
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java
index 29b13db..cd7282b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThreadsReifier.java
@@ -44,7 +44,7 @@ public class ThreadsReifier extends ProcessorReifier<ThreadsDefinition> {
         ExecutorService threadPool = getConfiguredExecutorService(name, definition, false);
 
         // resolve what rejected policy to use
-        ThreadPoolRejectedPolicy policy = resolveRejectedPolicy(routeContext);
+        ThreadPoolRejectedPolicy policy = resolveRejectedPolicy();
         if (policy == null) {
             if (parseBoolean(definition.getCallerRunsWhenRejected(), true)) {
                 // should use caller runs by default if not configured
@@ -100,7 +100,7 @@ public class ThreadsReifier extends ProcessorReifier<ThreadsDefinition> {
         return new ThreadsProcessor(camelContext, threadPool, shutdownThreadPool, policy);
     }
 
-    protected ThreadPoolRejectedPolicy resolveRejectedPolicy(RouteContext routeContext) {
+    protected ThreadPoolRejectedPolicy resolveRejectedPolicy() {
         if (definition.getExecutorServiceRef() != null && definition.getRejectedPolicy() == null) {
             ThreadPoolProfile threadPoolProfile = camelContext.getExecutorServiceManager().getThreadPoolProfile(parseString(definition.getExecutorServiceRef()));
             if (threadPoolProfile != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java
index bf3368a..a323fc3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java
@@ -48,7 +48,7 @@ public class ToDynamicReifier<T extends ToDynamicDefinition> extends ProcessorRe
             exp = definition.getEndpointProducerBuilder().expr(camelContext);
         } else {
             uri = StringHelper.notEmpty(definition.getUri(), "uri", this);
-            exp = createExpression(routeContext, uri);
+            exp = createExpression(uri);
         }
 
         SendDynamicProcessor processor = new SendDynamicProcessor(uri, exp);
@@ -66,7 +66,7 @@ public class ToDynamicReifier<T extends ToDynamicDefinition> extends ProcessorRe
         return processor;
     }
 
-    protected Expression createExpression(RouteContext routeContext, String uri) {
+    protected Expression createExpression(String uri) {
         List<Expression> list = new ArrayList<>();
 
         String[] parts = safeSplitRaw(uri);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
index 8edaae7..9a69586 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
@@ -91,10 +91,10 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
     }
 
     @Override
-    protected Expression createExpression(RouteContext routeContext, String uri) {
+    protected Expression createExpression(String uri) {
         // whether to use dynamic or static uri
         if (parseBoolean(definition.getDynamicUri(), true)) {
-            return super.createExpression(routeContext, uri);
+            return super.createExpression(uri);
         } else {
             return ExpressionBuilder.constantExpression(uri);
         }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index a3c2712..0707c79 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -207,7 +207,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
                     ((DataFormatContentTypeHeader) dataFormat).setContentTypeHeader(contentTypeHeader);
                 }
                 // configure the rest of the options
-                configureDataFormat(dataFormat, camelContext);
+                configureDataFormat(dataFormat);
             } else {
                 throw new IllegalArgumentException("Data format '" + (definition.getDataFormatName() != null ? definition.getDataFormatName() : "<null>")
                                                    + "' could not be created. "
@@ -236,12 +236,12 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
     /**
      * Allows derived classes to customize the data format
      */
-    protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
+    protected void configureDataFormat(DataFormat dataFormat) {
         Map<String, Object> properties = new LinkedHashMap<>();
         prepareDataFormatConfig(properties);
         properties.entrySet().removeIf(e -> e.getValue() == null);
 
-        PropertyConfigurer configurer = findPropertyConfigurer(dataFormat, camelContext);
+        PropertyConfigurer configurer = findPropertyConfigurer(dataFormat);
 
         PropertyBindingSupport.build()
                 .withCamelContext(camelContext)
@@ -253,7 +253,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
                 .bind();
     }
 
-    private PropertyConfigurer findPropertyConfigurer(DataFormat dataFormat, CamelContext camelContext) {
+    private PropertyConfigurer findPropertyConfigurer(DataFormat dataFormat) {
         PropertyConfigurer configurer = null;
         String name = getDataFormatName();
         LOG.trace("Discovering optional dataformat property configurer class for dataformat: {}", name);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
index 2a5c6a9..716a9bf 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DeadLetterChannelReifier.java
@@ -41,7 +41,7 @@ public class DeadLetterChannelReifier extends DefaultErrorHandlerReifier<DeadLet
                                                          definition.isUseOriginalBody(), definition.getRetryWhilePolicy(camelContext),
                                                          getExecutorService(camelContext), definition.getOnPrepareFailure(), definition.getOnExceptionOccurred());
         // configure error handler before we can use it
-        configure(routeContext, answer);
+        configure(answer);
         return answer;
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
index 7235574..88a50ea 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
@@ -40,7 +40,7 @@ public class DefaultErrorHandlerReifier<T extends DefaultErrorHandlerBuilder> ex
                                                              definition.getRetryWhilePolicy(camelContext), getExecutorService(camelContext),
                                                              definition.getOnPrepareFailure(), definition.getOnExceptionOccurred());
         // configure error handler before we can use it
-        configure(routeContext, answer);
+        configure(answer);
         return answer;
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
index 0d6f3d7..c769767 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
@@ -67,7 +67,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
     /**
      * Utility classes should not have a public constructor.
      */
-    ErrorHandlerReifier(RouteContext routeContext, T definition) {
+    protected ErrorHandlerReifier(RouteContext routeContext, T definition) {
         super(routeContext);
         this.definition = definition;
     }
@@ -271,7 +271,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
      */
     public abstract Processor createErrorHandler(Processor processor) throws Exception;
 
-    public void configure(RouteContext routeContext, ErrorHandler handler) {
+    public void configure(ErrorHandler handler) {
         if (handler instanceof ErrorHandlerSupport) {
             ErrorHandlerSupport handlerSupport = (ErrorHandlerSupport)handler;
 


[camel] 07/32: Remove references to error handler and event driven processors once creation is finished

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 463fcd11c7bcdd3b8d7bdc3301dbce39674c1168
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Feb 25 13:50:35 2020 +0100

    Remove references to error handler and event driven processors once creation is finished
---
 .../src/main/java/org/apache/camel/impl/engine/DefaultRoute.java       | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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 47f6602..c52c690 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
@@ -613,6 +613,7 @@ public class DefaultRoute extends ServiceSupport implements Route {
     }
 
     public void initialized() {
-
+        errorHandlers.clear();
+        eventDrivenProcessors.clear();
     }
 }


[camel] 28/32: Rename package org.apache.camel.impl.cluster to org.apache.camel.cluster

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 909bbcec7ab7361d22006819c5474e375dc7486d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 08:02:37 2020 +0100

    Rename package org.apache.camel.impl.cluster to org.apache.camel.cluster
---
 .../atomix/cluster/AtomixClientClusteredRoutePolicyFactoryMain.java | 2 +-
 .../atomix/cluster/AtomixClientRoutePolicyFactoryTestSupport.java   | 2 +-
 .../atomix/cluster/AtomixClientRoutePolicyTestSupport.java          | 2 +-
 .../component/atomix/cluster/AtomixRoutePolicyFactoryTest.java      | 2 +-
 .../camel/component/atomix/cluster/AtomixRoutePolicyTest.java       | 2 +-
 .../consul/cluster/ConsulClusteredRoutePolicyFactoryMain.java       | 2 +-
 .../consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java       | 2 +-
 .../component/consul/cluster/ConsulClusteredRoutePolicyTest.java    | 2 +-
 .../jgroups/raft/cluster/JGroupsRaftClusteredRoutePolicyTest.java   | 2 +-
 .../cluster/SpringZooKeeperClusteredRouteConfigurationTest.java     | 2 +-
 .../zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryMain.java | 2 +-
 .../zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryTest.java | 2 +-
 .../zookeeper/cluster/ZooKeeperClusteredRoutePolicyTest.java        | 2 +-
 .../cluster/SpringZooKeeperClusteredRouteConfigurationTest.xml      | 2 +-
 .../camel/{impl => }/cluster/ClusteredRouteConfiguration.java       | 2 +-
 .../apache/camel/{impl => }/cluster/ClusteredRouteController.java   | 3 +--
 .../org/apache/camel/{impl => }/cluster/ClusteredRouteFilter.java   | 2 +-
 .../org/apache/camel/{impl => }/cluster/ClusteredRouteFilters.java  | 2 +-
 .../org/apache/camel/{impl => }/cluster/ClusteredRoutePolicy.java   | 6 +-----
 .../camel/{impl => }/cluster/ClusteredRoutePolicyFactory.java       | 3 +--
 .../src/main/java/org/apache/camel/{impl => }/cluster/package.html  | 0
 .../apache/camel/{impl => }/cluster/ClusterServiceSelectorTest.java | 5 +----
 .../org/apache/camel/{impl => }/cluster/ClusterServiceViewTest.java | 5 +----
 .../file/cluster/FileLockClusteredRoutePolicyFactoryTest.java       | 2 +-
 .../component/file/cluster/FileLockClusteredRoutePolicyTest.java    | 2 +-
 25 files changed, 24 insertions(+), 36 deletions(-)

diff --git a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientClusteredRoutePolicyFactoryMain.java b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientClusteredRoutePolicyFactoryMain.java
index 7b24170..6d4e962 100644
--- a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientClusteredRoutePolicyFactoryMain.java
+++ b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientClusteredRoutePolicyFactoryMain.java
@@ -22,7 +22,7 @@ import io.atomix.catalyst.transport.Address;
 import io.atomix.copycat.server.storage.StorageLevel;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.apache.camel.impl.engine.ExplicitCamelContextNameStrategy;
 import org.apache.camel.main.Main;
 import org.apache.camel.main.MainListenerSupport;
diff --git a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyFactoryTestSupport.java b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyFactoryTestSupport.java
index a251548..ccb46fd 100644
--- a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyFactoryTestSupport.java
+++ b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyFactoryTestSupport.java
@@ -32,7 +32,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.component.atomix.client.AtomixFactory;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyTestSupport.java b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyTestSupport.java
index a6a9cd6..6fc34cf 100644
--- a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyTestSupport.java
+++ b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixClientRoutePolicyTestSupport.java
@@ -32,7 +32,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.component.atomix.client.AtomixFactory;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicy;
+import org.apache.camel.cluster.ClusteredRoutePolicy;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyFactoryTest.java b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyFactoryTest.java
index 6961d57..61de3e4 100644
--- a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyFactoryTest.java
+++ b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyFactoryTest.java
@@ -30,7 +30,7 @@ import io.atomix.catalyst.transport.Address;
 import io.atomix.copycat.server.storage.StorageLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyTest.java b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyTest.java
index f654385..6d00d99 100644
--- a/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyTest.java
+++ b/components/camel-atomix/src/test/java/org/apache/camel/component/atomix/cluster/AtomixRoutePolicyTest.java
@@ -30,7 +30,7 @@ import io.atomix.catalyst.transport.Address;
 import io.atomix.copycat.server.storage.StorageLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicy;
+import org.apache.camel.cluster.ClusteredRoutePolicy;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryMain.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryMain.java
index 7c49e50..c633038 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryMain.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryMain.java
@@ -20,7 +20,7 @@ import java.util.UUID;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.apache.camel.impl.engine.ExplicitCamelContextNameStrategy;
 import org.apache.camel.main.Main;
 import org.apache.camel.main.MainListenerSupport;
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
index 31f080e..ffbeb38 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
@@ -30,7 +30,7 @@ import com.orbitz.consul.Consul;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.consul.ConsulTestSupport;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java
index 949c543..4d15d53 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java
@@ -30,7 +30,7 @@ import com.orbitz.consul.Consul;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.consul.ConsulTestSupport;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicy;
+import org.apache.camel.cluster.ClusteredRoutePolicy;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
diff --git a/components/camel-jgroups-raft/src/test/java/org/apache/camel/component/jgroups/raft/cluster/JGroupsRaftClusteredRoutePolicyTest.java b/components/camel-jgroups-raft/src/test/java/org/apache/camel/component/jgroups/raft/cluster/JGroupsRaftClusteredRoutePolicyTest.java
index f676644..991eaea 100644
--- a/components/camel-jgroups-raft/src/test/java/org/apache/camel/component/jgroups/raft/cluster/JGroupsRaftClusteredRoutePolicyTest.java
+++ b/components/camel-jgroups-raft/src/test/java/org/apache/camel/component/jgroups/raft/cluster/JGroupsRaftClusteredRoutePolicyTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jgroups.raft.utils.NopStateMachine;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicy;
+import org.apache.camel.cluster.ClusteredRoutePolicy;
 import org.jgroups.JChannel;
 import org.jgroups.raft.RaftHandle;
 import org.junit.Test;
diff --git a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.java b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.java
index 53f2721..1789100 100644
--- a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.java
+++ b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.java
@@ -17,7 +17,7 @@
 package org.apache.camel.component.zookeeper.cluster;
 
 import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.apache.camel.test.spring.CamelSpringTestSupport;
 import org.junit.Test;
 import org.springframework.context.support.AbstractApplicationContext;
diff --git a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryMain.java b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryMain.java
index afa68ec..83f9853 100644
--- a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryMain.java
+++ b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryMain.java
@@ -20,7 +20,7 @@ import java.util.UUID;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.apache.camel.impl.engine.ExplicitCamelContextNameStrategy;
 import org.apache.camel.main.Main;
 import org.apache.camel.main.MainListenerSupport;
diff --git a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryTest.java b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryTest.java
index b3289c3..147e4f9 100644
--- a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryTest.java
+++ b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyFactoryTest.java
@@ -29,7 +29,7 @@ import java.util.stream.IntStream;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.zookeeper.ZooKeeperContainer;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyTest.java b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyTest.java
index b686f74..0f21fe9 100644
--- a/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyTest.java
+++ b/components/camel-zookeeper/src/test/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusteredRoutePolicyTest.java
@@ -29,7 +29,7 @@ import java.util.stream.IntStream;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.zookeeper.ZooKeeperContainer;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicy;
+import org.apache.camel.cluster.ClusteredRoutePolicy;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/components/camel-zookeeper/src/test/resources/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.xml b/components/camel-zookeeper/src/test/resources/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.xml
index 2b91015..0b4c0b0 100644
--- a/components/camel-zookeeper/src/test/resources/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.xml
+++ b/components/camel-zookeeper/src/test/resources/org/apache/camel/component/zookeeper/cluster/SpringZooKeeperClusteredRouteConfigurationTest.xml
@@ -43,7 +43,7 @@
     <property name="nodes" ref="zkConnectString"/>
   </bean>
 
-  <bean id="cluster-policy" class="org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory" factory-method="forNamespace">
+  <bean id="cluster-policy" class="org.apache.camel.cluster.ClusteredRoutePolicyFactory" factory-method="forNamespace">
     <constructor-arg value="my-ns"/>
   </bean>
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteConfiguration.java b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteConfiguration.java
similarity index 97%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteConfiguration.java
rename to core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteConfiguration.java
index 3eff1b5..05687c3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteConfiguration.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteConfiguration.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import java.time.Duration;
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteController.java
similarity index 99%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
rename to core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteController.java
index 229b360..8af3ac3 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteController.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import java.time.Duration;
 import java.util.ArrayList;
@@ -35,7 +35,6 @@ import org.apache.camel.Experimental;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.impl.engine.DefaultRouteController;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteFilter.java
similarity index 97%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
rename to core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteFilter.java
index 85ddf48..4d72f47 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteFilter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilters.java b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteFilters.java
similarity index 98%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilters.java
rename to core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteFilters.java
index 278f506..9e5ff43 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilters.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRouteFilters.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicy.java
similarity index 98%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
rename to core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicy.java
index 2d09695..c4e976a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicy.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import java.time.Duration;
 import java.util.HashSet;
@@ -32,10 +32,6 @@ import org.apache.camel.ServiceStatus;
 import org.apache.camel.StartupListener;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
-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.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
 import org.apache.camel.support.EventNotifierSupport;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicyFactory.java
similarity index 97%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
rename to core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicyFactory.java
index f3c87a0..fa02c8b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicyFactory.java
@@ -14,12 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.support.cluster.ClusterServiceSelectors;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/package.html b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/package.html
similarity index 100%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/package.html
rename to core/camel-core-engine/src/main/java/org/apache/camel/cluster/package.html
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java b/core/camel-core/src/test/java/org/apache/camel/cluster/ClusterServiceSelectorTest.java
similarity index 98%
rename from core/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
rename to core/camel-core/src/test/java/org/apache/camel/cluster/ClusterServiceSelectorTest.java
index a67ac63..25c2f22 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/cluster/ClusterServiceSelectorTest.java
@@ -14,16 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.cluster.CamelClusterMember;
-import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.cluster.CamelClusterView;
 import org.apache.camel.component.file.cluster.FileLockClusterService;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.support.cluster.AbstractCamelClusterService;
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceViewTest.java b/core/camel-core/src/test/java/org/apache/camel/cluster/ClusterServiceViewTest.java
similarity index 97%
rename from core/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceViewTest.java
rename to core/camel-core/src/test/java/org/apache/camel/cluster/ClusterServiceViewTest.java
index 1c5930f..feda62a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceViewTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/cluster/ClusterServiceViewTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl.cluster;
+package org.apache.camel.cluster;
 
 import java.util.Collections;
 import java.util.HashSet;
@@ -28,9 +28,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.IntStream;
 
 import org.apache.camel.ServiceStatus;
-import org.apache.camel.cluster.CamelClusterEventListener;
-import org.apache.camel.cluster.CamelClusterMember;
-import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.support.cluster.AbstractCamelClusterService;
 import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.junit.Assert;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyFactoryTest.java
index 6b6c4e6..71caa29 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyFactoryTest.java
@@ -28,7 +28,7 @@ import java.util.stream.IntStream;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
+import org.apache.camel.cluster.ClusteredRoutePolicyFactory;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyTest.java
index d9d8f59..4c40720 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/file/cluster/FileLockClusteredRoutePolicyTest.java
@@ -28,7 +28,7 @@ import java.util.stream.IntStream;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.cluster.ClusteredRoutePolicy;
+import org.apache.camel.cluster.ClusteredRoutePolicy;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;


[camel] 27/32: CS: remove unused imports

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 a58155e4e94db1c9011e977f8957b2e7e0bfa6de
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 07:57:29 2020 +0100

    CS: remove unused imports
---
 .../java/org/apache/camel/impl/engine/DefaultTransformerRegistry.java | 2 --
 .../java/org/apache/camel/impl/engine/DefaultValidatorRegistry.java   | 4 ----
 2 files changed, 6 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultTransformerRegistry.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultTransformerRegistry.java
index eb1a12c..aee5d50 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultTransformerRegistry.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultTransformerRegistry.java
@@ -21,11 +21,9 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.transformer.TransformerKey;
-import org.apache.camel.impl.validator.ValidatorKey;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Transformer;
 import org.apache.camel.spi.TransformerRegistry;
-import org.apache.camel.spi.Validator;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultValidatorRegistry.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultValidatorRegistry.java
index a13f889..6f707d9 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultValidatorRegistry.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultValidatorRegistry.java
@@ -16,17 +16,13 @@
  */
 package org.apache.camel.impl.engine;
 
-import java.io.IOException;
-
 import org.apache.camel.CamelContext;
-import org.apache.camel.Service;
 import org.apache.camel.impl.validator.ValidatorKey;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Validator;
 import org.apache.camel.spi.ValidatorRegistry;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.service.ServiceHelper;
-import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
 /**


[camel] 18/32: Remove warnings since we are testing a deprecated class

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 a8a5385d190c229417a8928f6bae9fa809b80f17
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 21:02:19 2020 +0100

    Remove warnings since we are testing a deprecated class
---
 .../camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java | 1 +
 1 file changed, 1 insertion(+)

diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java
index 8561a9e..4c995ad 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java
@@ -26,6 +26,7 @@ import org.apache.camel.support.jndi.JndiTest;
 import org.junit.Assert;
 import org.junit.Test;
 
+@SuppressWarnings("deprecation")
 public class JndiRegistryTest extends Assert {
 
     @Test


[camel] 05/32: Use ExchangeHelper.getRoute(Exchange) when possible

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 67abe4f470a73b800825e2f650bcad05ddf527ed
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Feb 25 13:49:18 2020 +0100

    Use ExchangeHelper.getRoute(Exchange) when possible
---
 .../src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java   | 1 -
 .../main/java/org/apache/camel/processor/MulticastProcessor.java    | 2 +-
 .../java/org/apache/camel/processor/RecipientListProcessor.java     | 2 +-
 .../src/main/java/org/apache/camel/processor/RoutingSlip.java       | 2 +-
 .../src/main/java/org/apache/camel/processor/Splitter.java          | 2 +-
 .../processor/errorhandler/DefaultExceptionPolicyStrategy.java      | 6 +++---
 .../apache/camel/processor/errorhandler/RedeliveryErrorHandler.java | 3 +--
 7 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
index 0a1f48d..1cc4f45 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
@@ -106,7 +106,6 @@ public class MDCUnitOfWork extends DefaultUnitOfWork {
     @Override
     public Route popRoute() {
         Route answer = super.popRoute();
-
         // restore old route id back again after we have popped
         Route previous = getRoute();
         if (previous != null) {
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index 1a516e0..3f8bf40 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -661,7 +661,7 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat
             }
 
             // and add the pair
-            Route route = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRoute() : null;
+            Route route = ExchangeHelper.getRoute(exchange);
             result.add(createProcessorExchangePair(index++, processor, copy, route));
         }
 
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
index cbfbd62..2d68543 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
@@ -254,7 +254,7 @@ public class RecipientListProcessor extends MulticastProcessor {
         setToEndpoint(copy, producer);
 
         // rework error handling to support fine grained error handling
-        Route route = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRoute() : null;
+        Route route = ExchangeHelper.getRoute(exchange);
         Processor prepared = createErrorHandler(route, copy, producer);
 
         // invoke on prepare on the exchange if specified
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java b/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
index 4098ec0..ee0980c 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -424,7 +424,7 @@ public class RoutingSlip extends AsyncProcessorSupport implements Traceable, IdA
         return producerCache.doInAsyncProducer(endpoint, exchange, callback, (p, ex, cb) -> {
 
             // rework error handling to support fine grained error handling
-            Route route = ex.getUnitOfWork() != null ? ex.getUnitOfWork().getRoute() : null;
+            Route route = ExchangeHelper.getRoute(ex);
             AsyncProcessor target = createErrorHandler(route, ex, p, endpoint);
 
             // set property which endpoint we send to and the producer that can do it
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java b/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java
index b06e602..f3463db 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/Splitter.java
@@ -145,7 +145,7 @@ public class Splitter extends MulticastProcessor implements AsyncProcessor, Trac
             this.value = value;
             this.iterator = ObjectHelper.createIterator(value);
             this.copy = copyAndPrepareSubExchange(exchange, true);
-            this.route = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRoute() : null;
+            this.route = ExchangeHelper.getRoute(exchange);
         }
 
         @Override
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java
index 33660bd..04a1467 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java
@@ -24,6 +24,7 @@ import java.util.TreeMap;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Route;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -132,9 +133,8 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy {
             // if ExceptionPolicy is route scoped then the current route (Exchange) must match
             // so we will not pick an ExceptionPolicy from another route
             String typeRoute = type.getRouteId();
-            if (exchange != null && exchange.getUnitOfWork() != null && ObjectHelper.isNotEmpty(typeRoute)) {
-                Route rc = exchange.getUnitOfWork().getRoute();
-                String route = rc != null ? rc.getRouteId() : null;
+            if (exchange != null && ObjectHelper.isNotEmpty(typeRoute)) {
+                String route = ExchangeHelper.getRouteId(exchange);
                 if (route != null && !route.equals(typeRoute)) {
                     if (LOG.isTraceEnabled()) {
                         LOG.trace("The type is scoped for route: {} however Exchange is at route: {}", typeRoute, route);
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index 807ee5a..9976a77 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -1030,8 +1030,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
                 // store the last to endpoint as the failure endpoint
                 exchange.setProperty(Exchange.FAILURE_ENDPOINT, exchange.getProperty(Exchange.TO_ENDPOINT));
                 // and store the route id so we know in which route we failed
-                UnitOfWork uow = exchange.getUnitOfWork();
-                Route rc = uow != null ? uow.getRoute() : null;
+                Route rc = ExchangeHelper.getRoute(exchange);
                 if (rc != null) {
                     exchange.setProperty(Exchange.FAILURE_ROUTE_ID, rc.getRouteId());
                 }


[camel] 08/32: Use AbstractReifier.createProcessor() when possible

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 d79fe4b7f46c782ed032c8b73d6d5c5d384456ae
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Feb 25 14:42:25 2020 +0100

    Use AbstractReifier.createProcessor() when possible
---
 .../org/apache/camel/component/hystrix/processor/HystrixReifier.java    | 2 +-
 .../java/org/apache/camel/component/resilience4j/ResilienceReifier.java | 2 +-
 .../java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java   | 2 +-
 3 files changed, 3 insertions(+), 3 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 a67b314..524ce45 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
@@ -50,7 +50,7 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
         Processor processor = createChildProcessor(true);
         Processor fallback = null;
         if (definition.getOnFallback() != null) {
-            fallback = ProcessorReifier.reifier(route, definition.getOnFallback()).createProcessor();
+            fallback = createProcessor(definition.getOnFallback());
         }
 
         final HystrixConfigurationDefinition config = buildHystrixConfiguration();
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
index ec0b35c..0d10156 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
@@ -50,7 +50,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
         Processor processor = createChildProcessor(true);
         Processor fallback = null;
         if (definition.getOnFallback() != null) {
-            fallback = ProcessorReifier.reifier(route, definition.getOnFallback()).createProcessor();
+            fallback = createProcessor(definition.getOnFallback());
         }
         boolean fallbackViaNetwork = definition.getOnFallback() != null && parseBoolean(definition.getOnFallback().getFallbackViaNetwork(), false);
         if (fallbackViaNetwork) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
index 9a6940a..93fa79a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
@@ -53,7 +53,7 @@ public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSe
             // fallback to default implementation if factory did not create the
             // processor
             if (afterProcessor == null) {
-                afterProcessor = reifier(route, to).createProcessor();
+                afterProcessor = createProcessor(to);
             }
         }
         final Processor after = afterProcessor;


[camel] 01/32: Move RouteContext lookup methods to AbstractReifier

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 67ff8e3a7a06340f01dcd9499c30790339325a08
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Feb 19 12:29:49 2020 +0100

    Move RouteContext lookup methods to AbstractReifier
---
 .../JtaTransactionErrorHandlerBuilder.java         |   8 +-
 .../hystrix/processor/HystrixReifier.java          |  65 ++++++------
 .../component/resilience4j/ResilienceReifier.java  |  29 +++---
 .../spring/spi/TransactionErrorHandlerBuilder.java |  14 +--
 .../spring/spi/TransactionErrorHandlerReifier.java |  15 ++-
 .../apache/camel/spring/EndpointReferenceTest.java |   4 +-
 .../java/org/apache/camel/spi/RouteContext.java    |  43 --------
 .../camel/impl/engine/DefaultRouteContext.java     |  92 ++++------------
 .../camel/builder/DeadLetterChannelBuilder.java    |   8 +-
 ...ctedReifier.java => AbstractPolicyReifier.java} |  62 +++--------
 .../org/apache/camel/reifier/AbstractReifier.java  |  54 +++++++++-
 .../org/apache/camel/reifier/AggregateReifier.java |  12 +--
 .../apache/camel/reifier/ClaimCheckReifier.java    |   6 +-
 .../org/apache/camel/reifier/EnrichReifier.java    |   2 +-
 .../camel/reifier/IdempotentConsumerReifier.java   |   2 +-
 .../java/org/apache/camel/reifier/LogReifier.java  |  11 +-
 .../org/apache/camel/reifier/MulticastReifier.java |   5 +-
 .../org/apache/camel/reifier/PolicyReifier.java    |  12 +--
 .../apache/camel/reifier/PollEnrichReifier.java    |   2 +-
 .../org/apache/camel/reifier/ProcessReifier.java   |   2 +-
 .../org/apache/camel/reifier/ProcessorReifier.java |  11 +-
 .../apache/camel/reifier/RecipientListReifier.java |  10 +-
 .../apache/camel/reifier/ResequenceReifier.java    |   3 +-
 .../org/apache/camel/reifier/RouteReifier.java     |  25 ++---
 .../java/org/apache/camel/reifier/SagaReifier.java |  10 +-
 .../java/org/apache/camel/reifier/SendReifier.java |   9 +-
 .../java/org/apache/camel/reifier/SortReifier.java |   2 +-
 .../org/apache/camel/reifier/SplitReifier.java     |   5 +-
 .../camel/reifier/ThrowExceptionReifier.java       |   3 +-
 .../apache/camel/reifier/TransactedReifier.java    | 116 ++-------------------
 .../org/apache/camel/reifier/WireTapReifier.java   |   5 +-
 .../reifier/dataformat/DataFormatReifier.java      |   5 +-
 .../errorhandler/DefaultErrorHandlerReifier.java   |   2 +-
 .../reifier/errorhandler/ErrorHandlerReifier.java  |   9 +-
 .../loadbalancer/CustomLoadBalancerReifier.java    |   3 +-
 .../camel/reifier/rest/RestBindingReifier.java     |   4 +-
 .../transformer/CustomTransformeReifier.java       |   2 +-
 .../transformer/EndpointTransformeReifier.java     |   2 +-
 .../reifier/validator/CustomValidatorReifier.java  |   2 +-
 .../validator/EndpointValidatorReifier.java        |   2 +-
 .../apache/camel/support/CamelContextHelper.java   |  34 +++++-
 41 files changed, 274 insertions(+), 438 deletions(-)

diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
index f47928f..bb15f57 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
@@ -77,12 +77,13 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
 
     @Override
     public Processor createErrorHandler(final RouteContext routeContext, final Processor processor) throws Exception {
+        CamelContext camelContext = routeContext.getCamelContext();
         // resolve policy reference, if given
         if (transactionPolicy == null) {
             if (policyRef != null) {
                 final TransactedDefinition transactedDefinition = new TransactedDefinition();
                 transactedDefinition.setRef(policyRef);
-                final Policy policy = TransactedReifier.resolvePolicy(routeContext, transactedDefinition);
+                final Policy policy = new TransactedReifier(camelContext, transactedDefinition).resolvePolicy();
                 if (policy != null) {
                     if (!(policy instanceof JtaTransactionPolicy)) {
                         throw new RuntimeCamelException("The configured policy '" + policyRef + "' is of type '"
@@ -99,7 +100,7 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
             LOG.debug(
                     "No transaction policy configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
 
-            Map<String, TransactedPolicy> mapPolicy = routeContext.lookupByType(TransactedPolicy.class);
+            Map<String, TransactedPolicy> mapPolicy = camelContext.getRegistry().findByTypeWithName(TransactedPolicy.class);
             if (mapPolicy != null && mapPolicy.size() == 1) {
                 TransactedPolicy policy = mapPolicy.values().iterator().next();
                 if (policy instanceof JtaTransactionPolicy) {
@@ -108,7 +109,7 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
             }
 
             if (transactionPolicy == null) {
-                TransactedPolicy policy = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+                TransactedPolicy policy = camelContext.getRegistry().lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
                 if (policy instanceof JtaTransactionPolicy) {
                     transactionPolicy = (JtaTransactionPolicy) policy;
                 }
@@ -121,7 +122,6 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
 
         ObjectHelper.notNull(transactionPolicy, "transactionPolicy", this);
 
-        final CamelContext camelContext = routeContext.getCamelContext();
         final Map<String, String> properties = camelContext.getGlobalOptions();
         if ((properties != null) && properties.containsKey(ROLLBACK_LOGGING_LEVEL_PROPERTY)) {
             rollbackLoggingLevel = LoggingLevel.valueOf(properties.get(ROLLBACK_LOGGING_LEVEL_PROPERTY));
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 c03b2ad..10d535a 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
@@ -38,9 +38,6 @@ import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.function.Suppliers;
 
-import static org.apache.camel.support.CamelContextHelper.lookup;
-import static org.apache.camel.support.CamelContextHelper.mandatoryLookup;
-
 public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
 
     public HystrixReifier(RouteContext routeContext, CircuitBreakerDefinition definition) {
@@ -119,91 +116,91 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
     private void configureHystrix(HystrixCommandProperties.Setter command, HystrixThreadPoolProperties.Setter threadPool, HystrixConfigurationDefinition config) {
         // command
         if (config.getCircuitBreakerEnabled() != null) {
-            command.withCircuitBreakerEnabled(Boolean.parseBoolean(config.getCircuitBreakerEnabled()));
+            command.withCircuitBreakerEnabled(parseBoolean(config.getCircuitBreakerEnabled()));
         }
         if (config.getCircuitBreakerErrorThresholdPercentage() != null) {
-            command.withCircuitBreakerErrorThresholdPercentage(Integer.parseInt(config.getCircuitBreakerErrorThresholdPercentage()));
+            command.withCircuitBreakerErrorThresholdPercentage(parseInt(config.getCircuitBreakerErrorThresholdPercentage()));
         }
         if (config.getCircuitBreakerForceClosed() != null) {
-            command.withCircuitBreakerForceClosed(Boolean.parseBoolean(config.getCircuitBreakerForceClosed()));
+            command.withCircuitBreakerForceClosed(parseBoolean(config.getCircuitBreakerForceClosed()));
         }
         if (config.getCircuitBreakerForceOpen() != null) {
-            command.withCircuitBreakerForceOpen(Boolean.parseBoolean(config.getCircuitBreakerForceOpen()));
+            command.withCircuitBreakerForceOpen(parseBoolean(config.getCircuitBreakerForceOpen()));
         }
         if (config.getCircuitBreakerRequestVolumeThreshold() != null) {
-            command.withCircuitBreakerRequestVolumeThreshold(Integer.parseInt(config.getCircuitBreakerRequestVolumeThreshold()));
+            command.withCircuitBreakerRequestVolumeThreshold(parseInt(config.getCircuitBreakerRequestVolumeThreshold()));
         }
         if (config.getCircuitBreakerSleepWindowInMilliseconds() != null) {
-            command.withCircuitBreakerSleepWindowInMilliseconds(Integer.parseInt(config.getCircuitBreakerSleepWindowInMilliseconds()));
+            command.withCircuitBreakerSleepWindowInMilliseconds(parseInt(config.getCircuitBreakerSleepWindowInMilliseconds()));
         }
         if (config.getExecutionIsolationSemaphoreMaxConcurrentRequests() != null) {
-            command.withExecutionIsolationSemaphoreMaxConcurrentRequests(Integer.parseInt(config.getExecutionIsolationSemaphoreMaxConcurrentRequests()));
+            command.withExecutionIsolationSemaphoreMaxConcurrentRequests(parseInt(config.getExecutionIsolationSemaphoreMaxConcurrentRequests()));
         }
         if (config.getExecutionIsolationStrategy() != null) {
-            command.withExecutionIsolationStrategy(HystrixCommandProperties.ExecutionIsolationStrategy.valueOf(config.getExecutionIsolationStrategy()));
+            command.withExecutionIsolationStrategy(parse(HystrixCommandProperties.ExecutionIsolationStrategy.class, config.getExecutionIsolationStrategy()));
         }
         if (config.getExecutionIsolationThreadInterruptOnTimeout() != null) {
-            command.withExecutionIsolationThreadInterruptOnTimeout(Boolean.parseBoolean(config.getExecutionIsolationThreadInterruptOnTimeout()));
+            command.withExecutionIsolationThreadInterruptOnTimeout(parseBoolean(config.getExecutionIsolationThreadInterruptOnTimeout()));
         }
         if (config.getExecutionTimeoutInMilliseconds() != null) {
-            command.withExecutionTimeoutInMilliseconds(Integer.parseInt(config.getExecutionTimeoutInMilliseconds()));
+            command.withExecutionTimeoutInMilliseconds(parseInt(config.getExecutionTimeoutInMilliseconds()));
         }
         if (config.getExecutionTimeoutEnabled() != null) {
-            command.withExecutionTimeoutEnabled(Boolean.parseBoolean(config.getExecutionTimeoutEnabled()));
+            command.withExecutionTimeoutEnabled(parseBoolean(config.getExecutionTimeoutEnabled()));
         }
         if (config.getFallbackIsolationSemaphoreMaxConcurrentRequests() != null) {
-            command.withFallbackIsolationSemaphoreMaxConcurrentRequests(Integer.parseInt(config.getFallbackIsolationSemaphoreMaxConcurrentRequests()));
+            command.withFallbackIsolationSemaphoreMaxConcurrentRequests(parseInt(config.getFallbackIsolationSemaphoreMaxConcurrentRequests()));
         }
         if (config.getFallbackEnabled() != null) {
-            command.withFallbackEnabled(Boolean.parseBoolean(config.getFallbackEnabled()));
+            command.withFallbackEnabled(parseBoolean(config.getFallbackEnabled()));
         }
         if (config.getMetricsHealthSnapshotIntervalInMilliseconds() != null) {
-            command.withMetricsHealthSnapshotIntervalInMilliseconds(Integer.parseInt(config.getMetricsHealthSnapshotIntervalInMilliseconds()));
+            command.withMetricsHealthSnapshotIntervalInMilliseconds(parseInt(config.getMetricsHealthSnapshotIntervalInMilliseconds()));
         }
         if (config.getMetricsRollingPercentileBucketSize() != null) {
-            command.withMetricsRollingPercentileBucketSize(Integer.parseInt(config.getMetricsRollingPercentileBucketSize()));
+            command.withMetricsRollingPercentileBucketSize(parseInt(config.getMetricsRollingPercentileBucketSize()));
         }
         if (config.getMetricsRollingPercentileEnabled() != null) {
-            command.withMetricsRollingPercentileEnabled(Boolean.parseBoolean(config.getMetricsRollingPercentileEnabled()));
+            command.withMetricsRollingPercentileEnabled(parseBoolean(config.getMetricsRollingPercentileEnabled()));
         }
         if (config.getMetricsRollingPercentileWindowInMilliseconds() != null) {
-            command.withMetricsRollingPercentileWindowInMilliseconds(Integer.parseInt(config.getMetricsRollingPercentileWindowInMilliseconds()));
+            command.withMetricsRollingPercentileWindowInMilliseconds(parseInt(config.getMetricsRollingPercentileWindowInMilliseconds()));
         }
         if (config.getMetricsRollingPercentileWindowBuckets() != null) {
-            command.withMetricsRollingPercentileWindowBuckets(Integer.parseInt(config.getMetricsRollingPercentileWindowBuckets()));
+            command.withMetricsRollingPercentileWindowBuckets(parseInt(config.getMetricsRollingPercentileWindowBuckets()));
         }
         if (config.getMetricsRollingStatisticalWindowInMilliseconds() != null) {
-            command.withMetricsRollingStatisticalWindowInMilliseconds(Integer.parseInt(config.getMetricsRollingStatisticalWindowInMilliseconds()));
+            command.withMetricsRollingStatisticalWindowInMilliseconds(parseInt(config.getMetricsRollingStatisticalWindowInMilliseconds()));
         }
         if (config.getMetricsRollingStatisticalWindowBuckets() != null) {
-            command.withMetricsRollingStatisticalWindowBuckets(Integer.parseInt(config.getMetricsRollingStatisticalWindowBuckets()));
+            command.withMetricsRollingStatisticalWindowBuckets(parseInt(config.getMetricsRollingStatisticalWindowBuckets()));
         }
         if (config.getRequestLogEnabled() != null) {
-            command.withRequestLogEnabled(Boolean.parseBoolean(config.getRequestLogEnabled()));
+            command.withRequestLogEnabled(parseBoolean(config.getRequestLogEnabled()));
         }
         if (config.getCorePoolSize() != null) {
-            threadPool.withCoreSize(Integer.parseInt(config.getCorePoolSize()));
+            threadPool.withCoreSize(parseInt(config.getCorePoolSize()));
         }
         if (config.getMaximumSize() != null) {
-            threadPool.withMaximumSize(Integer.parseInt(config.getMaximumSize()));
+            threadPool.withMaximumSize(parseInt(config.getMaximumSize()));
         }
         if (config.getKeepAliveTime() != null) {
-            threadPool.withKeepAliveTimeMinutes(Integer.parseInt(config.getKeepAliveTime()));
+            threadPool.withKeepAliveTimeMinutes(parseInt(config.getKeepAliveTime()));
         }
         if (config.getMaxQueueSize() != null) {
-            threadPool.withMaxQueueSize(Integer.parseInt(config.getMaxQueueSize()));
+            threadPool.withMaxQueueSize(parseInt(config.getMaxQueueSize()));
         }
         if (config.getQueueSizeRejectionThreshold() != null) {
-            threadPool.withQueueSizeRejectionThreshold(Integer.parseInt(config.getQueueSizeRejectionThreshold()));
+            threadPool.withQueueSizeRejectionThreshold(parseInt(config.getQueueSizeRejectionThreshold()));
         }
         if (config.getThreadPoolRollingNumberStatisticalWindowInMilliseconds() != null) {
-            threadPool.withMetricsRollingStatisticalWindowInMilliseconds(Integer.parseInt(config.getThreadPoolRollingNumberStatisticalWindowInMilliseconds()));
+            threadPool.withMetricsRollingStatisticalWindowInMilliseconds(parseInt(config.getThreadPoolRollingNumberStatisticalWindowInMilliseconds()));
         }
         if (config.getThreadPoolRollingNumberStatisticalWindowBuckets() != null) {
-            threadPool.withMetricsRollingStatisticalWindowBuckets(Integer.parseInt(config.getThreadPoolRollingNumberStatisticalWindowBuckets()));
+            threadPool.withMetricsRollingStatisticalWindowBuckets(parseInt(config.getThreadPoolRollingNumberStatisticalWindowBuckets()));
         }
         if (config.getAllowMaximumSizeToDivergeFromCoreSize() != null) {
-            threadPool.withAllowMaximumSizeToDivergeFromCoreSize(Boolean.parseBoolean(config.getAllowMaximumSizeToDivergeFromCoreSize()));
+            threadPool.withAllowMaximumSizeToDivergeFromCoreSize(parseBoolean(config.getAllowMaximumSizeToDivergeFromCoreSize()));
         }
     }
 
@@ -218,7 +215,7 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
         // camel context takes the precedence over those in the registry
         loadProperties(camelContext, properties, Suppliers.firstNotNull(
             () -> camelContext.getExtension(Model.class).getHystrixConfiguration(null),
-            () -> lookup(camelContext, HystrixConstants.DEFAULT_HYSTRIX_CONFIGURATION_ID, HystrixConfigurationDefinition.class))
+            () -> lookup(HystrixConstants.DEFAULT_HYSTRIX_CONFIGURATION_ID, HystrixConfigurationDefinition.class))
         );
 
         // Extract properties from referenced configuration, the one configured
@@ -228,7 +225,7 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
 
             loadProperties(camelContext, properties, Suppliers.firstNotNull(
                 () -> camelContext.getExtension(Model.class).getHystrixConfiguration(ref),
-                () -> mandatoryLookup(camelContext, ref, HystrixConfigurationDefinition.class))
+                () -> mandatoryLookup(ref, HystrixConfigurationDefinition.class))
             );
         }
 
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
index bb7e2b1..f725db8 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
@@ -26,7 +26,6 @@ import io.github.resilience4j.bulkhead.BulkheadConfig;
 import io.github.resilience4j.circuitbreaker.CircuitBreaker;
 import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
 import io.github.resilience4j.timelimiter.TimeLimiterConfig;
-import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.model.CircuitBreakerDefinition;
@@ -36,13 +35,9 @@ import org.apache.camel.model.Resilience4jConfigurationDefinition;
 import org.apache.camel.reifier.ProcessorReifier;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.function.Suppliers;
 
-import static org.apache.camel.support.CamelContextHelper.lookup;
-import static org.apache.camel.support.CamelContextHelper.mandatoryLookup;
-
 public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition> {
 
     public ResilienceReifier(RouteContext routeContext, CircuitBreakerDefinition definition) {
@@ -61,16 +56,16 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
         if (fallbackViaNetwork) {
             throw new UnsupportedOperationException("camel-resilience4j does not support onFallbackViaNetwork");
         }
-        final Resilience4jConfigurationCommon config = buildResilience4jConfiguration(routeContext.getCamelContext());
+        final Resilience4jConfigurationCommon config = buildResilience4jConfiguration();
         CircuitBreakerConfig cbConfig = configureCircuitBreaker(config);
         BulkheadConfig bhConfig = configureBulkHead(config);
         TimeLimiterConfig tlConfig = configureTimeLimiter(config);
 
         ResilienceProcessor answer = new ResilienceProcessor(cbConfig, bhConfig, tlConfig, processor, fallback);
-        configureTimeoutExecutorService(answer, routeContext, config);
+        configureTimeoutExecutorService(answer, config);
         // using any existing circuit breakers?
         if (config.getCircuitBreakerRef() != null) {
-            CircuitBreaker cb = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), parseString(config.getCircuitBreakerRef()), CircuitBreaker.class);
+            CircuitBreaker cb = mandatoryLookup(parseString(config.getCircuitBreakerRef()), CircuitBreaker.class);
             answer.setCircuitBreaker(cb);
         }
         return answer;
@@ -141,7 +136,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
         return builder.build();
     }
 
-    private void configureTimeoutExecutorService(ResilienceProcessor processor, RouteContext routeContext, Resilience4jConfigurationCommon config) {
+    private void configureTimeoutExecutorService(ResilienceProcessor processor, Resilience4jConfigurationCommon config) {
         if (!parseBoolean(config.getTimeoutEnabled(), false)) {
             return;
         }
@@ -149,7 +144,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
         if (config.getTimeoutExecutorServiceRef() != null) {
             String ref = config.getTimeoutExecutorServiceRef();
             boolean shutdownThreadPool = false;
-            ExecutorService executorService = routeContext.lookup(ref, ExecutorService.class);
+            ExecutorService executorService = lookup(ref, ExecutorService.class);
             if (executorService == null) {
                 executorService = lookupExecutorServiceRef("CircuitBreaker", definition, ref);
                 shutdownThreadPool = true;
@@ -163,27 +158,27 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
     // Helpers
     // *******************************
 
-    Resilience4jConfigurationDefinition buildResilience4jConfiguration(CamelContext camelContext) throws Exception {
+    Resilience4jConfigurationDefinition buildResilience4jConfiguration() throws Exception {
         Map<String, Object> properties = new HashMap<>();
 
         // Extract properties from default configuration, the one configured on
         // camel context takes the precedence over those in the registry
-        loadProperties(camelContext, properties, Suppliers.firstNotNull(
+        loadProperties(properties, Suppliers.firstNotNull(
             () -> camelContext.getExtension(Model.class).getResilience4jConfiguration(null),
-            () -> lookup(camelContext, ResilienceConstants.DEFAULT_RESILIENCE_CONFIGURATION_ID, Resilience4jConfigurationDefinition.class)));
+            () -> lookup(ResilienceConstants.DEFAULT_RESILIENCE_CONFIGURATION_ID, Resilience4jConfigurationDefinition.class)));
 
         // Extract properties from referenced configuration, the one configured
         // on camel context takes the precedence over those in the registry
         if (definition.getConfigurationRef() != null) {
             final String ref = definition.getConfigurationRef();
 
-            loadProperties(camelContext, properties, Suppliers.firstNotNull(
+            loadProperties(properties, Suppliers.firstNotNull(
                 () -> camelContext.getExtension(Model.class).getResilience4jConfiguration(ref),
-                () -> mandatoryLookup(camelContext, ref, Resilience4jConfigurationDefinition.class)));
+                () -> mandatoryLookup(ref, Resilience4jConfigurationDefinition.class)));
         }
 
         // Extract properties from local configuration
-        loadProperties(camelContext, properties, Optional.ofNullable(definition.getResilience4jConfiguration()));
+        loadProperties(properties, Optional.ofNullable(definition.getResilience4jConfiguration()));
 
         // Extract properties from definition
         BeanIntrospection beanIntrospection = camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection();
@@ -197,7 +192,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
         return config;
     }
 
-    private void loadProperties(CamelContext camelContext, Map<String, Object> properties, Optional<?> optional) {
+    private void loadProperties(Map<String, Object> properties, Optional<?> optional) {
         BeanIntrospection beanIntrospection = camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection();
         optional.ifPresent(bean -> beanIntrospection.getProperties(bean, properties, null, false));
     }
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
index d527700..1c7fc85 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
@@ -18,6 +18,7 @@ package org.apache.camel.spring.spi;
 
 import java.util.Map;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
@@ -60,11 +61,12 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
 
     @Override
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
+        CamelContext camelContext = routeContext.getCamelContext();
         if (transactionTemplate == null) {
             // lookup in context if no transaction template has been configured
             LOG.debug("No TransactionTemplate configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
 
-            Map<String, TransactedPolicy> mapPolicy = routeContext.lookupByType(TransactedPolicy.class);
+            Map<String, TransactedPolicy> mapPolicy = camelContext.getRegistry().findByTypeWithName(TransactedPolicy.class);
             if (mapPolicy != null && mapPolicy.size() == 1) {
                 TransactedPolicy policy = mapPolicy.values().iterator().next();
                 if (policy instanceof SpringTransactionPolicy) {
@@ -73,14 +75,14 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
             }
 
             if (transactionTemplate == null) {
-                TransactedPolicy policy = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+                TransactedPolicy policy = camelContext.getRegistry().lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
                 if (policy instanceof SpringTransactionPolicy) {
                     transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
                 }
             }
 
             if (transactionTemplate == null) {
-                Map<String, TransactionTemplate> mapTemplate = routeContext.lookupByType(TransactionTemplate.class);
+                Map<String, TransactionTemplate> mapTemplate = camelContext.getRegistry().findByTypeWithName(TransactionTemplate.class);
                 if (mapTemplate == null || mapTemplate.isEmpty()) {
                     LOG.trace("No TransactionTemplate found in registry.");
                 } else if (mapTemplate.size() == 1) {
@@ -92,7 +94,7 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
             }
 
             if (transactionTemplate == null) {
-                Map<String, PlatformTransactionManager> mapManager = routeContext.lookupByType(PlatformTransactionManager.class);
+                Map<String, PlatformTransactionManager> mapManager = camelContext.getRegistry().findByTypeWithName(PlatformTransactionManager.class);
                 if (mapManager == null || mapManager.isEmpty()) {
                     LOG.trace("No PlatformTransactionManager found in registry.");
                 } else if (mapManager.size() == 1) {
@@ -110,9 +112,9 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
 
         ObjectHelper.notNull(transactionTemplate, "transactionTemplate", this);
 
-        TransactionErrorHandler answer = new TransactionErrorHandler(routeContext.getCamelContext(), processor,
+        TransactionErrorHandler answer = new TransactionErrorHandler(camelContext, processor,
             getLogger(), getOnRedelivery(), getRedeliveryPolicy(), getExceptionPolicyStrategy(), transactionTemplate, 
-            getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorService(routeContext.getCamelContext()), getRollbackLoggingLevel(), getOnExceptionOccurred());
+            getRetryWhilePolicy(camelContext), getExecutorService(camelContext), getRollbackLoggingLevel(), getOnExceptionOccurred());
         // configure error handler before we can use it
         configure(routeContext, answer);
         return answer;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
index 90210dc..29dc00b 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
@@ -18,7 +18,6 @@ package org.apache.camel.spring.spi;
 
 import java.util.Map;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
 import org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier;
@@ -47,7 +46,7 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
             // lookup in context if no transaction template has been configured
             LOG.debug("No TransactionTemplate configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
 
-            Map<String, TransactedPolicy> mapPolicy = routeContext.lookupByType(TransactedPolicy.class);
+            Map<String, TransactedPolicy> mapPolicy = findByTypeWithName(TransactedPolicy.class);
             if (mapPolicy != null && mapPolicy.size() == 1) {
                 TransactedPolicy policy = mapPolicy.values().iterator().next();
                 if (policy instanceof SpringTransactionPolicy) {
@@ -56,14 +55,14 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
             }
 
             if (transactionTemplate == null) {
-                TransactedPolicy policy = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+                TransactedPolicy policy = lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
                 if (policy instanceof SpringTransactionPolicy) {
                     transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
                 }
             }
 
             if (transactionTemplate == null) {
-                Map<String, TransactionTemplate> mapTemplate = routeContext.lookupByType(TransactionTemplate.class);
+                Map<String, TransactionTemplate> mapTemplate = findByTypeWithName(TransactionTemplate.class);
                 if (mapTemplate == null || mapTemplate.isEmpty()) {
                     LOG.trace("No TransactionTemplate found in registry.");
                 } else if (mapTemplate.size() == 1) {
@@ -75,7 +74,7 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
             }
 
             if (transactionTemplate == null) {
-                Map<String, PlatformTransactionManager> mapManager = routeContext.lookupByType(PlatformTransactionManager.class);
+                Map<String, PlatformTransactionManager> mapManager = findByTypeWithName(PlatformTransactionManager.class);
                 if (mapManager == null || mapManager.isEmpty()) {
                     LOG.trace("No PlatformTransactionManager found in registry.");
                 } else if (mapManager.size() == 1) {
@@ -93,11 +92,11 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
 
         ObjectHelper.notNull(transactionTemplate, "transactionTemplate", this);
 
-        TransactionErrorHandler answer = new TransactionErrorHandler(routeContext.getCamelContext(), processor,
+        TransactionErrorHandler answer = new TransactionErrorHandler(camelContext, processor,
                 definition.getLogger(), definition.getOnRedelivery(),
                 definition.getRedeliveryPolicy(), definition.getExceptionPolicyStrategy(), transactionTemplate,
-                definition.getRetryWhilePolicy(routeContext.getCamelContext()),
-                getExecutorService(routeContext.getCamelContext()),
+                definition.getRetryWhilePolicy(camelContext),
+                getExecutorService(camelContext),
                 definition.getRollbackLoggingLevel(), definition.getOnExceptionOccurred());
         // configure error handler before we can use it
         configure(routeContext, answer);
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 fb1ef62..23c80cc 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
@@ -25,6 +25,7 @@ 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;
+import org.apache.camel.support.CamelContextHelper;
 import org.junit.Test;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -78,9 +79,8 @@ public class EndpointReferenceTest extends SpringTestSupport {
         CamelContext context = applicationContext.getBean("camel2", CamelContext.class);
         RouteDefinition route = new RouteDefinition("temporary");
         String routeId = route.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-        RouteContext routeContext = new DefaultRouteContext(context, route, routeId);
         try {
-            routeContext.resolveEndpoint(null, "endpoint1");
+            CamelContextHelper.resolveEndpoint(context, null, "endpoint1");
             fail("Should have thrown exception");
         } catch (NoSuchEndpointException exception) {
             assertTrue("Get a wrong exception message", exception.getMessage().contains("make sure the endpoint has the same camel context as the route does"));
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 22aa1db..8513863 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
@@ -54,49 +54,6 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
     CamelContext getCamelContext();
 
     /**
-     * Resolves an endpoint from the URI
-     *
-     * @param uri the URI
-     * @return the resolved endpoint
-     */
-    Endpoint resolveEndpoint(String uri);
-
-    /**
-     * Resolves an endpoint from either a URI or a named reference
-     *
-     * @param uri the URI or
-     * @param ref the named reference
-     * @return the resolved endpoint
-     */
-    Endpoint resolveEndpoint(String uri, String ref);
-
-    /**
-     * lookup an object by name and type
-     *
-     * @param name the name to lookup
-     * @param type the expected type
-     * @return the found object
-     */
-    <T> T lookup(String name, Class<T> type);
-
-    /**
-     * lookup an object by name and type or throws {@link org.apache.camel.NoSuchBeanException} if not found.
-     *
-     * @param name the name to lookup
-     * @param type the expected type
-     * @return the found object
-     */
-    <T> T mandatoryLookup(String name, Class<T> type);
-
-    /**
-     * lookup objects by type
-     *
-     * @param type the expected type
-     * @return the found objects with the name as the key in the map. Returns an empty map if none found.
-     */
-    <T> Map<String, T> lookupByType(Class<T> type);
-
-    /**
      * For completing the route creation, creating a single event driven route
      * for the current from endpoint with any processors required
      */
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
index 0269c4f..0ee844b 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
@@ -29,7 +29,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.NamedNode;
-import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
@@ -44,7 +43,6 @@ import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RouteError;
 import org.apache.camel.spi.RoutePolicy;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -119,68 +117,16 @@ public class DefaultRouteContext implements RouteContext {
     }
 
     @Override
-    public Endpoint resolveEndpoint(String uri) {
-        return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
-    }
-
-    @Override
-    public Endpoint resolveEndpoint(String uri, String ref) {
-        Endpoint endpoint = null;
-        if (uri != null) {
-            endpoint = camelContext.getEndpoint(uri);
-            if (endpoint == null) {
-                throw new NoSuchEndpointException(uri);
-            }
-        }
-        if (ref != null) {
-            endpoint = lookup(ref, Endpoint.class);
-            if (endpoint == null) {
-                throw new NoSuchEndpointException("ref:" + ref, "check your camel registry with id " + ref);
-            }
-            // Check the endpoint has the right CamelContext 
-            if (!this.getCamelContext().equals(endpoint.getCamelContext())) {
-                throw new NoSuchEndpointException("ref:" + ref, "make sure the endpoint has the same camel context as the route does.");
-            }
-            try {
-                // need add the endpoint into service
-                getCamelContext().addService(endpoint);
-            } catch (Exception ex) {
-                throw new RuntimeCamelException(ex);
-            }
-        }
-        if (endpoint == null) {
-            throw new IllegalArgumentException("Either 'uri' or 'ref' must be specified on: " + this);
-        } else {
-            return endpoint;
-        }
-    }
-
-    @Override
-    public <T> T lookup(String name, Class<T> type) {
-        return getCamelContext().getRegistry().lookupByNameAndType(name, type);
-    }
-
-    @Override
-    public <T> Map<String, T> lookupByType(Class<T> type) {
-        return getCamelContext().getRegistry().findByTypeWithName(type);
-    }
-
-    @Override
-    public <T> T mandatoryLookup(String name, Class<T> type) {
-        return CamelContextHelper.mandatoryLookup(getCamelContext(), name, type);
-    }
-
-    @Override
     public Route commit() {
         // now lets turn all of the event driven consumer processors into a single route
         if (!eventDrivenProcessors.isEmpty()) {
             // always use an pipeline even if there are only 1 processor as the pipeline
             // handles preparing the response from the exchange in regard to IN vs OUT messages etc
-            Processor target = new Pipeline(getCamelContext(), eventDrivenProcessors);
+            Processor target = new Pipeline(camelContext, eventDrivenProcessors);
 
             // 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(getCamelContext(), target);
-            internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(this, getCamelContext()));
+            CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, target);
+            internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(this, camelContext));
 
             // and then optionally add route policy processor if a custom policy is set
             List<RoutePolicy> routePolicyList = getRoutePolicyList();
@@ -291,20 +237,20 @@ public class DefaultRouteContext implements RouteContext {
             return trace;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().isTracing();
+            return camelContext.isTracing();
         }
     }
 
     @Override
     public String getTracingPattern() {
         // can only set this on context level
-        return getCamelContext().getTracingPattern();
+        return camelContext.getTracingPattern();
     }
 
     @Override
     public void setTracingPattern(String tracePattern) {
         // can only set this on context level
-        getCamelContext().setTracingPattern(tracePattern);
+        camelContext.setTracingPattern(tracePattern);
     }
 
     @Override
@@ -318,7 +264,7 @@ public class DefaultRouteContext implements RouteContext {
             return backlogTrace;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().isBacklogTracing();
+            return camelContext.isBacklogTracing();
         }
     }
 
@@ -333,7 +279,7 @@ public class DefaultRouteContext implements RouteContext {
             return debug;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().isDebugging();
+            return camelContext.isDebugging();
         }
     }
 
@@ -348,7 +294,7 @@ public class DefaultRouteContext implements RouteContext {
             return messageHistory;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().isMessageHistory();
+            return camelContext.isMessageHistory();
         }
     }
 
@@ -363,7 +309,7 @@ public class DefaultRouteContext implements RouteContext {
             return logMask;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().isLogMask();
+            return camelContext.isLogMask();
         }
     }
 
@@ -378,7 +324,7 @@ public class DefaultRouteContext implements RouteContext {
             return logExhaustedMessageBody;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().isLogExhaustedMessageBody();
+            return camelContext.isLogExhaustedMessageBody();
         }
     }
 
@@ -393,7 +339,7 @@ public class DefaultRouteContext implements RouteContext {
             return streamCache;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().isStreamCaching();
+            return camelContext.isStreamCaching();
         }
     }
 
@@ -408,7 +354,7 @@ public class DefaultRouteContext implements RouteContext {
             return delay;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().getDelayer();
+            return camelContext.getDelayer();
         }
     }
 
@@ -454,25 +400,25 @@ public class DefaultRouteContext implements RouteContext {
     @Override
     public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
         // can only be configured on CamelContext
-        getCamelContext().setAllowUseOriginalMessage(allowUseOriginalMessage);
+        camelContext.setAllowUseOriginalMessage(allowUseOriginalMessage);
     }
 
     @Override
     public Boolean isAllowUseOriginalMessage() {
         // can only be configured on CamelContext
-        return getCamelContext().isAllowUseOriginalMessage();
+        return camelContext.isAllowUseOriginalMessage();
     }
 
     @Override
     public Boolean isCaseInsensitiveHeaders() {
         // can only be configured on CamelContext
-        return getCamelContext().isCaseInsensitiveHeaders();
+        return camelContext.isCaseInsensitiveHeaders();
     }
 
     @Override
     public void setCaseInsensitiveHeaders(Boolean caseInsensitiveHeaders) {
         // can only be configured on CamelContext
-        getCamelContext().setCaseInsensitiveHeaders(caseInsensitiveHeaders);
+        camelContext.setCaseInsensitiveHeaders(caseInsensitiveHeaders);
     }
 
     @Override
@@ -481,7 +427,7 @@ public class DefaultRouteContext implements RouteContext {
             return shutdownRoute;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().getShutdownRoute();
+            return camelContext.getShutdownRoute();
         }
     }
 
@@ -496,7 +442,7 @@ public class DefaultRouteContext implements RouteContext {
             return shutdownRunningTask;
         } else {
             // fallback to the option from camel context
-            return getCamelContext().getShutdownRunningTask();
+            return camelContext.getShutdownRunningTask();
         }
     }
 
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
index 4d1b3f5..3fdd549 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.builder;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.LoggingLevel;
@@ -54,10 +55,11 @@ public class DeadLetterChannelBuilder extends DefaultErrorHandlerBuilder {
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
         validateDeadLetterUri(routeContext);
 
-        DeadLetterChannel answer = new DeadLetterChannel(routeContext.getCamelContext(), processor, getLogger(), getOnRedelivery(), getRedeliveryPolicy(),
+        CamelContext camelContext = routeContext.getCamelContext();
+        DeadLetterChannel answer = new DeadLetterChannel(camelContext, processor, getLogger(), getOnRedelivery(), getRedeliveryPolicy(),
                                                          getExceptionPolicyStrategy(), getFailureProcessor(), getDeadLetterUri(), isDeadLetterHandleNewException(),
-                                                         isUseOriginalMessage(), isUseOriginalBody(), getRetryWhilePolicy(routeContext.getCamelContext()),
-                                                         getExecutorService(routeContext.getCamelContext()), getOnPrepareFailure(), getOnExceptionOccurred());
+                                                         isUseOriginalMessage(), isUseOriginalBody(), getRetryWhilePolicy(camelContext),
+                                                         getExecutorService(camelContext), getOnPrepareFailure(), getOnExceptionOccurred());
         // configure error handler before we can use it
         configure(routeContext, answer);
         return answer;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
similarity index 67%
copy from core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
copy to core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
index 68b129c..8f111b4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
@@ -19,67 +19,37 @@ package org.apache.camel.reifier;
 import java.lang.reflect.Method;
 import java.util.Map;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.Service;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.TransactedDefinition;
-import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelContextHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.model.TransactedDefinition.PROPAGATION_REQUIRED;
 
-public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
+public abstract class AbstractPolicyReifier<T extends ProcessorDefinition<?>> extends ProcessorReifier<T> {
 
     private static final Logger LOG = LoggerFactory.getLogger(TransactedReifier.class);
 
-    public TransactedReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
-        super(routeContext, (TransactedDefinition) definition);
+    public AbstractPolicyReifier(RouteContext routeContext, T definition) {
+        super(routeContext, definition);
     }
 
-    @Override
-    public Processor createProcessor() throws Exception {
-        Policy policy = resolvePolicy(routeContext);
-        org.apache.camel.util.ObjectHelper.notNull(policy, "policy", this);
-
-        // before wrap
-        policy.beforeWrap(routeContext, definition);
-
-        // create processor after the before wrap
-        Processor childProcessor = this.createChildProcessor(true);
-
-        // wrap
-        Processor target = policy.wrap(routeContext, childProcessor);
-
-        if (!(target instanceof Service)) {
-            // wrap the target so it becomes a service and we can manage its
-            // lifecycle
-            target = new WrapProcessor(target, childProcessor);
-        }
-        return target;
+    public AbstractPolicyReifier(CamelContext camelContext, T definition) {
+        super(camelContext, definition);
     }
 
-    protected Policy resolvePolicy(RouteContext routeContext) {
-        return resolvePolicy(routeContext, definition);
-    }
-
-    public static Policy resolvePolicy(RouteContext routeContext, TransactedDefinition definition) {
-        if (definition.getPolicy() != null) {
-            return definition.getPolicy();
+    public Policy resolvePolicy(Policy policy, String ref, Class<? extends Policy> type) {
+        if (policy != null) {
+            return policy;
         }
-        return resolvePolicy(routeContext, definition.getRef(), definition.getType());
-    }
-
-    public static Policy resolvePolicy(RouteContext routeContext, String ref, Class<? extends Policy> type) {
         // explicit ref given so lookup by it
         if (org.apache.camel.util.ObjectHelper.isNotEmpty(ref)) {
-            return CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), ref, Policy.class);
+            return mandatoryLookup(ref, Policy.class);
         }
 
         // no explicit reference given from user so we can use some convention
@@ -90,7 +60,7 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
         if (type != null) {
             // try find by type, note that this method is not supported by all
             // registry
-            Map<String, ?> types = routeContext.lookupByType(type);
+            Map<String, ?> types = findByTypeWithName(type);
             if (types.size() == 1) {
                 // only one policy defined so use it
                 Object found = types.values().iterator().next();
@@ -103,18 +73,18 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
         // for transacted routing try the default REQUIRED name
         if (type == TransactedPolicy.class) {
             // still not found try with the default name PROPAGATION_REQUIRED
-            answer = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+            answer = lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
         }
 
         // this logic only applies if we are a transacted policy
         // still no policy found then try lookup the platform transaction
         // manager and use it as policy
         if (answer == null && type == TransactedPolicy.class) {
-            Class<?> tmClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.springframework.transaction.PlatformTransactionManager");
+            Class<?> tmClazz = camelContext.getClassResolver().resolveClass("org.springframework.transaction.PlatformTransactionManager");
             if (tmClazz != null) {
                 // see if we can find the platform transaction manager in the
                 // registry
-                Map<String, ?> maps = routeContext.lookupByType(tmClazz);
+                Map<String, ?> maps = findByTypeWithName(tmClazz);
                 if (maps.size() == 1) {
                     // only one platform manager then use it as default and
                     // create a transacted
@@ -130,7 +100,7 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
                     // route building
                     Object transactionManager = maps.values().iterator().next();
                     LOG.debug("One instance of PlatformTransactionManager found in registry: {}", transactionManager);
-                    Class<?> txClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.apache.camel.spring.spi.SpringTransactionPolicy");
+                    Class<?> txClazz = camelContext.getClassResolver().resolveClass("org.apache.camel.spring.spi.SpringTransactionPolicy");
                     if (txClazz != null) {
                         LOG.debug("Creating a new temporary SpringTransactionPolicy using the PlatformTransactionManager: {}", transactionManager);
                         TransactedPolicy txPolicy = org.apache.camel.support.ObjectHelper.newInstance(txClazz, TransactedPolicy.class);
@@ -151,7 +121,7 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
                         throw new NoSuchBeanException(null, "PlatformTransactionManager");
                     } else {
                         throw new IllegalArgumentException("Found " + maps.size() + " PlatformTransactionManager in registry. "
-                                                           + "Cannot determine which one to use. Please configure a TransactionTemplate on the transacted policy.");
+                                + "Cannot determine which one to use. Please configure a TransactionTemplate on the transacted policy.");
                     }
                 }
             }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
index 28cbbaa..8e4d9b8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
@@ -16,28 +16,36 @@
  */
 package org.apache.camel.reifier;
 
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
+import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Predicate;
 import org.apache.camel.model.ExpressionSubElementDefinition;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.reifier.language.ExpressionReifier;
+import org.apache.camel.spi.BeanRepository;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.util.ObjectHelper;
 
-public abstract class AbstractReifier {
+public abstract class AbstractReifier implements BeanRepository {
 
     protected final RouteContext routeContext;
     protected final CamelContext camelContext;
 
     public AbstractReifier(RouteContext routeContext) {
-        this.routeContext = routeContext;
+        this.routeContext = ObjectHelper.notNull(routeContext, "RouteContext");
         this.camelContext = routeContext.getCamelContext();
     }
 
     public AbstractReifier(CamelContext camelContext) {
         this.routeContext = null;
-        this.camelContext = camelContext;
+        this.camelContext = ObjectHelper.notNull(camelContext, "CamelContext");
     }
 
     protected String parseString(String text) {
@@ -115,4 +123,44 @@ public abstract class AbstractReifier {
         return s != null ? s.startsWith("#") ? s : "#" + s : null;
     }
 
+    protected BeanRepository getRegistry() {
+        return camelContext.getRegistry();
+    }
+
+    public <T> T mandatoryLookup(String name, Class<T> beanType) {
+        return CamelContextHelper.mandatoryLookup(camelContext, name, beanType);
+    }
+
+    @Override
+    public Object lookupByName(String name) {
+        return getRegistry().lookupByName(name);
+    }
+
+    public <T> T lookup(String name, Class<T> type) {
+        return lookupByNameAndType(name, type);
+    }
+
+    public <T> T lookupByNameAndType(String name, Class<T> type) {
+        return getRegistry().lookupByNameAndType(name, type);
+    }
+
+    @Override
+    public <T> Map<String, T> findByTypeWithName(Class<T> type) {
+        return getRegistry().findByTypeWithName(type);
+    }
+
+    @Override
+    public <T> Set<T> findByType(Class<T> type) {
+        return getRegistry().findByType(type);
+    }
+
+    @Override
+    public Object unwrap(Object value) {
+        return getRegistry().unwrap(value);
+    }
+
+    public Endpoint resolveEndpoint(String uri) throws NoSuchEndpointException {
+        return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
+    }
+
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
index 2703d4d..5f60275 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
@@ -55,7 +55,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
         internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
 
         Expression correlation = createExpression(definition.getExpression());
-        AggregationStrategy strategy = createAggregationStrategy(routeContext);
+        AggregationStrategy strategy = createAggregationStrategy();
 
         boolean parallel = parseBoolean(definition.getParallelProcessing(), false);
         boolean shutdownThreadPool = willCreateNewThreadPool(definition, parallel);
@@ -76,7 +76,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
         }
 
         if (definition.getAggregateController() == null && definition.getAggregateControllerRef() != null) {
-            definition.setAggregateController(routeContext.mandatoryLookup(definition.getAggregateControllerRef(), AggregateController.class));
+            definition.setAggregateController(mandatoryLookup(definition.getAggregateControllerRef(), AggregateController.class));
         }
 
         // this EIP supports using a shared timeout checker thread pool or
@@ -85,7 +85,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
         ScheduledExecutorService timeoutThreadPool = definition.getTimeoutCheckerExecutorService();
         if (timeoutThreadPool == null && definition.getTimeoutCheckerExecutorServiceRef() != null) {
             // lookup existing thread pool
-            timeoutThreadPool = routeContext.lookup(definition.getTimeoutCheckerExecutorServiceRef(), ScheduledExecutorService.class);
+            timeoutThreadPool = lookup(definition.getTimeoutCheckerExecutorServiceRef(), ScheduledExecutorService.class);
             if (timeoutThreadPool == null) {
                 // then create a thread pool assuming the ref is a thread pool
                 // profile id
@@ -214,10 +214,10 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
         return policy;
     }
 
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+    private AggregationStrategy createAggregationStrategy() {
         AggregationStrategy strategy = definition.getAggregationStrategy();
         if (strategy == null && definition.getStrategyRef() != null) {
-            Object aggStrategy = routeContext.lookup(definition.getStrategyRef(), Object.class);
+            Object aggStrategy = lookup(definition.getStrategyRef(), Object.class);
             if (aggStrategy instanceof AggregationStrategy) {
                 strategy = (AggregationStrategy)aggStrategy;
             } else if (aggStrategy != null) {
@@ -246,7 +246,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
     private AggregationRepository createAggregationRepository(RouteContext routeContext) {
         AggregationRepository repository = definition.getAggregationRepository();
         if (repository == null && definition.getAggregationRepositoryRef() != null) {
-            repository = routeContext.mandatoryLookup(definition.getAggregationRepositoryRef(), AggregationRepository.class);
+            repository = mandatoryLookup(definition.getAggregationRepositoryRef(), AggregationRepository.class);
         }
         return repository;
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
index bde4a0c..f725bc7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
@@ -44,7 +44,7 @@ public class ClaimCheckReifier extends ProcessorReifier<ClaimCheckDefinition> {
         claim.setKey(parseString(definition.getKey()));
         claim.setFilter(parseString(definition.getFilter()));
 
-        AggregationStrategy strategy = createAggregationStrategy(routeContext);
+        AggregationStrategy strategy = createAggregationStrategy();
         if (strategy != null) {
             claim.setAggregationStrategy(strategy);
         }
@@ -102,10 +102,10 @@ public class ClaimCheckReifier extends ProcessorReifier<ClaimCheckDefinition> {
         return claim;
     }
 
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+    private AggregationStrategy createAggregationStrategy() {
         AggregationStrategy strategy = definition.getAggregationStrategy();
         if (strategy == null && definition.getAggregationStrategyRef() != null) {
-            Object aggStrategy = routeContext.lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
+            Object aggStrategy = lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
             if (aggStrategy instanceof AggregationStrategy) {
                 strategy = (AggregationStrategy)aggStrategy;
             } else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
index 109ffc1..7dd0d53 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
@@ -58,7 +58,7 @@ public class EnrichReifier extends ExpressionReifier<EnrichDefinition> {
     private AggregationStrategy createAggregationStrategy() {
         AggregationStrategy strategy = definition.getAggregationStrategy();
         if (strategy == null && definition.getAggregationStrategyRef() != null) {
-            Object aggStrategy = routeContext.lookup(definition.getAggregationStrategyRef(), Object.class);
+            Object aggStrategy = lookup(definition.getAggregationStrategyRef(), Object.class);
             if (aggStrategy instanceof AggregationStrategy) {
                 strategy = (AggregationStrategy)aggStrategy;
             } else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
index 693f092..ea01951 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
@@ -60,7 +60,7 @@ public class IdempotentConsumerReifier extends ExpressionReifier<IdempotentConsu
      */
     protected <T> IdempotentRepository resolveMessageIdRepository(RouteContext routeContext) {
         if (definition.getMessageIdRepositoryRef() != null) {
-            definition.setMessageIdRepository(routeContext.mandatoryLookup(parseString(definition.getMessageIdRepositoryRef()), IdempotentRepository.class));
+            definition.setMessageIdRepository(mandatoryLookup(parseString(definition.getMessageIdRepositoryRef()), IdempotentRepository.class));
         }
         return definition.getMessageIdRepository();
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
index 71a6d5c..7aa69a8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
@@ -29,7 +29,6 @@ import org.apache.camel.processor.LogProcessor;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.MaskingFormatter;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.processor.DefaultMaskingFormatter;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -54,13 +53,13 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
 
         // get logger which may be set in XML definition
         if (logger == null && ObjectHelper.isNotEmpty(definition.getLoggerRef())) {
-            logger = CamelContextHelper.mandatoryLookup(camelContext, definition.getLoggerRef(), Logger.class);
+            logger = mandatoryLookup(definition.getLoggerRef(), Logger.class);
         }
 
         if (logger == null) {
             // first - try to lookup single instance in the registry, just like
             // LogComponent
-            Map<String, Logger> availableLoggers = routeContext.lookupByType(Logger.class);
+            Map<String, Logger> availableLoggers = findByTypeWithName(Logger.class);
             if (availableLoggers.size() == 1) {
                 logger = availableLoggers.values().iterator().next();
                 log.debug("Using custom Logger: {}", logger);
@@ -89,12 +88,12 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
         LoggingLevel level = definition.getLoggingLevel() != null ? parse(LoggingLevel.class, definition.getLoggingLevel()) : LoggingLevel.INFO;
         CamelLogger camelLogger = new CamelLogger(logger, level, definition.getMarker());
 
-        return new LogProcessor(exp, camelLogger, getMaskingFormatter(routeContext), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
+        return new LogProcessor(exp, camelLogger, getMaskingFormatter(), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
     }
 
-    private MaskingFormatter getMaskingFormatter(RouteContext routeContext) {
+    private MaskingFormatter getMaskingFormatter() {
         if (routeContext.isLogMask()) {
-            MaskingFormatter formatter = routeContext.lookup(MaskingFormatter.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
+            MaskingFormatter formatter = lookup(MaskingFormatter.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
             if (formatter == null) {
                 formatter = new DefaultMaskingFormatter();
             }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
index 1c57ed3..c4a689d 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
@@ -30,7 +30,6 @@ import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 public class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
 
@@ -71,7 +70,7 @@ public class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
             throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
         }
         if (definition.getOnPrepareRef() != null) {
-            definition.setOnPrepare(CamelContextHelper.mandatoryLookup(camelContext, definition.getOnPrepareRef(), Processor.class));
+            definition.setOnPrepare(mandatoryLookup(definition.getOnPrepareRef(), Processor.class));
         }
 
         MulticastProcessor answer = new MulticastProcessor(camelContext, list, strategy, isParallelProcessing, threadPool, shutdownThreadPool, isStreaming,
@@ -83,7 +82,7 @@ public class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
     private AggregationStrategy createAggregationStrategy() {
         AggregationStrategy strategy = definition.getAggregationStrategy();
         if (strategy == null && definition.getStrategyRef() != null) {
-            Object aggStrategy = routeContext.lookup(parseString(definition.getStrategyRef()), Object.class);
+            Object aggStrategy = lookup(parseString(definition.getStrategyRef()), Object.class);
             if (aggStrategy instanceof AggregationStrategy) {
                 strategy = (AggregationStrategy)aggStrategy;
             } else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
index a96db82..de5b2ec 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
@@ -25,7 +25,7 @@ import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
-public class PolicyReifier extends ProcessorReifier<PolicyDefinition> {
+public class PolicyReifier extends AbstractPolicyReifier<PolicyDefinition> {
 
     public PolicyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
         super(routeContext, (PolicyDefinition) definition);
@@ -33,7 +33,7 @@ public class PolicyReifier extends ProcessorReifier<PolicyDefinition> {
 
     @Override
     public Processor createProcessor() throws Exception {
-        Policy policy = resolvePolicy(routeContext);
+        Policy policy = resolvePolicy();
         ObjectHelper.notNull(policy, "policy", definition);
 
         // before wrap
@@ -53,12 +53,8 @@ public class PolicyReifier extends ProcessorReifier<PolicyDefinition> {
         return target;
     }
 
-    protected Policy resolvePolicy(RouteContext routeContext) {
-        if (definition.getPolicy() != null) {
-            return definition.getPolicy();
-        }
-        // reuse code on transacted definition to do the resolution
-        return TransactedReifier.resolvePolicy(routeContext, definition.getRef(), definition.getType());
+    protected Policy resolvePolicy() {
+        return resolvePolicy(definition.getPolicy(), definition.getRef(), definition.getType());
     }
 
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
index ed1123b..b885cfa 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
@@ -62,7 +62,7 @@ public class PollEnrichReifier extends ProcessorReifier<PollEnrichDefinition> {
     private AggregationStrategy createAggregationStrategy() {
         AggregationStrategy strategy = definition.getAggregationStrategy();
         if (strategy == null && definition.getAggregationStrategyRef() != null) {
-            Object aggStrategy = routeContext.lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
+            Object aggStrategy = lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
             if (aggStrategy instanceof AggregationStrategy) {
                 strategy = (AggregationStrategy)aggStrategy;
             } else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
index 2841268..9ad3c5c 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
@@ -37,7 +37,7 @@ public class ProcessReifier extends ProcessorReifier<ProcessDefinition> {
         Processor answer = definition.getProcessor();
         if (answer == null) {
             ObjectHelper.notNull(definition.getRef(), "ref", definition);
-            answer = routeContext.mandatoryLookup(definition.getRef(), Processor.class);
+            answer = mandatoryLookup(definition.getRef(), Processor.class);
         }
 
         // ensure its wrapped in a Service so we can manage it from eg. JMX
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index ac898c7..68e6caf 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -111,7 +111,6 @@ import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.ReifierStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteIdAware;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -243,7 +242,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
             // no there is a custom thread pool configured
             return false;
         } else if (definition.getExecutorServiceRef() != null) {
-            ExecutorService answer = routeContext.lookup(definition.getExecutorServiceRef(), ExecutorService.class);
+            ExecutorService answer = lookup(definition.getExecutorServiceRef(), ExecutorService.class);
             // if no existing thread pool, then we will have to create a new
             // thread pool
             return answer == null;
@@ -384,12 +383,12 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
      */
     public ScheduledExecutorService lookupScheduledExecutorServiceRef(String name, Object source, String executorServiceRef) {
 
-        ExecutorServiceManager manager = routeContext.getCamelContext().getExecutorServiceManager();
-        ObjectHelper.notNull(manager, "ExecutorServiceManager", routeContext.getCamelContext());
+        ExecutorServiceManager manager = camelContext.getExecutorServiceManager();
+        ObjectHelper.notNull(manager, "ExecutorServiceManager", camelContext);
         ObjectHelper.notNull(executorServiceRef, "executorServiceRef");
 
         // lookup in registry first and use existing thread pool if exists
-        ScheduledExecutorService answer = routeContext.lookup(executorServiceRef, ScheduledExecutorService.class);
+        ScheduledExecutorService answer = lookup(executorServiceRef, ScheduledExecutorService.class);
         if (answer == null) {
             // then create a thread pool assuming the ref is a thread pool
             // profile id
@@ -425,7 +424,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         ObjectHelper.notNull(executorServiceRef, "executorServiceRef");
 
         // lookup in registry first and use existing thread pool if exists
-        ExecutorService answer = routeContext.lookup(executorServiceRef, ExecutorService.class);
+        ExecutorService answer = lookup(executorServiceRef, ExecutorService.class);
         if (answer == null) {
             // then create a thread pool assuming the ref is a thread pool
             // profile id
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
index e1602f3..81aac98 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
@@ -27,13 +27,11 @@ import org.apache.camel.Processor;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RecipientListDefinition;
 import org.apache.camel.processor.EvaluateExpressionProcessor;
-import org.apache.camel.processor.Pipeline;
 import org.apache.camel.processor.RecipientList;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 public class RecipientListReifier extends ProcessorReifier<RecipientListDefinition<?>> {
 
@@ -59,7 +57,7 @@ public class RecipientListReifier extends ProcessorReifier<RecipientListDefiniti
         } else {
             answer = new RecipientList(camelContext, expression);
         }
-        answer.setAggregationStrategy(createAggregationStrategy(routeContext));
+        answer.setAggregationStrategy(createAggregationStrategy());
         answer.setParallelProcessing(isParallelProcessing);
         answer.setParallelAggregate(isParallelAggregate);
         answer.setStreaming(isStreaming);
@@ -71,7 +69,7 @@ public class RecipientListReifier extends ProcessorReifier<RecipientListDefiniti
             answer.setCacheSize(parseInt(definition.getCacheSize()));
         }
         if (definition.getOnPrepareRef() != null) {
-            definition.setOnPrepare(CamelContextHelper.mandatoryLookup(camelContext, definition.getOnPrepareRef(), Processor.class));
+            definition.setOnPrepare(mandatoryLookup(definition.getOnPrepareRef(), Processor.class));
         }
         if (definition.getOnPrepare() != null) {
             answer.setOnPrepare(definition.getOnPrepare());
@@ -110,10 +108,10 @@ public class RecipientListReifier extends ProcessorReifier<RecipientListDefiniti
         return answer.newPipeline(camelContext, pipe);
     }
 
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+    private AggregationStrategy createAggregationStrategy() {
         AggregationStrategy strategy = definition.getAggregationStrategy();
         if (strategy == null && definition.getStrategyRef() != null) {
-            Object aggStrategy = routeContext.lookup(parseString(definition.getStrategyRef()), Object.class);
+            Object aggStrategy = lookup(parseString(definition.getStrategyRef()), Object.class);
             if (aggStrategy instanceof AggregationStrategy) {
                 strategy = (AggregationStrategy)aggStrategy;
             } else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
index 882a581..2d8e4e5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
@@ -29,7 +29,6 @@ import org.apache.camel.processor.StreamResequencer;
 import org.apache.camel.processor.resequencer.DefaultExchangeComparator;
 import org.apache.camel.processor.resequencer.ExpressionResultComparator;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
@@ -117,7 +116,7 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
 
         ExpressionResultComparator comparator;
         if (config.getComparatorRef() != null) {
-            comparator = CamelContextHelper.mandatoryLookup(camelContext, config.getComparatorRef(), ExpressionResultComparator.class);
+            comparator = mandatoryLookup(config.getComparatorRef(), ExpressionResultComparator.class);
         } else {
             comparator = config.getComparator();
             if (comparator == null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 283fce8..7b5b098 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -109,7 +109,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
     public Route createRoute() {
         try {
-            return doCreateRoute(camelContext, routeContext);
+            return doCreateRoute();
         } catch (FailedToCreateRouteException e) {
             throw e;
         } catch (Exception e) {
@@ -119,11 +119,6 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         }
     }
 
-    public Endpoint resolveEndpoint(String uri) throws NoSuchEndpointException {
-        ObjectHelper.notNull(camelContext, "CamelContext");
-        return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
-    }
-
     /**
      * Advices this route with the route builder.
      * <p/>
@@ -243,13 +238,13 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
     // Implementation methods
     // -------------------------------------------------------------------------
-    protected Route doCreateRoute(CamelContext camelContext, RouteContext routeContext) throws Exception {
+    protected Route doCreateRoute() throws Exception {
         // configure error handler
         routeContext.setErrorHandlerFactory(definition.getErrorHandlerFactory());
 
         // configure tracing
         if (definition.getTrace() != null) {
-            Boolean isTrace = CamelContextHelper.parseBoolean(camelContext, definition.getTrace());
+            Boolean isTrace = parseBoolean(definition.getTrace());
             if (isTrace != null) {
                 routeContext.setTracing(isTrace);
                 if (isTrace) {
@@ -262,7 +257,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         // configure message history
         if (definition.getMessageHistory() != null) {
-            Boolean isMessageHistory = CamelContextHelper.parseBoolean(camelContext, definition.getMessageHistory());
+            Boolean isMessageHistory = parseBoolean(definition.getMessageHistory());
             if (isMessageHistory != null) {
                 routeContext.setMessageHistory(isMessageHistory);
                 if (isMessageHistory) {
@@ -273,7 +268,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         // configure Log EIP mask
         if (definition.getLogMask() != null) {
-            Boolean isLogMask = CamelContextHelper.parseBoolean(camelContext, definition.getLogMask());
+            Boolean isLogMask = parseBoolean(definition.getLogMask());
             if (isLogMask != null) {
                 routeContext.setLogMask(isLogMask);
                 if (isLogMask) {
@@ -284,7 +279,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         // configure stream caching
         if (definition.getStreamCache() != null) {
-            Boolean isStreamCache = CamelContextHelper.parseBoolean(camelContext, definition.getStreamCache());
+            Boolean isStreamCache = parseBoolean(definition.getStreamCache());
             if (isStreamCache != null) {
                 routeContext.setStreamCaching(isStreamCache);
                 if (isStreamCache) {
@@ -295,7 +290,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
 
         // configure delayer
         if (definition.getDelayer() != null) {
-            Long delayer = CamelContextHelper.parseLong(camelContext, definition.getDelayer());
+            Long delayer = parseLong(definition.getDelayer());
             if (delayer != null) {
                 routeContext.setDelayer(delayer);
                 if (delayer > 0) {
@@ -317,7 +312,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
             StringTokenizer policyTokens = new StringTokenizer(definition.getRoutePolicyRef(), ",");
             while (policyTokens.hasMoreTokens()) {
                 String ref = policyTokens.nextToken().trim();
-                RoutePolicy policy = CamelContextHelper.mandatoryLookup(camelContext, ref, RoutePolicy.class);
+                RoutePolicy policy = mandatoryLookup(ref, RoutePolicy.class);
                 log.debug("RoutePolicy is enabled: {} on route: {}", policy, definition.getId());
                 routeContext.getRoutePolicyList().add(policy);
             }
@@ -333,7 +328,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         }
 
         // configure auto startup
-        Boolean isAutoStartup = CamelContextHelper.parseBoolean(camelContext, definition.getAutoStartup());
+        Boolean isAutoStartup = parseBoolean(definition.getAutoStartup());
         if (isAutoStartup != null) {
             log.debug("Using AutoStartup {} on route: {}", isAutoStartup, definition.getId());
             routeContext.setAutoStartup(isAutoStartup);
@@ -364,7 +359,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
             if (def != null) {
                 endpoint = def.resolve(camelContext);
             } else {
-                endpoint = routeContext.resolveEndpoint(definition.getInput().getEndpointUri());
+                endpoint = resolveEndpoint(definition.getInput().getEndpointUri());
             }
         }
         routeContext.setEndpoint(endpoint);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
index 1baa76b..a6ce8b1 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
@@ -45,9 +45,13 @@ public class SagaReifier extends ProcessorReifier<SagaDefinition> {
 
     @Override
     public Processor createProcessor() throws Exception {
-        Optional<Endpoint> compensationEndpoint = Optional.ofNullable(definition.getCompensation()).map(SagaActionUriDefinition::getUri).map(routeContext::resolveEndpoint);
+        Optional<Endpoint> compensationEndpoint = Optional.ofNullable(definition.getCompensation())
+                .map(SagaActionUriDefinition::getUri)
+                .map(this::resolveEndpoint);
 
-        Optional<Endpoint> completionEndpoint = Optional.ofNullable(definition.getCompletion()).map(SagaActionUriDefinition::getUri).map(routeContext::resolveEndpoint);
+        Optional<Endpoint> completionEndpoint = Optional.ofNullable(definition.getCompletion())
+                .map(SagaActionUriDefinition::getUri)
+                .map(this::resolveEndpoint);
 
         Map<String, Expression> optionsMap = new TreeMap<>();
         if (definition.getOptions() != null) {
@@ -90,7 +94,7 @@ public class SagaReifier extends ProcessorReifier<SagaDefinition> {
         }
 
         if (definition.getSagaServiceRef() != null) {
-            return CamelContextHelper.mandatoryLookup(context, parseString(definition.getSagaServiceRef()), CamelSagaService.class);
+            return mandatoryLookup(parseString(definition.getSagaServiceRef()), CamelSagaService.class);
         }
 
         sagaService = context.hasService(CamelSagaService.class);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
index 583cefa..09a9ea5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
@@ -23,6 +23,7 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SendDefinition;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.support.CamelContextHelper;
 
 public class SendReifier extends ProcessorReifier<SendDefinition<?>> {
 
@@ -32,16 +33,16 @@ public class SendReifier extends ProcessorReifier<SendDefinition<?>> {
 
     @Override
     public Processor createProcessor() throws Exception {
-        Endpoint endpoint = resolveEndpoint(routeContext);
+        Endpoint endpoint = resolveEndpoint();
         return new SendProcessor(endpoint, parse(ExchangePattern.class, definition.getPattern()));
     }
 
-    public Endpoint resolveEndpoint(RouteContext context) {
+    public Endpoint resolveEndpoint() {
         if (definition.getEndpoint() == null) {
             if (definition.getEndpointProducerBuilder() == null) {
-                return context.resolveEndpoint(definition.getEndpointUri(), (String)null);
+                return CamelContextHelper.resolveEndpoint(camelContext, definition.getEndpointUri(), (String)null);
             } else {
-                return definition.getEndpointProducerBuilder().resolve(context.getCamelContext());
+                return definition.getEndpointProducerBuilder().resolve(camelContext);
             }
         } else {
             return definition.getEndpoint();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
index ae5b053..dc3bc07 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
@@ -40,7 +40,7 @@ public class SortReifier<T, U extends SortDefinition<T>> extends ExpressionReifi
     public Processor createProcessor() throws Exception {
         // lookup in registry
         if (isNotEmpty(definition.getComparatorRef())) {
-            definition.setComparator(routeContext.lookup(parseString(definition.getComparatorRef()), Comparator.class));
+            definition.setComparator(lookup(parseString(definition.getComparatorRef()), Comparator.class));
         }
 
         // if no comparator then default on to string representation
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
index 54e1997..4c4e592 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
@@ -28,7 +28,6 @@ import org.apache.camel.processor.Splitter;
 import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 public class SplitReifier extends ExpressionReifier<SplitDefinition> {
 
@@ -55,7 +54,7 @@ public class SplitReifier extends ExpressionReifier<SplitDefinition> {
             throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
         }
         if (definition.getOnPrepareRef() != null) {
-            definition.setOnPrepare(CamelContextHelper.mandatoryLookup(camelContext, parseString(definition.getOnPrepareRef()), Processor.class));
+            definition.setOnPrepare(mandatoryLookup(parseString(definition.getOnPrepareRef()), Processor.class));
         }
 
         Expression exp = createExpression(definition.getExpression());
@@ -69,7 +68,7 @@ public class SplitReifier extends ExpressionReifier<SplitDefinition> {
     private AggregationStrategy createAggregationStrategy() {
         AggregationStrategy strategy = definition.getAggregationStrategy();
         if (strategy == null && definition.getStrategyRef() != null) {
-            Object aggStrategy = routeContext.lookup(definition.getStrategyRef(), Object.class);
+            Object aggStrategy = lookup(definition.getStrategyRef(), Object.class);
             if (aggStrategy instanceof AggregationStrategy) {
                 strategy = (AggregationStrategy)aggStrategy;
             } else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
index 928ca52..efd6c35 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
@@ -17,7 +17,6 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ThrowExceptionDefinition;
 import org.apache.camel.processor.ThrowExceptionProcessor;
@@ -33,7 +32,7 @@ public class ThrowExceptionReifier extends ProcessorReifier<ThrowExceptionDefini
     public Processor createProcessor() {
         Exception exception = definition.getException();
         if (exception == null && definition.getRef() != null) {
-            exception = routeContext.lookup(parseString(definition.getRef()), Exception.class);
+            exception = lookup(parseString(definition.getRef()), Exception.class);
         }
 
         Class<? extends Exception> exceptionClass = definition.getExceptionClass();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
index 68b129c..3750a8e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
@@ -16,36 +16,28 @@
  */
 package org.apache.camel.reifier;
 
-import java.lang.reflect.Method;
-import java.util.Map;
-
-import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.TransactedDefinition;
 import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelContextHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.camel.model.TransactedDefinition.PROPAGATION_REQUIRED;
-
-public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(TransactedReifier.class);
+public class TransactedReifier extends AbstractPolicyReifier<TransactedDefinition> {
 
     public TransactedReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
         super(routeContext, (TransactedDefinition) definition);
     }
 
+    public TransactedReifier(CamelContext camelContext, ProcessorDefinition<?> definition) {
+        super(camelContext, (TransactedDefinition) definition);
+    }
+
     @Override
     public Processor createProcessor() throws Exception {
-        Policy policy = resolvePolicy(routeContext);
+        Policy policy = resolvePolicy();
         org.apache.camel.util.ObjectHelper.notNull(policy, "policy", this);
 
         // before wrap
@@ -65,98 +57,8 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
         return target;
     }
 
-    protected Policy resolvePolicy(RouteContext routeContext) {
-        return resolvePolicy(routeContext, definition);
+    public Policy resolvePolicy() {
+        return resolvePolicy(definition.getPolicy(), definition.getRef(), definition.getType());
     }
 
-    public static Policy resolvePolicy(RouteContext routeContext, TransactedDefinition definition) {
-        if (definition.getPolicy() != null) {
-            return definition.getPolicy();
-        }
-        return resolvePolicy(routeContext, definition.getRef(), definition.getType());
-    }
-
-    public static Policy resolvePolicy(RouteContext routeContext, String ref, Class<? extends Policy> type) {
-        // explicit ref given so lookup by it
-        if (org.apache.camel.util.ObjectHelper.isNotEmpty(ref)) {
-            return CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), ref, Policy.class);
-        }
-
-        // no explicit reference given from user so we can use some convention
-        // over configuration here
-
-        // try to lookup by scoped type
-        Policy answer = null;
-        if (type != null) {
-            // try find by type, note that this method is not supported by all
-            // registry
-            Map<String, ?> types = routeContext.lookupByType(type);
-            if (types.size() == 1) {
-                // only one policy defined so use it
-                Object found = types.values().iterator().next();
-                if (type.isInstance(found)) {
-                    return type.cast(found);
-                }
-            }
-        }
-
-        // for transacted routing try the default REQUIRED name
-        if (type == TransactedPolicy.class) {
-            // still not found try with the default name PROPAGATION_REQUIRED
-            answer = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
-        }
-
-        // this logic only applies if we are a transacted policy
-        // still no policy found then try lookup the platform transaction
-        // manager and use it as policy
-        if (answer == null && type == TransactedPolicy.class) {
-            Class<?> tmClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.springframework.transaction.PlatformTransactionManager");
-            if (tmClazz != null) {
-                // see if we can find the platform transaction manager in the
-                // registry
-                Map<String, ?> maps = routeContext.lookupByType(tmClazz);
-                if (maps.size() == 1) {
-                    // only one platform manager then use it as default and
-                    // create a transacted
-                    // policy with it and default to required
-
-                    // as we do not want dependency on spring jars in the
-                    // camel-core we use
-                    // reflection to lookup classes and create new objects and
-                    // call methods
-                    // as this is only done during route building it does not
-                    // matter that we
-                    // use reflection as performance is no a concern during
-                    // route building
-                    Object transactionManager = maps.values().iterator().next();
-                    LOG.debug("One instance of PlatformTransactionManager found in registry: {}", transactionManager);
-                    Class<?> txClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.apache.camel.spring.spi.SpringTransactionPolicy");
-                    if (txClazz != null) {
-                        LOG.debug("Creating a new temporary SpringTransactionPolicy using the PlatformTransactionManager: {}", transactionManager);
-                        TransactedPolicy txPolicy = org.apache.camel.support.ObjectHelper.newInstance(txClazz, TransactedPolicy.class);
-                        Method method;
-                        try {
-                            method = txClazz.getMethod("setTransactionManager", tmClazz);
-                        } catch (NoSuchMethodException e) {
-                            throw new RuntimeCamelException("Cannot get method setTransactionManager(PlatformTransactionManager) on class: " + txClazz);
-                        }
-                        org.apache.camel.support.ObjectHelper.invokeMethod(method, txPolicy, transactionManager);
-                        return txPolicy;
-                    } else {
-                        // camel-spring is missing on the classpath
-                        throw new RuntimeCamelException("Cannot create a transacted policy as camel-spring.jar is not on the classpath!");
-                    }
-                } else {
-                    if (maps.isEmpty()) {
-                        throw new NoSuchBeanException(null, "PlatformTransactionManager");
-                    } else {
-                        throw new IllegalArgumentException("Found " + maps.size() + " PlatformTransactionManager in registry. "
-                                                           + "Cannot determine which one to use. Please configure a TransactionTemplate on the transacted policy.");
-                    }
-                }
-            }
-        }
-
-        return answer;
-    }
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
index 2c40e1d..8edaae7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
@@ -29,7 +29,6 @@ import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.SendDynamicProcessor;
 import org.apache.camel.processor.WireTapProcessor;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
 
@@ -66,7 +65,7 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
         answer.setCopy(isCopy);
         Processor newExchangeProcessor = definition.getNewExchangeProcessor();
         if (definition.getNewExchangeProcessorRef() != null) {
-            newExchangeProcessor = routeContext.mandatoryLookup(parseString(definition.getNewExchangeProcessorRef()), Processor.class);
+            newExchangeProcessor = mandatoryLookup(parseString(definition.getNewExchangeProcessorRef()), Processor.class);
         }
         if (newExchangeProcessor != null) {
             answer.addNewExchangeProcessor(newExchangeProcessor);
@@ -82,7 +81,7 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
         }
         Processor onPrepare = definition.getOnPrepare();
         if (definition.getOnPrepareRef() != null) {
-            onPrepare = CamelContextHelper.mandatoryLookup(camelContext, parseString(definition.getOnPrepareRef()), Processor.class);
+            onPrepare = mandatoryLookup(parseString(definition.getOnPrepareRef()), Processor.class);
         }
         if (onPrepare != null) {
             answer.setOnPrepare(onPrepare);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index 792c85c..a3c2712 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -75,6 +75,7 @@ import org.apache.camel.spi.DataFormatContentTypeHeader;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.PropertyConfigurerAware;
 import org.apache.camel.spi.ReifierStrategy;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -163,7 +164,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
         if (type == null) {
             ObjectHelper.notNull(ref, "ref or type");
 
-            DataFormat dataFormat = camelContext.getRegistry().lookupByNameAndType(ref, DataFormat.class);
+            DataFormat dataFormat = CamelContextHelper.lookup(camelContext, ref, DataFormat.class);
             if (dataFormat != null) {
                 return dataFormat;
             }
@@ -264,7 +265,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
         }
         if (configurer == null) {
             final String configurerName = name + "-dataformat-configurer";
-            configurer = camelContext.getRegistry().lookupByNameAndType(configurerName, PropertyConfigurer.class);
+            configurer = lookup(configurerName, PropertyConfigurer.class);
             if (LOG.isDebugEnabled() && configurer != null) {
                 LOG.debug("Discovered dataformat property configurer using the Camel registry: {} -> {}", configurerName, configurer);
             }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
index 30262b5..7235574 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
@@ -51,7 +51,7 @@ public class DefaultErrorHandlerReifier<T extends DefaultErrorHandlerBuilder> ex
             // camel context will shutdown the executor when it shutdown so no
             // need to shut it down when stopping
             if (executorServiceRef != null) {
-                executorService = camelContext.getRegistry().lookupByNameAndType(executorServiceRef, ScheduledExecutorService.class);
+                executorService = lookup(executorServiceRef, ScheduledExecutorService.class);
                 if (executorService == null) {
                     ExecutorServiceManager manager = camelContext.getExecutorServiceManager();
                     ThreadPoolProfile profile = manager.getThreadPoolProfile(executorServiceRef);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
index c190132..0d6f3d7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
@@ -184,6 +184,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
      */
     public static ErrorHandlerFactory lookupErrorHandlerFactory(RouteContext routeContext, String ref, boolean mandatory) {
         ErrorHandlerFactory answer;
+        CamelContext camelContext = routeContext.getCamelContext();
 
         // if the ref is the default then we do not have any explicit error
         // handler configured
@@ -204,7 +205,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
                     // the other has also no explicit error handler configured
                     // then fallback to the handler
                     // configured on the parent camel context
-                    answer = lookupErrorHandlerFactory(routeContext.getCamelContext());
+                    answer = lookupErrorHandlerFactory(camelContext);
                 }
                 if (answer == null) {
                     // the other has also no explicit error handler configured
@@ -222,9 +223,9 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
         } else {
             // use specific configured error handler
             if (mandatory) {
-                answer = routeContext.mandatoryLookup(ref, ErrorHandlerBuilder.class);
+                answer = CamelContextHelper.mandatoryLookup(camelContext, ref, ErrorHandlerBuilder.class);
             } else {
-                answer = routeContext.lookup(ref, ErrorHandlerBuilder.class);
+                answer = CamelContextHelper.lookup(camelContext, ref, ErrorHandlerBuilder.class);
             }
         }
 
@@ -237,7 +238,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
             ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef)answer;
             String otherRef = other.getRef();
             if (isErrorHandlerFactoryConfigured(otherRef)) {
-                answer = camelContext.getRegistry().lookupByNameAndType(otherRef, ErrorHandlerBuilder.class);
+                answer = CamelContextHelper.lookup(camelContext, otherRef, ErrorHandlerBuilder.class);
                 if (answer == null) {
                     throw new IllegalArgumentException("ErrorHandlerBuilder with id " + otherRef + " not found in registry.");
                 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
index cba3d83..fa13084 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
@@ -20,7 +20,6 @@ import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.StringHelper;
 
 public class CustomLoadBalancerReifier extends LoadBalancerReifier<CustomLoadBalancerDefinition> {
@@ -35,7 +34,7 @@ public class CustomLoadBalancerReifier extends LoadBalancerReifier<CustomLoadBal
             return definition.getCustomLoadBalancer();
         }
         StringHelper.notEmpty(definition.getRef(), "ref", this);
-        return CamelContextHelper.mandatoryLookup(camelContext, definition.getRef(), LoadBalancer.class);
+        return mandatoryLookup(definition.getRef(), LoadBalancer.class);
     }
 
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
index 850226a..7c00ba8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
@@ -79,7 +79,7 @@ public class RestBindingReifier extends AbstractReifier {
             String name = config.getJsonDataFormat();
             if (name != null) {
                 // must only be a name, not refer to an existing instance
-                Object instance = camelContext.getRegistry().lookupByName(name);
+                Object instance = lookupByName(name);
                 if (instance != null) {
                     throw new IllegalArgumentException("JsonDataFormat name: " + name + " must not be an existing bean instance from the registry");
                 }
@@ -103,7 +103,7 @@ public class RestBindingReifier extends AbstractReifier {
             String name = config.getXmlDataFormat();
             if (name != null) {
                 // must only be a name, not refer to an existing instance
-                Object instance = camelContext.getRegistry().lookupByName(name);
+                Object instance = lookupByName(name);
                 if (instance != null) {
                     throw new IllegalArgumentException("XmlDataFormat name: " + name + " must not be an existing bean instance from the registry");
                 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java
index 9069623..87f2f78 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java
@@ -34,7 +34,7 @@ public class CustomTransformeReifier extends TransformerReifier<CustomTransforme
         }
         Transformer transformer;
         if (definition.getRef() != null) {
-            transformer = camelContext.getRegistry().lookupByNameAndType(parseString(definition.getRef()), Transformer.class);
+            transformer = lookup(parseString(definition.getRef()), Transformer.class);
             if (transformer == null) {
                 throw new IllegalArgumentException("Cannot find transformer with ref:" + definition.getRef());
             }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java
index 6304a2c..27ff407 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java
@@ -34,7 +34,7 @@ public class EndpointTransformeReifier extends TransformerReifier<EndpointTransf
     @Override
     protected Transformer doCreateTransformer() {
         Endpoint endpoint = definition.getUri() != null ? camelContext.getEndpoint(definition.getUri())
-                : camelContext.getRegistry().lookupByNameAndType(parseString(definition.getRef()), Endpoint.class);
+                : lookup(parseString(definition.getRef()), Endpoint.class);
         SendProcessor processor = new SendProcessor(endpoint, ExchangePattern.InOut);
         return new ProcessorTransformer(camelContext).setProcessor(processor)
                 .setModel(parseString(definition.getScheme()))
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
index bca3380..4510212 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
@@ -34,7 +34,7 @@ public class CustomValidatorReifier extends ValidatorReifier<CustomValidatorDefi
         }
         Validator validator;
         if (definition.getRef() != null) {
-            validator = camelContext.getRegistry().lookupByNameAndType(definition.getRef(), Validator.class);
+            validator = lookup(definition.getRef(), Validator.class);
             if (validator == null) {
                 throw new IllegalArgumentException("Cannot find validator with ref:" + definition.getRef());
             }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
index 7652bce..c3e8bf6 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
@@ -33,7 +33,7 @@ public class EndpointValidatorReifier extends ValidatorReifier<EndpointValidator
 
     @Override
     protected Validator doCreateValidator() {
-        Endpoint endpoint = definition.getUri() != null ? camelContext.getEndpoint(definition.getUri()) : camelContext.getRegistry().lookupByNameAndType(definition.getRef(), Endpoint.class);
+        Endpoint endpoint = definition.getUri() != null ? camelContext.getEndpoint(definition.getUri()) : lookup(definition.getRef(), Endpoint.class);
         SendProcessor processor = new SendProcessor(endpoint, ExchangePattern.InOut);
         return new ProcessorValidator(camelContext).setProcessor(processor).setType(definition.getType());
     }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
index 08f1b46..20589ee 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.support;
 
-import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
-import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
@@ -31,6 +29,7 @@ import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.spi.NormalizedEndpointUri;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.util.ObjectHelper;
 
@@ -117,6 +116,37 @@ public final class CamelContextHelper {
         return ObjectHelper.cast(type, endpoint);
     }
 
+    public static Endpoint resolveEndpoint(CamelContext camelContext, String uri, String ref) {
+        Endpoint endpoint = null;
+        if (uri != null) {
+            endpoint = camelContext.getEndpoint(uri);
+            if (endpoint == null) {
+                throw new NoSuchEndpointException(uri);
+            }
+        }
+        if (ref != null) {
+            endpoint = camelContext.getRegistry().lookupByNameAndType(ref, Endpoint.class);
+            if (endpoint == null) {
+                throw new NoSuchEndpointException("ref:" + ref, "check your camel registry with id " + ref);
+            }
+            // Check the endpoint has the right CamelContext
+            if (!camelContext.equals(endpoint.getCamelContext())) {
+                throw new NoSuchEndpointException("ref:" + ref, "make sure the endpoint has the same camel context as the route does.");
+            }
+            try {
+                // need add the endpoint into service
+                camelContext.addService(endpoint);
+            } catch (Exception ex) {
+                throw new RuntimeCamelException(ex);
+            }
+        }
+        if (endpoint == null) {
+            throw new IllegalArgumentException("Either 'uri' or 'ref' must be specified");
+        } else {
+            return endpoint;
+        }
+    }
+
     /**
      * Converts the given value to the requested type
      */


[camel] 16/32: Revert "Remove references to error handler and event driven processors once creation is finished"

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 bd91ab6a2eda8f31cfbbd65bece6481e9037a5bf
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 20:07:06 2020 +0100

    Revert "Remove references to error handler and event driven processors once creation is finished"
    
    This reverts commit 463fcd11c7bcdd3b8d7bdc3301dbce39674c1168.
---
 .../src/main/java/org/apache/camel/impl/engine/DefaultRoute.java       | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

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 c52c690..47f6602 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
@@ -613,7 +613,6 @@ public class DefaultRoute extends ServiceSupport implements Route {
     }
 
     public void initialized() {
-        errorHandlers.clear();
-        eventDrivenProcessors.clear();
+
     }
 }


[camel] 26/32: Move default service creation to camel-base SimpleCamelContext, move model related methods to DefaultCamelContext

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 73b7290d523c8290d756ca2c9167f53fb8d8a1f0
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 07:57:21 2020 +0100

    Move default service creation to camel-base SimpleCamelContext, move model related methods to DefaultCamelContext
---
 .../camel/impl/engine/AbstractCamelContext.java    |   9 +-
 .../impl/engine/BaseExecutorServiceManager.java    |   2 +-
 .../camel/impl/engine/SimpleCamelContext.java}     | 106 +++---
 .../camel/impl/AbstractModelCamelContext.java      | 334 -------------------
 .../org/apache/camel/impl/DefaultCamelContext.java | 369 ++++++++-------------
 5 files changed, 187 insertions(+), 633 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index b9f94cf..3b61952 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -45,6 +45,7 @@ import java.util.function.Supplier;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.CatalogCamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.ConsumerTemplate;
@@ -76,6 +77,7 @@ import org.apache.camel.SuspendableService;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.VetoCamelContextStartException;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
+import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.impl.validator.ValidatorKey;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
@@ -172,7 +174,8 @@ import static org.apache.camel.spi.UnitOfWork.MDC_CAMEL_CONTEXT_ID;
 /**
  * Represents the context used to configure routes and the policies to use.
  */
-public abstract class AbstractCamelContext extends ServiceSupport implements ExtendedCamelContext, Suspendable {
+public abstract class AbstractCamelContext extends ServiceSupport
+        implements ExtendedCamelContext, CatalogCamelContext, Suspendable {
 
     private static final Logger LOG = LoggerFactory.getLogger(AbstractCamelContext.class);
 
@@ -332,6 +335,8 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         // add the defer service startup listener
         this.startupListeners.add(deferStartupListener);
 
+        setDefaultExtension(HealthCheckRegistry.class, this::createHealthCheckRegistry);
+
         if (init) {
             try {
                 init();
@@ -4450,6 +4455,8 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         }
     }
 
+    protected abstract HealthCheckRegistry createHealthCheckRegistry();
+
     protected abstract ReactiveExecutor createReactiveExecutor();
 
     protected abstract StreamCachingStrategy createStreamCachingStrategy();
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
index 299f622..3428d2d 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
@@ -54,7 +54,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Base {@link org.apache.camel.spi.ExecutorServiceManager} which can be used for implementations
  */
-public abstract class BaseExecutorServiceManager extends ServiceSupport implements ExecutorServiceManager {
+public class BaseExecutorServiceManager extends ServiceSupport implements ExecutorServiceManager {
     private static final Logger LOG = LoggerFactory.getLogger(BaseExecutorServiceManager.class);
 
     private final CamelContext camelContext;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
similarity index 81%
copy from core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
copy to core/camel-base/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
index 6fc27c8..1b9beac 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
@@ -14,52 +14,28 @@
  * 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.Collection;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
 
+import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.Processor;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.converter.DefaultTypeConverter;
-import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
-import org.apache.camel.impl.engine.DefaultBeanIntrospection;
-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;
-import org.apache.camel.impl.engine.DefaultConfigurerResolver;
-import org.apache.camel.impl.engine.DefaultDataFormatResolver;
-import org.apache.camel.impl.engine.DefaultEndpointRegistry;
-import org.apache.camel.impl.engine.DefaultFactoryFinderResolver;
-import org.apache.camel.impl.engine.DefaultHeadersMapFactory;
-import org.apache.camel.impl.engine.DefaultInflightRepository;
-import org.apache.camel.impl.engine.DefaultInjector;
-import org.apache.camel.impl.engine.DefaultLanguageResolver;
-import org.apache.camel.impl.engine.DefaultManagementNameStrategy;
-import org.apache.camel.impl.engine.DefaultMessageHistoryFactory;
-import org.apache.camel.impl.engine.DefaultNodeIdFactory;
-import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
-import org.apache.camel.impl.engine.DefaultPackageScanResourceResolver;
-import org.apache.camel.impl.engine.DefaultProcessorFactory;
-import org.apache.camel.impl.engine.DefaultReactiveExecutor;
-import org.apache.camel.impl.engine.DefaultRouteController;
-import org.apache.camel.impl.engine.DefaultShutdownStrategy;
-import org.apache.camel.impl.engine.DefaultStreamCachingStrategy;
-import org.apache.camel.impl.engine.DefaultTracer;
-import org.apache.camel.impl.engine.DefaultUnitOfWorkFactory;
-import org.apache.camel.impl.engine.DefaultUuidGenerator;
-import org.apache.camel.impl.engine.EndpointKey;
-import org.apache.camel.impl.engine.WebSpherePackageScanClassResolver;
-import org.apache.camel.impl.engine.BaseServiceResolver;
 import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
+import org.apache.camel.impl.transformer.TransformerKey;
+import org.apache.camel.impl.validator.ValidatorKey;
+import org.apache.camel.processor.MulticastProcessor;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
-import org.apache.camel.spi.BeanRepository;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.ClassResolver;
@@ -90,9 +66,11 @@ import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.spi.StreamCachingStrategy;
 import org.apache.camel.spi.Tracer;
+import org.apache.camel.spi.TransformerRegistry;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.spi.UnitOfWorkFactory;
 import org.apache.camel.spi.UuidGenerator;
+import org.apache.camel.spi.ValidatorRegistry;
 import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 import org.apache.camel.support.DefaultRegistry;
 import org.slf4j.Logger;
@@ -101,9 +79,9 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the context used to configure routes and the policies to use.
  */
-public class DefaultCamelContext extends AbstractModelCamelContext {
+public class SimpleCamelContext extends AbstractCamelContext {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultCamelContext.class);
+    private static final Logger LOG = LoggerFactory.getLogger(SimpleCamelContext.class);
 
     /**
      * Creates the {@link CamelContext} using {@link DefaultRegistry} as
@@ -111,28 +89,8 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
      * <p/>
      * Use one of the other constructors to force use an explicit registry.
      */
-    public DefaultCamelContext() {
-    }
-
-    /**
-     * Creates the {@link CamelContext} using the given {@link BeanRepository}
-     * as first-choice repository, and the
-     * {@link org.apache.camel.support.SimpleRegistry} as fallback, via the
-     * {@link DefaultRegistry} implementation.
-     *
-     * @param repository the bean repository.
-     */
-    public DefaultCamelContext(BeanRepository repository) {
-        super(new DefaultRegistry(repository));
-    }
-
-    /**
-     * Creates the {@link CamelContext} using the given registry
-     *
-     * @param registry the registry
-     */
-    public DefaultCamelContext(Registry registry) {
-        super(registry);
+    public SimpleCamelContext() {
+        this(true);
     }
 
     /**
@@ -145,11 +103,16 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
      *
      * @param init whether to automatic initialize.
      */
-    public DefaultCamelContext(boolean init) {
+    public SimpleCamelContext(boolean init) {
         super(init);
     }
 
     @Override
+    protected HealthCheckRegistry createHealthCheckRegistry() {
+        return new DefaultHealthCheckRegistry(this);
+    }
+
+    @Override
     protected TypeConverter createTypeConverter() {
         return new DefaultTypeConverter(this, getPackageScanClassResolver(), getInjector(),
                 getDefaultFactoryFinder(), isLoadTypeConverters());
@@ -255,11 +218,6 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
     }
 
     @Override
-    protected HealthCheckRegistry createHealthCheckRegistry() {
-        return new DefaultHealthCheckRegistry(this);
-    }
-
-    @Override
     protected ShutdownStrategy createShutdownStrategy() {
         return new DefaultShutdownStrategy(this);
     }
@@ -283,11 +241,6 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
     }
 
     @Override
-    protected ExecutorServiceManager createExecutorServiceManager() {
-        return new DefaultExecutorServiceManager(this);
-    }
-
-    @Override
     protected UnitOfWorkFactory createUnitOfWorkFactory() {
         return new DefaultUnitOfWorkFactory();
     }
@@ -409,4 +362,23 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
                 .orElseGet(DefaultReactiveExecutor::new);
     }
 
+    @Override
+    public AsyncProcessor createMulticast(Collection<Processor> processors, ExecutorService executor, boolean shutdownExecutorService) {
+        return new MulticastProcessor(this, processors, null, true, executor, shutdownExecutorService, false, false, 0, null, false, false);
+    }
+
+    @Override
+    protected ValidatorRegistry<ValidatorKey> createValidatorRegistry() {
+        return new DefaultValidatorRegistry(this);
+    }
+
+    @Override
+    protected TransformerRegistry<TransformerKey> createTransformerRegistry() {
+        return new DefaultTransformerRegistry(this);
+    }
+
+    @Override
+    protected ExecutorServiceManager createExecutorServiceManager() {
+        return new BaseExecutorServiceManager(this);
+    }
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
deleted file mode 100644
index b2f10f3..0000000
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/AbstractModelCamelContext.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.function.Function;
-
-import org.apache.camel.AsyncProcessor;
-import org.apache.camel.CatalogCamelContext;
-import org.apache.camel.Processor;
-import org.apache.camel.health.HealthCheckRegistry;
-import org.apache.camel.impl.engine.AbstractCamelContext;
-import org.apache.camel.impl.engine.BaseRouteService;
-import org.apache.camel.impl.engine.DefaultTransformerRegistry;
-import org.apache.camel.impl.engine.DefaultValidatorRegistry;
-import org.apache.camel.impl.transformer.TransformerKey;
-import org.apache.camel.impl.validator.ValidatorKey;
-import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.HystrixConfigurationDefinition;
-import org.apache.camel.model.Model;
-import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.Resilience4jConfigurationDefinition;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
-import org.apache.camel.model.rest.RestDefinition;
-import org.apache.camel.model.transformer.TransformerDefinition;
-import org.apache.camel.model.validator.ValidatorDefinition;
-import org.apache.camel.processor.MulticastProcessor;
-import org.apache.camel.reifier.dataformat.DataFormatReifier;
-import org.apache.camel.spi.DataFormat;
-import org.apache.camel.spi.Registry;
-import org.apache.camel.spi.TransformerRegistry;
-import org.apache.camel.spi.ValidatorRegistry;
-import org.apache.camel.support.CamelContextHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Represents the context used to configure routes and the policies to use.
- */
-public abstract class AbstractModelCamelContext extends AbstractCamelContext implements ModelCamelContext, CatalogCamelContext {
-
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractModelCamelContext.class);
-
-    private final Model model = new DefaultModel(this);
-
-    /**
-     * Creates the {@link ModelCamelContext} using
-     * {@link org.apache.camel.support.DefaultRegistry} as registry.
-     * <p/>
-     * Use one of the other constructors to force use an explicit registry.
-     */
-    public AbstractModelCamelContext() {
-        this(true);
-    }
-
-    /**
-     * Creates the {@link ModelCamelContext} using the given registry
-     *
-     * @param registry the registry
-     */
-    public AbstractModelCamelContext(Registry registry) {
-        this();
-        setRegistry(registry);
-    }
-
-    public AbstractModelCamelContext(boolean init) {
-        super(false);
-
-        setDefaultExtension(HealthCheckRegistry.class, this::createHealthCheckRegistry);
-
-        if (init) {
-            init();
-        }
-    }
-
-    @Override
-    public List<RouteDefinition> getRouteDefinitions() {
-        return model.getRouteDefinitions();
-    }
-
-    @Override
-    public RouteDefinition getRouteDefinition(String id) {
-        return model.getRouteDefinition(id);
-    }
-
-    @Override
-    public void addRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
-        if (isStarted() && !isAllowAddingNewRoutes()) {
-            throw new IllegalArgumentException("Adding new routes after CamelContext has been started is not allowed");
-        }
-        model.addRouteDefinitions(routeDefinitions);
-    }
-
-    @Override
-    public void addRouteDefinition(RouteDefinition routeDefinition) throws Exception {
-        if (isStarted() && !isAllowAddingNewRoutes()) {
-            throw new IllegalArgumentException("Adding new routes after CamelContext has been started is not allowed");
-        }
-        model.addRouteDefinition(routeDefinition);
-    }
-
-    @Override
-    public void removeRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
-        model.removeRouteDefinitions(routeDefinitions);
-    }
-
-    @Override
-    public void removeRouteDefinition(RouteDefinition routeDefinition) throws Exception {
-        model.removeRouteDefinition(routeDefinition);
-    }
-
-    @Override
-    public List<RestDefinition> getRestDefinitions() {
-        return model.getRestDefinitions();
-    }
-
-    @Override
-    public void addRestDefinitions(Collection<RestDefinition> restDefinitions, boolean addToRoutes) throws Exception {
-        if (isStarted() && !isAllowAddingNewRoutes()) {
-            throw new IllegalArgumentException("Adding new routes after CamelContext has been started is not allowed");
-        }
-        model.addRestDefinitions(restDefinitions, addToRoutes);
-    }
-
-    @Override
-    public void setDataFormats(Map<String, DataFormatDefinition> dataFormats) {
-        model.setDataFormats(dataFormats);
-    }
-
-    @Override
-    public Map<String, DataFormatDefinition> getDataFormats() {
-        return model.getDataFormats();
-    }
-
-    @Override
-    public DataFormatDefinition resolveDataFormatDefinition(String name) {
-        return model.resolveDataFormatDefinition(name);
-    }
-
-    @Override
-    public ProcessorDefinition<?> getProcessorDefinition(String id) {
-        return model.getProcessorDefinition(id);
-    }
-
-    @Override
-    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) {
-        return model.getProcessorDefinition(id, type);
-    }
-
-    @Override
-    public void setValidators(List<ValidatorDefinition> validators) {
-        model.setValidators(validators);
-    }
-
-    @Override
-    public HystrixConfigurationDefinition getHystrixConfiguration(String id) {
-        return model.getHystrixConfiguration(id);
-    }
-
-    @Override
-    public void setHystrixConfiguration(HystrixConfigurationDefinition configuration) {
-        model.setHystrixConfiguration(configuration);
-    }
-
-    @Override
-    public void setHystrixConfigurations(List<HystrixConfigurationDefinition> configurations) {
-        model.setHystrixConfigurations(configurations);
-    }
-
-    @Override
-    public void addHystrixConfiguration(String id, HystrixConfigurationDefinition configuration) {
-        model.addHystrixConfiguration(id, configuration);
-    }
-
-    @Override
-    public Resilience4jConfigurationDefinition getResilience4jConfiguration(String id) {
-        return model.getResilience4jConfiguration(id);
-    }
-
-    @Override
-    public void setResilience4jConfiguration(Resilience4jConfigurationDefinition configuration) {
-        model.setResilience4jConfiguration(configuration);
-    }
-
-    @Override
-    public void setResilience4jConfigurations(List<Resilience4jConfigurationDefinition> configurations) {
-        model.setResilience4jConfigurations(configurations);
-    }
-
-    @Override
-    public void addResilience4jConfiguration(String id, Resilience4jConfigurationDefinition configuration) {
-        model.addResilience4jConfiguration(id, configuration);
-    }
-
-    @Override
-    public List<ValidatorDefinition> getValidators() {
-        return model.getValidators();
-    }
-
-    @Override
-    public void setTransformers(List<TransformerDefinition> transformers) {
-        model.setTransformers(transformers);
-    }
-
-    @Override
-    public List<TransformerDefinition> getTransformers() {
-        return model.getTransformers();
-    }
-
-    @Override
-    public ServiceCallConfigurationDefinition getServiceCallConfiguration(String serviceName) {
-        return model.getServiceCallConfiguration(serviceName);
-    }
-
-    @Override
-    public void setServiceCallConfiguration(ServiceCallConfigurationDefinition configuration) {
-        model.setServiceCallConfiguration(configuration);
-    }
-
-    @Override
-    public void setServiceCallConfigurations(List<ServiceCallConfigurationDefinition> configurations) {
-        model.setServiceCallConfigurations(configurations);
-    }
-
-    @Override
-    public void addServiceCallConfiguration(String serviceName, ServiceCallConfigurationDefinition configuration) {
-        model.addServiceCallConfiguration(serviceName, configuration);
-    }
-
-    @Override
-    public void setRouteFilterPattern(String include, String exclude) {
-        model.setRouteFilterPattern(include, exclude);
-    }
-
-    @Override
-    public void setRouteFilter(Function<RouteDefinition, Boolean> filter) {
-        model.setRouteFilter(filter);
-    }
-
-    @Override
-    public Function<RouteDefinition, Boolean> getRouteFilter() {
-        return model.getRouteFilter();
-    }
-
-    @Override
-    protected ValidatorRegistry<ValidatorKey> createValidatorRegistry() {
-        return new DefaultValidatorRegistry(this);
-    }
-
-    @Override
-    protected TransformerRegistry<TransformerKey> createTransformerRegistry() {
-        return new DefaultTransformerRegistry(this);
-    }
-
-    protected abstract HealthCheckRegistry createHealthCheckRegistry();
-
-    @Override
-    protected void doStartStandardServices() {
-        super.doStartStandardServices();
-    }
-
-    @Override
-    protected void doStartEagerServices() {
-        getExtension(HealthCheckRegistry.class);
-        super.doStartEagerServices();
-    }
-
-    @Override
-    protected void bindDataFormats() throws Exception {
-        // eager lookup data formats and bind to registry so the dataformats can
-        // be looked up and used
-        for (Map.Entry<String, DataFormatDefinition> e : model.getDataFormats().entrySet()) {
-            String id = e.getKey();
-            DataFormatDefinition def = e.getValue();
-            LOG.debug("Creating Dataformat with id: {} and definition: {}", id, def);
-            DataFormat df = DataFormatReifier.reifier(this, def).createDataFormat();
-            addService(df, true);
-            getRegistry().bind(id, df);
-        }
-    }
-
-    @Override
-    protected synchronized void shutdownRouteService(BaseRouteService routeService) throws Exception {
-        if (routeService instanceof RouteService) {
-            model.getRouteDefinitions().remove(((RouteService)routeService).getRouteDefinition());
-        }
-        super.shutdownRouteService(routeService);
-    }
-
-    @Override
-    protected boolean isStreamCachingInUse() throws Exception {
-        boolean streamCachingInUse = super.isStreamCachingInUse();
-        if (!streamCachingInUse) {
-            for (RouteDefinition route : model.getRouteDefinitions()) {
-                Boolean routeCache = CamelContextHelper.parseBoolean(this, route.getStreamCache());
-                if (routeCache != null && routeCache) {
-                    streamCachingInUse = true;
-                    break;
-                }
-            }
-        }
-        return streamCachingInUse;
-    }
-
-    @Override
-    public void startRouteDefinitions() throws Exception {
-        model.startRouteDefinitions();
-    }
-
-    @Override
-    public AsyncProcessor createMulticast(Collection<Processor> processors, ExecutorService executor, boolean shutdownExecutorService) {
-        return new MulticastProcessor(this, processors, null, true, executor, shutdownExecutorService, false, false, 0, null, false, false);
-    }
-
-}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 6fc27c8..c5f56f1 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -16,84 +16,32 @@
  */
 package org.apache.camel.impl;
 
+import java.util.Collection;
+import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.health.HealthCheckRegistry;
-import org.apache.camel.impl.converter.DefaultTypeConverter;
-import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
-import org.apache.camel.impl.engine.DefaultBeanIntrospection;
-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;
-import org.apache.camel.impl.engine.DefaultConfigurerResolver;
-import org.apache.camel.impl.engine.DefaultDataFormatResolver;
-import org.apache.camel.impl.engine.DefaultEndpointRegistry;
-import org.apache.camel.impl.engine.DefaultFactoryFinderResolver;
-import org.apache.camel.impl.engine.DefaultHeadersMapFactory;
-import org.apache.camel.impl.engine.DefaultInflightRepository;
-import org.apache.camel.impl.engine.DefaultInjector;
-import org.apache.camel.impl.engine.DefaultLanguageResolver;
-import org.apache.camel.impl.engine.DefaultManagementNameStrategy;
-import org.apache.camel.impl.engine.DefaultMessageHistoryFactory;
-import org.apache.camel.impl.engine.DefaultNodeIdFactory;
-import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
-import org.apache.camel.impl.engine.DefaultPackageScanResourceResolver;
-import org.apache.camel.impl.engine.DefaultProcessorFactory;
-import org.apache.camel.impl.engine.DefaultReactiveExecutor;
-import org.apache.camel.impl.engine.DefaultRouteController;
-import org.apache.camel.impl.engine.DefaultShutdownStrategy;
-import org.apache.camel.impl.engine.DefaultStreamCachingStrategy;
-import org.apache.camel.impl.engine.DefaultTracer;
-import org.apache.camel.impl.engine.DefaultUnitOfWorkFactory;
-import org.apache.camel.impl.engine.DefaultUuidGenerator;
-import org.apache.camel.impl.engine.EndpointKey;
-import org.apache.camel.impl.engine.WebSpherePackageScanClassResolver;
-import org.apache.camel.impl.engine.BaseServiceResolver;
-import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
-import org.apache.camel.spi.AsyncProcessorAwaitManager;
-import org.apache.camel.spi.BeanIntrospection;
-import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
+import org.apache.camel.impl.engine.BaseRouteService;
+import org.apache.camel.impl.engine.SimpleCamelContext;
+import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.model.HystrixConfigurationDefinition;
+import org.apache.camel.model.Model;
+import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.Resilience4jConfigurationDefinition;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
+import org.apache.camel.model.rest.RestDefinition;
+import org.apache.camel.model.transformer.TransformerDefinition;
+import org.apache.camel.model.validator.ValidatorDefinition;
+import org.apache.camel.reifier.dataformat.DataFormatReifier;
 import org.apache.camel.spi.BeanRepository;
-import org.apache.camel.spi.CamelBeanPostProcessor;
-import org.apache.camel.spi.CamelContextNameStrategy;
-import org.apache.camel.spi.ClassResolver;
-import org.apache.camel.spi.ComponentResolver;
-import org.apache.camel.spi.ConfigurerResolver;
-import org.apache.camel.spi.DataFormatResolver;
-import org.apache.camel.spi.EndpointRegistry;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.ExecutorServiceManager;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.FactoryFinderResolver;
-import org.apache.camel.spi.HeadersMapFactory;
-import org.apache.camel.spi.InflightRepository;
-import org.apache.camel.spi.Injector;
-import org.apache.camel.spi.LanguageResolver;
-import org.apache.camel.spi.ManagementNameStrategy;
-import org.apache.camel.spi.MessageHistoryFactory;
-import org.apache.camel.spi.ModelJAXBContextFactory;
-import org.apache.camel.spi.ModelToXMLDumper;
-import org.apache.camel.spi.NodeIdFactory;
-import org.apache.camel.spi.PackageScanClassResolver;
-import org.apache.camel.spi.PackageScanResourceResolver;
-import org.apache.camel.spi.ProcessorFactory;
-import org.apache.camel.spi.PropertiesComponent;
-import org.apache.camel.spi.ReactiveExecutor;
 import org.apache.camel.spi.Registry;
-import org.apache.camel.spi.RestRegistryFactory;
-import org.apache.camel.spi.RouteController;
-import org.apache.camel.spi.ShutdownStrategy;
-import org.apache.camel.spi.StreamCachingStrategy;
-import org.apache.camel.spi.Tracer;
-import org.apache.camel.spi.TypeConverterRegistry;
-import org.apache.camel.spi.UnitOfWorkFactory;
-import org.apache.camel.spi.UuidGenerator;
-import org.apache.camel.spi.XMLRoutesDefinitionLoader;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.DefaultRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -101,17 +49,20 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the context used to configure routes and the policies to use.
  */
-public class DefaultCamelContext extends AbstractModelCamelContext {
+public abstract class DefaultCamelContext extends SimpleCamelContext implements ModelCamelContext {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultCamelContext.class);
 
+    private final Model model = new DefaultModel(this);
+
     /**
-     * Creates the {@link CamelContext} using {@link DefaultRegistry} as
-     * registry.
+     * Creates the {@link ModelCamelContext} using
+     * {@link org.apache.camel.support.DefaultRegistry} as registry.
      * <p/>
      * Use one of the other constructors to force use an explicit registry.
      */
     public DefaultCamelContext() {
+        this(true);
     }
 
     /**
@@ -123,290 +74,248 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
      * @param repository the bean repository.
      */
     public DefaultCamelContext(BeanRepository repository) {
-        super(new DefaultRegistry(repository));
+        this(new DefaultRegistry(repository));
     }
 
     /**
-     * Creates the {@link CamelContext} using the given registry
+     * Creates the {@link ModelCamelContext} using the given registry
      *
      * @param registry the registry
      */
     public DefaultCamelContext(Registry registry) {
-        super(registry);
+        this();
+        setRegistry(registry);
     }
 
-    /**
-     * Creates the {@link CamelContext} and allows to control whether the
-     * context should automatic initialize or not.
-     * <p/>
-     * This is used by some Camel components such as camel-cdi and
-     * camel-blueprint, however this constructor is not intended for regular
-     * Camel end users.
-     *
-     * @param init whether to automatic initialize.
-     */
     public DefaultCamelContext(boolean init) {
         super(init);
     }
 
     @Override
-    protected TypeConverter createTypeConverter() {
-        return new DefaultTypeConverter(this, getPackageScanClassResolver(), getInjector(),
-                getDefaultFactoryFinder(), isLoadTypeConverters());
+    public List<RouteDefinition> getRouteDefinitions() {
+        return model.getRouteDefinitions();
     }
 
     @Override
-    protected TypeConverterRegistry createTypeConverterRegistry() {
-        TypeConverter typeConverter = getTypeConverter();
-        // type converter is also registry so create type converter
-        if (typeConverter == null) {
-            typeConverter = createTypeConverter();
-        }
-        if (typeConverter instanceof TypeConverterRegistry) {
-            return (TypeConverterRegistry)typeConverter;
-        }
-        return null;
+    public RouteDefinition getRouteDefinition(String id) {
+        return model.getRouteDefinition(id);
     }
 
     @Override
-    protected Injector createInjector() {
-        FactoryFinder finder = getDefaultFactoryFinder();
-        return finder.newInstance("Injector", Injector.class).orElse(new DefaultInjector(this));
-    }
-
-    @Override
-    protected PropertiesComponent createPropertiesComponent() {
-        return new BaseServiceResolver<>(PropertiesComponent.FACTORY, PropertiesComponent.class)
-                .resolve(this)
-                .orElseGet(org.apache.camel.component.properties.PropertiesComponent::new);
+    public void addRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
+        if (isStarted() && !isAllowAddingNewRoutes()) {
+            throw new IllegalArgumentException("Adding new routes after CamelContext has been started is not allowed");
+        }
+        model.addRouteDefinitions(routeDefinitions);
     }
 
     @Override
-    protected CamelBeanPostProcessor createBeanPostProcessor() {
-        return new DefaultCamelBeanPostProcessor(this);
+    public void addRouteDefinition(RouteDefinition routeDefinition) throws Exception {
+        if (isStarted() && !isAllowAddingNewRoutes()) {
+            throw new IllegalArgumentException("Adding new routes after CamelContext has been started is not allowed");
+        }
+        model.addRouteDefinition(routeDefinition);
     }
 
     @Override
-    protected ComponentResolver createComponentResolver() {
-        return new DefaultComponentResolver();
+    public void removeRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
+        model.removeRouteDefinitions(routeDefinitions);
     }
 
     @Override
-    protected Registry createRegistry() {
-        return new DefaultRegistry();
+    public void removeRouteDefinition(RouteDefinition routeDefinition) throws Exception {
+        model.removeRouteDefinition(routeDefinition);
     }
 
     @Override
-    protected UuidGenerator createUuidGenerator() {
-        return new DefaultUuidGenerator();
+    public List<RestDefinition> getRestDefinitions() {
+        return model.getRestDefinitions();
     }
 
     @Override
-    protected ModelJAXBContextFactory createModelJAXBContextFactory() {
-        return new BaseServiceResolver<>(ModelJAXBContextFactory.FACTORY, ModelJAXBContextFactory.class)
-                .resolve(this)
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find ModelJAXBContextFactory on classpath. "
-                        + "Add camel-xml-jaxb to classpath."));
+    public void addRestDefinitions(Collection<RestDefinition> restDefinitions, boolean addToRoutes) throws Exception {
+        if (isStarted() && !isAllowAddingNewRoutes()) {
+            throw new IllegalArgumentException("Adding new routes after CamelContext has been started is not allowed");
+        }
+        model.addRestDefinitions(restDefinitions, addToRoutes);
     }
 
     @Override
-    protected NodeIdFactory createNodeIdFactory() {
-        return new DefaultNodeIdFactory();
+    public void setDataFormats(Map<String, DataFormatDefinition> dataFormats) {
+        model.setDataFormats(dataFormats);
     }
 
     @Override
-    protected FactoryFinderResolver createFactoryFinderResolver() {
-        return new DefaultFactoryFinderResolver();
+    public Map<String, DataFormatDefinition> getDataFormats() {
+        return model.getDataFormats();
     }
 
     @Override
-    protected ClassResolver createClassResolver() {
-        return new DefaultClassResolver(this);
+    public DataFormatDefinition resolveDataFormatDefinition(String name) {
+        return model.resolveDataFormatDefinition(name);
     }
 
     @Override
-    protected ProcessorFactory createProcessorFactory() {
-        return new DefaultProcessorFactory();
+    public ProcessorDefinition<?> getProcessorDefinition(String id) {
+        return model.getProcessorDefinition(id);
     }
 
     @Override
-    protected DataFormatResolver createDataFormatResolver() {
-        return new DefaultDataFormatResolver();
+    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) {
+        return model.getProcessorDefinition(id, type);
     }
 
     @Override
-    protected MessageHistoryFactory createMessageHistoryFactory() {
-        return new DefaultMessageHistoryFactory();
+    public void setValidators(List<ValidatorDefinition> validators) {
+        model.setValidators(validators);
     }
 
     @Override
-    protected InflightRepository createInflightRepository() {
-        return new DefaultInflightRepository();
+    public HystrixConfigurationDefinition getHystrixConfiguration(String id) {
+        return model.getHystrixConfiguration(id);
     }
 
     @Override
-    protected AsyncProcessorAwaitManager createAsyncProcessorAwaitManager() {
-        return new DefaultAsyncProcessorAwaitManager();
+    public void setHystrixConfiguration(HystrixConfigurationDefinition configuration) {
+        model.setHystrixConfiguration(configuration);
     }
 
     @Override
-    protected RouteController createRouteController() {
-        return new DefaultRouteController(this);
+    public void setHystrixConfigurations(List<HystrixConfigurationDefinition> configurations) {
+        model.setHystrixConfigurations(configurations);
     }
 
     @Override
-    protected HealthCheckRegistry createHealthCheckRegistry() {
-        return new DefaultHealthCheckRegistry(this);
+    public void addHystrixConfiguration(String id, HystrixConfigurationDefinition configuration) {
+        model.addHystrixConfiguration(id, configuration);
     }
 
     @Override
-    protected ShutdownStrategy createShutdownStrategy() {
-        return new DefaultShutdownStrategy(this);
+    public Resilience4jConfigurationDefinition getResilience4jConfiguration(String id) {
+        return model.getResilience4jConfiguration(id);
     }
 
     @Override
-    protected PackageScanClassResolver createPackageScanClassResolver() {
-        PackageScanClassResolver packageScanClassResolver;
-        // use WebSphere specific resolver if running on WebSphere
-        if (WebSpherePackageScanClassResolver.isWebSphereClassLoader(this.getClass().getClassLoader())) {
-            LOG.info("Using WebSphere specific PackageScanClassResolver");
-            packageScanClassResolver = new WebSpherePackageScanClassResolver("META-INF/services/org/apache/camel/TypeConverter");
-        } else {
-            packageScanClassResolver = new DefaultPackageScanClassResolver();
-        }
-        return packageScanClassResolver;
+    public void setResilience4jConfiguration(Resilience4jConfigurationDefinition configuration) {
+        model.setResilience4jConfiguration(configuration);
     }
 
     @Override
-    protected PackageScanResourceResolver createPackageScanResourceResolver() {
-        return new DefaultPackageScanResourceResolver();
+    public void setResilience4jConfigurations(List<Resilience4jConfigurationDefinition> configurations) {
+        model.setResilience4jConfigurations(configurations);
     }
 
     @Override
-    protected ExecutorServiceManager createExecutorServiceManager() {
-        return new DefaultExecutorServiceManager(this);
+    public void addResilience4jConfiguration(String id, Resilience4jConfigurationDefinition configuration) {
+        model.addResilience4jConfiguration(id, configuration);
     }
 
     @Override
-    protected UnitOfWorkFactory createUnitOfWorkFactory() {
-        return new DefaultUnitOfWorkFactory();
+    public List<ValidatorDefinition> getValidators() {
+        return model.getValidators();
     }
 
     @Override
-    protected RuntimeCamelCatalog createRuntimeCamelCatalog() {
-        return new BaseServiceResolver<>(RuntimeCamelCatalog.FACTORY, RuntimeCamelCatalog.class)
-                .resolve(this)
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find RuntimeCamelCatalog on classpath. "
-                        + "Add camel-core-catalog to classpath."));
+    public void setTransformers(List<TransformerDefinition> transformers) {
+        model.setTransformers(transformers);
     }
 
     @Override
-    protected CamelContextNameStrategy createCamelContextNameStrategy() {
-        return new DefaultCamelContextNameStrategy();
+    public List<TransformerDefinition> getTransformers() {
+        return model.getTransformers();
     }
 
     @Override
-    protected ManagementNameStrategy createManagementNameStrategy() {
-        return new DefaultManagementNameStrategy(this);
+    public ServiceCallConfigurationDefinition getServiceCallConfiguration(String serviceName) {
+        return model.getServiceCallConfiguration(serviceName);
     }
 
     @Override
-    protected HeadersMapFactory createHeadersMapFactory() {
-        return new BaseServiceResolver<>(HeadersMapFactory.FACTORY, HeadersMapFactory.class)
-                .resolve(this)
-                .orElseGet(DefaultHeadersMapFactory::new);
+    public void setServiceCallConfiguration(ServiceCallConfigurationDefinition configuration) {
+        model.setServiceCallConfiguration(configuration);
     }
 
     @Override
-    protected BeanProxyFactory createBeanProxyFactory() {
-        return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class)
-                .resolve(this)
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. "
-                        + "Add camel-bean to classpath."));
+    public void setServiceCallConfigurations(List<ServiceCallConfigurationDefinition> configurations) {
+        model.setServiceCallConfigurations(configurations);
     }
 
     @Override
-    protected BeanProcessorFactory createBeanProcessorFactory() {
-        return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class)
-                .resolve(this)
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. "
-                        + "Add camel-bean to classpath."));
+    public void addServiceCallConfiguration(String serviceName, ServiceCallConfigurationDefinition configuration) {
+        model.addServiceCallConfiguration(serviceName, configuration);
     }
 
     @Override
-    protected BeanIntrospection createBeanIntrospection() {
-        return new DefaultBeanIntrospection();
+    public void setRouteFilterPattern(String include, String exclude) {
+        model.setRouteFilterPattern(include, exclude);
     }
 
     @Override
-    protected XMLRoutesDefinitionLoader createXMLRoutesDefinitionLoader() {
-        return new BaseServiceResolver<>(XMLRoutesDefinitionLoader.FACTORY, XMLRoutesDefinitionLoader.class)
-                .resolve(this)
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find XMLRoutesDefinitionLoader on classpath. "
-                        + "Add either camel-xml-io or camel-xml-jaxb to classpath."));
+    public void setRouteFilter(Function<RouteDefinition, Boolean> filter) {
+        model.setRouteFilter(filter);
     }
 
     @Override
-    protected ModelToXMLDumper createModelToXMLDumper() {
-        return new BaseServiceResolver<>(ModelToXMLDumper.FACTORY, ModelToXMLDumper.class)
-                .resolve(this)
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find ModelToXMLDumper on classpath. "
-                        + "Add camel-xml-jaxb to classpath."));
+    public Function<RouteDefinition, Boolean> getRouteFilter() {
+        return model.getRouteFilter();
     }
 
     @Override
-    protected Tracer createTracer() {
-        Tracer tracer = null;
-        if (getRegistry() != null) {
-            // lookup in registry
-            Map<String, Tracer> map = getRegistry().findByTypeWithName(Tracer.class);
-            if (map.size() == 1) {
-                tracer = map.values().iterator().next();
-            }
-        }
-        if (tracer == null) {
-            tracer = getExtension(Tracer.class);
-        }
-        if (tracer == null) {
-            tracer = new DefaultTracer();
-            setExtension(Tracer.class, tracer);
-        }
-        return tracer;
+    protected void doStartStandardServices() {
+        super.doStartStandardServices();
     }
 
     @Override
-    protected LanguageResolver createLanguageResolver() {
-        return new DefaultLanguageResolver();
+    protected void doStartEagerServices() {
+        getExtension(HealthCheckRegistry.class);
+        super.doStartEagerServices();
     }
 
     @Override
-    protected ConfigurerResolver createConfigurerResolver() {
-        return new DefaultConfigurerResolver();
+    protected void bindDataFormats() throws Exception {
+        // eager lookup data formats and bind to registry so the dataformats can
+        // be looked up and used
+        for (Map.Entry<String, DataFormatDefinition> e : model.getDataFormats().entrySet()) {
+            String id = e.getKey();
+            DataFormatDefinition def = e.getValue();
+            LOG.debug("Creating Dataformat with id: {} and definition: {}", id, def);
+            DataFormat df = DataFormatReifier.reifier(this, def).createDataFormat();
+            addService(df, true);
+            getRegistry().bind(id, df);
+        }
     }
 
     @Override
-    protected RestRegistryFactory createRestRegistryFactory() {
-        return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class)
-                .resolve(this)
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. "
-                        + "Add camel-rest to classpath."));
+    protected synchronized void shutdownRouteService(BaseRouteService routeService) throws Exception {
+        if (routeService instanceof RouteService) {
+            model.getRouteDefinitions().remove(((RouteService)routeService).getRouteDefinition());
+        }
+        super.shutdownRouteService(routeService);
     }
 
     @Override
-    protected EndpointRegistry<EndpointKey> createEndpointRegistry(Map<EndpointKey, Endpoint> endpoints) {
-        return new DefaultEndpointRegistry(this, endpoints);
+    protected boolean isStreamCachingInUse() throws Exception {
+        boolean streamCachingInUse = super.isStreamCachingInUse();
+        if (!streamCachingInUse) {
+            for (RouteDefinition route : model.getRouteDefinitions()) {
+                Boolean routeCache = CamelContextHelper.parseBoolean(this, route.getStreamCache());
+                if (routeCache != null && routeCache) {
+                    streamCachingInUse = true;
+                    break;
+                }
+            }
+        }
+        return streamCachingInUse;
     }
 
     @Override
-    protected StreamCachingStrategy createStreamCachingStrategy() {
-        return new DefaultStreamCachingStrategy();
+    public void startRouteDefinitions() throws Exception {
+        model.startRouteDefinitions();
     }
 
     @Override
-    protected ReactiveExecutor createReactiveExecutor() {
-        return new BaseServiceResolver<>(ReactiveExecutor.FACTORY, ReactiveExecutor.class)
-                .resolve(this)
-                .orElseGet(DefaultReactiveExecutor::new);
+    protected ExecutorServiceManager createExecutorServiceManager() {
+        return new DefaultExecutorServiceManager(this);
     }
 
 }


[camel] 32/32: CAMEL-13440: Remove RouteContext and further cleanup

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 916d7967d3ba9bd715bd560033a7c99c5590080c
Merge: 8405dc8 b63ab02
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 09:56:28 2020 +0100

    CAMEL-13440: Remove RouteContext and further cleanup

 .../catalog/karaf/KarafRuntimeProviderTest.java    |   2 +
 .../apache/camel/component/http/HttpComponent.java |   2 +-
 .../camel-jaxb/src/main/docs/jaxb-dataformat.adoc  |   4 +-
 .../org/apache/camel/component/kafka/kafka.json    |   4 +-
 .../camel-kafka/src/main/docs/kafka-component.adoc |   4 +-
 .../camel/component/kafka/KafkaConfiguration.java  |   2 +-
 .../component/snakeyaml/SnakeYAMLDataFormat.java   |  35 +-
 .../custom/CustomClassLoaderConstructor.java       |  75 +--
 .../component/snakeyaml/custom/CustomComposer.java | 276 --------
 .../snakeyaml/custom/CustomConstructor.java        |  83 ---
 .../snakeyaml/custom/CustomSafeConstructor.java    |  83 ---
 .../camel/component/snakeyaml/custom/Yaml.java     | 715 ---------------------
 .../component/snakeyaml/SnakeYAMLDoSTest.java      |   2 +-
 components/camel-test-junit5/pom.xml               |   4 +
 core/camel-allcomponents/pom.xml                   |   4 +
 .../dsl/KafkaComponentBuilderFactory.java          |   2 +-
 core/camel-core-languages/pom.xml                  |   2 +
 .../endpoint/dsl/KafkaEndpointBuilderFactory.java  |   4 +-
 .../java/org/apache/camel/util/CamelURIParser.java | 111 ++++
 .../java/org/apache/camel/util/URISupport.java     |  64 ++
 .../camel/util/UnsafeUriCharactersEncoder.java     |  31 +-
 .../org/apache/camel/util/CamelURIParserTest.java  | 123 ++++
 .../java/org/apache/camel/util/URISupportTest.java |  11 +
 core/camel-xml-jaxp/pom.xml                        |   1 +
 .../services/org/apache/camel/language.properties  |   7 +
 .../camel/language/xtokenizer/xtokenize.json       |  25 +
 docs/components/modules/ROOT/pages/index.adoc      |   4 +-
 .../modules/ROOT/pages/jaxb-dataformat.adoc        |   4 +-
 .../modules/ROOT/pages/kafka-component.adoc        |   4 +-
 parent/pom.xml                                     |   6 +-
 .../apache/camel/itest/jmh/NormalizeUriTest.java   |  45 +-
 .../maven/packaging/PrepareCatalogKarafMojo.java   |   2 +
 32 files changed, 479 insertions(+), 1262 deletions(-)



[camel] 12/32: Explicitely call the xml generation mojo

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 af3034eadcee86e0beabfcdb869642536feb0fa7
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 15:36:54 2020 +0100

    Explicitely call the xml generation mojo
---
 core/camel-xml-io/pom.xml                                    | 12 +++++++-----
 .../java/org/apache/camel/maven/packaging/GenerateMojo.java  |  2 --
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/core/camel-xml-io/pom.xml b/core/camel-xml-io/pom.xml
index 59cf830..4dea30f 100644
--- a/core/camel-xml-io/pom.xml
+++ b/core/camel-xml-io/pom.xml
@@ -58,13 +58,15 @@
     <build>
         <plugins>
             <plugin>
-                <!-- The non generated code depends on the generated code,
-                     so skip the first compilation phase -->
-                <artifactId>maven-compiler-plugin</artifactId>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-package-maven-plugin</artifactId>
                 <executions>
                     <execution>
-                        <id>default-compile</id>
-                        <phase>none</phase>
+                        <id>generate-sources</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>generate-xml-parser</goal>
+                        </goals>
                     </execution>
                 </executions>
             </plugin>
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
index ca35ccdb..dba8ac7 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
@@ -60,8 +60,6 @@ public class GenerateMojo extends AbstractGenerateMojo {
         invoke(ComponentDslMojo.class);
         // update-readme
         invoke(UpdateReadmeMojo.class);
-        // generate-xml-parser
-        invoke(ModelXmlParserGeneratorMojo.class);
     }
 
 }


[camel] 23/32: Move DefaultModelJAXBContextFactory to camel-xml-jaxb

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 73502c025c1001de48610d930452d5302106aa66
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 21:42:22 2020 +0100

    Move DefaultModelJAXBContextFactory to camel-xml-jaxb
---
 components/camel-blueprint/pom.xml                                   | 4 ++++
 .../org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java | 2 +-
 .../java/org/apache/camel/spring/SpringModelJAXBContextFactory.java  | 2 +-
 .../java/org/apache/camel/spring/CamelContextFactoryBeanTest.java    | 2 +-
 .../src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java  | 5 +++++
 .../src/main/java/org/apache/camel/impl/DefaultCamelContext.java     | 5 ++++-
 .../src/test/java/org/apache/camel/model/XmlTestSupport.java         | 2 +-
 .../META-INF/services/org/apache/camel/model-jaxbcontext-factory     | 2 ++
 .../org/apache/camel/xml/jaxb}/DefaultModelJAXBContextFactory.java   | 4 +++-
 .../java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java | 2 +-
 10 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/components/camel-blueprint/pom.xml b/components/camel-blueprint/pom.xml
index f351356..173f06c 100644
--- a/components/camel-blueprint/pom.xml
+++ b/components/camel-blueprint/pom.xml
@@ -56,6 +56,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-xml-jaxb</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-bean</artifactId>
         </dependency>
         <dependency>
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java
index 07259b5..dd296bf 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java
@@ -20,7 +20,7 @@ import java.util.LinkedHashSet;
 import java.util.Set;
 
 import org.apache.camel.core.xml.AbstractCamelContextFactoryBean;
-import org.apache.camel.impl.DefaultModelJAXBContextFactory;
+import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory;
 import org.apache.camel.util.blueprint.SSLContextParametersFactoryBean;
 
 public class BlueprintModelJAXBContextFactory extends DefaultModelJAXBContextFactory {
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java
index 76a8066..3b39cc1 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.spring;
 
-import org.apache.camel.impl.DefaultModelJAXBContextFactory;
+import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory;
 
 public class SpringModelJAXBContextFactory extends DefaultModelJAXBContextFactory {
 
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java
index 6392dba..56b9898 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java
@@ -20,7 +20,7 @@ import java.net.URL;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.apache.camel.impl.DefaultModelJAXBContextFactory;
+import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory;
 import org.apache.camel.impl.engine.DefaultUuidGenerator;
 import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.UuidGenerator;
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
index 88578c6..7098c51 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
@@ -25,6 +25,11 @@ import javax.xml.bind.JAXBException;
 public interface ModelJAXBContextFactory {
 
     /**
+     * Service factory key.
+     */
+    String FACTORY = "model-jaxbcontext-factory";
+
+    /**
      * Creates a new {@link javax.xml.bind.JAXBContext} used for loading the Camel model
      *
      * @return a new JAXBContext
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index ede62b8..5edb552 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -218,7 +218,10 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
 
     @Override
     protected ModelJAXBContextFactory createModelJAXBContextFactory() {
-        return new DefaultModelJAXBContextFactory();
+        return new BaseServiceResolver<>(ModelJAXBContextFactory.FACTORY, ModelJAXBContextFactory.class)
+                .resolve(this)
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find ModelJAXBContextFactory on classpath. "
+                        + "Add camel-xml-jaxb to classpath."));
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java b/core/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java
index ee9ee34..a143125 100644
--- a/core/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java
+++ b/core/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java
@@ -23,7 +23,7 @@ import javax.xml.bind.JAXBException;
 import javax.xml.bind.Unmarshaller;
 
 import org.apache.camel.TestSupport;
-import org.apache.camel.impl.DefaultModelJAXBContextFactory;
+import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory;
 import org.apache.camel.model.rest.RestContainer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/model-jaxbcontext-factory b/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/model-jaxbcontext-factory
new file mode 100644
index 0000000..2b9714b
--- /dev/null
+++ b/core/camel-xml-jaxb/src/generated/resources/META-INF/services/org/apache/camel/model-jaxbcontext-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/DefaultModelJAXBContextFactory.java
similarity index 92%
rename from core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java
rename to core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/DefaultModelJAXBContextFactory.java
index cdd53cb..1ec86ef 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java
+++ b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/DefaultModelJAXBContextFactory.java
@@ -14,18 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.xml.jaxb;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 
 import org.apache.camel.model.Constants;
 import org.apache.camel.spi.ModelJAXBContextFactory;
+import org.apache.camel.spi.annotations.JdkService;
 
 /**
  * Default implementation of
  * {@link org.apache.camel.spi.ModelJAXBContextFactory}.
  */
+@JdkService(ModelJAXBContextFactory.FACTORY)
 public class DefaultModelJAXBContextFactory implements ModelJAXBContextFactory {
 
     private volatile JAXBContext context;
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java
index f97da93..e6a2f73 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java
@@ -20,7 +20,7 @@ import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
 
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultModelJAXBContextFactory;
+import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.test.spring.CamelSpringTestSupport;
 import org.junit.Test;


[camel] 17/32: Use doAddService for newly created services

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 941e2ae92619dd8b8d2e5536036f6ddf0cceaafb
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 21:01:43 2020 +0100

    Use doAddService for newly created services
---
 .../apache/camel/impl/engine/AbstractCamelContext.java | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 160b839..d494187 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -4310,7 +4310,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
     }
 
     public void setXMLRoutesDefinitionLoader(XMLRoutesDefinitionLoader xmlRoutesDefinitionLoader) {
-        this.xmlRoutesDefinitionLoader = xmlRoutesDefinitionLoader;
+        this.xmlRoutesDefinitionLoader = doAddService(xmlRoutesDefinitionLoader);
     }
 
     public ModelToXMLDumper getModelToXMLDumper() {
@@ -4325,7 +4325,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
     }
 
     public void setModelToXMLDumper(ModelToXMLDumper modelToXMLDumper) {
-        this.modelToXMLDumper = modelToXMLDumper;
+        this.modelToXMLDumper = doAddService(modelToXMLDumper);
     }
 
     @Override
@@ -4342,7 +4342,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
 
     @Override
     public void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog) {
-        this.runtimeCamelCatalog = runtimeCamelCatalog;
+        this.runtimeCamelCatalog = doAddService(runtimeCamelCatalog);
     }
 
     @Override
@@ -4379,25 +4379,33 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext
         if (beanProxyFactory == null) {
             synchronized (lock) {
                 if (beanProxyFactory == null) {
-                    beanProxyFactory = createBeanProxyFactory();
+                    setBeanProxyFactory(createBeanProxyFactory());
                 }
             }
         }
         return beanProxyFactory;
     }
 
+    public void setBeanProxyFactory(BeanProxyFactory beanProxyFactory) {
+        this.beanProxyFactory = doAddService(beanProxyFactory);
+    }
+
     @Override
     public BeanProcessorFactory getBeanProcessorFactory() {
         if (beanProcessorFactory == null) {
             synchronized (lock) {
                 if (beanProcessorFactory == null) {
-                    beanProcessorFactory = createBeanProcessorFactory();
+                    setBeanProcessorFactory(createBeanProcessorFactory());
                 }
             }
         }
         return beanProcessorFactory;
     }
 
+    public void setBeanProcessorFactory(BeanProcessorFactory beanProcessorFactory) {
+        this.beanProcessorFactory = doAddService(beanProcessorFactory);
+    }
+
     protected Map<String, BaseRouteService> getRouteServices() {
         return routeServices;
     }


[camel] 25/32: Completely remove the deprecated JndiRegistry

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 9b24690cdc2e9905c0f42e048c9d02e42ddbe438
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 4 00:02:05 2020 +0100

    Completely remove the deprecated JndiRegistry
---
 .../camel/component/fhir/FhirConfigurationIT.java  |  2 +-
 .../google/calendar/CalendarConfigurationTest.java |  2 +-
 .../google/drive/DriveConfigurationTest.java       |  2 +-
 .../google/mail/GmailConfigurationTest.java        |  2 +-
 .../google/sheets/SheetsConfigurationTest.java     |  2 +-
 .../camel/component/netty/NettyRedeliveryTest.java |  2 +-
 .../apache/camel/test/junit4/CamelTestSupport.java | 71 +------------------
 .../org/apache/camel/impl/DefaultCamelContext.java | 15 ----
 .../java/org/apache/camel/impl/JndiRegistry.java   | 61 ----------------
 .../bean/BeanLookupUsingJndiRegistryIssueTest.java |  4 +-
 .../apache/camel/impl/GetRegistryAsTypeTest.java   |  5 +-
 .../org/apache/camel/impl/JndiRegistryTest.java    | 81 ----------------------
 .../impl/LifecycleStrategyFailOnStartupTest.java   |  3 +-
 .../camel/impl/LifecycleStrategyServiceTest.java   |  3 +-
 .../camel/impl/MultipleLifecycleStrategyTest.java  |  3 +-
 15 files changed, 16 insertions(+), 242 deletions(-)

diff --git a/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java b/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java
index 4f4a212..e3d0f85 100644
--- a/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java
+++ b/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java
@@ -43,7 +43,7 @@ public class FhirConfigurationIT extends AbstractFhirTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        final CamelContext context = new DefaultCamelContext(createRegistry());
+        final CamelContext context = new DefaultCamelContext(createCamelRegistry());
 
         // add FhirComponent to Camel context but don't set up componentConfiguration
         final FhirComponent component = new FhirComponent(context);
diff --git a/components/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarConfigurationTest.java b/components/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarConfigurationTest.java
index 5ea1e26..ff549d9 100644
--- a/components/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarConfigurationTest.java
+++ b/components/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarConfigurationTest.java
@@ -45,7 +45,7 @@ public class CalendarConfigurationTest extends AbstractGoogleCalendarTestSupport
     
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        final CamelContext context = new DefaultCamelContext(createRegistry());
+        final CamelContext context = new DefaultCamelContext(createCamelRegistry());
 
         // add GoogleCalendarComponent to Camel context but don't set up configuration
         final GoogleCalendarComponent component = new GoogleCalendarComponent(context);
diff --git a/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveConfigurationTest.java b/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveConfigurationTest.java
index 70984f5..f2f94fe 100644
--- a/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveConfigurationTest.java
+++ b/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveConfigurationTest.java
@@ -33,7 +33,7 @@ public class DriveConfigurationTest extends AbstractGoogleDriveTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        final CamelContext context = new DefaultCamelContext(createRegistry());
+        final CamelContext context = new DefaultCamelContext(createCamelRegistry());
 
         // add GoogleDriveComponent to Camel context but don't set up configuration
         final GoogleDriveComponent component = new GoogleDriveComponent(context);
diff --git a/components/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailConfigurationTest.java b/components/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailConfigurationTest.java
index bb8a98e..4a00e0b 100644
--- a/components/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailConfigurationTest.java
+++ b/components/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailConfigurationTest.java
@@ -38,7 +38,7 @@ public class GmailConfigurationTest extends AbstractGoogleMailTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        final CamelContext context = new DefaultCamelContext(createRegistry());
+        final CamelContext context = new DefaultCamelContext(createCamelRegistry());
 
         // add GoogleMailComponent to Camel context but don't set up configuration
         final GoogleMailComponent component = new GoogleMailComponent(context);
diff --git a/components/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsConfigurationTest.java b/components/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsConfigurationTest.java
index 2275ba1..2fd2c08 100644
--- a/components/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsConfigurationTest.java
+++ b/components/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsConfigurationTest.java
@@ -31,7 +31,7 @@ public class SheetsConfigurationTest extends CamelTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        final CamelContext context = new DefaultCamelContext(createRegistry());
+        final CamelContext context = new DefaultCamelContext(createCamelRegistry());
 
         // add GoogleSheetsComponent to Camel context but don't set up configuration
         final GoogleSheetsComponent component = new GoogleSheetsComponent(context);
diff --git a/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyRedeliveryTest.java b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyRedeliveryTest.java
index 8829d9d..f3e0f66 100644
--- a/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyRedeliveryTest.java
+++ b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyRedeliveryTest.java
@@ -135,7 +135,7 @@ public class NettyRedeliveryTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         // Override the error handler executor service such that we can track the tasks created
-        CamelContext context = new DefaultCamelContext(createRegistry()) {
+        CamelContext context = new DefaultCamelContext(createCamelRegistry()) {
             @Override
             public ScheduledExecutorService getErrorHandlerExecutorService() {
                 return getScheduledExecutorService();
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 e9252e4..a515576 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
@@ -26,7 +26,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -42,8 +41,6 @@ import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
-import javax.naming.Context;
-import javax.naming.InitialContext;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
@@ -72,7 +69,6 @@ import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.impl.engine.InterceptSendToMockEndpointStrategy;
 import org.apache.camel.model.Model;
 import org.apache.camel.model.ModelCamelContext;
@@ -827,22 +823,7 @@ public abstract class CamelTestSupport extends TestSupport {
 
     protected CamelContext createCamelContext() throws Exception {
         // for backwards compatibility
-        Registry registry = createRegistry();
-        if (registry instanceof FakeJndiRegistry) {
-            boolean inUse = ((FakeJndiRegistry) registry).isInUse();
-            if (!inUse) {
-                registry = null;
-            }
-        }
-        if (registry != null) {
-            String msg = "createRegistry() from camel-test is deprecated. Use createCamelRegistry if you want to control which registry to use, however"
-                    + " if you need to bind beans to the registry then this is possible already with the bind method on registry,"
-                    + " and there is no need to override this method.";
-            LOG.warn(msg);
-        } else {
-            registry = createCamelRegistry();
-        }
-
+        Registry registry = createCamelRegistry();
         CamelContext context;
         if (registry != null) {
             context = new DefaultCamelContext(registry);
@@ -870,56 +851,6 @@ public abstract class CamelTestSupport extends TestSupport {
     }
 
     /**
-     * @deprecated use createCamelRegistry if you want to control which registry to use, however
-     * if you need to bind beans to the registry then this is possible already with the bind method on registry,
-     * and there is no need to override this method.
-     */
-    @Deprecated
-    protected JndiRegistry createRegistry() throws Exception {
-        return new FakeJndiRegistry(createJndiContext());
-    }
-
-    /**
-     * @deprecated use createCamelRegistry if you want to control which registry to use, however
-     * if you need to bind beans to the registry then this is possible already with the bind method on registry,
-     * and there is no need to use JndiRegistry and override this method.
-     */
-    @Deprecated
-    protected Context createJndiContext() throws Exception {
-        Properties properties = new Properties();
-
-        // jndi.properties is optional
-        InputStream in = getClass().getClassLoader().getResourceAsStream("jndi.properties");
-        if (in != null) {
-            LOG.debug("Using jndi.properties from classpath root");
-            properties.load(in);
-        } else {
-            properties.put("java.naming.factory.initial", "org.apache.camel.support.jndi.CamelInitialContextFactory");
-        }
-        return new InitialContext(new Hashtable<>(properties));
-    }
-
-    private class FakeJndiRegistry extends JndiRegistry {
-
-        private boolean inUse;
-
-        public FakeJndiRegistry(Context context) {
-            super(context);
-        }
-
-        @Override
-        public void bind(String name, Object object) {
-            super.bind(name, object);
-            inUse = true;
-        }
-
-        public boolean isInUse() {
-            // only if the end user bind beans then its in use
-            return inUse;
-        }
-    }
-
-    /**
      * Factory method which derived classes can use to create a {@link RouteBuilder}
      * to define the routes for testing
      */
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 5edb552..6fc27c8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -18,8 +18,6 @@ package org.apache.camel.impl;
 
 import java.util.Map;
 
-import javax.naming.Context;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.TypeConverter;
@@ -129,19 +127,6 @@ public class DefaultCamelContext extends AbstractModelCamelContext {
     }
 
     /**
-     * Creates the {@link CamelContext} using the given JNDI context as the
-     * registry
-     *
-     * @param jndiContext the JNDI context
-     * @deprecated create a new {@link JndiRegistry} and use the constructor
-     *             that accepts this registry.
-     */
-    @Deprecated
-    public DefaultCamelContext(Context jndiContext) {
-        this(new JndiRegistry(jndiContext));
-    }
-
-    /**
      * Creates the {@link CamelContext} using the given registry
      *
      * @param registry the registry
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/JndiRegistry.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/JndiRegistry.java
deleted file mode 100644
index d79965b..0000000
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/JndiRegistry.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.naming.NamingException;
-
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.Registry;
-import org.apache.camel.support.jndi.JndiBeanRepository;
-
-/**
- * A {@link Registry} implementation which looks up the objects in JNDI
- *
- * @deprecated use {@link JndiBeanRepository} instead.
- */
-@Deprecated
-public class JndiRegistry extends JndiBeanRepository implements Registry {
-
-    public JndiRegistry() {
-    }
-
-    public JndiRegistry(Map environment) {
-        super(environment);
-    }
-
-    public JndiRegistry(Context context) {
-        super(context);
-    }
-
-    public JndiRegistry(boolean standalone) {
-        super(standalone);
-    }
-
-    @Override
-    public void bind(String id, Class<?> type, Object bean) throws RuntimeCamelException {
-        try {
-            Object object = wrap(bean);
-            getContext().bind(id, object);
-        } catch (NamingException e) {
-            throw new RuntimeCamelException(e);
-        }
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLookupUsingJndiRegistryIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLookupUsingJndiRegistryIssueTest.java
index 799b8c1..30627bc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLookupUsingJndiRegistryIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanLookupUsingJndiRegistryIssueTest.java
@@ -19,6 +19,8 @@ package org.apache.camel.component.bean;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.apache.camel.support.jndi.JndiContext;
 import org.junit.Assert;
 import org.junit.Test;
@@ -30,7 +32,7 @@ public class BeanLookupUsingJndiRegistryIssueTest extends Assert {
         JndiContext jndi = new JndiContext();
         jndi.bind("foo", new MyOtherDummyBean());
 
-        CamelContext camel = new DefaultCamelContext(jndi);
+        CamelContext camel = new DefaultCamelContext(new DefaultRegistry(new JndiBeanRepository(jndi)));
         camel.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/GetRegistryAsTypeTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/GetRegistryAsTypeTest.java
index 7bfc37e..1b5f969 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/GetRegistryAsTypeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/GetRegistryAsTypeTest.java
@@ -21,6 +21,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.support.DefaultRegistry;
 import org.apache.camel.support.SimpleRegistry;
+import org.apache.camel.support.jndi.JndiBeanRepository;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -35,7 +36,7 @@ public class GetRegistryAsTypeTest extends Assert {
         assertNotNull(context.getRegistry());
 
         assertNull(context.getRegistry(Map.class));
-        assertNull(context.getRegistry(JndiRegistry.class));
+        assertNull(context.getRegistry(JndiBeanRepository.class));
         assertNull(context.getRegistry(SimpleRegistry.class));
 
         context.stop();
@@ -51,7 +52,7 @@ public class GetRegistryAsTypeTest extends Assert {
 
         // simple extends Map
         assertNotNull(context.getRegistry(Map.class));
-        assertNull(context.getRegistry(JndiRegistry.class));
+        assertNull(context.getRegistry(JndiBeanRepository.class));
 
         context.stop();
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java
deleted file mode 100644
index 4c995ad..0000000
--- a/core/camel-core/src/test/java/org/apache/camel/impl/JndiRegistryTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.language.simple.SimpleLanguage;
-import org.apache.camel.spi.Language;
-import org.apache.camel.support.jndi.JndiTest;
-import org.junit.Assert;
-import org.junit.Test;
-
-@SuppressWarnings("deprecation")
-public class JndiRegistryTest extends Assert {
-
-    @Test
-    public void testLookupByType() throws Exception {
-        JndiRegistry jndi = new JndiRegistry(JndiTest.createInitialContext());
-        jndi.bind("foo", new SimpleLanguage());
-        jndi.bind("bar", "Hello bar");
-
-        assertEquals("Hello bar", jndi.lookupByName("bar"));
-        assertEquals("Hello bar", jndi.lookupByName("bar"));
-        assertEquals("Hello bar", jndi.lookupByNameAndType("bar", String.class));
-        assertNull(jndi.lookupByName("unknown"));
-        assertNull(jndi.lookupByName("unknown"));
-
-        try {
-            assertNull(jndi.lookupByNameAndType("bar", Language.class));
-            fail("Should throw exception");
-        } catch (NoSuchBeanException e) {
-            // expected
-        }
-
-        assertNotNull(jndi.lookupByNameAndType("foo", Language.class));
-        assertNotNull(jndi.lookupByNameAndType("foo", SimpleLanguage.class));
-        assertSame(jndi.lookupByNameAndType("foo", Language.class), jndi.lookupByNameAndType("foo", SimpleLanguage.class));
-
-        Map<String, ?> set = jndi.findByTypeWithName(Language.class);
-        assertNotNull(set);
-        assertEquals(1, set.size());
-
-        String key = set.keySet().iterator().next();
-        assertEquals("foo", key);
-        assertSame(jndi.lookupByName("foo"), set.values().iterator().next());
-    }
-
-    @Test
-    public void testStandalone() throws Exception {
-        JndiRegistry jndi = new JndiRegistry(true);
-        jndi.bind("bar", "Hello bar");
-        assertEquals("Hello bar", jndi.lookupByName("bar"));
-    }
-
-    @Test
-    public void testCamelContextFactory() throws Exception {
-        Map<Object, Object> env = new HashMap<>();
-        env.put("java.naming.factory.initial", "org.apache.camel.support.jndi.CamelInitialContextFactory");
-
-        JndiRegistry jndi = new JndiRegistry(env);
-        jndi.bind("bar", "Hello bar");
-        assertEquals("Hello bar", jndi.lookupByName("bar"));
-    }
-
-}
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java
index bdd6c4a..8a73d24 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java
@@ -19,7 +19,6 @@ package org.apache.camel.impl;
 import org.apache.camel.CamelContext;
 import org.apache.camel.TestSupport;
 import org.apache.camel.VetoCamelContextStartException;
-import org.apache.camel.support.jndi.JndiContext;
 import org.junit.Test;
 
 public class LifecycleStrategyFailOnStartupTest extends TestSupport {
@@ -27,7 +26,7 @@ public class LifecycleStrategyFailOnStartupTest extends TestSupport {
     private MyLifecycleStrategy dummy1 = new MyLifecycleStrategy();
 
     protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = new DefaultCamelContext(new JndiContext());
+        CamelContext context = new DefaultCamelContext();
         context.addLifecycleStrategy(dummy1);
         return context;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java
index 2cc0072..9625c9f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/LifecycleStrategyServiceTest.java
@@ -19,7 +19,6 @@ package org.apache.camel.impl;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Service;
 import org.apache.camel.TestSupport;
-import org.apache.camel.support.jndi.JndiContext;
 import org.junit.Test;
 
 public class LifecycleStrategyServiceTest extends TestSupport {
@@ -27,7 +26,7 @@ public class LifecycleStrategyServiceTest extends TestSupport {
     private MyLifecycleStrategy dummy1 = new MyLifecycleStrategy();
 
     protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = new DefaultCamelContext(new JndiContext());
+        CamelContext context = new DefaultCamelContext();
         context.addLifecycleStrategy(dummy1);
         return context;
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
index b636e2e..7a34a4c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
@@ -23,7 +23,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.TestSupport;
 import org.apache.camel.component.log.LogComponent;
-import org.apache.camel.support.jndi.JndiContext;
 import org.junit.Test;
 
 public class MultipleLifecycleStrategyTest extends TestSupport {
@@ -32,7 +31,7 @@ public class MultipleLifecycleStrategyTest extends TestSupport {
     private DummyLifecycleStrategy dummy2 = new DummyLifecycleStrategy();
 
     protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = new DefaultCamelContext(new JndiContext());
+        CamelContext context = new DefaultCamelContext();
         context.addLifecycleStrategy(dummy1);
         context.addLifecycleStrategy(dummy2);
         return context;


[camel] 13/32: Remove generated legal files

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 e86e736c89d89b6aba1d0b81ed9736fe79a0a74d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 16:29:49 2020 +0100

    Remove generated legal files
---
 .../src/main/resources/META-INF/LICENSE.txt        | 203 ---------------------
 .../src/main/resources/META-INF/NOTICE.txt         |  15 --
 2 files changed, 218 deletions(-)

diff --git a/core/camel-xml-jaxb/src/main/resources/META-INF/LICENSE.txt b/core/camel-xml-jaxb/src/main/resources/META-INF/LICENSE.txt
deleted file mode 100644
index 6b0b127..0000000
--- a/core/camel-xml-jaxb/src/main/resources/META-INF/LICENSE.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
diff --git a/core/camel-xml-jaxb/src/main/resources/META-INF/NOTICE.txt b/core/camel-xml-jaxb/src/main/resources/META-INF/NOTICE.txt
deleted file mode 100644
index 8547fe7..0000000
--- a/core/camel-xml-jaxb/src/main/resources/META-INF/NOTICE.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Apache Camel distribution.                    ==
-   =========================================================================
-
-   This product includes software developed by
-   The Apache Software Foundation (http://www.apache.org/).
-
-   This product includes software developed by the Indiana
-   University Extreme! Lab.  For further information please visit
-   http://www.extreme.indiana.edu/.
-
-   Please read the different LICENSE files present in the licenses directory of
-   this distribution.


[camel] 10/32: Use NamedNode instead of RouteDefinition as in the RoutePolicy

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 8f1441eb3af218a1554404d02933d319d4846bf2
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Mar 3 14:20:36 2020 +0100

    Use NamedNode instead of RouteDefinition as in the RoutePolicy
---
 .../org/apache/camel/impl/cluster/ClusteredRouteFilter.java    |  4 ++--
 .../org/apache/camel/impl/cluster/ClusteredRouteFilters.java   | 10 ++++++----
 .../apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java |  3 ++-
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
index 67387a2..85ddf48 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
@@ -17,7 +17,7 @@
 package org.apache.camel.impl.cluster;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.NamedNode;
 
 @FunctionalInterface
 public interface ClusteredRouteFilter {
@@ -29,5 +29,5 @@ public interface ClusteredRouteFilter {
      * @param route the route definition
      * @return true if the route should be included
      */
-    boolean test(CamelContext camelContext, String routeId, RouteDefinition route);
+    boolean test(CamelContext camelContext, String routeId, NamedNode route);
 }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilters.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilters.java
index ae96925..278f506 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilters.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilters.java
@@ -22,6 +22,7 @@ import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.support.CamelContextHelper;
@@ -32,13 +33,14 @@ public final class ClusteredRouteFilters {
 
     public static final class IsAutoStartup implements ClusteredRouteFilter {
         @Override
-        public boolean test(CamelContext camelContext, String routeId, RouteDefinition route) {
+        public boolean test(CamelContext camelContext, String routeId, NamedNode route) {
             try {
-                if (route.getAutoStartup() == null) {
+                String autoStartup = ((RouteDefinition) route).getAutoStartup();
+                if (autoStartup == null) {
                     // should auto startup by default
                     return true;
                 }
-                Boolean isAutoStartup = CamelContextHelper.parseBoolean(camelContext, route.getAutoStartup());
+                Boolean isAutoStartup = CamelContextHelper.parseBoolean(camelContext, autoStartup);
                 return isAutoStartup != null && isAutoStartup;
             } catch (Exception e) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(e);
@@ -58,7 +60,7 @@ public final class ClusteredRouteFilters {
         }
 
         @Override
-        public boolean test(CamelContext camelContext, String routeId, RouteDefinition route) {
+        public boolean test(CamelContext camelContext, String routeId, NamedNode route) {
             return !names.contains(routeId);
         }
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
index 2d9e01c..f3c87a0 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
@@ -60,7 +60,8 @@ public class ClusteredRoutePolicyFactory implements RoutePolicyFactory {
     public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
         try {
             return clusterService != null
-                ? ClusteredRoutePolicy.forNamespace(clusterService, namespace) : ClusteredRoutePolicy.forNamespace(camelContext, clusterServiceSelector, namespace);
+                ? ClusteredRoutePolicy.forNamespace(clusterService, namespace)
+                : ClusteredRoutePolicy.forNamespace(camelContext, clusterServiceSelector, namespace);
         } catch (Exception e) {
             throw new RuntimeCamelException(e);
         }