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 2018/10/12 11:26:04 UTC

[camel] branch sandbox/camel-3.x updated (8956377 -> daa5f9a)

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

gnodet pushed a change to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git.


 discard 8956377  Extract camel-util and camel-api modules from camel-core
 discard eb7faf1  Move stuff around to isolate o.a.c.util from o.a.c and o.a.c.support from o.a.c.impl
 discard f0d9ed3  Simplify startService / stopService helpers
 discard a1f7e44  [CAMEL-10469] Remove @version in java source code
 discard 9429932  Make InterceptSendToEndpointProcessor asynchronous
 discard 975c214  Trivial changes
 discard 672c817  Use a single field + lock to manage the services state
 discard 232d956  Harden tests a bit
 discard 9162b13  Add a protected logger on ServiceSupport and use it instead of a static one
 discard df93251  Simplify startService / stopService helpers
 discard b5ad4c1  Move StatefulService#getVersion to DefaultCamelContext
 discard 9529631  [api] Improve api cohesiveness
 discard 7040dcf  [CAMEL-12818] Remove unused RouteNode interface and implementations
 discard 693796f  Fix catalog
 discard 330ac6c  [CAMEL-12818] Remove deprecated stuff
 discard 7370a6f  [CAMEL-10911] Avoid non singleton endpoints, consumer and producers
 discard 0bc6e1e  [CAMEL-12818] Remove useDom, handled(), add rethrow()
 discard 19f85fa  [CAMEL-12818] Remove multiParameterArray, enrichRef, pollEnrichRef
 discard bb3b17e  [CAMEL-12818] Remove deprecated stuff from camel-cxf
 discard fb144c5  [CAMEL-12818] Remove deprecated stuff from camel-netty4
 discard 2ab11f8  [CAMEL-12818] Remove deprecated stuff from camel-rabbitmq
 discard fb82703  Use the snapshot version of the ActiveMQComponent instead of a hacked version
 discard bb3e246  [CAMEL-12818] Remove deprecated stuff
 discard 0563b44  Fix unit tests
 discard adafa5c  [CAMEL-12814] Replace old components with their new counterpart
 discard b843ea1  [CAMEL-12818] Remove deprecated stuff
 discard cd00d27  [CAMEL-12819] Remove deprecated Tracer
 discard b617cf2  [CAMEL-4763] Remove deprecated loggingErrorHandler in favor of DeadLetterChannel
 discard 1193a9b  [CAMEL-10535] Remove simple backwards parser
 discard 68fb407  [CAMEL-12814] Remove deprecated components
 discard 282e5e2  [CAMEL-12811] Remove deprecated languages and dataformats
 discard e66bf29  Switch to 3.0.0-SNAPSHOT
     add 80ca569  Upgrade Xchange to version 4.3.11
     add bfed02b  Upgrade Json Schema Validator to version 0.1.23
     add a81ef66  CAMEL-12786: Option readLockLoggingLevel not working for SFTP changed read lock strategy
     add 2c17c85  Upgrade Commons Text to version 1.5
     add 80c35e1  CAMEL-12853 - disable SftpConsumerDisconnectTest
     add 93fa169  CAMEL-12859 - Camel-AWS: Add more operations to the AWS IAM producer, getUser Operation
     add 1419f45  CAMEL-12859 - Updated docs
     add 2af6ac6  CAMEL-12859 - Camel-AWS: Add more operations to the AWS IAM producer, updateAccessKey operation
     add 30096a8  CAMEL-12859 - Updated docs
     add 0980dcd  CAMEL-12860 - Camel-AWS IAM: The accessKey delete operation need to specify an AccessKey Id instead of a username
     add 9001350  camel-servlet - Restore missing source snippets in doc (#2553)
     add 138141e  setting default idletimeout for httpclient
     add d34984d  Upgrade Vertx to version 3.5.4
     add ff306ee  Regen
     add 081474d  CAMEL-12855 - camel-swagger-java not honoring the x-forwarded-[host,proto,prefix] headers.
     add 07bd826  CAMEL-12698: Use the Files API to read files instead of Scanner
     add d670dbe  Adjust the KeyValuePairDataFormat class to resist the Unicode newline
     add 08fe4e9  CAMEL-12698: Use the Stream API to read files instead of Scanner
     add 7f7e9a0  Merge branch 'fix-bindy-parser' of github.com:MakotoTheKnight/camel into fix-bindy-parser
     add 86f51e6  Audit fixes
     add 9d946dc  Update comment per review feedback.
     add 248cb88  CAMEL-12698: Use the Stream API to read files instead of Scanner
     add 40177eb  CAMEL-12698 - conflict resolution after merging #2454
     add fea2548  Upgrade Spring Web Services to version 3.0.4.RELEASE
     add 183c4c6  Upgrade Spring Integration to version 5.0.8.RELEASE
     add 9d14001  Add JUnit Jupiter version
     add a4a79f9  Additional URISupport methods
     add a4f81d4  CAMEL-12855: cleanup and tests
     add c0acd09  Fix ASCII doc issue. Clarify that global means within RouteBuilder (#2555)
     add 605b130  Upgrade Jgit to version 5.1.2.201810061102-r
     add e7c6f81  Upgrade Rev API Maven plugin to version 0.10.5
     add 5fd48e3  Upgrade Revapi Java to version 0.18.1
     add d97fa92  Remove unused import, cleanup
     add fbec9bc  Remove duplicate documentation paragraph
     add e9b4d05  [CAMEL-12843]CamelContext Start command should resume a Suspended context
     add 0bfba63  Upgrade JackRabbit to version 2.17.6
     add f4a77fe  Upgrade PdfBox to version 2.0.12
     add 211e22b  Upgrade also PdfBox 1.8.x to version 1.8.16
     add 90b1465  Upgrade Async Http Client to version 2.5.4
     add 5798022  Revert "Speedup Spring Boot itest, thanks Zoran Regvart for the help"
     add 9dd7fc1  CAMEL-12867 - Camel-Slack: Must configure Consumer before using it
     add b210f1b  Upgrade Web3j to version 3.6.0
     add e0a9a88  Upgrade Brave Zipkin to version 5.4.2
     add 536ec68  Fix an example URL of the camel-milo client (#2556)
     add b6d549c  CAMEL-12867 - Camel-Slack: Must configure Consumer before using it
     add ad6c29d  Allow setting DataValue and Variant directly
     add e3b9f98  [CAMEL-12870]make cxf consumer endpoints suspendable
     add eb89351  Regen
     add 8b647ec  Upgrade Infinispan to version 9.4.0.Final
     add c1d1961  Upgrade Chronicle Core to version 1.16.29
     add 550a41c  Upgrade Chronicle Bytes to version 1.16.29
     add 9e85d57  CAMEL-12087: camel-core: WARN No CamelContext defined yet so cannot inject into bean
     add 99b791c  Corrected typo and regen
     add bd95eaf  Upgrade Tika to version 1.19.1
     add 1fdc5e2  CAMEL-12873: camel-servlet - Example for HttpRegistry no longer works throwing FinalModifierException
     add fef0c8c  Regen examples
     add a4bcfe8  mongodb3 - adds example of iterating over a DBCursor (#2560)
     add 8ca2919  Upgrade Braintree to version 2.84.0
     add 0d95a67  Upgrade Rabbitmq Client to version 5.4.3
     add c9e498c  Upgrade Hazelcast to version 3.10.6
     add 9702b09  CAMEL-12874 - Camel-google-calendar-stream: Last update date must consider UpdatedMin field instead of TimeMin when used
     add 93418f6  CAMEL-12874 - Fixed CS
     add 1d53bcb  Use latest Hazelcast Kubernetes 3.10.6
     add 456459b  Upgrade Dropbox to version 3.0.10
     add da1324d  Upgrade Infinispan Spring Boot to version 2.0.0.Final
     add a8bdecf  Fixed CS in the camel servlet http registry example
     add 2074f94  mongodb3 - update docs about streaming data, remove DBCursor (#2561)
     add 78f88ef  Upgrade Mockito to version 2.23.0
     add 21a554c  Remove mockito-version property from camel-rxjava2 POM
     add 73e2cd0  Switch to 3.0.0-SNAPSHOT
     add c2fe9f9  [CAMEL-12811] Remove deprecated languages and dataformats
     add 2eb26b1  [CAMEL-12814] Remove deprecated components
     new 57a7146  [CAMEL-12814] Remove deprecated twitter component
     new fd73ca3  [CAMEL-12814] Remove deprecated kubernetes component
     new e4a9cff  [CAMEL-12814] Remove deprecated binding component
     new a80623e  [CAMEL-12814] Replace old components with their new counterpart
     new 95d03b8  [CAMEL-10535] Remove simple backwards parser
     new ec42995  [CAMEL-4763] Remove deprecated loggingErrorHandler in favor of DeadLetterChannel
     new b57ae6b  [CAMEL-12819] Remove deprecated Tracer
     new 04f4242  [CAMEL-12818] Remove deprecated stuff
     new 5e01e2f  [CAMEL-12818] Remove deprecated stuff
     new 88dbe83  Use the snapshot version of the ActiveMQComponent instead of a hacked version
     new 4df0d7a  [CAMEL-12818] Remove deprecated stuff from camel-rabbitmq
     new d06de7b  [CAMEL-12818] Remove deprecated stuff from camel-netty4
     new 0c39f8d  [CAMEL-12818] Remove deprecated stuff from camel-cxf
     new a15c653  [CAMEL-12818] Remove multiParameterArray, enrichRef, pollEnrichRef
     new b91ad91  [CAMEL-12818] Remove useDom, handled(), add rethrow()
     new 3f38265  [CAMEL-10911] Avoid non singleton endpoints, consumer and producers
     new 39c62cc  [CAMEL-12818] Remove deprecated stuff
     new e6b2b75  [CAMEL-12818] Remove deprecated stuff
     new f1fffba  [CAMEL-12818] Remove deprecated stuff
     new dfde562  [CAMEL-12818] Remove unused RouteNode interface and implementations
     new 5ad8fe8  [api] Improve api cohesiveness
     new 2a99223  Move StatefulService#getVersion to DefaultCamelContext
     new 866ba7e  Simplify startService / stopService helpers
     new feae39a  Add a protected logger on ServiceSupport and use it instead of a static one
     new 9c6a2bf  Harden tests a bit
     new ce747d6  Trivial changes
     new c698fae  Make InterceptSendToEndpointProcessor asynchronous
     new b34b73d  [CAMEL-10469] Remove @version in java source code
     new f801499  Move stuff around to isolate o.a.c.util from o.a.c and o.a.c.support from o.a.c.impl
     new 9a9f623  Extract camel-util and camel-api modules from camel-core
     new ad66a72  Extract org.apache.camel.api.management packages
     new 5869902  Remove useless @SuppressWarnings("deprecation")
     new 89bf464  Introduce interfaces for ConsumerCache and ProducerCache
     new 387216d  Isolate o.a.c.management from o.a.c.impl
     new 21378f2  Introduce CamelEvent spi interface
     new 8125c34  Move some cluster classes to o.a.c.support.cluster
     new ddb6d5a  Trivial cleanup
     new f1ad7bc  Use a single field + lock to manage the services state
     new e6b88b5  Move o.a.c.management.event to o.a.c.impl.event
     new 645f965  Rename ManagementNamingStrategy to ManagementObjectNameStrategy
     new 7f16b9e  Prepare org.apache.camel.management for extraction
     new e9e4e01  Extract org.apache.camel.management to camel-management-impl
     new ed124ae  Various build fixes
     new daa5f9a  Reifiers

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (8956377)
            \
             N -- N -- N   refs/heads/sandbox/camel-3.x (daa5f9a)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 44 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:
 bom/camel-bom/pom.xml                              |   16 +
 camel-api/pom.xml                                  |    7 +
 .../java/org/apache/camel/AttachmentObjects.java   |    2 -
 .../main/java/org/apache/camel/Attachments.java    |    2 -
 .../src/main/java/org/apache/camel/BeanInject.java |    2 -
 camel-api/src/main/java/org/apache/camel/Body.java |    1 -
 .../main/java/org/apache/camel/BytesSource.java    |    2 -
 .../main/java/org/apache/camel/CamelContext.java   |   69 +-
 .../src/main/java/org/apache/camel/Component.java  |    1 -
 .../src/main/java/org/apache/camel/Consume.java    |    1 -
 .../src/main/java/org/apache/camel/Consumer.java   |    3 +
 .../src/main/java/org/apache/camel/Converter.java  |    1 -
 .../main/java/org/apache/camel/DynamicRouter.java  |    2 +-
 .../src/main/java/org/apache/camel/Exchange.java   |    1 -
 .../java/org/apache/camel/ExchangeProperty.java    |    1 -
 .../apache/camel/ExpectedBodyTypeException.java    |    1 -
 .../main/java/org/apache/camel/Experimental.java   |   32 -
 .../apache/camel/FailedToCreateRouteException.java |   19 +-
 .../org/apache/camel/InvalidPayloadException.java  |    2 -
 .../camel/InvalidPayloadRuntimeException.java      |    2 -
 .../main/java/org/apache/camel/InvokeOnHeader.java |    1 -
 .../java/org/apache/camel/InvokeOnHeaders.java     |    1 -
 .../org/apache/camel/NoSuchLanguageException.java  |    1 -
 .../src/main/java/org/apache/camel/Predicate.java  |    1 -
 .../src/main/java/org/apache/camel/Processor.java  |    1 -
 .../src/main/java/org/apache/camel/Producer.java   |    1 -
 .../camel/ResolveEndpointFailedException.java      |    1 -
 .../src/main/java/org/apache/camel/Route.java      |    7 +
 .../main/java/org/apache/camel/RoutingSlip.java    |    2 +-
 .../apache/camel/RuntimeExpressionException.java   |    1 -
 .../apache/camel/RuntimeTransformException.java    |    1 -
 .../src/main/java/org/apache/camel/Service.java    |    7 +-
 .../java/org/apache/camel/StartupListener.java     |    3 +-
 .../main/java/org/apache/camel/StringSource.java   |    2 -
 .../main/java/org/apache/camel/TypeConverter.java  |    1 -
 .../java/org/apache/camel/ValidationException.java |    1 -
 .../org/apache/camel/health/HealthCheckHelper.java |    6 +-
 .../apache/camel/health/HealthCheckRegistry.java   |   18 +
 .../main/java/org/apache/camel/spi/Breakpoint.java |    7 +-
 .../main/java/org/apache/camel/spi/CamelEvent.java |  282 +++++
 .../main/java/org/apache/camel/spi/Condition.java  |    9 +-
 .../java/org/apache/camel/spi/ConsumerCache.java   |   55 +
 .../main/java/org/apache/camel/spi/Debugger.java   |    6 +-
 .../java/org/apache/camel/spi/EventFactory.java    |  104 +-
 .../java/org/apache/camel/spi/EventNotifier.java   |    6 +-
 .../org/apache/camel/spi/IdempotentRepository.java |    2 -
 .../main/java/org/apache/camel/spi/Injector.java   |    1 -
 .../org/apache/camel/spi/LanguageResolver.java     |    1 -
 .../java/org/apache/camel/spi/LogListener.java     |    1 -
 .../java/org/apache/camel/spi/ManagementAgent.java |    2 +-
 .../camel/spi/ManagementInterceptStrategy.java     |   41 +
 .../apache/camel/spi/ManagementNamingStrategy.java |   76 --
 .../camel/spi/ManagementObjectNameStrategy.java    |   76 ++
 .../org/apache/camel/spi/ManagementStrategy.java   |   51 +-
 .../camel/spi/ManagementStrategyFactory.java       |   28 +
 .../OptimisticLockingAggregationRepository.java    |    2 -
 .../java/org/apache/camel/spi/ProducerCache.java   |   87 ++
 .../java/org/apache/camel/spi/RouteContext.java    |    6 +-
 .../java/org/apache/camel/spi/RouteController.java |    3 -
 .../java/org/apache/camel/spi/RoutePolicy.java     |    2 -
 .../org/apache/camel/support/ServiceHelper.java    |    6 +-
 .../org/apache/camel/support/ServiceSupport.java   |   51 +-
 camel-core/pom.xml                                 |   17 +
 .../src/main/docs/eips/dynamicRouter-eip.adoc      |    2 +-
 camel-core/src/main/docs/eips/enrich-eip.adoc      |    2 +-
 camel-core/src/main/docs/eips/pollEnrich-eip.adoc  |    2 +-
 .../src/main/docs/eips/recipientList-eip.adoc      |    2 +-
 camel-core/src/main/docs/eips/routingSlip-eip.adoc |    2 +-
 camel-core/src/main/docs/eips/toD-eip.adoc         |    2 +-
 camel-core/src/main/docs/eips/wireTap-eip.adoc     |    3 +-
 .../org/apache/camel/DeferredContextBinding.java   |   36 +
 .../management/mbean/ManagedComponentMBean.java    |   52 -
 .../api/management/mbean/ManagedRouteMBean.java    |  148 ---
 .../mbean/ManagedStreamCachingStrategyMBean.java   |   97 --
 .../org/apache/camel/builder/BuilderSupport.java   |    2 -
 .../camel/builder/ErrorHandlerBuilderRef.java      |    1 -
 .../apache/camel/builder/ExpressionBuilder.java    |    2 -
 .../org/apache/camel/builder/ExpressionClause.java |    1 -
 .../camel/builder/FlexibleAggregationStrategy.java |    1 -
 .../org/apache/camel/builder/NotifyBuilder.java    |   18 +-
 .../org/apache/camel/builder/RouteBuilder.java     |   22 -
 .../org/apache/camel/builder/SimpleBuilder.java    |    2 -
 .../org/apache/camel/builder/ValueBuilder.java     |    1 -
 .../bean/AbstractCamelInvocationHandler.java       |    1 -
 .../bean/BeanAnnotationExpressionFactory.java      |    2 -
 .../apache/camel/component/bean/BeanConstants.java |    2 -
 .../component/bean/CamelInvocationHandler.java     |    2 -
 .../bean/ConstantStaticTypeBeanHolder.java         |    2 -
 .../component/bean/ConstantTypeBeanHolder.java     |    2 -
 .../apache/camel/component/bean/MethodInfo.java    |    1 -
 .../component/bean/MethodNotFoundException.java    |    2 -
 .../component/controlbus/ControlBusProducer.java   |    4 +-
 .../component/dataformat/DataFormatComponent.java  |    2 -
 .../camel/component/dataset/FileDataSet.java       |    2 -
 .../camel/component/dataset/ListDataSet.java       |    2 -
 .../camel/component/direct/DirectComponent.java    |    2 -
 .../DirectConsumerNotAvailableException.java       |    2 -
 .../DirectVmConsumerNotAvailableException.java     |    2 -
 .../DefaultComponentVerifierExtension.java         |    2 +-
 .../file/cluster/FileLockClusterView.java          |    2 +-
 .../apache/camel/component/mock/MockEndpoint.java  |    6 +-
 .../java/org/apache/camel/component/mock/Time.java |    1 -
 .../rest/RestComponentVerifierExtension.java       |    2 +-
 .../camel/component/seda/SedaPollingConsumer.java  |    6 +
 .../apache/camel/component/seda/SedaProducer.java  |    2 -
 .../component/validator/ValidatorComponent.java    |    2 -
 .../org/apache/camel/component/vm/VmComponent.java |    2 -
 .../apache/camel/converter/jaxp/XmlConverter.java  |    2 -
 .../org/apache/camel/impl/BreakpointSupport.java   |    3 +-
 .../camel/impl/CamelPostProcessorHelper.java       |    2 -
 .../org/apache/camel/impl/ConditionSupport.java    |    5 +-
 .../java/org/apache/camel/impl/ConsumerCache.java  |  259 ----
 .../camel/impl/DefaultCamelBeanPostProcessor.java  |   13 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |  325 +++--
 .../camel/impl/DefaultComponentResolver.java       |    2 -
 .../apache/camel/impl/DefaultConsumerCache.java    |  260 ++++
 .../apache/camel/impl/DefaultConsumerTemplate.java |    5 +-
 .../camel/impl/DefaultDataFormatResolver.java      |    2 -
 .../org/apache/camel/impl/DefaultDebugger.java     |   36 +-
 .../apache/camel/impl/DefaultLanguageResolver.java |    2 -
 .../camel/impl/DefaultManagementStrategy.java      |  206 +++
 .../impl/DefaultManagementStrategyFactory.java     |   32 +
 .../apache/camel/impl/DefaultProducerCache.java    |  477 +++++++
 .../apache/camel/impl/DefaultProducerTemplate.java |    5 +-
 .../org/apache/camel/impl/DefaultRouteContext.java |   22 +-
 .../apache/camel/impl/DefaultRouteController.java  |    2 +-
 .../camel/impl/DefaultRuntimeEndpointRegistry.java |   14 +-
 .../apache/camel/impl/DefaultShutdownStrategy.java |    2 -
 .../camel/impl/DefaultTransformerRegistry.java     |    3 +-
 .../camel/impl/DefaultValidatorRegistry.java       |    3 +-
 .../java/org/apache/camel/impl/ProducerCache.java  |  498 --------
 .../java/org/apache/camel/impl/ServicePool.java    |    4 +-
 .../camel/impl/SupervisingRouteController.java     |   10 +-
 .../impl/ThrottlingExceptionHalfOpenHandler.java   |   31 -
 .../camel/impl/ThrottlingExceptionRoutePolicy.java |  370 ------
 .../camel/impl/ThrottlingInflightRoutePolicy.java  |  309 -----
 .../impl/cluster/AbstractCamelClusterView.java     |  146 ---
 .../camel/impl/cluster/ClusterServiceHelper.java   |   54 -
 .../impl/cluster/ClusterServiceSelectors.java      |  153 ---
 .../impl/cluster/ClusteredRouteController.java     |    4 +-
 .../camel/impl/cluster/ClusteredRouteFilter.java   |    1 +
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |   12 +-
 .../impl/cluster/ClusteredRoutePolicyFactory.java  |    1 +
 .../converter/AnnotationTypeConverterLoader.java   |    2 -
 .../converter/AsyncProcessorTypeConverter.java     |    2 -
 .../camel/impl/event/AbstractContextEvent.java     |   39 +
 .../camel/impl/event/AbstractExchangeEvent.java    |   39 +
 .../camel/impl/event/AbstractRouteEvent.java       |   40 +
 .../impl/event/CamelContextResumeFailureEvent.java |   41 +
 .../camel/impl/event/CamelContextResumedEvent.java |   33 +
 .../impl/event/CamelContextResumingEvent.java      |   33 +
 .../camel/impl/event/CamelContextStartedEvent.java |   33 +
 .../impl/event/CamelContextStartingEvent.java      |   33 +
 .../event/CamelContextStartupFailureEvent.java     |   41 +
 .../impl/event/CamelContextStopFailureEvent.java   |   41 +
 .../camel/impl/event/CamelContextStoppedEvent.java |   33 +
 .../impl/event/CamelContextStoppingEvent.java      |   33 +
 .../impl/event/CamelContextSuspendedEvent.java     |   33 +
 .../impl/event/CamelContextSuspendingEvent.java    |   33 +
 .../camel/impl/event/DefaultEventFactory.java      |  143 +++
 .../camel/impl/event/ExchangeCompletedEvent.java   |   33 +
 .../camel/impl/event/ExchangeCreatedEvent.java     |   40 +
 .../camel/impl/event/ExchangeFailedEvent.java      |   44 +
 .../impl/event/ExchangeFailureHandledEvent.java    |   69 +
 .../impl/event/ExchangeFailureHandlingEvent.java   |   59 +
 .../camel/impl/event/ExchangeRedeliveryEvent.java  |   46 +
 .../camel/impl/event/ExchangeSendingEvent.java     |   58 +
 .../apache/camel/impl/event/ExchangeSentEvent.java |   58 +
 .../apache/camel/impl/event/RouteAddedEvent.java   |   34 +
 .../apache/camel/impl/event/RouteRemovedEvent.java |   34 +
 .../apache/camel/impl/event/RouteStartedEvent.java |   33 +
 .../apache/camel/impl/event/RouteStoppedEvent.java |   33 +
 .../impl/event/ServiceStartupFailureEvent.java     |   55 +
 .../camel/impl/event/ServiceStopFailureEvent.java  |   55 +
 .../camel/{management => impl}/event/package.html  |    0
 .../impl/health/DefaultHealthCheckService.java     |    2 +-
 .../apache/camel/impl/health/RouteHealthCheck.java |   11 +-
 .../impl/health/RoutesHealthCheckRepository.java   |    2 +
 .../camel/language/simple/SimpleLanguage.java      |    2 -
 .../camel/main/MainDurationEventNotifier.java      |   12 +-
 .../java/org/apache/camel/main/MainSupport.java    |    2 +-
 .../camel/management/DefaultManagementAgent.java   |  580 ---------
 .../DefaultManagementLifecycleStrategy.java        | 1041 ---------------
 .../DefaultManagementMBeanAssembler.java           |  126 --
 .../DefaultManagementNamingStrategy.java           |  422 -------
 .../DefaultManagementObjectStrategy.java           |  455 -------
 .../management/DefaultManagementStrategy.java      |  207 ---
 .../InstrumentationInterceptStrategy.java          |   65 -
 .../camel/management/InstrumentationProcessor.java |  145 ---
 .../management/JmxNotificationEventNotifier.java   |   86 --
 .../camel/management/LoggingEventNotifier.java     |   68 -
 .../camel/management/ManagedCamelContext.java      |   50 -
 .../management/ManagedManagementStrategy.java      |  200 ---
 .../management/ManagementStrategyFactory.java      |   50 -
 .../camel/management/PublishEventNotifier.java     |  127 --
 .../management/event/AbstractContextEvent.java     |   38 -
 .../management/event/AbstractExchangeEvent.java    |   38 -
 .../camel/management/event/AbstractRouteEvent.java |   39 -
 .../event/CamelContextResumeFailureEvent.java      |   42 -
 .../management/event/CamelContextResumedEvent.java |   34 -
 .../event/CamelContextResumingEvent.java           |   34 -
 .../management/event/CamelContextStartedEvent.java |   34 -
 .../event/CamelContextStartingEvent.java           |   34 -
 .../event/CamelContextStartupFailureEvent.java     |   42 -
 .../event/CamelContextStopFailureEvent.java        |   42 -
 .../management/event/CamelContextStoppedEvent.java |   34 -
 .../event/CamelContextStoppingEvent.java           |   34 -
 .../event/CamelContextSuspendedEvent.java          |   34 -
 .../event/CamelContextSuspendingEvent.java         |   34 -
 .../management/event/DefaultEventFactory.java      |  144 ---
 .../management/event/ExchangeCompletedEvent.java   |   34 -
 .../management/event/ExchangeCreatedEvent.java     |   39 -
 .../management/event/ExchangeFailedEvent.java      |   45 -
 .../event/ExchangeFailureHandledEvent.java         |   70 --
 .../event/ExchangeFailureHandlingEvent.java        |   60 -
 .../management/event/ExchangeRedeliveryEvent.java  |   47 -
 .../management/event/ExchangeSendingEvent.java     |   59 -
 .../camel/management/event/ExchangeSentEvent.java  |   60 -
 .../camel/management/event/FailureEvent.java       |   27 -
 .../camel/management/event/RouteAddedEvent.java    |   35 -
 .../camel/management/event/RouteRemovedEvent.java  |   35 -
 .../camel/management/event/RouteStartedEvent.java  |   34 -
 .../camel/management/event/RouteStoppedEvent.java  |   34 -
 .../event/ServiceStartupFailureEvent.java          |   56 -
 .../management/event/ServiceStopFailureEvent.java  |   56 -
 .../mbean/ManagedAggregateProcessor.java           |  249 ----
 .../management/mbean/ManagedBacklogTracer.java     |  155 ---
 .../management/mbean/ManagedBeanProcessor.java     |   70 --
 .../management/mbean/ManagedBrowsableEndpoint.java |  148 ---
 .../management/mbean/ManagedCamelContext.java      |  782 ------------
 .../camel/management/mbean/ManagedCamelHealth.java |  118 --
 .../camel/management/mbean/ManagedChoice.java      |  104 --
 .../camel/management/mbean/ManagedClaimCheck.java  |   50 -
 .../management/mbean/ManagedClusterService.java    |  114 --
 .../camel/management/mbean/ManagedComponent.java   |  163 ---
 .../camel/management/mbean/ManagedConsumer.java    |   51 -
 .../management/mbean/ManagedConsumerCache.java     |   74 --
 .../camel/management/mbean/ManagedConvertBody.java |   45 -
 .../mbean/ManagedCustomLoadBalancer.java           |   58 -
 .../camel/management/mbean/ManagedDelayer.java     |   64 -
 .../management/mbean/ManagedDynamicRouter.java     |  133 --
 .../management/mbean/ManagedEndpointRegistry.java  |  106 --
 .../camel/management/mbean/ManagedEnricher.java    |  142 ---
 .../management/mbean/ManagedErrorHandler.java      |  486 -------
 .../management/mbean/ManagedEventNotifier.java     |  155 ---
 .../mbean/ManagedFailoverLoadBalancer.java         |  159 ---
 .../camel/management/mbean/ManagedFilter.java      |   61 -
 .../apache/camel/management/mbean/ManagedLog.java  |   59 -
 .../apache/camel/management/mbean/ManagedLoop.java |   55 -
 .../camel/management/mbean/ManagedMarshal.java     |   49 -
 .../camel/management/mbean/ManagedMulticast.java   |   65 -
 .../management/mbean/ManagedPollEnricher.java      |  137 --
 .../camel/management/mbean/ManagedProcess.java     |   61 -
 .../camel/management/mbean/ManagedProcessor.java   |  188 ---
 .../camel/management/mbean/ManagedProducer.java    |   47 -
 .../management/mbean/ManagedProducerCache.java     |   77 --
 .../mbean/ManagedRandomLoadBalancer.java           |   60 -
 .../management/mbean/ManagedRecipientList.java     |  158 ---
 .../management/mbean/ManagedRemoveHeader.java      |   41 -
 .../management/mbean/ManagedRemoveHeaders.java     |   53 -
 .../management/mbean/ManagedRemoveProperties.java  |   53 -
 .../management/mbean/ManagedRemoveProperty.java    |   40 -
 .../camel/management/mbean/ManagedResequencer.java |  115 --
 .../camel/management/mbean/ManagedRollback.java    |   50 -
 .../mbean/ManagedRoundRobinLoadBalancer.java       |   59 -
 .../camel/management/mbean/ManagedRoute.java       |  562 ---------
 .../camel/management/mbean/ManagedRoutingSlip.java |  133 --
 .../mbean/ManagedRuntimeCamelCatalog.java          |   61 -
 .../management/mbean/ManagedSamplingThrottler.java |   56 -
 .../mbean/ManagedScheduledPollConsumer.java        |  100 --
 .../camel/management/mbean/ManagedScript.java      |   50 -
 .../mbean/ManagedSendDynamicProcessor.java         |  135 --
 .../management/mbean/ManagedSendProcessor.java     |  101 --
 .../camel/management/mbean/ManagedSetBody.java     |   50 -
 .../mbean/ManagedSetExchangePattern.java           |   40 -
 .../camel/management/mbean/ManagedSetHeader.java   |   55 -
 .../camel/management/mbean/ManagedSetProperty.java |   55 -
 .../camel/management/mbean/ManagedSplitter.java    |   50 -
 .../mbean/ManagedStickyLoadBalancer.java           |   73 --
 .../apache/camel/management/mbean/ManagedStop.java |   36 -
 .../mbean/ManagedStreamCachingStrategy.java        |  140 ---
 .../camel/management/mbean/ManagedThreadPool.java  |  170 ---
 .../camel/management/mbean/ManagedThreads.java     |  150 ---
 .../camel/management/mbean/ManagedThrottler.java   |   69 -
 .../ManagedThrottlingExceptionRoutePolicy.java     |  107 --
 .../ManagedThrottlingInflightRoutePolicy.java      |   74 --
 .../management/mbean/ManagedThrowException.java    |   52 -
 .../management/mbean/ManagedTopicLoadBalancer.java |   40 -
 .../camel/management/mbean/ManagedTransformer.java |   50 -
 .../mbean/ManagedTransformerRegistry.java          |  104 --
 .../camel/management/mbean/ManagedUnmarshal.java   |   49 -
 .../camel/management/mbean/ManagedValidate.java    |   51 -
 .../management/mbean/ManagedValidatorRegistry.java |  102 --
 .../mbean/ManagedWeightedLoadBalancer.java         |   91 --
 .../management/mbean/ManagedWireTapProcessor.java  |  131 --
 .../management/mbean/RouteCoverageXmlParser.java   |  174 ---
 .../apache/camel/model/AggregateDefinition.java    |  171 ---
 .../org/apache/camel/model/BeanDefinition.java     |  131 +-
 .../org/apache/camel/model/CatchDefinition.java    |   48 -
 .../org/apache/camel/model/ChoiceDefinition.java   |   32 -
 .../apache/camel/model/ClaimCheckDefinition.java   |   92 --
 .../apache/camel/model/ConvertBodyDefinition.java  |   30 -
 .../org/apache/camel/model/DelayDefinition.java    |   34 -
 .../camel/model/DynamicRouterDefinition.java       |   31 +-
 .../org/apache/camel/model/EnrichDefinition.java   |   55 +-
 .../org/apache/camel/model/ExpressionNode.java     |   48 +-
 .../org/apache/camel/model/FilterDefinition.java   |   15 -
 .../org/apache/camel/model/FinallyDefinition.java  |   13 -
 .../org/apache/camel/model/HystrixDefinition.java  |    9 +-
 .../camel/model/IdempotentConsumerDefinition.java  |   37 -
 .../apache/camel/model/InterceptDefinition.java    |   48 +-
 .../camel/model/InterceptFromDefinition.java       |   27 -
 .../model/InterceptSendToEndpointDefinition.java   |   71 --
 .../apache/camel/model/LoadBalanceDefinition.java  |   44 +-
 .../apache/camel/model/LoadBalancerDefinition.java |   31 +-
 .../java/org/apache/camel/model/LogDefinition.java |   73 --
 .../org/apache/camel/model/LoopDefinition.java     |   19 -
 .../org/apache/camel/model/MarshalDefinition.java  |   12 -
 .../apache/camel/model/MulticastDefinition.java    |   83 --
 .../apache/camel/model/OnCompletionDefinition.java |   62 +-
 .../apache/camel/model/OnExceptionDefinition.java  |  136 +-
 .../apache/camel/model/OnFallbackDefinition.java   |    7 -
 .../model/OptimisticLockRetryPolicyDefinition.java |    2 -
 .../apache/camel/model/OtherwiseDefinition.java    |    7 -
 .../org/apache/camel/model/PipelineDefinition.java |    7 -
 .../org/apache/camel/model/PolicyDefinition.java   |   42 +-
 .../apache/camel/model/PollEnrichDefinition.java   |   61 +-
 .../org/apache/camel/model/ProcessDefinition.java  |   30 +-
 .../apache/camel/model/ProcessorDefinition.java    |  383 +-----
 .../camel/model/RecipientListDefinition.java       |  121 +-
 .../apache/camel/model/RemoveHeaderDefinition.java |   10 -
 .../camel/model/RemoveHeadersDefinition.java       |   16 -
 .../camel/model/RemovePropertiesDefinition.java    |   16 -
 .../camel/model/RemovePropertyDefinition.java      |   10 -
 .../apache/camel/model/ResequenceDefinition.java   |  104 --
 .../org/apache/camel/model/RethrowDefinition.java  |   10 -
 .../org/apache/camel/model/RollbackDefinition.java |   19 -
 .../org/apache/camel/model/RouteDefinition.java    |  286 +----
 .../apache/camel/model/RoutingSlipDefinition.java  |   31 +-
 .../org/apache/camel/model/SagaDefinition.java     |   80 --
 .../org/apache/camel/model/SamplingDefinition.java |   18 -
 .../org/apache/camel/model/ScriptDefinition.java   |    9 -
 .../org/apache/camel/model/SendDefinition.java     |   18 -
 .../org/apache/camel/model/SetBodyDefinition.java  |    9 -
 .../camel/model/SetExchangePatternDefinition.java  |   16 +-
 .../apache/camel/model/SetFaultBodyDefinition.java |    9 -
 .../apache/camel/model/SetHeaderDefinition.java    |   12 -
 .../apache/camel/model/SetPropertyDefinition.java  |   12 -
 .../org/apache/camel/model/SortDefinition.java     |   29 -
 .../org/apache/camel/model/SplitDefinition.java    |   65 -
 .../org/apache/camel/model/StopDefinition.java     |    8 -
 .../org/apache/camel/model/ThreadsDefinition.java  |   97 +-
 .../org/apache/camel/model/ThrottleDefinition.java |   48 -
 .../camel/model/ThrowExceptionDefinition.java      |   24 -
 .../apache/camel/model/ToDynamicDefinition.java    |  147 +--
 .../apache/camel/model/TransactedDefinition.java   |  127 +-
 .../apache/camel/model/TransformDefinition.java    |    9 -
 .../java/org/apache/camel/model/TryDefinition.java |   34 +-
 .../apache/camel/model/UnmarshalDefinition.java    |   11 -
 .../org/apache/camel/model/ValidateDefinition.java |    8 -
 .../org/apache/camel/model/WhenDefinition.java     |    8 -
 .../model/WhenSkipSendToEndpointDefinition.java    |   23 -
 .../org/apache/camel/model/WireTapDefinition.java  |   69 +-
 .../camel/model/cloud/ServiceCallDefinition.java   |  426 -------
 .../camel/model/dataformat/CryptoDataFormat.java   |    2 -
 .../camel/model/dataformat/CustomDataFormat.java   |    2 -
 .../model/dataformat/JacksonXMLDataFormat.java     |    2 -
 .../camel/model/dataformat/JsonDataFormat.java     |    2 -
 .../camel/model/language/MethodCallExpression.java |    2 -
 .../loadbalancer/CustomLoadBalancerDefinition.java |   21 +-
 .../FailoverLoadBalancerDefinition.java            |   42 -
 .../loadbalancer/RandomLoadBalancerDefinition.java |    7 -
 .../RoundRobinLoadBalancerDefinition.java          |    7 -
 .../loadbalancer/StickyLoadBalancerDefinition.java |    8 -
 .../loadbalancer/TopicLoadBalancerDefinition.java  |    7 -
 .../WeightedLoadBalancerDefinition.java            |   33 -
 .../camel/model/rest/RestBindingDefinition.java    |  182 +--
 .../transformer/CustomTransformerDefinition.java   |   29 -
 .../DataFormatTransformerDefinition.java           |   17 +-
 .../transformer/EndpointTransformerDefinition.java |   24 +-
 .../model/transformer/TransformerDefinition.java   |   12 +-
 .../model/validator/CustomValidatorDefinition.java |   27 -
 .../validator/EndpointValidatorDefinition.java     |   19 +-
 .../validator/PredicateValidatorDefinition.java    |   17 +-
 .../camel/model/validator/ValidatorDefinition.java |    7 -
 .../camel/processor/CamelInternalProcessor.java    |   88 +-
 .../processor/CamelInternalProcessorAdvice.java    |   53 +-
 .../apache/camel/processor/ChoiceProcessor.java    |    1 -
 .../camel/processor/DefaultErrorHandler.java       |    2 -
 .../camel/processor/DelayProcessorSupport.java     |    1 -
 .../camel/processor/DelegateAsyncProcessor.java    |    2 -
 .../camel/processor/DelegateSyncProcessor.java     |    2 -
 .../java/org/apache/camel/processor/Enricher.java  |    5 +-
 .../camel/processor/FatalFallbackErrorHandler.java |    2 -
 .../apache/camel/processor/FinallyProcessor.java   |    2 -
 .../InterceptorToAsyncProcessorBridge.java         |   12 +-
 .../apache/camel/processor/MarshalProcessor.java   |    2 -
 .../apache/camel/processor/MulticastProcessor.java |    2 -
 .../org/apache/camel/processor/PollEnricher.java   |    5 +-
 .../org/apache/camel/processor/RecipientList.java  |    5 +-
 .../camel/processor/RecipientListProcessor.java    |    5 +-
 .../camel/processor/RedeliveryErrorHandler.java    |    2 -
 .../org/apache/camel/processor/Resequencer.java    |    2 +-
 .../apache/camel/processor/RestBindingAdvice.java  |    2 +-
 .../org/apache/camel/processor/RoutingSlip.java    |  148 ++-
 .../camel/processor/SendDynamicProcessor.java      |    5 +-
 .../org/apache/camel/processor/SendProcessor.java  |    5 +-
 .../java/org/apache/camel/processor/Throttler.java |    2 -
 .../CompletionAwareAggregationStrategy.java        |    2 -
 .../GroupedMessageAggregationStrategy.java         |    2 -
 .../aggregate/OptimisticLockRetryPolicy.java       |    2 -
 .../OptimisticLockingAwareAggregationStrategy.java |    2 -
 .../aggregate/UseOriginalAggregationStrategy.java  |    1 -
 .../processor/interceptor/BacklogDebugger.java     |   43 +-
 .../camel/processor/interceptor/BacklogTracer.java |   16 +-
 .../processor/interceptor/DefaultChannel.java      |  106 +-
 .../processor/loadbalancer/QueueLoadBalancer.java  |    1 -
 .../resequencer/DefaultExchangeComparator.java     |    1 -
 .../processor/resequencer/ElementComparator.java   |    1 -
 .../resequencer/ExpressionResultComparator.java    |    1 -
 .../resequencer/MessageRejectedException.java      |    2 -
 .../camel/processor/resequencer/Sequence.java      |    1 -
 .../resequencer/SequenceElementComparator.java     |    1 -
 .../camel/processor/resequencer/Timeout.java       |    1 -
 .../processor/resequencer/TimeoutHandler.java      |    1 -
 .../validation/PredicateValidatingProcessor.java   |    1 -
 .../validation/PredicateValidationException.java   |    1 -
 .../validation/SchemaValidationException.java      |    1 -
 .../org/apache/camel/reifier/AggregateReifier.java |  208 +++
 .../java/org/apache/camel/reifier/BeanReifier.java |  157 +++
 .../org/apache/camel/reifier/CatchReifier.java     |   81 ++
 .../org/apache/camel/reifier/ChoiceReifier.java    |   64 +
 .../apache/camel/reifier/ClaimCheckReifier.java    |  123 ++
 .../apache/camel/reifier/ConvertBodyReifier.java   |   58 +
 .../org/apache/camel/reifier/DelayReifier.java     |   66 +
 .../apache/camel/reifier/DynamicRouterReifier.java |   59 +
 .../org/apache/camel/reifier/EnrichReifier.java    |   80 ++
 .../apache/camel/reifier/ExpressionReifier.java    |   53 +
 .../org/apache/camel/reifier/FilterReifier.java    |   44 +
 .../org/apache/camel/reifier/FinallyReifier.java   |   43 +
 .../org/apache/camel/reifier/HystrixReifier.java   |   35 +
 .../camel/reifier/IdempotentConsumerReifier.java   |   67 +
 .../apache/camel/reifier/InterceptFromReifier.java |   57 +
 .../org/apache/camel/reifier/InterceptReifier.java |   72 ++
 .../reifier/InterceptSendToEndpointReifier.java    |  100 ++
 .../apache/camel/reifier/LoadBalanceReifier.java   |   74 ++
 .../java/org/apache/camel/reifier/LogReifier.java  |  105 ++
 .../java/org/apache/camel/reifier/LoopReifier.java |   49 +
 .../org/apache/camel/reifier/MarshalReifier.java   |   39 +
 .../org/apache/camel/reifier/MulticastReifier.java |  116 ++
 .../apache/camel/reifier/OnCompletionReifier.java  |   90 ++
 .../apache/camel/reifier/OnExceptionReifier.java   |  164 +++
 .../apache/camel/reifier/OnFallbackReifier.java    |   35 +
 .../org/apache/camel/reifier/OtherwiseReifier.java |   34 +
 .../org/apache/camel/reifier/PipelineReifier.java  |   34 +
 .../org/apache/camel/reifier/PolicyReifier.java    |   63 +
 .../apache/camel/reifier/PollEnrichReifier.java    |   87 ++
 .../org/apache/camel/reifier/ProcessReifier.java   |   56 +
 .../org/apache/camel/reifier/ProcessorReifier.java |  579 +++++++++
 .../apache/camel/reifier/RecipientListReifier.java |  153 +++
 .../apache/camel/reifier/RemoveHeaderReifier.java  |   37 +
 .../apache/camel/reifier/RemoveHeadersReifier.java |   43 +
 .../camel/reifier/RemovePropertiesReifier.java     |   43 +
 .../camel/reifier/RemovePropertyReifier.java       |   37 +
 .../apache/camel/reifier/ResequenceReifier.java    |  136 ++
 .../org/apache/camel/reifier/RethrowReifier.java   |   25 +
 .../org/apache/camel/reifier/RollbackReifier.java  |   47 +
 .../org/apache/camel/reifier/RouteReifier.java     |  339 +++++
 .../apache/camel/reifier/RoutingSlipReifier.java   |   59 +
 .../java/org/apache/camel/reifier/SagaReifier.java |  113 ++
 .../org/apache/camel/reifier/SamplingReifier.java  |   46 +
 .../org/apache/camel/reifier/ScriptReifier.java    |   37 +
 .../java/org/apache/camel/reifier/SendReifier.java |   46 +
 .../apache/camel/reifier/ServiceCallReifier.java   |  462 +++++++
 .../org/apache/camel/reifier/SetBodyReifier.java   |   37 +
 .../camel/reifier/SetExchangePatternReifier.java   |   35 +
 .../apache/camel/reifier/SetFaultBodyReifier.java  |   37 +
 .../org/apache/camel/reifier/SetHeaderReifier.java |   41 +
 .../apache/camel/reifier/SetPropertyReifier.java   |   41 +
 .../java/org/apache/camel/reifier/SortReifier.java |   65 +
 .../org/apache/camel/reifier/SplitReifier.java     |   99 ++
 .../java/org/apache/camel/reifier/StopReifier.java |   35 +
 .../org/apache/camel/reifier/ThreadsReifier.java   |  127 ++
 .../org/apache/camel/reifier/ThrottleReifier.java  |   80 ++
 .../camel/reifier/ThrowExceptionReifier.java       |   52 +
 .../org/apache/camel/reifier/ToDynamicReifier.java |  173 +++
 .../apache/camel/reifier/TransactedReifier.java    |  152 +++
 .../org/apache/camel/reifier/TransformReifier.java |   37 +
 .../java/org/apache/camel/reifier/TryReifier.java  |   65 +
 .../org/apache/camel/reifier/UnmarshalReifier.java |   38 +
 .../org/apache/camel/reifier/ValidateReifier.java  |   36 +
 .../java/org/apache/camel/reifier/WhenReifier.java |   34 +
 .../reifier/WhenSkipSendToEndpointReifier.java     |   56 +
 .../org/apache/camel/reifier/WireTapReifier.java   |  100 ++
 .../loadbalancer/CustomLoadBalancerReifier.java    |   41 +
 .../loadbalancer/FailoverLoadBalancerReifier.java  |   73 ++
 .../reifier/loadbalancer/LoadBalancerReifier.java  |   86 ++
 .../loadbalancer/RandomLoadBalancerReifier.java    |   36 +
 .../RoundRobinLoadBalancerReifier.java             |   36 +
 .../loadbalancer/StickyLoadBalancerReifier.java    |   36 +
 .../loadbalancer/TopicLoadBalancerReifier.java     |   36 +
 .../loadbalancer/WeightedLoadBalancerReifier.java  |   62 +
 .../camel/reifier/rest/RestBindingReifier.java     |  213 ++++
 .../transformer/CustomTransformeReifier.java       |   58 +
 .../transformer/DataFormatTransformeReifier.java   |   41 +
 .../transformer/EndpointTransformeReifier.java     |   46 +
 .../reifier/transformer/TransformerReifier.java    |   61 +
 .../reifier/validator/CustomValidatorReifier.java  |   56 +
 .../validator/EndpointValidatorReifier.java        |   44 +
 .../validator/PredicateValidatorReifier.java       |   42 +
 .../camel/reifier/validator/ValidatorReifier.java  |   61 +
 .../runtimecatalog/impl/AbstractCamelCatalog.java  |   48 +-
 .../org/apache/camel/support/DefaultEndpoint.java  |    4 +-
 .../camel/support/EventDrivenPollingConsumer.java  |    5 +
 .../java/org/apache/camel/support/EventHelper.java | 1099 ++--------------
 .../apache/camel/support/EventNotifierSupport.java |    8 +-
 .../org/apache/camel/support/ExchangeHelper.java   |    2 -
 .../org/apache/camel/support/MessageSupport.java   |    2 -
 .../camel/support/PollingConsumerSupport.java      |    7 +-
 .../apache/camel/support/ProcessorEndpoint.java    |    6 +-
 .../camel/support/ProcessorPollingConsumer.java    |    5 +
 .../org/apache/camel/support/ResolverHelper.java   |    2 -
 .../apache/camel/support/RoutePolicySupport.java   |   41 +-
 .../camel/support/ScheduledPollEndpoint.java       |    2 -
 .../support/cluster/AbstractCamelClusterView.java  |  146 +++
 .../support/cluster/ClusterServiceHelper.java      |   54 +
 .../support/cluster/ClusterServiceSelectors.java   |  154 +++
 .../jndi/CamelSingletonInitialContextFactory.java  |    2 -
 .../ThrottlingExceptionHalfOpenHandler.java        |   31 +
 .../throttling/ThrottlingExceptionRoutePolicy.java |  368 ++++++
 .../throttling/ThrottlingInflightRoutePolicy.java  |  298 +++++
 .../org/apache/camel/BodyAndHeaderConvertTest.java |    2 -
 .../java/org/apache/camel/CamelExceptionsTest.java |    2 -
 .../java/org/apache/camel/ContextTestSupport.java  |   28 +-
 .../java/org/apache/camel/ExchangePatternTest.java |    2 -
 .../org/apache/camel/InjectorDefaultsTest.java     |    2 -
 .../test/java/org/apache/camel/MyBarSingleton.java |    2 -
 .../src/test/java/org/apache/camel/MyFoo.java      |    2 -
 .../org/apache/camel/SuspendableServiceTest.java   |    2 -
 .../org/apache/camel/TestSupportJmxCleanup.java    |    6 +-
 .../camel/builder/BuilderWithScopesTest.java       |    5 +-
 .../org/apache/camel/builder/ErrorHandlerTest.java |    2 -
 .../camel/builder/ExpressionBuilderTest.java       |    2 -
 .../apache/camel/builder/ExpressionClauseTest.java |    2 -
 .../camel/builder/ExpressionFunctionTest.java      |    2 -
 .../camel/builder/NotifyBuilderFromRouteTest.java  |    2 -
 .../apache/camel/builder/NotifyBuilderTest.java    |    2 -
 .../builder/NotifyBuilderWhenDoneByIndexTest.java  |    2 -
 .../builder/PredicateBinaryCoerceRouteTest.java    |    2 -
 .../builder/PredicateBinaryCoerceTypeTest.java     |    2 -
 .../builder/PredicateBuilderConcurrentTest.java    |    2 -
 .../RouteBuilderAddRoutesOnlyInterceptTest.java    |    2 -
 .../camel/builder/RouteBuilderAddRoutesTest.java   |    2 -
 .../org/apache/camel/builder/RouteBuilderTest.java |    2 -
 .../apache/camel/builder/SimpleBuilderTest.java    |    3 -
 .../camel/builder/ThreadPoolBuilderTest.java       |    2 -
 .../org/apache/camel/builder/ValueBuilderTest.java |    2 -
 .../builder/xml/DefaultNamespaceContextTest.java   |    2 -
 .../apache/camel/builder/xml/XPathMockTest.java    |    2 -
 .../builder/xml/XPathNestedNamespaceTest.java      |    2 -
 .../org/apache/camel/builder/xml/XPathTest.java    |    2 -
 .../camel/builder/xml/XPathTransformRouteTest.java |    2 -
 .../camel/builder/xml/XPathTransformTest.java      |    3 -
 .../xml/XPathWithNamespacesFromDomTest.java        |    2 -
 .../apache/camel/builder/xml/XsltBuilderTest.java  |    2 -
 .../camel/builder/xml/XsltOutputFileTest.java      |    2 -
 .../org/apache/camel/builder/xml/XsltTest.java     |    2 -
 ...seMethodWithMatchingTypeAndSkipSettersTest.java |    2 -
 .../camel/component/bean/BeanConcurrentTest.java   |    2 -
 .../camel/component/bean/BeanEndpointTest.java     |    2 -
 .../component/bean/BeanExcludedMethodTest.java     |    2 -
 .../bean/BeanExplicitMethodAmbiguousTest.java      |    2 -
 .../component/bean/BeanExplicitMethodTest.java     |    2 -
 .../bean/BeanExpressionConcurrentTest.java         |    2 -
 .../bean/BeanHandlerMethodPredicateTest.java       |    2 -
 .../component/bean/BeanHandlerMethodTest.java      |    2 -
 .../bean/BeanInfoAMoreComplexOverloadedTest.java   |    2 -
 .../component/bean/BeanInfoOverloadedTest.java     |    2 -
 .../BeanInfoOverloadedWithSubTypeParamTest.java    |    3 -
 .../component/bean/BeanInfoSelectMethodTest.java   |    2 -
 .../apache/camel/component/bean/BeanInfoTest.java  |    3 -
 .../bean/BeanInvocationSerializeTest.java          |    2 -
 .../camel/component/bean/BeanInvokeStaticTest.java |    2 -
 .../camel/component/bean/BeanInvokeTest.java       |    2 -
 .../component/bean/BeanInvokeWithNullBodyTest.java |    2 -
 .../camel/component/bean/BeanLifecycleTest.java    |    2 -
 .../bean/BeanLookupUsingJndiRegistryIssueTest.java |    2 -
 .../camel/component/bean/BeanMapPutTest.java       |    2 -
 .../camel/component/bean/BeanMethodBeanTest.java   |    2 -
 .../camel/component/bean/BeanNoCacheTest.java      |    2 -
 .../bean/BeanNoTypeConvertionPossibleTest.java     |    2 -
 ...BeanNoTypeConvertionPossibleWhenHeaderTest.java |    2 -
 .../BeanParameterBindingStreamCachingTest.java     |    2 -
 .../component/bean/BeanParameterInfoTest.java      |    2 -
 .../component/bean/BeanPropagateHeaderTest.java    |    2 -
 .../component/bean/BeanProxyNoBindingTest.java     |    2 -
 .../apache/camel/component/bean/BeanProxyTest.java |    2 -
 .../component/bean/BeanRefMethodNotFoundTest.java  |    2 -
 .../camel/component/bean/BeanRefNoCacheTest.java   |    2 -
 .../camel/component/bean/BeanRefNotFoundTest.java  |    2 -
 .../camel/component/bean/BeanRegistryBeanTest.java |    2 -
 .../BeanWithExpressionInjectionPredicateTest.java  |    2 -
 .../bean/BeanWithExpressionInjectionTest.java      |    2 -
 .../component/bean/BeanWithHeaderAnnotation.java   |    2 -
 .../bean/BeanWithHeadersAndBodyInject2Test.java    |    2 -
 .../bean/BeanWithHeadersAndBodyInject3Test.java    |    2 -
 .../bean/BeanWithHeadersAndBodyInjectionTest.java  |    2 -
 .../component/bean/BeanWithMethodHeaderTest.java   |    2 -
 ...thPropertiesAndHeadersAndBodyInjectionTest.java |    2 -
 .../BeanWithPropertiesAndHeadersInjectionTest.java |    2 -
 .../BodyAnnotationToDisambiguateMethodsTest.java   |    2 -
 .../ClassComponentInvalidConfigurationTest.java    |    2 -
 .../camel/component/bean/ClassComponentTest.java   |    2 -
 ...entWithPropertiesLookupSetFromEndpointTest.java |    2 -
 ...ComponentWithPropertiesSetFromEndpointTest.java |    2 -
 .../bean/CustomParameterMappingStrategyTest.java   |    2 -
 .../bean/DefaultParameterMappingStrategyTest.java  |    2 -
 ...ressionAnnotationToDisambiguateMethodsTest.java |    2 -
 .../bean/FileBeanParameterBindingTest.java         |    2 -
 .../bean/MethodCallBeanRefMethodNotFoundTest.java  |    2 -
 .../bean/MethodCallBeanRefNotFoundTest.java        |    2 -
 .../bean/MethodCallRefOrBeanPrefixTest.java        |    2 -
 .../component/bean/MethodCallStaticMethodTest.java |    2 -
 .../component/bean/MyApplicationException.java     |    2 -
 .../apache/camel/component/bean/MyDummyBean.java   |    2 -
 .../org/apache/camel/component/bean/MyFooBean.java |    2 -
 .../org/apache/camel/component/bean/MyService.java |    2 -
 .../camel/component/bean/MyServiceProxyTest.java   |    2 -
 .../camel/component/bean/NewInstanceTest.java      |    2 -
 .../apache/camel/component/bean/OrderService.java  |    2 -
 .../camel/component/bean/OrderServiceBean.java     |    2 -
 .../camel/component/bean/PredicateAsBeanTest.java  |    2 -
 .../bean/ProxyReturnFutureExceptionTest.java       |    2 -
 .../component/bean/ProxyReturnFutureListTest.java  |    2 -
 .../component/bean/ProxyReturnFutureTest.java      |    2 -
 .../camel/component/bean/issues/BaseClass.java     |    2 -
 .../bean/issues/BeanRouteToDerivedClassTest.java   |    2 -
 .../camel/component/bean/issues/DerivedClass.java  |    2 -
 .../issues/FilterBeanLanguageNonRegistryTest.java  |    2 -
 .../bean/issues/FilterBeanNonRegistryTest.java     |    2 -
 .../bean/issues/FilterBeanRegistryTest.java        |    2 -
 .../component/bean/issues/FilterPojoIssueTest.java |    2 -
 .../camel/component/bean/issues/MyMessage.java     |    2 -
 .../component/bean/issues/MyMessageListener.java   |    2 -
 .../bean/issues/MyMessageToProcessorConverter.java |    2 -
 .../bean/issues/TransformerIssueTest.java          |    2 -
 .../camel/component/browse/BrowseEndpointTest.java |    2 -
 .../camel/component/browse/BrowseRouteTest.java    |    2 -
 .../apache/camel/component/browse/BrowseTest.java  |    2 -
 .../camel/component/dataset/BigDataSetTest.java    |    2 -
 .../camel/component/dataset/CustomDataSetTest.java |    2 -
 .../component/dataset/DataSetConsumerTest.java     |    2 -
 .../component/dataset/DataSetEndpointTest.java     |    3 -
 .../component/dataset/DataSetPreloadTest.java      |    2 -
 .../component/dataset/DataSetProducerTest.java     |    2 -
 .../camel/component/dataset/DataSetTest.java       |    2 -
 .../component/dataset/FileDataSetConsumerTest.java |    2 -
 .../dataset/FileDataSetConsumerWithSplitTest.java  |    2 -
 .../component/dataset/FileDataSetProducerTest.java |    2 -
 .../dataset/FileDataSetProducerWithSplitTest.java  |    2 -
 .../component/dataset/ListDataSetConsumerTest.java |    2 -
 .../component/dataset/ListDataSetProducerTest.java |    2 -
 .../direct/DirectEndpointRouteInlinedTest.java     |    2 -
 .../camel/component/direct/DirectEndpointTest.java |    2 -
 .../component/direct/DirectNoConsumerTest.java     |    2 -
 .../direct/DirectNoMultipleConsumersTest.java      |    2 +-
 .../camel/component/direct/DirectQueueTest.java    |    2 -
 .../camel/component/direct/DirectRouteTest.java    |    2 -
 .../SendToNonExistingDirectEndpointTest.java       |    2 -
 ...SendingToAlotOfDifferentDirectEndpointTest.java |    2 -
 .../direct/TwoCamelContextDirectEndpointTest.java  |    2 -
 .../component/directvm/DirectVmNoConsumerTest.java |    2 -
 .../component/file/DirectoryCreateIssueTest.java   |    2 -
 .../file/FileAbsoluteAndRelativeConsumerTest.java  |    2 -
 .../component/file/FileAbsolutePathIssueTest.java  |    2 -
 .../file/FileBeginFailureOneTimeTest.java          |    2 -
 .../camel/component/file/FileConfigureTest.java    |    2 -
 .../FileConsumeNoopIdempotentDisabledTest.java     |    2 -
 .../file/FileConsumeNoopIdempotentEnabledTest.java |    2 -
 ...ileConsumePollEnrichFileUsingProcessorTest.java |    2 -
 ...ileConsumeSimpleAbsoluteMoveToAbsoluteTest.java |    2 -
 ...ileConsumeSimpleAbsoluteMoveToRelativeTest.java |    2 -
 ...ileConsumeSimpleRelativeMoveToAbsoluteTest.java |    2 -
 ...ileConsumeSimpleRelativeMoveToRelativeTest.java |    2 -
 .../file/FileConsumeWithDollarInPathTest.java      |    2 -
 .../file/FileConsumerAutoCreateDirectoryTest.java  |    2 -
 .../file/FileConsumerDeleteAndFailureTest.java     |    2 -
 .../file/FileConsumerDeleteAndMoveFailedTest.java  |    2 -
 .../file/FileConsumerMoveAndMoveFailureTest.java   |    2 -
 .../FileConsumerMoveFailureOnCompletionTest.java   |    2 -
 .../file/FileConsumerMoveFailureTest.java          |    2 -
 .../camel/component/file/FileConsumerNoopTest.java |    2 -
 ...rPreMoveCopyAndDeleteOnRenameFailFalseTest.java |    2 -
 .../file/FileConsumerPreMoveDeleteTest.java        |    2 -
 .../file/FileConsumerPreMoveIssueTest.java         |    2 -
 .../file/FileConsumerPreMoveNoopTest.java          |    2 -
 .../component/file/FileConsumerPreMoveTest.java    |    2 -
 ...ileConsumerPreMoveWithProbeContentTypeTest.java |    2 -
 .../file/FileConsumerProducerRouteTest.java        |    2 -
 .../file/FileConsumerRelativeFileNameTest.java     |    2 -
 .../file/FileConsumerSuspendAndResumeTest.java     |    2 -
 .../component/file/FileConsumerSuspendTest.java    |    2 -
 .../component/file/FileConsumerTemplateTest.java   |    2 -
 .../component/file/FileContentBasedRouterTest.java |    2 -
 .../component/file/FileConvertBodyToUTF8Test.java  |    2 -
 .../file/FileEagerDeleteTargetFileTest.java        |    2 -
 .../file/FileExclusiveReadManuelTest.java          |    1 -
 .../file/FileIdempotentReadSameFileAgainTest.java  |    2 -
 .../file/FileInvalidStartingPathTest.java          |    2 -
 .../component/file/FileKeepLastModifiedTest.java   |    2 -
 .../camel/component/file/FileLanguageCBRTest.java  |    2 -
 .../file/FileMarkerFileDeleteOldLockFilesTest.java |    2 -
 ...eMarkerFileRecursiveDeleteOldLockFilesTest.java |    2 -
 ...erFileRecursiveDoNotDeleteOldLockFilesTest.java |    2 -
 ...cursiveFilterDeleteOldLockFilesIncludeTest.java |    2 -
 ...rFileRecursiveFilterDeleteOldLockFilesTest.java |    2 -
 .../component/file/FilePollEnrichNoWaitTest.java   |    2 -
 .../camel/component/file/FilePollEnrichTest.java   |    2 -
 ...ileProducerFileExistAppendNoFileBeforeTest.java |    2 -
 .../file/FileProducerFileExistAppendTest.java      |    2 -
 .../file/FileProducerFileExistFailTest.java        |    2 -
 .../file/FileProducerFileExistIgnoreTest.java      |    2 -
 ...eProducerFileExistOverrideNoFileBeforeTest.java |    2 -
 .../file/FileProducerFileExistOverrideTest.java    |    2 -
 .../file/FileProducerFileExistTryRenameTest.java   |    3 -
 .../file/FileProducerFilenameConstantTest.java     |    2 -
 .../file/FileProducerTempFileExistsIssueTest.java  |    2 -
 .../component/file/FileRecursiveNoopTest.java      |    2 -
 .../file/FileRenameFileOnCommitIssueTest.java      |    2 -
 .../FileRenameReadLockMustUseMarkerFileTest.java   |    2 -
 .../component/file/FileToFileNioLowBufferTest.java |    2 -
 .../component/file/FileToFileWithFlattenTest.java  |    2 -
 .../FromFileDoNotDeleteFileIfProcessFailsTest.java |    2 -
 .../FromFileDoNotMoveFileIfProcessFailsTest.java   |    2 -
 .../file/FromFileMoveFileIfProcessFailsTest.java   |    2 -
 .../file/FromFileMulticastToFilesTest.java         |    2 -
 .../component/file/GenericFileConverterTest.java   |    2 -
 .../camel/component/file/XPathToFileTest.java      |    2 -
 .../FileChangedReadLockMinAgeShortCircuitTest.java |    3 -
 .../strategy/FileChangedReadLockMinAgeTest.java    |    3 -
 .../file/strategy/FileChangedReadLockTest.java     |    3 -
 .../strategy/FileChangedReadLockTimeoutTest.java   |    2 -
 .../FileChangedZeroLengthReadLockTest.java         |    3 -
 .../FileIdempotentChangedReadLockTest.java         |    3 -
 .../FileIdempotentReadLockDelayedAsyncTest.java    |    3 -
 .../FileIdempotentReadLockDelayedTest.java         |    3 -
 .../file/strategy/FileIdempotentReadLockTest.java  |    3 -
 .../strategy/FileIdempotentRenameReadLockTest.java |    3 -
 .../file/stress/FileAsyncStressFileDropper.java    |    2 -
 .../file/stress/FileAsyncStressManually.java       |    2 -
 .../FileAsyncStressReadLockLockFileTest.java       |    2 -
 .../stress/FileAsyncStressReadLockNoneTest.java    |    2 -
 .../stress/FileAsyncStressReadLockRenameTest.java  |    2 -
 .../component/file/stress/FileAsyncStressTest.java |    2 -
 .../file/stress/FileConsumerPollManyFilesTest.java |    2 -
 .../language/LanguageCacheScriptTest.java          |    2 -
 .../language/LanguageEndpointScriptRouteTest.java  |    2 -
 .../language/LanguageHeaderRouteTest.java          |    2 -
 .../LanguageLoadScriptFromClasspathHeaderTest.java |    2 -
 .../LanguageLoadScriptFromClasspathTest.java       |    2 -
 .../LanguageLoadScriptFromFileCachedTest.java      |   98 --
 .../LanguageLoadScriptFromFileUpdateTest.java      |    2 -
 .../language/LanguageNoCacheScriptTest.java        |    2 -
 ...guageResourceLoadConstantFromClasspathTest.java |    2 -
 ...anguageResourceLoadScriptFromClasspathTest.java |    2 -
 .../language/LanguageRouteConvertBodyTest.java     |    2 -
 .../language/LanguageRouteNoTransformTest.java     |    2 -
 .../component/language/LanguageRouteTest.java      |    2 -
 ...guageScriptInHeaderRouteTakePrecedenceTest.java |    2 -
 .../language/LanguageScriptInHeaderRouteTest.java  |    2 -
 .../language/LanguageScriptRouteTest.java          |    2 -
 .../component/language/LanguageXPathRouteTest.java |    2 -
 .../camel/component/log/LogEndpointTest.java       |    2 -
 .../camel/component/log/LogInputStreamTest.java    |    2 -
 .../apache/camel/component/log/LogRouteTest.java   |    2 -
 .../camel/component/log/ThroughputLoggerTest.java  |    2 -
 .../camel/component/mock/MockAsBeanTest.java       |    2 -
 .../component/mock/MockAssertionClauseTest.java    |    2 -
 .../camel/component/mock/MockEndpointTest.java     |    2 -
 .../component/mock/MockEndpointTimeClauseTest.java |    2 -
 .../mock/MockExpectedBodiesAsListTest.java         |    2 -
 .../camel/component/mock/MockPredicateTest.java    |    2 -
 .../camel/component/mock/MockThroughtputTest.java  |    2 -
 .../org/apache/camel/component/mock/TimeTest.java  |    2 -
 .../apache/camel/component/pojo/PojoRouteTest.java |    2 -
 .../ComponentResolvePropertyPlaceholdersTest.java  |    2 -
 ...onentAdviceWithInterceptSendToEndpointTest.java |    2 -
 .../properties/PropertiesComponentDefaultTest.java |    2 -
 ...pertiesComponentEIPChoiceConvertBodyToTest.java |    2 -
 .../PropertiesComponentEIPChoiceSimpleTest.java    |    2 -
 .../PropertiesComponentEIPConvertBodyToTest.java   |    2 -
 .../PropertiesComponentEIPRoutingSlipTest.java     |    2 -
 .../PropertiesComponentEncodingTest.java           |    2 -
 .../PropertiesComponentEndpointTest.java           |    2 -
 .../PropertiesComponentGetOrElseTest.java          |    2 -
 .../PropertiesComponentInitialPropertiesTest.java  |    2 -
 .../PropertiesComponentInterceptFromTest.java      |    2 -
 ...ertiesComponentInterceptSendToEndpointTest.java |    2 -
 ...pertiesComponentLoadPropertiesFromFileTest.java |    2 -
 ...ponentLoadPropertiesFromFileTrimValuesTest.java |    2 -
 ...ertiesComponentLocationWithJvmPropertyTest.java |    2 -
 ...iesComponentLocationWithTwoJvmPropertyTest.java |    2 -
 ...ertiesComponentOnExceptionDelayPatternTest.java |    2 -
 .../PropertiesComponentOnExceptionTest.java        |    2 -
 .../PropertiesComponentOverridePropertiesTest.java |    2 -
 .../properties/PropertiesComponentRefTest.java     |    2 -
 .../PropertiesComponentRegistryTest.java           |    2 -
 .../properties/PropertiesComponentRestartTest.java |    2 -
 .../PropertiesComponentSetHeaderSimpleTest.java    |    2 -
 .../PropertiesComponentSimpleLanguageTest.java     |    2 -
 ...rtiesComponentSomethingElseBoundToJndiTest.java |    2 -
 .../properties/PropertiesComponentTest.java        |    2 -
 .../PropertiesEnvironmentVariableOverrideTest.java |    2 -
 .../properties/PropertiesResolverTest.java         |    2 -
 .../camel/component/ref/RefFileEndpointTest.java   |    2 -
 .../apache/camel/component/ref/RefInvalidTest.java |    2 -
 .../scheduler/SchedulerNoPolledMessagesTest.java   |    2 -
 .../component/scheduler/SchedulerRouteTest.java    |    2 -
 .../TwoSchedulerConcurrentTasksOneRouteTest.java   |    2 -
 .../scheduler/TwoSchedulerConcurrentTasksTest.java |    2 -
 .../component/scheduler/TwoSchedulerTest.java      |    2 -
 .../seda/DirectRequestReplyAndSedaInOnlyTest.java  |    2 -
 .../seda/FileSedaShutdownCompleteAllTasksTest.java |    2 -
 .../camel/component/seda/SedaComplexInOutTest.java |    2 -
 .../seda/SedaConcurrentConsumersNPEIssueTest.java  |    3 -
 .../seda/SedaConcurrentConsumersTest.java          |    2 -
 .../camel/component/seda/SedaConcurrentTest.java   |    2 -
 .../camel/component/seda/SedaConfigureTest.java    |    3 -
 .../seda/SedaDefaultUnboundedQueueSizeTest.java    |    2 -
 .../seda/SedaDiscardIfNoConsumerTest.java          |    2 -
 .../camel/component/seda/SedaEndpointTest.java     |    2 -
 .../component/seda/SedaInOnlyChainedTest.java      |    2 -
 .../camel/component/seda/SedaInOnlyTest.java       |    2 -
 .../component/seda/SedaInOutBigChainedTest.java    |    2 -
 .../camel/component/seda/SedaInOutChainedTest.java |    2 -
 .../seda/SedaInOutChainedTimeoutTest.java          |    2 -
 .../seda/SedaInOutChainedWithOnCompletionTest.java |    2 -
 .../apache/camel/component/seda/SedaInOutTest.java |    2 -
 .../SedaInOutWithErrorDeadLetterChannelTest.java   |    2 -
 .../component/seda/SedaInOutWithErrorTest.java     |    2 -
 .../component/seda/SedaMultipleConsumersTest.java  |    2 -
 .../camel/component/seda/SedaNoConsumerTest.java   |    2 -
 .../component/seda/SedaPurgeWhenStoppingTest.java  |    2 -
 .../apache/camel/component/seda/SedaQueueTest.java |    2 -
 .../seda/SedaRemoveRouteThenAddAgainTest.java      |    3 -
 .../apache/camel/component/seda/SedaRouteTest.java |    2 -
 .../component/seda/SedaTimeoutDisabledTest.java    |    2 -
 .../camel/component/seda/SedaTimeoutTest.java      |    2 -
 .../seda/SedaWaitForTaskAsPropertyTest.java        |    2 -
 .../SedaWaitForTaskCompleteOnCompletionTest.java   |    2 -
 .../seda/SedaWaitForTaskCompleteTest.java          |    2 -
 .../seda/SedaWaitForTaskIfReplyExpectedTest.java   |    2 -
 .../seda/SedaWaitForTaskNewerOnCompletionTest.java |    2 -
 .../component/seda/SedaWaitForTaskNewerTest.java   |    2 -
 .../camel/component/seda/TracingWithDelayTest.java |    2 -
 .../camel/component/test/TestEndpointTest.java     |    5 +
 .../camel/component/timer/TimerAsyncTest.java      |    3 -
 .../camel/component/timer/TimerDelayTest.java      |    2 -
 .../camel/component/timer/TimerEndpointTest.java   |    2 -
 .../component/timer/TimerGracefulShutdownTest.java |    2 -
 .../camel/component/timer/TimerNameTest.java       |    2 -
 .../component/timer/TimerNegativeDelayTest.java    |    2 -
 .../timer/TimerNegativeNoRepeatCountDelayTest.java |    2 -
 .../camel/component/timer/TimerRestartTest.java    |    2 -
 .../camel/component/timer/TimerRouteTest.java      |    2 -
 .../component/timer/TimerRouteWithTracerTest.java  |    2 -
 .../timer/TimerSuspendCamelContextTest.java        |    2 -
 .../component/timer/TimerWithTimeOptionTest.java   |    2 -
 .../camel/component/vm/AbstractVmTestSupport.java  |    2 -
 .../component/vm/VmConcurrentConsumersTest.java    |    2 -
 ...mDifferentOptionsOnConsumerAndProducerTest.java |    2 -
 .../component/vm/VmDiscardIfNoConsumerTest.java    |    2 -
 .../camel/component/vm/VmInOnlyChainedTest.java    |    2 -
 .../apache/camel/component/vm/VmInOnlyTest.java    |    2 -
 .../camel/component/vm/VmInOutChainedTest.java     |    2 -
 .../component/vm/VmInOutChainedTimeoutTest.java    |    2 -
 .../org/apache/camel/component/vm/VmInOutTest.java |    2 -
 .../camel/component/vm/VmInOutWithErrorTest.java   |    2 -
 .../vm/VmMultipleContextsStartStopTest.java        |    2 -
 .../org/apache/camel/component/vm/VmQueueTest.java |    2 -
 .../camel/component/vm/VmTimeoutIssueTest.java     |    2 -
 .../camel/component/vm/VmUseSameQueueTest.java     |    2 -
 .../component/vm/VmWaitForTaskCompleteTest.java    |    2 -
 .../vm/VmWaitForTaskIfReplyExpectedTest.java       |    2 -
 .../camel/component/vm/VmWaitForTaskNewerTest.java |    2 -
 .../xslt/XsltTransformingExceptionTest.java        |    3 -
 .../apache/camel/converter/CamelConverterTest.java |    2 -
 .../org/apache/camel/converter/ConverterTest.java  |    2 -
 .../apache/camel/converter/EnumConverterTest.java  |    2 -
 .../camel/converter/FallbackPromoteTest.java       |    2 -
 .../camel/converter/FutureConverterTest.java       |    2 -
 .../converter/InstanceFallbackConverterTest.java   |    2 -
 .../java/org/apache/camel/converter/JaxpTest.java  |    2 -
 .../org/apache/camel/converter/MyCoolBean.java     |    2 -
 .../apache/camel/converter/NIOConverterTest.java   |    2 -
 .../camel/converter/ObjectConverterNaNTest.java    |    2 -
 .../camel/converter/ObjectConverterTest.java       |    2 -
 .../converter/PrimitiveTypeConverterIssueTest.java |    2 -
 .../PropertyEditorTypeConverterIssueTest.java      |    2 -
 .../org/apache/camel/converter/PurchaseOrder.java  |    2 -
 .../converter/StaticFallbackConverterTest.java     |    2 -
 .../apache/camel/converter/StringSourceTest.java   |    2 -
 .../camel/converter/TypeConverterAwareTest.java    |    2 -
 .../camel/converter/jaxp/BytesSourceTest.java      |    2 -
 .../camel/converter/jaxp/DomConverterTest.java     |    2 -
 .../converter/jaxp/StreamSourceConverterTest.java  |    2 -
 .../camel/converter/jaxp/XmlConverterTest.java     |    2 -
 .../InstanceDummyFallbackConverter.java            |    2 -
 .../myconverter/MyFallbackPromoteConverter.java    |    2 -
 .../myconverter/PurchaseOrderConverter.java        |    2 -
 .../myconverter/StaticDummyFallbackConverter.java  |    2 -
 .../stream/ByteArrayInputStreamCacheTest.java      |    2 -
 .../converter/stream/FileInputStreamCacheTest.java |    2 -
 .../converter/stream/InputStreamCacheTest.java     |    2 -
 .../camel/converter/stream/ReaderCacheTest.java    |    2 -
 .../camel/converter/stream/SourceCacheTest.java    |    2 -
 .../converter/stream/StreamSourceCacheTest.java    |    2 -
 .../CamelContextAddRestDefinitionsFromXmlTest.java |    3 -
 ...CamelContextAddRouteDefinitionsFromXmlTest.java |    2 -
 .../CamelCustomDefaultThreadPoolProfileTest.java   |    7 +-
 ...melPostProcessorHelperConsumePredicateTest.java |    2 -
 ...amelPostProcessorHelperConsumePropertyTest.java |    2 -
 ...ostProcessorHelperSedaConsumePredicateTest.java |    2 -
 .../camel/impl/CamelPostProcessorHelperTest.java   |    3 -
 .../camel/impl/ConsumerCacheZeroCapacityTest.java  |    4 +-
 .../camel/impl/CustomThreadPoolFactoryTest.java    |    4 +-
 .../impl/DefaultCamelBeanPostProcessorTest.java    |    2 -
 .../impl/DefaultCamelContextAutoStartupTest.java   |   14 +-
 .../impl/DefaultCamelContextStopFailureTest.java   |    2 -
 ...lContextSuspendResumeRouteStartupOrderTest.java |    2 -
 .../DefaultCamelContextSuspendResumeRouteTest.java |    2 -
 .../apache/camel/impl/DefaultCamelContextTest.java |   42 +-
 .../camel/impl/DefaultClassResolverTest.java       |    2 -
 .../camel/impl/DefaultConsumerCacheTest.java       |    4 +-
 .../camel/impl/DefaultConsumerTemplateTest.java    |    2 -
 ...ConsumerTemplateWithCustomCacheMaxSizeTest.java |    2 -
 .../camel/impl/DefaultExchangeHolderTest.java      |    2 -
 .../org/apache/camel/impl/DefaultExchangeTest.java |    2 -
 .../impl/DefaultExecutorServiceManagerTest.java    |    2 -
 .../impl/DefaultHeaderFilterStrategyTest.java      |    2 -
 .../camel/impl/DefaultHeadersMapFactoryTest.java   |    2 -
 .../camel/impl/DefaultInflightRepositoryTest.java  |    2 -
 .../camel/impl/DefaultMessageHeaderTest.java       |    2 -
 .../camel/impl/DefaultProducerCacheTest.java       |    8 +-
 .../impl/DefaultProducerTemplateAsyncTest.java     |    2 -
 ...efaultProducerTemplateNonBlockingAsyncTest.java |    3 -
 ...ProducerTemplateWithCustomCacheMaxSizeTest.java |    2 -
 .../apache/camel/impl/DummyLifecycleStrategy.java  |    2 -
 .../apache/camel/impl/EmptyProducerCacheTest.java  |    4 +-
 .../apache/camel/impl/ExpressionAdapterTest.java   |    2 -
 .../apache/camel/impl/ExpressionSupportTest.java   |    2 -
 .../impl/ExtendedStartupListenerComponentTest.java |    2 -
 .../camel/impl/FileWatcherReloadStrategyTest.java  |   12 +-
 .../org/apache/camel/impl/FromEndpointTest.java    |    2 -
 .../camel/impl/FromHasNoOutputRouteTest.java       |    2 -
 .../camel/impl/FromMultipleEndpointTest.java       |    2 -
 .../GracefulShutdownNoAutoStartOrderClashTest.java |    2 -
 .../camel/impl/GzipDataFormatFileDeleteTest.java   |    2 -
 .../GzipDataFormatFileUnmarshalDeleteTest.java     |    2 -
 .../impl/HeaderFilterStrategyComponentTest.java    |    2 -
 .../InflightRepositoryBrowseFromRouteTest.java     |    3 -
 .../camel/impl/InflightRepositoryBrowseTest.java   |    3 -
 .../camel/impl/InflightRepositoryRouteTest.java    |    2 -
 ...erceptSendToMockEndpointStrategyCustomTest.java |    2 -
 .../InterceptSendToMockEndpointStrategyTest.java   |    2 -
 .../impl/LifecycleStrategyFailOnStartupTest.java   |    2 -
 .../camel/impl/LifecycleStrategyServiceTest.java   |    2 -
 .../camel/impl/LogDebugBodyMaxCharsOffTest.java    |    2 -
 .../camel/impl/LogDebugBodyMaxCharsTest.java       |    2 -
 .../apache/camel/impl/LogDebugBodyStreamsTest.java |    2 -
 .../org/apache/camel/impl/MainSupportTest.java     |    2 -
 .../org/apache/camel/impl/MessageSupportTest.java  |    2 -
 .../camel/impl/MultipleConsumersSupportTest.java   |    2 -
 .../camel/impl/MultipleLifecycleStrategyTest.java  |    2 -
 .../impl/PendingExchangesShutdownGracefulTest.java |    2 -
 ...ndingExchangesTwoRouteShutdownGracefulTest.java |    2 -
 .../camel/impl/ProducerCacheNonSingletonTest.java  |    2 +-
 .../impl/ProxyInstantiationExceptionTest.java      |    2 -
 .../java/org/apache/camel/impl/RegistryTest.java   |    2 -
 .../camel/impl/RouteDirectSuspendResumeTest.java   |    2 -
 .../impl/RouteMustHaveOutputOnExceptionTest.java   |    2 -
 .../org/apache/camel/impl/RouteNoOutputTest.java   |    2 -
 .../org/apache/camel/impl/RouteRemove2Test.java    |    2 -
 .../org/apache/camel/impl/RouteRemoveTest.java     |    2 -
 .../apache/camel/impl/RouteSedaStopStartTest.java  |    2 -
 .../camel/impl/RouteSedaSuspendResumeTest.java     |    2 -
 .../camel/impl/RouteSuspendResumeWarmUpTest.java   |    2 -
 .../camel/impl/SerializationDataFormatTest.java    |    3 -
 .../ShutdownGracefulNoAutoStartedRoutesTest.java   |    2 -
 .../impl/ShutdownGracefulTimeoutTriggerTest.java   |    2 -
 .../SimpleShutdownGracefulNoAtuoStartedTest.java   |    2 -
 .../camel/impl/SimpleShutdownGracefulTest.java     |    2 -
 .../StartupListenerComponentFromRegistryTest.java  |    2 -
 .../camel/impl/StartupListenerComponentTest.java   |    2 -
 .../org/apache/camel/impl/StartupListenerTest.java |    2 -
 .../camel/impl/TwoRouteSuspendResumeTest.java      |    2 -
 .../camel/impl/TypeConverterAllowNullTest.java     |    2 -
 .../TypeConverterRegistryMissesThenAddTest.java    |    2 -
 ...TypeConverterRegistryStatisticsEnabledTest.java |    2 -
 .../camel/impl/TypeConverterRegistryTest.java      |    2 -
 .../camel/impl/ZipDataFormatFileDeleteTest.java    |    2 -
 .../impl/ZipDataFormatFileUnmarshalDeleteTest.java |    2 -
 .../impl/cluster/ClusterServiceSelectorTest.java   |    6 +-
 .../camel/impl/cluster/ClusterServiceViewTest.java |    1 +
 .../camel/impl/event/EventNotifierEventsTest.java  |  173 +++
 .../event/EventNotifierExchangeCompletedTest.java  |  103 ++
 .../EventNotifierExchangeSentParallelTest.java     |   73 ++
 .../impl/event/EventNotifierExchangeSentTest.java  |  197 +++
 .../EventNotifierFailureHandledEventsTest.java     |  204 +++
 .../event/EventNotifierRedeliveryEventsTest.java   |  142 +++
 ...ventNotifierServiceStoppingFailedEventTest.java |  109 ++
 .../event/MultipleEventNotifierEventsTest.java     |  184 +++
 .../impl/health/DefaultHealthCheckServiceTest.java |    3 +-
 .../org/apache/camel/issues/AdviceWithCBRTest.java |    2 -
 .../camel/issues/AdviceWithInterceptTest.java      |    2 -
 .../apache/camel/issues/AdviceWithIssueTest.java   |    2 -
 .../camel/issues/AdviceWithOnCompletionTest.java   |    2 -
 .../issues/AdviceWithOnExceptionRemoveTest.java    |    2 -
 .../camel/issues/AdviceWithOnExceptionTest.java    |    2 -
 .../apache/camel/issues/AdviceWithPolicyTest.java  |    2 -
 .../camel/issues/AdviceWithRoutePolicyTest.java    |    2 -
 .../camel/issues/AdviceWithTransactedTest.java     |    2 -
 .../camel/issues/AdviceWithWeaveByTypeCBRTest.java |    3 -
 .../AggregatorWithBatchConsumingIssueTest.java     |    2 -
 .../apache/camel/issues/AmahDeadLetterTest.java    |    2 -
 .../camel/issues/CBRConcurrencyIssueTest.java      |    2 -
 .../apache/camel/issues/CBRContainsIssueTest.java  |    2 -
 .../issues/CBRCustomPredicateAsFilterTest.java     |    2 -
 .../camel/issues/ChangeHeaderCaseIssueTest.java    |    2 -
 .../CharlesSplitAndTryCatchRollbackIssueTest.java  |    2 -
 ...CharlesSplitUseBeanAsErrorHandlerIssueTest.java |    2 -
 .../issues/ChoicePredicateSimpleHeaderTest.java    |    2 -
 .../org/apache/camel/issues/DavidSiefertTest.java  |    2 -
 .../camel/issues/ExceptionCamel4022Test.java       |    2 -
 .../camel/issues/ExceptionPolicyIssueTest.java     |    2 -
 .../org/apache/camel/issues/ExceptionTest.java     |    2 -
 ...tionThrownFromOnExceptionNoEndlessLoopTest.java |    2 -
 .../camel/issues/FilePollingConsumerIssueTest.java |    2 -
 .../issues/FileSplitStreamingWithChoiceTest.java   |    2 -
 .../issues/FilterCustomPredicateAsFilterTest.java  |    2 -
 .../org/apache/camel/issues/GertJBIIssueTest.java  |    2 -
 .../InterceptCustomPredicateAsFilterTest.java      |    2 -
 .../java/org/apache/camel/issues/Issue170Test.java |    2 -
 .../java/org/apache/camel/issues/Issue3Test.java   |    2 -
 .../camel/issues/MockExepctedHeadersIssueTest.java |    2 -
 ...icastAggregationStrategyThrowExceptionTest.java |    2 -
 ...lelStopOnExceptionWithOnExceptionIssueTest.java |    2 -
 .../MulticastParallelWithOnExceptionIssueTest.java |    2 -
 .../MulticastPipelineAggregateIssueTest.java       |    2 -
 .../issues/MulticastSingleAggregateIssueTest.java  |    2 -
 ...astStopOnExceptionWithOnExceptionIssueTest.java |    2 -
 .../issues/MulticastWithOnExceptionIssueTest.java  |    2 -
 .../org/apache/camel/issues/NeilSplitterTest.java  |    2 -
 ...derExactlyDoneSplitterWhereSentToIssueTest.java |    3 -
 .../OnExceptionBeforeErrorHandlerIssueTest.java    |    2 -
 .../camel/issues/OnExceptionProcessIssueTest.java  |    2 -
 .../camel/issues/ProxyReturnNullIssueTest.java     |    2 -
 .../RecipientListErrorHandlingIssueTest.java       |    2 -
 .../camel/issues/RegExPredicateIssueTest.java      |    2 -
 ...ryContextScopedUntilRecipientListIssueTest.java |    2 -
 ...tScopedUntilRecipientListParallelIssueTest.java |    2 -
 ...etryRouteScopedUntilRecipientListIssueTest.java |    2 -
 ...eScopedUntilRecipientListParallelIssueTest.java |    2 -
 .../apache/camel/issues/RomeksExceptionTest.java   |    2 -
 ...ScopedOnExceptionMultipleRouteBuildersTest.java |    1 -
 .../apache/camel/issues/RouteWithCustomIdTest.java |    2 -
 .../issues/SentExchangeEventNotifierIssueTest.java |   10 +-
 .../SentExchangeEventNotifierTwoIssueTest.java     |    8 +-
 .../camel/issues/SetBodyTryCatchIssueTest.java     |    2 -
 .../camel/issues/SetHeaderInDoCatchIssueTest.java  |    2 -
 .../apache/camel/issues/SetHeaderIssueTest.java    |    2 -
 .../camel/issues/SplitPropertiesFileIssueTest.java |    2 -
 .../issues/SplitStopOnExceptionIssueTest.java      |    2 -
 .../SplitWithCustomAggregationStrategyTest.java    |    2 -
 .../issues/SplitterCorrelationIdIssueTest.java     |    2 -
 .../SplitterThrowExceptionInExpressionTest.java    |    2 -
 .../SplitterThrowExceptionInExpressionTwoTest.java |    3 -
 ...terUsingBeanReturningCloseableIteratorTest.java |    2 -
 .../SplitterUsingBeanReturningMessageTest.java     |    2 -
 ...ThreadsRejectedExecutionWithDeadLetterTest.java |    3 -
 .../issues/TimerAndErrorHandlerIssueTest.java      |    2 -
 .../TryCatchFinallyOnExceptionIssueTest.java       |    2 -
 .../camel/issues/TryCatchSetHeaderIssueTest.java   |    2 -
 .../camel/issues/TryCatchWithSplitIssueTest.java   |    2 -
 .../TryCatchWithSplitNotHandledIssueTest.java      |    3 -
 .../apache/camel/issues/TwoTimerWithJMXIssue.java  |    6 +-
 .../apache/camel/issues/XPathSplitStreamTest.java  |    2 -
 .../language/BeanLanguageInvalidOGNLTest.java      |    2 -
 .../camel/language/BeanLanguageOGNLTest.java       |    2 -
 ...LWithDotInParameterPropertyPlaceholderTest.java |    2 -
 .../BeanLanguageOGNLWithDotInParameterTest.java    |    2 -
 .../java/org/apache/camel/language/BeanTest.java   |    2 -
 .../language/XPathAnotherRouteConcurrentTest.java  |    2 -
 .../apache/camel/language/XPathFunctionTest.java   |    2 -
 .../camel/language/XPathOutFunctionTest.java       |    2 -
 .../language/XPathRouteConcurrentBigTest.java      |    2 -
 .../camel/language/XPathRouteConcurrentTest.java   |    2 -
 .../java/org/apache/camel/language/XPathTest.java  |    2 -
 .../camel/language/simple/SimpleOperatorTest.java  |    2 -
 .../apache/camel/language/simple/SimpleTest.java   |    3 -
 .../java/org/apache/camel/main/MainExample.java    |    2 -
 .../test/java/org/apache/camel/main/MainTest.java  |    2 -
 .../java/org/apache/camel/main/MainVetoTest.java   |    2 -
 .../camel/management/AddEventNotifierTest.java     |  101 --
 .../management/CamelChoiceWithManagementTest.java  |  102 --
 .../management/CamelContextDisableJmxTest.java     |   38 -
 .../apache/camel/management/CustomEndpoint.java    |   55 -
 .../DualManagedThreadPoolProfileTest.java          |  102 --
 .../DualManagedThreadPoolWithIdTest.java           |   85 --
 .../camel/management/EventNotifierEventsTest.java  |  187 ---
 .../EventNotifierExchangeCompletedTest.java        |  112 --
 .../EventNotifierExchangeSentParallelTest.java     |   77 --
 .../management/EventNotifierExchangeSentTest.java  |  206 ---
 .../EventNotifierFailureHandledEventsTest.java     |  218 ----
 .../EventNotifierRedeliveryEventsTest.java         |  151 ---
 ...ventNotifierServiceStoppingFailedEventTest.java |  122 --
 .../management/ExceptionWithManagementTest.java    |   73 --
 ...ationOnlyRegisterProcessorWithCustomIdTest.java |  106 --
 .../JmxInstrumentationUsingPlatformMBSTest.java    |   79 --
 .../JmxNotificationEventNotifierTest.java          |  140 ---
 .../camel/management/JmxRecipientListTest.java     |  128 --
 .../camel/management/LoggingEventNotifierTest.java |   84 --
 .../management/ManagedAggregateControllerTest.java |  197 ---
 .../ManagedBrowsableEndpointAsXmlFileTest.java     |   69 -
 .../ManagedBrowsableEndpointAsXmlTest.java         |  292 -----
 .../ManagedBrowsableEndpointEmptyTest.java         |   53 -
 .../management/ManagedBrowsableEndpointTest.java   |   77 --
 .../ManagedCamelContextAutoStartupTest.java        |   74 --
 .../ManagedCamelContextDumpRoutesAsXmlTest.java    |   71 --
 ...ManagedCamelContextDumpRoutesCoverageAsXml.java |   76 --
 .../ManagedCamelContextDumpStatsAsXmlTest.java     |   77 --
 .../ManagedCamelContextEmptyRouteTest.java         |   66 -
 .../ManagedCamelContextPropertiesTest.java         |   84 --
 .../management/ManagedCamelContextRestartTest.java |  117 --
 .../ManagedCamelContextSuspendResumeTest.java      |   87 --
 .../ManagedCamelContextSuspendStartTest.java       |   87 --
 .../camel/management/ManagedCamelContextTest.java  |  424 -------
 ...ManagedCamelContextUpdateRoutesFromXmlTest.java |   94 --
 ...RoutesWithPropertyPlaceholdersFromXmlPTest.java |  164 ---
 .../ManagedCanekContextExchangeStatisticsTest.java |   95 --
 .../apache/camel/management/ManagedChoiceTest.java |   95 --
 .../camel/management/ManagedComponentTest.java     |  124 --
 .../management/ManagedConsumerCacheHitsTest.java   |  136 --
 .../camel/management/ManagedConsumerCacheTest.java |  104 --
 .../camel/management/ManagedConvertBodyTest.java   |   91 --
 .../camel/management/ManagedCustomBeanTest.java    |   98 --
 .../management/ManagedCustomComponentNameTest.java |   75 --
 .../management/ManagedCustomLoadBalancerTest.java  |  119 --
 .../camel/management/ManagedCustomPolicyTest.java  |  103 --
 .../management/ManagedCustomProcessorTest.java     |  110 --
 .../camel/management/ManagedDataFormatTest.java    |   76 --
 .../camel/management/ManagedDelayerTest.java       |   90 --
 .../management/ManagedDualCamelContextTest.java    |   92 --
 .../camel/management/ManagedDuplicateIdTest.java   |   65 -
 .../camel/management/ManagedDynamicRouterTest.java |  118 --
 .../management/ManagedEndpointExplainTest.java     |   68 -
 .../management/ManagedEndpointRegistryTest.java    |  109 --
 .../camel/management/ManagedEndpointTest.java      |   59 -
 .../ManagedEndpointUtilizationStatisticsTest.java  |   72 --
 .../camel/management/ManagedEnricherTest.java      |  114 --
 .../management/ManagedErrorHandlerOptionsTest.java |  157 ---
 .../ManagedErrorHandlerRedeliveryTest.java         |  156 ---
 .../camel/management/ManagedErrorHandlerTest.java  |   69 -
 .../ManagedFailoverLoadBalancerTest.java           |  121 --
 .../management/ManagedFileIdempotentClearTest.java |  142 ---
 .../ManagedFileIdempotentConsumerTest.java         |  149 ---
 .../ManagedFileWatcherReloadStrategyTest.java      |   73 --
 .../apache/camel/management/ManagedFilterTest.java |   96 --
 .../management/ManagedInflightRepositoryTest.java  |   76 --
 .../management/ManagedInflightStatisticsTest.java  |  140 ---
 .../management/ManagedInlinedProcessorTest.java    |   72 --
 .../camel/management/ManagedInterceptFromTest.java |   55 -
 .../camel/management/ManagedInterceptTest.java     |   73 --
 .../management/ManagedListComponentsTest.java      |   66 -
 .../camel/management/ManagedLoadBalancerTest.java  |   74 --
 .../camel/management/ManagedLogEndpointTest.java   |  101 --
 .../apache/camel/management/ManagedLoopTest.java   |   93 --
 .../camel/management/ManagedMarshalTest.java       |   95 --
 .../ManagedMemoryIdempotentClearTest.java          |  187 ---
 .../ManagedMemoryIdempotentConsumerTest.java       |  191 ---
 .../camel/management/ManagedMulticastTest.java     |   90 --
 .../management/ManagedNamePatternFixedTest.java    |   61 -
 .../ManagedNamePatternIncludeHostNameTest.java     |   64 -
 .../ManagedNamePatternJvmSystemPropertyTest.java   |   68 -
 .../camel/management/ManagedNamePatternTest.java   |   61 -
 .../management/ManagedNonManagedServiceTest.java   |  115 --
 .../camel/management/ManagedPollEnricherTest.java  |  110 --
 .../camel/management/ManagedProcessTest.java       |  101 --
 ...gedProducerRecipientListRegisterAlwaysTest.java |   82 --
 .../ManagedProducerRecipientListTest.java          |   60 -
 ...edProducerRouteAddRemoveRegisterAlwaysTest.java |  114 --
 .../camel/management/ManagedProducerTest.java      |   74 --
 .../management/ManagedRandomLoadBalancerTest.java  |   87 --
 .../camel/management/ManagedRecipientListTest.java |  113 --
 .../camel/management/ManagedRefProducerTest.java   |  103 --
 .../ManagedRegisterCamelContextTest.java           |   57 -
 .../management/ManagedRegisterEndpointTest.java    |   70 --
 .../ManagedRegisterExchangeStatisticsTest.java     |   62 -
 .../camel/management/ManagedRegisterRouteTest.java |   92 --
 .../management/ManagedRegisterTwoRoutesTest.java   |   67 -
 .../ManagedRemoveRouteAggregateThreadPoolTest.java |   76 --
 .../camel/management/ManagedResequencerTest.java   |   95 --
 .../ManagedResetIncludeProcessorsTest.java         |  123 --
 .../management/ManagedResetIncludeRoutesTest.java  |  124 --
 .../ManagedRoundRobinLoadBalancerTest.java         |   97 --
 .../management/ManagedRouteAddFromRouteTest.java   |   97 --
 .../management/ManagedRouteAutoStartupTest.java    |   77 --
 .../ManagedRouteDumpRouteAsXmlPlaceholderTest.java |   95 --
 .../management/ManagedRouteDumpRouteAsXmlTest.java |  100 --
 ...DumpStatsAsXmlAndResetWithCustomDomainTest.java |   93 --
 ...ManagedRouteDumpStatsAsXmlCustomDomainTest.java |   78 --
 .../management/ManagedRouteDumpStatsAsXmlTest.java |   72 --
 .../management/ManagedRouteGetPropertiesTest.java  |   78 --
 .../management/ManagedRouteLoadstatisticsTest.java |  115 --
 .../ManagedRoutePerformanceCounterTest.java        |  108 --
 ...edRouteRemoveContextScopedErrorHandlerTest.java |  101 --
 ...emoveRouteAndContextScopedErrorHandlerTest.java |  161 ---
 ...agedRouteRemoveRouteScopedErrorHandlerTest.java |  100 --
 .../camel/management/ManagedRouteRemoveTest.java   |   97 --
 ...edRouteRemoveWireTapExplicitThreadPoolTest.java |  112 --
 .../management/ManagedRouteRemoveWireTapTest.java  |  101 --
 .../ManagedRouteShutdownAndStartTest.java          |   96 --
 .../management/ManagedRouteStopAndStartTest.java   |  117 --
 .../camel/management/ManagedRouteStopTest.java     |   95 --
 .../ManagedRouteStopUsingMBeanAPITest.java         |   76 --
 .../ManagedRouteStopWithAbortAfterTimeoutTest.java |  137 --
 .../ManagedRouteSuspendAndResumeTest.java          |  116 --
 .../ManagedRouteUpdateRouteFromXmlTest.java        |  166 ---
 .../ManagedRouteWithOnExceptionTest.java           |  100 --
 .../camel/management/ManagedRoutingSlipTest.java   |  114 --
 .../management/ManagedRuntimeCamelCatalogTest.java |   59 -
 .../camel/management/ManagedSanitizeTest.java      |   62 -
 .../ManagedScheduledPollConsumerTest.java          |  123 --
 .../camel/management/ManagedSedaEndpointTest.java  |   95 --
 .../management/ManagedSedaRouteRemoveTest.java     |  113 --
 .../ManagedSendDynamicProcessorTest.java           |  119 --
 .../camel/management/ManagedSendProcessorTest.java |   98 --
 .../management/ManagedServiceUrlPathTest.java      |  107 --
 ...ManagedSetAndRemoveHeaderAndPropertiesTest.java |   99 --
 .../management/ManagedShutdownStrategyTest.java    |   62 -
 .../camel/management/ManagedSplitterTest.java      |   98 --
 .../management/ManagedStatisticsDisabledTest.java  |   95 --
 .../management/ManagedStatisticsLevelOffTest.java  |   85 --
 .../ManagedStatisticsLevelRoutesOnlyTest.java      |   94 --
 .../camel/management/ManagedStatisticsTest.java    |  102 --
 .../ManagedStatisticsWithSplitterTest.java         |   92 --
 .../management/ManagedStickyLoadBalancerTest.java  |   98 --
 .../ManagedStreamCachingStrategyTest.java          |  107 --
 .../management/ManagedSuspendedServiceTest.java    |  137 --
 .../management/ManagedThreadPoolProfileTest.java   |   98 --
 .../camel/management/ManagedThreadPoolTest.java    |   94 --
 .../management/ManagedThreadPoolWithIdTest.java    |   79 --
 .../camel/management/ManagedThreadsTest.java       |   87 --
 .../camel/management/ManagedThrottlerTest.java     |  350 ------
 .../ManagedThrottlingExceptionRoutePolicyTest.java |  173 ---
 .../ManagedThrottlingInflightRoutePolicyTest.java  |   79 --
 .../apache/camel/management/ManagedTimerTest.java  |   87 --
 .../management/ManagedTopicLoadBalancerTest.java   |   82 --
 .../ManagedTypeConverterRegistryTest.java          |  140 ---
 .../camel/management/ManagedUnmarshalTest.java     |   95 --
 .../ManagedUnregisterCamelContextTest.java         |   65 -
 .../management/ManagedUnregisterComponentTest.java |   70 --
 .../management/ManagedUnregisterConsumerTest.java  |   74 --
 .../management/ManagedUnregisterEndpointTest.java  |   59 -
 .../management/ManagedUnregisterProcessorTest.java |   63 -
 .../management/ManagedUnregisterProducerTest.java  |   75 --
 .../management/ManagedUnregisterRouteTest.java     |   61 -
 .../ManagedWeightedLoadBalancerTest.java           |  107 --
 .../camel/management/ManagedWireTapTest.java       |  116 --
 .../camel/management/ManagementTestSupport.java    |   52 -
 .../MultipleEventNotifierEventsTest.java           |  206 ---
 .../camel/management/PublishEventNotifierTest.java |   84 --
 .../PublishEventNotifierToRouteTest.java           |   86 --
 .../camel/management/RemoveEventNotifierTest.java  |  100 --
 .../management/RemoveRouteDefinitionTest.java      |  130 --
 ...nagedCamelContextAutoAssignedNameClashTest.java |   79 --
 .../TwoManagedCamelContextClashTest.java           |  129 --
 .../management/TwoManagedCamelContextTest.java     |   80 --
 .../management/TwoManagedNamePatternTest.java      |   81 --
 .../model/GenerateXmFromCamelContextTest.java      |    2 -
 .../org/apache/camel/model/GenerateXmlTest.java    |    2 -
 .../apache/camel/model/LoadRestFromXmlTest.java    |    3 -
 .../apache/camel/model/LoadRouteFromXmlTest.java   |    2 -
 .../model/LoadRouteFromXmlWithInterceptTest.java   |    2 -
 .../model/LoadRouteFromXmlWithOnExceptionTest.java |    2 -
 .../model/LoadRouteFromXmlWithPolicyTest.java      |    2 -
 .../model/StartingRoutesErrorReportedTest.java     |    2 -
 .../java/org/apache/camel/model/XmlParseTest.java  |    2 -
 .../org/apache/camel/model/XmlTestSupport.java     |    2 -
 .../apache/camel/processor/AsyncLoopCopyTest.java  |    2 -
 .../org/apache/camel/processor/AsyncLoopTest.java  |    2 -
 .../BatchResequencerAllowDuplicatesTest.java       |    2 -
 .../processor/BatchResequencerJMSPriorityTest.java |    2 -
 .../BatchResequencerWithDuplicateTest.java         |    2 -
 .../BeanOgnMethodWithXPathInjectionTest.java       |    2 -
 .../BeanProcessorSpecializedMessageTest.java       |    2 -
 .../BeanRecipientListNoMethodNameTest.java         |    2 -
 .../camel/processor/BeanRecipientListTest.java     |    2 -
 .../processor/BeanRecipientListTimeoutTest.java    |    2 -
 .../org/apache/camel/processor/BeanRouteTest.java  |    2 -
 .../camel/processor/BeanWithExceptionTest.java     |    2 -
 .../processor/BeanWithXPathInjectionTest.java      |    2 -
 .../camel/processor/BreadcrumbDisabledTest.java    |    2 -
 .../org/apache/camel/processor/BreadcrumbTest.java |    2 -
 .../camel/processor/CBRHeaderPredicateTest.java    |    2 -
 .../CBRPredicateBeanThrowExceptionTest.java        |    2 -
 .../processor/CBRSimplePredicateEmptyBodyTest.java |    2 -
 .../processor/CBRWhenUnmarshalEndChoiceTest.java   |    2 -
 .../camel/processor/CBRWithLoadBalancerTest.java   |    2 -
 .../camel/processor/CBRWithMulticastTest.java      |    2 -
 .../camel/processor/CBRWithRecipientListTest.java  |    2 -
 .../apache/camel/processor/CBRWithWireTapTest.java |    2 -
 .../org/apache/camel/processor/ChannelTest.java    |    9 -
 .../apache/camel/processor/ChoiceAsyncTest.java    |    2 -
 .../processor/ChoiceCompoundPredicateTest.java     |    2 -
 .../apache/camel/processor/ChoiceNoActionTest.java |    2 -
 .../org/apache/camel/processor/ChoiceTest.java     |    2 -
 .../processor/ChoiceWhenNotPredicateTest.java      |    2 -
 .../apache/camel/processor/ChoiceWithEndTest.java  |    2 -
 .../processor/ChoiceWithSimpleExpressionTest.java  |    2 -
 .../CreateRouteWithNonExistingEndpointTest.java    |    2 -
 .../processor/CustomProcessorFactoryTest.java      |    2 -
 .../camel/processor/CustomRoutePolicyTest.java     |    2 -
 .../processor/CustomScheduledRoutePolicyTest.java  |    2 -
 .../org/apache/camel/processor/DataFormatTest.java |    2 -
 ...ChannelBuilderWithInvalidDeadLetterUriTest.java |    2 -
 .../camel/processor/DeadLetterChannelTest.java     |    2 -
 ...LetterChannelUseOriginalInBodyWithFileTest.java |    2 -
 .../DefinitionPolicyPerProcessorTest.java          |    2 -
 .../camel/processor/DelayerAsyncDelayedTest.java   |    2 -
 .../camel/processor/DelayerPerRouteTest.java       |    2 -
 .../org/apache/camel/processor/DelayerTest.java    |    2 -
 .../DoubleLoadBalancerMisconfigurationTest.java    |    2 -
 .../apache/camel/processor/DualPipelineTest.java   |    2 -
 .../apache/camel/processor/DynamicRouter2Test.java |    2 -
 .../apache/camel/processor/DynamicRouter3Test.java |    2 -
 .../processor/DynamicRouterAnnotationTest.java     |    2 -
 .../DynamicRouterExchangeHeaders2Test.java         |    2 -
 .../DynamicRouterExchangeHeadersTest.java          |    2 -
 .../DynamicRouterExchangePropertiesTest.java       |    2 -
 .../apache/camel/processor/DynamicRouterTest.java  |    2 -
 ...point2MustBeStartedBeforeSendProcessorTest.java |    2 -
 ...dpointMustBeStartedBeforeSendProcessorTest.java |    2 -
 ...HandlerOnExceptionRedeliveryAndHandledTest.java |    2 -
 .../EventNotifierExchangeSentExampleTest.java      |    3 +-
 .../processor/EventNotifierExchangeSentTest.java   |    2 +-
 .../processor/ExceptionHandlerStreamCacheTest.java |    1 -
 .../processor/ExchangeCreatedTimestampTest.java    |    2 -
 .../processor/ExchangeIdempotentConsumerTest.java  |    2 -
 .../FailOverLoadBalanceWithRedeliveryTest.java     |    2 -
 .../FailoverMaximumFailoverAttemptsTest.java       |    2 -
 .../processor/FailoverRoundRobinGoodBadTest.java   |    2 -
 .../processor/FailoverRoundRobinStickyTest.java    |    2 -
 .../camel/processor/FailoverRoundRobinTest.java    |    2 -
 .../apache/camel/processor/FailoverStickyTest.java |    2 -
 .../org/apache/camel/processor/FaultRouteTest.java |    2 -
 .../camel/processor/FileIdempotentClearTest.java   |    2 -
 .../FileIdempotentConsumerLoadStoreTest.java       |    2 -
 .../processor/FileIdempotentConsumerTest.java      |    2 -
 .../camel/processor/FileIdempotentRemoveTest.java  |    2 -
 .../processor/FileIdempotentTrunkStoreTest.java    |    2 -
 .../processor/FileRollbackOnCompletionTest.java    |    2 -
 .../camel/processor/FilterNotMatchedTest.java      |    2 -
 .../org/apache/camel/processor/FilterNotTest.java  |    2 -
 .../apache/camel/processor/FilterSimpleTest.java   |    2 -
 .../org/apache/camel/processor/FilterTest.java     |    2 -
 .../apache/camel/processor/FlipRoutePolicy.java    |    2 -
 .../camel/processor/FlipRoutePolicyTest.java       |    2 -
 .../apache/camel/processor/FromToInOutTest.java    |    2 -
 .../camel/processor/HandleFaultPerRouteTest.java   |    2 -
 .../processor/IdempotentConsumerAsyncTest.java     |    2 -
 .../IdempotentConsumerCompletionEagerTest.java     |    2 -
 .../processor/IdempotentConsumerEagerTest.java     |    2 -
 .../IdempotentConsumerNoMessageIdTest.java         |    2 -
 .../IdempotentConsumerRemoveOnFailureTest.java     |    3 -
 .../IdempotentConsumerRepoExceptionTest.java       |    2 -
 .../camel/processor/IdempotentConsumerTest.java    |    2 -
 ...dempotentConsumerUsingCustomRepositoryTest.java |    2 -
 .../processor/InheritErrorHandlerDefaultTest.java  |    2 -
 .../processor/InheritErrorHandlerFalseTest.java    |    2 -
 .../processor/InheritErrorHandlerTrueTest.java     |    2 -
 .../camel/processor/InlinedProcessorIdTest.java    |    2 -
 .../org/apache/camel/processor/JoinRoutesTest.java |    2 -
 .../camel/processor/LanguageBuilderTest.java       |    2 -
 .../camel/processor/LogGlobalLogNameTest.java      |    2 -
 .../apache/camel/processor/LogProcessorTest.java   |    2 -
 .../LogProcessorWithProvidedLoggerTest.java        |    3 -
 .../apache/camel/processor/LogPropertiesTest.java  |    2 -
 .../apache/camel/processor/LoopCopyErrorTest.java  |    2 -
 .../org/apache/camel/processor/LoopCopyTest.java   |    2 -
 .../org/apache/camel/processor/LoopNoCopyTest.java |    2 -
 .../java/org/apache/camel/processor/LoopTest.java  |    2 -
 .../org/apache/camel/processor/MDCAsyncTest.java   |    2 -
 .../processor/MDCOnCompletionOnCompletionTest.java |    3 -
 .../camel/processor/MDCOnCompletionTest.java       |    2 -
 .../java/org/apache/camel/processor/MDCTest.java   |    2 -
 .../camel/processor/MDCWithBreadcrumbTest.java     |    2 -
 .../camel/processor/MarkRollbackOnlyTest.java      |    2 -
 .../processor/MessageHistoryCopyExchangeTest.java  |    2 -
 .../processor/MessageHistoryDumpRoutingTest.java   |    2 -
 .../apache/camel/processor/MethodFilterTest.java   |    2 -
 .../processor/MulticastCompletedPropertyTest.java  |    2 -
 .../MulticastFineGrainedErrorHandlingTest.java     |    2 -
 .../MulticastKeepOriginalMessageUnchangedTest.java |    2 -
 .../processor/MulticastNoStopOnExceptionTest.java  |    2 -
 .../MulticastParallelAllTimeoutAwareTest.java      |    2 -
 .../MulticastParallelFailureEndpointTest.java      |    2 -
 ...ticastParallelFineGrainedErrorHandlingTest.java |    2 -
 .../MulticastParallelLastTimeoutTest.java          |    2 -
 .../MulticastParallelMiddleTimeoutTest.java        |    2 -
 .../MulticastParallelNoStopOnExceptionTest.java    |    2 -
 .../MulticastParallelStopOnExceptionTest.java      |    2 -
 .../processor/MulticastParallelStreamingTest.java  |    2 -
 .../MulticastParallelStreamingTimeoutTest.java     |    2 -
 .../MulticastParallelStreamingTwoTimeoutTest.java  |    2 -
 .../processor/MulticastParallelStressTest.java     |    2 -
 .../camel/processor/MulticastParallelTest.java     |    2 -
 .../processor/MulticastParallelTimeout2Test.java   |    2 -
 .../processor/MulticastParallelTimeout3Test.java   |    2 -
 .../MulticastParallelTimeoutAwareTest.java         |    2 -
 .../processor/MulticastParallelTimeoutTest.java    |    2 -
 .../MulticastParallelTwoTimeoutMiddleTest.java     |    2 -
 .../processor/MulticastParallelTwoTimeoutTest.java |    2 -
 ...castStopOnExceptionLastWithOnExceptionTest.java |    2 -
 .../processor/MulticastStopOnExceptionTest.java    |    2 -
 ...ulticastStopOnExceptionWithOnExceptionTest.java |    2 -
 .../processor/MulticastStreamCachingTest.java      |    2 -
 .../org/apache/camel/processor/MulticastTest.java  |    2 -
 .../processor/MulticastThreadPoolProfileTest.java  |    2 -
 .../MulticastWithOnExceptionFirstTest.java         |    2 -
 .../MulticastWithOnExceptionLastTest.java          |    2 -
 .../processor/MulticastWithOnExceptionTest.java    |    2 -
 .../camel/processor/MyLoggingSentEventNotifer.java |   21 +-
 .../camel/processor/MySentEventNotifier.java       |   22 +-
 .../org/apache/camel/processor/MyValidator.java    |    2 -
 .../processor/NewProcessorAndServiceTest.java      |    2 -
 .../apache/camel/processor/NoErrorHandlerTest.java |   96 --
 ...deliveryWhileStoppingDeadLetterChannelTest.java |    2 -
 .../NotAllowRedeliveryWhileStoppingTest.java       |    2 -
 ...letionAndInterceptAndOnExceptionGlobalTest.java |    2 -
 ...nCompletionAndInterceptGlobalSSEnabledTest.java |    2 -
 .../OnCompletionAndInterceptGlobalTest.java        |    2 -
 .../processor/OnCompletionAndInterceptTest.java    |    2 -
 .../camel/processor/OnCompletionAsyncTest.java     |    2 -
 .../camel/processor/OnCompletionContainsTest.java  |    2 -
 .../OnCompletionGlobalCustomPoolTest.java          |    2 -
 .../camel/processor/OnCompletionGlobalTest.java    |    2 -
 .../OnCompletionInvalidConfiguredTest.java         |    2 -
 .../OnCompletionMoreGlobalRouteCompletionTest.java |    2 -
 .../processor/OnCompletionMoreGlobalTest.java      |    2 -
 .../processor/OnCompletionOnCompleteOnlyTest.java  |    2 -
 .../processor/OnCompletionOnFailureOnlyTest.java   |    2 -
 ...ompletionRouteScopeOverrideGlobalScopeTest.java |    2 -
 .../processor/OnCompletionShouldBeLastTest.java    |    2 -
 .../apache/camel/processor/OnCompletionTest.java   |    2 -
 .../processor/OnCompletionUseOriginalBodyTest.java |    2 -
 .../camel/processor/OnCompletionWhenTest.java      |    2 -
 .../processor/OnExceptionContinueToRouteTest.java  |    2 -
 .../camel/processor/PipelineStepWithEventTest.java |   12 +-
 .../org/apache/camel/processor/PipelineTest.java   |    2 -
 .../camel/processor/PolicyPerProcessorTest.java    |    2 -
 .../apache/camel/processor/PolicyPerRouteTest.java |    2 -
 .../ProducerTemplateDisableEventNotifierTest.java  |    3 +-
 .../RandomLoadBalanceJavaDSLBuilderTest.java       |    2 +-
 .../RecipeientListWithSimpleExpressionTest.java    |  132 --
 .../RecipientListAggregationStrategyTest.java      |    2 -
 .../camel/processor/RecipientListBeanTest.java     |    2 -
 .../RecipientListDoNotStopOnExceptionTest.java     |    2 -
 ...istExchangePropertyAggregationStrategyTest.java |    2 -
 .../RecipientListExchangePropertyTest.java         |    2 -
 .../RecipientListFineGrainedErrorHandlingTest.java |    2 -
 .../camel/processor/RecipientListLeakTest.java     |    2 -
 .../camel/processor/RecipientListNoCacheTest.java  |    2 -
 ...ntListParallelAggregateThreadPoolIssueTest.java |    3 -
 ...ntListParallelFineGrainedErrorHandlingTest.java |    2 -
 ...ParallelStopOnExceptionWithOnExceptionTest.java |    2 -
 .../RecipientListParallelStreamingTest.java        |    2 -
 .../camel/processor/RecipientListParallelTest.java |    2 -
 .../RecipientListParallelTimeoutTest.java          |    2 -
 .../RecipientListStopOnExceptionTest.java          |    2 -
 ...ientListStopOnExceptionWithOnExceptionTest.java |    2 -
 .../apache/camel/processor/RecipientListTest.java  |    2 -
 .../RecipientListWithArrayHeaderTest.java          |    2 -
 .../processor/RecipientListWithDelimiterTest.java  |    2 -
 .../RecipientListWithSimpleExpressionTest.java     |  123 ++
 ...RecipientListWithStringDelimitedHeaderTest.java |    2 -
 ...cipientListWithStringDelimitedPropertyTest.java |    2 -
 .../RedeliverWithExceptionAndFaultTest.java        |    2 -
 .../RedeliveryErrorHandlerBlockedDelayTest.java    |    2 -
 .../RedeliveryErrorHandlerLogHandledTest.java      |    2 -
 .../RedeliveryErrorHandlerNonBlockedDelayTest.java |    2 -
 ...ErrorHandlerNonBlockedRedeliveryHeaderTest.java |    2 -
 .../RedeliveryOnExceptionBlockedDelayTest.java     |    2 -
 .../RedeliveryPolicyDelayPatternTest.java          |    3 -
 .../RedeliveryPolicyPerExceptionTest.java          |    2 -
 ...StacksNeededDuringRoutingSendProcessorTest.java |  112 --
 .../ReduceStacksNeededDuringRoutingTest.java       |   72 --
 .../apache/camel/processor/ResequencerTest.java    |    2 -
 .../camel/processor/RollbackCustomMessageTest.java |    2 -
 .../processor/RollbackDefaultErrorHandlerTest.java |    2 -
 .../processor/RollbackDefaultMessageTest.java      |    2 -
 .../org/apache/camel/processor/RollbackTest.java   |    3 -
 .../camel/processor/RouteAutoStartupTest.java      |    2 -
 .../camel/processor/RouteContextProcessorTest.java |    2 -
 .../camel/processor/RouteFormattedUriTest.java     |    2 -
 .../org/apache/camel/processor/RouteIdTest.java    |    2 -
 .../camel/processor/RouteNoAutoStartupTest.java    |    2 -
 .../camel/processor/RoutePerformanceCountTest.java |    2 -
 .../camel/processor/RoutePoliciesRefTest.java      |    2 -
 .../apache/camel/processor/RoutePoliciesTest.java  |    2 -
 .../processor/RouteServicesStartupOrderTest.java   |    2 -
 .../RouteShutdownNotReverseOrderTest.java          |    2 -
 .../processor/RouteShutdownReverseOrderTest.java   |    2 -
 .../processor/RouteStartupOrderClashTest.java      |    2 -
 .../RouteStartupOrderDirectReverseTest.java        |    2 -
 .../processor/RouteStartupOrderDirectTest.java     |    2 -
 .../processor/RouteStartupOrderSimpleTest.java     |    2 -
 ...StartupOrderSuspendResumeNoAutoStartupTest.java |    2 -
 .../RouteStartupOrderSuspendResumeTest.java        |    2 -
 .../camel/processor/RouteStartupOrderTest.java     |    2 -
 .../RouteStartupOrderWithDefaultTest.java          |    2 -
 ...RouteWithConstantFieldFromExchangeFailTest.java |    2 -
 .../RouteWithConstantFieldFromExchangeTest.java    |    2 -
 .../processor/RoutingSlipInOutAndInOnlyTest.java   |    2 -
 .../camel/processor/RoutingSlipNoCacheTest.java    |    2 -
 .../camel/processor/SamplingThrottlerTest.java     |    2 -
 .../apache/camel/processor/ScriptExternalTest.java |    2 -
 .../org/apache/camel/processor/ScriptTest.java     |    2 -
 .../processor/SendToNonExistingEndpointTest.java   |    2 -
 .../camel/processor/SetBodyProcessorTest.java      |    2 -
 .../org/apache/camel/processor/SetHeaderTest.java  |    2 -
 .../SetHeaderUsingDslExpressionsTest.java          |    2 -
 .../processor/ShutdownCompleteAllTasksTest.java    |    2 -
 .../ShutdownCompleteCurrentTaskOnlyTest.java       |    2 -
 .../apache/camel/processor/ShutdownDeferTest.java  |    2 -
 .../camel/processor/ShutdownNotDeferTest.java      |    2 -
 .../ShutdownSedaAndDirectEndpointTest.java         |    2 -
 .../apache/camel/processor/SimpleDirectTest.java   |    2 -
 .../camel/processor/SimpleMockSampleTest.java      |    2 -
 .../org/apache/camel/processor/SimpleMockTest.java |    2 -
 .../processor/SimpleProcessorIdAwareTest.java      |    2 -
 .../camel/processor/SimpleProcessorTest.java       |    2 -
 .../processor/SimpleProcessorTraceableTest.java    |    2 -
 .../camel/processor/SimpleTryCatchFinallyTest.java |    2 -
 .../camel/processor/SimpleTryFinallyTest.java      |    2 -
 .../SimpleTryThrowExceptionFinallyTest.java        |    2 -
 .../org/apache/camel/processor/SimulatorTest.java  |    2 -
 .../camel/processor/SplitAggregateInOutTest.java   |    2 -
 .../camel/processor/SplitParallelTimeoutTest.java  |    2 -
 .../apache/camel/processor/SplitWithEndTest.java   |    2 -
 .../processor/SplitterCompletedPropertyTest.java   |    2 -
 .../camel/processor/SplitterMethodCallTest.java    |    2 -
 .../SplitterNoAggregationStrategyTest.java         |    2 -
 .../processor/SplitterNoStopOnExceptionTest.java   |    2 -
 .../camel/processor/SplitterOnCompletionTest.java  |    3 -
 .../processor/SplitterParallelBigFileTest.java     |    2 -
 .../SplitterParallelNoStopOnExceptionTest.java     |    2 -
 .../SplitterParallelStopOnExceptionTest.java       |    2 -
 ...ParallelStopOnExceptionWithOnExceptionTest.java |    2 -
 .../apache/camel/processor/SplitterPojoTest.java   |    2 -
 ...SplitterShareUnitOfWorkCompletionAwareTest.java |    2 -
 .../processor/SplitterStopOnExceptionTest.java     |    2 -
 ...SplitterStopOnExceptionWithOnExceptionTest.java |    2 -
 .../camel/processor/SplitterStreamCacheTest.java   |    2 -
 .../SplitterStreamingErrorHandlingTest.java        |    2 -
 ...rStreamingStopOnExceptionErrorHandlingTest.java |    2 -
 .../processor/SplitterStreamingUoWIssueTest.java   |    2 -
 .../SplitterStreamingWithErrorHandlerTest.java     |    3 -
 .../org/apache/camel/processor/SplitterTest.java   |    2 -
 .../camel/processor/SplitterUoWIssueTest.java      |    2 -
 ...litterUseOriginalNotPropagateExceptionTest.java |   10 +-
 .../processor/SplitterWithDualMulticastTest.java   |    2 -
 .../camel/processor/SplitterWithMulticastTest.java |    2 -
 .../processor/StreamCachingOnlyRouteTest.java      |    2 -
 .../camel/processor/StreamCachingPerRouteTest.java |    2 -
 .../ThreadsCoreAndMaxPoolInvalidTest.java          |    2 -
 .../ThreadsCoreAndMaxPoolKeepAliveTimeTest.java    |    2 -
 .../camel/processor/ThreadsCoreAndMaxPoolTest.java |    2 -
 .../camel/processor/ThreadsCorePoolTest.java       |    2 -
 .../apache/camel/processor/ThreadsDefaultTest.java |    2 -
 .../camel/processor/ThreadsMaxQueueSizeTest.java   |    2 -
 .../processor/ThreadsRejectedExecutionTest.java    |    2 -
 .../camel/processor/ThreadsRejectedPolicyTest.java |    2 -
 .../camel/processor/ThreadsRequestReplyTest.java   |    2 -
 .../processor/ThreadsZeroInCoreAndMaxPoolTest.java |    2 -
 .../camel/processor/ThrottlerAsyncDelayedTest.java |    2 -
 .../processor/ThrottlerInvalidConfiguredTest.java  |    2 -
 .../camel/processor/ThrottlerMethodCallTest.java   |    3 -
 .../camel/processor/ThrottlerNullEvalTest.java     |    2 -
 ...xceptionRoutePolicyHalfOpenHandlerSedaTest.java |    4 +-
 ...ingExceptionRoutePolicyHalfOpenHandlerTest.java |    4 +-
 ...ThrottlingExceptionRoutePolicyHalfOpenTest.java |    2 +-
 ...lingExceptionRoutePolicyKeepOpenOnInitTest.java |    2 +-
 ...tlingExceptionRoutePolicyOpenViaConfigTest.java |    2 +-
 .../ThrottlingExceptionRoutePolicyTest.java        |    4 +-
 .../camel/processor/ThrottlingGroupingTest.java    |    2 -
 .../ThrottlingInflightRoutePolicyTest.java         |    4 +-
 .../camel/processor/ThrowExceptionMessageTest.java |    2 -
 .../processor/ThrowExceptionNullMessageTest.java   |    2 -
 .../apache/camel/processor/ThrowExceptionTest.java |    2 -
 .../camel/processor/ToEndpointPropertyTest.java    |    2 -
 .../apache/camel/processor/TraceDelayerTest.java   |    2 -
 .../camel/processor/TraceInterceptorTest.java      |    2 -
 .../camel/processor/TracePerRouteManualTest.java   |    2 -
 .../camel/processor/TracerConfigurationTest.java   |    2 -
 .../org/apache/camel/processor/TransformTest.java  |    2 -
 .../camel/processor/TransformViaDSLTest.java       |    2 -
 .../processor/TryCatchContinueToRouteTest.java     |    2 -
 .../TryCatchMustHaveExceptionConfiguredTest.java   |    2 -
 .../camel/processor/TryCatchNestedChoiceTest.java  |    2 -
 .../camel/processor/TryProcessorHandledTest.java   |    1 -
 .../TypeConverterRegistryStatsPerformanceTest.java |    2 -
 .../camel/processor/UnitOfWorkProducerTest.java    |   21 +-
 .../UnitOfWorkSynchronizationAdapterTest.java      |    2 -
 .../org/apache/camel/processor/UnitOfWorkTest.java |    2 -
 .../processor/UnitOfWorkWithAsyncFlowTest.java     |    2 -
 .../apache/camel/processor/ValidateRegExpTest.java |    2 -
 .../camel/processor/ValidateSimpleRegExpTest.java  |    2 -
 .../apache/camel/processor/ValidateSimpleTest.java |    2 -
 .../org/apache/camel/processor/ValidationTest.java |    2 -
 .../processor/ValidationWithExceptionTest.java     |    2 -
 .../ValidationWithInFlowExceptionTest.java         |    2 -
 .../processor/ValidationWithTryCatchTest.java      |    2 -
 .../camel/processor/VerySimpleDirectTest.java      |    2 -
 .../camel/processor/WireTapNewExchangeTest.java    |    2 -
 .../camel/processor/WireTapStreamCachingTest.java  |    2 -
 ...WireTapUsingFireAndForgetCopyAsDefaultTest.java |    4 -
 .../WireTapUsingFireAndForgetCopyTest.java         |    4 -
 .../processor/WireTapUsingFireAndForgetTest.java   |    4 -
 .../apache/camel/processor/XPathChoiceTest.java    |    2 -
 .../apache/camel/processor/XPathFilterTest.java    |    2 -
 ...ithNamespaceBuilderFilterAndResultTypeTest.java |    2 -
 .../XPathWithNamespaceBuilderFilterTest.java       |    2 -
 .../processor/XPathWithNamespacesFilterTest.java   |    2 -
 .../aggregator/AbstractDistributedTest.java        |    3 -
 .../AggregateClosedCorrelationKeyTest.java         |    2 -
 .../aggregator/AggregateCompleteAllOnStopTest.java |    3 -
 .../aggregator/AggregateCompletionOnlyOneTest.java |    2 -
 .../aggregator/AggregateCompletionOnlyTwoTest.java |    2 -
 .../AggregateCompletionPredicateTest.java          |    2 -
 .../AggregateConcurrentPerCorrelationKeyTest.java  |    2 -
 .../aggregator/AggregateDiscardOnTimeoutTest.java  |    2 -
 .../AggregateEagerCheckCompletionTest.java         |    2 -
 .../AggregateExpressionSizeFallbackTest.java       |    2 -
 .../AggregateExpressionSizeOverrideFixedTest.java  |    2 -
 ...gateExpressionSizeOverrideFixedTimeoutTest.java |    2 -
 .../aggregator/AggregateExpressionSizeTest.java    |    2 -
 .../AggregateExpressionTimeoutFallbackTest.java    |    2 -
 .../AggregateExpressionTimeoutPerGroupTest.java    |    2 -
 .../aggregator/AggregateExpressionTimeoutTest.java |    2 -
 ...AggregateForceCompletionOnStopParallelTest.java |    2 -
 .../AggregateForceCompletionOnStopTest.java        |    2 -
 .../AggregateIgnoreInvalidCorrelationKeysTest.java |    2 -
 .../aggregator/AggregateMultipleSourceTest.java    |    2 -
 .../AggregateNewExchangeAndConfirmTest.java        |    1 -
 .../AggregateParallelProcessingTest.java           |    2 -
 .../AggregatePreCompleteAwareStrategyTest.java     |    2 -
 ...gregatePreCompleteAwareStrategyTimeoutTest.java |    2 -
 .../aggregator/AggregateProcessorTest.java         |    2 -
 .../AggregateRepositoryReturnNullTest.java         |    2 -
 .../AggregateShutdownThreadPoolTest.java           |    2 -
 .../AggregateSimplePredicateEagerTest.java         |    2 -
 .../aggregator/AggregateSimplePredicateTest.java   |    2 -
 .../aggregator/AggregateSimpleSizeTest.java        |    2 -
 .../aggregator/AggregateSimpleTimeoutTest.java     |    2 -
 .../aggregator/AggregateThreadPoolProfileTest.java |    2 -
 .../aggregator/AggregateTimeoutOnlyTest.java       |    1 -
 .../processor/aggregator/AggregateTimeoutTest.java |    3 -
 .../AggregateTimeoutWithExecutorServiceTest.java   |    1 -
 .../aggregator/AggregatorConcurrencyTest.java      |    2 -
 .../camel/processor/aggregator/AggregatorTest.java |    2 -
 .../aggregator/AlbertoAggregatorTest.java          |    2 -
 .../aggregator/BeanBeforeAggregateIssueTest.java   |    2 -
 ...DistributedConcurrentPerCorrelationKeyTest.java |    3 -
 .../DistributedOptimisticLockFailingTest.java      |    3 -
 .../aggregator/DistributedTimeoutTest.java         |    3 -
 .../EnricherRouteNumberOfProcessorTest.java        |    2 -
 .../SplitRouteNumberOfProcessorTest.java           |    2 -
 .../processor/async/AsyncEndpointCBRTest.java      |    2 -
 .../AsyncEndpointCustomAsyncInterceptorTest.java   |    2 -
 .../async/AsyncEndpointCustomRoutePolicyTest.java  |    2 -
 .../processor/async/AsyncEndpointDelayUoWTest.java |    2 -
 .../async/AsyncEndpointDualMulticastTest.java      |    2 -
 .../AsyncEndpointDualTopicLoadBalanceTest.java     |    2 -
 .../processor/async/AsyncEndpointEnricherTest.java |    2 -
 .../AsyncEndpointEventNotifierSendingTest.java     |   18 +-
 .../async/AsyncEndpointEventNotifierTest.java      |   18 +-
 ...AsyncEndpointFailOverLoadBalanceMixed2Test.java |    2 -
 ...AsyncEndpointFailOverLoadBalanceMixed3Test.java |    2 -
 .../AsyncEndpointFailOverLoadBalanceMixedTest.java |    2 -
 ...ncEndpointFailOverLoadBalanceOnlyAsyncTest.java |    2 -
 ...ncEndpointFailedAfterDeadLetterChannelTest.java |    2 -
 ...EndpointFailedAfterOnExceptionContinueTest.java |    2 -
 ...cEndpointFailedAfterOnExceptionHandledTest.java |    2 -
 .../async/AsyncEndpointFailedAfterTest.java        |    2 -
 .../AsyncEndpointFailureProcessorContinueTest.java |    2 -
 .../async/AsyncEndpointFailureProcessorTest.java   |    2 -
 .../processor/async/AsyncEndpointFilterTest.java   |    2 -
 .../async/AsyncEndpointIdempotentConsumerTest.java |    2 -
 .../processor/async/AsyncEndpointLoopTest.java     |    2 -
 ...pointMulticastFineGrainedErrorHandlingTest.java |    2 -
 .../async/AsyncEndpointMulticastTest.java          |    2 -
 .../processor/async/AsyncEndpointPipelineTest.java |    2 -
 .../processor/async/AsyncEndpointPolicyTest.java   |    2 -
 .../async/AsyncEndpointRecipientList2Test.java     |    2 -
 .../async/AsyncEndpointRecipientList3Test.java     |    2 -
 .../async/AsyncEndpointRecipientList4Test.java     |    2 -
 .../async/AsyncEndpointRecipientListBean3Test.java |    2 -
 .../async/AsyncEndpointRecipientListBean4Test.java |    2 -
 .../async/AsyncEndpointRecipientListBeanTest.java  |    2 -
 ...tRecipientListFineGrainedErrorHandlingTest.java |    2 -
 .../AsyncEndpointRecipientListParallel2Test.java   |    2 -
 .../AsyncEndpointRecipientListParallel3Test.java   |    2 -
 .../AsyncEndpointRecipientListParallel4Test.java   |    2 -
 .../AsyncEndpointRecipientListParallel5Test.java   |    2 -
 .../AsyncEndpointRecipientListParallelTest.java    |    2 -
 .../async/AsyncEndpointRecipientListTest.java      |    2 -
 ...RedeliveryErrorHandlerNonBlockedDelay2Test.java |    2 -
 ...RedeliveryErrorHandlerNonBlockedDelay3Test.java |    2 -
 ...tRedeliveryErrorHandlerNonBlockedDelayTest.java |    2 -
 .../AsyncEndpointRoundRobinLoadBalanceTest.java    |    2 -
 .../async/AsyncEndpointRoutingSlip2Test.java       |    2 -
 .../async/AsyncEndpointRoutingSlip3Test.java       |    2 -
 .../async/AsyncEndpointRoutingSlipBean2Test.java   |    2 -
 .../async/AsyncEndpointRoutingSlipBean3Test.java   |    2 -
 ...syncEndpointRoutingSlipBeanNonBlockingTest.java |    2 -
 .../async/AsyncEndpointRoutingSlipBeanTest.java    |    2 -
 .../async/AsyncEndpointRoutingSlipTest.java        |    2 -
 .../processor/async/AsyncEndpointSamplingTest.java |    2 -
 .../async/AsyncEndpointSedaInOnlyTest.java         |    2 -
 .../processor/async/AsyncEndpointSedaTest.java     |    2 -
 .../AsyncEndpointSingleTopicLoadBalanceTest.java   |    2 -
 ...cEndpointSplitFineGrainedErrorHandlingTest.java |    2 -
 .../processor/async/AsyncEndpointSplitTest.java    |    2 -
 ...pointSplitUseLatestAggregationStrategyTest.java |    2 -
 .../processor/async/AsyncEndpointStopTest.java     |    2 -
 .../async/AsyncEndpointSynchronousFalseTest.java   |    2 -
 .../async/AsyncEndpointSynchronousTest.java        |    2 -
 .../camel/processor/async/AsyncEndpointTest.java   |    2 -
 .../async/AsyncEndpointTransformTest.java          |    2 -
 .../async/AsyncEndpointTryCatchFinally2Test.java   |    2 -
 .../async/AsyncEndpointTryCatchFinally3Test.java   |    2 -
 .../async/AsyncEndpointTryCatchFinally4Test.java   |    2 -
 .../async/AsyncEndpointTryCatchFinally5Test.java   |    2 -
 .../async/AsyncEndpointTryCatchFinallyTest.java    |    2 -
 .../async/AsyncEndpointUoWFailedTest.java          |    2 -
 .../processor/async/AsyncEndpointUoWTest.java      |    2 -
 .../async/AsyncEndpointWithDelayerTest.java        |    2 -
 .../async/AsyncEndpointWithHandleFaultTest.java    |    2 -
 .../processor/async/AsyncEndpointWithJMXTest.java  |   79 --
 .../async/AsyncEndpointWithStreamCachingTest.java  |    2 -
 .../async/AsyncEndpointWithTracingTest.java        |    2 -
 ...FailureProcessorWithRedeliveryAndDelayTest.java |    2 -
 .../AsyncFailureProcessorWithRedeliveryTest.java   |    2 -
 .../processor/async/AsyncInOnlyEndpointTest.java   |    2 -
 .../apache/camel/processor/async/AsyncMDCTest.java |    2 -
 ...xceptionFailureProcessorWithRedeliveryTest.java |    2 -
 .../AsyncProcessorAwaitManagerInterruptTest.java   |    2 -
 .../async/AsyncProcessorAwaitManagerTest.java      |    2 -
 .../camel/processor/async/AsyncProducerTest.java   |    2 -
 .../processor/async/AsyncRouteWithErrorTest.java   |    2 -
 .../async/AsyncSedaInOnlyEndpointTest.java         |    2 -
 .../processor/async/AsyncTwoEndpointTest.java      |    2 -
 .../camel/processor/async/MyAsyncComponent.java    |    2 -
 .../camel/processor/async/MyAsyncEndpoint.java     |    2 -
 .../camel/processor/async/MyAsyncProducer.java     |    2 -
 .../enricher/EnricherAggregateOnExceptionTest.java |    2 -
 .../EnricherAsyncUnhandledExceptionTest.java       |    3 +-
 .../EnricherDefaultAggregationStrategyTest.java    |    2 -
 .../camel/processor/enricher/EnricherRefTest.java  |    2 -
 .../processor/enricher/EnricherSendEventTest.java  |   24 +-
 .../PollEnricherAggregateOnExceptionTest.java      |    2 -
 .../processor/enricher/PollEnricherRefTest.java    |    2 -
 .../intercept/DualInterceptSimpleRouteTest.java    |    2 -
 .../intercept/IntercepFromWithPredicateTest.java   |    2 -
 .../intercept/InterceptFromRouteTest.java          |    2 -
 .../intercept/InterceptFromRouteTestSupport.java   |    2 -
 .../intercept/InterceptFromWhenNoStopTest.java     |    2 -
 .../processor/intercept/InterceptFromWhenTest.java |    2 -
 .../intercept/InterceptFromWhenWithChoiceTest.java |    2 -
 ...erceptFromWithPredicateAndProceedRouteTest.java |    2 -
 ...InterceptFromWithPredicateAndStopRouteTest.java |    2 -
 .../InterceptFromWithPredicateRouteTest.java       |    2 -
 .../intercept/InterceptFromWithStopRouteTest.java  |    2 -
 .../InterceptFromWithoutProceedRouteTest.java      |    2 -
 ...nterceptSendToEndpointConditionalSkip2Test.java |    2 -
 ...nterceptSendToEndpointConditionalSkip3Test.java |    2 -
 ...InterceptSendToEndpointConditionalSkipTest.java |    2 -
 .../InterceptSendToEndpointInOnException.java      |    2 -
 .../intercept/InterceptSendToEndpointTest.java     |    1 -
 .../InterceptSendToEndpointWithParametersTest.java |    2 -
 .../InterceptSendToEndpointWithStopTest.java       |    1 -
 .../intercept/InterceptSendToExceptionTest.java    |    2 -
 .../intercept/InterceptSendToFaultTest.java        |    2 -
 .../intercept/InterceptSimpleRouteStopTest.java    |    2 -
 .../intercept/InterceptSimpleRouteTest.java        |    2 -
 .../InterceptSimpleRouteWhenStopTest.java          |    2 -
 .../intercept/InterceptSimpleRouteWhenTest.java    |    2 -
 .../interceptor/AdviceWithAutoStartupTest.java     |    2 -
 ...AdviceWithMockEndpointsHavingParameterTest.java |    2 -
 .../interceptor/AdviceWithMockEndpointsTest.java   |    2 -
 .../AdviceWithMockEndpointsWithSkipTest.java       |    2 -
 ...dviceWithMockMultipleEndpointsWithSkipTest.java |    2 -
 .../AdviceWithRecipientListMockEndpointsTest.java  |    2 -
 .../interceptor/AdviceWithRouteIdTest.java         |    2 -
 .../processor/interceptor/AdviceWithTest.java      |    2 -
 ...eWithTwoRoutesContextScopedOnExceptionTest.java |    2 -
 .../AdviceWithTwoRoutesOnExceptionTest.java        |    2 -
 .../interceptor/AdviceWithTwoRoutesTest.java       |    2 -
 .../AuditInterceptorAsyncDelegateIssueTest.java    |    2 -
 .../AuditInterceptorDelegateIssueTest.java         |    2 -
 .../interceptor/DebugExceptionBreakpointTest.java  |    2 -
 .../DebugExceptionEventBreakpointTest.java         |   16 +-
 .../interceptor/DebugSingleStepConditionTest.java  |    2 -
 .../processor/interceptor/DebugSingleStepTest.java |    2 -
 .../camel/processor/interceptor/DebugTest.java     |   11 +-
 .../InterceptorStrategyNotOrderedTest.java         |    2 -
 .../InterceptorStrategyOrderedTest.java            |    2 -
 .../processor/interceptor/NoStreamCachingTest.java |    2 -
 .../onexception/DoCatchDirectDynamicRouteTest.java |    2 -
 .../DoCatchDirectRecipientListStreamingTest.java   |    2 -
 .../DoCatchDirectRecipientListTest.java            |    2 -
 .../onexception/DoCatchDirectRouteTest.java        |    2 -
 .../ErrorOccurredInOnExceptionRoute.java           |    2 -
 .../processor/onexception/OnCatchHandledTest.java  |    2 -
 .../onexception/OnExceptionAfterRouteTest.java     |    2 -
 ...xceptionAndDLCErrorHandlerIssueReverseTest.java |    2 -
 .../OnExceptionAndDLCErrorHandlerIssueTest.java    |    2 -
 .../OnExceptionCallSubRouteNoErrorHandlerTest.java |    2 -
 .../OnExceptionContinuePredicateTest.java          |    2 -
 .../OnExceptionContinueSubRouteTest.java           |    2 -
 .../OnExceptionContinueSubSubRouteTest.java        |    2 -
 .../onexception/OnExceptionContinueTest.java       |    2 -
 .../OnExceptionContinueTwoPredicateTest.java       |    3 -
 .../onexception/OnExceptionContinueTwoTest.java    |    2 -
 ...onGlobalAndDLCErrorHandlerIssueReverseTest.java |    2 -
 ...ExceptionGlobalAndDLCErrorHandlerIssueTest.java |    2 -
 .../OnExceptionHandledAndContinueTest.java         |    2 -
 .../onexception/OnExceptionHandledTest.java        |    2 -
 .../OnExceptionUseOriginalMessageTest.java         |    2 -
 .../OnExceptionWithRouteAndContinueTest.java       |    2 -
 .../onexception/OnExceptionsPerRouteTest.java      |    2 -
 .../RouteScopedOnExceptionSameTypeTest.java        |    2 -
 .../resequencer/ResequencerFileNameTest.java       |    2 -
 .../DynamicRouterEventNotifierTest.java            |   22 +-
 .../RecipientListEventNotifierTest.java            |   22 +-
 .../routingslip/RoutingSlipEventNotifierTest.java  |   22 +-
 .../routingslip/RoutingSlipWithExceptionTest.java  |    1 -
 .../DefaultValidationErrorHandlerTest.java         |    2 -
 .../runtimecatalog/impl/JSonSchemaHelperTest.java  |    3 +-
 .../impl/RuntimeCamelCatalogTest.java              |    2 +-
 .../apache/camel/support/AttributedQNameTest.java  |    3 -
 .../DefaultCamelContextEndpointCacheLimitTest.java |    2 -
 .../DefaultCamelContextEndpointCacheTest.java      |    2 -
 .../apache/camel/support/DefaultEndpointTest.java  |    3 -
 .../camel/support/DefaultTimeoutMapTest.java       |    2 -
 .../camel/support/RecordableInputStreamTest.java   |    3 -
 .../apache/camel/support/RecordableReaderTest.java |    3 -
 .../apache/camel/support/ServiceSupportTest.java   |    3 -
 .../XMLTokenExpressionIteratorGroupingTest.java    |    3 -
 .../org/apache/camel/support/jndi/ExampleBean.java |    2 -
 .../org/apache/camel/support/jndi/JndiTest.java    |    2 -
 .../support/jsse/KeyManagersParametersTest.java    |    2 +-
 .../camel/support/jsse/KeyStoreParametersTest.java |    6 +-
 .../support/jsse/TrustManagersParametersTest.java  |    2 +-
 .../org/apache/camel/util/AnotherExampleBean.java  |    2 -
 .../apache/camel/util/CamelContextHelperTest.java  |    2 -
 .../apache/camel/util/CaseInsensitiveMapTest.java  |    2 -
 .../org/apache/camel/util/EndpointHelperTest.java  |    2 -
 .../org/apache/camel/util/EventHelperTest.java     |   16 +-
 .../org/apache/camel/util/ExchangeHelperTest.java  |    2 -
 .../camel/util/ExpressionListComparatorTest.java   |    2 -
 .../java/org/apache/camel/util/FileUtilTest.java   |    2 -
 .../java/org/apache/camel/util/IOHelperTest.java   |    2 -
 .../org/apache/camel/util/InetAddressUtilTest.java |    2 -
 .../org/apache/camel/util/KeyValueHolderTest.java  |    2 -
 .../java/org/apache/camel/util/LRUCacheTest.java   |    2 -
 .../org/apache/camel/util/MessageHelperTest.java   |    1 -
 .../org/apache/camel/util/ObjectHelperTest.java    |    2 -
 .../apache/camel/util/OrderedComparatorTest.java   |    2 -
 .../org/apache/camel/util/OtherExampleBean.java    |    2 -
 .../org/apache/camel/util/PackageHelperTest.java   |    2 -
 .../camel/util/PredicateAssertHelperTest.java      |    2 -
 .../org/apache/camel/util/ReflectionInjector.java  |    1 -
 .../java/org/apache/camel/util/URISupportTest.java |   48 +-
 .../org/apache/camel/support/jsse/test.properties  |    2 +-
 camel-management-api/pom.xml                       |  334 +++++
 .../JmxNotificationBroadcasterAware.java           |    0
 .../camel/api/management/ManagedAttribute.java     |    0
 .../camel/api/management/ManagedCamelContext.java  |   70 ++
 .../camel/api/management/ManagedInstance.java      |    0
 .../camel/api/management/ManagedNotification.java  |    0
 .../camel/api/management/ManagedNotifications.java |    0
 .../camel/api/management/ManagedOperation.java     |    0
 .../camel/api/management/ManagedResource.java      |    0
 .../camel/api/management/NotificationSender.java   |    0
 .../api/management/NotificationSenderAware.java    |    0
 .../mbean/BacklogTracerEventMessage.java           |    0
 .../api/management/mbean/CamelOpenMBeanTypes.java  |    0
 .../mbean/ComponentVerifierExtension.java          |  471 +++++++
 .../mbean/ManagedAggregateProcessorMBean.java      |    0
 .../ManagedAsyncProcessorAwaitManagerMBean.java    |    0
 .../mbean/ManagedBacklogDebuggerMBean.java         |    0
 .../mbean/ManagedBacklogTracerMBean.java           |    0
 .../api/management/mbean/ManagedBeanMBean.java     |    0
 .../mbean/ManagedBrowsableEndpointMBean.java       |    0
 .../management/mbean/ManagedCamelContextMBean.java |    0
 .../management/mbean/ManagedCamelHealthMBean.java  |    0
 .../api/management/mbean/ManagedChoiceMBean.java   |    0
 .../management/mbean/ManagedClaimCheckMBean.java   |    0
 .../mbean/ManagedClusterServiceMBean.java          |    0
 .../management/mbean/ManagedComponentMBean.java    |   51 +
 .../mbean/ManagedConsumerCacheMBean.java           |    0
 .../api/management/mbean/ManagedConsumerMBean.java |    0
 .../management/mbean/ManagedConvertBodyMBean.java  |    0
 .../api/management/mbean/ManagedCounterMBean.java  |    0
 .../mbean/ManagedCustomLoadBalancerMBean.java      |    0
 .../management/mbean/ManagedDataFormatMBean.java   |    0
 .../api/management/mbean/ManagedDelayerMBean.java  |    0
 .../mbean/ManagedDynamicRouterMBean.java           |    0
 .../api/management/mbean/ManagedEndpointMBean.java |    0
 .../mbean/ManagedEndpointRegistryMBean.java        |    0
 .../api/management/mbean/ManagedEnricherMBean.java |    0
 .../management/mbean/ManagedErrorHandlerMBean.java |    0
 .../mbean/ManagedExtendedInformation.java          |    0
 .../mbean/ManagedFailoverLoadBalancerMBean.java    |    0
 .../api/management/mbean/ManagedFilterMBean.java   |    0
 .../mbean/ManagedIdempotentConsumerMBean.java      |    0
 .../mbean/ManagedInflightRepositoryMBean.java      |    0
 .../api/management/mbean/ManagedLogMBean.java      |    0
 .../api/management/mbean/ManagedLoopMBean.java     |    0
 .../api/management/mbean/ManagedMarshalMBean.java  |    0
 .../management/mbean/ManagedMulticastMBean.java    |    0
 .../mbean/ManagedPerformanceCounterMBean.java      |    0
 .../management/mbean/ManagedPollEnricherMBean.java |    0
 .../api/management/mbean/ManagedProcessMBean.java  |    0
 .../management/mbean/ManagedProcessorMBean.java    |    0
 .../mbean/ManagedProducerCacheMBean.java           |    0
 .../api/management/mbean/ManagedProducerMBean.java |    0
 .../mbean/ManagedRandomLoadBalancerMBean.java      |    0
 .../mbean/ManagedRecipientListMBean.java           |    0
 .../management/mbean/ManagedRemoveHeaderMBean.java |    0
 .../mbean/ManagedRemoveHeadersMBean.java           |    0
 .../mbean/ManagedRemovePropertiesMBean.java        |    0
 .../mbean/ManagedRemovePropertyMBean.java          |    0
 .../management/mbean/ManagedResequencerMBean.java  |    0
 .../mbean/ManagedResourceEndpointMBean.java        |    0
 .../management/mbean/ManagedRestRegistryMBean.java |    0
 .../api/management/mbean/ManagedRollbackMBean.java |    0
 .../mbean/ManagedRoundRobinLoadBalancerMBean.java  |    0
 .../mbean/ManagedRouteControllerMBean.java         |    0
 .../api/management/mbean/ManagedRouteMBean.java    |  147 +++
 .../management/mbean/ManagedRoutingSlipMBean.java  |    0
 .../mbean/ManagedRuntimeCamelCatalogMBean.java     |    0
 .../mbean/ManagedRuntimeEndpointRegistryMBean.java |    0
 .../mbean/ManagedSamplingThrottlerMBean.java       |    0
 .../mbean/ManagedSchedulePollConsumerMBean.java    |    0
 .../api/management/mbean/ManagedScriptMBean.java   |    0
 .../mbean/ManagedSendDynamicProcessorMBean.java    |    0
 .../mbean/ManagedSendProcessorMBean.java           |    0
 .../api/management/mbean/ManagedServiceMBean.java  |    0
 .../api/management/mbean/ManagedSetBodyMBean.java  |    0
 .../mbean/ManagedSetExchangePatternMBean.java      |    0
 .../management/mbean/ManagedSetHeaderMBean.java    |    0
 .../management/mbean/ManagedSetPropertyMBean.java  |    0
 .../api/management/mbean/ManagedSplitterMBean.java |    0
 .../mbean/ManagedStickyLoadBalancerMBean.java      |    0
 .../api/management/mbean/ManagedStopMBean.java     |    0
 .../mbean/ManagedStreamCachingStrategyMBean.java   |  103 ++
 .../mbean/ManagedSuspendableRouteMBean.java        |    0
 .../management/mbean/ManagedThreadPoolMBean.java   |    0
 .../api/management/mbean/ManagedThreadsMBean.java  |    0
 .../management/mbean/ManagedThrottlerMBean.java    |    0
 ...ManagedThrottlingExceptionRoutePolicyMBean.java |    0
 .../ManagedThrottlingInflightRoutePolicyMBean.java |    0
 .../mbean/ManagedThroughputLoggerMBean.java        |    0
 .../mbean/ManagedThrowExceptionMBean.java          |    0
 .../mbean/ManagedTopicLoadBalancerMBean.java       |    0
 .../management/mbean/ManagedTransformMBean.java    |    0
 .../mbean/ManagedTransformerRegistryMBean.java     |    0
 .../mbean/ManagedTypeConverterRegistryMBean.java   |    0
 .../management/mbean/ManagedUnmarshalMBean.java    |    0
 .../api/management/mbean/ManagedValidateMBean.java |    0
 .../mbean/ManagedValidatorRegistryMBean.java       |    0
 .../mbean/ManagedWeightedBalancerMBean.java        |    0
 .../api/management/mbean/ManagedWireTapMBean.java  |    0
 .../camel/api/management/mbean/RouteError.java     |   42 +
 .../apache/camel/api/management/mbean/package.html |    0
 .../org/apache/camel/api/management/package.html   |    0
 camel-management-impl/pom.xml                      |  406 ++++++
 .../management/CompositePerformanceCounter.java    |    0
 .../DefaultInstrumentationProcessor.java           |  149 +++
 .../camel/management/DefaultManagementAgent.java   |  583 +++++++++
 .../DefaultManagementLifecycleStrategy.java        | 1036 +++++++++++++++
 .../DefaultManagementMBeanAssembler.java           |  124 ++
 .../DefaultManagementObjectNameStrategy.java       |  504 ++++++++
 .../DefaultManagementObjectStrategy.java           |  455 +++++++
 .../management/DelegatePerformanceCounter.java     |    0
 .../InstrumentationInterceptStrategy.java          |   64 +
 .../management/JmxNotificationEventNotifier.java   |   82 ++
 .../camel/management/JmxSystemPropertyKeys.java    |    0
 .../camel/management/LoggingEventNotifier.java     |   65 +
 .../camel/management/MBeanInfoAssembler.java       |    0
 .../camel/management/ManagedCamelContextImpl.java  |  104 ++
 .../apache/camel/management/ManagedLoadTimer.java  |    0
 .../management/ManagedManagementStrategy.java      |  105 ++
 .../management/ManagementStrategyFactory.java      |   42 +
 .../camel/management/MixinRequiredModelMBean.java  |    0
 .../management/NotificationSenderAdapter.java      |    0
 .../camel/management/PerformanceCounter.java       |    0
 .../camel/management/PublishEventNotifier.java     |  128 ++
 .../apache/camel/management/mbean/LoadTriplet.java |    0
 .../mbean/ManagedAggregateProcessor.java           |  247 ++++
 .../mbean/ManagedAsyncProcessorAwaitManager.java   |    0
 .../management/mbean/ManagedBacklogDebugger.java   |    0
 .../management/mbean/ManagedBacklogTracer.java     |  153 +++
 .../management/mbean/ManagedBeanProcessor.java     |   68 +
 .../management/mbean/ManagedBrowsableEndpoint.java |  145 +++
 .../management/mbean/ManagedCamelContext.java      |  779 ++++++++++++
 .../camel/management/mbean/ManagedCamelHealth.java |  118 ++
 .../camel/management/mbean/ManagedChoice.java      |  102 ++
 .../camel/management/mbean/ManagedClaimCheck.java  |   48 +
 .../management/mbean/ManagedClusterService.java    |  114 ++
 .../camel/management/mbean/ManagedComponent.java   |  317 +++++
 .../camel/management/mbean/ManagedConsumer.java    |   49 +
 .../management/mbean/ManagedConsumerCache.java     |   72 ++
 .../camel/management/mbean/ManagedConvertBody.java |   43 +
 .../camel/management/mbean/ManagedCounter.java     |    0
 .../mbean/ManagedCustomLoadBalancer.java           |   56 +
 .../camel/management/mbean/ManagedDataFormat.java  |    0
 .../camel/management/mbean/ManagedDelayer.java     |   62 +
 .../management/mbean/ManagedDynamicRouter.java     |  131 ++
 .../camel/management/mbean/ManagedEndpoint.java    |    0
 .../management/mbean/ManagedEndpointRegistry.java  |  104 ++
 .../camel/management/mbean/ManagedEnricher.java    |  140 +++
 .../management/mbean/ManagedErrorHandler.java      |  484 +++++++
 .../management/mbean/ManagedEventNotifier.java     |  153 +++
 .../mbean/ManagedEventNotifierMBean.java           |    0
 .../mbean/ManagedFailoverLoadBalancer.java         |  157 +++
 .../camel/management/mbean/ManagedFilter.java      |   59 +
 .../mbean/ManagedIdempotentConsumer.java           |    0
 .../mbean/ManagedInflightRepository.java           |    0
 .../apache/camel/management/mbean/ManagedLog.java  |   57 +
 .../apache/camel/management/mbean/ManagedLoop.java |   53 +
 .../camel/management/mbean/ManagedMarshal.java     |   47 +
 .../camel/management/mbean/ManagedMulticast.java   |   63 +
 .../mbean/ManagedPerformanceCounter.java           |    0
 .../management/mbean/ManagedPollEnricher.java      |  135 ++
 .../camel/management/mbean/ManagedProcess.java     |   59 +
 .../camel/management/mbean/ManagedProcessor.java   |  186 +++
 .../camel/management/mbean/ManagedProducer.java    |   45 +
 .../management/mbean/ManagedProducerCache.java     |   75 ++
 .../mbean/ManagedRandomLoadBalancer.java           |   58 +
 .../management/mbean/ManagedRecipientList.java     |  156 +++
 .../management/mbean/ManagedRemoveHeader.java      |   39 +
 .../management/mbean/ManagedRemoveHeaders.java     |   51 +
 .../management/mbean/ManagedRemoveProperties.java  |   51 +
 .../management/mbean/ManagedRemoveProperty.java    |   38 +
 .../camel/management/mbean/ManagedResequencer.java |  113 ++
 .../management/mbean/ManagedRestRegistry.java      |    0
 .../camel/management/mbean/ManagedRollback.java    |   48 +
 .../mbean/ManagedRoundRobinLoadBalancer.java       |   57 +
 .../camel/management/mbean/ManagedRoute.java       |  588 +++++++++
 .../management/mbean/ManagedRouteController.java   |    0
 .../camel/management/mbean/ManagedRoutingSlip.java |  131 ++
 .../mbean/ManagedRuntimeCamelCatalog.java          |   59 +
 .../mbean/ManagedRuntimeEndpointRegistry.java      |    0
 .../management/mbean/ManagedSamplingThrottler.java |   54 +
 .../mbean/ManagedScheduledPollConsumer.java        |   98 ++
 .../camel/management/mbean/ManagedScript.java      |   48 +
 .../mbean/ManagedSendDynamicProcessor.java         |  133 ++
 .../management/mbean/ManagedSendProcessor.java     |   99 ++
 .../camel/management/mbean/ManagedService.java     |    0
 .../camel/management/mbean/ManagedSetBody.java     |   48 +
 .../mbean/ManagedSetExchangePattern.java           |   38 +
 .../camel/management/mbean/ManagedSetHeader.java   |   53 +
 .../camel/management/mbean/ManagedSetProperty.java |   53 +
 .../camel/management/mbean/ManagedSplitter.java    |   48 +
 .../mbean/ManagedStickyLoadBalancer.java           |   71 ++
 .../apache/camel/management/mbean/ManagedStop.java |   34 +
 .../mbean/ManagedStreamCachingStrategy.java        |  167 +++
 .../management/mbean/ManagedSuspendableRoute.java  |    0
 .../camel/management/mbean/ManagedThreadPool.java  |  168 +++
 .../camel/management/mbean/ManagedThreads.java     |  148 +++
 .../camel/management/mbean/ManagedThrottler.java   |   67 +
 .../ManagedThrottlingExceptionRoutePolicy.java     |  107 ++
 .../ManagedThrottlingInflightRoutePolicy.java      |   72 ++
 .../management/mbean/ManagedThroughputLogger.java  |    0
 .../management/mbean/ManagedThrowException.java    |   50 +
 .../management/mbean/ManagedTopicLoadBalancer.java |   38 +
 .../camel/management/mbean/ManagedTransformer.java |   48 +
 .../mbean/ManagedTransformerRegistry.java          |  102 ++
 .../mbean/ManagedTypeConverterRegistry.java        |    0
 .../camel/management/mbean/ManagedUnmarshal.java   |   47 +
 .../camel/management/mbean/ManagedValidate.java    |   49 +
 .../management/mbean/ManagedValidatorRegistry.java |  100 ++
 .../mbean/ManagedWeightedLoadBalancer.java         |   89 ++
 .../management/mbean/ManagedWireTapProcessor.java  |  129 ++
 .../management/mbean/RouteCoverageXmlParser.java   |  174 +++
 .../apache/camel/management/mbean/Statistic.java   |    0
 .../camel/management/mbean/StatisticCounter.java   |    0
 .../camel/management/mbean/StatisticDelta.java     |    0
 .../camel/management/mbean/StatisticMaximum.java   |    0
 .../camel/management/mbean/StatisticMinimum.java   |    0
 .../camel/management/mbean/StatisticValue.java     |    0
 .../org/apache/camel/management/mbean/package.html |    0
 .../java/org/apache/camel/management/package.html  |    0
 .../org.apache.camel.spi.ManagementStrategyFactory |    1 +
 .../component/controlbus/ControlBusStatsTest.java  |    0
 .../LanguageLoadScriptFromFileCachedTest.java      |   96 ++
 .../component/xslt/ManagedXsltOutputBytesTest.java |    0
 .../camel/component/xslt/XsltContentCacheTest.java |    0
 .../DynamicRouterConvertBodyToIssueTest.java       |    0
 .../camel/management/AddEventNotifierTest.java     |   88 ++
 .../camel/management/BacklogDebuggerTest.java      |    0
 .../camel/management/BacklogTracerFilterTest.java  |    0
 .../management/BacklogTracerIdOnAllNodesTest.java  |    0
 .../management/BacklogTracerPatternRouteTest.java  |    0
 .../camel/management/BacklogTracerPatternTest.java |    0
 .../management/BacklogTracerStreamCachingTest.java |    0
 .../apache/camel/management/BacklogTracerTest.java |    0
 .../org/apache/camel/management/BigRouteTest.java  |    0
 .../management/CamelChoiceWithManagementTest.java  |  100 ++
 .../management/CamelContextDisableJmxTest.java     |   38 +
 .../apache/camel/management/CustomEndpoint.java    |   54 +
 .../management/DefaultManagementAgentMockTest.java |    0
 .../DualManagedThreadPoolProfileTest.java          |  100 ++
 .../DualManagedThreadPoolWithIdTest.java           |   83 ++
 .../management/ExceptionWithManagementTest.java    |   72 ++
 .../JmxInstrumentationCustomMBeanTest.java         |    0
 ...mxInstrumentationDisableOnCamelContextTest.java |    0
 .../management/JmxInstrumentationDisableTest.java  |    0
 ...ationOnlyRegisterProcessorWithCustomIdTest.java |  106 ++
 .../JmxInstrumentationUsingDefaultsTest.java       |    0
 .../JmxInstrumentationUsingPlatformMBSTest.java    |   78 ++
 .../JmxInstrumentationUsingPropertiesTest.java     |    0
 .../JmxInstrumentationWithConnectorTest.java       |    0
 .../JmxNotificationEventNotifierTest.java          |  138 ++
 .../camel/management/JmxRecipientListTest.java     |  126 ++
 .../org/apache/camel/management/LoadTimerTest.java |    0
 .../apache/camel/management/LoadTripletTest.java   |    0
 .../camel/management/LoggingEventNotifierTest.java |   82 ++
 .../management/ManagedAggregateControllerTest.java |  198 +++
 .../ManagedBrowsableEndpointAsXmlFileTest.java     |   67 +
 .../ManagedBrowsableEndpointAsXmlTest.java         |  290 +++++
 .../ManagedBrowsableEndpointEmptyTest.java         |   51 +
 .../management/ManagedBrowsableEndpointTest.java   |   75 ++
 .../apache/camel/management/ManagedCBRTest.java    |    0
 .../ManagedCamelContextAutoStartupTest.java        |   72 ++
 .../ManagedCamelContextDumpRoutesAsXmlTest.java    |   69 +
 ...ManagedCamelContextDumpRoutesCoverageAsXml.java |   74 ++
 .../ManagedCamelContextDumpStatsAsXmlTest.java     |   75 ++
 .../ManagedCamelContextEmptyRouteTest.java         |   65 +
 .../ManagedCamelContextNewProxyTest.java           |    0
 .../ManagedCamelContextPropertiesTest.java         |   83 ++
 .../management/ManagedCamelContextRestartTest.java |  111 ++
 .../ManagedCamelContextSuspendResumeTest.java      |   85 ++
 .../ManagedCamelContextSuspendStartTest.java       |   85 ++
 .../camel/management/ManagedCamelContextTest.java  |  424 +++++++
 ...ManagedCamelContextUpdateRoutesFromXmlTest.java |   92 ++
 ...RoutesWithPropertyPlaceholdersFromXmlPTest.java |  162 +++
 .../ManagedCanekContextExchangeStatisticsTest.java |   93 ++
 .../apache/camel/management/ManagedChoiceTest.java |   93 ++
 .../camel/management/ManagedComponentTest.java     |  131 ++
 .../management/ManagedConsumerCacheHitsTest.java   |  133 ++
 .../camel/management/ManagedConsumerCacheTest.java |  102 ++
 .../camel/management/ManagedConvertBodyTest.java   |   89 ++
 .../camel/management/ManagedCustomBeanTest.java    |   96 ++
 .../management/ManagedCustomComponentNameTest.java |   73 ++
 .../management/ManagedCustomLoadBalancerTest.java  |  117 ++
 .../camel/management/ManagedCustomPolicyTest.java  |  101 ++
 .../management/ManagedCustomProcessorTest.java     |  108 ++
 .../camel/management/ManagedDataFormatTest.java    |   74 ++
 .../camel/management/ManagedDelayerTest.java       |   88 ++
 .../management/ManagedDualCamelContextTest.java    |   90 ++
 .../camel/management/ManagedDuplicateIdTest.java   |   63 +
 .../camel/management/ManagedDynamicRouterTest.java |  117 ++
 .../management/ManagedEndpointExplainTest.java     |   66 +
 .../management/ManagedEndpointRegistryTest.java    |  107 ++
 .../camel/management/ManagedEndpointTest.java      |   57 +
 .../ManagedEndpointUtilizationStatisticsTest.java  |   71 ++
 .../camel/management/ManagedEnricherTest.java      |  113 ++
 .../management/ManagedErrorHandlerOptionsTest.java |  155 +++
 .../ManagedErrorHandlerRedeliveryTest.java         |  154 +++
 .../camel/management/ManagedErrorHandlerTest.java  |   67 +
 .../ManagedFailoverLoadBalancerTest.java           |  119 ++
 .../management/ManagedFileIdempotentClearTest.java |  140 +++
 .../ManagedFileIdempotentConsumerTest.java         |  147 +++
 .../ManagedFileWatcherReloadStrategyTest.java      |   71 ++
 .../apache/camel/management/ManagedFilterTest.java |   94 ++
 .../ManagedFromRestGetEmbeddedRouteTest.java       |    0
 .../camel/management/ManagedFromRestGetTest.java   |    0
 .../management/ManagedFromRestPlaceholderTest.java |    0
 .../management/ManagedInflightRepositoryTest.java  |   74 ++
 .../management/ManagedInflightStatisticsTest.java  |  137 ++
 .../management/ManagedInlinedProcessorTest.java    |   71 ++
 .../camel/management/ManagedInterceptFromTest.java |   53 +
 .../camel/management/ManagedInterceptTest.java     |   71 ++
 .../management/ManagedListComponentsTest.java      |   66 +
 .../camel/management/ManagedLoadBalancerTest.java  |   72 ++
 .../camel/management/ManagedLogEndpointTest.java   |   99 ++
 .../apache/camel/management/ManagedLoopTest.java   |   91 ++
 .../camel/management/ManagedMarshalTest.java       |   93 ++
 .../ManagedMemoryIdempotentClearTest.java          |  185 +++
 .../ManagedMemoryIdempotentConsumerTest.java       |  189 +++
 .../camel/management/ManagedMulticastTest.java     |   88 ++
 .../management/ManagedNamePatternFixedTest.java    |   60 +
 .../ManagedNamePatternIncludeHostNameTest.java     |   63 +
 .../ManagedNamePatternJvmSystemPropertyTest.java   |   66 +
 .../camel/management/ManagedNamePatternTest.java   |   60 +
 .../management/ManagedNonManagedServiceTest.java   |  113 ++
 .../camel/management/ManagedPollEnricherTest.java  |  109 ++
 .../camel/management/ManagedProcessTest.java       |   99 ++
 ...gedProducerRecipientListRegisterAlwaysTest.java |   80 ++
 .../ManagedProducerRecipientListTest.java          |   57 +
 ...edProducerRouteAddRemoveRegisterAlwaysTest.java |  112 ++
 .../camel/management/ManagedProducerTest.java      |   71 ++
 .../management/ManagedRandomLoadBalancerTest.java  |   85 ++
 .../camel/management/ManagedRecipientListTest.java |  112 ++
 .../management/ManagedRedeliverRouteOnlyTest.java  |    0
 .../camel/management/ManagedRedeliverTest.java     |    0
 .../camel/management/ManagedRefProducerTest.java   |  100 ++
 .../ManagedRegisterCamelContextTest.java           |   55 +
 .../management/ManagedRegisterEndpointTest.java    |   68 +
 .../ManagedRegisterExchangeStatisticsTest.java     |   60 +
 .../camel/management/ManagedRegisterRouteTest.java |   90 ++
 .../management/ManagedRegisterTwoRoutesTest.java   |   65 +
 .../ManagedRemoveRouteAggregateThreadPoolTest.java |   74 ++
 .../camel/management/ManagedResequencerTest.java   |   93 ++
 .../ManagedResetIncludeProcessorsTest.java         |  121 ++
 .../management/ManagedResetIncludeRoutesTest.java  |  122 ++
 .../camel/management/ManagedResourceTest.java      |    0
 .../camel/management/ManagedRestRegistryTest.java  |    0
 .../ManagedRoundRobinLoadBalancerTest.java         |   95 ++
 .../management/ManagedRouteAddFromRouteTest.java   |   95 ++
 .../management/ManagedRouteAddRemoveTest.java      |    0
 ...outeAddSecondRouteNotRegisterNewRoutesTest.java |    0
 .../management/ManagedRouteAddSecondRouteTest.java |    0
 .../management/ManagedRouteAutoStartupTest.java    |   75 ++
 .../ManagedRouteDirectWhileIssueLeakTest.java      |    0
 .../ManagedRouteDumpRouteAsXmlPlaceholderTest.java |   93 ++
 .../management/ManagedRouteDumpRouteAsXmlTest.java |   98 ++
 ...DumpStatsAsXmlAndResetWithCustomDomainTest.java |   90 ++
 ...ManagedRouteDumpStatsAsXmlCustomDomainTest.java |   75 ++
 .../management/ManagedRouteDumpStatsAsXmlTest.java |   70 ++
 .../management/ManagedRouteGetPropertiesTest.java  |   76 ++
 .../management/ManagedRouteLoadstatisticsTest.java |  113 ++
 .../management/ManagedRouteNoAutoStartupTest.java  |    0
 .../ManagedRoutePerformanceCounterTest.java        |  106 ++
 ...edRouteRemoveContextScopedErrorHandlerTest.java |   99 ++
 ...emoveRouteAndContextScopedErrorHandlerTest.java |  159 +++
 ...agedRouteRemoveRouteScopedErrorHandlerTest.java |   98 ++
 .../camel/management/ManagedRouteRemoveTest.java   |   95 ++
 ...edRouteRemoveWireTapExplicitThreadPoolTest.java |  110 ++
 .../management/ManagedRouteRemoveWireTapTest.java  |   99 ++
 .../camel/management/ManagedRouteRestartTest.java  |    0
 .../ManagedRouteShutdownAndStartTest.java          |   94 ++
 .../ManagedRouteStopAndStartCleanupTest.java       |    0
 .../management/ManagedRouteStopAndStartTest.java   |  115 ++
 .../camel/management/ManagedRouteStopTest.java     |   93 ++
 .../ManagedRouteStopUsingMBeanAPITest.java         |   74 ++
 .../ManagedRouteStopWithAbortAfterTimeoutTest.java |  135 ++
 .../ManagedRouteSuspendAndResumeTest.java          |  115 ++
 .../ManagedRouteUpdateRouteFromXmlTest.java        |  164 +++
 .../ManagedRouteWithOnExceptionTest.java           |   98 ++
 .../camel/management/ManagedRoutingSlipTest.java   |  113 ++
 .../management/ManagedRuntimeCamelCatalogTest.java |   57 +
 .../camel/management/ManagedSanitizeTest.java      |   61 +
 .../ManagedScheduledPollConsumerTest.java          |  121 ++
 .../camel/management/ManagedSedaEndpointTest.java  |   93 ++
 .../management/ManagedSedaRouteRemoveTest.java     |  111 ++
 .../ManagedSendDynamicProcessorTest.java           |  118 ++
 .../camel/management/ManagedSendProcessorTest.java |   96 ++
 .../management/ManagedServiceUrlPathTest.java      |  105 ++
 ...ManagedSetAndRemoveHeaderAndPropertiesTest.java |   96 ++
 .../management/ManagedShutdownStrategyTest.java    |   60 +
 .../camel/management/ManagedSplitterTest.java      |   96 ++
 .../management/ManagedStatisticsDisabledTest.java  |   93 ++
 .../management/ManagedStatisticsLevelOffTest.java  |   84 ++
 .../ManagedStatisticsLevelRoutesOnlyTest.java      |   92 ++
 .../camel/management/ManagedStatisticsTest.java    |  100 ++
 .../ManagedStatisticsWithSplitterTest.java         |   90 ++
 .../management/ManagedStickyLoadBalancerTest.java  |   96 ++
 .../ManagedStreamCachingStrategyTest.java          |  105 ++
 .../management/ManagedSuspendedServiceTest.java    |  135 ++
 .../management/ManagedThreadPoolProfileTest.java   |   96 ++
 .../camel/management/ManagedThreadPoolTest.java    |   92 ++
 .../management/ManagedThreadPoolWithIdTest.java    |   77 ++
 .../camel/management/ManagedThreadsTest.java       |   85 ++
 .../camel/management/ManagedThrottlerTest.java     |  347 +++++
 .../ManagedThrottlingExceptionRoutePolicyTest.java |  173 +++
 .../ManagedThrottlingInflightRoutePolicyTest.java  |   77 ++
 .../apache/camel/management/ManagedTimerTest.java  |   85 ++
 .../management/ManagedTopicLoadBalancerTest.java   |   80 ++
 .../management/ManagedTransformerRegistryTest.java |    0
 .../ManagedTypeConverterRegistryTest.java          |  138 ++
 .../camel/management/ManagedUnmarshalTest.java     |   93 ++
 .../ManagedUnregisterCamelContextTest.java         |   63 +
 .../management/ManagedUnregisterComponentTest.java |   68 +
 .../management/ManagedUnregisterConsumerTest.java  |   72 ++
 .../management/ManagedUnregisterEndpointTest.java  |   57 +
 .../management/ManagedUnregisterProcessorTest.java |   61 +
 .../management/ManagedUnregisterProducerTest.java  |   73 ++
 .../management/ManagedUnregisterRouteTest.java     |   59 +
 .../management/ManagedValidatorRegistryTest.java   |    0
 .../ManagedWeightedLoadBalancerTest.java           |  105 ++
 .../camel/management/ManagedWireTapTest.java       |  115 ++
 .../camel/management/ManagementTestSupport.java    |   55 +
 .../management/MultiInstanceProcessorTest.java     |    0
 .../apache/camel/management/MyDummyProcessor.java  |    0
 .../org/apache/camel/management/MyManagedBean.java |    0
 .../camel/management/PublishEventNotifierTest.java |   82 ++
 .../PublishEventNotifierToRouteTest.java           |   84 ++
 .../camel/management/RemoveEventNotifierTest.java  |   87 ++
 .../management/RemoveRouteDefinitionTest.java      |  127 ++
 ...nagedCamelContextAutoAssignedNameClashTest.java |   77 ++
 .../TwoManagedCamelContextClashTest.java           |  127 ++
 .../management/TwoManagedCamelContextTest.java     |   78 ++
 .../management/TwoManagedNamePatternTest.java      |   79 ++
 .../apache/camel/processor/NoErrorHandlerTest.java |   91 ++
 ...StacksNeededDuringRoutingSendProcessorTest.java |  110 ++
 .../ReduceStacksNeededDuringRoutingTest.java       |   70 ++
 .../processor/async/AsyncEndpointWithJMXTest.java  |   77 ++
 .../org/apache/camel/util/CollectionHelper.java    |    2 -
 .../main/java/org/apache/camel/util/Scanner.java   |   11 +-
 .../main/java/org/apache/camel/util/TimeUtils.java |    2 -
 .../java/org/apache/camel/util/URISupport.java     |   60 +-
 .../concurrent/SynchronousExecutorService.java     |    2 -
 .../apache/camel/util/CollectionHelperTest.java    |    2 -
 .../camel/util/CollectionStringBufferTest.java     |    2 -
 .../SubmitOrderedCompletionServiceTest.java        |    2 -
 .../concurrent/SynchronousExecutorServiceTest.java |    2 -
 .../src/main/docs/ahc-ws-component.adoc            |    2 +-
 .../camel/component/ahc/ws/WsProducerTest.java     |    2 -
 .../ahc/ws/WsProducerUsingStreamingTest.java       |    2 -
 .../camel/component/ahc/ws/WssProducerTest.java    |    2 -
 .../ahc/HttpHeaderFilterStrategyTest.java          |    2 -
 .../camel-amqp/src/main/docs/amqp-component.adoc   |    2 +-
 .../camel-apns/src/main/docs/apns-component.adoc   |    2 +-
 .../src/main/docs/as2-component.adoc               |    2 +-
 .../src/main/docs/asterisk-component.adoc          |    2 +-
 .../camel-atmos/src/main/docs/atmos-component.adoc |    2 +-
 .../main/docs/atmosphere-websocket-component.adoc  |    5 +-
 .../websocket/CamelWebSocketServlet.java           |    1 -
 .../camel-atom/src/main/docs/atom-component.adoc   |    2 +-
 .../atom/AtomHttpNoCamelParametersTest.java        |    3 -
 .../component/atom/AtomPollingUnthrottledTest.java |    3 -
 .../apache/camel/component/atom/AtomRouteTest.java |    3 -
 .../src/main/docs/atomix-map-component.adoc        |    2 +-
 .../src/main/docs/atomix-messaging-component.adoc  |    2 +-
 .../src/main/docs/atomix-multimap-component.adoc   |    2 +-
 .../src/main/docs/atomix-queue-component.adoc      |    2 +-
 .../src/main/docs/atomix-set-component.adoc        |    2 +-
 .../src/main/docs/atomix-value-component.adoc      |    2 +-
 .../atomix/cluster/AtomixClusterView.java          |    4 +-
 .../camel-avro/src/main/docs/avro-component.adoc   |    2 +-
 .../camel/component/aws/xray/XRayTracer.java       |   13 +-
 .../src/main/docs/aws-ddbstream-component.adoc     |    2 +-
 .../camel-aws/src/main/docs/aws-iam-component.adoc |    6 +
 .../src/main/docs/aws-kinesis-component.adoc       |    2 +-
 .../camel-aws/src/main/docs/aws-s3-component.adoc  |    2 +-
 .../camel-aws/src/main/docs/aws-sqs-component.adoc |    2 +-
 .../camel-aws/src/main/docs/aws-swf-component.adoc |    2 +-
 .../camel/component/aws/ec2/EC2Constants.java      |    1 -
 .../camel/component/aws/iam/IAMConstants.java      |    2 +
 .../camel/component/aws/iam/IAMOperations.java     |    4 +-
 .../camel/component/aws/iam/IAMProducer.java       |   63 +
 .../camel/component/aws/kms/KMSConstants.java      |    1 -
 .../apache/camel/component/aws/mq/MQConstants.java |    1 -
 .../apache/camel/component/aws/mq/MQProducer.java  |    2 +-
 .../apache/camel/component/aws/s3/S3Constants.java |    1 -
 .../camel/component/aws/sqs/SqsProducer.java       |    1 -
 .../component/aws/iam/AmazonIAMClientMock.java     |    9 +-
 .../component/aws/iam/IAMProducerSpringTest.java   |   41 +
 .../camel/component/aws/iam/IAMProducerTest.java   |   43 +
 .../aws/iam/IAMComponentSpringTest-context.xml     |   10 +
 .../src/main/docs/azure-blob-component.adoc        |    2 +-
 .../src/main/docs/azure-queue-component.adoc       |    2 +-
 .../dataformat/barcode/BarcodeParameters.java      |    1 -
 .../barcode/BarcodeDataFormatCamelTest.java        |    1 -
 .../validator/BeanValidatorConfigurationTest.java  |    2 -
 .../bean/validator/BeanValidatorRouteTest.java     |    2 -
 .../BeanValidatorXMLConfigurationRouteTest.java    |    2 -
 .../apache/camel/component/bean/validator/Car.java |    2 -
 .../camel/dataformat/beanio/csv/CsvTest.java       |    2 -
 .../src/main/docs/beanstalk-component.adoc         |    2 +-
 .../camel/component/beanstalk/EndpointTest.java    |    2 +-
 .../camel/dataformat/bindy/WrappedException.java   |   38 +
 .../dataformat/bindy/csv/BindyCsvDataFormat.java   |  103 +-
 .../bindy/kvp/BindyKeyValuePairDataFormat.java     |   85 +-
 .../csv/BindyCarQuoteAndCommaDelimiterTest.java    |    3 -
 .../bindy/csv/BindyPatternLocaleTest.java          |    3 -
 .../bindy/csv/BindyPipeDelimiterTest.java          |    3 -
 ...indySimpleCsvUnmarshallUnicodeNextLineTest.java |   72 ++
 .../bindy/csv/BindyTabSeparatorTest.java           |    3 -
 ...BindySimpleKeyValuePairUnicodeNextLineTest.java |  100 ++
 .../simple/BindySimpleFixedLengthMarshallTest.java |    1 +
 .../BindySimpleFixedLengthObjectMarshallTest.java  |    4 +-
 .../bindy/model/simple/pipeline/MyData.java        |    2 -
 .../dataformat/bindy/model/tab/PurchaseOrder.java  |    3 -
 .../bindy/model/unicode/LocationRecord.java        |   51 +
 ...pleCsvUnmarshallUnicodeNextLineTest-context.xml |   34 +
 ...mpleKeyValuePairUnicodeNextLineTest-context.xml |   34 +
 .../camel/blueprint/BlueprintCamelContext.java     |    2 +-
 .../camel/blueprint/BlueprintJaxbRestTest.java     |    5 +
 .../apache/camel/blueprint/BlueprintJaxbTest.java  |    5 +
 .../src/main/docs/bonita-component.adoc            |    2 +-
 .../camel/component/boon/BoonConcurrentTest.java   |    3 -
 .../src/main/docs/box-component.adoc               |    2 +-
 .../src/main/docs/braintree-component.adoc         |    2 +-
 .../src/main/docs/caffeine-cache-component.adoc    |    2 +-
 .../main/docs/caffeine-loadcache-component.adoc    |    2 +-
 .../src/main/docs/cql-component.adoc               |    2 +-
 .../component/cassandra/CassandraEndpoint.java     |   10 +
 .../org/apache/camel/cdi/CdiCamelExtension.java    |    7 +-
 .../org/apache/camel/cdi/CdiEventConsumer.java     |    6 +-
 .../org/apache/camel/cdi/CdiEventNotifier.java     |   22 +-
 .../org/apache/camel/cdi/XmlCdiBeanFactory.java    |    2 +-
 .../org/apache/camel/cdi/XmlProxyFactoryBean.java  |   14 +-
 .../JtaTransactionErrorHandlerBuilder.java         |    4 +-
 .../cdi/transaction/TransactedDefinition.java      |   33 -
 .../camel/cdi/test/CamelEventEndpointTest.java     |   13 +-
 .../camel/cdi/test/CamelEventNotifierTest.java     |   22 +-
 .../cdi/test/CamelRouteEventNotifierTest.java      |   52 +-
 .../cdi/test/MultiContextEventNotifierTest.java    |   30 +-
 .../camel/cdi/test/UriWithWrongContextTest.java    |    6 +-
 .../src/main/docs/chronicle-engine-component.adoc  |    2 +-
 .../org/apache/camel/component/cm/test/CMTest.java |    4 +-
 .../camel-cmis/src/main/docs/cmis-component.adoc   |    2 +-
 .../camel-coap/src/main/docs/coap-component.adoc   |    2 +-
 .../src/main/docs/cometd-component.adoc            |    2 +-
 .../src/main/docs/consul-component.adoc            |    7 +-
 .../consul/ConsulClientConfiguration.java          |   18 +
 .../cloud/ConsulServiceDiscoveryFactory.java       |   17 +
 .../consul/cluster/ConsulClusterView.java          |    2 +-
 .../camel/core/osgi/OsgiCamelContextPublisher.java |   30 +-
 .../camel/core/osgi/OsgiEventAdminNotifier.java    |   15 +-
 .../camel/core/osgi/OsgiFactoryFinderResolver.java |    2 -
 components/camel-core-xml/pom.xml                  |    4 +
 .../core/xml/AbstractCamelContextFactoryBean.java  |   21 +-
 ...ractCamelFluentProducerTemplateFactoryBean.java |    2 -
 .../core/xml/CamelProxyFactoryDefinition.java      |   16 +
 .../src/main/docs/couchbase-component.adoc         |    2 +-
 .../component/couchbase/CouchbaseConsumer.java     |    3 +-
 .../src/main/docs/couchdb-component.adoc           |    2 +-
 .../cms/exception/CryptoCmsFormatException.java    |    1 -
 .../exception/CryptoCmsInvalidKeyException.java    |    1 -
 ...yptoCmsNoKeyOrCertificateForAliasException.java |    1 -
 ...ptoCmsSignatureInvalidContentHashException.java |    1 -
 .../crypto/DefaultPGPPublicKeyAccessor.java        |    1 -
 .../crypto/DefaultPGPSecretKeyAccessor.java        |    1 -
 .../camel/converter/crypto/PGPDataFormat.java      |    1 -
 .../converter/crypto/PGPKeyAccessDataFormat.java   |    1 -
 .../converter/crypto/PGPPassphraseAccessor.java    |    1 -
 .../crypto/PGPSecretKeyAndPrivateKeyAndUserId.java |    1 -
 .../camel/component/crypto/ECDSASignatureTest.java |   10 +
 .../cxf/common/header/CxfHeaderFilterStrategy.java |    1 -
 .../common/message/DefaultCxfMessageMapper.java    |    2 -
 .../component/cxf/transport/CamelConduit.java      |   16 +-
 .../cxf/transport/CamelTransportConstants.java     |    2 -
 .../cxf/transport/CamelTransportFactory.java       |    2 -
 .../camel-cxf/src/main/docs/cxf-component.adoc     |    2 +-
 .../camel-cxf/src/main/docs/cxfrs-component.adoc   |    2 +-
 .../apache/camel/component/cxf/CxfComponent.java   |    8 +
 .../apache/camel/component/cxf/CxfConstants.java   |   72 ++
 .../apache/camel/component/cxf/CxfConsumer.java    |    5 +-
 .../org/apache/camel/component/cxf/CxfPayload.java |    1 -
 .../apache/camel/component/cxf/CxfProducer.java    |    2 +-
 .../org/apache/camel/component/cxf/DataFormat.java |   12 +
 .../camel/component/cxf/DefaultCxfBinding.java     |    1 -
 .../component/cxf/HybridSourceDataBinding.java     |    1 -
 .../cxf/converter/DelegatingXMLStreamReader.java   |    3 -
 .../cxf/feature/MessageDataFormatFeature.java      |   35 +
 .../ConfigureDocLitWrapperInterceptor.java         |    1 -
 .../cxf/jaxrs/CxfRsBlueprintEndpoint.java          |   14 +
 .../camel/component/cxf/jaxrs/CxfRsComponent.java  |    9 +
 .../camel/component/cxf/jaxrs/CxfRsConsumer.java   |    3 +-
 .../cxf/jaxrs/CxfRsHeaderFilterStrategy.java       |    2 -
 .../component/cxf/jaxrs/CxfRsSpringEndpoint.java   |   12 +
 .../component/cxf/jaxrs/SimpleCxfRsBinding.java    |    1 -
 ...XFWsdlOnlyPayloadModeMultiPartNoSpringTest.java |    1 -
 .../CxfConsumerPayloadFaultCauseEnabledTest.java   |    1 -
 .../component/cxf/CxfConsumerPayloadFaultTest.java |    1 -
 .../camel/component/cxf/CxfEndpointTest.java       |    2 -
 .../CxfGreeterPayLoadWithFeatureRouterTest.java    |    1 -
 .../cxf/CxfJavaOnlyCamelContextAwareTest.java      |    1 -
 .../component/cxf/CxfJavaOnlyPayloadModeTest.java  |    1 -
 .../cxf/CxfMultipleConsumersSupportTest.java       |    2 -
 ...CxfPayLoadMessageRouterAddressOverrideTest.java |    1 -
 .../component/cxf/CxfPayLoadMessageRouterTest.java |    1 -
 .../component/cxf/CxfProducerOperationTest.java    |    2 -
 .../cxf/CxfProducerProtocalHeaderTest.java         |    3 -
 .../camel/component/cxf/CxfProducerTest.java       |    2 -
 .../camel/component/cxf/DefaultCxfBindingTest.java |    3 -
 .../cxf/LoggingInterceptorInMessageModeTest.java   |    2 -
 .../camel/component/cxf/ServiceClassRefTest.java   |    1 -
 .../converter/CxfPayLoadStreamCacheRouterTest.java |    1 -
 .../cxf/jaxrs/simplebinding/testbean/Customer.java |    2 -
 .../jaxrs/simplebinding/testbean/CustomerList.java |    2 -
 .../cxf/jaxrs/simplebinding/testbean/Order.java    |    2 -
 .../cxf/jaxrs/simplebinding/testbean/Product.java  |    2 -
 .../component/cxf/jaxrs/testbean/Customer.java     |    2 -
 .../cxf/jaxrs/testbean/CustomerService.java        |    2 -
 .../camel/component/cxf/jaxrs/testbean/Order.java  |    2 -
 .../component/cxf/jaxrs/testbean/Product.java      |    2 -
 .../cxf/mtom/CxfMtomConsumerPayloadModeTest.java   |    6 +-
 .../CxfMtomDisabledConsumerPayloadModeTest.java    |    8 +-
 .../cxf/mtom/CxfMtomPOJOProducerTest.java          |    1 -
 .../cxf/mtom/CxfMtomProducerPayloadModeTest.java   |    6 +-
 .../cxf/mtom/CxfMtomRouterPayloadMode12Test.java   |    1 -
 .../cxf/mtom/CxfMtomRouterPayloadModeTest.java     |    1 -
 .../camel/component/cxf/mtom/MtomTestHelper.java   |    1 -
 .../cxf/spring/FileToCxfMessageDataFormatTest.java |    2 -
 .../component/cxf/util/CxfEndpointUtilsTest.java   |    8 +-
 .../camel/component/cxf/wsa/WSAddressingTest.java  |    2 -
 .../apache/camel/component/cxf/wsrm/WSRMTest.java  |    2 -
 .../cxf/wssecurity/client/UTPasswordCallback.java  |    2 -
 .../cxf/wssecurity/server/UTPasswordCallback.java  |    2 -
 .../camel/wsdl_first/PersonMultiPartImpl.java      |    1 -
 .../src/main/docs/disruptor-component.adoc         |    9 +-
 .../component/disruptor/DisruptorComponent.java    |   18 +
 .../component/disruptor/DisruptorConsumer.java     |    5 +
 .../DirectRequestReplyAndDisruptorInOnlyTest.java  |    3 -
 .../disruptor/DisruptorComplexInOutTest.java       |    3 -
 .../DisruptorConcurrentConsumersNPEIssueTest.java  |    3 -
 .../DisruptorConcurrentConsumersTest.java          |    3 -
 .../disruptor/DisruptorConcurrentTest.java         |    3 -
 .../disruptor/DisruptorConfigureTest.java          |    3 -
 .../disruptor/DisruptorInOnlyChainedTest.java      |    3 -
 .../component/disruptor/DisruptorInOnlyTest.java   |    3 -
 .../disruptor/DisruptorInOutBigChainedTest.java    |    3 -
 .../disruptor/DisruptorInOutChainedTest.java       |    3 -
 .../DisruptorInOutChainedTimeoutTest.java          |    3 -
 .../DisruptorInOutChainedWithOnCompletionTest.java |    3 -
 .../component/disruptor/DisruptorInOutTest.java    |    3 -
 ...sruptorInOutWithErrorDeadLetterChannelTest.java |    3 -
 .../disruptor/DisruptorInOutWithErrorTest.java     |    3 -
 .../disruptor/DisruptorMultipleConsumersTest.java  |    5 +-
 .../disruptor/DisruptorNoConsumerTest.java         |    3 -
 .../DisruptorReconfigureWithBlockingProducer.java  |    3 -
 .../DisruptorRemoveRouteThenAddAgainTest.java      |    3 -
 .../disruptor/DisruptorRingBufferTest.java         |    3 -
 .../component/disruptor/DisruptorRouteTest.java    |    3 -
 .../disruptor/DisruptorTimeoutDisabledTest.java    |    3 -
 .../component/disruptor/DisruptorTimeoutTest.java  |    3 -
 .../DisruptorWaitForTaskAsPropertyTest.java        |    3 -
 .../DisruptorWaitForTaskCompleteTest.java          |    3 -
 .../DisruptorWaitForTaskIfReplyExpectedTest.java   |    3 -
 .../DisruptorWaitForTaskNeverOnCompletionTest.java |    3 -
 .../disruptor/DisruptorWaitForTaskNeverTest.java   |    3 -
 .../FileDisruptorShutdownCompleteAllTasksTest.java |    3 -
 .../vm/DisruptorVmConcurrentConsumersTest.java     |    3 -
 ...mDifferentOptionsOnConsumerAndProducerTest.java |    3 -
 .../disruptor/vm/DisruptorVmInOnlyChainedTest.java |    3 -
 .../disruptor/vm/DisruptorVmInOnlyTest.java        |    3 -
 .../disruptor/vm/DisruptorVmInOutChainedTest.java  |    3 -
 .../vm/DisruptorVmInOutChainedTimeoutTest.java     |    3 -
 .../disruptor/vm/DisruptorVmInOutTest.java         |    3 -
 .../vm/DisruptorVmInOutWithErrorTest.java          |    3 -
 .../DisruptorVmMultipleContextsStartStopTest.java  |    3 -
 .../disruptor/vm/DisruptorVmQueueTest.java         |    3 -
 .../disruptor/vm/DisruptorVmTimeoutIssueTest.java  |    3 -
 .../disruptor/vm/DisruptorVmUseSameQueueTest.java  |    3 -
 .../vm/DisruptorVmWaitForTaskCompleteTest.java     |    3 -
 .../DisruptorVmWaitForTaskIfReplyExpectedTest.java |    3 -
 .../vm/DisruptorVmWaitForTaskNewerTest.java        |    3 -
 .../src/main/docs/docker-component.adoc            |    2 +-
 .../component/dozer/example/abc/ABCOrder.java      |    1 -
 .../component/dozer/example/abc/ObjectFactory.java |    1 -
 .../component/dozer/example/xyz/LineItem.java      |    1 -
 .../component/dozer/example/xyz/XYZOrder.java      |    1 -
 .../src/main/docs/dropbox-component.adoc           |    2 +-
 .../src/main/docs/ehcache-component.adoc           |    5 +-
 .../component/ehcache/EhcacheConfiguration.java    |   18 +
 .../camel/component/ejb/GreaterCamelBeanTest.java  |    2 -
 .../ejb/GreaterCamelEjbPropertiesTest.java         |    2 -
 .../camel/component/ejb/GreaterCamelEjbTest.java   |    2 -
 .../apache/camel/component/ejb/GreaterImpl.java    |    2 -
 .../apache/camel/component/ejb/GreaterLocal.java   |    2 -
 .../apache/camel/component/ejb/GreaterTest.java    |    2 -
 .../component/ejb/SpringGreaterCamelEjbTest.java   |    2 -
 .../elasticsearch/ElasticsearchOperation.java      |    1 -
 .../camel-elsql/src/main/docs/elsql-component.adoc |    5 +-
 .../camel/component/elsql/ElsqlComponent.java      |    6 +
 .../camel-etcd/src/main/docs/etcd-component.adoc   |    2 +-
 .../src/main/docs/eventadmin-component.adoc        |    2 +-
 .../src/main/docs/facebook-component.adoc          |    5 +-
 .../config/FacebookEndpointConfiguration.java      |   16 +
 .../src/main/docs/fhir-component.adoc              |    2 +-
 .../src/main/docs/flatpack-component.adoc          |    2 +-
 .../component/flatpack/FlatpackConverter.java      |    2 -
 .../camel/component/flatpack/FlatpackProducer.java |    3 -
 .../camel/component/flatpack/CharsetTest.java      |    2 -
 .../flatpack/DelimitedErrorWithUnmarshalTest.java  |    2 -
 .../camel/component/flatpack/DelimitedTest.java    |    2 -
 .../flatpack/DelimitedWithNoDescriptorTest.java    |    3 -
 .../flatpack/DelimitedWithUnmarshalTest.java       |    2 -
 .../flatpack/FixedLengthAllowLongTest.java         |    3 -
 .../flatpack/FixedLengthAllowShortAndLongTest.java |    3 -
 .../flatpack/FixedLengthAllowShortTest.java        |    3 -
 .../camel/component/flatpack/FixedLengthTest.java  |    2 -
 .../flatpack/FixedLengthWithUnmarshalTest.java     |    2 -
 .../component/flatpack/HeaderAndTrailerTest.java   |    2 -
 .../component/flatpack/InvalidFixedLengthTest.java |    3 -
 .../component/flatpack/StreamedSplitTest.java      |    3 -
 .../component/flatpack/XMLNoSplitRowsTest.java     |    2 -
 .../camel/component/flatpack/XMLSplitRowsTest.java |    2 -
 .../freemarker/FreemarkerConcurrentTest.java       |    2 -
 .../freemarker/FreemarkerSetHeaderTest.java        |    2 -
 .../freemarker/FreemarkerTemplateInHeaderTest.java |    2 -
 .../camel-ftp/src/main/docs/ftp-component.adoc     |    2 +-
 .../camel-ftp/src/main/docs/ftps-component.adoc    |    2 +-
 .../camel-ftp/src/main/docs/sftp-component.adoc    |    2 +-
 .../camel/component/file/remote/FtpsComponent.java |    1 -
 .../component/file/remote/FtpsConfiguration.java   |    1 -
 .../component/file/remote/SftpConfiguration.java   |   10 +
 .../remote/strategy/FtpProcessStrategyFactory.java |    9 +
 .../strategy/SftpProcessStrategyFactory.java       |    9 +
 .../FileToFtpsExplicitSSLWithClientAuthTest.java   |    1 -
 ...FileToFtpsExplicitSSLWithoutClientAuthTest.java |    1 -
 .../FileToFtpsExplicitTLSWithClientAuthTest.java   |    1 -
 ...FileToFtpsExplicitTLSWithoutClientAuthTest.java |    1 -
 .../FileToFtpsImplicitSSLWithClientAuthTest.java   |    1 -
 ...FileToFtpsImplicitSSLWithoutClientAuthTest.java |    1 -
 .../FileToFtpsImplicitTLSWithClientAuthTest.java   |    1 -
 ...FileToFtpsImplicitTLSWithoutClientAuthTest.java |    1 -
 ...psWithCustomKeyAndTrustStorePropertiesTest.java |    1 -
 ...leToFtpsWithCustomTrustStorePropertiesTest.java |    1 -
 .../FileToFtpsWithDefaultSettingsIPV6Test.java     |    1 -
 .../remote/FileToFtpsWithDefaultSettingsTest.java  |    1 -
 .../FileToFtpsWithFtpClientConfigRefTest.java      |    1 -
 .../remote/FromFilePercentSignInPasswordTest.java  |    2 -
 ...lePercentSignInPasswordUserInfoEncodedTest.java |    2 -
 .../FromFilePercentSignInPasswordUserInfoTest.java |    2 -
 ...FromFileToFtpDefaultRootRenameStrategyTest.java |    2 -
 .../file/remote/FromFileToFtpDeleteTest.java       |    2 -
 .../file/remote/FromFileToFtpNotStepwiseTest.java  |    2 -
 .../component/file/remote/FromFileToFtpTest.java   |    2 -
 .../remote/FromFileTransferLoggingLevelTest.java   |    2 -
 .../FromFileTransferLoggingLevelVerboseTest.java   |    2 -
 .../file/remote/FromFtpActivePortRangeTest.java    |    2 -
 .../file/remote/FromFtpClientConfigRefTest.java    |    2 -
 .../file/remote/FromFtpClientDataTimeoutTest.java  |    2 -
 .../file/remote/FromFtpClientSoTimeout2Test.java   |    2 -
 .../file/remote/FromFtpClientSoTimeoutTest.java    |    2 -
 .../FromFtpDoNotDeleteFileIfProcessFailsTest.java  |    2 -
 ...tPathRelativeMoveToAbsoluteNotStepwiseTest.java |    2 -
 ...tpNoEndpointPathRelativeMoveToAbsoluteTest.java |    2 -
 .../file/remote/FromFtpPassiveModeTest.java        |    2 -
 .../FromFtpRecursiveNoopNotStepwiseTest.java       |    2 -
 .../file/remote/FromFtpRecursiveNoopTest.java      |    2 -
 .../FromFtpServerLanguageCodeAndTimeoutTest.java   |    2 -
 .../file/remote/FromFtpServerLanguageCodeTest.java |    2 -
 ...tPathRelativeMoveToAbsoluteNotStepwiseTest.java |    2 -
 ...leNoEndpointPathRelativeMoveToAbsoluteTest.java |    2 -
 ...tPathRelativeMoveToRelativeNotStepwiseTest.java |    2 -
 ...leNoEndpointPathRelativeMoveToRelativeTest.java |    2 -
 ...impleRelativeMoveToAbsoluteNotStepwiseTest.java |    2 -
 .../FromFtpSimpleRelativeMoveToAbsoluteTest.java   |    2 -
 ...impleRelativeMoveToRelativeNotStepwiseTest.java |    2 -
 .../FromFtpSimpleRelativeMoveToRelativeTest.java   |    2 -
 .../file/remote/FromFtpThirdPoolOkTest.java        |    2 -
 .../component/file/remote/FromFtpToMockTest.java   |    2 -
 .../file/remote/FtpBrowsableEndpointTest.java      |    2 -
 .../file/remote/FtpConnectTimeoutTest.java         |    2 -
 .../file/remote/FtpConsumerAbsolutePathTest.java   |    2 -
 .../file/remote/FtpConsumerAsyncStressTest.java    |    2 -
 .../file/remote/FtpConsumerAutoCreateTest.java     |    2 -
 .../file/remote/FtpConsumerBodyAsStringTest.java   |    2 -
 .../FtpConsumerDoneFileNameFixedStepwiseTest.java  |    2 -
 .../remote/FtpConsumerDoneFileNameFixedTest.java   |    2 -
 .../FtpConsumerDoneFileNameStepwiseTest.java       |    2 -
 .../file/remote/FtpConsumerDoneFileNameTest.java   |    2 -
 .../remote/FtpConsumerDualDoneFileNameTest.java    |    2 -
 .../file/remote/FtpConsumerFileSplitTest.java      |    2 -
 .../remote/FtpConsumerIPV6BodyAsStringTest.java    |    2 -
 ...nsumerLocalWorkDirectoryAsAbsolutePathTest.java |    2 -
 .../FtpConsumerLocalWorkDirectoryDirectTest.java   |    2 -
 .../remote/FtpConsumerLocalWorkDirectoryTest.java  |    2 -
 ...onsumerLocalWorkDirectoryWorkOnPayloadTest.java |    2 -
 .../remote/FtpConsumerMaxMessagesPerPollTest.java  |    2 -
 .../remote/FtpConsumerMultipleDirectoriesTest.java |    2 -
 .../FtpConsumerNotEagerMaxMessagesPerPollTest.java |    2 -
 .../file/remote/FtpConsumerResumeDownloadTest.java |    2 -
 .../FtpNoReconnectAttemptUnknownHostTest.java      |    2 -
 .../file/remote/FtpProducerDoneFileNameTest.java   |    2 -
 ...FtpProducerFileExistAppendNoFileBeforeTest.java |    2 -
 .../remote/FtpProducerFileExistAppendTest.java     |    2 -
 .../file/remote/FtpProducerFileExistFailTest.java  |    2 -
 .../remote/FtpProducerFileExistIgnoreTest.java     |    2 -
 ...pProducerFileExistOverrideNoFileBeforeTest.java |    2 -
 ...rrideNotEagerDeleteTargetFileTwoUploadTest.java |    2 -
 .../remote/FtpProducerFileExistOverrideTest.java   |    2 -
 .../FtpProducerFileExistOverrideTwoUploadTest.java |    2 -
 .../remote/FtpProducerFileFastExistFailTest.java   |    2 -
 .../remote/FtpProducerRootFileExistFailTest.java   |    2 -
 .../remote/FtpProducerTempFileExistIssueTest.java  |    2 -
 .../FtpReconnectAttemptServerStoppedTest.java      |    2 -
 .../remote/FtpReconnectAttemptUnknownHostTest.java |    2 -
 .../file/remote/FtpRecursiveDepth2Test.java        |    3 -
 .../file/remote/FtpRecursiveDepth3Test.java        |    3 -
 .../file/remote/FtpRecursiveDepthTest.java         |    3 -
 .../file/remote/FtpSimpleConsumeAbsoluteTest.java  |    2 -
 ...ectoryParseWithAbsoluteDepthNoStepwiseTest.java |    2 -
 .../FtpSimpleConsumeStreamingPartialReadTest.java  |    2 -
 .../file/remote/FtpSimpleConsumeStreamingTest.java |    2 -
 ...impleConsumeStreamingWithMultipleFilesTest.java |    2 -
 ...ServerExplicitSSLWithClientAuthTestSupport.java |    1 -
 ...verExplicitSSLWithoutClientAuthTestSupport.java |    1 -
 ...ServerExplicitTLSWithClientAuthTestSupport.java |    1 -
 ...verExplicitTLSWithoutClientAuthTestSupport.java |    1 -
 ...ServerImplicitSSLWithClientAuthTestSupport.java |    1 -
 ...verImplicitSSLWithoutClientAuthTestSupport.java |    1 -
 ...ServerImplicitTLSWithClientAuthTestSupport.java |    1 -
 ...verImplicitTLSWithoutClientAuthTestSupport.java |    1 -
 .../file/remote/FtpsServerTestSupport.java         |    1 -
 .../RecipientListErrorHandlingIssueTest.java       |    2 -
 .../file/remote/UriConfigurationTest.java          |    2 -
 .../component/file/remote/sftp/SftpChmodTest.java  |    7 +-
 .../file/remote/sftp/SftpConsumeTemplateTest.java  |    2 -
 .../remote/sftp/SftpConsumerAutoCreateTest.java    |    2 -
 .../remote/sftp/SftpConsumerDisconnectTest.java    |   55 +-
 .../file/remote/sftp/SftpProduceTempFileTest.java  |    2 -
 .../SftpProducerFileWithPathNoStepwiseTest.java    |    2 -
 .../remote/sftp/SftpProducerFileWithPathTest.java  |    2 -
 .../file/remote/sftp/SftpServerTestSupport.java    |    2 -
 .../file/remote/sftp/SftpSetCipherTest.java        |    2 -
 .../sftp/SftpSimpleConsumeNotStepwiseTest.java     |    2 -
 .../SftpSimpleConsumeRecursiveNotStepwiseTest.java |    2 -
 .../sftp/SftpSimpleConsumeRecursiveTest.java       |    2 -
 .../sftp/SftpSimpleConsumeStreamingTest.java       |    2 -
 ...impleConsumeStreamingWithMultipleFilesTest.java |    2 -
 .../file/remote/sftp/SftpSimpleConsumeTest.java    |    2 -
 .../remote/sftp/SftpSimpleIPV6ConsumeTest.java     |    2 -
 .../sftp/SftpSimpleProduceDisconnectTest.java      |    2 -
 .../sftp/SftpSimpleProduceNotStepwiseTest.java     |    2 -
 .../file/remote/sftp/SftpSimpleProduceTest.java    |    2 -
 .../camel-git/src/main/docs/git-component.adoc     |    2 +-
 .../src/main/docs/github-component.adoc            |    2 +-
 .../src/main/docs/google-calendar-component.adoc   |    2 +-
 .../docs/google-calendar-stream-component.adoc     |    2 +-
 .../stream/GoogleCalendarStreamConsumer.java       |   33 +-
 .../src/main/docs/google-drive-component.adoc      |    2 +-
 .../src/main/docs/google-mail-component.adoc       |    2 +-
 .../main/docs/google-mail-stream-component.adoc    |    2 +-
 .../src/main/docs/google-pubsub-component.adoc     |    2 +-
 .../camel-gora/src/main/docs/gora-component.adoc   |    2 +-
 .../camel/language/groovy/GroovyExpression.java    |    2 -
 .../camel/language/groovy/GroovyLanguage.java      |    3 -
 .../language/groovy/GroovyExpressionTest.java      |    2 -
 .../language/groovy/GroovyInvokeMethodTest.java    |    2 -
 .../camel/language/groovy/GroovyLanguageTest.java  |    2 -
 .../language/groovy/GroovySetFixedHeaderTest.java  |    2 -
 .../camel/language/groovy/GroovySetHeaderTest.java |    2 -
 .../language/groovy/LanguageGroovyRouteTest.java   |    2 -
 .../camel/processor/groovy/GroovyFilterTest.java   |    2 -
 .../processor/groovy/GroovySumFilterTest.java      |    2 -
 .../processor/groovy/InlinedGroovyScriptTest.java  |    2 -
 .../camel-grpc/src/main/docs/grpc-component.adoc   |    2 +-
 .../client/GrpcResponseRouterStreamObserver.java   |    5 +-
 .../camel/component/gson/GsonDataFormat.java       |   47 +
 .../camel/component/gson/GsonConcurrentTest.java   |    2 -
 .../gson/SpringGsonJsonDataFormatTest.java         |    2 -
 .../src/main/docs/guava-eventbus-component.adoc    |    2 +-
 .../main/docs/hazelcast-instance-component.adoc    |    2 +-
 .../src/main/docs/hazelcast-list-component.adoc    |    2 +-
 .../src/main/docs/hazelcast-map-component.adoc     |    2 +-
 .../main/docs/hazelcast-multimap-component.adoc    |    2 +-
 .../src/main/docs/hazelcast-queue-component.adoc   |    2 +-
 .../docs/hazelcast-replicatedmap-component.adoc    |    2 +-
 .../src/main/docs/hazelcast-seda-component.adoc    |    2 +-
 .../src/main/docs/hazelcast-set-component.adoc     |    2 +-
 .../src/main/docs/hazelcast-topic-component.adoc   |    2 +-
 .../component/hazelcast/HazelcastComponent.java    |  160 +++
 .../component/hazelcast/HazelcastConstants.java    |  247 ++++
 .../hazelcast/seda/HazelcastSedaConfiguration.java |   16 +
 .../hazelcast/HazelcastCamelTestHelper.java        |    3 +
 .../HazelcastSedaConcurrentConsumersTest.java      |    1 -
 .../camel-hbase/src/main/docs/hbase-component.adoc |    2 +-
 .../camel-hdfs2/src/main/docs/hdfs2-component.adoc |    2 +-
 .../src/main/docs/hipchat-component.adoc           |    2 +-
 .../camel/component/hl7/HL7XmlDataFormatTest.java  |    2 -
 .../org/apache/camel/http/common/CamelServlet.java |   12 +-
 .../camel/http/common/DefaultHttpBinding.java      |   14 +
 .../camel/http/common/HttpCommonEndpoint.java      |   36 +
 .../org/apache/camel/http/common/HttpHelper.java   |  101 +-
 .../org/apache/camel/http/common/HttpMessage.java  |    2 -
 .../camel/http/common/HttpSendDynamicAware.java    |    4 +-
 .../camel/http/common/HttpServletUrlRewrite.java   |   45 +
 .../org/apache/camel/http/common/UrlRewrite.java   |   41 +
 .../UrlRewriteHttpServletRequestAdapter.java       |   49 +
 .../camel-http4/src/main/docs/http4-component.adoc |    3 +-
 .../camel/component/http4/HttpComponent.java       |   13 +-
 .../camel/component/http4/HttpConstants.java       |    2 -
 .../apache/camel/component/http4/HttpProducer.java |   11 +-
 .../apache/camel/component/http4/BaseHttpTest.java |    2 -
 .../camel/component/http4/BaseHttpsTest.java       |    2 -
 .../camel/component/http4/GoogleUrlRewrite.java    |   35 +
 .../component/http4/HttpAuthenticationTest.java    |    2 -
 .../apache/camel/component/http4/HttpBodyTest.java |    2 -
 .../component/http4/HttpBridgeEndpointTest.java    |    2 -
 .../component/http4/HttpCamelHeadersTest.java      |    4 -
 .../camel/component/http4/HttpCharsetTest.java     |    2 -
 .../component/http4/HttpClientConfigurerTest.java  |    2 -
 .../camel/component/http4/HttpCompressionTest.java |    4 -
 .../camel/component/http4/HttpConcurrentTest.java  |    2 -
 .../component/http4/HttpDefaultPortNumberTest.java |    3 -
 .../http4/HttpDisableStreamCacheTest.java          |    2 -
 .../http4/HttpHeaderFilterStrategyTest.java        |    2 -
 .../camel/component/http4/HttpMethodsTest.java     |    2 -
 .../http4/HttpNoConnectionRedeliveryTest.java      |    3 -
 .../component/http4/HttpNoConnectionTest.java      |    3 -
 .../apache/camel/component/http4/HttpPathTest.java |    2 -
 .../component/http4/HttpPollingConsumerTest.java   |    2 -
 .../HttpProducerWithSystemPropertiesTest.java      |    2 -
 .../camel/component/http4/HttpProxyServerTest.java |    2 -
 .../camel/component/http4/HttpQueryTest.java       |    2 -
 .../camel/component/http4/HttpSOTimeoutTest.java   |    2 -
 .../component/http4/HttpServerTestSupport.java     |    2 -
 .../http4/HttpThrowExceptionOnFailureTest.java     |    2 -
 .../component/http4/HttpWithHttpUriHeaderTest.java |    2 -
 .../component/http4/HttpsAuthenticationTest.java   |    2 -
 .../apache/camel/component/http4/HttpsGetTest.java |    2 -
 .../component/http4/HttpsServerTestSupport.java    |    2 -
 .../camel/component/http4/UrlRewriteTest.java      |   62 +
 .../handler/AuthenticationValidationHandler.java   |    2 -
 .../http4/handler/BasicValidationHandler.java      |    2 -
 .../http4/handler/DelayValidationHandler.java      |    2 -
 .../http4/handler/HeaderValidationHandler.java     |    2 -
 .../ProxyAuthenticationValidationHandler.java      |    2 -
 .../hystrix/processor/HystrixProcessorFactory.java |  217 +---
 .../hystrix/processor/HystrixReifier.java          |  251 ++++
 .../processor/HystrixHierarchicalConfigTest.java   |   51 +-
 .../SpringHystrixRouteHierarchicalConfigTest.java  |    4 +-
 .../src/main/docs/iec60870-client-component.adoc   |    2 +-
 .../src/main/docs/iec60870-server-component.adoc   |    2 +-
 .../src/main/docs/ignite-cache-component.adoc      |    2 +-
 .../src/main/docs/ignite-events-component.adoc     |    2 +-
 .../src/main/docs/ignite-messaging-component.adoc  |    2 +-
 .../camel/component/ignite/IgniteComponent.java    |  138 ++
 .../ignite/cache/IgniteCacheComponent.java         |    2 +-
 .../ignite/cache/IgniteCacheEndpoint.java          |   12 +-
 .../ignite/compute/IgniteComputeEndpoint.java      |    7 +
 .../ignite/events/IgniteEventsEndpoint.java        |   13 +
 .../ignite/idgen/IgniteIdGenEndpoint.java          |   10 +
 .../ignite/messaging/IgniteMessagingEndpoint.java  |    8 +
 .../ignite/queue/IgniteQueueEndpoint.java          |   17 +
 .../component/ignite/set/IgniteSetEndpoint.java    |   18 +
 .../src/main/docs/infinispan-component.adoc        |    8 +-
 .../infinispan/InfinispanConfiguration.java        |   21 +
 .../infinispan/InfinispanClusterTestSupport.java   |    2 +-
 .../InfinispanRemoteQueryProducerIT.java           |    2 +-
 .../infinispan/InfinispanTestSupport.java          |    2 +-
 .../camel-irc/src/main/docs/irc-component.adoc     |    5 +-
 .../apache/camel/component/irc/IrcComponent.java   |    2 -
 .../camel/component/irc/IrcConfiguration.java      |   16 +
 .../camel/component/irc/CodehausIrcChat.java       |    2 -
 .../component/irc/IrcMultiChannelRouteTest.java    |    2 -
 .../apache/camel/component/irc/IrcOnReplyTest.java |    2 -
 .../apache/camel/component/irc/IrcPrivmsgTest.java |    2 -
 .../apache/camel/component/irc/IrcRouteTest.java   |    2 -
 .../src/main/docs/ironmq-component.adoc            |    2 +-
 .../component/jackson/JacksonConcurrentTest.java   |    2 -
 .../jackson/SpringJacksonEnableFeatureTest.java    |    2 -
 .../jackson/SpringJacksonJsonDataFormatTest.java   |    2 -
 .../SpringJacksonMarshalUnmarshalListTest.java     |    2 -
 .../jacksonxml/JacksonConcurrentTest.java          |    3 -
 .../jacksonxml/SpringJacksonEnableFeatureTest.java |    3 -
 .../SpringJacksonJsonDataFormatTest.java           |    3 -
 .../SpringJacksonMarshalUnmarshalListTest.java     |    3 -
 .../org/apache/camel/component/jasypt/Main.java    |    2 -
 .../jasypt/BlueprintJasyptProperties2Test.java     |    2 -
 .../jasypt/BlueprintJasyptProperties3Test.java     |    2 -
 .../jasypt/BlueprintJasyptPropertiesTest.java      |    2 -
 .../component/jasypt/JasyptPropertiesTest.java     |    2 -
 .../apache/camel/component/jasypt/MainTest.java    |    2 -
 .../SpringJasyptBridgePropertiesAutowireTest.java  |    3 -
 .../jasypt/SpringJasyptBridgePropertiesTest.java   |    2 -
 .../jasypt/SpringJasyptProperties2Test.java        |    2 -
 .../jasypt/SpringJasyptPropertiesTest.java         |    2 -
 .../converter/jaxb/FallbackTypeConverter.java      |    3 -
 .../camel/converter/jaxb/JaxbDataFormat.java       |    2 -
 .../camel/converter/jaxb/NonXmlCharFilterer.java   |    1 -
 .../camel/converter/jaxb/address/Address.java      |    1 -
 .../converter/jaxb/address/ObjectFactory.java      |    1 -
 .../camel/converter/jaxb/person/ObjectFactory.java |    1 -
 .../apache/camel/converter/jaxb/person/Person.java |    1 -
 .../camel/example/DataFormatComponentTest.java     |    2 -
 .../camel/example/DataFormatConcurrentTest.java    |    3 -
 .../camel/example/DataFormatDataSetTest.java       |    2 -
 .../org/apache/camel/example/DataFormatTest.java   |    2 -
 .../ExplicitEncodingAndXMLCharFilteringTest.java   |    2 -
 .../camel/example/ExplicitFileEncodingTest.java    |    2 -
 .../camel/example/InvalidOrderException.java       |    2 -
 .../org/apache/camel/example/JAXBConvertTest.java  |    2 -
 .../example/JaxbConcurrentDataFormatTest.java      |    2 -
 .../org/apache/camel/example/PurchaseOrder.java    |    2 -
 .../camel/example/RouteWithErrorHandlerTest.java   |    2 -
 .../apache/camel/example/SpringDataFormatTest.java |    2 -
 .../example/SpringDataFormatWithEncodingTest.java  |    2 -
 ...aFormatWithMarshalAndUnmarshalUsingRefTest.java |    2 -
 ...WithMarshalAndUnmarshalUsingSpringBeanTest.java |    2 -
 .../org/apache/camel/example/UnmarshalTest.java    |    2 -
 .../org/apache/camel/foo/bar/ObjectFactory.java    |    1 -
 .../java/org/apache/camel/foo/bar/PersonType.java  |    1 -
 .../src/main/docs/jcache-component.adoc            |    2 +-
 .../src/main/docs/jclouds-component.adoc           |    2 +-
 .../camel-jcr/src/main/docs/jcr-component.adoc     |    2 +-
 .../apache/camel/component/jcr/JcrConsumer.java    |    2 -
 .../jcr/JcrRouteDifferentWorkspaceTestSupport.java |    1 -
 .../camel/component/jcr/JcrRouteTestSupport.java   |    2 -
 .../apache/camel/component/jdbc/JdbcComponent.java |    3 -
 .../apache/camel/component/jdbc/JdbcProducer.java  |    3 -
 .../component/jetty/CamelMultipartFilter.java      |   31 +
 .../component/jetty/DefaultJettyHttpBinding.java   |    3 -
 .../camel/component/jetty/JettyConverter.java      |    2 -
 .../camel/component/jetty/JettyHttpComponent.java  |   13 +-
 .../camel/component/jetty/JettyHttpEndpoint.java   |   15 +-
 .../camel/component/jetty/JettyHttpProducer.java   |    9 +-
 .../component/jetty/JettyRestHttpBinding.java      |    1 +
 .../src/main/docs/jetty-component.adoc             |    8 +-
 .../jetty/ConvertPayloadToInputStreamTest.java     |    2 -
 .../jetty/HttpAuthMethodPriorityTest.java          |    2 -
 .../HttpBasicAuthComponentConfiguredTest.java      |    2 -
 .../camel/component/jetty/HttpBasicAuthTest.java   |    3 -
 .../camel/component/jetty/HttpConverterTest.java   |    2 -
 .../jetty/HttpFilterCamelHeadersTest.java          |    2 -
 .../jetty/HttpFilterNoCamelHeadersTest.java        |    2 -
 .../HttpOperationsFailedExceptionUriTest.java      |    2 -
 .../component/jetty/HttpPollingConsumerTest.java   |    2 -
 .../component/jetty/HttpProducerByteTest.java      |    2 -
 .../jetty/HttpProducerConnectionCloseTest.java     |    2 -
 .../jetty/HttpProducerJMXBeansIssueTest.java       |    2 -
 .../jetty/HttpProducerOkStatusCodeRangeTest.java   |    2 -
 .../jetty/HttpProducerQueryParamTest.java          |    2 -
 .../jetty/HttpRedirectNoLocationTest.java          |    2 -
 .../camel/component/jetty/HttpRedirectTest.java    |    3 -
 ...ttpReturnDataNotInputStreamConvertableTest.java |    2 -
 .../camel/component/jetty/HttpReturnFaultTest.java |    3 -
 .../camel/component/jetty/HttpRouteTest.java       |    2 -
 .../camel/component/jetty/HttpSendFileTest.java    |    2 -
 .../jetty/HttpStreamCacheFileIssueTest.java        |    2 -
 .../jetty/HttpStreamCacheFileResponseTest.java     |    2 -
 .../jetty/HttpStreamCacheFileStopIssueTest.java    |    3 -
 .../component/jetty/HttpStreamCacheFileTest.java   |    2 -
 .../camel/component/jetty/HttpTwoEndpointTest.java |    2 -
 .../component/jetty/HttpTwoServerPortsTest.java    |    2 -
 .../camel/component/jetty/HttpUrlRewriteTest.java  |   64 +
 .../jetty/JettyCallHttpThenExceptionTest.java      |    2 -
 .../jetty/JettyContinuationDisabledTest.java       |    2 -
 .../JettyEndpointContinuationDisabledTest.java     |    2 -
 .../jetty/JettyOnExceptionHandledTest.java         |    2 -
 .../component/jetty/JettySessionSupportTest.java   |    2 -
 .../component/jetty/JettySimulateInOnlyTest.java   |    2 -
 .../component/jetty/JettySuspendResumeTest.java    |    2 -
 .../camel/component/jetty/JettySuspendTest.java    |    2 -
 .../jetty/JettySuspendWhileInProgressTest.java     |    2 -
 .../component/jetty/MultiThreadedHttpGetTest.java  |    2 -
 .../apache/camel/component/jetty/MyUrlRewrite.java |   31 +
 .../SpringJettyNoConnectionRedeliveryTest.java     |    3 -
 .../jetty/SpringJettyNoConnectionTest.java         |    2 -
 .../component/jetty/async/JettyAsyncCBRTest.java   |    2 -
 .../async/JettyAsyncContinuationDisabledTest.java  |    2 -
 .../async/JettyAsyncContinuationTimeoutOkTest.java |    2 -
 .../async/JettyAsyncContinuationTimeoutTest.java   |    2 -
 .../JettyAsyncDefaultContinuationTimeoutTest.java  |    2 -
 .../jetty/async/JettyAsyncFilterTest.java          |    2 -
 .../component/jetty/async/JettyAsyncTest.java      |    2 -
 .../jetty/async/JettyAsyncThrottleTest.java        |    2 -
 .../jetty/async/JettyAsyncTransformTest.java       |    2 -
 .../jetty/async/JettyAsyncTryCatchFinallyTest.java |    2 -
 .../component/jetty/async/MyAsyncComponent.java    |    2 -
 .../component/jetty/async/MyAsyncEndpoint.java     |    2 -
 .../component/jetty/async/MyAsyncProducer.java     |    2 -
 .../component/jetty/javabody/HttpJavaBodyTest.java |    2 -
 .../camel/component/jetty/javabody/MyCoolBean.java |    2 -
 ...yProducerRecipientListCustomThreadPoolTest.java |    2 -
 .../HttpJettyProducerRecipientListTest.java        |    2 -
 .../HttpJettyProducerTwoEndpointTest.java          |    2 -
 .../jettyproducer/HttpJettyUrlRewriteTest.java     |   65 +
 .../JettyHttpProderReturnFaultTest.java            |    2 -
 .../JettyHttpProducerAsyncTimeoutTest.java         |    2 -
 .../JettyHttpProducerAsynchronousTest.java         |    2 -
 .../JettyHttpProducerConcurrentTest.java           |    2 -
 ...HttpProducerContentTypeEncodingInQuoteTest.java |    2 -
 .../JettyHttpProducerGoogleAsynchronousTest.java   |    2 -
 .../jettyproducer/JettyHttpProducerGoogleTest.java |    2 -
 .../JettyHttpProducerJavaBodyTest.java             |    2 -
 .../JettyHttpProducerPutContentTest.java           |    2 -
 .../JettyHttpProducerQueryParamTest.java           |    2 -
 .../JettyHttpProducerRedirectTest.java             |    2 -
 .../JettyHttpProducerSendFileTest.java             |    3 -
 .../JettyHttpProducerSimulate404ErrorTest.java     |    2 -
 .../JettyHttpProducerSuspendResumeTest.java        |    2 -
 .../JettyHttpProducerSuspendTest.java              |    2 -
 ...ettyHttpProducerSuspendWhileInProgressTest.java |    2 -
 .../JettyHttpProducerSynchronousFalseTest.java     |    3 -
 .../JettyHttpProducerSynchronousTest.java          |    2 -
 .../JettyHttpProducerTimeoutTest.java              |    2 -
 .../JettyHttpProducerTransferExceptionTest.java    |    2 -
 .../jettyproducer/JettyProducerHandle404Test.java  |    2 -
 .../component/jetty/jettyproducer/MyCoolBean.java  |    2 -
 .../component/jetty/proxy/HttpClientProxyTest.java |    2 -
 .../HttpClientProxyTransferExceptionTest.java      |    2 -
 .../component/jetty/proxy/MyAppException.java      |    2 -
 .../camel/component/jetty/proxy/MyCoolService.java |    2 -
 .../component/jetty/proxy/MyCoolServiceBean.java   |    2 -
 .../src/main/docs/jgroups-component.adoc           |    2 +-
 .../jgroups/cluster/JGroupsLockClusterView.java    |    2 +-
 .../jibx/JibxDataFormatMarshallTest.java           |    2 -
 .../JibxDataFormatMarshallWithBindingNameTest.java |    3 -
 .../camel/dataformat/jibx/model/PurchaseOrder.java |    2 -
 .../dataformat/jibx/model/PurchaseOrder2.java      |    2 -
 .../component/validator/jing/JingValidator.java    |    1 -
 .../component/validator/jing/RNCRouteTest.java     |    2 -
 .../component/validator/jing/RNGRouteTest.java     |    2 -
 .../camel-jms/src/main/docs/jms-component.adoc     |    2 +-
 .../apache/camel/component/jms/ConsumerType.java   |    2 -
 .../org/apache/camel/component/jms/JmsBinding.java |   15 +
 .../apache/camel/component/jms/JmsComponent.java   |    1 -
 .../camel/component/jms/JmsConfiguration.java      |    3 -
 .../apache/camel/component/jms/JmsConsumer.java    |    2 -
 .../apache/camel/component/jms/JmsEndpoint.java    |    1 -
 .../component/jms/JmsHeaderFilterStrategy.java     |    2 -
 .../camel/component/jms/JmsMessageHelper.java      |    2 -
 .../apache/camel/component/jms/JmsProducer.java    |    2 -
 .../camel/component/jms/QueueBrowseStrategy.java   |    2 -
 .../jms/SimpleJmsMessageListenerContainer.java     |    2 -
 .../jms/ActiveMQOriginalDestinationTest.java       |    2 -
 .../camel/component/jms/BrowsableQueueTest.java    |    2 -
 .../component/jms/ConsumeJmsBytesMessageTest.java  |    2 -
 .../component/jms/ConsumeJmsMapMessageTest.java    |    2 -
 .../component/jms/ConsumeJmsObjectMessageTest.java |    2 -
 .../component/jms/ConsumeMessageConverterTest.java |    2 -
 .../jms/ConsumerTemplateJmsSelectorTest.java       |    2 -
 .../jms/DefaultJmsHeaderKeyFormatStrategyTest.java |    2 -
 .../jms/JmsAllowAdditionalHeadersTest.java         |    2 -
 .../camel/component/jms/JmsAutoStartupTest.java    |    2 -
 .../jms/JmsBatchResequencerJMSPriorityTest.java    |    1 -
 .../camel/component/jms/JmsClientAckTest.java      |    2 -
 .../camel/component/jms/JmsComponentTest.java      |    2 -
 .../component/jms/JmsConsumeTemplateTest.java      |    2 -
 ...sumerRestartPickupConfigurationChangesTest.java |    2 -
 .../jms/JmsCustomHeaderFilterStrategyTest.java     |    2 -
 .../jms/JmsDeadLetterChannelInOutTest.java         |    2 -
 .../component/jms/JmsDestinationResolverTest.java  |    3 -
 .../camel/component/jms/JmsDurableTopicTest.java   |    2 -
 .../jms/JmsEagerLoadingPropertiesTest.java         |    2 -
 .../jms/JmsEndpointConfigurationTest.java          |    2 -
 .../component/jms/JmsHeaderFilteringTest.java      |    2 -
 .../jms/JmsHeaderFilteringWithSpringTest.java      |    2 -
 .../jms/JmsInOnlyDisableTimeToLiveTest.java        |    3 -
 .../jms/JmsInOnlyWithReplyToAsHeaderTest.java      |    2 -
 ...ToDisabledButJMSReplyToHeaderPreservedTest.java |    2 -
 .../jms/JmsInOnlyWithReplyToDisabledTest.java      |    2 -
 .../jms/JmsInOnlyWithReplyToHeaderTest.java        |    2 -
 .../jms/JmsInOnlyWithReplyToHeaderTopicTest.java   |    2 -
 .../jms/JmsInOnlyWithReplyToNotPreservedTest.java  |    2 -
 .../component/jms/JmsInOnlyWithReplyToTest.java    |    2 -
 .../jms/JmsInOutDisableTimeToLiveTest.java         |    3 -
 .../component/jms/JmsInOutNonPersistentTest.java   |    2 -
 .../jms/JmsInOutSynchronousFalseTest.java          |    2 -
 .../component/jms/JmsInOutSynchronousTest.java     |    2 -
 .../jms/JmsIncludeAllJMSXPropertiesTest.java       |    2 -
 .../JmsMessageCreatedStrategyComponentTest.java    |    2 -
 .../jms/JmsMessageCreatedStrategyEndpointTest.java |    2 -
 .../camel/component/jms/JmsMessageTypeTest.java    |    2 -
 .../component/jms/JmsMultipleConsumersTest.java    |    2 -
 .../jms/JmsNotIncludeAllJMSXPropertiesTest.java    |    2 -
 ...OnCompletionAndInterceptAndOnExceptionTest.java |    2 -
 .../component/jms/JmsPollingConsumerTest.java      |    2 -
 .../jms/JmsProducerDisableReplyToTest.java         |    2 -
 .../jms/JmsProducerWithJMSHeaderTest.java          |    2 -
 .../component/jms/JmsProduerConcurrentTest.java    |    2 -
 .../jms/JmsProduerConcurrentWithReplyTest.java     |    2 -
 .../camel/component/jms/JmsQosRouteTest.java       |    2 -
 .../camel/component/jms/JmsRemoveHeaderTest.java   |    2 -
 ...RequestReplyExclusiveReplyToConcurrentTest.java |    3 -
 ...estReplyExclusiveReplyToRemoveAddRouteTest.java |    3 -
 .../JmsRequestReplyFixedReplyToInEndpointTest.java |    2 -
 .../jms/JmsRequestReplyManualReplyTest.java        |    2 -
 .../JmsRequestReplyManualWithJMSReplyToTest.java   |    2 -
 ...lyProcessRepliesConcurrentUsingThreadsTest.java |    2 -
 .../jms/JmsRequestReplySharedReplyToTest.java      |    3 -
 .../component/jms/JmsRouteRequestReplyTest.java    |    2 -
 .../apache/camel/component/jms/JmsRouteTest.java   |    2 -
 .../jms/JmsRouteUsingDifferentHeadersTest.java     |    2 -
 .../component/jms/JmsRouteUsingJMSXGroupTest.java  |    2 -
 .../jms/JmsRouteUsingSpringAndJmsNameTest.java     |    2 -
 .../jms/JmsRouteUsingSpringJMSTemplateTest.java    |    2 -
 .../component/jms/JmsRouteUsingSpringTest.java     |    2 -
 .../jms/JmsRouteUsingSpringWithAutoWireTest.java   |    2 -
 .../JmsRouteWithDefaultKeyFormatStrategyTest.java  |    2 -
 .../jms/JmsRouteWithObjectMessageTest.java         |    2 -
 .../camel/component/jms/JmsSelectorInTest.java     |    2 -
 .../camel/component/jms/JmsSelectorTest.java       |    2 -
 .../apache/camel/component/jms/JmsSessionTest.java |    2 -
 .../camel/component/jms/JmsSimpleHeaderTest.java   |    2 -
 .../component/jms/JmsSplitterParallelTest.java     |    2 -
 .../camel/component/jms/JmsSuspendResumeTest.java  |    2 -
 .../jms/JmsTestConnectionOnStartupTest.java        |    2 -
 .../jms/JmsThrottlingInflightRoutePolicyTest.java  |    4 +-
 .../org/apache/camel/component/jms/JmsToDTest.java |    2 -
 .../org/apache/camel/component/jms/JmsToTest.java  |    2 -
 .../component/jms/JmsTransactedRouteTest.java      |    2 -
 .../component/jms/JmsTransferExceptionTest.java    |    2 -
 .../jms/JmsTransferExchangeFromSplitterTest.java   |    2 -
 .../component/jms/JmsTransferExchangeTest.java     |    2 -
 .../camel/component/jms/JmsTransferFaultTest.java  |    2 -
 .../camel/component/jms/MapJmsMessageTest.java     |    2 -
 .../jms/PassThroughJmsKeyFormatStrategyTest.java   |    2 -
 .../component/jms/ProduceMessageConverterTest.java |    2 -
 .../camel/component/jms/SpringJmsSelectorTest.java |    2 -
 .../component/jms/async/AsyncJmsInOutTest.java     |    2 -
 .../component/jms/async/AsyncJmsProducerTest.java  |    2 -
 .../component/jms/bind/JmsMessageBindTest.java     |    2 -
 .../apache/camel/component/jms/bind/MyBean.java    |    2 -
 .../JmsEndpointWithCustomDestinationTest.java      |    2 -
 .../component/jms/discovery/JmsDiscoveryTest.java  |    2 -
 .../camel/component/jms/discovery/MyService.java   |    2 -
 .../jms/issues/ActiveMQPropagateHeadersTest.java   |    2 -
 .../jms/issues/JmsAnotherCustomJMSReplyToTest.java |    2 -
 .../jms/issues/JmsCustomJMSReplyToIssueTest.java   |    2 -
 .../jms/issues/JmsGetHeaderKeyFormatIssueTest.java |    2 -
 .../component/jms/issues/JmsInOnlyIssueTest.java   |    2 -
 .../jms/issues/JmsInOnlyParameterTest.java         |    2 -
 .../JmsInOutExclusiveTopicRecipientListTest.java   |    2 -
 .../jms/issues/JmsInOutExclusiveTopicTest.java     |    2 -
 .../component/jms/issues/JmsInOutIssueTest.java    |    2 -
 .../component/jms/issues/JmsInOutParallelTest.java |    2 -
 .../issues/JmsInOutPersistentReplyQueueTest.java   |    2 -
 .../issues/JmsInOutRepeatedInvocationsTest.java    |    2 -
 .../jms/issues/JmsInOutRoutingSlipTest.java        |    2 -
 .../JmsInOutUseMessageIDasCorrelationIDTest.java   |    2 -
 .../issues/JmsInOutWithSpringRestartIssueTest.java |    2 -
 .../JmsJMSReplyToEndpointUsingInOutTest.java       |    1 -
 .../jms/issues/JmsMQSpecialHeaderTest.java         |    2 -
 .../component/jms/issues/JmsMutateMessageTest.java |    2 -
 .../issues/JmsMutateRemoveHeaderMessageTest.java   |    2 -
 ...roughtJmsKeyFormatStrategyEndUserIssueTest.java |    2 -
 ...ssThroughtJmsKeyFormatStrategyEndpointTest.java |    2 -
 .../JmsPassThroughtJmsKeyFormatStrategyTest.java   |    2 -
 ...KeyFormatStrategyUsingJmsConfigurationTest.java |    2 -
 .../jms/issues/JmsReplyToLoopIssueTest.java        |    2 -
 .../jms/issues/JmsRoutingSlipIssueTest.java        |    2 -
 ...endToAlotOfDestinationWithSameEndpointTest.java |    2 -
 .../issues/RequestReplyWithProducerIssueTest.java  |    2 -
 .../component/jms/issues/TempReplyToIssueTest.java |    2 -
 .../component/jms/remoting/JmsRemotingTest.java    |    2 -
 .../camel/component/jms/temp/JmsProviderTest.java  |    2 -
 .../jms/temp/TemporaryQueueRouteTest.java          |    2 -
 .../jms/tuning/PerformanceRoutePojoTest.java       |    2 -
 .../component/jms/tuning/PerformanceRouteTest.java |    2 -
 .../camel/component/jms/tuning/RoutePojo.java      |    2 -
 .../component/jms/tx/AsyncEndpointJmsTX2Test.java  |    2 -
 .../jms/tx/AsyncEndpointJmsTXMulticastTest.java    |    2 -
 .../tx/AsyncEndpointJmsTXRecipientListTest.java    |    2 -
 .../jms/tx/AsyncEndpointJmsTXRollback2Test.java    |    2 -
 .../jms/tx/AsyncEndpointJmsTXRollbackTest.java     |    2 -
 .../jms/tx/AsyncEndpointJmsTXRoutingSlipTest.java  |    2 -
 .../component/jms/tx/AsyncEndpointJmsTXTest.java   |    2 -
 .../tx/AsyncEndpointJmsTXTryCatchFinallyTest.java  |    2 -
 .../jms/tx/AsyncEndpointJmsTXWireTapTest.java      |    2 -
 .../jms/tx/JMSTXInOutPersistentQueueTest.java      |    2 -
 .../component/jms/tx/JMXTXUseOriginalBodyTest.java |    2 -
 ...MXTXUseOriginalBodyWithDLCErrorHandlerTest.java |    2 -
 ...JMXTXUseOriginalBodyWithTXErrorHandlerTest.java |    2 -
 .../jms/tx/JmsToJmsTransactedSecurityTest.java     |    2 -
 .../component/jms/tx/JmsToJmsTransactedTest.java   |    2 -
 .../component/jms/tx/RouteIdTransactedTest.java    |    2 -
 .../jms/tx/TransactedAsyncUsingThreadsTest.java    |    2 -
 .../tx/JMSTransactionThrottlingRoutePolicyTest.xml |    2 +-
 .../camel-jmx/src/main/docs/jmx-component.adoc     |    8 +-
 ...sumerObserveAttributeMatchStringDifferTest.java |   10 +-
 ...JmxConsumerObserveAttributeMatchStringTest.java |   10 +-
 .../jmx/CamelJmxConsumerObserveAttributeTest.java  |    6 +-
 .../camel/component/jmx/CamelJmxConsumerTest.java  |    4 +-
 .../camel/component/jmx/JMXEndpointTest.java       |    1 -
 .../camel/component/jmx/MockEndpointFixture.java   |    1 -
 .../camel/component/jmx/SimpleBeanFixture.java     |    1 -
 .../johnzon/SpringJohnzonJsonDataFormatTest.java   |    2 -
 .../camel-jpa/src/main/docs/jpa-component.adoc     |    4 +-
 .../org/apache/camel/component/jpa/Callback.java   |    2 -
 .../apache/camel/component/jpa/JpaConstants.java   |    6 +
 .../apache/camel/component/jpa/JpaConsumer.java    |    2 -
 .../apache/camel/component/jpa/JpaEndpoint.java    |    2 +-
 .../apache/camel/component/jpa/JpaProducer.java    |    2 -
 .../apache/camel/component/jpa/QueryBuilder.java   |    1 -
 .../idempotent/jpa/JpaMessageIdRepository.java     |    3 -
 .../processor/idempotent/jpa/MessageProcessed.java |    2 -
 .../camel/component/jpa/AbstractJpaMethodTest.java |    4 +-
 .../camel/component/jpa/JpaComponentTest.java      |    3 -
 .../camel/component/jpa/JpaEndpointTest.java       |    2 -
 .../org/apache/camel/component/jpa/JpaTest.java    |    4 +-
 .../camel/component/jpa/JpaUseMergeTest.java       |    2 -
 .../camel/component/jpa/JpaUsePersistTest.java     |    2 -
 .../jpa/JpaUsingCustomPersistenceUnitTest.java     |    2 -
 .../camel/component/jpa/JpaWithNamedQueryTest.java |    2 -
 .../component/jpa/JpaWithNativeQueryTest.java      |    2 -
 .../jpa/JpaWithNativeQueryWithResultClassTest.java |    2 -
 .../camel/component/jpa/JpaWithQueryTest.java      |    2 -
 .../camel/component/jpa/QueryBuilderTest.java      |    2 -
 .../java/org/apache/camel/examples/Address.java    |    2 -
 .../java/org/apache/camel/examples/Customer.java   |    2 -
 .../org/apache/camel/examples/VersionedItem.java   |    2 -
 .../camel/processor/jpa/AbstractJpaTest.java       |    2 -
 .../camel/processor/jpa/JpaBatchConsumerTest.java  |    2 -
 .../camel/processor/jpa/JpaFlushOnSendTest.java    |    2 -
 .../processor/jpa/JpaIdempotentConsumerTest.java   |    2 -
 .../camel/processor/jpa/JpaNonTXRollbackTest.java  |    2 -
 .../camel/processor/jpa/JpaPreConsumedTest.java    |    2 -
 .../processor/jpa/JpaProducerConcurrentTest.java   |    2 -
 .../camel/processor/jpa/JpaProducerNoBodyTest.java |    2 -
 .../jpa/JpaProducerPassingEntityManagerTest.java   |    4 +-
 .../camel/processor/jpa/JpaProducerRemoveTest.java |    2 -
 .../jpa/JpaRouteConsumeLockEntityTest.java         |    2 -
 .../camel/processor/jpa/JpaRouteEndpointTest.java  |    2 -
 .../processor/jpa/JpaRouteMaximumResultsTest.java  |    2 -
 .../jpa/JpaRouteSharedEntityManagerTest.java       |    2 -
 .../jpa/JpaRouteSkipLockedEntityTest.java          |    3 -
 .../apache/camel/processor/jpa/JpaRouteTest.java   |    4 +-
 .../jpa/JpaRoutemaxMessagesPerPollTest.java        |    2 -
 .../camel/processor/jpa/JpaTXRollbackTest.java     |    2 -
 .../apache/camel/processor/jpa/JpaWireTapTest.java |    2 -
 .../java/org/apache/camel/jsonpath/JsonPath.java   |    2 -
 .../org/apache/camel/jsonpath/JsonPathEngine.java  |    5 +
 .../camel-jt400/src/main/docs/jt400-component.adoc |    2 +-
 .../component/jt400/Jt400DataQueueConsumer.java    |   11 +
 .../jt400/Jt400DataQueueConsumerTest.java          |    2 +-
 .../camel-kafka/src/main/docs/kafka-component.adoc |    2 +-
 .../camel/component/kafka/KafkaConstants.java      |    5 +
 .../src/main/docs/kubernetes-component.adoc        |  287 -----
 .../docs/kubernetes-deployments-component.adoc     |    2 +-
 .../src/main/docs/kubernetes-hpa-component.adoc    |    2 +-
 .../src/main/docs/kubernetes-job-component.adoc    |    2 +-
 .../main/docs/kubernetes-namespaces-component.adoc |    2 +-
 .../src/main/docs/kubernetes-nodes-component.adoc  |    2 +-
 .../src/main/docs/kubernetes-pods-component.adoc   |    2 +-
 ...bernetes-replication-controllers-component.adoc |    2 +-
 .../main/docs/kubernetes-services-component.adoc   |    2 +-
 .../kubernetes/KubernetesConfiguration.java        |   32 +-
 .../kubernetes/cluster/KubernetesClusterView.java  |    2 +-
 .../services/org/apache/camel/component/kubernetes |   18 -
 ...DeprecatedKubernetesConfigMapsProducerTest.java |   50 +
 ...DeprecatedKubernetesNamespacesConsumerTest.java |   47 +
 ...DeprecatedKubernetesNamespacesProducerTest.java |   50 +
 .../DeprecatedKubernetesNodesConsumerTest.java     |   46 +
 .../DeprecatedKubernetesNodesProducerTest.java     |   41 +
 ...ernetesPersistentVolumesClaimsProducerTest.java |   48 +
 ...tedKubernetesPersistentVolumesProducerTest.java |   41 +
 .../DeprecatedKubernetesPodsConsumerTest.java      |   46 +
 .../DeprecatedKubernetesPodsProducerTest.java      |   50 +
 ...bernetesReplicationControllersConsumerTest.java |   51 +
 ...bernetesReplicationControllersProducerTest.java |   54 +
 ...ecatedKubernetesResourcesQuotaProducerTest.java |   50 +
 .../DeprecatedKubernetesSecretsProducerTest.java   |   50 +
 ...catedKubernetesServiceAccountsProducerTest.java |   50 +
 .../DeprecatedKubernetesServicesConsumerTest.java  |   47 +
 .../DeprecatedKubernetesServicesProducerTest.java  |   50 +
 .../apache/camel/component/ldap/LdapComponent.java |    2 -
 .../apache/camel/component/ldap/LdapProducer.java  |    3 -
 .../camel/component/leveldb/LevelDBCamelCodec.java |    2 -
 ...elDBAggregateConcurrentDifferentGroupsTest.java |    2 -
 .../LevelDBAggregateConcurrentSameGroupTest.java   |    2 -
 .../linkedin/api/LinkedInOAuthRequestFilter.java   |    1 -
 .../camel/component/linkedin/api/OAuthScope.java   |    2 +
 .../src/main/docs/linkedin-component.adoc          |    2 +-
 .../src/main/docs/lumberjack-component.adoc        |    2 +-
 .../camel-mail/src/main/docs/mail-component.adoc   |    2 +-
 .../apache/camel/component/mail/MailComponent.java |    2 -
 .../camel/component/mail/MailConfiguration.java    |    2 -
 .../camel/component/mail/FromFileSendMailTest.java |    2 -
 .../component/mail/MailCollectionHeaderTest.java   |    2 -
 .../mail/MailComponentRecipientSetTest.java        |    2 -
 .../camel/component/mail/MailComponentTest.java    |    2 -
 .../mail/MailConsumerUnsupportedCharsetTest.java   |    2 -
 .../camel/component/mail/MailConvertersTest.java   |    2 -
 .../component/mail/MailCustomMailSenderTest.java   |    2 -
 .../camel/component/mail/MailEndpointTest.java     |    2 -
 .../camel/component/mail/MailMessageTest.java      |    2 -
 .../mail/MailProducerUnsupportedCharsetTest.java   |    2 -
 .../apache/camel/component/mail/MailRouteTest.java |    2 -
 .../mail/MailToMultipleEndpointsTest.java          |    2 -
 .../component/mail/MimeMessageConsumeTest.java     |    2 -
 .../mail/MultipleDestinationConsumeTest.java       |    2 -
 .../src/main/docs/master-component.adoc            |    2 +-
 .../camel/component/master/MasterComponent.java    |    4 +-
 .../AbstractMicrometerEventNotifier.java           |    8 +-
 .../MicrometerExchangeEventNotifier.java           |   25 +-
 ...rometerExchangeEventNotifierNamingStrategy.java |    6 +-
 .../MicrometerRouteEventNotifier.java              |   19 +-
 ...MicrometerRouteEventNotifierNamingStrategy.java |    6 +-
 .../src/main/docs/milo-client-component.adoc       |    4 +-
 .../src/main/docs/milo-server-component.adoc       |    2 +-
 .../milo/server/internal/CamelServerItem.java      |    8 +-
 .../camel-mina2/src/main/docs/mina2-component.adoc |    2 +-
 .../camel/component/mina2/Mina2Consumer.java       |    2 -
 .../camel/component/mina2/Mina2Producer.java       |    2 -
 .../mina2/Mina2UdpProtocolCodecFactory.java        |    3 -
 .../mina2/Mina2ComponentWithConfigurationTest.java |    2 -
 .../camel/component/mina2/Mina2ConverterTest.java  |    2 -
 .../camel/component/mina2/Mina2FileTcpTest.java    |    2 -
 .../camel/component/mina2/Mina2FileUdpTest.java    |    2 -
 .../component/mina2/Mina2MaxLineLengthTest.java    |    2 -
 .../mina2/Mina2ProducerAnotherConcurrentTest.java  |    2 -
 .../mina2/Mina2ProducerConcurrentTest.java         |    2 -
 .../mina2/Mina2SslContextParametersTcpTest.java    |    2 -
 .../mina2/Mina2SslContextParametersUdpTest.java    |    2 -
 .../mina2/Mina2SslContextParametersVmTest.java     |    2 -
 .../Mina2SslGlobalContextParametersTcpTest.java    |    2 -
 .../apache/camel/component/mina2/Mina2TcpTest.java |    2 -
 .../component/mina2/Mina2TcpWithInOutTest.java     |    2 -
 .../mina2/Mina2TransferExchangeOptionTest.java     |    2 -
 .../component/mina2/Mina2UdpConcurrentTest.java    |    2 -
 .../apache/camel/component/mina2/Mina2UdpTest.java |    2 -
 .../component/mina2/Mina2UdpUsingTemplateTest.java |    3 -
 .../camel/component/mina2/Mina2VMFileTcpTest.java  |    2 -
 .../apache/camel/component/mina2/Mina2VmTest.java  |    2 -
 .../camel-mllp/src/main/docs/mllp-component.adoc   |   16 +-
 .../camel/component/mllp/MllpConfiguration.java    |   68 +
 .../apache/camel/component/mllp/MllpEndpoint.java  |   27 +
 .../component/mllp/MllpTcpServerConsumer.java      |    1 +
 .../src/main/docs/mongodb-gridfs-component.adoc    |    2 +-
 .../component/mongodb/gridfs/GridFsConsumer.java   |    3 -
 .../component/mongodb/gridfs/GridFsEndpoint.java   |    1 -
 .../mongodb/gridfs/GridFsConsumerTest.java         |    3 -
 .../src/main/docs/mongodb3-component.adoc          |   22 +-
 .../camel-mqtt/src/main/docs/mqtt-component.adoc   |    6 +-
 .../camel/component/mqtt/MQTTConfiguration.java    |   40 +
 .../apache/camel/component/mqtt/MQTTEndpoint.java  |    7 +
 .../apache/camel/component/mqtt/MQTTBrigeTest.java |    2 -
 .../component/mqtt/MQTTConfigurationTest.java      |    2 +-
 .../camel/component/mqtt/MQTTDuplicatesTest.java   |    2 -
 .../component/validator/msv/RelaxNGRouteTest.java  |    2 -
 .../java/org/apache/camel/language/mvel/MVEL.java  |    1 -
 .../apache/camel/language/mvel/MvelLanguage.java   |    1 -
 .../src/main/docs/mybatis-component.adoc           |    2 +-
 .../mybatis/DefaultMyBatisProcessingStrategy.java  |    2 -
 .../camel/component/mybatis/MyBatisComponent.java  |    2 -
 .../camel/component/mybatis/MyBatisProducer.java   |    3 -
 .../camel/component/mybatis/StatementType.java     |    2 -
 .../apache/camel/component/mybatis/Account.java    |    2 -
 .../src/main/docs/nagios-component.adoc            |    6 +-
 .../camel/component/nagios/NagiosComponent.java    |    2 -
 .../component/nagios/NagiosConfiguration.java      |   20 +-
 .../camel/component/nagios/NagiosConstants.java    |    2 -
 .../component/nagios/NagiosEncryptionMethod.java   |   28 +
 .../component/nagios/NagiosEventNotifier.java      |   23 +-
 .../camel/component/nagios/NagiosProducer.java     |    2 -
 .../component/nagios/NagiosAsyncSendTest.java      |    2 -
 .../component/nagios/NagiosEventNotifierTest.java  |    2 -
 .../apache/camel/component/nagios/NagiosTest.java  |    2 -
 .../component/nagios/NagiosXorEncryptionTest.java  |    2 -
 .../camel-nats/src/main/docs/nats-component.adoc   |    2 +-
 .../src/main/docs/netty4-http-component.adoc       |    8 +-
 .../netty4/http/DefaultNettySharedHttpServer.java  |   17 +-
 .../netty4/http/HttpClientInitializerFactory.java  |   29 +-
 .../netty4/http/HttpServerInitializerFactory.java  |   29 +-
 .../http/HttpServerSharedInitializerFactory.java   |   33 +-
 .../component/netty4/http/NettyHttpConstants.java  |    2 +
 .../component/netty4/http/NettyHttpHelper.java     |    1 -
 .../http/NettyHttpOperationFailedException.java    |   15 +
 .../netty4/http/NettySharedHttpServer.java         |    9 +-
 .../component/netty4/http/LogCaptureAppender.java  |    2 -
 .../src/main/docs/netty4-component.adoc            |   16 +-
 .../netty4/DefaultClientInitializerFactory.java    |   29 +-
 .../netty4/DefaultServerInitializerFactory.java    |   43 +-
 .../camel/component/netty4/NettyConfiguration.java |   48 +
 .../netty4/NettyServerBootstrapConfiguration.java  |   53 +
 .../camel/component/netty4/util/SubnetUtils.java   |   27 +-
 .../camel/component/netty4/LogCaptureAppender.java |    2 -
 .../camel/component/netty4/Netty2978IssueTest.java |    2 -
 .../NettyComponentWithConfigurationTest.java       |    2 -
 .../component/netty4/NettyDisconnectTest.java      |    2 -
 .../camel/component/netty4/NettyFileTcpTest.java   |    2 -
 .../NettyInOutCloseChannelWhenCompleteTest.java    |    2 -
 .../component/netty4/NettyInOutFromSedaTest.java   |    2 -
 .../netty4/NettyInOutWithForcedNoResponseTest.java |    2 -
 .../component/netty4/NettyManualEndpointTest.java  |    4 +-
 .../netty4/NettyProducerAsyncEndpointTest.java     |    2 -
 .../netty4/NettyProducerPoolDisabledTest.java      |    2 -
 .../component/netty4/NettyRequestTimeoutTest.java  |    2 -
 .../component/netty4/NettyReuseChannelTest.java    |    2 -
 .../NettyTcpWithInOutUsingPlainSocketTest.java     |    2 -
 .../NettyTextlineInOnlyNullDelimiterTest.java      |    2 -
 .../component/netty4/NettyTextlineInOnlyTest.java  |    2 -
 .../netty4/NettyTextlineInOutNonBlockingTest.java  |    2 -
 .../NettyTextlineInOutSynchronousFalseTest.java    |    2 -
 .../netty4/NettyTextlineInOutSynchronousTest.java  |    2 -
 .../component/netty4/NettyTextlineInOutTest.java   |    2 -
 .../netty4/NettyTransferExchangeOptionTest.java    |    2 -
 .../NettyUdpWithInOutUsingPlainSocketTest.java     |    2 -
 ...ttyUseSharedWorkerThreadPoolManyRoutesTest.java |    2 -
 .../netty4/NettyUseSharedWorkerThreadPoolTest.java |    2 -
 .../SpringNettyUseSharedWorkerThreadPoolTest.java  |    2 -
 .../org/apache/camel/language/ognl/RootObject.java |    2 -
 .../org/apache/camel/language/ognl/OgnlTest.java   |    2 -
 .../camel/language/ognl/patterns/FilterTest.java   |    2 -
 .../src/main/docs/olingo2-component.adoc           |    2 +-
 .../src/main/docs/olingo4-component.adoc           |    2 +-
 .../camel/opentracing/OpenTracingTracer.java       |    9 +-
 .../src/main/docs/optaplanner-component.adoc       |    2 +-
 .../camel-paho/src/main/docs/paho-component.adoc   |    2 +-
 .../apache/camel/component/paho/PahoConstants.java |    2 +
 .../src/main/docs/paxlogging-component.adoc        |    2 +-
 .../component/paxlogging/PaxLoggingEndpoint.java   |    8 +
 .../src/main/docs/pgevent-component.adoc           |    2 +-
 .../camel/component/printer/PrinterComponent.java  |    1 +
 .../src/main/docs/pubnub-component.adoc            |    2 +-
 .../src/main/docs/quartz2-component.adoc           |    2 +-
 .../quartz2/QuartzAddDynamicRouteTest.java         |    2 -
 ...uartzAddRoutesAfterCamelContextStartedTest.java |    2 -
 .../component/quartz2/QuartzAutoStartTest.java     |    2 -
 .../component/quartz2/QuartzComponentTest.java     |    2 -
 .../quartz2/QuartzEndpointConfigureTest.java       |    2 -
 .../component/quartz2/QuartzInterruptTest.java     |    2 -
 .../quartz2/QuartzJobRouteUnderscoreTest.java      |    2 -
 .../quartz2/QuartzOneCamelContextRestartTest.java  |    2 -
 .../QuartzOneCamelContextSuspendResumeTest.java    |    2 -
 .../quartz2/QuartzRepeatIntervalTest.java          |    2 -
 .../component/quartz2/QuartzRouteFireNowTest.java  |    2 -
 .../component/quartz2/QuartzRouteRestartTest.java  |    2 -
 .../camel/component/quartz2/QuartzRouteTest.java   |    2 -
 .../component/quartz2/QuartzStopRouteTest.java     |    3 -
 .../component/quartz2/QuartzSuspendRouteTest.java  |    3 -
 .../quartz2/QuartzTwoCamelContextRestartTest.java  |    2 -
 .../QuartzTwoCamelContextSameNameClashTest.java    |    2 -
 .../QuartzTwoCamelContextSuspendResumeTest.java    |    2 -
 .../quartz2/QuartzTwoCamelContextTest.java         |    2 -
 ...QuartzConsumerTwoAppsClusteredFailoverTest.java |    2 -
 .../quartz2/SpringQuartzCronRouteTest.java         |    2 -
 ...PersistentStoreRestartAppChangeOptionsTest.java |    2 -
 .../SpringQuartzPersistentStoreRestartAppTest.java |    2 -
 ...pringQuartzPersistentStoreRestartRouteTest.java |    2 -
 .../quartz2/SpringQuartzPersistentStoreTest.java   |    2 -
 .../quartz2/CronScheduledRoutePolicyTest.java      |    2 -
 .../quartz2/MultiplePoliciesOnRouteTest.java       |    4 +-
 .../camel/routepolicy/quartz2/MultiplePolicies.xml |    2 +-
 .../src/main/docs/quickfix-component.adoc          |    2 +-
 .../camel/component/quickfixj/QuickfixjEngine.java |   34 +
 .../component/quickfixj/QuickfixjSpringTest.java   |    9 +
 .../quickfixj/examples/AuthenticationExample.java  |    1 -
 .../quickfixj/examples/SimpleMessagingExample.java |    1 -
 .../src/main/docs/rabbitmq-component.adoc          |    2 +-
 .../component/rabbitmq/reply/ReplyManager.java     |    2 -
 .../src/main/docs/reactive-streams-component.adoc  |    2 +-
 .../engine/DefaultCamelReactiveStreamsService.java |    2 +-
 .../BackpressurePublisherRoutePolicyTest.java      |    2 +-
 .../src/main/docs/restlet-component.adoc           |    2 +-
 .../camel/component/restlet/MethodBasedRouter.java |    1 -
 .../camel/component/restlet/RestletBinding.java    |    1 -
 .../camel/component/restlet/RestletComponent.java  |    2 -
 .../camel/component/restlet/RestletConstants.java  |    1 -
 .../restlet/RestletHeaderFilterStrategy.java       |    1 -
 .../restlet/converter/RestletConverter.java        |    2 -
 .../camel/component/restlet/AddQueryTest.java      |    3 -
 ...stRestletBindingInJaxbOutStringWithXmlTest.java |    2 -
 .../RestRestletBindingModeAutoWithJsonTest.java    |    2 -
 .../RestRestletBindingModeAutoWithXmlTest.java     |    2 -
 .../restlet/RestRestletBindingModeJsonTest.java    |    2 -
 .../restlet/RestRestletBindingModeXmlTest.java     |    2 -
 .../RestRestletComponentConfigurationTest.java     |    2 -
 .../RestRestletCustomDataFormatInvalidTest.java    |    2 -
 .../restlet/RestRestletCustomDataFormatTest.java   |    2 -
 .../component/restlet/RestRestletGetCorsTest.java  |    2 -
 .../component/restlet/RestRestletGetTest.java      |    2 -
 .../restlet/RestRestletHttpOptionsTest.java        |    2 -
 .../restlet/RestRestletNoPathParameterTest.java    |    2 -
 ...estRestletPojoInOutCustomErrorResponseTest.java |    2 -
 .../restlet/RestRestletPojoInOutTest.java          |    2 -
 .../restlet/RestRestletPostJsonJaxbPojoTest.java   |    2 -
 .../restlet/RestRestletPostJsonPojoListTest.java   |    2 -
 .../RestRestletPostJsonPojoOnExceptionTest.java    |    2 -
 .../restlet/RestRestletPostJsonPojoTest.java       |    2 -
 .../restlet/RestRestletPostXmlJaxbPojoTest.java    |    2 -
 .../RestRestletProducerGetJettyServerTest.java     |    2 -
 .../restlet/RestRestletProducerGetTest.java        |    2 -
 .../RestRestletProducerGetUriParameterTest.java    |    2 -
 .../component/restlet/RestletAddRouteTest.java     |    2 -
 .../component/restlet/RestletContentTypeTest.java  |    2 -
 .../RestletEndpointUpdateEndpointUriTest.java      |    3 -
 .../restlet/RestletExceptionResponseTest.java      |    4 -
 .../camel/component/restlet/RestletFaultTest.java  |    2 -
 .../restlet/RestletHeaderFilterStrategyTest.java   |    2 -
 .../RestletHttpEmptyQueryParameterTest.java        |    2 -
 ...letHttpsWithGlobalSSLContextParametersTest.java |    2 -
 .../RestletHttpsWithSSLContextParametersTest.java  |    2 -
 .../restlet/RestletMultiMethodsEndpointTest.java   |    1 -
 .../restlet/RestletMultiRoutesEndpointTest.java    |    1 -
 .../RestletMultiUriTemplatesEndpointTest.java      |    1 -
 .../component/restlet/RestletPostContentTest.java  |    2 -
 .../component/restlet/RestletPostFormTest.java     |    2 -
 .../RestletPostXmlRouteAndJSONAsReturnTest.java    |    2 -
 .../component/restlet/RestletPostXmlRouteTest.java |    2 -
 .../component/restlet/RestletPostXmlTest.java      |    2 -
 .../restlet/RestletProducerBinaryStreamTest.java   |    3 -
 .../restlet/RestletProducerConcurrentTest.java     |    1 -
 .../component/restlet/RestletProducerGet2Test.java |    2 -
 .../RestletProducerGetResponseCodeTest.java        |    2 -
 .../RestletProducerPropagateHeadersTest.java       |    2 -
 .../RestletProducerStandardHeaderWarningTest.java  |    2 -
 .../restlet/RestletProducerSynchronouslyTest.java  |    2 -
 .../component/restlet/RestletProducerTest.java     |    2 -
 .../camel/component/restlet/RestletQueryTest.java  |    2 -
 .../restlet/RestletRecipientListTest.java          |    2 -
 .../component/restlet/RestletRedirectTest.java     |    2 -
 .../component/restlet/RestletResponseTest.java     |    2 -
 .../restlet/RestletRestProducerPutTest.java        |    2 -
 .../RestletRestProducerVerbUpperCaseTest.java      |    2 -
 .../component/restlet/RestletRestartRouteTest.java |    2 -
 .../component/restlet/RestletSetBodyTest.java      |    3 -
 .../component/restlet/RestletTestSupport.java      |    2 -
 .../component/restlet/RestletTwoEndpointsTest.java |    2 -
 .../restlet/RestletValidUriQueryTest.java          |    2 -
 .../restlet/SpringRestRestletPojoInOutTest.java    |    2 -
 .../component/restlet/route/TestRouteBuilder.java  |    1 -
 .../camel-rmi/src/main/docs/rmi-component.adoc     |    2 +-
 .../apache/camel/component/rmi/RmiComponent.java   |    2 -
 .../apache/camel/component/rmi/RmiConsumer.java    |    1 -
 .../apache/camel/component/rmi/RmiProducer.java    |    2 -
 .../camel/component/rmi/RmiRegistryBean.java       |    2 -
 .../apache/camel/component/rmi/EchoService.java    |    2 -
 .../camel/component/rmi/RmiConcurrencyTest.java    |    2 -
 .../camel/component/rmi/RmiDamnExceptionTest.java  |    2 -
 .../rmi/RmiIllegalArgumentExceptionTest.java       |    2 -
 .../camel/component/rmi/RmiRouteEndpointTest.java  |    2 -
 .../apache/camel/component/rmi/RmiRouteTest.java   |    2 -
 .../camel-rss/src/main/docs/rss-component.adoc     |    2 +-
 .../component/rss/RssUriEncodingIssueTest.java     |    3 -
 components/camel-rxjava2/pom.xml                   |    1 -
 .../src/main/docs/salesforce-component.adoc        |   47 +-
 .../component/salesforce/SalesforceComponent.java  |    4 +-
 .../src/main/docs/xquery-component.adoc            |    2 +-
 .../camel/component/xquery/ResultFormat.java       |    2 -
 .../xquery/XQueryAnnotationExpressionFactory.java  |    2 -
 .../camel/component/xquery/XQueryBuilder.java      |   15 +
 .../camel/language/xquery/XQueryLanguage.java      |    2 -
 .../builder/saxon/BeanWithXQueryInjectionTest.java |    2 -
 .../saxon/XPathAnnotationResultTypeTest.java       |    2 -
 .../org/apache/camel/builder/saxon/XPathTest.java  |    2 -
 .../camel/builder/saxon/XQueryFilterTest.java      |    2 -
 .../builder/saxon/XQueryRecipientListTest.java     |    2 -
 .../org/apache/camel/builder/saxon/XQueryTest.java |    2 -
 .../camel/builder/saxon/XQueryTransformTest.java   |    2 -
 .../builder/saxon/XQueryTransformTextTest.java     |    2 -
 .../saxon/XQueryWithNamespacesFilterTest.java      |    2 -
 .../camel/component/xquery/SoapPayloadBean.java    |    2 -
 .../component/xquery/SoapPayloadBeanTest.java      |    2 -
 .../apache/camel/component/xquery/TestBean.java    |    2 -
 .../camel/component/xquery/XQueryEndpointTest.java |    2 -
 .../camel/component/xquery/XQueryExampleTest.java  |    2 -
 .../component/xquery/XQueryNullHeaderTest.java     |    2 -
 .../xquery/XQueryStripWhitespaceTest.java          |    2 -
 .../xquery/XQueryWithExplicitTypeTest.java         |    2 -
 .../component/xquery/XQueryWithExtensionTest.java  |    3 -
 .../apache/camel/builder/script/ScriptBuilder.java |    2 -
 .../builder/script/ScriptEvaluationException.java  |    1 -
 .../camel/builder/script/ScriptLanguage.java       |    2 -
 .../builder/script/ScriptLanguageResolver.java     |    2 -
 .../apache/camel/builder/script/Jsr223Test.java    |    2 -
 .../script/example/AnyLanguageFilterTest.java      |    2 -
 .../script/example/BeanShellFilterTest.java        |    2 -
 .../builder/script/example/GroovyFilterTest.java   |    2 -
 .../script/example/JavaScriptFilterTest.java       |    2 -
 .../language/script/JavaScriptLanguageTest.java    |    2 -
 .../src/main/docs/service-component.adoc           |    2 +-
 .../src/main/docs/servlet-component.adoc           |  243 +++-
 .../camel/component/servlet/HttpRegistry.java      |    9 +-
 .../camel/component/servlet/ServletComponent.java  |    2 +-
 .../servlet/ServletTransferExceptionTest.java      |    4 +-
 .../camel-sip/src/main/docs/sip-component.adoc     |    2 +-
 .../src/main/docs/sjms-batch-component.adoc        |    2 +-
 .../camel-sjms/src/main/docs/sjms-component.adoc   |    2 +-
 .../apache/camel/component/sjms/BatchMessage.java  |  100 ++
 .../apache/camel/component/sjms/SjmsConsumer.java  |    8 +
 .../apache/camel/component/sjms/SjmsEndpoint.java  |   22 +
 .../component/sjms/SjmsHeaderFilterStrategy.java   |    3 -
 .../apache/camel/component/sjms/SjmsMessage.java   |    2 -
 .../apache/camel/component/sjms/SjmsProducer.java  |    8 +
 .../camel/component/sjms/jms/JmsObjectFactory.java |    3 -
 .../component/sjms/producer/InOnlyProducer.java    |    9 +-
 .../camel/component/sjms/CamelJmsTestHelper.java   |    2 -
 .../camel/component/sjms/JmsSelectorTest.java      |    3 -
 .../sjms/consumer/EmptyMessageBodyTest.java        |    2 -
 .../sjms/consumer/InOnlyConsumerDefaultTest.java   |    3 -
 .../sjms/consumer/InOnlyConsumerQueueTest.java     |    2 -
 .../sjms/consumer/InOnlyConsumerTempQueueTest.java |    2 -
 .../sjms/consumer/InOnlyConsumerTopicTest.java     |    2 -
 .../sjms/consumer/InOutConsumerQueueAsyncTest.java |    2 -
 .../sjms/consumer/InOutConsumerQueueTest.java      |    2 -
 .../consumer/InOutConsumerTempQueueAsyncTest.java  |    2 -
 .../sjms/consumer/InOutConsumerTempQueueTest.java  |    2 -
 .../sjms/consumer/InOutConsumerTopicTest.java      |    2 -
 .../consumer/InOutSynchronousConsumerTest.java     |    2 -
 .../component/sjms/it/ConnectionResourceIT.java    |    1 -
 .../sjms/producer/AsyncQueueProducerTest.java      |    2 -
 .../sjms/producer/AsyncTopicProducerTest.java      |    2 -
 .../camel/component/sjms/tx/BatchMessage.java      |   97 --
 .../sjms/tx/BatchTransactedProducerSupport.java    |    1 +
 .../sjms/tx/BatchTransactedQueueProducerTest.java  |    1 +
 .../sjms/tx/BatchTransactedTopicProducerTest.java  |    1 +
 .../camel-sjms2/src/main/docs/sjms2-component.adoc |    2 +-
 .../camel-slack/src/main/docs/slack-component.adoc |   19 +-
 .../camel/component/slack/SlackEndpoint.java       |    5 +-
 .../camel-smpp/src/main/docs/smpp-component.adoc   |    2 +-
 .../camel/component/smpp/AbstractSmppCommand.java  |   46 +
 .../apache/camel/component/smpp/SmppBinding.java   |    1 -
 .../apache/camel/component/smpp/SmppComponent.java |    2 -
 .../camel/component/smpp/SmppConfiguration.java    |    1 -
 .../component/smpp/SmppConnectionFactory.java      |    1 -
 .../apache/camel/component/smpp/SmppConsumer.java  |    1 -
 .../camel/component/smpp/SmppDataSmCommand.java    |   14 +-
 .../apache/camel/component/smpp/SmppProducer.java  |    2 -
 .../component/smpp/SmppSubmitMultiCommand.java     |    8 +-
 .../camel/component/smpp/SmppSubmitSmCommand.java  |    8 +-
 .../camel/component/smpp/SmppBindingTest.java      |    1 -
 .../camel/component/smpp/SmppComponentTest.java    |    1 -
 .../component/smpp/SmppConfigurationTest.java      |    1 -
 .../component/smpp/SmppConnectionFactoryTest.java  |    1 -
 .../camel/component/smpp/SmppConsumerTest.java     |    1 -
 .../camel/component/smpp/SmppMessageTest.java      |    1 -
 .../smpp/SmppProducerLazySessionCreationTest.java  |    1 -
 .../camel/component/smpp/SmppProducerTest.java     |    1 -
 .../integration/SmppComponentIntegrationTest.java  |    1 -
 .../SmppComponentSpringIntegrationTest.java        |    1 -
 .../SmppConsumerReconnectIntegrationTest.java      |    1 -
 .../SmppProducerReconnectIntegrationTest.java      |    1 -
 .../camel-snmp/src/main/docs/snmp-component.adoc   |    2 +-
 .../apache/camel/component/snmp/SnmpEndpoint.java  |   11 +
 .../converter/soap/name/QNameStrategyTest.java     |    3 -
 .../camel/dataformat/soap/SoapMarshalTest.java     |    3 -
 .../camel/dataformat/soap12/Soap12MarshalTest.java |    3 -
 .../camel/component/solr/SolrCloudFixture.java     |    3 -
 .../src/main/docs/spark-rest-component.adoc        |    2 +-
 .../src/main/docs/splunk-component.adoc            |    2 +-
 .../spring/batch/SpringBatchEndpoint.java          |   28 +
 .../src/main/docs/spring-boot.adoc                 |    4 +-
 .../camel/spring/boot/CamelAutoConfiguration.java  |   12 +-
 .../spring/boot/CamelConfigurationProperties.java  |   34 +
 .../boot/CamelSpringBootApplicationController.java |    8 +
 .../apache/camel/spring/boot/RoutesCollector.java  |   12 +-
 .../boot/actuate/endpoint/CamelRoutesEndpoint.java |    8 +-
 .../camel/spring/boot/model/RouteDetails.java      |    2 +-
 .../camel/spring/boot/model/RouteDetailsInfo.java  |    5 +-
 .../camel/spring/boot/CamelEventNotifierTest.java  |    6 +-
 .../boot/health/HealthCheckRegistryTest.java       |    3 +-
 .../cloud/CamelSpringCloudDiscoveryClient.java     |    5 +
 .../main/docs/spring-integration-component.adoc    |    2 +-
 .../integration/SpringIntegrationEndpoint.java     |    6 -
 .../converter/SpringIntegrationConverter.java      |    3 +-
 .../org/apache/camel/spring/javaconfig/Main.java   |   16 +
 .../spring/javaconfig/BeanJavaConfigTest.java      |    4 +-
 .../autowire/AutodetectNoRoutesConfigTest.java     |    4 +-
 .../autowire/AutodetectingConfigTest.java          |    4 +-
 .../spring/javaconfig/patterns/FilterTest.java     |    5 +-
 ...CamelSpringDelegatingTestContextLoaderTest.java |    5 +-
 .../camel/spring/javaconfig/test/Cheese.java       |    2 -
 .../test/JavaConfigWithNestedConfigClassTest.java  |    5 +-
 .../test/JavaConfigWithPostProcessorTest.java      |    4 +-
 .../camel/spring/javaconfig/test/MyConfig.java     |    2 -
 .../src/main/docs/spring-redis-component.adoc      |    2 +-
 .../security/config/BeanDefinitionParser.java      |    2 -
 .../src/main/docs/spring-ws-component.adoc         |    2 +-
 .../net/javacrumbs/calc/model/ObjectFactory.java   |    1 -
 .../net/javacrumbs/calc/model/PlusRequest.java     |    1 -
 .../net/javacrumbs/calc/model/PlusResponse.java    |    1 -
 .../helper/InMemoryWebServiceMessageSender2.java   |    1 -
 components/camel-spring/pom.xml                    |   10 +
 .../src/main/docs/spring-event-component.adoc      |    2 +-
 .../camel/component/event/EventComponent.java      |    1 -
 .../apache/camel/language/spel/SpelExpression.java |    1 -
 .../spring/CamelConsumerTemplateFactoryBean.java   |    2 -
 .../CamelFluentProducerTemplateFactoryBean.java    |    1 -
 .../spring/CamelProducerTemplateFactoryBean.java   |    1 -
 .../camel/spring/CamelRouteContextFactoryBean.java |    2 -
 .../main/java/org/apache/camel/spring/Main.java    |    1 -
 .../apache/camel/spring/SpringCamelContext.java    |    8 +-
 .../spring/handler/CamelNamespaceHandler.java      |    2 -
 .../spring/spi/ApplicationContextRegistry.java     |    1 -
 .../spring/spi/SpringManagementMBeanAssembler.java |    9 +-
 .../bean/AutowireConstructorRouteTest.java         |    2 -
 .../bean/AutowireConstructorRouteTwoTest.java      |    2 -
 .../apache/camel/component/bean/BeanRouteTest.java |    2 -
 .../component/bean/BeanWithRecipientListTest.java  |    2 -
 .../camel/component/dataset/SpringDataSetTest.java |    2 -
 .../apache/camel/component/event/DummyEvent.java   |    2 -
 .../camel/component/event/EventRouteTest.java      |    2 -
 .../camel/component/event/MistypedPackageTest.java |    2 -
 .../component/log/CustomExchangeFormatterTest.java |    2 -
 .../camel/component/log/SpringLogMarkerTest.java   |    2 -
 .../camel/component/log/SpringLogMaskTest.java     |    2 -
 .../apache/camel/component/log/SpringLogTest.java  |    2 -
 .../SpringAttributeNewLineRouteContextRefTest.java |    2 -
 .../properties/SpringAttributeNewLineTest.java     |    2 -
 .../properties/SpringBuilderRefBeanInjectTest.java |    2 -
 .../properties/SpringBuilderRefPropertiesTest.java |    2 -
 .../SpringBuilderRefPropertyInjectTest.java        |    2 -
 ...rorHandlerInlinedPropertiesPlaceholderTest.java |    2 -
 ...pringErrorHandlerPropertiesPlaceholderTest.java |    2 -
 .../properties/SpringPackagePropertiesTest.java    |    2 -
 .../SpringPackageScanPropertiesTest.java           |    2 -
 .../SpringPropertiesAfterTransactedDSL2Test.java   |    3 -
 .../SpringPropertiesAfterTransactedDSLTest.java    |    3 -
 ...pertiesComponentEIPChoiceConvertBodyToTest.java |    2 -
 ...ingPropertiesComponentEIPConvertBodyToTest.java |    2 -
 ...SpringPropertiesComponentInterceptFromTest.java |    2 -
 ...pringPropertiesComponentOnExceptionRefTest.java |    2 -
 .../SpringPropertiesComponentOnExceptionTest.java  |    2 -
 .../SpringPropertiesComponentRefTest.java          |    2 -
 .../properties/SpringPropertiesResolver2Test.java  |    2 -
 .../properties/SpringPropertiesResolver3Test.java  |    2 -
 .../properties/SpringPropertiesResolverTest.java   |    2 -
 .../properties/route/SpringSimpleRoute.java        |    2 -
 .../properties/route2/SpringBeanInjectRoute.java   |    2 -
 .../route2/SpringPropertyInjectRoute.java          |    2 -
 .../apache/camel/component/rest/RestRefTest.java   |    2 -
 .../validator/SpringValidatorRouteTest.java        |    2 -
 .../component/xslt/SpringXsltRouteFileTest.java    |    3 -
 .../camel/component/xslt/SpringXsltRouteTest.java  |    3 -
 .../spring/ApplicationContextTestSupport.java      |    2 -
 .../apache/camel/spring/CamelContextAwareBean.java |    2 -
 .../apache/camel/spring/CamelContextAwareTest.java |    2 -
 .../camel/spring/CamelContextFactoryBeanTest.java  |    2 -
 .../spring/CustomProcessorWithNamespacesTest.java  |    2 -
 .../apache/camel/spring/EndpointReferenceTest.java |    2 -
 .../java/org/apache/camel/spring/InjectedBean.java |    2 -
 .../org/apache/camel/spring/InjectedBeanTest.java  |    2 -
 .../org/apache/camel/spring/MainExampleTest.java   |    2 -
 .../java/org/apache/camel/spring/MainTest.java     |    2 -
 .../java/org/apache/camel/spring/MainVetoTest.java |    3 -
 .../apache/camel/spring/NodeIdReferenceTest.java   |    2 -
 .../RoutingUsingCamelContextFactoryTest.java       |    2 -
 .../camel/spring/SpringEndpointPropertyTest.java   |    2 -
 .../spring/SpringLogDebugBodyMaxCharsTest.java     |    2 -
 .../org/apache/camel/spring/SpringMDCTest.java     |    2 -
 .../SpringMDCWithBreadcrumbDisabledTest.java       |    2 -
 .../camel/spring/SpringMDCWithBreadcrumbTest.java  |    2 -
 .../org/apache/camel/spring/SpringTestSupport.java |    8 -
 .../camel/spring/StartAndStopEventNotifier.java    |   14 +-
 .../camel/spring/aop/ExceptionInterceptor.java     |    2 -
 .../org/apache/camel/spring/aop/MyCoolAopBean.java |    2 -
 .../camel/spring/bind/BeanAsEndpointTest.java      |    2 -
 .../org/apache/camel/spring/bind/BeanInfoTest.java |    2 -
 .../camel/spring/bind/ProcessorAsEndpointTest.java |    2 -
 .../apache/camel/spring/bind/ProcessorStub.java    |    2 -
 .../camel/spring/config/AnotherCamelProxyTest.java |    2 -
 .../spring/config/CamelContextAutoStartupTest.java |    2 -
 .../spring/config/CamelContextFactoryBeanTest.java |    2 -
 .../apache/camel/spring/config/CamelProxyTest.java |    2 -
 .../spring/config/CamelProxyUsingRefTest.java      |    2 -
 .../config/ConsumerTemplateAlreadyExistTest.java   |    2 -
 .../config/ConsumerTemplateAutoRegisterTest.java   |    2 -
 .../ConsumerTemplateHasTwoTemplatesTest.java       |    2 -
 .../ConsumerTemplateMaximumCacheSizeTest.java      |    2 -
 .../config/CustomExecutorServiceManager.java       |    2 -
 .../config/CustomExecutorServiceManagerTest.java   |    2 -
 .../spring/config/CustomThreadPoolFactoryTest.java |    2 -
 .../config/DefaultErrorHandlerConfigTest.java      |    2 -
 .../config/DependencyInjectCamelTemplateTest.java  |    2 -
 .../DualCamelContextEndpointOutsideTest.java       |    2 -
 .../spring/config/DummyErrorHandlerBuilder.java    |    2 -
 .../config/EndpointUriSetFromSpringTest.java       |    2 -
 .../ErrorHandlerCamelContextRefNotFoundTest.java   |    2 -
 .../spring/config/ErrorHandlerConfigTest.java      |    2 -
 .../ErrorHandlerRouteContextRefNotFoundTest.java   |    2 -
 .../FluentProducerTemplateAutoRegisterTest.java    |    2 -
 .../camel/spring/config/MyDependsOnBean.java       |    2 -
 .../spring/config/MyDependsOnRouteBuilder.java     |    2 -
 .../apache/camel/spring/config/MyProduceBean.java  |    2 -
 .../apache/camel/spring/config/MyProxySender.java  |    2 -
 .../camel/spring/config/NamespacePrefixTest.java   |    2 -
 .../OnExceptionNoExceptionConfiguredTest.java      |    2 -
 ...eRouteRefOnExceptionAndDLCErrorHandlerTest.java |    2 -
 ...uteRefOnExceptionAndTwoDLCErrorHandlerTest.java |    2 -
 .../spring/config/OneRouteRefOnExceptionTest.java  |    2 -
 ...efReverseOnExceptionAndDLCErrorHandlerTest.java |    2 -
 .../config/OneRouteRefReverseOnExceptionTest.java  |    2 -
 .../config/ProducerTemplateAlreadyExistTest.java   |    2 -
 ...oducerTemplateAutoRegisterBeanIdExistsTest.java |    2 -
 .../config/ProducerTemplateAutoRegisterTest.java   |    2 -
 ...erTemplateAutoRegisterTwoCamelContextsTest.java |    2 -
 .../ProducerTemplateHasTwoTemplatesTest.java       |    2 -
 .../ProducerTemplateMaximumCacheSizeTest.java      |    2 -
 ...plateMixedAutoRegisterTwoCamelContextsTest.java |    2 -
 .../config/RouteAutoStartupPropertiesTest.java     |    2 -
 .../camel/spring/config/RouteBuilderRef2Test.java  |    2 -
 .../camel/spring/config/RouteBuilderRefTest.java   |    2 -
 .../spring/config/RouteRefIncludeXmlFileTest.java  |    2 -
 .../RouteRefMultipleCamelContextRefsTest.java      |    2 -
 .../spring/config/RouteRefMultipleRefsTest.java    |    2 -
 .../spring/config/RouteRefMultipleRoutesTest.java  |    2 -
 ...rtyPlaceholderMultipleCamelContextRefsTest.java |    2 -
 .../apache/camel/spring/config/RouteRefTest.java   |    2 -
 .../config/SpringCamelContextDependsOnTest.java    |    2 -
 .../config/SpringCamelContextNoDependsOnTest.java  |    2 -
 .../SpringErrorHandlerConfigFallbackTest.java      |    2 -
 .../config/SpringErrorHandlerConfigTest.java       |    2 -
 .../SpringProduceInjectedPrototypeBeanTest.java    |    2 -
 .../SpringProduceInjectedSingletonBeanTest.java    |    2 -
 .../camel/spring/config/TemplateUsingBean.java     |    2 -
 ...oRouteRefOnExceptionAndDLCErrorHandlerTest.java |    2 -
 .../spring/config/TwoRouteRefOnExceptionTest.java  |    2 -
 ...efReverseOnExceptionAndDLCErrorHandlerTest.java |    2 -
 .../config/TwoRouteRefReverseOnExceptionTest.java  |    2 -
 .../camel/spring/config/XmlConfigTestSupport.java  |    2 -
 .../spring/example/AnotherFooEventConsumer.java    |    2 -
 .../spring/example/ContentBasedRouteTest.java      |    2 -
 .../org/apache/camel/spring/example/DummyBean.java |    2 -
 .../camel/spring/example/FooEventConsumer.java     |    2 -
 .../camel/spring/example/FooEventRouteTest.java    |    2 -
 .../camel/spring/example/MyCamel1Consumer.java     |    2 -
 .../camel/spring/example/MyCamel2Consumer.java     |    2 -
 .../spring/example/MyCamel2RecipientList.java      |    2 -
 .../apache/camel/spring/example/MyProcessor.java   |    2 -
 .../org/apache/camel/spring/example/MySender.java  |    1 -
 .../camel/spring/example/PojoConsumerTest.java     |    2 -
 .../example/PojoDualCamelContextConsumerTest.java  |    2 -
 .../camel/spring/example/PojoSenderTest.java       |    2 -
 .../camel/spring/example/PojoVmConsumerTest.java   |    2 -
 .../camel/spring/example/SimpleRouteTest.java      |    2 -
 .../spring/example/SpringExpressionTrimTest.java   |    2 -
 .../spring/example/SpringXPathFilterTest.java      |    2 -
 .../camel/spring/example/test1/MyRouteBuilder.java |    2 -
 .../SpringFileAntPathMatcherFileFilterTest.java    |    2 -
 .../file/SpringFileConsumerPreMoveIssueTest.java   |    2 -
 .../spring/file/SpringFileLanguageCBRTest.java     |    2 -
 .../camel/spring/file/SpringFileRouteTest.java     |    2 -
 .../file/SpringSimpleFileNameWithQuoteTest.java    |    2 -
 .../spring/health/HealthCheckRegistryTest.java     |    3 +-
 .../spring/interceptor/AnnotatedBookStore.java     |    2 -
 .../camel/spring/interceptor/AnnotatedConsume.java |    2 -
 .../spring/interceptor/AnnotatedConsumeImpl.java   |    2 -
 .../camel/spring/interceptor/AnnotatedRoute.java   |    2 -
 .../interceptor/ContainerWideInterceptor.java      |    2 -
 .../interceptor/ContainerWideInterceptorTest.java  |    2 -
 .../MixedStreamCachingInterceptorTest.java         |    2 -
 .../MixedTransactionPropagationTest.java           |    1 -
 .../SpringInterceptorStrategyOrderedTest.java      |    2 -
 .../TransactionClientDataSourceSupport.java        |    1 -
 ...lClientDataSourceOnExceptionRedeliveryTest.java |    2 -
 ...ransactionalClientDataSourceRedeliveryTest.java |    2 -
 ...urceTransactedWithFileLocalOnExceptionTest.java |    2 -
 ...ataSourceTransactedWithFileOnExceptionTest.java |    2 -
 ...onalClientDataSourceTransactedWithFileTest.java |    2 -
 ...actedErrorHandlerOnExceptionRedeliveryTest.java |    2 -
 .../TransactionalClientWithAnnotatedBeanTest.java  |    2 -
 .../apache/camel/spring/issues/CoolService.java    |    2 -
 .../camel/spring/issues/CustomIdIssuesTest.java    |    2 -
 .../issues/FileWireTapWithXMLPayloadIssueTest.java |    2 -
 .../apache/camel/spring/issues/MyCoolRoute.java    |    2 -
 .../apache/camel/spring/issues/MyCoolStuff.java    |    2 -
 .../spring/issues/MyInjectionRouteBuilder.java     |    2 -
 .../apache/camel/spring/issues/MyRouteBuilder.java |    2 -
 .../apache/camel/spring/issues/MyStatefulBean.java |    2 -
 .../issues/ProduceSplitMethodCallIssueTest.java    |    2 -
 .../spring/issues/SpringCatchNestedFailTest.java   |    2 -
 ...ngCharlesSplitAndTryCatchRollbackIssueTest.java |    2 -
 .../spring/issues/SpringFinallyNestedFailTest.java |    2 -
 .../camel/spring/issues/SpringPackageTest.java     |    2 -
 ...ngPropertyPlaceholderFileEndpointIssueTest.java |    2 -
 .../issues/SpringPropertyPlaceholderIssueTest.java |    2 -
 .../issues/SpringRenameFileOnCommitIssueTest.java  |    2 -
 .../issues/SpringSingletonScopedBeanIssueTest.java |    2 -
 ...andlerAndContextScopedOnExceptionIssueTest.java |    2 -
 .../SpringTryCatchFinallyAndErrorHandlerTest.java  |    2 -
 .../issues/SpringTryCatchWithSplitIssueTest.java   |    2 -
 ...SpringTryCatchWithSplitNotHandledIssueTest.java |    2 -
 .../spring/issues/SpringTryNestedFailTest.java     |    2 -
 .../SpringTwoCamelContextDirectEndpointTest.java   |    2 -
 .../camel/spring/issues/contextscan/MyRoute.java   |    2 -
 .../SpringRouteIsComponentAnnotatedTest.java       |    2 -
 .../spring/issues/contextscan2/MyOtherRoute.java   |    2 -
 .../SpringRouteIsComponentAnnotated2Test.java      |    2 -
 ...ualCamelContextManagedAutoAssignedNameTest.java |    2 -
 .../management/DualCamelContextManagedTest.java    |    2 -
 .../camel/spring/management/MyEventNotifier.java   |   21 +-
 .../SpringDualLoggingEventNotifierTest.java        |    2 -
 .../SpringJmxDumpCBRRoutesAsXmlTest.java           |    2 -
 ...pringJmxDumpRoutesAsXmlIncludeHostNameTest.java |    2 -
 .../management/SpringJmxDumpRoutesAsXmlTest.java   |    2 -
 .../SpringJmxEndpointInjectBeanRefTest.java        |    2 -
 .../SpringJmxEndpointInjectBeanRefTwoTest.java     |    2 -
 .../SpringJmxEndpointInjectBeanTest.java           |    2 -
 .../SpringJmxRecipientListRegisterAlwaysTest.java  |    2 -
 .../management/SpringJmxRecipientListTest.java     |    2 -
 .../management/SpringLoggingEventNotifierTest.java |    2 -
 .../SpringManagedCustomProcessorTest.java          |    2 -
 .../management/SpringManagedErrorHandlerTest.java  |    2 -
 .../SpringManagedNamePatternFixedTest.java         |    2 -
 .../management/SpringManagedNamePatternTest.java   |    2 -
 ...edRouteRemoveContextScopedErrorHandlerTest.java |    2 -
 ...emoveRouteAndContextScopedErrorHandlerTest.java |    2 -
 ...agedRouteRemoveRouteScopedErrorHandlerTest.java |    2 -
 .../management/SpringManagedSanitizeTest.java      |    2 -
 .../SpringManagedStatisticsLevelOffTest.java       |    2 -
 ...SpringManagedStatisticsLevelRoutesOnlyTest.java |    2 -
 .../management/SpringPublishEventNotifierTest.java |    2 -
 .../org/apache/camel/spring/mock/BeanMockTest.java |    2 -
 .../InterceptSendToMockEndpointStrategyTest.java   |    2 -
 ...CamelCustomPostProcessorOnRouteBuilderTest.java |    2 -
 .../spring/postprocessor/MagicAnnotation.java      |    2 -
 .../MyRouteBuilderWithAutowiredPojo.java           |    2 -
 ...pringCustomPostProcessorOnRouteBuilderTest.java |    2 -
 .../camel/spring/postprocessor/TestPojo.java       |    2 -
 .../apache/camel/spring/processor/MyCoolBean.java  |    3 -
 .../processor/SpringAggregateFromWireTapTest.java  |    2 -
 .../SpringAggregatorWithCustomStrategyTest.java    |    2 -
 .../SpringBatchResequencerAllowDuplicatesTest.java |    2 -
 .../SpringBatchResequencerJMSPriorityTest.java     |    2 -
 .../processor/SpringCBRHeaderPredicateTest.java    |    2 -
 .../camel/spring/processor/SpringChoiceTest.java   |    2 -
 .../processor/SpringComplexBlockWithEndTest.java   |    2 -
 .../processor/SpringCustomExpressionTest.java      |    3 -
 .../processor/SpringCustomPredicateTest.java       |    2 -
 .../SpringCustomProcessorFactoryTest.java          |    2 -
 ...etterChannelLogExhaustedMessageHistoryTest.java |    2 -
 .../SpringDeadLetterChannelNoRedeliveryTest.java   |    2 -
 ...ingDeadLetterChannelUseOriginalBodyNewTest.java |    2 -
 ...SpringDeadLetterChannelUseOriginalBodyTest.java |    2 -
 ...adLetterChannelUseOriginalBodyWithFileTest.java |    2 -
 ...efaultErrorHandlerExchangeFormatterRefTest.java |    2 -
 ...ErrorHandlerLogExhaustedMessageHistoryTest.java |    2 -
 .../SpringDefaultErrorHandlerRetryWhileTest.java   |    2 -
 .../processor/SpringDelayerPerRouteTest.java       |    2 -
 ...ingErrorHandlerRedeliveryPolicyProfileTest.java |    2 -
 ...SpringEventNotifierExchangeSentExampleTest.java |    2 -
 .../SpringFailoverMaximumFailoverAttemptsTest.java |    2 -
 .../SpringFailoverRoundRobinStickyTest.java        |    2 -
 .../processor/SpringFailoverRoundRobinTest.java    |    2 -
 .../spring/processor/SpringFilterNoChildTest.java  |    2 -
 .../camel/spring/processor/SpringFilterTest.java   |    2 -
 .../spring/processor/SpringFromEndpointTest.java   |    2 -
 .../processor/SpringFromMultipleEndpointTest.java  |    2 -
 .../processor/SpringHandleFaultPerRouteTest.java   |    2 -
 ...dempotentConsumerNoSkipDuplicateFilterTest.java |    2 -
 ...pringIdempotentConsumerNoSkipDuplicateTest.java |    2 -
 .../processor/SpringIdempotentConsumerTest.java    |    2 -
 .../SpringInheritErrorHandlerDefaultTest.java      |    2 -
 .../SpringInheritErrorHandlerFalseTest.java        |    2 -
 .../SpringInheritErrorHandlerTrueTest.java         |    2 -
 .../SpringInterceptSendToEndpointDynamicTest.java  |    2 -
 ...ngInterceptSendToEndpointInOnExceptionTest.java |    2 -
 .../SpringInterceptSendToEndpointSkipTest.java     |    2 -
 .../SpringInterceptSendToEndpointTest.java         |    2 -
 .../SpringInterceptSendToEndpointWhenTest.java     |    2 -
 .../camel/spring/processor/SpringLoopCopyTest.java |    2 -
 .../spring/processor/SpringLoopDoWhileTest.java    |    2 -
 .../spring/processor/SpringLoopNoCopyTest.java     |    2 -
 .../camel/spring/processor/SpringLoopTest.java     |    2 -
 .../SpringMessageHistoryDumpRoutingTest.java       |    2 -
 .../spring/processor/SpringMethodCallTest.java     |    2 -
 .../SpringMulticastNoStopOnExceptionTest.java      |    2 -
 .../processor/SpringMulticastOnPrepareTest.java    |    2 -
 .../SpringMulticastStopOnExceptionTest.java        |    2 -
 .../SpringMulticastSubUnitOfWorkTest.java          |    2 -
 .../processor/SpringNestedChoiceIssueTest.java     |    2 -
 ...letionAndInterceptAndOnExceptionGlobalTest.java |    2 -
 .../SpringOnCompletionAndInterceptGlobalTest.java  |    2 -
 .../SpringOnCompletionAndInterceptTest.java        |    2 -
 .../processor/SpringOnCompletionGlobalTest.java    |    2 -
 .../processor/SpringOnCompletionModeTest.java      |    2 -
 .../SpringOnCompletionOnCompleteOnlyTest.java      |    2 -
 .../SpringOnCompletionOnFailureOnlyTest.java       |    2 -
 ...ompletionRouteScopeOverrideGlobalScopeTest.java |    2 -
 .../spring/processor/SpringOnCompletionTest.java   |    2 -
 .../SpringOnCompletionUseOriginalBodyTest.java     |    2 -
 .../processor/SpringOnCompletionWhenTest.java      |    2 -
 .../SpringOnExceptionContinueToRouteTest.java      |    2 -
 .../processor/SpringPolicyPerProcessorTest.java    |    2 -
 .../spring/processor/SpringPolicyPerRouteTest.java |    2 -
 .../SpringRecipientListOnPrepareTest.java          |    2 -
 .../SpringRecipientListSubUnitOfWorkTest.java      |    2 -
 .../processor/SpringRedeliverToSubRouteTest.java   |    2 -
 ...veryErrorHandlerNoRedeliveryOnShutdownTest.java |    2 -
 ...ringResequenceStreamRejectOldExchangesTest.java |    3 -
 .../spring/processor/SpringResequencerTest.java    |    2 -
 .../processor/SpringRouteNoAutoStartupTest.java    |    2 -
 .../spring/processor/SpringRoutePoliciesTest.java  |    2 -
 .../SpringRouteStartupOrderSimpleTest.java         |    2 -
 .../processor/SpringRouteStartupOrderTest.java     |    2 -
 .../SpringRouteStartupOrderWithDefaultTest.java    |    2 -
 ...RouteWithConstantFieldFromExchangeFailTest.java |    2 -
 ...ringRouteWithConstantFieldFromExchangeTest.java |    2 -
 .../spring/processor/SpringScriptExternalTest.java |    2 -
 .../camel/spring/processor/SpringScriptTest.java   |    2 -
 .../spring/processor/SpringSetFaultBodyTest.java   |    3 -
 .../SpringShutdownCompleteAllTasksTest.java        |    2 -
 .../SpringShutdownCompleteCurrentTaskOnlyTest.java |    2 -
 .../processor/SpringSplitCustomExpressionTest.java |    2 -
 .../processor/SpringSplitGroupMultiLinesTest.java  |    2 -
 .../processor/SpringSplitGroupSkipFirstTest.java   |    2 -
 .../processor/SpringSplitSubUnitOfWorkTest.java    |    2 -
 .../SpringSplitTokenizerGroupDynamicTest.java      |    2 -
 .../spring/processor/SpringSplitterBodyTest.java   |    2 -
 .../processor/SpringSplitterMethodCallTest.java    |    2 -
 .../SpringSplitterNoStopOnExceptionTest.java       |    2 -
 .../processor/SpringSplitterOnPrepareTest.java     |    2 -
 .../SpringSplitterStopOnExceptionTest.java         |    2 -
 .../processor/SpringStreamCachingPerRouteTest.java |    2 -
 .../processor/SpringStreamCachingStrategyTest.java |    2 -
 .../camel/spring/processor/SpringTestHelper.java   |    2 -
 .../SpringThrottlingInflightRoutePolicyTest.java   |    2 -
 .../processor/SpringThrowExceptionMessageTest.java |    2 -
 .../spring/processor/SpringThrowExceptionTest.java |    2 -
 .../spring/processor/SpringTokenizerTest.java      |    2 -
 .../camel/spring/processor/SpringTraceTest.java    |    2 -
 .../processor/SpringTraceUsingPropertyTest.java    |    2 -
 .../spring/processor/SpringTransformTest.java      |    2 -
 .../spring/processor/SpringValidateRegExpTest.java |    2 -
 .../processor/SpringWireTapExpressionTest.java     |    2 -
 .../processor/SpringWireTapOnPrepareTest.java      |    2 -
 .../spring/processor/SpringXPathFilterTest.java    |    2 -
 .../SpringXPathFilterWithNamespaceTest.java        |    2 -
 .../apache/camel/spring/processor/XsltTest.java    |    2 -
 .../SpringAggregateCompleteAllOnStopTest.java      |    2 -
 .../SpringAggregateCompletionIntervalTest.java     |    2 -
 .../aggregator/SpringAggregateControllerTest.java  |    2 -
 .../SpringAggregateDiscardOnTimeoutTest.java       |    2 -
 .../SpringAggregateExpressionSizeFallbackTest.java |    2 -
 .../SpringAggregateExpressionSizeTest.java         |    2 -
 ...ringAggregateExpressionTimeoutFallbackTest.java |    2 -
 ...ringAggregateExpressionTimeoutPerGroupTest.java |    2 -
 .../SpringAggregateExpressionTimeoutTest.java      |    2 -
 .../SpringAggregateForceCompletionOnStopTest.java  |    2 -
 ...roupedExchangeCompletionExpressionSizeTest.java |    2 -
 .../SpringAggregateSimplePredicateEagerTest.java   |    2 -
 .../SpringAggregateSimplePredicateTest.java        |    2 -
 .../aggregator/SpringAggregateSimpleSizeTest.java  |    2 -
 .../SpringAggregateSimpleTimeoutTest.java          |    2 -
 .../SpringAggregateThreadPoolProfileTest.java      |    2 -
 ...ggregationStrategyBeanAdapterAllowNullTest.java |    2 -
 ...gationStrategyBeanAdapterRefMethodNameTest.java |    2 -
 ...pringAggregationStrategyBeanAdapterRefTest.java |    2 -
 .../processor/aggregator/SpringAggregatorTest.java |    2 -
 .../SpringOnExceptionContinueSubRouteTest.java     |    2 -
 .../SpringOnExceptionContinueSubSubRouteTest.java  |    2 -
 .../onexception/SpringOnExceptionContinueTest.java |    2 -
 ...ngOnExceptionFromChoiceUseOriginalBodyTest.java |    2 -
 ...ringOnExceptionLoadBalancerDoubleIssueTest.java |    2 -
 ...nExceptionOccurredProcessorOnExceptionTest.java |    2 -
 .../SpringOnExceptionOccurredProcessorTest.java    |    2 -
 .../SpringOnExceptionUseOriginalBodyTest.java      |    2 -
 .../SpringOnExceptionUseOriginalMessageTest.java   |    2 -
 .../SpringOnExceptionWithRouteAndContinueTest.java |    2 -
 .../apache/camel/spring/produce/MyCoolBean.java    |    2 -
 .../apache/camel/spring/produce/MyListener.java    |    2 -
 .../camel/spring/produce/MyListenerService.java    |    2 -
 .../apache/camel/spring/produce/ProduceTest.java   |    2 -
 .../org/apache/camel/spring/remoting/Echo.java     |    2 -
 .../org/apache/camel/spring/remoting/EchoPojo.java |    2 -
 .../camel/spring/remoting/EchoPojoDirect.java      |    2 -
 .../apache/camel/spring/remoting/EchoService.java  |    2 -
 .../remoting/EchoSpringRemotingPojoDirectTest.java |    2 -
 .../remoting/EchoSpringRemotingPojoTest.java       |    2 -
 ...SpringRemotingThrowingRuntimeExceptionTest.java |    2 -
 ...DefaultBindingSpringRemotingPojoDirectTest.java |    3 -
 .../spring/remoting/MyEchoRuntimeException.java    |    2 -
 ...yMultiArgumentSpringRemotingPojoDirectTest.java |    3 -
 .../remoting/SpringRemotingBeanConverterTest.java  |    2 -
 .../spring/remoting/SpringRemotingRouteTest.java   |    2 -
 .../remoting/SpringRemotingWithOneWayTest.java     |    2 -
 ...ingWithServiceExportAndNamespacesRouteTest.java |    2 -
 .../SpringRemotingWithServiceExportRouteTest.java  |    2 -
 .../spring/routebuilder/CamelRouteBuilderTest.java |    2 -
 .../camel/spring/routebuilder/MyOtherRoute.java    |    2 -
 .../apache/camel/spring/routebuilder/MyRoute.java  |    2 -
 .../camel/spring/util/EndpointHelperTest.java      |    2 -
 .../apache/camel/spring/util/MainRunnerTest.java   |    2 -
 .../camel/spring/xml/ConfiguredRouteBuilder.java   |    2 -
 .../camel/spring/xml/ConfiguredRouteBuilder2.java  |    2 -
 .../SpringJmxDumpRouteAsXmlIncludeHostNameTest.xml |    2 +-
 .../ThrottlingInflightRoutePolicyTest.xml          |    2 +-
 .../camel-sql/src/main/docs/sql-component.adoc     |    5 +-
 .../camel/component/sql/DefaultSqlEndpoint.java    |   14 +
 .../apache/camel/component/sql/SqlComponent.java   |    7 +-
 .../template/generated/SimpleCharStream.java       |   20 +
 .../component/sql/SpringSqlEndpointLikeTest.java   |    2 -
 .../component/sql/SpringSqlMultilineTest.java      |    2 -
 .../camel/component/sql/SqlDataSourceRefTest.java  |    2 -
 .../camel/component/sql/SqlEndpointLikeTest.java   |    2 -
 .../camel/component/sql/SqlEndpointTest.java       |    2 -
 .../camel/component/sql/SqlPreserveHeaderTest.java |    2 -
 ...qlProducerAlwaysPopulateStatementFalseTest.java |    2 -
 .../SqlProducerAlwaysPopulateStatementTest.java    |    2 -
 .../component/sql/SqlProducerConcurrentTest.java   |    2 -
 .../sql/SqlProducerExpressionParameterTest.java    |    3 -
 .../component/sql/SqlProducerInsertNullTest.java   |    2 -
 .../camel/component/sql/SqlProducerJSONTest.java   |    2 -
 .../sql/SqlProducerNamedParameterNotExistTest.java |    2 -
 .../sql/SqlProducerNamedParameterTest.java         |    2 -
 .../sql/SqlProducerNamedParametersTest.java        |    2 -
 .../sql/SqlProducerNullBodyHeaderTest.java         |    2 -
 .../component/sql/SqlProducerNullBodyTest.java     |    2 -
 .../sql/SqlProducerOutputTypeSelectListTest.java   |    3 -
 ...lProducerOutputTypeSelectListWithClassTest.java |    3 -
 .../sql/SqlProducerOutputTypeSelectOneTest.java    |    3 -
 .../sql/SqlProducerParametersCountTest.java        |    3 -
 .../sql/SqlProducerReuseParameterTest.java         |    3 -
 .../component/sql/SqlProducerSeparatorTest.java    |    2 -
 .../apache/camel/component/sql/SqlRouteTest.java   |    2 -
 .../component/sql/SqlTransactedRouteTest.java      |    2 -
 .../camel-ssh/src/main/docs/ssh-component.adoc     |    9 +-
 .../apache/camel/component/ssh/SshComponent.java   |   19 +
 .../camel/component/ssh/SshConfiguration.java      |   16 +
 .../apache/camel/component/ssh/SshEndpoint.java    |   16 +
 .../camel-stomp/src/main/docs/stomp-component.adoc |    2 +-
 .../src/main/docs/stream-component.adoc            |    2 +-
 .../component/stream/StreamGroupLinesTest.java     |    2 -
 .../stringtemplate/StringTemplateComponent.java    |    2 -
 .../StringTemplateConcurrentTest.java              |    2 -
 components/camel-swagger-java/pom.xml              |   30 +-
 .../apache/camel/swagger/RestSwaggerProcessor.java |    2 +-
 .../apache/camel/swagger/RestSwaggerSupport.java   |   41 +-
 .../camel/swagger/RestSwaggerSupportTest.java      |  140 +++
 .../dataformat/tagsoup/TidyMarkupDataFormat.java   |    1 -
 .../tagsoup/TidyMarkupDataFormatAsDomNodeTest.java |    2 -
 .../tagsoup/TidyMarkupDataFormatAsStringTest.java  |    2 -
 .../src/main/docs/telegram-component.adoc          |    2 +-
 .../blueprint/health/HealthCheckRegistryTest.java  |    3 +-
 .../managedNamePatternFixedIncludeHostNameTest.xml |    2 +-
 .../camel/test/spring/CamelAnnotationsHandler.java |    3 +-
 .../spring/CamelSpringBootJUnit4ClassRunner.java   |   33 +
 .../test/spring/CamelSpringJUnit4ClassRunner.java  |   33 +
 .../camel/test/spring/RouteCoverageDumper.java     |    4 +-
 .../test/spring/RouteCoverageEventNotifier.java    |    9 +-
 ...pringRunnerDisableJmxInheritedOverrideTest.java |    2 +-
 .../test/spring/CamelSpringRunnerPlainTest.java    |    2 +-
 components/camel-test/pom.xml                      |    4 +
 .../apache/camel/test/junit4/CamelTestSupport.java |   19 +-
 .../org/apache/camel/test/junit4/TestSupport.java  |   45 +
 .../camel/test/patterns/DebugJUnit4Test.java       |    2 -
 .../patterns/DebugNoLazyTypeConverterTest.java     |    7 +-
 .../org/apache/camel/test/patterns/DebugTest.java  |    2 -
 .../test/patterns/FilterFluentTemplateTest.java    |    1 -
 .../org/apache/camel/test/patterns/FilterTest.java |    1 -
 .../patterns/IsMockEndpointsAndSkipJUnit4Test.java |    2 -
 .../test/patterns/IsMockEndpointsFileTest.java     |    2 -
 .../test/patterns/IsMockEndpointsJUnit4Test.java   |    2 -
 .../camel/test/patterns/IsMockEndpointsTest.java   |    2 -
 .../src/main/docs/thrift-component.adoc            |    2 +-
 .../src/main/docs/twilio-component.adoc            |    2 +-
 .../main/docs/twitter-directmessage-component.adoc |    2 +-
 .../src/main/docs/twitter-search-component.adoc    |    2 +-
 .../src/main/docs/twitter-streaming-component.adoc |    2 +-
 .../src/main/docs/twitter-timeline-component.adoc  |    2 +-
 .../component/twitter/AbstractTwitterEndpoint.java |    3 +-
 .../camel/component/twitter/TwitterEndpoint.java   |   30 +
 .../camel/component/twitter/TwitterHelper.java     |   16 +
 .../consumer/AbstractTwitterConsumerHandler.java   |    6 +-
 .../twitter/consumer/TwitterEventType.java         |    8 +-
 .../camel/component/twitter/data/TrendsType.java   |   30 +
 .../DirectMessageConsumerHandler.java              |    4 +-
 .../directmessage/DirectMessageProducer.java       |    6 +-
 .../twitter/search/SearchConsumerHandler.java      |    4 +-
 .../component/twitter/search/SearchProducer.java   |    6 +-
 .../AbstractStreamingConsumerHandler.java          |    4 +-
 .../streaming/FilterStreamingConsumerHandler.java  |    4 +-
 .../streaming/SampleStreamingConsumerHandler.java  |    4 +-
 .../streaming/UserStreamingConsumerHandler.java    |    4 +-
 .../timeline/AbstractStatusConsumerHandler.java    |    4 +-
 .../twitter/timeline/HomeConsumerHandler.java      |    4 +-
 .../twitter/timeline/MentionsConsumerHandler.java  |    4 +-
 .../twitter/timeline/RetweetsConsumerHandler.java  |    4 +-
 .../twitter/timeline/UserConsumerHandler.java      |    4 +-
 .../component/twitter/timeline/UserProducer.java   |    6 +-
 .../component/twitter/UriConfigurationTest.java    |    7 +
 .../deprecated/DirectMessageDirectTest.java        |   53 +
 .../deprecated/DirectMessagePollingTest.java       |   52 +
 .../twitter/deprecated/HomeTimeLineDirectTest.java |   38 +
 .../deprecated/HomeTimeLinePollingTest.java        |   37 +
 .../deprecated/SearchByExchangeDirectTest.java     |  139 ++
 .../twitter/deprecated/SearchDirectTest.java       |   38 +
 .../twitter/deprecated/SearchEventTest.java        |   90 ++
 .../twitter/deprecated/SearchPollingTest.java      |   37 +
 .../twitter/deprecated/UserProducerInOnlyTest.java |   78 ++
 .../twitter/deprecated/UserProducerInOutTest.java  |   83 ++
 .../twitter/deprecated/UserStreamingTest.java      |   51 +
 .../twitter/deprecated/UserTimeLineDirectTest.java |   38 +
 .../deprecated/UserTimeLinePollingTest.java        |   38 +
 .../src/main/docs/undertow-component.adoc          |    2 +-
 .../camel/component/undertow/ExchangeHeaders.java  |    6 +
 .../component/velocity/VelocityComponent.java      |    2 -
 .../component/velocity/VelocityConcurrentTest.java |    2 -
 .../component/velocity/VelocityEndpointTest.java   |    2 -
 .../component/velocity/VelocitySetHeaderTest.java  |    2 -
 .../velocity/VelocityTemplateInHeaderTest.java     |    2 -
 .../camel-vertx/src/main/docs/vertx-component.adoc |    2 +-
 .../component/vertx/VertxRequestReplyTest.java     |    3 -
 .../component/vertx/VertxRoutePubSubTest.java      |    3 -
 .../camel/component/vertx/VertxRouteTest.java      |    3 -
 .../src/main/docs/weather-component.adoc           |    2 +-
 .../weather/http/AuthenticationMethod.java         |    2 -
 .../weather/http/HttpClientConfigurer.java         |    2 -
 .../camel-web3j/src/main/docs/web3j-component.adoc |    2 +-
 .../src/main/docs/websocket-component.adoc         |    2 +-
 .../src/main/docs/wordpress-component.adoc         |    2 +-
 .../api/DefaultXAdESSignatureProperties.java       |    1 -
 .../xmlsecurity/api/XAdESEncapsulatedPKIData.java  |    1 -
 .../xmlsecurity/api/XmlSignatureChecker.java       |    1 -
 .../xmlsecurity/api/XmlSignatureHelper.java        |   31 +
 .../xmlsecurity/XMLSecurityConcurrencyTest.java    |    2 -
 .../xmlsecurity/XMLSecurityDataFormatTest.java     |    1 -
 .../camel-xmpp/src/main/docs/xmpp-component.adoc   |    2 +-
 .../apache/camel/component/xmpp/XmppBinding.java   |    1 +
 .../apache/camel/component/xmpp/XmppComponent.java |    2 -
 .../apache/camel/component/xmpp/XmppConstants.java |    7 +
 .../component/xmpp/XmppGroupChatProducer.java      |    3 -
 .../component/xmpp/XmppPrivateChatProducer.java    |    3 -
 .../camel/component/xmpp/UriConfigurationTest.java |    2 -
 .../component/xmpp/XmppMultiUserChatTest.java      |    2 -
 .../component/xmpp/XmppProducerConcurrentTest.java |    2 -
 .../camel/component/xmpp/XmppRouteChatTest.java    |    2 -
 ...ppRouteMultipleProducersSingleConsumerTest.java |    2 -
 .../camel/dataformat/xstream/JsonDataFormat.java   |    2 -
 .../dataformat/xstream/XStreamDataFormat.java      |   27 +
 .../camel/dataformat/xstream/PurchaseOrder.java    |    2 -
 .../xstream/SpringMarshalDomainObjectJSONTest.java |    2 -
 .../xstream/SpringMarshalOmitFieldsTest.java       |    2 -
 .../xstream/UnmarshalThenMarshalTest.java          |    2 -
 .../dataformat/xstream/XStreamConcurrencyTest.java |    2 -
 .../xstream/XStreamDataFormatOmitFieldsTest.java   |    2 -
 .../camel/dataformat/xstream/XStreamTestUtils.java |    3 -
 .../src/main/docs/yammer-component.adoc            |    2 +-
 .../src/main/docs/zendesk-component.adoc           |    2 +-
 .../java/org/apache/camel/zipkin/ZipkinTracer.java |   27 +-
 .../src/main/docs/zookeeper-master-component.adoc  |    2 +-
 .../group/internal/ZooKeeperGroupFactory.java      |    2 -
 .../src/main/docs/zookeeper-component.adoc         |    8 +-
 .../zookeeper/ZooKeeperConfiguration.java          |   20 +
 .../component/zookeeper/ZooKeeperEndpoint.java     |   16 +
 .../zookeeper/cluster/ZooKeeperClusterView.java    |    2 +-
 .../component/zookeeper/ZooKeeperEndpointTest.java |   14 +-
 components/readme.adoc                             |    2 +-
 .../component/connector/ConnectorComponent.java    |   20 +
 .../component/connector/ConnectorProducer.java     |    2 +-
 .../src/main/resources/camel-connector.json        |    2 +-
 docs/user-manual/en/error-handler.adoc             |    4 +-
 .../en/release-notes/camel-2170-release.adoc       |    2 +-
 examples/README.adoc                               |    4 +-
 .../camel/example/cafe/CafeRouteBuilderTest.java   |    2 -
 .../camel/example/cdi/metrics/Application.java     |    3 +-
 .../camel/example/cdi/properties/Application.java  |    2 +-
 .../example/cdi/properties/CdiPropertiesTest.java  |    2 +-
 .../apache/camel/example/cdi/test/Application.java |    4 +-
 .../apache/camel/example/cdi/test/AdviceTest.java  |    2 +-
 .../camel/example/cdi/test/CustomContextTest.java  |    2 +-
 .../apache/camel/example/cdi/xml/Application.java  |    2 +-
 .../apache/camel/example/cdi/xml/CdiXmlTest.java   |    3 +-
 .../example/cxf/incident/InputReportIncident.java  |    2 -
 .../example/cxf/incident/InputStatusIncident.java  |    2 -
 .../example/cxf/incident/OutputReportIncident.java |    2 -
 .../example/cxf/incident/OutputStatusIncident.java |    2 -
 .../resources/fabric8/hazelcast-deployment.yaml    |    2 +-
 .../camel/example/management/StockService.java     |    2 -
 .../example/management/ManagementExampleTest.java  |    2 -
 .../camel/example/micrometer/IntegrationTest.java  |    2 -
 .../main/java/sample/camel/ClientApplication.java  |    2 +-
 .../resources/META-INF/spring/camel-server.xml     |    2 +-
 .../README.md                                      |   55 +
 .../pom.xml                                        |   82 ++
 .../camel/example/servlet/ServletProcessor.java    |   34 +
 .../src/main/resources/META-INF/LICENSE.txt        |    0
 .../src/main/resources/META-INF/NOTICE.txt         |    0
 .../resources/OSGI-INF/blueprint/camel-context.xml |   48 +
 .../OSGI-INF/blueprint/servlet-service.xml         |   47 +
 .../src/main/resources/log4j2.properties           |    0
 .../camel-example-servlet-rest-blueprint/README.md |   13 +-
 .../camel/example/springboot/UserService.java      |    1 -
 .../example/spring/javaconfig/IntegrationTest.java |    2 -
 .../camel/example/spring/IntegrationTest.java      |    2 -
 examples/camel-example-transformer-demo/pom.xml    |    4 +
 .../main/java/sample/camel/ClientApplication.java  |    2 +-
 parent/pom.xml                                     |   67 +-
 .../maven/DefaultMavenArtifactProvider.java        |   15 +-
 .../nexus/ConnectorCatalogNexusRepository.java     |   15 +-
 platforms/camel-catalog/pom.xml                    |   55 +-
 .../apache/camel/catalog/AbstractCamelCatalog.java | 1326 --------------------
 .../camel/catalog/CamelCatalogMBeanExporter.java   |   86 --
 .../org/apache/camel/catalog/CatalogHelper.java    |  179 ---
 .../camel/catalog/CollectionStringBuffer.java      |   57 -
 .../camel/catalog/EndpointValidationResult.java    |  488 -------
 .../org/apache/camel/catalog/JSonSchemaHelper.java |  428 -------
 .../apache/camel/catalog/JSonSchemaResolver.java   |   64 -
 .../camel/catalog/LanguageValidationResult.java    |   65 -
 .../apache/camel/catalog/SuggestionStrategy.java   |   34 -
 .../apache/camel/catalog/TimePatternConverter.java |  120 --
 .../java/org/apache/camel/catalog/URISupport.java  |  392 ------
 .../camel/catalog/UnsafeUriCharactersEncoder.java  |  206 ---
 .../org/apache/camel/catalog/CamelCatalogTest.java |   15 +-
 .../commands/AbstractLocalCamelController.java     |   10 +-
 .../commands/internal/CamelControllerImpl.java     |   10 +-
 .../karaf/features/src/main/resources/features.xml |    1 +
 .../springboot/ConsulComponentConfiguration.java   |   19 +
 .../src/main/resources/META-INF/spring.factories   |    1 +
 .../DisruptorComponentConfiguration.java           |   17 +
 .../DisruptorVmComponentConfiguration.java         |   17 +
 .../springboot/EhcacheComponentConfiguration.java  |   19 +
 .../HazelcastComponentAutoConfiguration.java       |  114 ++
 .../HazelcastComponentConfiguration.java           |   77 ++
 .../src/main/resources/META-INF/spring.factories   |    1 +
 .../HazelcastInstanceCustomizerTest.java           |    1 +
 .../HystrixHierarchicalConfigurationTest.java      |    4 +-
 .../InfinispanComponentConfiguration.java          |   17 +
 .../src/main/resources/META-INF/spring.factories   |    1 +
 .../springboot/MllpComponentConfiguration.java     |   35 +
 .../springboot/NagiosComponentConfiguration.java   |   18 +
 .../springboot/NettyComponentConfiguration.java    |  103 ++
 .../ssh/springboot/SshComponentConfiguration.java  |   34 +
 .../components-starter/camel-tika-starter/pom.xml  |   12 -
 .../src/main/resources/META-INF/spring.factories   |    1 +
 .../ZooKeeperComponentConfiguration.java           |   17 +
 .../camel-spring-boot-dependencies/pom.xml         |   30 +-
 pom.xml                                            |    2 +
 .../component/cxf/jaxrs/testbean/Customer.java     |    2 -
 .../cxf/jaxrs/testbean/CustomerService.java        |    2 -
 .../camel/component/cxf/jaxrs/testbean/Order.java  |    2 -
 .../component/cxf/jaxrs/testbean/Product.java      |    2 -
 tests/camel-itest-spring-boot/pom.xml              |    2 +-
 .../standalone/CamelContextStandaloneTest.java     |    2 -
 .../org/apache/camel/itest/CamelJmsTestHelper.java |    2 -
 .../camel/itest/async/HttpAsyncCallbackTest.java   |    2 -
 .../apache/camel/itest/async/HttpAsyncDslTest.java |    2 -
 .../apache/camel/itest/async/HttpAsyncTest.java    |    2 -
 .../org/apache/camel/itest/async/HttpSyncTest.java |    2 -
 .../apache/camel/itest/async/MyAsyncComponent.java |    2 -
 .../apache/camel/itest/async/MyAsyncEndpoint.java  |    2 -
 .../apache/camel/itest/async/MyAsyncProducer.java  |    2 -
 .../itest/idempotent/IdempotentConsumerTest.java   |    2 -
 .../itest/idempotent/JdbcIdempotentRepository.java |    2 -
 .../org/apache/camel/itest/issues/BaseClass.java   |    2 -
 .../itest/issues/BeanCallDerivedClassTest.java     |    2 -
 .../apache/camel/itest/issues/DerivedClass.java    |    2 -
 .../camel/itest/issues/RemoveEndpointsTest.java    |    2 -
 .../camel/itest/issues/RssToHttpIssueTest.java     |    2 -
 .../itest/jaxb/SpringLoadRouteFromXmlTest.java     |    2 -
 .../itest/jetty/JettyConstantSetHeaderTest.java    |    2 -
 .../itest/jetty/JettyFailoverRoundRobinTest.java   |    2 -
 .../itest/jetty/JettyGroovySetHeaderTest.java      |    2 -
 .../itest/jetty/JettySimpleSetHeaderTest.java      |    2 -
 .../jetty/JettySimulateFailoverRoundRobinTest.java |    2 -
 .../jetty/JettySpringFailoverRoundRobinTest.java   |    2 -
 .../itest/jetty/JettyValidatorStreamTest.java      |    2 -
 ...alidatorStreamWithStreamCachingEnabledTest.java |    2 -
 .../camel/itest/jms/InvalidOrderException.java     |    2 -
 .../apache/camel/itest/jms/JmsIntegrationTest.java |    2 -
 .../org/apache/camel/itest/jms/JmsJaxbTest.java    |    2 -
 .../itest/jms/JmsMediumQueuePerformanceTest.java   |    2 -
 .../apache/camel/itest/jms/JmsPerformanceTest.java |    3 -
 .../apache/camel/itest/jms/JmsPollEnrichTest.java  |    2 -
 .../camel/itest/jms/JmsPollingConsumerTest.java    |    2 -
 .../apache/camel/itest/jms/JmsValidatorTest.java   |    2 -
 .../org/apache/camel/itest/jms/PurchaseOrder.java  |    2 -
 .../camel/itest/jms/SpringJmsValidatorTest.java    |    2 -
 .../apache/camel/itest/tx/Jms2RequiresNewTest.java |    1 -
 .../org/apache/camel/itest/tx/JmsToHttpTXTest.java |    1 -
 .../camel/tests/partialclasspath/MyBean.java       |    2 -
 .../camel/tests/partialclasspath/MyConverter.java  |    2 -
 .../camel/tests/partialclasspath/RouteTest.java    |    2 -
 .../camel/tests/typeconverterscan/MyBean.java      |    2 -
 .../camel/tests/typeconverterscan/MyConverter.java |    2 -
 .../camel/tests/typeconverterscan/RouteTest.java   |    2 -
 .../main/java/org/apache/camel/maven/RunMojo.java  |    1 -
 tooling/meta-annotations/pom.xml                   |   42 +
 .../java/org/apache/camel/meta/Experimental.java   |   32 +
 tooling/pom.xml                                    |    1 +
 4365 files changed, 51241 insertions(+), 50830 deletions(-)
 delete mode 100644 camel-api/src/main/java/org/apache/camel/Experimental.java
 create mode 100644 camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java
 create mode 100644 camel-api/src/main/java/org/apache/camel/spi/ConsumerCache.java
 create mode 100644 camel-api/src/main/java/org/apache/camel/spi/ManagementInterceptStrategy.java
 delete mode 100644 camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
 create mode 100644 camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
 create mode 100644 camel-api/src/main/java/org/apache/camel/spi/ManagementStrategyFactory.java
 create mode 100644 camel-api/src/main/java/org/apache/camel/spi/ProducerCache.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/DeferredContextBinding.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerCache.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategy.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategyFactory.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/DefaultProducerCache.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionHalfOpenHandler.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterView.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceHelper.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceSelectors.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/AbstractContextEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/AbstractExchangeEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/AbstractRouteEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumingEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartingEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppingEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendingEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java
 rename camel-core/src/main/java/org/apache/camel/{management => impl}/event/package.html (100%)
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/ManagedCamelContext.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
 delete mode 100644 camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/BeanReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/CatchReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/DelayReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/EnrichReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/FilterReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/FinallyReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/HystrixReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/InterceptReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/LoopReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/MulticastReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/PipelineReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/PolicyReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ProcessReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RemoveHeaderReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RemoveHeadersReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RemovePropertiesReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RemovePropertyReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RethrowReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RollbackReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/RoutingSlipReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SagaReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SamplingReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ScriptReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SendReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ServiceCallReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SetBodyReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SetExchangePatternReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SetFaultBodyReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SetHeaderReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SetPropertyReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SortReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/SplitReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/StopReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ThreadsReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ThrottleReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ToDynamicReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/TransactedReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/TransformReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/TryReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/UnmarshalReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/ValidateReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/WhenReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/WhenSkipSendToEndpointReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/WireTapReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/FailoverLoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/RandomLoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/RoundRobinLoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/StickyLoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/TopicLoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/WeightedLoadBalancerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/transformer/DataFormatTransformeReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/transformer/TransformerReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/validator/PredicateValidatorReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/reifier/validator/ValidatorReifier.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/support/cluster/AbstractCamelClusterView.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceHelper.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceSelectors.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionHalfOpenHandler.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java
 create mode 100644 camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/component/language/LanguageLoadScriptFromFileCachedTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentParallelTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/CamelChoiceWithManagementTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/CustomEndpoint.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/DualManagedThreadPoolProfileTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/DualManagedThreadPoolWithIdTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ExceptionWithManagementTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPlatformMBSTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/JmxNotificationEventNotifierTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/JmxRecipientListTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/LoggingEventNotifierTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlFileTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointEmptyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextAutoStartupTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesCoverageAsXml.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpStatsAsXmlTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendResumeTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendStartTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesFromXmlTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesWithPropertyPlaceholdersFromXmlPTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCanekContextExchangeStatisticsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedChoiceTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedConvertBodyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCustomBeanTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCustomComponentNameTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedDelayerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedDualCamelContextTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedDuplicateIdTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedEndpointExplainTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedEndpointTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerRedeliveryTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedFailoverLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedFileIdempotentClearTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedFileIdempotentConsumerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedFileWatcherReloadStrategyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedInflightRepositoryTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedInflightStatisticsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedInterceptFromTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedLogEndpointTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedMarshalTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentClearTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentConsumerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternJvmSystemPropertyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedProcessTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedProducerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRandomLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRefProducerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRegisterCamelContextTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRegisterEndpointTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRegisterExchangeStatisticsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRegisterRouteTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRegisterTwoRoutesTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRemoveRouteAggregateThreadPoolTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedResequencerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedResetIncludeProcessorsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedResetIncludeRoutesTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRoundRobinLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddFromRouteTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteAutoStartupTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlPlaceholderTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlAndResetWithCustomDomainTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlCustomDomainTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteGetPropertiesTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRoutePerformanceCounterTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveContextScopedErrorHandlerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteScopedErrorHandlerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapExplicitThreadPoolTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteShutdownAndStartTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopUsingMBeanAPITest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopWithAbortAfterTimeoutTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRouteWithOnExceptionTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSedaRouteRemoveTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedServiceUrlPathTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSetAndRemoveHeaderAndPropertiesTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedShutdownStrategyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSplitterTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsWithSplitterTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedStickyLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedStreamCachingStrategyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedSuspendedServiceTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolProfileTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolWithIdTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedThreadsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedThrottlerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedTopicLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnmarshalTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterCamelContextTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterComponentTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterEndpointTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProcessorTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterRouteTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedWeightedLoadBalancerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/PublishEventNotifierTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/PublishEventNotifierToRouteTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextAutoAssignedNameClashTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextClashTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/management/TwoManagedNamePatternTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/processor/RecipeientListWithSimpleExpressionTest.java
 create mode 100644 camel-core/src/test/java/org/apache/camel/processor/RecipientListWithSimpleExpressionTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingSendProcessorTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingTest.java
 delete mode 100644 camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointWithJMXTest.java
 create mode 100644 camel-management-api/pom.xml
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/ManagedAttribute.java (100%)
 create mode 100644 camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/ManagedInstance.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/ManagedNotification.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/ManagedNotifications.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/ManagedOperation.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/ManagedResource.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/NotificationSender.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java (100%)
 create mode 100644 camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ComponentVerifierExtension.java
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java (100%)
 create mode 100644 camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java (100%)
 create mode 100644 camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java (100%)
 create mode 100644 camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java (100%)
 create mode 100644 camel-management-api/src/main/java/org/apache/camel/api/management/mbean/RouteError.java
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/mbean/package.html (100%)
 rename {camel-core => camel-management-api}/src/main/java/org/apache/camel/api/management/package.html (100%)
 create mode 100644 camel-management-impl/pom.xml
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/CompositePerformanceCounter.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/ManagedLoadTimer.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/MixinRequiredModelMBean.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/NotificationSenderAdapter.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/PerformanceCounter.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/PublishEventNotifier.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/LoadTriplet.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedAsyncProcessorAwaitManager.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedBacklogDebugger.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedCounter.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedInflightRepository.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeEndpointRegistry.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedService.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedSuspendableRoute.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedThroughputLogger.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java (100%)
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
 create mode 100644 camel-management-impl/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/Statistic.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/StatisticCounter.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/StatisticDelta.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/StatisticMaximum.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/StatisticMinimum.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/StatisticValue.java (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/mbean/package.html (100%)
 rename {camel-core => camel-management-impl}/src/main/java/org/apache/camel/management/package.html (100%)
 create mode 100644 camel-management-impl/src/main/resources/META-INF/services/org.apache.camel.spi.ManagementStrategyFactory
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/component/controlbus/ControlBusStatsTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/component/language/LanguageLoadScriptFromFileCachedTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/component/xslt/ManagedXsltOutputBytesTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/component/xslt/XsltContentCacheTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/issues/DynamicRouterConvertBodyToIssueTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BacklogDebuggerTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BacklogTracerPatternRouteTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BacklogTracerTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/BigRouteTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/CamelChoiceWithManagementTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/CustomEndpoint.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/DualManagedThreadPoolProfileTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/DualManagedThreadPoolWithIdTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ExceptionWithManagementTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/JmxInstrumentationCustomMBeanTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/JmxInstrumentationDisableOnCamelContextTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/JmxInstrumentationDisableTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPlatformMBSTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPropertiesTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/JmxInstrumentationWithConnectorTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/JmxNotificationEventNotifierTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/JmxRecipientListTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/LoadTimerTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/LoadTripletTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/LoggingEventNotifierTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlFileTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointEmptyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedCBRTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextAutoStartupTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesCoverageAsXml.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpStatsAsXmlTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedCamelContextNewProxyTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendResumeTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendStartTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesFromXmlTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesWithPropertyPlaceholdersFromXmlPTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCanekContextExchangeStatisticsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedChoiceTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedComponentTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedConvertBodyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomBeanTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomComponentNameTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedDelayerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedDualCamelContextTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedDuplicateIdTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointExplainTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerRedeliveryTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedFailoverLoadBalancerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileIdempotentClearTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileIdempotentConsumerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileWatcherReloadStrategyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedFilterTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedFromRestGetEmbeddedRouteTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedFromRestGetTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedFromRestPlaceholderTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedInflightRepositoryTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedInflightStatisticsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedInterceptFromTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedLogEndpointTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedLoopTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedMarshalTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentClearTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentConsumerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedMulticastTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternJvmSystemPropertyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedProcessTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRecipientListTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRandomLoadBalancerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRedeliverRouteOnlyTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRefProducerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterCamelContextTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterEndpointTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterExchangeStatisticsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterRouteTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterTwoRoutesTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRemoveRouteAggregateThreadPoolTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedResequencerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedResetIncludeProcessorsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedResetIncludeRoutesTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedResourceTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoundRobinLoadBalancerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddFromRouteTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteNotRegisterNewRoutesTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAutoStartupTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRouteDirectWhileIssueLeakTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlPlaceholderTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlAndResetWithCustomDomainTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlCustomDomainTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteGetPropertiesTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRouteNoAutoStartupTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoutePerformanceCounterTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveContextScopedErrorHandlerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteScopedErrorHandlerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapExplicitThreadPoolTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRouteRestartTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteShutdownAndStartTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartCleanupTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopUsingMBeanAPITest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopWithAbortAfterTimeoutTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteWithOnExceptionTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSedaRouteRemoveTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedServiceUrlPathTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSetAndRemoveHeaderAndPropertiesTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedShutdownStrategyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSplitterTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsWithSplitterTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedStickyLoadBalancerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedStreamCachingStrategyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedSuspendedServiceTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolProfileTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolWithIdTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadsTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedTimerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedTopicLoadBalancerTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnmarshalTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterCamelContextTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterComponentTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterEndpointTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterProcessorTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterRouteTest.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/ManagedValidatorRegistryTest.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedWeightedLoadBalancerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/ManagementTestSupport.java
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/MyDummyProcessor.java (100%)
 rename {camel-core => camel-management-impl}/src/test/java/org/apache/camel/management/MyManagedBean.java (100%)
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/PublishEventNotifierTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/PublishEventNotifierToRouteTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextAutoAssignedNameClashTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextClashTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedNamePatternTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingSendProcessorTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingTest.java
 create mode 100644 camel-management-impl/src/test/java/org/apache/camel/processor/async/AsyncEndpointWithJMXTest.java
 create mode 100644 components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/WrappedException.java
 create mode 100644 components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallUnicodeNextLineTest.java
 create mode 100644 components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairUnicodeNextLineTest.java
 create mode 100644 components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/unicode/LocationRecord.java
 create mode 100644 components/camel-bindy/src/test/resources/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallUnicodeNextLineTest-context.xml
 create mode 100644 components/camel-bindy/src/test/resources/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairUnicodeNextLineTest-context.xml
 delete mode 100644 components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
 create mode 100644 components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConstants.java
 create mode 100644 components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/MessageDataFormatFeature.java
 create mode 100644 components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponent.java
 create mode 100644 components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpServletUrlRewrite.java
 create mode 100644 components/camel-http-common/src/main/java/org/apache/camel/http/common/UrlRewrite.java
 create mode 100644 components/camel-http-common/src/main/java/org/apache/camel/http/common/UrlRewriteHttpServletRequestAdapter.java
 create mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java
 create mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/UrlRewriteTest.java
 create mode 100644 components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
 create mode 100644 components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
 create mode 100644 components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelMultipartFilter.java
 create mode 100644 components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/HttpUrlRewriteTest.java
 create mode 100644 components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/MyUrlRewrite.java
 create mode 100644 components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/jettyproducer/HttpJettyUrlRewriteTest.java
 delete mode 100644 components/camel-kubernetes/src/main/docs/kubernetes-component.adoc
 delete mode 100644 components/camel-kubernetes/src/main/resources/META-INF/services/org/apache/camel/component/kubernetes
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesConfigMapsProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesNamespacesConsumerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesNamespacesProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesNodesConsumerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesNodesProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesPersistentVolumesClaimsProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesPersistentVolumesProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesPodsConsumerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesPodsProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesReplicationControllersConsumerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesReplicationControllersProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesResourcesQuotaProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesSecretsProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServiceAccountsProducerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServicesConsumerTest.java
 create mode 100644 components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/deprecated/DeprecatedKubernetesServicesProducerTest.java
 create mode 100644 components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEncryptionMethod.java
 create mode 100644 components/camel-sjms/src/main/java/org/apache/camel/component/sjms/BatchMessage.java
 delete mode 100644 components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/BatchMessage.java
 create mode 100644 components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerSupportTest.java
 create mode 100644 components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringBootJUnit4ClassRunner.java
 create mode 100644 components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelSpringJUnit4ClassRunner.java
 create mode 100644 components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java
 create mode 100644 components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/TrendsType.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/DirectMessageDirectTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/DirectMessagePollingTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/HomeTimeLineDirectTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/HomeTimeLinePollingTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/SearchByExchangeDirectTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/SearchDirectTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/SearchEventTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/SearchPollingTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/UserProducerInOnlyTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/UserProducerInOutTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/UserStreamingTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/UserTimeLineDirectTest.java
 create mode 100644 components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/UserTimeLinePollingTest.java
 create mode 100644 examples/camel-example-servlet-httpregistry-blueprint/README.md
 create mode 100644 examples/camel-example-servlet-httpregistry-blueprint/pom.xml
 create mode 100644 examples/camel-example-servlet-httpregistry-blueprint/src/main/java/org/apache/camel/example/servlet/ServletProcessor.java
 copy {tooling/maven/camel-package-maven-plugin => examples/camel-example-servlet-httpregistry-blueprint}/src/main/resources/META-INF/LICENSE.txt (100%)
 copy {tooling/maven/camel-package-maven-plugin => examples/camel-example-servlet-httpregistry-blueprint}/src/main/resources/META-INF/NOTICE.txt (100%)
 create mode 100644 examples/camel-example-servlet-httpregistry-blueprint/src/main/resources/OSGI-INF/blueprint/camel-context.xml
 create mode 100644 examples/camel-example-servlet-httpregistry-blueprint/src/main/resources/OSGI-INF/blueprint/servlet-service.xml
 copy examples/{camel-example-widget-gadget-xml => camel-example-servlet-httpregistry-blueprint}/src/main/resources/log4j2.properties (100%)
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogMBeanExporter.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
 delete mode 100644 platforms/camel-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
 create mode 100644 platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java
 create mode 100644 platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentConfiguration.java
 create mode 100644 tooling/meta-annotations/pom.xml
 create mode 100644 tooling/meta-annotations/src/main/java/org/apache/camel/meta/Experimental.java


[camel] 06/44: [CAMEL-4763] Remove deprecated loggingErrorHandler in favor of DeadLetterChannel

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ec42995e0571da197e79a58326dc30fc06f7caa8
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Sep 17 15:50:19 2018 +0200

    [CAMEL-4763] Remove deprecated loggingErrorHandler in favor of DeadLetterChannel
---
 .../org/apache/camel/builder/BuilderSupport.java   |  48 ------
 .../camel/builder/LoggingErrorHandlerBuilder.java  | 128 ---------------
 .../camel/processor/LoggingErrorHandler.java       |  52 ------
 .../camel/builder/ContextErrorHandlerTest.java     |   5 +-
 .../org/apache/camel/builder/ErrorHandlerTest.java |  11 +-
 .../builder/LoggingErrorHandlerBuilderTest.java    | 176 ---------------------
 .../issues/AdviceWithInvalidConfiguredTest.java    |   2 +-
 .../issues/TimerAndErrorHandlerIssueTest.java      |   2 +-
 ...emoveRouteAndContextScopedErrorHandlerTest.java |   4 +-
 .../LoggingErrorHandlerOnExceptionTest.java        |  70 --------
 .../blueprint/CamelErrorHandlerFactoryBean.java    |   9 --
 .../apache/camel/blueprint/ErrorHandlerType.java   |   3 -
 .../org/apache/camel/cdi/XmlCdiBeanFactory.java    |  42 ++---
 .../camel/cdi/XmlErrorHandlerFactoryBean.java      |   8 -
 .../camel/cdi/xml/ErrorHandlerDefinition.java      |  22 ---
 .../org/apache/camel/cdi/xml/ErrorHandlerType.java |   4 -
 .../camel/cdi/test/XmlErrorHandlerLoggingTest.java | 131 ---------------
 .../camel-context-errorHandler-logging.xml         |  47 ------
 .../org/apache/camel/spring/ErrorHandlerType.java  |   3 -
 .../handler/ErrorHandlerDefinitionParserTest.java  |  11 +-
 .../handler/ErrorHandlerDefinitionParser.xml       |   2 -
 21 files changed, 23 insertions(+), 757 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
index 54ef8f8..23a6012 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -474,54 +474,6 @@ public abstract class BuilderSupport {
     }
 
     /**
-     * Creates an <a href="http://camel.apache.org/error-handler.html">error handler</a>
-     * which just logs errors
-     *
-     * @return the builder
-     * @deprecated use dead letter channel with a log endpoint
-     */
-    @Deprecated
-    public LoggingErrorHandlerBuilder loggingErrorHandler() {
-        return new LoggingErrorHandlerBuilder();
-    }
-
-    /**
-     * Creates an <a href="http://camel.apache.org/error-handler.html">error handler</a>
-     * which just logs errors
-     *
-     * @return the builder
-     * @deprecated use dead letter channel with a log endpoint
-     */
-    @Deprecated
-    public LoggingErrorHandlerBuilder loggingErrorHandler(String log) {
-        return loggingErrorHandler(LoggerFactory.getLogger(log));
-    }
-
-    /**
-     * Creates an <a href="http://camel.apache.org/error-handler.html">error handler</a>
-     * which just logs errors
-     *
-     * @return the builder
-     * @deprecated use dead letter channel with a log endpoint
-     */
-    @Deprecated
-    public LoggingErrorHandlerBuilder loggingErrorHandler(Logger log) {
-        return new LoggingErrorHandlerBuilder(log);
-    }
-
-    /**
-     * Creates an <a href="http://camel.apache.org/error-handler.html">error handler</a>
-     * which just logs errors
-     *
-     * @return the builder
-     * @deprecated use dead letter channel with a log endpoint
-     */
-    @Deprecated
-    public LoggingErrorHandlerBuilder loggingErrorHandler(Logger log, LoggingLevel level) {
-        return new LoggingErrorHandlerBuilder(log, level);
-    }
-
-    /**
      * <a href="http://camel.apache.org/dead-letter-channel.html">Dead Letter Channel EIP:</a>
      * is a error handler for handling messages that could not be delivered to it's intended destination.
      *
diff --git a/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
deleted file mode 100644
index 5263373..0000000
--- a/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
+++ /dev/null
@@ -1,128 +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.builder;
-
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.LoggingErrorHandler;
-import org.apache.camel.processor.RedeliveryPolicy;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.CamelLogger;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Uses the {@link Logger} as an error handler, will log at <tt>ERROR</tt> level by default.
- *
- * @version
- * @deprecated use dead letter channel with a log endpoint
- */
-@Deprecated
-public class LoggingErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
-    private Logger log = LoggerFactory.getLogger(Logger.class);
-    private LoggingLevel level = LoggingLevel.ERROR;
-
-    public LoggingErrorHandlerBuilder() {
-    }
-
-    public LoggingErrorHandlerBuilder(final Logger log) {
-        this.log = log;
-    }
-
-    public LoggingErrorHandlerBuilder(final Logger log, final LoggingLevel level) {
-        this.log = log;
-        this.level = level;
-    }
-
-    public boolean supportTransacted() {
-        return false;
-    }
-
-    @Override
-    public ErrorHandlerBuilder cloneBuilder() {
-        LoggingErrorHandlerBuilder answer = new LoggingErrorHandlerBuilder();
-        cloneBuilder(answer);
-        return answer;
-    }
-
-    protected void cloneBuilder(LoggingErrorHandlerBuilder other) {
-        super.cloneBuilder(other);
-
-        other.level = level;
-        other.log = log;
-    }
-
-    public Processor createErrorHandler(final RouteContext routeContext, final Processor processor) {
-        CamelLogger logger = new CamelLogger(log, level);
-
-        // configure policy to use the selected logging level, and only log exhausted
-        RedeliveryPolicy policy = new RedeliveryPolicy();
-        policy.setLogExhausted(true);
-        policy.setRetriesExhaustedLogLevel(level);
-        policy.setLogStackTrace(true);
-        policy.setLogRetryAttempted(false);
-        policy.setRetryAttemptedLogLevel(LoggingLevel.OFF);
-        policy.setLogRetryStackTrace(false);
-        policy.setLogContinued(false);
-        policy.setLogHandled(false);
-
-        LoggingErrorHandler handler = new LoggingErrorHandler(routeContext.getCamelContext(), processor, logger,
-                policy, getExceptionPolicyStrategy());
-        configure(routeContext, handler);
-        return handler;
-    }
-
-    public LoggingLevel getLevel() {
-        return level;
-    }
-
-    public void setLevel(final LoggingLevel level) {
-        this.level = level;
-    }
-
-    public Logger getLog() {
-        return log;
-    }
-
-    public void setLog(final Logger log) {
-        this.log = log;
-    }
-
-    public String getLogName() {
-        return log != null ? log.getName() : null;
-    }
-
-    public void setLogName(String logName) {
-        this.log = LoggerFactory.getLogger(logName);
-    }
-
-    public LoggingErrorHandlerBuilder level(final LoggingLevel level) {
-        this.level = level;
-        return this;
-    }
-
-    public LoggingErrorHandlerBuilder log(final Logger log) {
-        this.log = log;
-        return this;
-    }
-
-    public LoggingErrorHandlerBuilder logName(final String logName) {
-        setLogName(logName);
-        return this;
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
deleted file mode 100644
index 434e49c..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
+++ /dev/null
@@ -1,52 +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.processor;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.util.CamelLogger;
-
-/**
- * An {@link ErrorHandler} which uses commons-logging to dump the error
- *
- * @version
- * @deprecated use {@link DeadLetterChannel} using a log endpoint instead
- */
-@Deprecated
-public class LoggingErrorHandler extends DefaultErrorHandler {
-
-    /**
-     * Creates the logging error handler.
-     *
-     * @param camelContext            the camel context
-     * @param output                  outer processor that should use this logging error handler
-     * @param logger                  logger to use for logging failures
-     * @param redeliveryPolicy        redelivery policy
-     * @param exceptionPolicyStrategy strategy for onException handling
-     */
-    public LoggingErrorHandler(CamelContext camelContext, Processor output, CamelLogger logger,
-                               RedeliveryPolicy redeliveryPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy) {
-        super(camelContext, output, logger, null, redeliveryPolicy, exceptionPolicyStrategy, null, null, null, null);
-    }
-
-    @Override
-    public String toString() {
-        return "LoggingErrorHandler[" + output + "]";
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java b/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
index df3e0f5..ed7f80b 100644
--- a/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
@@ -24,7 +24,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.impl.EventDrivenConsumerRoute;
 import org.apache.camel.processor.DeadLetterChannel;
-import org.apache.camel.processor.LoggingErrorHandler;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.processor.SendProcessor;
 import org.junit.Before;
@@ -65,7 +64,7 @@ public class ContextErrorHandlerTest extends ContextTestSupport {
 
         RouteBuilder builder = new RouteBuilder() {
             public void configure() {
-                errorHandler(loggingErrorHandler("FOO.BAR"));
+                errorHandler(deadLetterChannel("log:FOO.BAR"));
                 from("seda:a").to("seda:b");
             }
         };
@@ -80,7 +79,7 @@ public class ContextErrorHandlerTest extends ContextTestSupport {
             Processor processor = consumerRoute.getProcessor();
 
             Channel channel = unwrapChannel(processor);
-            assertIsInstanceOf(LoggingErrorHandler.class, channel.getErrorHandler());
+            assertIsInstanceOf(DeadLetterChannel.class, channel.getErrorHandler());
             SendProcessor sendProcessor = assertIsInstanceOf(SendProcessor.class, channel.getNextProcessor());
             log.debug("Found sendProcessor: " + sendProcessor);
         }
diff --git a/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java b/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java
index 44a7fc4..9cbbec2 100644
--- a/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/builder/ErrorHandlerTest.java
@@ -25,7 +25,6 @@ import org.apache.camel.TestSupport;
 import org.apache.camel.impl.EventDrivenConsumerRoute;
 import org.apache.camel.processor.DeadLetterChannel;
 import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.processor.LoggingErrorHandler;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.processor.SendProcessor;
 import org.junit.After;
@@ -54,7 +53,7 @@ public class ErrorHandlerTest extends TestSupport {
         RouteBuilder builder = new RouteBuilder() {
             public void configure() {
                 // use logging error handler
-                errorHandler(loggingErrorHandler("com.mycompany.foo"));
+                errorHandler(deadLetterChannel("log:com.mycompany.foo"));
 
                 // here is our regular route
                 from("seda:a").to("seda:b");
@@ -71,7 +70,7 @@ public class ErrorHandlerTest extends TestSupport {
             EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
             Channel channel = unwrapChannel(consumerRoute.getProcessor());
 
-            assertIsInstanceOf(LoggingErrorHandler.class, channel.getErrorHandler());
+            assertIsInstanceOf(DeadLetterChannel.class, channel.getErrorHandler());
 
             Processor processor = unwrap(channel.getNextProcessor());
             assertIsInstanceOf(SendProcessor.class, processor);
@@ -87,7 +86,7 @@ public class ErrorHandlerTest extends TestSupport {
                 // this route is using a nested logging error handler
                 from("seda:a")
                     // here we configure the logging error handler
-                    .errorHandler(loggingErrorHandler("com.mycompany.foo"))
+                    .errorHandler(deadLetterChannel("log:com.mycompany.foo"))
                     // and we continue with the routing here
                     .to("seda:b");
 
@@ -168,7 +167,7 @@ public class ErrorHandlerTest extends TestSupport {
         // START SNIPPET: e5
         RouteBuilder builder = new RouteBuilder() {
             public void configure() {
-                from("seda:a").errorHandler(loggingErrorHandler("FOO.BAR")).filter(body().isInstanceOf(String.class)).to("seda:b");
+                from("seda:a").errorHandler(deadLetterChannel("log:FOO.BAR")).filter(body().isInstanceOf(String.class)).to("seda:b");
             }
         };
         // END SNIPPET: e5
@@ -181,7 +180,7 @@ public class ErrorHandlerTest extends TestSupport {
             EventDrivenConsumerRoute consumerRoute = assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
             Channel channel = unwrapChannel(consumerRoute.getProcessor());
 
-            assertIsInstanceOf(LoggingErrorHandler.class, channel.getErrorHandler());
+            assertIsInstanceOf(DeadLetterChannel.class, channel.getErrorHandler());
             assertIsInstanceOf(FilterProcessor.class, channel.getNextProcessor());
         }
     }
diff --git a/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java b/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java
deleted file mode 100644
index 3e9f278..0000000
--- a/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java
+++ /dev/null
@@ -1,176 +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.builder;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.LoggingLevel;
-import org.junit.Test;
-import org.slf4j.LoggerFactory;
-
-/**
- * @version 
- */
-public class LoggingErrorHandlerBuilderTest extends ContextTestSupport {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    @Test
-    public void testLoggingErrorHandler() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                LoggingErrorHandlerBuilder eh = loggingErrorHandler();
-                eh.setLevel(LoggingLevel.ERROR);
-                eh.setLog(LoggerFactory.getLogger("foo"));
-
-                assertEquals(LoggingLevel.ERROR, eh.getLevel());
-                assertNotNull(eh.getLog());
-                assertFalse(eh.supportTransacted());
-
-                errorHandler(eh);
-
-                from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Damn"));
-            }
-        });
-        context.start();
-
-        try {
-            template.sendBody("direct:start", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (Exception e) {
-            // expected
-        }
-    }
-
-    @Test
-    public void testLoggingErrorHandler2() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                errorHandler(loggingErrorHandler().level(LoggingLevel.WARN).log(LoggerFactory.getLogger("foo")));
-
-                from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Damn"));
-            }
-        });
-        context.start();
-
-        try {
-            template.sendBody("direct:start", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (Exception e) {
-            // expected
-        }
-    }
-
-    @Test
-    public void testLoggingErrorHandler3() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                LoggingErrorHandlerBuilder eh = loggingErrorHandler(LoggerFactory.getLogger("foo"));
-                eh.setLevel(LoggingLevel.ERROR);
-
-                assertEquals(LoggingLevel.ERROR, eh.getLevel());
-                assertNotNull(eh.getLog());
-                assertFalse(eh.supportTransacted());
-
-                errorHandler(eh);
-
-                from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Damn"));
-            }
-        });
-        context.start();
-
-        try {
-            template.sendBody("direct:start", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (Exception e) {
-            // expected
-        }
-    }
-
-    @Test
-    public void testLoggingErrorHandler4() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                LoggingErrorHandlerBuilder eh = loggingErrorHandler(LoggerFactory.getLogger("foo"), LoggingLevel.ERROR);
-
-                assertEquals(LoggingLevel.ERROR, eh.getLevel());
-                assertNotNull(eh.getLog());
-                assertFalse(eh.supportTransacted());
-
-                errorHandler(eh);
-
-                from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Damn"));
-            }
-        });
-        context.start();
-
-        try {
-            template.sendBody("direct:start", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (Exception e) {
-            // expected
-        }
-    }
-
-    @Test
-    public void testLoggingErrorHandler5() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                errorHandler(loggingErrorHandler().level(LoggingLevel.ERROR).logName("foo"));
-
-                from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Damn"));
-            }
-        });
-        context.start();
-
-        try {
-            template.sendBody("direct:start", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (Exception e) {
-            // expected
-        }
-    }
-
-    @Test
-    public void testLoggingErrorHandler6() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                errorHandler(loggingErrorHandler().level(LoggingLevel.WARN).logName("foo"));
-
-                from("direct:start").routeId("myRoute")
-                    .to("mock:foo")
-                    .throwException(new IllegalArgumentException("Damn"));
-            }
-        });
-        context.start();
-
-        try {
-            template.sendBody("direct:start", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (Exception e) {
-            // expected
-        }
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithInvalidConfiguredTest.java b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithInvalidConfiguredTest.java
index b568041..ddd8071 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithInvalidConfiguredTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithInvalidConfiguredTest.java
@@ -32,7 +32,7 @@ public class AdviceWithInvalidConfiguredTest extends ContextTestSupport {
             context.getRouteDefinition("route-a").adviceWith(context, new AdviceWithRouteBuilder() {
                 @Override
                 public void configure() throws Exception {
-                    errorHandler(loggingErrorHandler());
+                    errorHandler(defaultErrorHandler());
 
                     interceptSendToEndpoint("direct:bar")
                         .skipSendToOriginalEndpoint()
diff --git a/camel-core/src/test/java/org/apache/camel/issues/TimerAndErrorHandlerIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/TimerAndErrorHandlerIssueTest.java
index dc535f1..08b0888 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/TimerAndErrorHandlerIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/TimerAndErrorHandlerIssueTest.java
@@ -42,7 +42,7 @@ public class TimerAndErrorHandlerIssueTest extends ContextTestSupport {
             public void configure() throws Exception {
                 onException(RuntimeCamelException.class).handled(true);
 
-                errorHandler(loggingErrorHandler(getClass().getName()));
+                errorHandler(defaultErrorHandler());
 
                 String executionTriggerUri = "timer:executionTimer"
                         + "?fixedRate=true"
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
index 0808eff..61b558e 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
@@ -77,8 +77,6 @@ public class ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest extends Man
         // and the route scoped error handler should be removed
         set = mbeanServer.queryNames(new ObjectName("*:type=errorhandlers,*"), null);
         assertEquals(1, set.size());
-        // should be the context scoped logging error handler
-        assertTrue("Should be context scoped error handler: " + set, set.iterator().next().toString().contains("Logging"));
     }
 
     @Test
@@ -148,7 +146,7 @@ public class ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest extends Man
             @Override
             public void configure() throws Exception {
                 // context scoped error handler
-                errorHandler(loggingErrorHandler("global"));
+                errorHandler(deadLetterChannel("log:global"));
 
                 from("seda:bar").routeId("bar")
                         .to("mock:result");
diff --git a/camel-core/src/test/java/org/apache/camel/processor/onexception/LoggingErrorHandlerOnExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/onexception/LoggingErrorHandlerOnExceptionTest.java
deleted file mode 100644
index e60fd9f..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/onexception/LoggingErrorHandlerOnExceptionTest.java
+++ /dev/null
@@ -1,70 +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.processor.onexception;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class LoggingErrorHandlerOnExceptionTest extends ContextTestSupport {
-
-    @Test
-    public void testLoggingErrorHandler() throws Exception {
-        getMockEndpoint("mock:handled").expectedMessageCount(0);
-
-        try {
-            template.sendBody("direct:kaboom", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (CamelExecutionException e) {
-            assertEquals("Kaboom", e.getCause().getMessage());
-        }
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Test
-    public void testLoggingErrorHandlerOnException() throws Exception {
-        getMockEndpoint("mock:handled").expectedMessageCount(1);
-
-        template.sendBody("direct:damn", "Bye World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                context.setTracing(true);
-
-                errorHandler(loggingErrorHandler("org.apache.camel.MyLogger"));
-
-                onException(IllegalArgumentException.class)
-                    .handled(true)
-                    .to("mock:handled");
-
-                from("direct:kaboom").to("log:kaboom").throwException(new Exception("Kaboom"));
-                from("direct:damn").to("log:damn").throwException(new IllegalArgumentException("Damn"));
-            }
-        };
-    }
-}
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
index 2965f93..6ef3122 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
@@ -29,7 +29,6 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilder;
-import org.apache.camel.builder.LoggingErrorHandlerBuilder;
 import org.apache.camel.core.xml.AbstractCamelFactoryBean;
 import org.apache.camel.model.RedeliveryPolicyDefinition;
 import org.apache.camel.processor.RedeliveryPolicy;
@@ -103,14 +102,6 @@ public class CamelErrorHandlerFactoryBean extends AbstractCamelFactoryBean<Error
             if (executorServiceRef != null) {
                 handler.setExecutorServiceRef(executorServiceRef);
             }
-        } else if (errorHandler instanceof LoggingErrorHandlerBuilder) {
-            LoggingErrorHandlerBuilder handler = (LoggingErrorHandlerBuilder) errorHandler;
-            if (level != null) {
-                handler.setLevel(level);
-            }
-            if (logName != null) {
-                handler.setLogName(logName);
-            }
         }
         return errorHandler;
     }
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java
index 8fb3eae..c65df31 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java
@@ -22,7 +22,6 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilder;
-import org.apache.camel.builder.LoggingErrorHandlerBuilder;
 import org.apache.camel.builder.NoErrorHandlerBuilder;
 
 /**
@@ -47,8 +46,6 @@ public enum ErrorHandlerType {
             return DefaultErrorHandlerBuilder.class;
         case DeadLetterChannel:
             return DeadLetterChannelBuilder.class;
-        case LoggingErrorHandler:
-            return LoggingErrorHandlerBuilder.class;
         case NoErrorHandler:
             return NoErrorHandlerBuilder.class;
         default:
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
index 549a322..291f1ab 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
@@ -27,13 +27,6 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Stream;
 
-import static java.lang.String.format;
-import static java.util.Collections.addAll;
-import static java.util.Collections.emptySet;
-import static java.util.Collections.singleton;
-import static java.util.Objects.requireNonNull;
-import static java.util.stream.Collectors.toSet;
-
 import javax.enterprise.inject.CreationException;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
@@ -60,6 +53,12 @@ import org.apache.camel.model.rest.RestDefinition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static java.lang.String.format;
+import static java.util.Collections.addAll;
+import static java.util.Collections.emptySet;
+import static java.util.Collections.singleton;
+import static java.util.Objects.requireNonNull;
+import static java.util.stream.Collectors.toSet;
 import static org.apache.camel.cdi.AnyLiteral.ANY;
 import static org.apache.camel.cdi.ApplicationScopedLiteral.APPLICATION_SCOPED;
 import static org.apache.camel.cdi.CdiSpiHelper.createCamelContextWithTCCL;
@@ -403,58 +402,41 @@ final class XmlCdiBeanFactory {
         }
 
         if (isNotEmpty(definition.getUseOriginalMessage())
-            && (type.equals(ErrorHandlerType.LoggingErrorHandler)
-            || type.equals(ErrorHandlerType.NoErrorHandler))) {
+            && type.equals(ErrorHandlerType.NoErrorHandler)) {
             throw attributeNotSupported("useOriginalMessage", type, definition.getId());
         }
 
         if (isNotEmpty(definition.getOnRedeliveryRef())
-            && (type.equals(ErrorHandlerType.LoggingErrorHandler)
-            || type.equals(ErrorHandlerType.NoErrorHandler))) {
+            && type.equals(ErrorHandlerType.NoErrorHandler)) {
             throw attributeNotSupported("onRedeliveryRef", type, definition.getId());
         }
 
         if (isNotEmpty(definition.getOnExceptionOccurredRef())
-            && (type.equals(ErrorHandlerType.LoggingErrorHandler)
-            || type.equals(ErrorHandlerType.NoErrorHandler))) {
+            && type.equals(ErrorHandlerType.NoErrorHandler)) {
             throw attributeNotSupported("onExceptionOccurredRef", type, definition.getId());
         }
 
         if (isNotEmpty(definition.getOnPrepareFailureRef())
             && (type.equals(ErrorHandlerType.TransactionErrorHandler)
-            || type.equals(ErrorHandlerType.LoggingErrorHandler)
             || type.equals(ErrorHandlerType.NoErrorHandler))) {
             throw attributeNotSupported("onPrepareFailureRef", type, definition.getId());
         }
 
         if (isNotEmpty(definition.getRetryWhileRef())
-            && (type.equals(ErrorHandlerType.LoggingErrorHandler)
-            || type.equals(ErrorHandlerType.NoErrorHandler))) {
+            && type.equals(ErrorHandlerType.NoErrorHandler)) {
             throw attributeNotSupported("retryWhileRef", type, definition.getId());
         }
 
         if (isNotEmpty(definition.getOnRedeliveryRef())
-            && (type.equals(ErrorHandlerType.LoggingErrorHandler)
-            || type.equals(ErrorHandlerType.NoErrorHandler))) {
+            && type.equals(ErrorHandlerType.NoErrorHandler)) {
             throw attributeNotSupported("redeliveryPolicyRef", type, definition.getId());
         }
 
         if (isNotEmpty(definition.getExecutorServiceRef())
-            && (type.equals(ErrorHandlerType.LoggingErrorHandler)
-            || type.equals(ErrorHandlerType.NoErrorHandler))) {
+            && type.equals(ErrorHandlerType.NoErrorHandler)) {
             throw attributeNotSupported("executorServiceRef", type, definition.getId());
         }
 
-        if (isNotEmpty(definition.getLogName())
-            && (!type.equals(ErrorHandlerType.LoggingErrorHandler))) {
-            throw attributeNotSupported("logName", type, definition.getId());
-        }
-
-        if (isNotEmpty(definition.getLevel())
-            && (!type.equals(ErrorHandlerType.LoggingErrorHandler))) {
-            throw attributeNotSupported("level", type, definition.getId());
-        }
-
         return new XmlErrorHandlerFactoryBean(manager,
             new SyntheticAnnotated(type.getTypeAsClass(),
                 manager.createAnnotatedType(type.getTypeAsClass()).getTypeClosure(),
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java
index f88f7b6..507ad6a 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java
@@ -30,7 +30,6 @@ import javax.enterprise.inject.spi.BeanManager;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilder;
-import org.apache.camel.builder.LoggingErrorHandlerBuilder;
 import org.apache.camel.cdi.xml.ErrorHandlerDefinition;
 import org.apache.camel.cdi.xml.RedeliveryPolicyFactoryBean;
 import org.apache.camel.processor.RedeliveryPolicy;
@@ -60,9 +59,6 @@ final class XmlErrorHandlerFactoryBean extends SyntheticBean<ErrorHandlerBuilder
             case DeadLetterChannel:
                 setProperties((DefaultErrorHandlerBuilder) builder);
                 break;
-            case LoggingErrorHandler:
-                setProperties((LoggingErrorHandlerBuilder) builder);
-                break;
             case NoErrorHandler:
                 // No configuration required
                 break;
@@ -133,8 +129,4 @@ final class XmlErrorHandlerFactoryBean extends SyntheticBean<ErrorHandlerBuilder
         }
     }
 
-    private void setProperties(LoggingErrorHandlerBuilder builder) {
-        builder.setLevel(handler.getLevel());
-        builder.setLogName(handler.getLogName());
-    }
 }
\ No newline at end of file
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerDefinition.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerDefinition.java
index 939a07b..87fdf9e 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerDefinition.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerDefinition.java
@@ -42,15 +42,9 @@ public class ErrorHandlerDefinition extends IdentifiedType {
     private Boolean deadLetterHandleNewException;
 
     @XmlAttribute
-    private LoggingLevel level;
-
-    @XmlAttribute
     private LoggingLevel rollbackLoggingLevel;
 
     @XmlAttribute
-    private String logName;
-
-    @XmlAttribute
     private Boolean useOriginalMessage;
 
     @XmlAttribute
@@ -104,14 +98,6 @@ public class ErrorHandlerDefinition extends IdentifiedType {
         this.deadLetterHandleNewException = deadLetterHandleNewException;
     }
 
-    public LoggingLevel getLevel() {
-        return level;
-    }
-
-    public void setLevel(LoggingLevel level) {
-        this.level = level;
-    }
-
     public LoggingLevel getRollbackLoggingLevel() {
         return rollbackLoggingLevel;
     }
@@ -120,14 +106,6 @@ public class ErrorHandlerDefinition extends IdentifiedType {
         this.rollbackLoggingLevel = rollbackLoggingLevel;
     }
 
-    public String getLogName() {
-        return logName;
-    }
-
-    public void setLogName(String logName) {
-        this.logName = logName;
-    }
-
     public Boolean getUseOriginalMessage() {
         return useOriginalMessage;
     }
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerType.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerType.java
index 1f9d4c0..5c082e6 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerType.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ErrorHandlerType.java
@@ -22,7 +22,6 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilder;
-import org.apache.camel.builder.LoggingErrorHandlerBuilder;
 import org.apache.camel.builder.NoErrorHandlerBuilder;
 
 import org.apache.camel.cdi.transaction.JtaTransactionErrorHandlerBuilder;
@@ -36,7 +35,6 @@ public enum ErrorHandlerType {
 
     DefaultErrorHandler,
     DeadLetterChannel,
-    LoggingErrorHandler,
     NoErrorHandler,
     TransactionErrorHandler;
 
@@ -51,8 +49,6 @@ public enum ErrorHandlerType {
             return DefaultErrorHandlerBuilder.class;
         case DeadLetterChannel:
             return DeadLetterChannelBuilder.class;
-        case LoggingErrorHandler:
-            return LoggingErrorHandlerBuilder.class;
         case NoErrorHandler:
             return NoErrorHandlerBuilder.class;
         case TransactionErrorHandler:
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/XmlErrorHandlerLoggingTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/XmlErrorHandlerLoggingTest.java
deleted file mode 100644
index b097338..0000000
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/XmlErrorHandlerLoggingTest.java
+++ /dev/null
@@ -1,131 +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.cdi.test;
-
-import java.nio.file.Paths;
-import java.util.concurrent.TimeUnit;
-import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.apache.camel.CamelException;
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.cdi.CdiCamelExtension;
-import org.apache.camel.cdi.ImportResource;
-import org.apache.camel.cdi.Uri;
-import org.apache.camel.cdi.rule.LogEventVerifier;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.shrinkwrap.api.Archive;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.rules.TestRule;
-import org.junit.runner.RunWith;
-
-import static org.apache.camel.cdi.rule.LogEventMatcher.logEvent;
-import static org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied;
-import static org.hamcrest.Matchers.containsInRelativeOrder;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-
-@RunWith(Arquillian.class)
-@ImportResource("imported-context.xml")
-public class XmlErrorHandlerLoggingTest {
-
-    @ClassRule
-    public static TestRule verifier = new LogEventVerifier() {
-        @Override
-        protected void verify() {
-            assertThat("Log messages not found!", getEvents(),
-                containsInRelativeOrder(
-                    logEvent()
-                        .withLevel("INFO")
-                        .withMessage(containsString("Camel CDI is starting Camel context [test]")),
-                    logEvent()
-                        .withLevel("WARN")
-                        .withLogger("error")
-                        .withMessage(containsString(
-                            "Exhausted after delivery attempt: 1 "
-                                + "caught: org.apache.camel.CamelException: failure message!")),
-                    logEvent()
-                        .withLevel("INFO")
-                        .withMessage(containsString("Camel CDI is stopping Camel context [test]"))
-                )
-            );
-        }
-    };
-
-    @Named
-    @Produces
-    private Exception failure = new CamelException("failure message!");
-
-    @Inject
-    @Uri("direct:inbound")
-    private ProducerTemplate inbound;
-
-    @Inject
-    @Uri("mock:outbound")
-    private MockEndpoint outbound;
-
-    @Deployment
-    public static Archive<?> deployment() {
-        return ShrinkWrap.create(JavaArchive.class)
-            // Camel CDI
-            .addPackage(CdiCamelExtension.class.getPackage())
-            // Test Camel XML
-            .addAsResource(
-                Paths.get("src/test/resources/camel-context-errorHandler-logging.xml").toFile(),
-                "imported-context.xml")
-            // Bean archive deployment descriptor
-            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
-    }
-
-    @Test
-    public void sendMessageToInbound() throws InterruptedException {
-        outbound.expectedMessageCount(1);
-        outbound.expectedBodiesReceived("Response to message");
-
-        inbound.sendBody("message");
-
-        assertIsSatisfied(2L, TimeUnit.SECONDS, outbound);
-    }
-
-    @Test
-    public void sendExceptionToInbound() {
-        try {
-            inbound.sendBody("exception");
-        } catch (Exception exception) {
-            assertThat("Exception is incorrect!",
-                exception, is(instanceOf(CamelExecutionException.class)));
-            assertThat("Exception cause is incorrect!",
-                exception.getCause(), is(instanceOf(CamelException.class)));
-            assertThat("Exception message is incorrect!",
-                exception.getCause().getMessage(), is(equalTo("failure message!")));
-            return;
-        }
-        fail("No exception thrown!");
-    }
-}
diff --git a/components/camel-cdi/src/test/resources/camel-context-errorHandler-logging.xml b/components/camel-cdi/src/test/resources/camel-context-errorHandler-logging.xml
deleted file mode 100644
index b1177c5..0000000
--- a/components/camel-cdi/src/test/resources/camel-context-errorHandler-logging.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<camelContext id="test" errorHandlerRef="error-handler"
-              xmlns="http://camel.apache.org/schema/spring"
-              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-              xsi:schemaLocation="http://camel.apache.org/schema/spring
-              http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-    <errorHandler id="error-handler"
-                  type="LoggingErrorHandler"
-                  logName="error"
-                  level="WARN"/>
-
-    <route>
-        <from uri="direct:inbound"/>
-        <choice>
-            <when>
-                <simple>${body} contains 'exception'</simple>
-                <throwException ref="failure"/>
-            </when>
-            <otherwise>
-                <transform>
-                    <simple>Response to ${body}</simple>
-                </transform>
-                <to uri="mock:outbound"/>
-            </otherwise>
-        </choice>
-    </route>
-
-</camelContext>
\ No newline at end of file
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerType.java b/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerType.java
index 98eeff4..6b934d7 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerType.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerType.java
@@ -21,7 +21,6 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
-import org.apache.camel.builder.LoggingErrorHandlerBuilder;
 import org.apache.camel.builder.NoErrorHandlerBuilder;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spring.spi.TransactionErrorHandlerBuilder;
@@ -49,8 +48,6 @@ public enum ErrorHandlerType {
             return DefaultErrorHandlerBuilder.class;
         case DeadLetterChannel:
             return DeadLetterChannelBuilder.class;
-        case LoggingErrorHandler:
-            return LoggingErrorHandlerBuilder.class;
         case NoErrorHandler:
             return NoErrorHandlerBuilder.class;
         case TransactionErrorHandler:
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParserTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParserTest.java
index 93981e4..075b121 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParserTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParserTest.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 package org.apache.camel.spring.handler;
-import org.apache.camel.LoggingLevel;
+
 import org.apache.camel.Processor;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
-import org.apache.camel.builder.LoggingErrorHandlerBuilder;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.spring.spi.TransactionErrorHandlerBuilder;
 import org.apache.camel.util.IOHelper;
@@ -43,14 +42,6 @@ public class ErrorHandlerDefinitionParserTest extends Assert {
     }
     
     @Test
-    public void testLoggingErrorHandler() {
-        LoggingErrorHandlerBuilder errorHandler = ctx.getBean("loggingErrorHandler", LoggingErrorHandlerBuilder.class);
-        assertNotNull(errorHandler);
-        assertEquals("The log level should be INFO", LoggingLevel.INFO, errorHandler.getLevel());
-        assertEquals("The log name should be foo", "foo", errorHandler.getLogName());
-    }
-    
-    @Test
     public void testDefaultErrorHandler() {
         DefaultErrorHandlerBuilder errorHandler = ctx.getBean("defaultErrorHandler", DefaultErrorHandlerBuilder.class);
         assertNotNull(errorHandler);
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml
index 45f974d..7a653a2 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml
@@ -28,8 +28,6 @@
     ">
 
     <!-- START SNIPPET: example -->
-    <errorHandler id="loggingErrorHandler" type="LoggingErrorHandler" logName="foo" level="INFO" xmlns="http://camel.apache.org/schema/spring"/>
-
     <!-- If don't specify type attribute, the type value will be set to DefaultErrorHandler -->
     <errorHandler id="errorHandler" xmlns="http://camel.apache.org/schema/spring"/>
 


[camel] 05/44: [CAMEL-10535] Remove simple backwards parser

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 95d03b8242645a5290d1df3f2ed5121ea18468ab
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Sep 10 08:36:55 2018 +0200

    [CAMEL-10535] Remove simple backwards parser
---
 .../camel/builder/ExpressionClauseSupport.java     |   2 +-
 .../simple/SimpleBackwardsCompatibleParser.java    |  75 -------------
 .../camel/language/simple/SimpleLanguage.java      |  20 ++--
 .../ControlBusLanguageSimpleStartRouteTest.java    |   8 +-
 .../simple/SimpleBackwardsCompatibleTest.java      |  10 +-
 .../apache/camel/language/simple/SimpleTest.java   | 120 ++++++++++-----------
 .../language/simple/SimpleWhiteSpaceTest.java      |  10 +-
 .../apache/camel/processor/CorrectRouteIdTest.java |   6 +-
 .../camel/processor/SetBodyProcessorTest.java      |   2 +-
 .../util/DumpModelAsXmlSplitBodyRouteTest.java     |   2 +-
 10 files changed, 77 insertions(+), 178 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
index 79347d4..d815f2c 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
@@ -112,7 +112,7 @@ public class ExpressionClauseSupport<T> {
      */
     public T body() {
         // reuse simple as this allows the model to represent this as a known JAXB type
-        return expression(new SimpleExpression("body"));
+        return expression(new SimpleExpression("${body}"));
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleParser.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleParser.java
deleted file mode 100644
index f730bbf..0000000
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleParser.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.language.simple;
-
-import org.apache.camel.Expression;
-import org.apache.camel.Predicate;
-import org.apache.camel.language.simple.ast.SimpleFunctionExpression;
-import org.apache.camel.language.simple.types.SimpleToken;
-import org.apache.camel.language.simple.types.SimpleTokenType;
-import org.apache.camel.language.simple.types.TokenType;
-import org.apache.camel.util.ExpressionToPredicateAdapter;
-
-/**
- * A backwards compatible parser, which supports the old simple language
- * syntax by which simple functions can be given without using start and
- * end tokens.
- * <p/>
- * For example "body" would be parsed as the body function, where as the
- * new parser would require that to be entered as "${body}".
- * <p/>
- * This parser is to be removed when the old syntax is no longer supported.
- *
- * @deprecated will be removed in Camel 3.0
- */
-@Deprecated
-public final class SimpleBackwardsCompatibleParser {
-
-    private SimpleBackwardsCompatibleParser() {
-        // static methods
-    }
-
-    public static Expression parseExpression(String expression, boolean allowEscape) {
-        return doParseExpression(expression, allowEscape);
-    }
-
-    public static Predicate parsePredicate(String expression, boolean allowEscape) {
-        Expression answer = doParseExpression(expression, allowEscape);
-        if (answer != null) {
-            return ExpressionToPredicateAdapter.toPredicate(answer);
-        } else {
-            return null;
-        }
-    }
-
-    private static Expression doParseExpression(String expression, boolean allowEscape) {
-        // should have no function tokens
-        for (int i = 0; i < expression.length(); i++) {
-            SimpleToken token = SimpleTokenizer.nextToken(expression, i, allowEscape, TokenType.functionStart, TokenType.functionEnd);
-            if (token.getType().getType() == TokenType.functionStart || token.getType().getType() == TokenType.functionEnd) {
-                return null;
-            }
-        }
-
-        // okay there is no function tokens, then try to parse it as a simple function expression
-        SimpleToken token = new SimpleToken(new SimpleTokenType(TokenType.functionStart, expression), 0);
-        SimpleFunctionExpression function = new SimpleFunctionExpression(token);
-        function.addText(expression);
-        return function.createExpression(expression, false);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
index 059ecf3..8c54503 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
@@ -158,13 +158,9 @@ public class SimpleLanguage extends LanguageSupport implements StaticService {
 
             expression = loadResource(expression);
 
-            // support old simple language syntax
-            answer = SimpleBackwardsCompatibleParser.parsePredicate(expression, allowEscape);
-            if (answer == null) {
-                // use the new parser
-                SimplePredicateParser parser = new SimplePredicateParser(expression, allowEscape, cacheExpression);
-                answer = parser.parsePredicate();
-            }
+            SimplePredicateParser parser = new SimplePredicateParser(expression, allowEscape, cacheExpression);
+            answer = parser.parsePredicate();
+
             if (cachePredicate != null && answer != null) {
                 cachePredicate.put(expression, answer);
             }
@@ -182,13 +178,9 @@ public class SimpleLanguage extends LanguageSupport implements StaticService {
 
             expression = loadResource(expression);
 
-            // support old simple language syntax
-            answer = SimpleBackwardsCompatibleParser.parseExpression(expression, allowEscape);
-            if (answer == null) {
-                // use the new parser
-                SimpleExpressionParser parser = new SimpleExpressionParser(expression, allowEscape, cacheExpression);
-                answer = parser.parseExpression();
-            }
+            SimpleExpressionParser parser = new SimpleExpressionParser(expression, allowEscape, cacheExpression);
+            answer = parser.parseExpression();
+
             if (cacheExpression != null && answer != null) {
                 cacheExpression.put(expression, answer);
             }
diff --git a/camel-core/src/test/java/org/apache/camel/component/controlbus/ControlBusLanguageSimpleStartRouteTest.java b/camel-core/src/test/java/org/apache/camel/component/controlbus/ControlBusLanguageSimpleStartRouteTest.java
index e949065..afb62c4 100644
--- a/camel-core/src/test/java/org/apache/camel/component/controlbus/ControlBusLanguageSimpleStartRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/controlbus/ControlBusLanguageSimpleStartRouteTest.java
@@ -34,12 +34,12 @@ public class ControlBusLanguageSimpleStartRouteTest extends ContextTestSupport {
         template.sendBody("seda:foo", "Hello World");
 
         // start the route using control bus
-        template.sendBody("controlbus:language:simple", "camelContext.startRoute('foo')");
+        template.sendBody("controlbus:language:simple", "${camelContext.startRoute('foo')}");
 
         assertMockEndpointsSatisfied();
 
         // now stop the route, using a header
-        template.sendBodyAndHeader("controlbus:language:simple", "camelContext.stopRoute(header.me)", "me", "foo");
+        template.sendBodyAndHeader("controlbus:language:simple", "${camelContext.stopRoute(${header.me})}", "me", "foo");
 
         assertEquals("Stopped", context.getRouteStatus("foo").name());
     }
@@ -48,12 +48,12 @@ public class ControlBusLanguageSimpleStartRouteTest extends ContextTestSupport {
     public void testControlBusStatus() throws Exception {
         assertEquals("Stopped", context.getRouteStatus("foo").name());
 
-        String status = template.requestBody("controlbus:language:simple", "camelContext.getRouteStatus('foo')", String.class);
+        String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('foo')}", String.class);
         assertEquals("Stopped", status);
 
         context.startRoute("foo");
 
-        status = template.requestBody("controlbus:language:simple", "camelContext.getRouteStatus('foo')", String.class);
+        status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('foo')}", String.class);
         assertEquals("Started", status);
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java
index db5b27e..3fba79c 100644
--- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleBackwardsCompatibleTest.java
@@ -33,24 +33,18 @@ public class SimpleBackwardsCompatibleTest extends LanguageTestSupport {
     @Test
     public void testSimpleBody() throws Exception {
         assertExpression(exchange, "${body}", "<hello id='m123'>world!</hello>");
-        assertExpression(exchange, "$simple{body}", "<hello id='m123'>world!</hello>");
-        assertExpression(exchange, "body", "<hello id='m123'>world!</hello>");
 
         assertPredicate("${body}", true);
-        assertPredicate("body", true);
     }
 
     @Test
     public void testSimpleHeader() throws Exception {
         exchange.getIn().setHeader("foo", 123);
         assertExpression(exchange, "${header.foo}", 123);
-        assertExpression(exchange, "header.foo", 123);
 
         assertPredicate("${header.foo}", true);
-        assertPredicate("header.foo", true);
 
         assertPredicate("${header.unknown}", false);
-        assertPredicate("header.unknown", false);
     }
 
     @Test
@@ -59,7 +53,7 @@ public class SimpleBackwardsCompatibleTest extends LanguageTestSupport {
         exchange.getIn().setHeader("high", true);
         exchange.getIn().setHeader("foo", 123);
 
-        SimplePredicateParser parser = new SimplePredicateParser("${header.high} == true and ${header.foo} == 123", true);
+        SimplePredicateParser parser = new SimplePredicateParser("${header.high} == true && ${header.foo} == 123", true, null);
         Predicate pre = parser.parsePredicate();
 
         assertTrue("Should match", pre.matches(exchange));
@@ -71,7 +65,7 @@ public class SimpleBackwardsCompatibleTest extends LanguageTestSupport {
         exchange.getIn().setHeader("high", true);
         exchange.getIn().setHeader("foo", 123);
 
-        SimplePredicateParser parser = new SimplePredicateParser("${header.high} == false or ${header.foo} == 123", true);
+        SimplePredicateParser parser = new SimplePredicateParser("${header.high} == false || ${header.foo} == 123", true, null);
         Predicate pre = parser.parsePredicate();
 
         assertTrue("Should match", pre.matches(exchange));
diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
index 69505cd..e775d8e 100644
--- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
@@ -94,12 +94,9 @@ public class SimpleTest extends LanguageTestSupport {
 
     @Test
     public void testRefExpression() throws Exception {
-        assertExpressionResultInstanceOf("ref:myAnimal", Animal.class);
         assertExpressionResultInstanceOf("${ref:myAnimal}", Animal.class);
 
-        assertExpression("ref:myAnimal", "Donkey");
         assertExpression("${ref:myAnimal}", "Donkey");
-        assertExpression("ref:unknown", null);
         assertExpression("${ref:unknown}", null);
         assertExpression("Hello ${ref:myAnimal}", "Hello Donkey");
         assertExpression("Hello ${ref:unknown}", "Hello ");
@@ -147,7 +144,7 @@ public class SimpleTest extends LanguageTestSupport {
         assertNotNull(exp);
         assertEquals(exchange, exp.evaluate(exchange, Object.class));
 
-        assertExpression("exchange", exchange);
+        assertExpression("${exchange}", exchange);
     }
 
     @Test
@@ -156,8 +153,8 @@ public class SimpleTest extends LanguageTestSupport {
         assertNotNull(exp);
         assertEquals(exchange.getExchangeId(), exp.evaluate(exchange, Object.class));
 
-        assertExpression("exchange.exchangeId", exchange.getExchangeId());
-        assertExpression("exchange.class.name", "org.apache.camel.impl.DefaultExchange");
+        assertExpression("${exchange.exchangeId}", exchange.getExchangeId());
+        assertExpression("${exchange.class.name}", "org.apache.camel.impl.DefaultExchange");
     }
 
     @Test
@@ -199,12 +196,12 @@ public class SimpleTest extends LanguageTestSupport {
     @Test
     public void testBodyExpressionWithArray() throws Exception {
         exchange.getIn().setBody(new MyClass());
-        Expression exp = SimpleLanguage.simple("body.myArray");
+        Expression exp = SimpleLanguage.simple("${body.myArray}");
         assertNotNull(exp);
         Object val = exp.evaluate(exchange, Object.class);
         assertIsInstanceOf(Object[].class, val);
 
-        exp = SimpleLanguage.simple("body.myArray.length");
+        exp = SimpleLanguage.simple("${body.myArray.length}");
         assertNotNull(exp);
         val = exp.evaluate(exchange, Object.class);
         assertIsInstanceOf(Integer.class, val);
@@ -213,31 +210,31 @@ public class SimpleTest extends LanguageTestSupport {
 
     @Test
     public void testSimpleExpressions() throws Exception {
-        assertExpression("exchangeId", exchange.getExchangeId());
-        assertExpression("id", exchange.getIn().getMessageId());
-        assertExpression("body", "<hello id='m123'>world!</hello>");
-        assertExpression("in.body", "<hello id='m123'>world!</hello>");
-        assertExpression("in.header.foo", "abc");
-        assertExpression("in.headers.foo", "abc");
-        assertExpression("header.foo", "abc");
-        assertExpression("headers.foo", "abc");
-        assertExpression("routeId", exchange.getFromRouteId());
+        assertExpression("${exchangeId}", exchange.getExchangeId());
+        assertExpression("${id}", exchange.getIn().getMessageId());
+        assertExpression("${body}", "<hello id='m123'>world!</hello>");
+        assertExpression("${in.body}", "<hello id='m123'>world!</hello>");
+        assertExpression("${in.header.foo}", "abc");
+        assertExpression("${in.headers.foo}", "abc");
+        assertExpression("${header.foo}", "abc");
+        assertExpression("${headers.foo}", "abc");
+        assertExpression("${routeId}", exchange.getFromRouteId());
         exchange.setFromRouteId("myRouteId");
-        assertExpression("routeId", "myRouteId");
+        assertExpression("${routeId}", "myRouteId");
     }
 
     @Test
     public void testTrimSimpleExpressions() throws Exception {
-        assertExpression(" \texchangeId\n".trim(), exchange.getExchangeId());
-        assertExpression("\nid\r".trim(), exchange.getIn().getMessageId());
-        assertExpression("\t\r body".trim(), "<hello id='m123'>world!</hello>");
-        assertExpression("\nin.body\r".trim(), "<hello id='m123'>world!</hello>");
+        assertExpression(" \t${exchangeId}\n".trim(), exchange.getExchangeId());
+        assertExpression("\n${id}\r".trim(), exchange.getIn().getMessageId());
+        assertExpression("\t\r ${body}".trim(), "<hello id='m123'>world!</hello>");
+        assertExpression("\n${in.body}\r".trim(), "<hello id='m123'>world!</hello>");
     }
 
     @Test
     public void testSimpleThreadName() throws Exception {
         String name = Thread.currentThread().getName();
-        assertExpression("threadName", name);
+        assertExpression("${threadName}", name);
         assertExpression("The name is ${threadName}", "The name is " + name);
     }
 
@@ -245,34 +242,34 @@ public class SimpleTest extends LanguageTestSupport {
     public void testSimpleOutExpressions() throws Exception {
         exchange.getOut().setBody("Bye World");
         exchange.getOut().setHeader("quote", "Camel rocks");
-        assertExpression("out.body", "Bye World");
-        assertExpression("out.header.quote", "Camel rocks");
-        assertExpression("out.headers.quote", "Camel rocks");
+        assertExpression("${out.body}", "Bye World");
+        assertExpression("${out.header.quote}", "Camel rocks");
+        assertExpression("${out.headers.quote}", "Camel rocks");
     }
 
     @Test
     public void testSimplePropertyExpressions() throws Exception {
         exchange.setProperty("medal", "gold");
-        assertExpression("property.medal", "gold");
+        assertExpression("${property.medal}", "gold");
     }
 
     @Test
     public void testSimpleExchangePropertyExpressions() throws Exception {
         exchange.setProperty("medal", "gold");
-        assertExpression("exchangeProperty.medal", "gold");
+        assertExpression("${exchangeProperty.medal}", "gold");
     }
 
     @Test
     public void testSimpleSystemPropertyExpressions() throws Exception {
         System.setProperty("who", "I was here");
-        assertExpression("sys.who", "I was here");
+        assertExpression("${sys.who}", "I was here");
     }
 
     @Test
     public void testSimpleSystemEnvironmentExpressions() throws Exception {
         String path = System.getenv("PATH");
         if (path != null) {
-            assertExpression("sysenv.PATH", path);
+            assertExpression("${sysenv.PATH}", path);
         }
     }
     
@@ -280,13 +277,13 @@ public class SimpleTest extends LanguageTestSupport {
     public void testSimpleSystemEnvironmentExpressionsIfLowercase() throws Exception {
         String path = System.getenv("PATH");
         if (path != null) {
-            assertExpression("sysenv.path", path);
+            assertExpression("${sysenv.path}", path);
         }
     }
 
     @Test
     public void testSimpleCamelId() throws Exception {
-        assertExpression("camelId", context.getName());
+        assertExpression("${camelId}", context.getName());
     }
 
     @Test
@@ -554,24 +551,24 @@ public class SimpleTest extends LanguageTestSupport {
         propertyCalendar.set(1976, Calendar.JUNE, 22);
         exchange.setProperty("birthday", propertyCalendar.getTime());
 
-        assertExpression("date:header.birthday", inHeaderCalendar.getTime());
-        assertExpression("date:header.birthday:yyyyMMdd", "19740420");
-        assertExpression("date:header.birthday+24h:yyyyMMdd", "19740421");
+        assertExpression("${date:header.birthday}", inHeaderCalendar.getTime());
+        assertExpression("${date:header.birthday:yyyyMMdd}", "19740420");
+        assertExpression("${date:header.birthday+24h:yyyyMMdd}", "19740421");
         
-        assertExpression("date:in.header.birthday", inHeaderCalendar.getTime());
-        assertExpression("date:in.header.birthday:yyyyMMdd", "19740420");
-        assertExpression("date:in.header.birthday+24h:yyyyMMdd", "19740421");
+        assertExpression("${date:in.header.birthday}", inHeaderCalendar.getTime());
+        assertExpression("${date:in.header.birthday:yyyyMMdd}", "19740420");
+        assertExpression("${date:in.header.birthday+24h:yyyyMMdd}", "19740421");
         
-        assertExpression("date:out.header.birthday", outHeaderCalendar.getTime());
-        assertExpression("date:out.header.birthday:yyyyMMdd", "19750521");
-        assertExpression("date:out.header.birthday+24h:yyyyMMdd", "19750522");
+        assertExpression("${date:out.header.birthday}", outHeaderCalendar.getTime());
+        assertExpression("${date:out.header.birthday:yyyyMMdd}", "19750521");
+        assertExpression("${date:out.header.birthday+24h:yyyyMMdd}", "19750522");
 
-        assertExpression("date:property.birthday", propertyCalendar.getTime());
-        assertExpression("date:property.birthday:yyyyMMdd", "19760622");
-        assertExpression("date:property.birthday+24h:yyyyMMdd", "19760623");
+        assertExpression("${date:property.birthday}", propertyCalendar.getTime());
+        assertExpression("${date:property.birthday:yyyyMMdd}", "19760622");
+        assertExpression("${date:property.birthday+24h:yyyyMMdd}", "19760623");
 
         try {
-            assertExpression("date:yyyyMMdd", "19740420");
+            assertExpression("${date:yyyyMMdd}", "19740420");
             fail("Should thrown an exception");
         } catch (IllegalArgumentException e) {
             assertEquals("Command not supported for dateExpression: yyyyMMdd", e.getMessage());
@@ -585,8 +582,8 @@ public class SimpleTest extends LanguageTestSupport {
         cal.set(Calendar.MILLISECOND, 123);
         exchange.getIn().setHeader("birthday", cal.getTime());
 
-        assertExpression("date:header.birthday - 10s:yyyy-MM-dd'T'HH:mm:ss:SSS", "1974-04-20T08:55:37:123");
-        assertExpression("date:header.birthday:yyyy-MM-dd'T'HH:mm:ss:SSS", "1974-04-20T08:55:47:123");
+        assertExpression("${date:header.birthday - 10s:yyyy-MM-dd'T'HH:mm:ss:SSS}", "1974-04-20T08:55:37:123");
+        assertExpression("${date:header.birthday:yyyy-MM-dd'T'HH:mm:ss:SSS}", "1974-04-20T08:55:47:123");
     }
 
     @Test
@@ -597,8 +594,8 @@ public class SimpleTest extends LanguageTestSupport {
         cal.set(Calendar.MILLISECOND, 123);
         exchange.getIn().setHeader("birthday", cal.getTime());
 
-        assertExpression("date-with-timezone:header.birthday:GMT+8:yyyy-MM-dd'T'HH:mm:ss:SSS", "1974-04-20T08:55:47:123");
-        assertExpression("date-with-timezone:header.birthday:GMT:yyyy-MM-dd'T'HH:mm:ss:SSS", "1974-04-20T00:55:47:123");
+        assertExpression("${date-with-timezone:header.birthday:GMT+8:yyyy-MM-dd'T'HH:mm:ss:SSS}", "1974-04-20T08:55:47:123");
+        assertExpression("${date-with-timezone:header.birthday:GMT:yyyy-MM-dd'T'HH:mm:ss:SSS}", "1974-04-20T00:55:47:123");
     }
 
     @Test
@@ -616,7 +613,7 @@ public class SimpleTest extends LanguageTestSupport {
     @Test
     public void testLanguagesInContext() throws Exception {
         // evaluate so we know there is 1 language in the context
-        assertExpression("id", exchange.getIn().getMessageId());
+        assertExpression("${id}", exchange.getIn().getMessageId());
 
         assertEquals(1, context.getLanguageNames().size());
         assertEquals("simple", context.getLanguageNames().get(0));
@@ -656,15 +653,15 @@ public class SimpleTest extends LanguageTestSupport {
 
     @Test
     public void testPredicates() throws Exception {
-        assertPredicate("body");
-        assertPredicate("header.foo");
-        assertPredicate("header.madeUpHeader", false);
+        assertPredicate("${body}");
+        assertPredicate("${header.foo}");
+        assertPredicate("${header.madeUpHeader}", false);
     }
 
     @Test
     public void testExceptionMessage() throws Exception {
         exchange.setException(new IllegalArgumentException("Just testing"));
-        assertExpression("exception.message", "Just testing");
+        assertExpression("${exception.message}", "Just testing");
         assertExpression("Hello ${exception.message} World", "Hello Just testing World");
     }
 
@@ -672,7 +669,7 @@ public class SimpleTest extends LanguageTestSupport {
     public void testExceptionStacktrace() throws Exception {
         exchange.setException(new IllegalArgumentException("Just testing"));
 
-        String out = SimpleLanguage.simple("exception.stacktrace").evaluate(exchange, String.class);
+        String out = SimpleLanguage.simple("${exception.stacktrace}").evaluate(exchange, String.class);
         assertNotNull(out);
         assertTrue(out.startsWith("java.lang.IllegalArgumentException: Just testing"));
         assertTrue(out.contains("at org.apache.camel.language."));
@@ -682,7 +679,7 @@ public class SimpleTest extends LanguageTestSupport {
     public void testException() throws Exception {
         exchange.setException(new IllegalArgumentException("Just testing"));
 
-        Exception out = SimpleLanguage.simple("exception").evaluate(exchange, Exception.class);
+        Exception out = SimpleLanguage.simple("${exception}").evaluate(exchange, Exception.class);
         assertNotNull(out);
         assertIsInstanceOf(IllegalArgumentException.class, out);
         assertEquals("Just testing", out.getMessage());
@@ -740,10 +737,6 @@ public class SimpleTest extends LanguageTestSupport {
         // set an empty body
         exchange.getIn().setBody(null);
 
-        assertExpression("header.foo", "abc");
-        assertExpression("headers.foo", "abc");
-        assertExpression("in.header.foo", "abc");
-        assertExpression("in.headers.foo", "abc");
         assertExpression("${header.foo}", "abc");
         assertExpression("${headers.foo}", "abc");
         assertExpression("${in.header.foo}", "abc");
@@ -752,7 +745,6 @@ public class SimpleTest extends LanguageTestSupport {
 
     @Test
     public void testHeadersWithBracket() throws Exception {
-        assertExpression("headers[foo]", "abc");
         assertExpression("${headers[foo]}", "abc");
         assertExpression("${in.headers[foo]}", "abc");
     }
@@ -767,7 +759,6 @@ public class SimpleTest extends LanguageTestSupport {
 
     private void assertOnglOnHeadersWithSquareBrackets(String key) {
         exchange.getIn().setHeader(key, new OrderLine(123, "Camel in Action"));
-        assertExpression("headers[" + key + "].name", "Camel in Action");
         assertExpression("${headers[" + key + "].name}", "Camel in Action");
         assertExpression("${in.headers[" + key + "].name}", "Camel in Action");
         assertExpression("${in.headers['" + key + "'].name}", "Camel in Action");
@@ -783,8 +774,7 @@ public class SimpleTest extends LanguageTestSupport {
 
     public void assertOnglOnExchangePropertiesWithBracket(String key) throws Exception {
         exchange.setProperty(key, new OrderLine(123, "Camel in Action"));
-        assertExpression("exchangeProperty[" + key + "].name", "Camel in Action");
-        assertExpression("${exchangeProperty[" + key + "].name}", "Camel in Action");
+                assertExpression("${exchangeProperty[" + key + "].name}", "Camel in Action");
         assertExpression("${exchangeProperty['" + key + "'].name}", "Camel in Action");
     }
 
@@ -806,9 +796,7 @@ public class SimpleTest extends LanguageTestSupport {
         Map<String, Object> headers = exchange.getIn().getHeaders();
         assertEquals(2, headers.size());
 
-        assertExpression("headers", headers);
         assertExpression("${headers}", headers);
-        assertExpression("in.headers", headers);
         assertExpression("${in.headers}", headers);
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleWhiteSpaceTest.java b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleWhiteSpaceTest.java
index 87fb01a..a33e7bc 100644
--- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleWhiteSpaceTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleWhiteSpaceTest.java
@@ -29,31 +29,31 @@ public class SimpleWhiteSpaceTest extends LanguageTestSupport {
     @Test
     public void testExpressionWithSpace() {
         exchange.getIn().setBody("some text");
-        assertPredicate("${in.body} contains 'some' and ${in.body} contains 'text'", true);
+        assertPredicate("${in.body} contains 'some' && ${in.body} contains 'text'", true);
     }
 
     @Test
     public void testExpressionWithTabs() {
         exchange.getIn().setBody("some text");
-        assertPredicate("${in.body} contains 'some' and\t${in.body} contains 'text'", true);
+        assertPredicate("${in.body} contains 'some' &&\t${in.body} contains 'text'", true);
     }
 
     @Test
     public void testUnixMultiLineExpression() {
         exchange.getIn().setBody("some text");
-        assertPredicate("${in.body} contains 'some' and\n${in.body} contains 'text'", true);
+        assertPredicate("${in.body} contains 'some' &&\n${in.body} contains 'text'", true);
     }
 
     @Test
     public void testWindowsMultiLineExpression() {
         exchange.getIn().setBody("some text");
-        assertPredicate("${in.body} contains 'some' and\r\n${in.body} contains 'text'", true);
+        assertPredicate("${in.body} contains 'some' &&\r\n${in.body} contains 'text'", true);
     }
 
     @Test
     public void testMacMultiLineExpression() {
         exchange.getIn().setBody("some text");
-        assertPredicate("${in.body} contains 'some' and\r${in.body} contains 'text'", true);
+        assertPredicate("${in.body} contains 'some' &&\r${in.body} contains 'text'", true);
     }
 
     @Test
diff --git a/camel-core/src/test/java/org/apache/camel/processor/CorrectRouteIdTest.java b/camel-core/src/test/java/org/apache/camel/processor/CorrectRouteIdTest.java
index f17b175..17d17f4 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/CorrectRouteIdTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/CorrectRouteIdTest.java
@@ -39,18 +39,18 @@ public class CorrectRouteIdTest extends ContextTestSupport {
             @Override
             public void configure() throws Exception {
                 from("direct:foo").routeId("foo")
-                    .setHeader("foo").simple("routeId")
+                    .setHeader("foo").simple("${routeId}")
                     .to("mock:foo")
                     .to("seda:bar")
                     .to("mock:result");
 
                 from("seda:bar").routeId("bar")
-                    .setHeader("bar").simple("routeId")
+                    .setHeader("bar").simple("${routeId}")
                     .to("mock:bar")
                     .to("direct:baz");
 
                 from("direct:baz").routeId("baz")
-                    .setHeader("baz").simple("routeId")
+                    .setHeader("baz").simple("${routeId}")
                     .to("mock:baz");
             }
         };
diff --git a/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java b/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java
index e87fd7f..34a7ed5 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/SetBodyProcessorTest.java
@@ -86,7 +86,7 @@ public class SetBodyProcessorTest extends ContextTestSupport {
                     .to("mock:result");
                 
                 from("direct:start2")
-                    .setBody(simple("header.text.replace('a','b')")).to("mock:test");
+                    .setBody(simple("${header.text.replace('a','b')}")).to("mock:test");
             }
         };
     }
diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java
index 15f0531..60bf1cd 100644
--- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java
@@ -42,7 +42,7 @@ public class DumpModelAsXmlSplitBodyRouteTest extends ContextTestSupport {
         assertEquals(1, nodes.getLength());
         Element node = (Element)nodes.item(0);
         assertNotNull("Node <simple> expected to be instanceof Element", node);
-        assertEquals("body", node.getTextContent());
+        assertEquals("${body}", node.getTextContent());
 
         nodes = doc.getElementsByTagName("split");
         assertEquals(1, nodes.getLength());


[camel] 22/44: Move StatefulService#getVersion 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 sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2a99223b91e14f41ff2c5f841ea7bfba669df02f
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Sep 28 11:55:14 2018 +0200

    Move StatefulService#getVersion to DefaultCamelContext
---
 .../java/org/apache/camel/StatefulService.java     |  7 ---
 .../org/apache/camel/impl/DefaultCamelContext.java | 51 ++++++++++++++++++++++
 .../org/apache/camel/support/ServiceSupport.java   | 40 -----------------
 3 files changed, 51 insertions(+), 47 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/StatefulService.java b/camel-core/src/main/java/org/apache/camel/StatefulService.java
index 6a9ab78..7390254 100644
--- a/camel-core/src/main/java/org/apache/camel/StatefulService.java
+++ b/camel-core/src/main/java/org/apache/camel/StatefulService.java
@@ -71,11 +71,4 @@ public interface StatefulService extends SuspendableService, ShutdownableService
      */
     boolean isRunAllowed();
 
-    /**
-     * Returns the version of this service
-     *
-     * @return the version
-     */
-    String getVersion();
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 9224f40..2d04a78 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -205,6 +205,7 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
 @SuppressWarnings("deprecation")
 public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, ManagedCamelContext, Suspendable {
     private final Logger log = LoggerFactory.getLogger(getClass());
+    private String version;
     private final AtomicBoolean vetoStated = new AtomicBoolean();
     private JAXBContext jaxbContext;
     private CamelContextNameStrategy nameStrategy = createCamelContextNameStrategy();
@@ -2928,6 +2929,56 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return new Date().getTime() - startDate.getTime();
     }
 
+    public String getVersion() {
+        if (version == null) {
+            synchronized (this) {
+                if (version == null) {
+                    version = doGetVersion();
+                }
+            }
+        }
+        return version;
+    }
+
+    private String doGetVersion() {
+        String version = null;
+
+        InputStream is = null;
+        // try to load from maven properties first
+        try {
+            Properties p = new Properties();
+            is = getClass().getResourceAsStream("/META-INF/maven/org.apache.camel/camel-core/pom.properties");
+            if (is != null) {
+                p.load(is);
+                version = p.getProperty("version", "");
+            }
+        } catch (Exception e) {
+            // ignore
+        } finally {
+            if (is != null) {
+                IOHelper.close(is);
+            }
+        }
+
+        // fallback to using Java API
+        if (version == null) {
+            Package aPackage = getClass().getPackage();
+            if (aPackage != null) {
+                version = aPackage.getImplementationVersion();
+                if (version == null) {
+                    version = aPackage.getSpecificationVersion();
+                }
+            }
+        }
+
+        if (version == null) {
+            // we could not compute the version so use a blank
+            version = "";
+        }
+
+        return version;
+    }
+
     @Override
     protected void doSuspend() throws Exception {
         EventHelper.notifyCamelContextSuspending(this);
diff --git a/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java b/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
index e4e4df7..4667ee3 100644
--- a/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
@@ -336,44 +336,4 @@ public abstract class ServiceSupport implements StatefulService {
         // noop
     }
 
-    @Override
-    public synchronized String getVersion() {
-        if (version != null) {
-            return version;
-        }
-        InputStream is = null;
-        // try to load from maven properties first
-        try {
-            Properties p = new Properties();
-            is = getClass().getResourceAsStream("/META-INF/maven/org.apache.camel/camel-core/pom.properties");
-            if (is != null) {
-                p.load(is);
-                version = p.getProperty("version", "");
-            }
-        } catch (Exception e) {
-            // ignore
-        } finally {
-            if (is != null) {
-                IOHelper.close(is);
-            }
-        }
-
-        // fallback to using Java API
-        if (version == null) {
-            Package aPackage = getClass().getPackage();
-            if (aPackage != null) {
-                version = aPackage.getImplementationVersion();
-                if (version == null) {
-                    version = aPackage.getSpecificationVersion();
-                }
-            }
-        }
-
-        if (version == null) {
-            // we could not compute the version so use a blank
-            version = "";
-        }
-
-        return version;
-    }
 }


[camel] 18/44: [CAMEL-12818] Remove deprecated stuff

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e6b2b75257c8ebd006b838f2b452a70c7e5ffe08
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 00:34:51 2018 +0200

    [CAMEL-12818] Remove deprecated stuff
---
 .../org/apache/camel/processor/BatchProcessor.java | 498 ---------------------
 .../org/apache/camel/processor/Resequencer.java    | 458 ++++++++++++++++++-
 2 files changed, 453 insertions(+), 503 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java
deleted file mode 100644
index 1e0a2e5..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java
+++ /dev/null
@@ -1,498 +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.processor;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.AsyncProcessor;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelExchangeException;
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
-import org.apache.camel.Navigate;
-import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.spi.IdAware;
-import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A base class for any kind of {@link Processor} which implements some kind of batch processing.
- * 
- * @version 
- * @deprecated may be removed in the future when we overhaul the resequencer EIP
- */
-@Deprecated
-public class BatchProcessor extends ServiceSupport implements AsyncProcessor, Navigate<Processor>, IdAware {
-
-    public static final long DEFAULT_BATCH_TIMEOUT = 1000L;
-    public static final int DEFAULT_BATCH_SIZE = 100;
-
-    private static final Logger LOG = LoggerFactory.getLogger(BatchProcessor.class);
-
-    private String id;
-    private long batchTimeout = DEFAULT_BATCH_TIMEOUT;
-    private int batchSize = DEFAULT_BATCH_SIZE;
-    private int outBatchSize;
-    private boolean groupExchanges;
-    private boolean batchConsumer;
-    private boolean ignoreInvalidExchanges;
-    private boolean reverse;
-    private boolean allowDuplicates;
-    private Predicate completionPredicate;
-    private Expression expression;
-
-    private final CamelContext camelContext;
-    private final Processor processor;
-    private final Collection<Exchange> collection;
-    private ExceptionHandler exceptionHandler;
-
-    private final BatchSender sender;
-
-    public BatchProcessor(CamelContext camelContext, Processor processor, Collection<Exchange> collection, Expression expression) {
-        ObjectHelper.notNull(camelContext, "camelContext");
-        ObjectHelper.notNull(processor, "processor");
-        ObjectHelper.notNull(collection, "collection");
-        ObjectHelper.notNull(expression, "expression");
-
-        // wrap processor in UnitOfWork so what we send out of the batch runs in a UoW
-        this.camelContext = camelContext;
-        this.processor = processor;
-        this.collection = collection;
-        this.expression = expression;
-        this.sender = new BatchSender();
-        this.exceptionHandler = new LoggingExceptionHandler(camelContext, getClass());
-    }
-
-    @Override
-    public String toString() {
-        return "BatchProcessor[to: " + processor + "]";
-    }
-
-    // Properties
-    // -------------------------------------------------------------------------
-
-
-    public Expression getExpression() {
-        return expression;
-    }
-
-    public ExceptionHandler getExceptionHandler() {
-        return exceptionHandler;
-    }
-
-    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
-        this.exceptionHandler = exceptionHandler;
-    }
-
-    public int getBatchSize() {
-        return batchSize;
-    }
-
-    /**
-     * Sets the <b>in</b> batch size. This is the number of incoming exchanges that this batch processor will
-     * process before its completed. The default value is {@link #DEFAULT_BATCH_SIZE}.
-     * 
-     * @param batchSize the size
-     */
-    public void setBatchSize(int batchSize) {
-        // setting batch size to 0 or negative is like disabling it, so we set it as the max value
-        // as the code logic is dependent on a batch size having 1..n value
-        if (batchSize <= 0) {
-            LOG.debug("Disabling batch size, will only be triggered by timeout");
-            this.batchSize = Integer.MAX_VALUE;
-        } else {
-            this.batchSize = batchSize;
-        }
-    }
-
-    public int getOutBatchSize() {
-        return outBatchSize;
-    }
-
-    /**
-     * Sets the <b>out</b> batch size. If the batch processor holds more exchanges than this out size then the
-     * completion is triggered. Can for instance be used to ensure that this batch is completed when a certain
-     * number of exchanges has been collected. By default this feature is <b>not</b> enabled.
-     * 
-     * @param outBatchSize the size
-     */
-    public void setOutBatchSize(int outBatchSize) {
-        this.outBatchSize = outBatchSize;
-    }
-
-    public long getBatchTimeout() {
-        return batchTimeout;
-    }
-
-    public void setBatchTimeout(long batchTimeout) {
-        this.batchTimeout = batchTimeout;
-    }
-
-    public boolean isGroupExchanges() {
-        return groupExchanges;
-    }
-
-    public void setGroupExchanges(boolean groupExchanges) {
-        this.groupExchanges = groupExchanges;
-    }
-
-    public boolean isBatchConsumer() {
-        return batchConsumer;
-    }
-
-    public void setBatchConsumer(boolean batchConsumer) {
-        this.batchConsumer = batchConsumer;
-    }
-
-    public boolean isIgnoreInvalidExchanges() {
-        return ignoreInvalidExchanges;
-    }
-
-    public void setIgnoreInvalidExchanges(boolean ignoreInvalidExchanges) {
-        this.ignoreInvalidExchanges = ignoreInvalidExchanges;
-    }
-
-    public boolean isReverse() {
-        return reverse;
-    }
-
-    public void setReverse(boolean reverse) {
-        this.reverse = reverse;
-    }
-
-    public boolean isAllowDuplicates() {
-        return allowDuplicates;
-    }
-
-    public void setAllowDuplicates(boolean allowDuplicates) {
-        this.allowDuplicates = allowDuplicates;
-    }
-
-    public Predicate getCompletionPredicate() {
-        return completionPredicate;
-    }
-
-    public void setCompletionPredicate(Predicate completionPredicate) {
-        this.completionPredicate = completionPredicate;
-    }
-
-    public Processor getProcessor() {
-        return processor;
-    }
-
-    public List<Processor> next() {
-        if (!hasNext()) {
-            return null;
-        }
-        List<Processor> answer = new ArrayList<>(1);
-        answer.add(processor);
-        return answer;
-    }
-
-    public boolean hasNext() {
-        return processor != null;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    /**
-     * A strategy method to decide if the "in" batch is completed. That is, whether the resulting exchanges in
-     * the in queue should be drained to the "out" collection.
-     */
-    private boolean isInBatchCompleted(int num) {
-        return num >= batchSize;
-    }
-
-    /**
-     * A strategy method to decide if the "out" batch is completed. That is, whether the resulting exchange in
-     * the out collection should be sent.
-     */
-    private boolean isOutBatchCompleted() {
-        if (outBatchSize == 0) {
-            // out batch is disabled, so go ahead and send.
-            return true;
-        }
-        return collection.size() > 0 && collection.size() >= outBatchSize;
-    }
-
-    /**
-     * Strategy Method to process an exchange in the batch. This method allows derived classes to perform
-     * custom processing before or after an individual exchange is processed
-     */
-    protected void processExchange(Exchange exchange) throws Exception {
-        processor.process(exchange);
-        if (exchange.getException() != null) {
-            getExceptionHandler().handleException("Error processing aggregated exchange: " + exchange, exchange.getException());
-        }
-    }
-
-    protected void doStart() throws Exception {
-        ServiceHelper.startServices(processor);
-        sender.start();
-    }
-
-    protected void doStop() throws Exception {
-        sender.cancel();
-        ServiceHelper.stopServices(processor);
-        collection.clear();
-    }
-
-    public void process(Exchange exchange) throws Exception {
-        AsyncProcessorHelper.process(this, exchange);
-    }
-
-    /**
-     * Enqueues an exchange for later batch processing.
-     */
-    public boolean process(Exchange exchange, AsyncCallback callback) {
-        try {
-            // if batch consumer is enabled then we need to adjust the batch size
-            // with the size from the batch consumer
-            if (isBatchConsumer()) {
-                int size = exchange.getProperty(Exchange.BATCH_SIZE, Integer.class);
-                if (batchSize != size) {
-                    batchSize = size;
-                    LOG.trace("Using batch consumer completion, so setting batch size to: {}", batchSize);
-                }
-            }
-
-            // validate that the exchange can be used
-            if (!isValid(exchange)) {
-                if (isIgnoreInvalidExchanges()) {
-                    LOG.debug("Invalid Exchange. This Exchange will be ignored: {}", exchange);
-                } else {
-                    throw new CamelExchangeException("Exchange is not valid to be used by the BatchProcessor", exchange);
-                }
-            } else {
-                // exchange is valid so enqueue the exchange
-                sender.enqueueExchange(exchange);
-            }
-        } catch (Throwable e) {
-            exchange.setException(e);
-        }
-        callback.done(true);
-        return true;
-    }
-
-    /**
-     * Is the given exchange valid to be used.
-     *
-     * @param exchange the given exchange
-     * @return <tt>true</tt> if valid, <tt>false</tt> otherwise
-     */
-    private boolean isValid(Exchange exchange) {
-        Object result = null;
-        try {
-            result = expression.evaluate(exchange, Object.class);
-        } catch (Exception e) {
-            // ignore
-        }
-        return result != null;
-    }
-
-    /**
-     * Sender thread for queued-up exchanges.
-     */
-    private class BatchSender extends Thread {
-
-        private Queue<Exchange> queue;
-        private Lock queueLock = new ReentrantLock();
-        private final AtomicBoolean exchangeEnqueued = new AtomicBoolean();
-        private final Queue<String> completionPredicateMatched = new ConcurrentLinkedQueue<>();
-        private Condition exchangeEnqueuedCondition = queueLock.newCondition();
-
-        BatchSender() {
-            super(camelContext.getExecutorServiceManager().resolveThreadName("Batch Sender"));
-            this.queue = new LinkedList<>();
-        }
-
-        @Override
-        public void run() {
-            // Wait until one of either:
-            // * an exchange being queued;
-            // * the batch timeout expiring; or
-            // * the thread being cancelled.
-            //
-            // If an exchange is queued then we need to determine whether the
-            // batch is complete. If it is complete then we send out the batched
-            // exchanges. Otherwise we move back into our wait state.
-            //
-            // If the batch times out then we send out the batched exchanges
-            // collected so far.
-            //
-            // If we receive an interrupt then all blocking operations are
-            // interrupted and our thread terminates.
-            //
-            // The goal of the following algorithm in terms of synchronisation
-            // is to provide fine grained locking i.e. retaining the lock only
-            // when required. Special consideration is given to releasing the
-            // lock when calling an overloaded method i.e. sendExchanges. 
-            // Unlocking is important as the process of sending out the exchanges
-            // would otherwise block new exchanges from being queued.
-
-            queueLock.lock();
-            try {
-                do {
-                    try {
-                        if (!exchangeEnqueued.get()) {
-                            LOG.trace("Waiting for new exchange to arrive or batchTimeout to occur after {} ms.", batchTimeout);
-                            exchangeEnqueuedCondition.await(batchTimeout, TimeUnit.MILLISECONDS);
-                        }
-
-                        // if the completion predicate was triggered then there is an exchange id which denotes when to complete
-                        String id = null;
-                        if (!completionPredicateMatched.isEmpty()) {
-                            id = completionPredicateMatched.poll();
-                        }
-
-                        if (id != null || !exchangeEnqueued.get()) {
-                            if (id != null) {
-                                LOG.trace("Collecting exchanges to be aggregated triggered by completion predicate");
-                            } else {
-                                LOG.trace("Collecting exchanges to be aggregated triggered by batch timeout");
-                            }
-                            drainQueueTo(collection, batchSize, id);
-                        } else {
-                            exchangeEnqueued.set(false);
-                            boolean drained = false;
-                            while (isInBatchCompleted(queue.size())) {
-                                drained = true;
-                                drainQueueTo(collection, batchSize, id);
-                            }
-                            if (drained) {
-                                LOG.trace("Collecting exchanges to be aggregated triggered by new exchanges received");
-                            }
-
-                            if (!isOutBatchCompleted()) {
-                                continue;
-                            }
-                        }
-
-                        queueLock.unlock();
-                        try {
-                            try {
-                                sendExchanges();
-                            } catch (Throwable t) {
-                                // a fail safe to handle all exceptions being thrown
-                                getExceptionHandler().handleException(t);
-                            }
-                        } finally {
-                            queueLock.lock();
-                        }
-
-                    } catch (InterruptedException e) {
-                        break;
-                    }
-
-                } while (isRunAllowed());
-
-            } finally {
-                queueLock.unlock();
-            }
-        }
-
-        /**
-         * This method should be called with queueLock held
-         */
-        private void drainQueueTo(Collection<Exchange> collection, int batchSize, String exchangeId) {
-            for (int i = 0; i < batchSize; ++i) {
-                Exchange e = queue.poll();
-                if (e != null) {
-                    try {
-                        collection.add(e);
-                    } catch (Exception t) {
-                        e.setException(t);
-                    } catch (Throwable t) {
-                        getExceptionHandler().handleException(t);
-                    }
-                    if (exchangeId != null && exchangeId.equals(e.getExchangeId())) {
-                        // this batch is complete so stop draining
-                        break;
-                    }
-                } else {
-                    break;
-                }
-            }
-        }
-
-        public void cancel() {
-            interrupt();
-        }
-
-        public void enqueueExchange(Exchange exchange) {
-            LOG.debug("Received exchange to be batched: {}", exchange);
-            queueLock.lock();
-            try {
-                // pre test whether the completion predicate matched
-                if (completionPredicate != null) {
-                    boolean matches = completionPredicate.matches(exchange);
-                    if (matches) {
-                        LOG.trace("Exchange matched completion predicate: {}", exchange);
-                        // add this exchange to the list of exchanges which marks the batch as complete
-                        completionPredicateMatched.add(exchange.getExchangeId());
-                    }
-                }
-                queue.add(exchange);
-                exchangeEnqueued.set(true);
-                exchangeEnqueuedCondition.signal();
-            } finally {
-                queueLock.unlock();
-            }
-        }
-        
-        private void sendExchanges() throws Exception {
-            Iterator<Exchange> iter = collection.iterator();
-            while (iter.hasNext()) {
-                Exchange exchange = iter.next();
-                iter.remove();
-                try {
-                    LOG.debug("Sending aggregated exchange: {}", exchange);
-                    processExchange(exchange);
-                } catch (Throwable t) {
-                    // must catch throwable to avoid growing memory
-                    getExceptionHandler().handleException("Error processing aggregated exchange: " + exchange, t);
-                }
-            }
-        }
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java b/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
index a462839..2188777 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
@@ -16,16 +16,40 @@
  */
 package org.apache.camel.processor;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Comparator;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CamelContext;
+import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
+import org.apache.camel.Navigate;
+import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.Traceable;
+import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.spi.IdAware;
+import org.apache.camel.support.LoggingExceptionHandler;
+import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.AsyncProcessorHelper;
 import org.apache.camel.util.ExpressionComparator;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.ServiceHelper;
 
 /**
  * An implementation of the <a href="http://camel.apache.org/resequencer.html">Resequencer</a>
@@ -33,10 +57,29 @@ import org.apache.camel.util.ExpressionComparator;
  *
  * @version 
  */
-@SuppressWarnings("deprecation")
-public class Resequencer extends BatchProcessor implements Traceable {
+public class Resequencer extends ServiceSupport implements AsyncProcessor, Navigate<Processor>, IdAware, Traceable {
 
-    // TODO: Rework to avoid using BatchProcessor
+    public static final long DEFAULT_BATCH_TIMEOUT = 1000L;
+    public static final int DEFAULT_BATCH_SIZE = 100;
+
+    private String id;
+    private long batchTimeout = DEFAULT_BATCH_TIMEOUT;
+    private int batchSize = DEFAULT_BATCH_SIZE;
+    private int outBatchSize;
+    private boolean groupExchanges;
+    private boolean batchConsumer;
+    private boolean ignoreInvalidExchanges;
+    private boolean reverse;
+    private boolean allowDuplicates;
+    private Predicate completionPredicate;
+    private Expression expression;
+
+    private final CamelContext camelContext;
+    private final Processor processor;
+    private final Collection<Exchange> collection;
+    private ExceptionHandler exceptionHandler;
+
+    private final BatchSender sender;
 
     public Resequencer(CamelContext camelContext, Processor processor, Expression expression) {
         this(camelContext, processor, createSet(expression, false, false), expression);
@@ -48,7 +91,18 @@ public class Resequencer extends BatchProcessor implements Traceable {
     }
 
     public Resequencer(CamelContext camelContext, Processor processor, Set<Exchange> collection, Expression expression) {
-        super(camelContext, processor, collection, expression);
+        ObjectHelper.notNull(camelContext, "camelContext");
+        ObjectHelper.notNull(processor, "processor");
+        ObjectHelper.notNull(collection, "collection");
+        ObjectHelper.notNull(expression, "expression");
+
+        // wrap processor in UnitOfWork so what we send out of the batch runs in a UoW
+        this.camelContext = camelContext;
+        this.processor = processor;
+        this.collection = collection;
+        this.expression = expression;
+        this.sender = new BatchSender();
+        this.exceptionHandler = new LoggingExceptionHandler(camelContext, getClass());
     }
 
     @Override
@@ -60,6 +114,139 @@ public class Resequencer extends BatchProcessor implements Traceable {
         return "resequencer";
     }
 
+    // Properties
+    // -------------------------------------------------------------------------
+
+
+    public Expression getExpression() {
+        return expression;
+    }
+
+    public ExceptionHandler getExceptionHandler() {
+        return exceptionHandler;
+    }
+
+    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
+        this.exceptionHandler = exceptionHandler;
+    }
+
+    public int getBatchSize() {
+        return batchSize;
+    }
+
+    /**
+     * Sets the <b>in</b> batch size. This is the number of incoming exchanges that this batch processor will
+     * process before its completed. The default value is {@link #DEFAULT_BATCH_SIZE}.
+     *
+     * @param batchSize the size
+     */
+    public void setBatchSize(int batchSize) {
+        // setting batch size to 0 or negative is like disabling it, so we set it as the max value
+        // as the code logic is dependent on a batch size having 1..n value
+        if (batchSize <= 0) {
+            log.debug("Disabling batch size, will only be triggered by timeout");
+            this.batchSize = Integer.MAX_VALUE;
+        } else {
+            this.batchSize = batchSize;
+        }
+    }
+
+    public int getOutBatchSize() {
+        return outBatchSize;
+    }
+
+    /**
+     * Sets the <b>out</b> batch size. If the batch processor holds more exchanges than this out size then the
+     * completion is triggered. Can for instance be used to ensure that this batch is completed when a certain
+     * number of exchanges has been collected. By default this feature is <b>not</b> enabled.
+     *
+     * @param outBatchSize the size
+     */
+    public void setOutBatchSize(int outBatchSize) {
+        this.outBatchSize = outBatchSize;
+    }
+
+    public long getBatchTimeout() {
+        return batchTimeout;
+    }
+
+    public void setBatchTimeout(long batchTimeout) {
+        this.batchTimeout = batchTimeout;
+    }
+
+    public boolean isGroupExchanges() {
+        return groupExchanges;
+    }
+
+    public void setGroupExchanges(boolean groupExchanges) {
+        this.groupExchanges = groupExchanges;
+    }
+
+    public boolean isBatchConsumer() {
+        return batchConsumer;
+    }
+
+    public void setBatchConsumer(boolean batchConsumer) {
+        this.batchConsumer = batchConsumer;
+    }
+
+    public boolean isIgnoreInvalidExchanges() {
+        return ignoreInvalidExchanges;
+    }
+
+    public void setIgnoreInvalidExchanges(boolean ignoreInvalidExchanges) {
+        this.ignoreInvalidExchanges = ignoreInvalidExchanges;
+    }
+
+    public boolean isReverse() {
+        return reverse;
+    }
+
+    public void setReverse(boolean reverse) {
+        this.reverse = reverse;
+    }
+
+    public boolean isAllowDuplicates() {
+        return allowDuplicates;
+    }
+
+    public void setAllowDuplicates(boolean allowDuplicates) {
+        this.allowDuplicates = allowDuplicates;
+    }
+
+    public Predicate getCompletionPredicate() {
+        return completionPredicate;
+    }
+
+    public void setCompletionPredicate(Predicate completionPredicate) {
+        this.completionPredicate = completionPredicate;
+    }
+
+    public Processor getProcessor() {
+        return processor;
+    }
+
+    public List<Processor> next() {
+        if (!hasNext()) {
+            return null;
+        }
+        List<Processor> answer = new ArrayList<>(1);
+        answer.add(processor);
+        return answer;
+    }
+
+    public boolean hasNext() {
+        return processor != null;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
     // Implementation methods
     //-------------------------------------------------------------------------
 
@@ -99,4 +286,265 @@ public class Resequencer extends BatchProcessor implements Traceable {
         return new TreeSet<>(answer);
     }
 
-}
+    /**
+     * A strategy method to decide if the "in" batch is completed. That is, whether the resulting exchanges in
+     * the in queue should be drained to the "out" collection.
+     */
+    private boolean isInBatchCompleted(int num) {
+        return num >= batchSize;
+    }
+
+    /**
+     * A strategy method to decide if the "out" batch is completed. That is, whether the resulting exchange in
+     * the out collection should be sent.
+     */
+    private boolean isOutBatchCompleted() {
+        if (outBatchSize == 0) {
+            // out batch is disabled, so go ahead and send.
+            return true;
+        }
+        return collection.size() > 0 && collection.size() >= outBatchSize;
+    }
+
+    /**
+     * Strategy Method to process an exchange in the batch. This method allows derived classes to perform
+     * custom processing before or after an individual exchange is processed
+     */
+    protected void processExchange(Exchange exchange) throws Exception {
+        processor.process(exchange);
+        if (exchange.getException() != null) {
+            getExceptionHandler().handleException("Error processing aggregated exchange: " + exchange, exchange.getException());
+        }
+    }
+
+    protected void doStart() throws Exception {
+        ServiceHelper.startService(processor);
+        sender.start();
+    }
+
+    protected void doStop() throws Exception {
+        sender.cancel();
+        ServiceHelper.stopService(processor);
+        collection.clear();
+    }
+
+    public void process(Exchange exchange) throws Exception {
+        AsyncProcessorHelper.process(this, exchange);
+    }
+
+    /**
+     * Enqueues an exchange for later batch processing.
+     */
+    public boolean process(Exchange exchange, AsyncCallback callback) {
+        try {
+            // if batch consumer is enabled then we need to adjust the batch size
+            // with the size from the batch consumer
+            if (isBatchConsumer()) {
+                int size = exchange.getProperty(Exchange.BATCH_SIZE, Integer.class);
+                if (batchSize != size) {
+                    batchSize = size;
+                    log.trace("Using batch consumer completion, so setting batch size to: {}", batchSize);
+                }
+            }
+
+            // validate that the exchange can be used
+            if (!isValid(exchange)) {
+                if (isIgnoreInvalidExchanges()) {
+                    log.debug("Invalid Exchange. This Exchange will be ignored: {}", exchange);
+                } else {
+                    throw new CamelExchangeException("Exchange is not valid to be used by the BatchProcessor", exchange);
+                }
+            } else {
+                // exchange is valid so enqueue the exchange
+                sender.enqueueExchange(exchange);
+            }
+        } catch (Throwable e) {
+            exchange.setException(e);
+        }
+        callback.done(true);
+        return true;
+    }
+
+    /**
+     * Is the given exchange valid to be used.
+     *
+     * @param exchange the given exchange
+     * @return <tt>true</tt> if valid, <tt>false</tt> otherwise
+     */
+    private boolean isValid(Exchange exchange) {
+        Object result = null;
+        try {
+            result = expression.evaluate(exchange, Object.class);
+        } catch (Exception e) {
+            // ignore
+        }
+        return result != null;
+    }
+
+    /**
+     * Sender thread for queued-up exchanges.
+     */
+    private class BatchSender extends Thread {
+
+        private Queue<Exchange> queue;
+        private Lock queueLock = new ReentrantLock();
+        private final AtomicBoolean exchangeEnqueued = new AtomicBoolean();
+        private final Queue<String> completionPredicateMatched = new ConcurrentLinkedQueue<>();
+        private Condition exchangeEnqueuedCondition = queueLock.newCondition();
+
+        BatchSender() {
+            super(camelContext.getExecutorServiceManager().resolveThreadName("Batch Sender"));
+            this.queue = new LinkedList<>();
+        }
+
+        @Override
+        public void run() {
+            // Wait until one of either:
+            // * an exchange being queued;
+            // * the batch timeout expiring; or
+            // * the thread being cancelled.
+            //
+            // If an exchange is queued then we need to determine whether the
+            // batch is complete. If it is complete then we send out the batched
+            // exchanges. Otherwise we move back into our wait state.
+            //
+            // If the batch times out then we send out the batched exchanges
+            // collected so far.
+            //
+            // If we receive an interrupt then all blocking operations are
+            // interrupted and our thread terminates.
+            //
+            // The goal of the following algorithm in terms of synchronisation
+            // is to provide fine grained locking i.e. retaining the lock only
+            // when required. Special consideration is given to releasing the
+            // lock when calling an overloaded method i.e. sendExchanges.
+            // Unlocking is important as the process of sending out the exchanges
+            // would otherwise block new exchanges from being queued.
+
+            queueLock.lock();
+            try {
+                do {
+                    try {
+                        if (!exchangeEnqueued.get()) {
+                            log.trace("Waiting for new exchange to arrive or batchTimeout to occur after {} ms.", batchTimeout);
+                            exchangeEnqueuedCondition.await(batchTimeout, TimeUnit.MILLISECONDS);
+                        }
+
+                        // if the completion predicate was triggered then there is an exchange id which denotes when to complete
+                        String id = null;
+                        if (!completionPredicateMatched.isEmpty()) {
+                            id = completionPredicateMatched.poll();
+                        }
+
+                        if (id != null || !exchangeEnqueued.get()) {
+                            if (id != null) {
+                                log.trace("Collecting exchanges to be aggregated triggered by completion predicate");
+                            } else {
+                                log.trace("Collecting exchanges to be aggregated triggered by batch timeout");
+                            }
+                            drainQueueTo(collection, batchSize, id);
+                        } else {
+                            exchangeEnqueued.set(false);
+                            boolean drained = false;
+                            while (isInBatchCompleted(queue.size())) {
+                                drained = true;
+                                drainQueueTo(collection, batchSize, id);
+                            }
+                            if (drained) {
+                                log.trace("Collecting exchanges to be aggregated triggered by new exchanges received");
+                            }
+
+                            if (!isOutBatchCompleted()) {
+                                continue;
+                            }
+                        }
+
+                        queueLock.unlock();
+                        try {
+                            try {
+                                sendExchanges();
+                            } catch (Throwable t) {
+                                // a fail safe to handle all exceptions being thrown
+                                getExceptionHandler().handleException(t);
+                            }
+                        } finally {
+                            queueLock.lock();
+                        }
+
+                    } catch (InterruptedException e) {
+                        break;
+                    }
+
+                } while (isRunAllowed());
+
+            } finally {
+                queueLock.unlock();
+            }
+        }
+
+        /**
+         * This method should be called with queueLock held
+         */
+        private void drainQueueTo(Collection<Exchange> collection, int batchSize, String exchangeId) {
+            for (int i = 0; i < batchSize; ++i) {
+                Exchange e = queue.poll();
+                if (e != null) {
+                    try {
+                        collection.add(e);
+                    } catch (Exception t) {
+                        e.setException(t);
+                    } catch (Throwable t) {
+                        getExceptionHandler().handleException(t);
+                    }
+                    if (exchangeId != null && exchangeId.equals(e.getExchangeId())) {
+                        // this batch is complete so stop draining
+                        break;
+                    }
+                } else {
+                    break;
+                }
+            }
+        }
+
+        public void cancel() {
+            interrupt();
+        }
+
+        public void enqueueExchange(Exchange exchange) {
+            log.debug("Received exchange to be batched: {}", exchange);
+            queueLock.lock();
+            try {
+                // pre test whether the completion predicate matched
+                if (completionPredicate != null) {
+                    boolean matches = completionPredicate.matches(exchange);
+                    if (matches) {
+                        log.trace("Exchange matched completion predicate: {}", exchange);
+                        // add this exchange to the list of exchanges which marks the batch as complete
+                        completionPredicateMatched.add(exchange.getExchangeId());
+                    }
+                }
+                queue.add(exchange);
+                exchangeEnqueued.set(true);
+                exchangeEnqueuedCondition.signal();
+            } finally {
+                queueLock.unlock();
+            }
+        }
+
+        private void sendExchanges() throws Exception {
+            Iterator<Exchange> iter = collection.iterator();
+            while (iter.hasNext()) {
+                Exchange exchange = iter.next();
+                iter.remove();
+                try {
+                    log.debug("Sending aggregated exchange: {}", exchange);
+                    processExchange(exchange);
+                } catch (Throwable t) {
+                    // must catch throwable to avoid growing memory
+                    getExceptionHandler().handleException("Error processing aggregated exchange: " + exchange, t);
+                }
+            }
+        }
+    }
+
+}
\ No newline at end of file


[camel] 23/44: Simplify startService / stopService helpers

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 866ba7e33d8d17fc38c52186f688c97de11f36ca
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Sep 28 12:01:48 2018 +0200

    Simplify startService / stopService helpers
---
 .../component/dataformat/DataFormatEndpoint.java   |  4 +-
 .../camel/component/direct/DirectComponent.java    |  2 +-
 .../camel/component/file/GenericFileEndpoint.java  |  4 +-
 .../apache/camel/component/rest/RestProducer.java  |  4 +-
 .../rest/RestProducerBindingProcessor.java         |  4 +-
 .../java/org/apache/camel/impl/ConsumerCache.java  |  2 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |  4 +-
 .../org/apache/camel/impl/DefaultConsumer.java     |  4 +-
 .../org/apache/camel/impl/DefaultDebugger.java     |  2 +-
 .../apache/camel/impl/DefaultEndpointRegistry.java |  4 +-
 .../camel/impl/DefaultRuntimeEndpointRegistry.java |  4 +-
 .../camel/impl/DefaultTransformerRegistry.java     |  4 +-
 .../camel/impl/DefaultValidatorRegistry.java       |  4 +-
 .../apache/camel/impl/InterceptSendToEndpoint.java |  4 +-
 .../java/org/apache/camel/impl/ProducerCache.java  |  2 +-
 .../java/org/apache/camel/impl/RouteService.java   |  2 +-
 .../camel/impl/SubscribeMethodProcessor.java       |  4 +-
 .../management/DefaultManagementStrategy.java      |  2 +-
 .../apache/camel/processor/ChoiceProcessor.java    |  4 +-
 .../camel/processor/ClaimCheckProcessor.java       |  4 +-
 .../camel/processor/DelegateAsyncProcessor.java    |  4 +-
 .../apache/camel/processor/DelegateProcessor.java  |  4 +-
 .../camel/processor/DelegateSyncProcessor.java     |  2 +-
 .../java/org/apache/camel/processor/Enricher.java  |  4 +-
 .../InterceptorToAsyncProcessorBridge.java         |  4 +-
 .../apache/camel/processor/MulticastProcessor.java |  6 +-
 .../org/apache/camel/processor/PollEnricher.java   |  4 +-
 .../org/apache/camel/processor/RecipientList.java  |  4 +-
 .../camel/processor/RedeliveryErrorHandler.java    |  2 +-
 .../org/apache/camel/processor/RoutingSlip.java    |  4 +-
 .../camel/processor/SendDynamicProcessor.java      |  4 +-
 .../org/apache/camel/processor/SendProcessor.java  |  2 +-
 .../apache/camel/processor/StreamResequencer.java  |  4 +-
 .../org/apache/camel/processor/TryProcessor.java   |  4 +-
 .../processor/aggregate/AggregateProcessor.java    |  4 +-
 .../processor/idempotent/IdempotentConsumer.java   |  4 +-
 .../processor/interceptor/DefaultChannel.java      |  4 +-
 .../loadbalancer/LoadBalancerSupport.java          |  4 +-
 .../apache/camel/support/ChildServiceSupport.java  |  4 +-
 .../camel/util/AsyncProcessorConverterHelper.java  |  4 +-
 .../java/org/apache/camel/util/ServiceHelper.java  | 80 +++++++---------------
 .../directvm/AbstractDirectVmTestSupport.java      |  4 +-
 .../directvm/DirectVmConsumerExpressionTest.java   |  8 +--
 .../camel/component/vm/AbstractVmTestSupport.java  |  4 +-
 .../camel/processor/StreamResequencerTest.java     |  2 +-
 .../aggregator/AbstractDistributedTest.java        |  2 +-
 .../cdi/transaction/TransactionErrorHandler.java   |  2 +-
 .../org/apache/camel/component/jpa/JpaTest.java    |  8 +--
 .../jpa/JpaWithNamedQueryAndParametersTest.java    |  4 +-
 .../camel/component/jpa/JpaWithNamedQueryTest.java |  4 +-
 .../processor/jpa/JpaProducerWithQueryTest.java    |  4 +-
 .../netty4/http/DefaultNettySharedHttpServer.java  |  6 +-
 .../component/netty4/http/NettyHttpComponent.java  |  2 +-
 .../camel/component/netty4/NettyConsumer.java      |  2 +-
 .../DualCamelContextEndpointOutsideTest.java       |  2 +-
 .../apache/camel/component/xmpp/XmppComponent.java |  2 +-
 .../java/org/apache/camel/zipkin/ZipkinTracer.java |  2 +-
 .../MasterEndpointFailoverTest.java                | 14 ++--
 .../zookeepermaster/MasterEndpointTest.java        |  2 +-
 .../zookeepermaster/MasterQuartz2EndpointTest.java |  2 +-
 .../component/connector/ConnectorProducer.java     |  4 +-
 61 files changed, 134 insertions(+), 170 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java
index 9bc4cf9..e8e134c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java
@@ -130,13 +130,13 @@ public class DataFormatEndpoint extends DefaultEndpoint {
             processor = unmarshal;
         }
 
-        ServiceHelper.startServices(dataFormat, processor);
+        ServiceHelper.startService(dataFormat, processor);
         super.doStart();
     }
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processor, dataFormat);
+        ServiceHelper.stopService(processor, dataFormat);
         super.doStop();
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
index 578dde4..b667f7b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
@@ -53,7 +53,7 @@ public class DirectComponent extends DefaultComponent {
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(consumers);
+        ServiceHelper.stopService(consumers);
         consumers.clear();
         super.doStop();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
index fac9e7e..bf95c71 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
@@ -1516,13 +1516,13 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
         if (idempotentRepository != null) {
             getCamelContext().addService(idempotentRepository, true);
         }
-        ServiceHelper.startServices(inProgressRepository);
+        ServiceHelper.startService(inProgressRepository);
         super.doStart();
     }
 
     @Override
     protected void doStop() throws Exception {
         super.doStop();
-        ServiceHelper.stopServices(inProgressRepository);
+        ServiceHelper.stopService(inProgressRepository);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
index 83b36cc..7cbf42d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
@@ -231,13 +231,13 @@ public class RestProducer extends DefaultAsyncProducer {
         // create binding processor (returns null if binding is not in use)
         binding = createBindingProcessor();
 
-        ServiceHelper.startServices(binding, producer);
+        ServiceHelper.startService(binding, producer);
     }
 
     @Override
     protected void doStop() throws Exception {
         super.doStop();
-        ServiceHelper.stopServices(producer, binding);
+        ServiceHelper.stopService(producer, binding);
     }
 
     protected AsyncProcessor createBindingProcessor() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java
index eeb2e83..fc6fbd7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java
@@ -110,12 +110,12 @@ public class RestProducerBindingProcessor extends DelegateAsyncProcessor {
         if (xmlUnmarshal instanceof CamelContextAware) {
             ((CamelContextAware) xmlUnmarshal).setCamelContext(camelContext);
         }
-        ServiceHelper.startServices(jsonMarshal, jsonUnmarshal, xmlMarshal, xmlUnmarshal);
+        ServiceHelper.startService(jsonMarshal, jsonUnmarshal, xmlMarshal, xmlUnmarshal);
     }
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(jsonMarshal, jsonUnmarshal, xmlMarshal, xmlUnmarshal);
+        ServiceHelper.stopService(jsonMarshal, jsonUnmarshal, xmlMarshal, xmlUnmarshal);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
index 2e07875..351d0d0 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
@@ -250,7 +250,7 @@ public class ConsumerCache extends ServiceSupport {
             int max = maxCacheSize == 0 ? CamelContextHelper.getMaximumCachePoolSize(camelContext) : maxCacheSize;
             statistics = new DefaultEndpointUtilizationStatistics(max);
         }
-        ServiceHelper.startServices(consumers);
+        ServiceHelper.startService(consumers);
     }
 
     protected void doStop() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 2d04a78..4bfdb90 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -3071,7 +3071,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             log.info("Apache Camel {} (CamelContext: {}) is starting", getVersion(), getName());
 
             // Start the route controller
-            ServiceHelper.startServices(this.routeController);
+            ServiceHelper.startService(this.routeController);
 
             doNotStartRoutesOnFirstStart = !firstStartDone && !isAutoStartup();
 
@@ -3266,7 +3266,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         ServiceHelper.startService(managementStrategy);
 
         // start lifecycle strategies
-        ServiceHelper.startServices(lifecycleStrategies);
+        ServiceHelper.startService(lifecycleStrategies);
         Iterator<LifecycleStrategy> it = lifecycleStrategies.iterator();
         while (it.hasNext()) {
             LifecycleStrategy strategy = it.next();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
index 7066c35..c24701c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
@@ -137,12 +137,12 @@ public class DefaultConsumer extends ServiceSupport implements Consumer, RouteAw
 
     protected void doStop() throws Exception {
         log.debug("Stopping consumer: {}", this);
-        ServiceHelper.stopServices(processor);
+        ServiceHelper.stopService(processor);
     }
 
     protected void doStart() throws Exception {
         log.debug("Starting consumer: {}", this);
-        ServiceHelper.startServices(processor);
+        ServiceHelper.startService(processor);
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
index 9d19fa1..dcd0a21 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
@@ -353,7 +353,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
     public void stop() throws Exception {
         breakpoints.clear();
         singleSteps.clear();
-        ServiceHelper.stopServices(debugEventNotifier);
+        ServiceHelper.stopService(debugEventNotifier);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
index b9bc9a3..8ff1582 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
@@ -199,8 +199,8 @@ public class DefaultEndpointRegistry extends AbstractMap<EndpointKey, Endpoint>
 
     @Override
     public void stop() throws Exception {
-        ServiceHelper.stopServices(staticMap.values());
-        ServiceHelper.stopServices(values());
+        ServiceHelper.stopService(staticMap.values());
+        ServiceHelper.stopService(values());
         purge();
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java
index 17050a2..f799a79 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java
@@ -201,13 +201,13 @@ public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport impleme
         } else {
             log.info("Runtime endpoint registry is in normal mode gathering information of all incoming and outgoing endpoints (cache limit: {})", limit);
         }
-        ServiceHelper.startServices(inputUtilization, outputUtilization);
+        ServiceHelper.startService(inputUtilization, outputUtilization);
     }
 
     @Override
     protected void doStop() throws Exception {
         clear();
-        ServiceHelper.stopServices(inputUtilization, outputUtilization);
+        ServiceHelper.stopService(inputUtilization, outputUtilization);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
index aeb54de..f24f643 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
@@ -261,8 +261,8 @@ public class DefaultTransformerRegistry extends AbstractMap<TransformerKey, Tran
 
     @Override
     public void stop() throws Exception {
-        ServiceHelper.stopServices(staticMap.values());
-        ServiceHelper.stopServices(dynamicMap.values());
+        ServiceHelper.stopService(staticMap.values());
+        ServiceHelper.stopService(dynamicMap.values());
         purge();
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
index 06bc5bd..d937981 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
@@ -210,8 +210,8 @@ public class DefaultValidatorRegistry extends AbstractMap<ValidatorKey, Validato
 
     @Override
     public void stop() throws Exception {
-        ServiceHelper.stopServices(staticMap.values());
-        ServiceHelper.stopServices(dynamicMap.values());
+        ServiceHelper.stopService(staticMap.values());
+        ServiceHelper.stopService(dynamicMap.values());
         purge();
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
index ceeb7b3..3b8a0af 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
@@ -123,11 +123,11 @@ public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
     }
 
     public void start() throws Exception {
-        ServiceHelper.startServices(detour, delegate);
+        ServiceHelper.startService(detour, delegate);
     }
 
     public void stop() throws Exception {
-        ServiceHelper.stopServices(delegate, detour);
+        ServiceHelper.stopService(delegate, detour);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
index f3d8a5a..d6bdadb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
@@ -373,7 +373,7 @@ public class ProducerCache extends ServiceSupport {
             statistics = new DefaultEndpointUtilizationStatistics(max);
         }
 
-        ServiceHelper.startServices(producers, statistics);
+        ServiceHelper.startService(producers, statistics);
     }
 
     protected void doStop() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
index 014554f..e224127 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
@@ -262,7 +262,7 @@ public class RouteService extends ChildServiceSupport {
                 if (isShutdownCamelContext) {
                     ServiceHelper.stopAndShutdownServices(route);
                 } else {
-                    ServiceHelper.stopServices(route);
+                    ServiceHelper.stopService(route);
                 }
 
                 // invoke callbacks on route policy
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SubscribeMethodProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/SubscribeMethodProcessor.java
index bf39a7e..9ce1eaa 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SubscribeMethodProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SubscribeMethodProcessor.java
@@ -96,12 +96,12 @@ public final class SubscribeMethodProcessor extends ServiceSupport implements As
 
     @Override
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(methods.keySet());
+        ServiceHelper.startService(methods.keySet());
     }
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(methods.keySet());
+        ServiceHelper.stopService(methods.keySet());
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
index e92703f..8d00550 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
@@ -203,7 +203,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(managementAgent, eventNotifiers);
+        ServiceHelper.stopService(managementAgent, eventNotifiers);
     }
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
index 1d3d6e0..5c1c54f 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
@@ -199,11 +199,11 @@ public class ChoiceProcessor extends ServiceSupport implements AsyncProcessor, N
     }
 
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(filters, otherwise);
+        ServiceHelper.startService(filters, otherwise);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(otherwise, filters);
+        ServiceHelper.stopService(otherwise, filters);
     }
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
index cedf95f..19743f5 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
@@ -182,12 +182,12 @@ public class ClaimCheckProcessor extends ServiceSupport implements AsyncProcesso
             ((CamelContextAware) aggregationStrategy).setCamelContext(camelContext);
         }
 
-        ServiceHelper.startServices(aggregationStrategy);
+        ServiceHelper.startService(aggregationStrategy);
     }
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(aggregationStrategy);
+        ServiceHelper.stopService(aggregationStrategy);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java
index daf7178..d8e0919 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java
@@ -77,11 +77,11 @@ public class DelegateAsyncProcessor extends ServiceSupport implements DelegatePr
     }
 
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(processor);
+        ServiceHelper.startService(processor);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processor);
+        ServiceHelper.stopService(processor);
     }
 
     protected void doShutdown() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java
index 4c2d79c..afbb108 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DelegateProcessor.java
@@ -73,11 +73,11 @@ public class DelegateProcessor extends ServiceSupport implements org.apache.came
     }
 
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(processor);
+        ServiceHelper.startService(processor);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processor);
+        ServiceHelper.stopService(processor);
     }
 
     public boolean hasNext() {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DelegateSyncProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/DelegateSyncProcessor.java
index 8b5906e..10879e5 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DelegateSyncProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DelegateSyncProcessor.java
@@ -98,6 +98,6 @@ public class DelegateSyncProcessor extends ServiceSupport implements org.apache.
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processor);
+        ServiceHelper.stopService(processor);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
index a8e1e43..2f488b3 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
@@ -349,11 +349,11 @@ public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware,
             LOG.debug("Enricher {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
-        ServiceHelper.startServices(producerCache, aggregationStrategy);
+        ServiceHelper.startService(producerCache, aggregationStrategy);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(aggregationStrategy, producerCache);
+        ServiceHelper.stopService(aggregationStrategy, producerCache);
     }
 
     private static class CopyAggregationStrategy implements AggregationStrategy {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java b/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
index 7541c5f..70dde17 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
@@ -99,13 +99,13 @@ public class InterceptorToAsyncProcessorBridge extends ServiceSupport implements
 
     @Override
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(target, interceptor);
+        ServiceHelper.startService(target, interceptor);
     }
 
     @Override
     protected void doStop() throws Exception {
         callback.remove();
         interceptorDone.remove();
-        ServiceHelper.stopServices(interceptor, target);
+        ServiceHelper.stopService(interceptor, target);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index c3f5dd0..44ab3cb 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -1082,7 +1082,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                 boolean child = exchange.getProperty(Exchange.PARENT_UNIT_OF_WORK, UnitOfWork.class) != null;
 
                 // must start the error handler
-                ServiceHelper.startServices(answer);
+                ServiceHelper.startService(answer);
 
                 // here we don't cache the child unit of work
                 if (!child) {
@@ -1154,7 +1154,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
             ((CamelContextAware) aggregationStrategy).setCamelContext(camelContext);
         }
 
-        ServiceHelper.startServices(aggregationStrategy, processors);
+        ServiceHelper.startService(aggregationStrategy, processors);
     }
 
     /**
@@ -1171,7 +1171,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processors, errorHandlers, aggregationStrategy);
+        ServiceHelper.stopService(processors, errorHandlers, aggregationStrategy);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
index ebb3c76..06408fc 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
@@ -378,11 +378,11 @@ public class PollEnricher extends ServiceSupport implements AsyncProcessor, IdAw
         if (aggregationStrategy instanceof CamelContextAware) {
             ((CamelContextAware) aggregationStrategy).setCamelContext(camelContext);
         }
-        ServiceHelper.startServices(consumerCache, aggregationStrategy);
+        ServiceHelper.startService(consumerCache, aggregationStrategy);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(aggregationStrategy, consumerCache);
+        ServiceHelper.stopService(aggregationStrategy, consumerCache);
     }
 
     protected void doShutdown() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
index 2d92c75..108b1dd 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
@@ -189,11 +189,11 @@ public class RecipientList extends ServiceSupport implements AsyncProcessor, IdA
             producerCache = new ProducerCache(this, camelContext, cacheSize);
             LOG.debug("RecipientList {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
-        ServiceHelper.startServices(aggregationStrategy, producerCache);
+        ServiceHelper.startService(aggregationStrategy, producerCache);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(producerCache, aggregationStrategy);
+        ServiceHelper.stopService(producerCache, aggregationStrategy);
     }
 
     protected void doShutdown() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
index 96dcf6e..c0d8610 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
@@ -1481,7 +1481,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
 
     @Override
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(output, outputAsync, deadLetter);
+        ServiceHelper.startService(output, outputAsync, deadLetter);
 
         // determine if redeliver is enabled or not
         redeliveryEnabled = determineIfRedeliveryIsEnabled();
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
index c2aeefa..915b09b 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -442,11 +442,11 @@ public class RoutingSlip extends ServiceSupport implements AsyncProcessor, Trace
             log.debug("RoutingSlip {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
-        ServiceHelper.startServices(producerCache, errorHandler);
+        ServiceHelper.startService(producerCache, errorHandler);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(producerCache, errorHandler);
+        ServiceHelper.stopService(producerCache, errorHandler);
     }
 
     protected void doShutdown() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
index 2f52a94..21d3d87 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
@@ -279,11 +279,11 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
             }
         }
 
-        ServiceHelper.startServices(producerCache);
+        ServiceHelper.startService(producerCache);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(producerCache);
+        ServiceHelper.stopService(producerCache);
     }
 
     public EndpointUtilizationStatistics getEndpointUtilizationStatistics() {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
index f57c309..0548bf7 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -245,7 +245,7 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(producerCache, producer);
+        ServiceHelper.stopService(producerCache, producer);
     }
 
     protected void doShutdown() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java b/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
index 3fac08a..6b1df38 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
@@ -194,7 +194,7 @@ public class StreamResequencer extends ServiceSupport implements SequenceSender<
 
     @Override
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(processor);
+        ServiceHelper.startService(processor);
         delivery = new Delivery();
         engine.start();
         delivery.start();
@@ -205,7 +205,7 @@ public class StreamResequencer extends ServiceSupport implements SequenceSender<
         // let's stop everything in the reverse order
         // no need to stop the worker thread -- it will stop automatically when this service is stopped
         engine.stop();
-        ServiceHelper.stopServices(processor);
+        ServiceHelper.stopService(processor);
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
index 71d2538..2573fe1 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
@@ -160,11 +160,11 @@ public class TryProcessor extends ServiceSupport implements AsyncProcessor, Navi
     }
 
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(tryProcessor, catchClauses, finallyProcessor);
+        ServiceHelper.startService(tryProcessor, catchClauses, finallyProcessor);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(tryProcessor, catchClauses, finallyProcessor);
+        ServiceHelper.stopService(tryProcessor, catchClauses, finallyProcessor);
     }
 
     public List<Processor> next() {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
index c32d34a..d9078d7 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
@@ -1381,7 +1381,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
             LOG.info("Optimistic locking is enabled");
         }
 
-        ServiceHelper.startServices(aggregationStrategy, processor, aggregationRepository);
+        ServiceHelper.startService(aggregationStrategy, processor, aggregationRepository);
 
         // should we use recover checker
         if (aggregationRepository instanceof RecoverableAggregationRepository) {
@@ -1470,7 +1470,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
             shutdownTimeoutCheckerExecutorService = false;
         }
 
-        ServiceHelper.stopServices(timeoutMap, processor, deadLetterProducerTemplate);
+        ServiceHelper.stopService(timeoutMap, processor, deadLetterProducerTemplate);
 
         if (closedCorrelationKeys != null) {
             // it may be a service so stop it as well
diff --git a/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java b/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java
index bfc960e..9ce5d85 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java
@@ -208,11 +208,11 @@ public class IdempotentConsumer extends ServiceSupport implements CamelContextAw
         if (!camelContext.hasService(idempotentRepository)) {
             camelContext.addService(idempotentRepository);
         }
-        ServiceHelper.startServices(processor, idempotentRepository);
+        ServiceHelper.startService(processor, idempotentRepository);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processor, idempotentRepository);
+        ServiceHelper.stopService(processor, idempotentRepository);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
index 32b74bb..96aa6d6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
@@ -157,14 +157,14 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
     protected void doStart() throws Exception {
         // the output has now been created, so assign the output as the processor
         setProcessor(getOutput());
-        ServiceHelper.startServices(errorHandler, output);
+        ServiceHelper.startService(errorHandler, output);
     }
 
     @Override
     protected void doStop() throws Exception {
         if (!isContextScoped()) {
             // only stop services if not context scoped (as context scoped is reused by others)
-            ServiceHelper.stopServices(output, errorHandler);
+            ServiceHelper.stopService(output, errorHandler);
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java b/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
index fe22f0b..ca8dfef 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancerSupport.java
@@ -78,11 +78,11 @@ public abstract class LoadBalancerSupport extends ServiceSupport implements Load
     }
 
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(processors);
+        ServiceHelper.startService(processors);
     }
 
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processors);
+        ServiceHelper.stopService(processors);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java b/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java
index e51fafa..42cdbea 100644
--- a/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java
@@ -38,7 +38,7 @@ public abstract class ChildServiceSupport extends ServiceSupport {
                 Exception ex = null;
                 try {
                     if (childServices != null && startChildren) {
-                        ServiceHelper.startServices(childServices);
+                        ServiceHelper.startService(childServices);
                     }
                     childrenStarted = true;
                     doStart();
@@ -80,7 +80,7 @@ public abstract class ChildServiceSupport extends ServiceSupport {
                     started.set(false);
                     suspended.set(false);
                     if (childServices != null) {
-                        ServiceHelper.stopServices(childServices);
+                        ServiceHelper.stopService(childServices);
                     }
                 }
             } finally {
diff --git a/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java b/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java
index 2162c05..c0f1b20 100644
--- a/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java
@@ -92,11 +92,11 @@ public final class AsyncProcessorConverterHelper {
         }
 
         public void start() throws Exception {
-            ServiceHelper.startServices(processor);
+            ServiceHelper.startService(processor);
         }
 
         public void stop() throws Exception {
-            ServiceHelper.stopServices(processor);
+            ServiceHelper.stopService(processor);
         }
 
         public boolean hasNext() {
diff --git a/camel-core/src/main/java/org/apache/camel/util/ServiceHelper.java b/camel-core/src/main/java/org/apache/camel/util/ServiceHelper.java
index 730d53f..3346765 100644
--- a/camel-core/src/main/java/org/apache/camel/util/ServiceHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/ServiceHelper.java
@@ -51,57 +51,28 @@ public final class ServiceHelper {
      * Starts the given {@code value} if it's a {@link Service} or a collection of it.
      * <p/>
      * Calling this method has no effect if {@code value} is {@code null}.
-     * 
-     * @see #startService(Service)
-     * @see #startServices(Collection)
      */
     public static void startService(Object value) throws Exception {
         if (value instanceof Service) {
-            startService((Service)value);
-        } else if (value instanceof Collection) {
-            startServices((Collection<?>)value);
+            ((Service) value).start();
+        } else if (value instanceof Iterable) {
+            for (Object o : (Iterable) value) {
+                startService(o);
+            }
         }
     }
     
     /**
-     * Starts the given {@code service}.
-     * <p/>
-     * Calling this method has no effect if {@code service} is {@code null}.
-     * 
-     * @see Service#start()
-     */
-    public static void startService(Service service) throws Exception {
-        if (service != null) {
-            service.start();
-        }
-    }
-
-    /**
-     * Starts each element of the given {@code services} if {@code services} itself is
-     * not {@code null}, otherwise this method would return immediately.
-     * 
-     * @see #startServices(Collection)
-     */
-    public static void startServices(Object... services) throws Exception {
-        if (services == null) {
-            return;
-        }
-        List<Object> list = Arrays.asList(services);
-        startServices(list);
-    }
-
-    /**
      * Starts each element of the given {@code services} if {@code services} itself is
      * not {@code null}, otherwise this method would return immediately.
      * 
      * @see #startService(Object)
      */
-    public static void startServices(Collection<?> services) throws Exception {
-        if (services == null) {
-            return;
-        }
-        for (Object value : services) {
-            startService(value);
+    public static void startService(Object... services) throws Exception {
+        if (services != null) {
+            for (Object o : services) {
+                startService(o);
+            }
         }
     }
 
@@ -112,14 +83,14 @@ public final class ServiceHelper {
      * If there's any exception being thrown while stopping the elements one after the
      * other this method would rethrow the <b>first</b> such exception being thrown.
      * 
-     * @see #stopServices(Collection)
+     * @see #stopService(Collection)
      */
-    public static void stopServices(Object... services) throws Exception {
-        if (services == null) {
-            return;
+    public static void stopService(Object... services) throws Exception {
+        if (services != null) {
+            for (Object o : services) {
+                stopService(o);
+            }
         }
-        List<Object> list = Arrays.asList(services);
-        stopServices(list);
     }
 
     /**
@@ -128,20 +99,15 @@ public final class ServiceHelper {
      * Calling this method has no effect if {@code value} is {@code null}.
      * 
      * @see Service#stop()
-     * @see #stopServices(Collection)
+     * @see #stopService(Collection)
      */
     public static void stopService(Object value) throws Exception {
-        if (isStopped(value)) {
-            // only stop service if not already stopped
-            LOG.trace("Service already stopped: {}", value);
-            return;
-        }
         if (value instanceof Service) {
-            Service service = (Service)value;
-            LOG.trace("Stopping service {}", value);
-            service.stop();
-        } else if (value instanceof Collection) {
-            stopServices((Collection<?>)value);
+            ((Service) value).stop();
+        } else if (value instanceof Iterable) {
+            for (Object o : (Iterable) value) {
+                stopService(o);
+            }
         }
     }
 
@@ -154,7 +120,7 @@ public final class ServiceHelper {
      * 
      * @see #stopService(Object)
      */
-    public static void stopServices(Collection<?> services) throws Exception {
+    public static void stopService(Collection<?> services) throws Exception {
         if (services == null) {
             return;
         }
diff --git a/camel-core/src/test/java/org/apache/camel/component/directvm/AbstractDirectVmTestSupport.java b/camel-core/src/test/java/org/apache/camel/component/directvm/AbstractDirectVmTestSupport.java
index c62237f..45773d3 100644
--- a/camel-core/src/test/java/org/apache/camel/component/directvm/AbstractDirectVmTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/component/directvm/AbstractDirectVmTestSupport.java
@@ -42,7 +42,7 @@ public abstract class AbstractDirectVmTestSupport extends ContextTestSupport {
         context2 = new DefaultCamelContext();
         template2 = context2.createProducerTemplate();
 
-        ServiceHelper.startServices(template2, context2);
+        ServiceHelper.startService(template2, context2);
 
         // add routes after CamelContext has been started
         RouteBuilder routeBuilder = createRouteBuilderForSecondContext();
@@ -58,7 +58,7 @@ public abstract class AbstractDirectVmTestSupport extends ContextTestSupport {
     @Override
     @After
     public void tearDown() throws Exception {
-        ServiceHelper.stopServices(context2, template2);
+        ServiceHelper.stopService(context2, template2);
 
         super.tearDown();
     }
diff --git a/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmConsumerExpressionTest.java b/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmConsumerExpressionTest.java
index 9305388..7f444ba 100644
--- a/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmConsumerExpressionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmConsumerExpressionTest.java
@@ -44,9 +44,9 @@ public class DirectVmConsumerExpressionTest extends ContextTestSupport {
         context3 = new DefaultCamelContext();
         context4 = new DefaultCamelContext();
 
-        ServiceHelper.startServices(context2);
-        ServiceHelper.startServices(context3);
-        ServiceHelper.startServices(context4);
+        ServiceHelper.startService(context2);
+        ServiceHelper.startService(context3);
+        ServiceHelper.startService(context4);
 
         // add routes after CamelContext has been started
         RouteBuilder routeBuilder = createRouteBuilderCamelContext2();
@@ -68,7 +68,7 @@ public class DirectVmConsumerExpressionTest extends ContextTestSupport {
     @Override
     @After
     public void tearDown() throws Exception {
-        ServiceHelper.stopServices(context2, context3, context4);
+        ServiceHelper.stopService(context2, context3, context4);
         super.tearDown();
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java b/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
index d9ec953..a205c5b 100644
--- a/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
@@ -40,7 +40,7 @@ public abstract class AbstractVmTestSupport extends ContextTestSupport {
         context2 = new DefaultCamelContext();
         template2 = context2.createProducerTemplate();
         
-        ServiceHelper.startServices(template2, context2);
+        ServiceHelper.startService(template2, context2);
 
         // add routes after CamelContext has been started
         RouteBuilder routeBuilder = createRouteBuilderForSecondContext();
@@ -52,7 +52,7 @@ public abstract class AbstractVmTestSupport extends ContextTestSupport {
     @Override
     @After
     public void tearDown() throws Exception {
-        ServiceHelper.stopServices(context2, template2);
+        ServiceHelper.stopService(context2, template2);
         VmComponent.ENDPOINTS.clear();
         VmComponent.QUEUES.clear();
         super.tearDown();
diff --git a/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java b/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
index 4f4dd0c..faad47c 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
@@ -79,7 +79,7 @@ public class StreamResequencerTest extends ContextTestSupport {
 
         assertMockEndpointsSatisfied();
 
-        ServiceHelper.stopServices(producerTemplate, producerTemplate2);
+        ServiceHelper.stopService(producerTemplate, producerTemplate2);
     }
 
     @Override
diff --git a/camel-core/src/test/java/org/apache/camel/processor/aggregator/AbstractDistributedTest.java b/camel-core/src/test/java/org/apache/camel/processor/aggregator/AbstractDistributedTest.java
index 4bae1f5..13fcf2b 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/aggregator/AbstractDistributedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/aggregator/AbstractDistributedTest.java
@@ -43,7 +43,7 @@ public abstract class AbstractDistributedTest extends ContextTestSupport {
         context2 = new DefaultCamelContext();
         context2.setUseMDCLogging(true);
         template2 = context2.createProducerTemplate();
-        ServiceHelper.startServices(template2, context2);
+        ServiceHelper.startService(template2, context2);
 
         // add routes after CamelContext has been started
         context2.adapt(ModelCamelContext.class).addRoutes(createRouteBuilder2());
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactionErrorHandler.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactionErrorHandler.java
index 57245b5..ae391ca 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactionErrorHandler.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactionErrorHandler.java
@@ -327,7 +327,7 @@ public class TransactionErrorHandler extends ErrorHandlerSupport
 
     @Override
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(output);
+        ServiceHelper.startService(output);
         preparingShutdown = false;
     }
 
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
index 8977271..71f3730 100644
--- a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
+++ b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
@@ -30,6 +30,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.examples.SendEmail;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.util.ServiceHelper;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -40,9 +41,6 @@ import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.support.TransactionCallback;
 import org.springframework.transaction.support.TransactionTemplate;
 
-import static org.apache.camel.util.ServiceHelper.startServices;
-import static org.apache.camel.util.ServiceHelper.stopServices;
-
 /**
  * @version 
  */
@@ -110,7 +108,7 @@ public class JpaTest extends Assert {
     @Before
     public void setUp() throws Exception {
         template = camelContext.createProducerTemplate();
-        startServices(template, camelContext);
+        ServiceHelper.startService(template, camelContext);
 
         Endpoint value = camelContext.getEndpoint(getEndpointUri());
         assertNotNull("Could not find endpoint!", value);
@@ -127,6 +125,6 @@ public class JpaTest extends Assert {
 
     @After
     public void tearDown() throws Exception {
-        stopServices(consumer, template, camelContext);
+        ServiceHelper.stopService(consumer, template, camelContext);
     }
 }
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java
index 507efa7..4058126 100644
--- a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java
+++ b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java
@@ -130,7 +130,7 @@ public class JpaWithNamedQueryAndParametersTest extends Assert {
         camelContext.setRegistry(registry);
         
         template = camelContext.createProducerTemplate();
-        ServiceHelper.startServices(template, camelContext);
+        ServiceHelper.startService(template, camelContext);
 
         Endpoint value = camelContext.getEndpoint(getEndpointUri());
         assertNotNull("Could not find endpoint!", value);
@@ -147,6 +147,6 @@ public class JpaWithNamedQueryAndParametersTest extends Assert {
 
     @After
     public void tearDown() throws Exception {
-        ServiceHelper.stopServices(consumer, template, camelContext);
+        ServiceHelper.stopService(consumer, template, camelContext);
     }
 }
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
index 0e66265..b81456e 100644
--- a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
+++ b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
@@ -164,7 +164,7 @@ public class JpaWithNamedQueryTest extends Assert {
     @Before
     public void setUp() throws Exception {
         template = camelContext.createProducerTemplate();
-        ServiceHelper.startServices(template, camelContext);
+        ServiceHelper.startService(template, camelContext);
 
         Endpoint value = camelContext.getEndpoint(getEndpointUri());
         assertNotNull("Could not find endpoint!", value);
@@ -181,6 +181,6 @@ public class JpaWithNamedQueryTest extends Assert {
 
     @After
     public void tearDown() throws Exception {
-        ServiceHelper.stopServices(consumer, template, camelContext);
+        ServiceHelper.stopService(consumer, template, camelContext);
     }
 }
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java b/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java
index 880703e..f00f593 100644
--- a/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java
+++ b/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java
@@ -152,11 +152,11 @@ public class JpaProducerWithQueryTest extends Assert {
         });
 
         template = camelContext.createProducerTemplate();
-        ServiceHelper.startServices(template, camelContext);
+        ServiceHelper.startService(template, camelContext);
     }
 
     @After
     public void tearDown() throws Exception {
-        ServiceHelper.stopServices(template, camelContext);
+        ServiceHelper.stopService(template, camelContext);
     }
 }
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettySharedHttpServer.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettySharedHttpServer.java
index 74e2550..e35b9bb 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettySharedHttpServer.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettySharedHttpServer.java
@@ -116,17 +116,17 @@ public class DefaultNettySharedHttpServer extends ServiceSupport implements Nett
         bootstrapFactory = new HttpServerBootstrapFactory(channelFactory, false);
         bootstrapFactory.init(tf, configuration, pipelineFactory);
 
-        ServiceHelper.startServices(channelFactory);
+        ServiceHelper.startService(channelFactory);
 
         if (startServer) {
             LOG.info("Starting NettySharedHttpServer on {}:{}", configuration.getHost(), configuration.getPort());
-            ServiceHelper.startServices(bootstrapFactory);
+            ServiceHelper.startService(bootstrapFactory);
         }
     }
 
     @Override
     protected void doStop() throws Exception {
         LOG.info("Stopping NettySharedHttpServer on {}:{}", configuration.getHost(), configuration.getPort());
-        ServiceHelper.stopServices(bootstrapFactory, channelFactory);
+        ServiceHelper.stopService(bootstrapFactory, channelFactory);
     }
 }
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
index a1ba68e..c465a4f 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
@@ -489,7 +489,7 @@ public class NettyHttpComponent extends NettyComponent implements HeaderFilterSt
     protected void doStop() throws Exception {
         super.doStop();
 
-        ServiceHelper.stopServices(bootstrapFactories.values());
+        ServiceHelper.stopService(bootstrapFactories.values());
         bootstrapFactories.clear();
 
         ServiceHelper.stopService(multiplexChannelHandlers.values());
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumer.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumer.java
index 8c185a0..705bc5f 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumer.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumer.java
@@ -70,7 +70,7 @@ public class NettyConsumer extends DefaultConsumer {
             nettyServerBootstrapFactory.init(context, configuration, pipelineFactory);
         }
 
-        ServiceHelper.startServices(nettyServerBootstrapFactory);
+        ServiceHelper.startService(nettyServerBootstrapFactory);
 
         LOG.info("Netty consumer bound to: {}", configuration.getAddress());
     }
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java
index 121358d..7bae6f3 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java
@@ -55,7 +55,7 @@ public class DualCamelContextEndpointOutsideTest extends SpringTestSupport {
         producer2.sendBody("direct:start2", "Hello B");
 
         // make sure we properly stop the services we created
-        ServiceHelper.stopServices(producer1, producer2);
+        ServiceHelper.stopService(producer1, producer2);
 
         mockA.assertIsSatisfied();
         mockB.assertIsSatisfied();
diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
index e301b60..03c7b1f 100644
--- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
+++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
@@ -90,7 +90,7 @@ public class XmppComponent extends DefaultComponent {
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(endpointCache.values());
+        ServiceHelper.stopService(endpointCache.values());
         endpointCache.clear();
 
         super.doStop();
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 abad90e..1c95673 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
@@ -412,7 +412,7 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
             createTracingForService(pattern, serviceName);
         }
 
-        ServiceHelper.startServices(spanReporter, eventNotifier);
+        ServiceHelper.startService(spanReporter, eventNotifier);
     }
 
     @Override
diff --git a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointFailoverTest.java b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointFailoverTest.java
index 887bef1..bc5f0cb 100644
--- a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointFailoverTest.java
+++ b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointFailoverTest.java
@@ -89,17 +89,17 @@ public class MasterEndpointFailoverTest {
             }
         });
         // Need to start at less one consumerContext to enable the vm queue for producerContext
-        ServiceHelper.startServices(consumerContext1);
-        ServiceHelper.startServices(producerContext);
+        ServiceHelper.startService(consumerContext1);
+        ServiceHelper.startService(producerContext);
         result1Endpoint = consumerContext1.getEndpoint("mock:result1", MockEndpoint.class);
         result2Endpoint = consumerContext2.getEndpoint("mock:result2", MockEndpoint.class);
     }
 
     @After
     public void afterRun() throws Exception {
-        ServiceHelper.stopServices(consumerContext1);
-        ServiceHelper.stopServices(consumerContext2);
-        ServiceHelper.stopServices(producerContext);
+        ServiceHelper.stopService(consumerContext1);
+        ServiceHelper.stopService(consumerContext2);
+        ServiceHelper.stopService(producerContext);
         zkClientBean.destroy();
         serverFactoryBean.destroy();
     }
@@ -108,11 +108,11 @@ public class MasterEndpointFailoverTest {
     public void testEndpoint() throws Exception {
         System.out.println("Starting consumerContext1");
 
-        ServiceHelper.startServices(consumerContext1);
+        ServiceHelper.startService(consumerContext1);
         assertMessageReceived(result1Endpoint, result2Endpoint);
 
         System.out.println("Starting consumerContext2");
-        ServiceHelper.startServices(consumerContext2);
+        ServiceHelper.startService(consumerContext2);
         assertMessageReceivedLoop(result1Endpoint, result2Endpoint, 3);
 
         System.out.println("Stopping consumerContext1");
diff --git a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointTest.java b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointTest.java
index b1d88e5..3df5eae 100644
--- a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointTest.java
+++ b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterEndpointTest.java
@@ -71,7 +71,7 @@ public class MasterEndpointTest extends AbstractJUnit4SpringContextTests {
     public void afterRun() throws Exception {
         lastServerBean = zkServerBean;
         lastClientBean = zkClientBean;
-        ServiceHelper.stopServices(camelContext);
+        ServiceHelper.stopService(camelContext);
     }
 
     @AfterClass
diff --git a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterQuartz2EndpointTest.java b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterQuartz2EndpointTest.java
index f4c77a8..95c0a31 100644
--- a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterQuartz2EndpointTest.java
+++ b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/MasterQuartz2EndpointTest.java
@@ -58,7 +58,7 @@ public class MasterQuartz2EndpointTest extends AbstractJUnit4SpringContextTests
     public void afterRun() throws Exception {
         lastServerBean = zkServerBean;
         lastClientBean = zkClientBean;
-        ServiceHelper.stopServices(camelContext);
+        ServiceHelper.stopService(camelContext);
     }
 
     @AfterClass
diff --git a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java
index 28e80d0..0e46c3d 100644
--- a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java
+++ b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java
@@ -47,12 +47,12 @@ public class ConnectorProducer extends DefaultAsyncProducer {
 
     @Override
     protected void doStart() throws Exception {
-        ServiceHelper.startServices(processor);
+        ServiceHelper.startService(processor);
     }
 
     @Override
     protected void doStop() throws Exception {
-        ServiceHelper.stopServices(processor);
+        ServiceHelper.stopService(processor);
     }
 
     @Override


[camel] 24/44: Add a protected logger on ServiceSupport and use it instead of a static one

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit feae39aa6dcaf509f7d034219108b1343fff0351
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Sep 28 17:33:23 2018 +0200

    Add a protected logger on ServiceSupport and use it instead of a static one
    
    # Conflicts:
    #	camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
---
 .../apache/camel/component/bean/BeanComponent.java |   5 +-
 .../camel/component/direct/DirectProducer.java     |   6 +-
 .../directvm/DirectVmBlockingProducer.java         |   6 +-
 .../component/directvm/DirectVmProcessor.java      |   7 +-
 .../camel/component/file/GenericFileConsumer.java  |   2 +-
 .../component/file/GenericFilePollingConsumer.java |  30 +++---
 ...dempotentChangedRepositoryReadLockStrategy.java |  18 ++--
 ...IdempotentRenameRepositoryReadLockStrategy.java |   6 +-
 .../FileIdempotentRepositoryReadLockStrategy.java  |  14 ++-
 .../GenericFileProcessStrategySupport.java         |   1 -
 .../apache/camel/component/log/LogComponent.java   |   5 +-
 .../apache/camel/component/mock/MockEndpoint.java  |  26 ++---
 .../component/properties/PropertiesComponent.java  |  13 ++-
 .../apache/camel/component/rest/RestEndpoint.java  |  10 +-
 .../apache/camel/component/seda/SedaConsumer.java  |  33 +++---
 .../apache/camel/component/seda/SedaEndpoint.java  |  14 +--
 .../apache/camel/component/test/TestEndpoint.java  |   7 +-
 .../camel/component/timer/TimerConsumer.java       |  12 +--
 .../apache/camel/component/xslt/XsltComponent.java |   4 +-
 .../apache/camel/component/xslt/XsltEndpoint.java  |  12 +--
 .../java/org/apache/camel/impl/ConsumerCache.java  |  11 +-
 .../impl/DefaultAsyncProcessorAwaitManager.java    |  22 ++--
 .../org/apache/camel/impl/DefaultCamelContext.java |   4 +-
 .../org/apache/camel/impl/DefaultComponent.java    |  14 +--
 .../org/apache/camel/impl/DefaultConsumer.java     |   4 +-
 .../apache/camel/impl/DefaultConsumerTemplate.java |   5 +-
 .../org/apache/camel/impl/DefaultEndpoint.java     |   5 +-
 .../camel/impl/DefaultInflightRepository.java      |   5 +-
 .../org/apache/camel/impl/DefaultProducer.java     |   2 +-
 .../DefaultScheduledPollConsumerScheduler.java     |  14 +--
 .../apache/camel/impl/DefaultShutdownStrategy.java |  77 +++++++-------
 .../camel/impl/DefaultStreamCachingStrategy.java   |  43 ++++----
 .../camel/impl/EventDrivenPollingConsumer.java     |   8 +-
 .../org/apache/camel/impl/FileStateRepository.java |  24 ++---
 .../impl/InterceptSendToEndpointProcessor.java     |  12 +--
 .../apache/camel/impl/PollingConsumerSupport.java  |   2 +-
 .../java/org/apache/camel/impl/ProducerCache.java  |  12 +--
 .../java/org/apache/camel/impl/RouteService.java   |  12 +--
 .../camel/impl/ScheduledBatchPollingConsumer.java  |   4 +-
 .../apache/camel/impl/ScheduledPollConsumer.java   |  53 +++++-----
 .../camel/impl/ThrottlingExceptionRoutePolicy.java |  27 +++--
 .../impl/cluster/AbstractCamelClusterService.java  |  19 ++--
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |  17 ++-
 .../DefaultManagementLifecycleStrategy.java        |  65 ++++++------
 .../DefaultManagementMBeanAssembler.java           |   8 +-
 .../camel/processor/CamelInternalProcessor.java    |  34 +++---
 .../org/apache/camel/processor/CatchProcessor.java |   9 +-
 .../apache/camel/processor/ChoiceProcessor.java    |   4 +-
 .../camel/processor/ClaimCheckProcessor.java       |  13 ++-
 .../camel/processor/DelayProcessorSupport.java     |   2 +-
 .../java/org/apache/camel/processor/Enricher.java  |  11 +-
 .../camel/processor/ErrorHandlerSupport.java       |   2 -
 .../camel/processor/FatalFallbackErrorHandler.java |  12 +--
 .../apache/camel/processor/FilterProcessor.java    |   4 +-
 .../apache/camel/processor/FinallyProcessor.java   |   5 +-
 .../org/apache/camel/processor/LogProcessor.java   |   7 +-
 .../org/apache/camel/processor/LoopProcessor.java  |  17 ++-
 .../apache/camel/processor/MulticastProcessor.java |  74 +++++++------
 .../camel/processor/OnCompletionProcessor.java     |  15 ++-
 .../java/org/apache/camel/processor/Pipeline.java  |  21 ++--
 .../org/apache/camel/processor/PollEnricher.java   |  17 ++-
 .../org/apache/camel/processor/RecipientList.java  |   3 +-
 .../camel/processor/RecipientListProcessor.java    |  16 +--
 .../org/apache/camel/processor/RoutingSlip.java    |   2 +-
 .../apache/camel/processor/SamplingThrottler.java  |   9 +-
 .../camel/processor/SendDynamicProcessor.java      |  28 +++--
 .../org/apache/camel/processor/SendProcessor.java  |  15 +--
 .../apache/camel/processor/StreamResequencer.java  |   4 +-
 .../apache/camel/processor/ThreadsProcessor.java   |   9 +-
 .../java/org/apache/camel/processor/Throttler.java |   1 -
 .../apache/camel/processor/ThroughputLogger.java   |  29 +++---
 .../org/apache/camel/processor/TryProcessor.java   |  15 ++-
 .../apache/camel/processor/WireTapProcessor.java   |   6 +-
 .../processor/aggregate/AggregateProcessor.java    | 114 ++++++++++-----------
 .../idempotent/FileIdempotentRepository.java       |  34 +++---
 .../processor/idempotent/IdempotentConsumer.java   |   4 +-
 .../processor/interceptor/BacklogDebugger.java     |   4 +-
 .../camel/processor/interceptor/BacklogTracer.java |   5 +-
 .../processor/interceptor/DefaultChannel.java      |   6 +-
 .../apache/camel/support/EventNotifierSupport.java |   4 +-
 .../apache/camel/support/RoutePolicySupport.java   |   1 -
 .../org/apache/camel/support/ServiceSupport.java   |  13 ++-
 .../camel/util/component/AbstractApiConsumer.java  |   3 -
 .../camel/component/log/LogCustomLoggerTest.java   |   2 +-
 .../org/apache/camel/impl/CustomIdFactoryTest.java |   3 +-
 .../impl/transformer/TransformerRouteTest.java     |   8 +-
 .../camel/impl/validator/ValidatorRouteTest.java   |   4 +-
 .../processor/LogEipPropagateExceptionTest.java    |   2 +-
 .../apache/camel/component/ahc/ws/WsEndpoint.java  |  21 ++--
 .../apache/camel/component/ahc/AhcComponent.java   |   6 +-
 .../apache/camel/component/as2/AS2Component.java   |   4 +-
 .../camel/component/asterisk/AsteriskProducer.java |   5 +-
 .../camel/component/atmos/AtmosEndpoint.java       |  12 +--
 .../consumer/AtmosScheduledPollConsumer.java       |   2 +-
 .../client/AbstractAtomixClientProducer.java       |   4 +-
 .../atomix/client/map/AtomixMapConsumer.java       |   5 +-
 .../client/messaging/AtomixMessagingConsumer.java  |   3 +-
 .../atomix/client/queue/AtomixQueueConsumer.java   |   3 +-
 .../atomix/client/set/AtomixSetConsumer.java       |   3 +-
 .../atomix/client/value/AtomixValueConsumer.java   |   3 +-
 .../atomix/cluster/AtomixClusterService.java       |  11 +-
 .../atomix/cluster/AtomixClusterView.java          |  21 ++--
 .../camel/component/aws/xray/XRayTracer.java       |  34 +++---
 .../camel/component/aws/ddb/DdbEndpoint.java       |  20 ++--
 .../component/aws/ddbstream/DdbStreamConsumer.java |   9 +-
 .../camel/component/aws/ec2/EC2Producer.java       |  44 ++++----
 .../camel/component/aws/iam/IAMProducer.java       |  20 ++--
 .../component/aws/kinesis/KinesisConsumer.java     |  15 ++-
 .../camel/component/aws/kms/KMSProducer.java       |  16 ++-
 .../camel/component/aws/lambda/LambdaProducer.java |  16 ++-
 .../apache/camel/component/aws/mq/MQProducer.java  |  16 ++-
 .../apache/camel/component/aws/s3/S3Consumer.java  |  33 +++---
 .../camel/component/aws/sns/SnsEndpoint.java       |  14 +--
 .../camel/component/aws/sns/SnsProducer.java       |  10 +-
 .../camel/component/aws/sqs/SqsConsumer.java       |  41 ++++----
 .../camel/component/aws/sqs/SqsEndpoint.java       |  18 ++--
 .../camel/component/aws/sqs/SqsProducer.java       |  16 ++-
 .../component/azure/blob/BlobServiceConsumer.java  |   7 +-
 .../component/azure/blob/BlobServiceEndpoint.java  |   8 +-
 .../component/azure/blob/BlobServiceProducer.java  |  28 +++--
 .../azure/queue/QueueServiceConsumer.java          |   7 +-
 .../azure/queue/QueueServiceEndpoint.java          |   8 +-
 .../azure/queue/QueueServiceProducer.java          |  14 +--
 .../dataformat/barcode/BarcodeDataFormat.java      |  17 +--
 .../component/beanstalk/BeanstalkConsumer.java     |  16 ++-
 ...indySimpleCsvMandatoryFieldsUnmarshallTest.java |   4 +-
 .../bindy/csv/BindySimpleCsvUnmarshallTest.java    |   2 +-
 .../camel/blueprint/BlueprintCamelContext.java     |  38 +++----
 .../aggregate/CaffeineAggregationRepository.java   |  15 ++-
 .../component/cassandra/CassandraProducer.java     |   1 -
 .../org/apache/camel/component/cm/CMComponent.java |   6 +-
 .../apache/camel/component/cmis/CMISConsumer.java  |   6 +-
 .../apache/camel/component/cmis/CMISProducer.java  |  10 +-
 .../component/crypto/cms/CryptoCmsComponent.java   |   8 +-
 .../component/crypto/cms/CryptoCmsProducer.java    |   2 +-
 .../camel/converter/crypto/PGPDataFormat.java      |   2 +-
 .../camel/component/cxf/CxfBlueprintEndpoint.java  |   6 +-
 .../apache/camel/component/cxf/CxfComponent.java   |   2 -
 .../apache/camel/component/cxf/CxfConsumer.java    |  22 ++--
 .../apache/camel/component/cxf/CxfEndpoint.java    |  26 ++---
 .../apache/camel/component/cxf/CxfProducer.java    |  32 +++---
 .../disruptor/SedaDisruptorCompareTest.java        |   4 +-
 .../camel/component/docker/DockerComponent.java    |   1 -
 .../docker/consumer/DockerEventsConsumer.java      |   9 +-
 .../camel/component/dozer/DozerComponent.java      |   2 -
 .../camel/component/dozer/DozerEndpoint.java       |   5 +-
 .../camel/component/dozer/DozerProducer.java       |  12 +--
 .../aggregate/EhcacheAggregationRepository.java    |  15 ++-
 .../elasticsearch/ElasticsearchProducer.java       |  10 +-
 .../camel/component/elsql/ElsqlEndpoint.java       |   7 +-
 .../camel/component/elsql/ElsqlProducer.java       |   5 +-
 .../component/eventadmin/EventAdminConsumer.java   |   5 +-
 .../camel/component/facebook/FacebookConsumer.java |  10 +-
 .../camel/component/facebook/FacebookEndpoint.java |   8 +-
 .../git/consumer/AbstractGitConsumer.java          |   6 +-
 .../camel/component/git/producer/GitProducer.java  |  52 +++++-----
 .../stream/GoogleCalendarStreamConsumer.java       |   5 +-
 .../stream/GoogleCalendarStreamEndpoint.java       |   2 -
 .../apache/camel/component/gora/GoraConsumer.java  |   9 +-
 .../apache/camel/component/gora/GoraProducer.java  |   5 -
 .../apache/camel/component/grpc/GrpcConsumer.java  |  13 +--
 .../apache/camel/component/grpc/GrpcProducer.java  |  11 +-
 .../hazelcast/queue/HazelcastQueueConsumer.java    |   7 +-
 .../hazelcast/seda/HazelcastSedaConsumer.java      |   9 +-
 .../camel/component/hbase/HBaseConsumer.java       |   8 +-
 .../idempotent/HBaseIdempotentRepository.java      |  12 +--
 .../camel/component/hipchat/HipchatComponent.java  |   6 +-
 .../camel/component/hipchat/HipchatConsumer.java   |   9 +-
 .../camel/component/hipchat/HipchatProducer.java   |  12 +--
 .../camel/component/http4/HttpComponent.java       |  10 +-
 .../apache/camel/component/http4/HttpEndpoint.java |   8 +-
 .../apache/camel/component/http4/HttpProducer.java |  18 ++--
 .../hystrix/metrics/HystrixEventStreamService.java |  11 +-
 .../hystrix/processor/HystrixProcessor.java        |   1 -
 .../component/iec60870/AbstractIecComponent.java   |  16 ++-
 .../component/iec60870/client/ClientComponent.java |   6 +-
 .../component/iec60870/client/ClientConsumer.java  |   6 +-
 .../component/iec60870/server/ServerComponent.java |   6 +-
 .../component/iec60870/server/ServerConsumer.java  |   6 +-
 .../cache/IgniteCacheContinuousQueryConsumer.java  |  16 ++-
 .../ignite/events/IgniteEventsConsumer.java        |  14 +--
 .../ignite/events/IgniteEventsEndpoint.java        |  10 +-
 .../ignite/idgen/IgniteIdGenEndpoint.java          |   6 +-
 .../ignite/messaging/IgniteMessagingConsumer.java  |  14 +--
 .../component/influxdb/InfluxDbComponent.java      |   2 -
 .../camel/component/influxdb/InfluxDbEndpoint.java |   6 +-
 .../camel/component/influxdb/InfluxDbProducer.java |  10 +-
 .../apache/camel/component/irc/IrcComponent.java   |  24 ++---
 .../apache/camel/component/irc/IrcConsumer.java    |   9 +-
 .../apache/camel/component/irc/IrcEndpoint.java    |  15 ++-
 .../apache/camel/component/irc/IrcProducer.java    |  12 +--
 .../camel/component/irc/CodehausIrcChat.java       |   4 +-
 .../camel/component/ironmq/IronMQConsumer.java     |  23 ++---
 .../camel/component/ironmq/IronMQEndpoint.java     |   5 +-
 .../camel/component/ironmq/IronMQProducer.java     |   9 +-
 .../camel/component/jackson/JacksonDataFormat.java |  20 ++--
 .../component/jacksonxml/JacksonXMLDataFormat.java |  14 +--
 .../converter/jaxb/FallbackTypeConverter.java      |  15 ++-
 .../camel/converter/jaxb/JaxbDataFormat.java       |  22 ++--
 .../aggregate/JCacheAggregationRepository.java     |  21 ++--
 .../jclouds/JcloudsBlobStoreConsumer.java          |   5 +-
 .../jclouds/JcloudsBlobStoreProducer.java          |   8 +-
 .../apache/camel/component/jcr/JcrConsumer.java    |  26 ++---
 .../apache/camel/component/jdbc/JdbcComponent.java |   5 +-
 .../apache/camel/component/jdbc/JdbcProducer.java  |  18 ++--
 .../camel/component/jetty/JettyHttpComponent.java  |  25 ++---
 .../camel/component/jetty/JettyHttpProducer.java   |  16 ++-
 .../component/jetty/async/MyAsyncProducer.java     |  13 +--
 .../camel/component/jgroups/JGroupsEndpoint.java   |  10 +-
 .../apache/camel/component/jms/JmsComponent.java   |   4 +-
 .../apache/camel/component/jms/JmsEndpoint.java    |   2 +-
 .../apache/camel/component/jms/JmsProducer.java    |  46 ++++-----
 .../reply/SharedQueueMessageListenerContainer.java |   6 +-
 .../camel/component/jms/async/MyAsyncProducer.java |  13 +--
 .../apache/camel/component/jmx/JMXConsumer.java    |  22 ++--
 .../camel/component/johnzon/JohnzonDataFormat.java |   2 -
 .../apache/camel/component/jpa/JpaComponent.java   |  25 ++---
 .../apache/camel/component/jpa/JpaConsumer.java    |  30 +++---
 .../camel/component/jpa/JpaPollingConsumer.java    |   9 +-
 .../apache/camel/component/jpa/JpaProducer.java    |   8 +-
 .../idempotent/jpa/JpaMessageIdRepository.java     |  20 ++--
 .../apache/camel/component/scp/ScpComponent.java   |  20 ++--
 .../jsonvalidator/JsonValidatorEndpoint.java       |   8 +-
 .../camel/component/kafka/KafkaEndpoint.java       |   5 +-
 .../kubernetes/AbstractKubernetesEndpoint.java     |   2 -
 .../config_maps/KubernetesConfigMapsEndpoint.java  |   2 -
 .../config_maps/KubernetesConfigMapsProducer.java  |  16 ++-
 .../deployments/KubernetesDeploymentsConsumer.java |   8 +-
 .../deployments/KubernetesDeploymentsEndpoint.java |   2 -
 .../deployments/KubernetesDeploymentsProducer.java |  22 ++--
 .../kubernetes/hpa/KubernetesHPAConsumer.java      |   8 +-
 .../kubernetes/hpa/KubernetesHPAEndpoint.java      |   2 -
 .../kubernetes/hpa/KubernetesHPAProducer.java      |  20 ++--
 .../kubernetes/job/KubernetesJobEndpoint.java      |   2 -
 .../kubernetes/job/KubernetesJobProducer.java      |  20 ++--
 .../namespaces/KubernetesNamespacesConsumer.java   |   8 +-
 .../namespaces/KubernetesNamespacesEndpoint.java   |   2 -
 .../kubernetes/nodes/KubernetesNodesConsumer.java  |   8 +-
 .../kubernetes/nodes/KubernetesNodesEndpoint.java  |   2 -
 .../kubernetes/nodes/KubernetesNodesProducer.java  |   6 +-
 .../KubernetesPersistentVolumesEndpoint.java       |   2 -
 .../KubernetesPersistentVolumesClaimsEndpoint.java |   2 -
 .../kubernetes/pods/KubernetesPodsConsumer.java    |   8 +-
 .../kubernetes/pods/KubernetesPodsEndpoint.java    |   2 -
 .../KubernetesReplicationControllersConsumer.java  |   8 +-
 .../KubernetesReplicationControllersEndpoint.java  |   2 -
 .../KubernetesResourcesQuotaEndpoint.java          |   2 -
 .../secrets/KubernetesSecretsEndpoint.java         |   2 -
 .../KubernetesServiceAccountsEndpoint.java         |   2 -
 .../services/KubernetesServicesConsumer.java       |   9 +-
 .../services/KubernetesServicesEndpoint.java       |   2 -
 .../OpenshiftBuildConfigsEndpoint.java             |   2 -
 .../OpenshiftBuildConfigsProducer.java             |   8 +-
 .../openshift/builds/OpenshiftBuildsEndpoint.java  |   2 -
 .../openshift/builds/OpenshiftBuildsProducer.java  |   8 +-
 .../leveldb/LevelDBAggregationRepository.java      |  45 ++++----
 .../component/linkedin/LinkedInComponent.java      |   6 +-
 .../apache/camel/component/mail/MailConsumer.java  |  77 +++++++-------
 .../apache/camel/component/mail/MailProducer.java  |   8 +-
 .../component/metrics/AbstractMetricsProducer.java |   1 -
 .../camel/component/metrics/GaugeProducer.java     |   8 +-
 .../camel/component/metrics/HistogramProducer.java |   6 +-
 .../camel/component/metrics/MetricsComponent.java  |  14 +--
 .../camel/component/metrics/TimerProducer.java     |  10 +-
 .../component/micrometer/MicrometerComponent.java  |   6 +-
 .../camel/component/micrometer/TimerProducer.java  |   9 +-
 .../component/milo/client/MiloClientComponent.java |   8 +-
 .../component/milo/client/MiloClientConsumer.java  |   8 +-
 .../component/milo/client/MiloClientProducer.java  |   6 +-
 .../component/milo/server/MiloServerComponent.java |  14 +--
 .../component/milo/server/MiloServerProducer.java  |   6 +-
 .../apache/camel/component/mllp/MllpEndpoint.java  |   8 +-
 .../component/mongodb/gridfs/GridFsEndpoint.java   |  10 +-
 .../camel/component/mongodb3/MongoDbComponent.java |   2 -
 .../camel/component/mongodb3/MongoDbEndpoint.java  |  14 +--
 .../camel/component/mongodb3/MongoDbProducer.java  |  13 +--
 .../apache/camel/component/mqtt/MQTTEndpoint.java  |  37 +++----
 .../component/mybatis/MyBatisBeanProducer.java     |  17 ++-
 .../camel/component/mybatis/MyBatisConsumer.java   |  10 +-
 .../apache/camel/component/nats/NatsConsumer.java  |  16 ++-
 .../apache/camel/component/nats/NatsProducer.java  |  16 ++-
 .../component/netty4/http/NettyHttpComponent.java  |   8 +-
 .../component/netty4/http/NettyHttpEndpoint.java   |   9 +-
 .../camel/component/netty4/NettyConsumer.java      |  12 +--
 .../camel/component/netty4/NettyProducer.java      |  74 +++++++------
 .../camel/opentracing/OpenTracingTracer.java       |  34 +++---
 .../apache/camel/component/paho/PahoConsumer.java  |  12 +--
 .../apache/camel/component/paho/PahoEndpoint.java  |   8 +-
 .../apache/camel/component/paho/PahoProducer.java  |   6 +-
 .../component/paxlogging/PaxLoggingConsumer.java   |   7 +-
 .../apache/camel/component/pdf/PdfProducer.java    |   9 +-
 .../camel/component/pgevent/PgEventConsumer.java   |   8 +-
 .../camel/component/pgevent/PgEventEndpoint.java   |  13 +--
 .../camel/component/pubnub/PubNubConsumer.java     |   8 +-
 .../camel/component/pubnub/PubNubProducer.java     |  22 ++--
 .../camel/component/quartz2/QuartzComponent.java   |  36 +++----
 .../camel/component/quartz2/QuartzEndpoint.java    |  28 +++--
 .../QuartzScheduledPollConsumerScheduler.java      |  21 ++--
 .../component/quickfixj/QuickfixjComponent.java    |   8 +-
 .../component/quickfixj/QuickfixjEndpoint.java     |   8 +-
 .../camel/component/quickfixj/QuickfixjEngine.java |  12 +--
 .../component/rabbitmq/RabbitMQComponent.java      |  12 +--
 .../reactive/streams/ReactiveStreamsConsumer.java  |   5 +-
 .../rest/swagger/RestSwaggerEndpoint.java          |   2 -
 .../camel/component/restlet/RestletComponent.java  |  22 ++--
 .../camel/component/restlet/RestletConsumer.java   |   6 +-
 .../camel/component/restlet/RestletProducer.java   |  27 +++--
 .../component/salesforce/SalesforceComponent.java  |  14 +--
 .../component/salesforce/SalesforceEndpoint.java   |  12 +--
 .../internal/client/DefaultCompositeApiClient.java |   4 +-
 .../camel/component/xquery/XQueryEndpoint.java     |   6 +-
 .../component/schematron/SchematronEndpoint.java   |  14 +--
 .../camel/component/servlet/ServletComponent.java  |   6 +-
 .../camel/component/sjms/jms/JmsBinding.java       |  10 +-
 .../camel/component/slack/SlackConsumer.java       |   6 +-
 .../apache/camel/component/smpp/SmppConsumer.java  |  22 ++--
 .../apache/camel/component/smpp/SmppProducer.java  |  22 ++--
 .../apache/camel/component/snmp/SnmpEndpoint.java  |   6 +-
 .../apache/camel/component/snmp/SnmpOIDPoller.java |  26 ++---
 .../apache/camel/component/snmp/SnmpProducer.java  |  12 +--
 .../camel/component/snmp/SnmpTrapConsumer.java     |  32 +++---
 .../camel/component/snmp/SnmpTrapProducer.java     |  14 +--
 .../camel/dataformat/soap/SoapJaxbDataFormat.java  |  12 +--
 .../apache/camel/component/solr/SolrComponent.java |  11 +-
 .../camel/component/splunk/SplunkConsumer.java     |  12 +--
 .../camel/component/splunk/SplunkEndpoint.java     |   5 +-
 .../apache/camel/spring/boot/RoutesCollector.java  |   4 +-
 .../spring/ws/SpringWebserviceComponent.java       |   7 +-
 .../spring/ws/SpringWebserviceProducer.java        |   9 +-
 .../spring/spi/SpringManagementMBeanAssembler.java |   9 +-
 .../apache/camel/component/sql/SqlComponent.java   |   7 +-
 .../camel/component/stream/StreamConsumer.java     |  19 ++--
 .../camel/component/stream/StreamEndpoint.java     |   5 +-
 .../camel/component/stream/StreamProducer.java     |  21 ++--
 .../camel/component/thrift/ThriftConsumer.java     |  19 ++--
 .../camel/component/thrift/ThriftProducer.java     |  19 ++--
 .../component/undertow/UndertowComponent.java      |   1 -
 .../camel/component/undertow/UndertowConsumer.java |   5 +-
 .../camel/component/undertow/UndertowEndpoint.java |   5 +-
 .../camel/component/undertow/UndertowProducer.java |  11 +-
 .../undertow/handlers/CamelWebSocketHandler.java   |   2 +-
 .../camel/component/vertx/VertxComponent.java      |  19 ++--
 .../camel/component/vertx/VertxConsumer.java       |  18 ++--
 .../camel/component/vertx/VertxProducer.java       |  10 +-
 .../camel/component/weather/WeatherConsumer.java   |  10 +-
 .../apache/camel/component/xmpp/XmppComponent.java |   7 +-
 .../apache/camel/component/xmpp/XmppConsumer.java  |  28 +++--
 .../apache/camel/component/xmpp/XmppEndpoint.java  |  17 ++-
 348 files changed, 1789 insertions(+), 2659 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
index f2fda69..28a81f0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
@@ -32,7 +32,6 @@ import org.slf4j.LoggerFactory;
  */
 public class BeanComponent extends DefaultComponent {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BeanComponent.class);
     // use an internal soft cache for BeanInfo as they are costly to introspect
     // for example the bean language using OGNL expression runs much faster reusing the BeanInfo from this cache
     @SuppressWarnings("unchecked")
@@ -69,9 +68,9 @@ public class BeanComponent extends DefaultComponent {
 
     @Override
     protected void doShutdown() throws Exception {
-        if (LOG.isDebugEnabled() && beanInfoCache instanceof LRUCache) {
+        if (log.isDebugEnabled() && beanInfoCache instanceof LRUCache) {
             LRUCache cache = (LRUCache) this.beanInfoCache;
-            LOG.debug("Clearing BeanInfo cache[size={}, hits={}, misses={}, evicted={}]", cache.size(), cache.getHits(), cache.getMisses(), cache.getEvicted());
+            log.debug("Clearing BeanInfo cache[size={}, hits={}, misses={}, evicted={}]", cache.size(), cache.getHits(), cache.getMisses(), cache.getEvicted());
         }
         beanInfoCache.clear();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
index 126ea9c..bd8b267 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
@@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class DirectProducer extends DefaultAsyncProducer {
-    private static final transient Logger LOG = LoggerFactory.getLogger(DirectProducer.class);
+
     private final DirectEndpoint endpoint;
 
     public DirectProducer(DirectEndpoint endpoint) {
@@ -54,7 +54,7 @@ public class DirectProducer extends DefaultAsyncProducer {
             if (endpoint.isFailIfNoConsumers()) {
                 throw new DirectConsumerNotAvailableException("No consumers available on endpoint: " + endpoint, exchange);
             } else {
-                LOG.debug("message ignored, no consumers available on endpoint: {}", endpoint);
+                log.debug("message ignored, no consumers available on endpoint: {}", endpoint);
             }
         } else {
             consumer.getProcessor().process(exchange);
@@ -68,7 +68,7 @@ public class DirectProducer extends DefaultAsyncProducer {
                 if (endpoint.isFailIfNoConsumers()) {
                     exchange.setException(new DirectConsumerNotAvailableException("No consumers available on endpoint: " + endpoint, exchange));
                 } else {
-                    LOG.debug("message ignored, no consumers available on endpoint: {}", endpoint);
+                    log.debug("message ignored, no consumers available on endpoint: {}", endpoint);
                 }
                 callback.done(true);
                 return true;
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
index 22d3f63..a2e14ed 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
  * consumer is available, but actual consumer execution will happen concurrently.
  */
 public class DirectVmBlockingProducer extends DefaultAsyncProducer {
-    private static final Logger LOG = LoggerFactory.getLogger(DirectVmBlockingProducer.class);
+
     private final DirectVmEndpoint endpoint;
 
     public DirectVmBlockingProducer(DirectVmEndpoint endpoint) {
@@ -79,8 +79,8 @@ public class DirectVmBlockingProducer extends DefaultAsyncProducer {
         while (!done) {
             // sleep a bit to give chance for the consumer to be ready
             Thread.sleep(500);
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Waited {} for consumer to be ready", watch.taken());
+            if (log.isDebugEnabled()) {
+                log.debug("Waited {} for consumer to be ready", watch.taken());
             }
 
             answer = endpoint.getConsumer();
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
index 2844f6a..c74c3e5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
@@ -29,7 +29,6 @@ import org.slf4j.LoggerFactory;
 */
 public final class DirectVmProcessor extends DelegateAsyncProcessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DirectVmProcessor.class);
     private final DirectVmEndpoint endpoint;
 
     public DirectVmProcessor(Processor processor, DirectVmEndpoint endpoint) {
@@ -48,7 +47,7 @@ public final class DirectVmProcessor extends DelegateAsyncProcessor {
             // set TCCL to application context class loader if given
             ClassLoader appClassLoader = endpoint.getCamelContext().getApplicationContextClassLoader();
             if (appClassLoader != null) {
-                LOG.trace("Setting Thread ContextClassLoader to {}", appClassLoader);
+                log.trace("Setting Thread ContextClassLoader to {}", appClassLoader);
                 Thread.currentThread().setContextClassLoader(appClassLoader);
                 changed = true;
             }
@@ -60,7 +59,7 @@ public final class DirectVmProcessor extends DelegateAsyncProcessor {
                     try {
                         // restore TCCL if it was changed during processing
                         if (chgd) {
-                            LOG.trace("Restoring Thread ContextClassLoader to {}", current);
+                            log.trace("Restoring Thread ContextClassLoader to {}", current);
                             Thread.currentThread().setContextClassLoader(current);
                         }
                         // make sure to copy results back
@@ -74,7 +73,7 @@ public final class DirectVmProcessor extends DelegateAsyncProcessor {
         } finally {
             // restore TCCL if it was changed during processing
             if (changed) {
-                LOG.trace("Restoring Thread ContextClassLoader to {}", current);
+                log.trace("Restoring Thread ContextClassLoader to {}", current);
                 Thread.currentThread().setContextClassLoader(current);
             }
         }
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
index ff01940..4ffd8e1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * Base class for file consumers.
  */
 public abstract class GenericFileConsumer<T> extends ScheduledBatchPollingConsumer {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
+
     protected GenericFileEndpoint<T> endpoint;
     protected GenericFileOperations<T> operations;
     protected GenericFileProcessStrategy<T> processStrategy;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java
index c5f4001..91ec5fa 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java
@@ -29,8 +29,6 @@ import org.slf4j.LoggerFactory;
 
 public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(GenericFilePollingConsumer.class);
-
     private final long delay;
 
     public GenericFilePollingConsumer(GenericFileEndpoint endpoint) throws Exception {
@@ -76,8 +74,8 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
 
     @Override
     public Exchange receiveNoWait() {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("receiveNoWait polling file: {}", getConsumer().getEndpoint());
+        if (log.isTraceEnabled()) {
+            log.trace("receiveNoWait polling file: {}", getConsumer().getEndpoint());
         }
         int polled = doReceive(0);
         if (polled > 0) {
@@ -89,8 +87,8 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
 
     @Override
     public Exchange receive() {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("receive polling file: {}", getConsumer().getEndpoint());
+        if (log.isTraceEnabled()) {
+            log.trace("receive polling file: {}", getConsumer().getEndpoint());
         }
         int polled = doReceive(Long.MAX_VALUE);
         if (polled > 0) {
@@ -102,8 +100,8 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
 
     @Override
     public Exchange receive(long timeout) {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("receive({}) polling file: {}", timeout, getConsumer().getEndpoint());
+        if (log.isTraceEnabled()) {
+            log.trace("receive({}) polling file: {}", timeout, getConsumer().getEndpoint());
         }
         int polled = doReceive(timeout);
         if (polled > 0) {
@@ -130,9 +128,9 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
                 if (isRunAllowed()) {
 
                     if (retryCounter == -1) {
-                        LOG.trace("Starting to poll: {}", this.getEndpoint());
+                        log.trace("Starting to poll: {}", this.getEndpoint());
                     } else {
-                        LOG.debug("Retrying attempt {} to poll: {}", retryCounter, this.getEndpoint());
+                        log.debug("Retrying attempt {} to poll: {}", retryCounter, this.getEndpoint());
                     }
 
                     // mark we are polling which should also include the begin/poll/commit
@@ -140,7 +138,7 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
                     if (begin) {
                         retryCounter++;
                         polledMessages = getConsumer().poll();
-                        LOG.trace("Polled {} messages", polledMessages);
+                        log.trace("Polled {} messages", polledMessages);
 
                         if (polledMessages == 0 && sendEmptyMessageWhenIdle) {
                             // send an "empty" exchange
@@ -152,11 +150,11 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
 
                         pollStrategy.commit(getConsumer(), getEndpoint(), polledMessages);
                     } else {
-                        LOG.debug("Cannot begin polling as pollStrategy returned false: {}", pollStrategy);
+                        log.debug("Cannot begin polling as pollStrategy returned false: {}", pollStrategy);
                     }
                 }
 
-                LOG.trace("Finished polling: {}", this.getEndpoint());
+                log.trace("Finished polling: {}", this.getEndpoint());
             } catch (Exception e) {
                 try {
                     boolean retry = pollStrategy.rollback(getConsumer(), getEndpoint(), retryCounter, e);
@@ -205,7 +203,7 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
     public void process(Exchange exchange) throws Exception {
         Object name = exchange.getIn().getHeader(Exchange.FILE_NAME);
         if (name != null) {
-            LOG.debug("Received file: {}", name);
+            log.debug("Received file: {}", name);
         }
         super.process(exchange);
     }
@@ -221,11 +219,11 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
         process(exchange);
     }
 
-    private static void sleep(long delay) throws InterruptedException {
+    private void sleep(long delay) throws InterruptedException {
         if (delay <= 0) {
             return;
         }
-        LOG.trace("Sleeping for: {} millis", delay);
+        log.trace("Sleeping for: {} millis", delay);
         Thread.sleep(delay);
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
index 7ae8ba2..b24edd2 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
@@ -42,8 +42,6 @@ import org.slf4j.LoggerFactory;
  */
 public class FileIdempotentChangedRepositoryReadLockStrategy extends ServiceSupport implements GenericFileExclusiveReadLockStrategy<File>, CamelContextAware {
 
-    private static final transient Logger LOG = LoggerFactory.getLogger(FileIdempotentChangedRepositoryReadLockStrategy.class);
-
     private final FileChangedExclusiveReadLockStrategy changed;
     private GenericFileEndpoint<File> endpoint;
     private LoggingLevel readLockLoggingLevel = LoggingLevel.DEBUG;
@@ -67,7 +65,7 @@ public class FileIdempotentChangedRepositoryReadLockStrategy extends ServiceSupp
     @Override
     public void prepareOnStartup(GenericFileOperations<File> operations, GenericFileEndpoint<File> endpoint) throws Exception {
         this.endpoint = endpoint;
-        LOG.info("Using FileIdempotentRepositoryReadLockStrategy: {} on endpoint: {}", idempotentRepository, endpoint);
+        log.info("Using FileIdempotentRepositoryReadLockStrategy: {} on endpoint: {}", idempotentRepository, endpoint);
 
         changed.prepareOnStartup(operations, endpoint);
     }
@@ -85,7 +83,7 @@ public class FileIdempotentChangedRepositoryReadLockStrategy extends ServiceSupp
         boolean answer = idempotentRepository.add(key);
         if (!answer) {
             // another node is processing the file so skip
-            CamelLogger.log(LOG, readLockLoggingLevel, "Cannot acquire read lock. Will skip the file: " + file);
+            CamelLogger.log(log, readLockLoggingLevel, "Cannot acquire read lock. Will skip the file: " + file);
         }
 
         if (answer) {
@@ -118,15 +116,15 @@ public class FileIdempotentChangedRepositoryReadLockStrategy extends ServiceSupp
             try {
                 changed.releaseExclusiveReadLockOnRollback(operations, file, exchange);
             } catch (Exception e) {
-                LOG.warn("Error during releasing exclusive readlock on rollback. This exception is ignored.", e);
+                log.warn("Error during releasing exclusive readlock on rollback. This exception is ignored.", e);
             }
         };
 
         if (readLockIdempotentReleaseDelay > 0 && readLockIdempotentReleaseExecutorService != null) {
-            LOG.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
             readLockIdempotentReleaseExecutorService.schedule(r, readLockIdempotentReleaseDelay, TimeUnit.MILLISECONDS);
         } else if (readLockIdempotentReleaseDelay > 0) {
-            LOG.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
             Thread.sleep(readLockIdempotentReleaseDelay);
             r.run();
         } else {
@@ -148,15 +146,15 @@ public class FileIdempotentChangedRepositoryReadLockStrategy extends ServiceSupp
             try {
                 changed.releaseExclusiveReadLockOnCommit(operations, file, exchange);
             } catch (Exception e) {
-                LOG.warn("Error during releasing exclusive readlock on rollback. This exception is ignored.", e);
+                log.warn("Error during releasing exclusive readlock on rollback. This exception is ignored.", e);
             }
         };
 
         if (readLockIdempotentReleaseDelay > 0 && readLockIdempotentReleaseExecutorService != null) {
-            LOG.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
             readLockIdempotentReleaseExecutorService.schedule(r, readLockIdempotentReleaseDelay, TimeUnit.MILLISECONDS);
         } else if (readLockIdempotentReleaseDelay > 0) {
-            LOG.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
             Thread.sleep(readLockIdempotentReleaseDelay);
             r.run();
         } else {
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
index 790f6d0..d6878e5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
@@ -40,8 +40,6 @@ import org.slf4j.LoggerFactory;
  */
 public class FileIdempotentRenameRepositoryReadLockStrategy extends ServiceSupport implements GenericFileExclusiveReadLockStrategy<File>, CamelContextAware {
 
-    private static final transient Logger LOG = LoggerFactory.getLogger(FileIdempotentRenameRepositoryReadLockStrategy.class);
-
     private final FileRenameExclusiveReadLockStrategy rename;
     private GenericFileEndpoint<File> endpoint;
     private LoggingLevel readLockLoggingLevel = LoggingLevel.DEBUG;
@@ -60,7 +58,7 @@ public class FileIdempotentRenameRepositoryReadLockStrategy extends ServiceSuppo
     @Override
     public void prepareOnStartup(GenericFileOperations<File> operations, GenericFileEndpoint<File> endpoint) throws Exception {
         this.endpoint = endpoint;
-        LOG.info("Using FileIdempotentRepositoryReadLockStrategy: {} on endpoint: {}", idempotentRepository, endpoint);
+        log.info("Using FileIdempotentRepositoryReadLockStrategy: {} on endpoint: {}", idempotentRepository, endpoint);
 
         rename.prepareOnStartup(operations, endpoint);
     }
@@ -78,7 +76,7 @@ public class FileIdempotentRenameRepositoryReadLockStrategy extends ServiceSuppo
         boolean answer = idempotentRepository.add(key);
         if (!answer) {
             // another node is processing the file so skip
-            CamelLogger.log(LOG, readLockLoggingLevel, "Cannot acquire read lock. Will skip the file: " + file);
+            CamelLogger.log(log, readLockLoggingLevel, "Cannot acquire read lock. Will skip the file: " + file);
         }
 
         if (answer) {
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
index d9a1f06..75b0e84 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
@@ -42,8 +42,6 @@ import org.slf4j.LoggerFactory;
  */
 public class FileIdempotentRepositoryReadLockStrategy extends ServiceSupport implements GenericFileExclusiveReadLockStrategy<File>, CamelContextAware {
 
-    private static final transient Logger LOG = LoggerFactory.getLogger(FileIdempotentRepositoryReadLockStrategy.class);
-
     private GenericFileEndpoint<File> endpoint;
     private LoggingLevel readLockLoggingLevel = LoggingLevel.DEBUG;
     private CamelContext camelContext;
@@ -59,7 +57,7 @@ public class FileIdempotentRepositoryReadLockStrategy extends ServiceSupport imp
     @Override
     public void prepareOnStartup(GenericFileOperations<File> operations, GenericFileEndpoint<File> endpoint) throws Exception {
         this.endpoint = endpoint;
-        LOG.info("Using FileIdempotentRepositoryReadLockStrategy: {} on endpoint: {}", idempotentRepository, endpoint);
+        log.info("Using FileIdempotentRepositoryReadLockStrategy: {} on endpoint: {}", idempotentRepository, endpoint);
     }
 
     @Override
@@ -75,7 +73,7 @@ public class FileIdempotentRepositoryReadLockStrategy extends ServiceSupport imp
         boolean answer = idempotentRepository.add(key);
         if (!answer) {
             // another node is processing the file so skip
-            CamelLogger.log(LOG, readLockLoggingLevel, "Cannot acquire read lock. Will skip the file: " + file);
+            CamelLogger.log(log, readLockLoggingLevel, "Cannot acquire read lock. Will skip the file: " + file);
         }
         return answer;
     }
@@ -98,10 +96,10 @@ public class FileIdempotentRepositoryReadLockStrategy extends ServiceSupport imp
         };
 
         if (readLockIdempotentReleaseDelay > 0 && readLockIdempotentReleaseExecutorService != null) {
-            LOG.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
             readLockIdempotentReleaseExecutorService.schedule(r, readLockIdempotentReleaseDelay, TimeUnit.MILLISECONDS);
         } else if (readLockIdempotentReleaseDelay > 0) {
-            LOG.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
             Thread.sleep(readLockIdempotentReleaseDelay);
             r.run();
         } else {
@@ -122,10 +120,10 @@ public class FileIdempotentRepositoryReadLockStrategy extends ServiceSupport imp
         };
 
         if (readLockIdempotentReleaseDelay > 0 && readLockIdempotentReleaseExecutorService != null) {
-            LOG.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Scheduling readlock release task to run asynchronous delayed after {} millis", readLockIdempotentReleaseDelay);
             readLockIdempotentReleaseExecutorService.schedule(r, readLockIdempotentReleaseDelay, TimeUnit.MILLISECONDS);
         } else if (readLockIdempotentReleaseDelay > 0) {
-            LOG.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
+            log.debug("Delaying readlock release task {} millis", readLockIdempotentReleaseDelay);
             Thread.sleep(readLockIdempotentReleaseDelay);
             r.run();
         } else {
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
index ce067e0..5c145ec 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
@@ -38,7 +38,6 @@ import org.slf4j.LoggerFactory;
  * Base class for implementations of {@link GenericFileProcessStrategy}.
  */
 public abstract class GenericFileProcessStrategySupport<T> extends ServiceSupport implements GenericFileProcessStrategy<T>, CamelContextAware {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
     protected GenericFileExclusiveReadLockStrategy<T> exclusiveReadLockStrategy;
     protected CamelContext camelContext;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index fac80e6..160649f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -36,7 +36,6 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class LogComponent extends DefaultComponent {
-    private static final Logger LOG = LoggerFactory.getLogger(LogComponent.class);
 
     @Metadata(label = "advanced")
     private ExchangeFormatter exchangeFormatter;
@@ -53,9 +52,9 @@ public class LogComponent extends DefaultComponent {
             Map<String, Logger> availableLoggers = getCamelContext().getRegistry().findByTypeWithName(Logger.class);
             if (availableLoggers.size() == 1) {
                 providedLogger = availableLoggers.values().iterator().next();
-                LOG.info("Using custom Logger: {}", providedLogger);
+                log.info("Using custom Logger: {}", providedLogger);
             } else if (availableLoggers.size() > 1) {
-                LOG.info("More than one {} instance found in the registry. Falling back to creating logger from URI {}.", Logger.class.getName(), uri);
+                log.info("More than one {} instance found in the registry. Falling back to creating logger from URI {}.", Logger.class.getName(), uri);
             }
         }
         
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index 9c0663e..fcdb07d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -94,7 +94,7 @@ import org.slf4j.LoggerFactory;
  */
 @UriEndpoint(firstVersion = "1.0.0", scheme = "mock", title = "Mock", syntax = "mock:name", producerOnly = true, label = "core,testing", lenientProperties = true)
 public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
-    private static final Logger LOG = LoggerFactory.getLogger(MockEndpoint.class);
+
     // must be volatile so changes is visible between the thread which performs the assertions
     // and the threads which process the exchanges when routing messages in Camel
     protected volatile Processor reporter;
@@ -373,12 +373,12 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
      *                should wait for the test to be true
      */
     public void assertIsSatisfied(long timeoutForEmptyEndpoints) throws InterruptedException {
-        LOG.info("Asserting: {} is satisfied", this);
+        log.info("Asserting: {} is satisfied", this);
         doAssertIsSatisfied(timeoutForEmptyEndpoints);
         if (assertPeriod > 0) {
             // if an assert period was set then re-assert again to ensure the assertion is still valid
             Thread.sleep(assertPeriod);
-            LOG.info("Re-asserting: {} is satisfied after {} millis", this, assertPeriod);
+            log.info("Re-asserting: {} is satisfied after {} millis", this, assertPeriod);
             // do not use timeout when we re-assert
             doAssertIsSatisfied(0);
         }
@@ -387,7 +387,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
     protected void doAssertIsSatisfied(long timeoutForEmptyEndpoints) throws InterruptedException {
         if (expectedCount == 0) {
             if (timeoutForEmptyEndpoints > 0) {
-                LOG.debug("Sleeping for: {} millis to check there really are no messages received", timeoutForEmptyEndpoints);
+                log.debug("Sleeping for: {} millis to check there really are no messages received", timeoutForEmptyEndpoints);
                 Thread.sleep(timeoutForEmptyEndpoints);
             }
             assertEquals("Received message count", expectedCount, getReceivedCounter());
@@ -411,7 +411,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
 
         for (Throwable failure : failures) {
             if (failure != null) {
-                LOG.error("Caught on " + getEndpointUri() + " Exception: " + failure, failure);
+                log.error("Caught on " + getEndpointUri() + " Exception: " + failure, failure);
                 fail("Failed due to caught exception: " + failure);
             }
         }
@@ -427,7 +427,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
             // did not throw expected error... fail!
             failed = true;
         } catch (AssertionError e) {
-            LOG.info("Caught expected failure: {}", e);
+            log.info("Caught expected failure: {}", e);
         }
         if (failed) {
             // fail() throws the AssertionError to indicate the test failed. 
@@ -448,7 +448,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
             // did not throw expected error... fail!
             failed = true;
         } catch (AssertionError e) {
-            LOG.info("Caught expected failure: {}", e);
+            log.info("Caught expected failure: {}", e);
         }
         if (failed) { 
             // fail() throws the AssertionError to indicate the test failed. 
@@ -1368,12 +1368,12 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
         }
 
         // let counter be 0 index-based in the logs
-        if (LOG.isDebugEnabled()) {
+        if (log.isDebugEnabled()) {
             String msg = getEndpointUri() + " >>>> " + counter + " : " + copy + " with body: " + actualBody;
             if (copy.getIn().hasHeaders()) {
                 msg += " and headers:" + copy.getIn().getHeaders();
             }
-            LOG.debug(msg);
+            log.debug(msg);
         }
 
         // record timestamp when exchange was received
@@ -1439,7 +1439,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
         StopWatch watch = new StopWatch();
         waitForCompleteLatch(resultWaitTime);
         long delta = watch.taken();
-        LOG.debug("Took {} millis to complete latch", delta);
+        log.debug("Took {} millis to complete latch", delta);
 
         if (resultMinimumWaitTime > 0 && delta < resultMinimumWaitTime) {
             fail("Expected minimum " + resultMinimumWaitTime
@@ -1452,7 +1452,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
         long waitTime = timeout == 0 ? 10000L : timeout;
 
         // now let's wait for the results
-        LOG.debug("Waiting on the latch for: {} millis", timeout);
+        log.debug("Waiting on the latch for: {} millis", timeout);
         latch.await(waitTime, TimeUnit.MILLISECONDS);
     }
 
@@ -1469,11 +1469,11 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
     }
 
     protected void fail(Object message) {
-        if (LOG.isDebugEnabled()) {
+        if (log.isDebugEnabled()) {
             List<Exchange> list = getReceivedExchanges();
             int index = 0;
             for (Exchange exchange : list) {
-                LOG.debug("{} failed and received[{}]: {}", getEndpointUri(), ++index, exchange);
+                log.debug("{} failed and received[{}]: {}", getEndpointUri(), ++index, exchange);
             }
         }
         throw new AssertionError(getEndpointUri() + " " + message);
diff --git a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index 690df1c..873a675 100644
--- a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -75,7 +75,6 @@ public class PropertiesComponent extends DefaultComponent {
      */
     public static final String OVERRIDE_PROPERTIES = PropertiesComponent.class.getName() + ".OverrideProperties";
 
-    private static final Logger LOG = LoggerFactory.getLogger(PropertiesComponent.class);
     @SuppressWarnings("unchecked")
     private final Map<CacheKey, Properties> cacheMap = LRUCacheFactory.newLRUSoftCache(1000);
     private final Map<String, PropertiesFunction> functions = new HashMap<>();
@@ -146,12 +145,12 @@ public class PropertiesComponent extends DefaultComponent {
         // override default locations
         String locations = getAndRemoveParameter(parameters, "locations", String.class);
         if (locations != null) {
-            LOG.trace("Overriding default locations with location: {}", locations);
+            log.trace("Overriding default locations with location: {}", locations);
             paths = Arrays.stream(locations.split(",")).map(PropertiesLocation::new).collect(Collectors.toList());
         }
 
         String endpointUri = parseUri(remaining, paths);
-        LOG.debug("Endpoint uri parsed as: {}", endpointUri);
+        log.debug("Endpoint uri parsed as: {}", endpointUri);
 
         Endpoint delegate = getCamelContext().getEndpoint(endpointUri);
         PropertiesEndpoint answer = new PropertiesEndpoint(uri, delegate, this);
@@ -215,7 +214,7 @@ public class PropertiesComponent extends DefaultComponent {
             uri = uri + suffixToken;
         }
 
-        LOG.trace("Parsing uri {} with properties: {}", uri, prop);
+        log.trace("Parsing uri {} with properties: {}", uri, prop);
         
         if (propertiesParser instanceof AugmentedPropertyNameAwarePropertiesParser) {
             return ((AugmentedPropertyNameAwarePropertiesParser) propertiesParser).parseUri(
@@ -529,11 +528,11 @@ public class PropertiesComponent extends DefaultComponent {
         List<PropertiesLocation> answer = new ArrayList<>();
 
         for (PropertiesLocation location : locations) {
-            LOG.trace("Parsing location: {}", location);
+            log.trace("Parsing location: {}", location);
 
             try {
                 String path = FilePathResolver.resolvePath(location.getPath());
-                LOG.debug("Parsed location: {}", path);
+                log.debug("Parsed location: {}", path);
                 if (ObjectHelper.isNotEmpty(path)) {
                     answer.add(new PropertiesLocation(
                         location.getResolver(),
@@ -545,7 +544,7 @@ public class PropertiesComponent extends DefaultComponent {
                 if (!ignoreMissingLocation && !location.isOptional()) {
                     throw e;
                 } else {
-                    LOG.debug("Ignored missing location: {}", location);
+                    log.debug("Ignored missing location: {}", location);
                 }
             }
         }
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
index 7e63034..4a11e45 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
@@ -54,8 +54,6 @@ public class RestEndpoint extends DefaultEndpoint {
     public static final String DEFAULT_API_COMPONENT_NAME = "swagger";
     public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/rest/";
 
-    private static final Logger LOG = LoggerFactory.getLogger(RestEndpoint.class);
-
     @UriPath(label = "common", enums = "get,post,put,delete,patch,head,trace,connect,options") @Metadata(required = "true")
     private String method;
     @UriPath(label = "common") @Metadata(required = "true")
@@ -282,7 +280,7 @@ public class RestEndpoint extends DefaultEndpoint {
         RestProducerFactory factory = null;
 
         if (apiDoc != null) {
-            LOG.debug("Discovering camel-swagger-java on classpath for using api-doc: {}", apiDoc);
+            log.debug("Discovering camel-swagger-java on classpath for using api-doc: {}", apiDoc);
             // lookup on classpath using factory finder to automatic find it (just add camel-swagger-java to classpath etc)
             try {
                 FactoryFinder finder = getCamelContext().getFactoryFinder(RESOURCE_PATH);
@@ -358,13 +356,13 @@ public class RestEndpoint extends DefaultEndpoint {
                 }
             }
             if (found != null) {
-                LOG.debug("Auto discovered {} as RestProducerFactory", foundName);
+                log.debug("Auto discovered {} as RestProducerFactory", foundName);
                 factory = found;
             }
         }
 
         if (factory != null) {
-            LOG.debug("Using RestProducerFactory: {}", factory);
+            log.debug("Using RestProducerFactory: {}", factory);
             
             RestConfiguration config = getCamelContext().getRestConfiguration(cname, true);
 
@@ -450,7 +448,7 @@ public class RestEndpoint extends DefaultEndpoint {
                 }
             }
             if (found != null) {
-                LOG.debug("Auto discovered {} as RestConsumerFactory", foundName);
+                log.debug("Auto discovered {} as RestConsumerFactory", foundName);
                 factory = found;
             }
         }
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
index bae2d20..2bd21f3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
@@ -54,7 +54,6 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class SedaConsumer extends ServiceSupport implements Consumer, Runnable, ShutdownAware, Suspendable {
-    private static final Logger LOG = LoggerFactory.getLogger(SedaConsumer.class);
 
     private final AtomicInteger taskCount = new AtomicInteger();
     private volatile CountDownLatch latch;
@@ -114,7 +113,7 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
         // if we are suspending then we want to keep the thread running but just not route the exchange
         // this logic is only when we stop or shutdown the consumer
         if (suspendOnly) {
-            LOG.debug("Skip preparing to shutdown as consumer is being suspended");
+            log.debug("Skip preparing to shutdown as consumer is being suspended");
             return;
         }
 
@@ -123,7 +122,7 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
         forceShutdown = forced;
 
         if (latch != null) {
-            LOG.debug("Preparing to shutdown, waiting for {} consumer threads to complete.", latch.getCount());
+            log.debug("Preparing to shutdown, waiting for {} consumer threads to complete.", latch.getCount());
 
             // wait for all threads to end
             try {
@@ -156,7 +155,7 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
         } finally {
             taskCount.decrementAndGet();
             latch.countDown();
-            LOG.debug("Ending this polling consumer thread, there are still {} consumer threads left.", latch.getCount());
+            log.debug("Ending this polling consumer thread, there are still {} consumer threads left.", latch.getCount());
         }
     }
 
@@ -167,12 +166,12 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
 
             // do not poll during CamelContext is starting, as we should only poll when CamelContext is fully started
             if (getEndpoint().getCamelContext().getStatus().isStarting()) {
-                LOG.trace("CamelContext is starting so skip polling");
+                log.trace("CamelContext is starting so skip polling");
                 try {
                     // sleep at most 1 sec
                     Thread.sleep(Math.min(pollTimeout, 1000));
                 } catch (InterruptedException e) {
-                    LOG.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
+                    log.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
                 }
                 continue;
             }
@@ -180,16 +179,16 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
             // do not poll if we are suspended or starting again after resuming
             if (isSuspending() || isSuspended() || isStarting()) {
                 if (shutdownPending && queue.isEmpty()) {
-                    LOG.trace("Consumer is suspended and shutdown is pending, so this consumer thread is breaking out because the task queue is empty.");
+                    log.trace("Consumer is suspended and shutdown is pending, so this consumer thread is breaking out because the task queue is empty.");
                     // we want to shutdown so break out if there queue is empty
                     break;
                 } else {
-                    LOG.trace("Consumer is suspended so skip polling");
+                    log.trace("Consumer is suspended so skip polling");
                     try {
                         // sleep at most 1 sec
                         Thread.sleep(Math.min(pollTimeout, 1000));
                     } catch (InterruptedException e) {
-                        LOG.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
+                        log.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
                     }
                     continue;
                 }
@@ -199,8 +198,8 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
             try {
                 // use the end user configured poll timeout
                 exchange = queue.poll(pollTimeout, TimeUnit.MILLISECONDS);
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Polled queue {} with timeout {} ms. -> {}", ObjectHelper.getIdentityHashCode(queue), pollTimeout, exchange);
+                if (log.isTraceEnabled()) {
+                    log.trace("Polled queue {} with timeout {} ms. -> {}", ObjectHelper.getIdentityHashCode(queue), pollTimeout, exchange);
                 }
                 if (exchange != null) {
                     try {
@@ -223,12 +222,12 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
                         getExceptionHandler().handleException("Error processing exchange", exchange, e);
                     }
                 } else if (shutdownPending && queue.isEmpty()) {
-                    LOG.trace("Shutdown is pending, so this consumer thread is breaking out because the task queue is empty.");
+                    log.trace("Shutdown is pending, so this consumer thread is breaking out because the task queue is empty.");
                     // we want to shutdown so break out if there queue is empty
                     break;
                 }
             } catch (InterruptedException e) {
-                LOG.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
+                log.debug("Sleep interrupted, are we stopping? {}", isStopping() || isStopped());
                 continue;
             } catch (Throwable e) {
                 if (exchange != null) {
@@ -275,8 +274,8 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
         // if there are multiple consumers then multicast to them
         if (endpoint.isMultipleConsumersSupported()) {
 
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Multicasting to {} consumers for Exchange: {}", size, exchange);
+            if (log.isTraceEnabled()) {
+                log.trace("Multicasting to {} consumers for Exchange: {}", size, exchange);
             }
 
             // handover completions, as we need to done this when the multicast is done
@@ -290,7 +289,7 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
             mp.process(exchange, new AsyncCallback() {
                 public void done(boolean doneSync) {
                     // done the uow on the completions
-                    UnitOfWorkHelper.doneSynchronizations(exchange, completions, LOG);
+                    UnitOfWorkHelper.doneSynchronizations(exchange, completions, log);
                 }
             });
         } else {
@@ -354,7 +353,7 @@ public class SedaConsumer extends ServiceSupport implements Consumer, Runnable,
 
         // submit needed number of tasks
         int tasks = poolSize - taskCount.get();
-        LOG.debug("Creating {} consumer tasks with poll timeout {} ms.", tasks, pollTimeout);
+        log.debug("Creating {} consumer tasks with poll timeout {} ms.", tasks, pollTimeout);
         for (int i = 0; i < tasks; i++) {
             executor.execute(this);
         }
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
index dd15e80..bfa1c98 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
@@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory;
 @ManagedResource(description = "Managed SedaEndpoint")
 @UriEndpoint(firstVersion = "1.1.0", scheme = "seda", title = "SEDA", syntax = "seda:name", consumerClass = SedaConsumer.class, label = "core,endpoint")
 public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, BrowsableEndpoint, MultipleConsumersSupport {
-    private static final Logger LOG = LoggerFactory.getLogger(SedaEndpoint.class);
+
     private final Set<SedaProducer> producers = new CopyOnWriteArraySet<>();
     private final Set<SedaConsumer> consumers = new CopyOnWriteArraySet<>();
     private volatile MulticastProcessor consumerMulticastProcessor;
@@ -171,7 +171,7 @@ public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, Brow
                 QueueReference ref = getComponent().getOrCreateQueue(this, size, isMultipleConsumers(), queueFactory);
                 queue = ref.getQueue();
                 String key = getComponent().getQueueKey(getEndpointUri());
-                LOG.info("Endpoint {} is using shared queue: {} with size: {}", this, key, ref.getSize() !=  null ? ref.getSize() : Integer.MAX_VALUE);
+                log.info("Endpoint {} is using shared queue: {} with size: {}", this, key, ref.getSize() !=  null ? ref.getSize() : Integer.MAX_VALUE);
                 // and set the size we are using
                 if (ref.getSize() != null) {
                     setSize(ref.getSize());
@@ -179,7 +179,7 @@ public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, Brow
             } else {
                 // fallback and create queue (as this endpoint has no component)
                 queue = createQueue();
-                LOG.info("Endpoint {} is using queue: {} with size: {}", this, getEndpointUri(), getSize());
+                log.info("Endpoint {} is using queue: {} with size: {}", this, getEndpointUri(), getSize());
             }
         }
         return queue;
@@ -440,7 +440,7 @@ public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, Brow
      */
     @ManagedOperation(description = "Purges the seda queue")
     public void purgeQueue() {
-        LOG.debug("Purging queue with {} exchanges", queue.size());
+        log.debug("Purging queue with {} exchanges", queue.size());
         queue.clear();
     }
 
@@ -504,14 +504,14 @@ public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, Brow
         if (getConsumers().isEmpty()) {
             super.stop();
         } else {
-            LOG.debug("There is still active consumers.");
+            log.debug("There is still active consumers.");
         }
     }
 
     @Override
     public void shutdown() throws Exception {
         if (shutdown.get()) {
-            LOG.trace("Service already shut down");
+            log.trace("Service already shut down");
             return;
         }
 
@@ -523,7 +523,7 @@ public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, Brow
         if (getConsumers().isEmpty()) {
             super.shutdown();
         } else {
-            LOG.debug("There is still active consumers.");
+            log.debug("There is still active consumers.");
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java
index b30c46f..1f7d51b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java
@@ -46,7 +46,6 @@ import org.slf4j.LoggerFactory;
  */
 @UriEndpoint(firstVersion = "1.3.0", scheme = "test", title = "Test", syntax = "test:name", producerOnly = true, label = "core,testing", lenientProperties = true)
 public class TestEndpoint extends MockEndpoint {
-    private static final Logger LOG = LoggerFactory.getLogger(TestEndpoint.class);
 
     private Endpoint expectedMessageEndpoint;
 
@@ -71,7 +70,7 @@ public class TestEndpoint extends MockEndpoint {
 
     @Override
     protected void doStart() throws Exception {
-        LOG.debug("Consuming expected messages from: {}", expectedMessageEndpoint);
+        log.debug("Consuming expected messages from: {}", expectedMessageEndpoint);
 
         final List<Object> expectedBodies = new ArrayList<>();
         EndpointHelper.pollEndpoint(expectedMessageEndpoint, new Processor() {
@@ -86,7 +85,7 @@ public class TestEndpoint extends MockEndpoint {
                     Iterator it = ObjectHelper.createIterator(body, delimiter, false, true);
                     while (it.hasNext()) {
                         Object line = it.next();
-                        LOG.trace("Received message body {}", line);
+                        log.trace("Received message body {}", line);
                         expectedBodies.add(line);
                     }
                 } else {
@@ -95,7 +94,7 @@ public class TestEndpoint extends MockEndpoint {
             }
         }, timeout);
 
-        LOG.info("Received: {} expected message(s) from: {}", expectedBodies.size(), expectedMessageEndpoint);
+        log.info("Received: {} expected message(s) from: {}", expectedBodies.size(), expectedMessageEndpoint);
         if (anyOrder) {
             expectedBodiesReceivedInAnyOrder(expectedBodies);
         } else {
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
index 1dc6e88..0b99d79 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
@@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class TimerConsumer extends DefaultConsumer implements StartupListener, Suspendable {
-    private static final Logger LOG = LoggerFactory.getLogger(TimerConsumer.class);
+
     private final TimerEndpoint endpoint;
     private volatile TimerTask task;
     private volatile boolean configured;
@@ -67,7 +67,7 @@ public class TimerConsumer extends DefaultConsumer implements StartupListener, S
                 public void run() {
                     if (!isTaskRunAllowed()) {
                         // do not run timer task as it was not allowed
-                        LOG.debug("Run not allowed for timer: {}", endpoint);
+                        log.debug("Run not allowed for timer: {}", endpoint);
                         return;
                     }
 
@@ -80,13 +80,13 @@ public class TimerConsumer extends DefaultConsumer implements StartupListener, S
                         } else {
                             // no need to fire anymore as we exceeded repeat
                             // count
-                            LOG.debug("Cancelling {} timer as repeat count limit reached after {} counts.", endpoint.getTimerName(), endpoint.getRepeatCount());
+                            log.debug("Cancelling {} timer as repeat count limit reached after {} counts.", endpoint.getTimerName(), endpoint.getRepeatCount());
                             cancel();
                         }
                     } catch (Throwable e) {
                         // catch all to avoid the JVM closing the thread and not
                         // firing again
-                        LOG.warn("Error processing exchange. This exception will be ignored, to let the timer be able to trigger again.", e);
+                        log.warn("Error processing exchange. This exception will be ignored, to let the timer be able to trigger again.", e);
                     }
                 }
             };
@@ -189,8 +189,8 @@ public class TimerConsumer extends DefaultConsumer implements StartupListener, S
         // also set now on in header with same key as quartz to be consistent
         exchange.getIn().setHeader("firedTime", now);
 
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Timer {} is firing #{} count", endpoint.getTimerName(), counter);
+        if (log.isTraceEnabled()) {
+            log.trace("Timer {} is firing #{} count", endpoint.getTimerName(), counter);
         }
 
         if (!endpoint.isSynchronous()) {
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
index a2a705b..aa57b52 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
@@ -36,8 +36,6 @@ import org.slf4j.LoggerFactory;
  */
 public class XsltComponent extends DefaultComponent {
 
-    private static final Logger LOG = LoggerFactory.getLogger(XsltComponent.class);
-
     @Metadata(label = "advanced")
     private XmlConverter xmlConverter;
     @Metadata(label = "advanced")
@@ -202,7 +200,7 @@ public class XsltComponent extends DefaultComponent {
             // if its a http uri, then append additional parameters as they are part of the uri
             resourceUri = ResourceHelper.appendParameters(resourceUri, parameters);
         }
-        LOG.debug("{} using schema resource: {}", this, resourceUri);
+        log.debug("{} using schema resource: {}", this, resourceUri);
         endpoint.setResourceUri(resourceUri);
 
         if (!parameters.isEmpty()) {
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
index 96d5ac6..bd6c581 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
@@ -59,8 +59,6 @@ import org.slf4j.LoggerFactory;
 public class XsltEndpoint extends ProcessorEndpoint {
     public static final String SAXON_TRANSFORMER_FACTORY_CLASS_NAME = "net.sf.saxon.TransformerFactoryImpl";
 
-    private static final Logger LOG = LoggerFactory.getLogger(XsltEndpoint.class);
-
     private volatile boolean cacheCleared;
     private volatile XsltBuilder xslt;
     private Map<String, Object> parameters;
@@ -118,7 +116,7 @@ public class XsltEndpoint extends ProcessorEndpoint {
 
     public XsltEndpoint findOrCreateEndpoint(String uri, String newResourceUri) {
         String newUri = uri.replace(resourceUri, newResourceUri);
-        LOG.trace("Getting endpoint with URI: {}", newUri);
+        log.trace("Getting endpoint with URI: {}", newUri);
         return getCamelContext().getEndpoint(newUri, XsltEndpoint.class);
     }
 
@@ -403,7 +401,7 @@ public class XsltEndpoint extends ProcessorEndpoint {
      * @throws IOException is thrown if error loading resource
      */
     protected void loadResource(String resourceUri) throws TransformerException, IOException {
-        LOG.trace("{} loading schema resource: {}", this, resourceUri);
+        log.trace("{} loading schema resource: {}", this, resourceUri);
         Source source = xslt.getUriResolver().resolve(resourceUri, null);
         if (source == null) {
             throw new IOException("Cannot load schema resource " + resourceUri);
@@ -422,7 +420,7 @@ public class XsltEndpoint extends ProcessorEndpoint {
         final ClassResolver resolver = ctx.getClassResolver();
         final Injector injector = ctx.getInjector();
 
-        LOG.debug("{} using schema resource: {}", this, resourceUri);
+        log.debug("{} using schema resource: {}", this, resourceUri);
 
         this.xslt = injector.newInstance(XsltBuilder.class);
         if (converter != null) {
@@ -439,7 +437,7 @@ public class XsltEndpoint extends ProcessorEndpoint {
         if (factory == null && transformerFactoryClass != null) {
             // provide the class loader of this component to work in OSGi environments
             Class<TransformerFactory> factoryClass = resolver.resolveMandatoryClass(transformerFactoryClass, TransformerFactory.class, XsltComponent.class.getClassLoader());
-            LOG.debug("Using TransformerFactoryClass {}", factoryClass);
+            log.debug("Using TransformerFactoryClass {}", factoryClass);
             factory = injector.newInstance(factoryClass);
 
             if (useSaxon) {
@@ -450,7 +448,7 @@ public class XsltEndpoint extends ProcessorEndpoint {
         }
 
         if (factory != null) {
-            LOG.debug("Using TransformerFactory {}", factory);
+            log.debug("Using TransformerFactory {}", factory);
             xslt.getConverter().setTransformerFactory(factory);
         }
         if (resultHandlerFactory != null) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
index 351d0d0..02cf4c8 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
@@ -34,7 +34,6 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class ConsumerCache extends ServiceSupport {
-    private static final Logger LOG = LoggerFactory.getLogger(ConsumerCache.class);
 
     private final CamelContext camelContext;
     private final ServicePool<PollingConsumer> consumers;
@@ -98,7 +97,7 @@ public class ConsumerCache extends ServiceSupport {
     }
  
     public Exchange receive(Endpoint endpoint) {
-        LOG.debug("<<<< {}", endpoint);
+        log.debug("<<<< {}", endpoint);
         PollingConsumer consumer = null;
         try {
             consumer = acquirePollingConsumer(endpoint);
@@ -111,7 +110,7 @@ public class ConsumerCache extends ServiceSupport {
     }
 
     public Exchange receive(Endpoint endpoint, long timeout) {
-        LOG.debug("<<<< {}", endpoint);
+        log.debug("<<<< {}", endpoint);
         PollingConsumer consumer = null;
         try {
             consumer = acquirePollingConsumer(endpoint);
@@ -124,7 +123,7 @@ public class ConsumerCache extends ServiceSupport {
     }
 
     public Exchange receiveNoWait(Endpoint endpoint) {
-        LOG.debug("<<<< {}", endpoint);
+        log.debug("<<<< {}", endpoint);
         PollingConsumer consumer = null;
         try {
             consumer = acquirePollingConsumer(endpoint);
@@ -156,7 +155,7 @@ public class ConsumerCache extends ServiceSupport {
      */
     public int size() {
         int size = consumers.size();
-        LOG.trace("size = {}", size);
+        log.trace("size = {}", size);
         return size;
     }
 
@@ -222,7 +221,7 @@ public class ConsumerCache extends ServiceSupport {
             consumers.stop();
             consumers.start();
         } catch (Exception e) {
-            LOG.debug("Error restarting consumer pool", e);
+            log.debug("Error restarting consumer pool", e);
         }
         if (statistics != null) {
             statistics.clear();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java
index f0891a5..d2aa223 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java
@@ -39,8 +39,6 @@ import org.slf4j.LoggerFactory;
 
 public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements AsyncProcessorAwaitManager {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultAsyncProcessorAwaitManager.class);
-
     private final AsyncProcessorAwaitManager.Statistics statistics = new UtilizationStatistics();
     private final AtomicLong blockedCounter = new AtomicLong();
     private final AtomicLong interruptedCounter = new AtomicLong();
@@ -65,7 +63,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
 
     @Override
     public void await(Exchange exchange, CountDownLatch latch) {
-        LOG.trace("Waiting for asynchronous callback before continuing for exchangeId: {} -> {}",
+        log.trace("Waiting for asynchronous callback before continuing for exchangeId: {} -> {}",
                 exchange.getExchangeId(), exchange);
         try {
             if (statistics.isStatisticsEnabled()) {
@@ -73,11 +71,11 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
             }
             inflight.put(exchange, new AwaitThreadEntry(Thread.currentThread(), exchange, latch));
             latch.await();
-            LOG.trace("Asynchronous callback received, will continue routing exchangeId: {} -> {}",
+            log.trace("Asynchronous callback received, will continue routing exchangeId: {} -> {}",
                     exchange.getExchangeId(), exchange);
 
         } catch (InterruptedException e) {
-            LOG.trace("Interrupted while waiting for callback, will continue routing exchangeId: {} -> {}",
+            log.trace("Interrupted while waiting for callback, will continue routing exchangeId: {} -> {}",
                     exchange.getExchangeId(), exchange);
             exchange.setException(e);
         } finally {
@@ -104,7 +102,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
 
     @Override
     public void countDown(Exchange exchange, CountDownLatch latch) {
-        LOG.trace("Asynchronous callback received for exchangeId: {}", exchange.getExchangeId());
+        log.trace("Asynchronous callback received for exchangeId: {}", exchange.getExchangeId());
         latch.countDown();
     }
 
@@ -152,7 +150,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
                 if (routeStackTrace != null) {
                     sb.append(routeStackTrace);
                 }
-                LOG.warn(sb.toString());
+                log.warn(sb.toString());
 
             } catch (Exception e) {
                 throw ObjectHelper.wrapRuntimeCamelException(e);
@@ -189,7 +187,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
         Collection<AwaitThread> threads = browse();
         int count = threads.size();
         if (count > 0) {
-            LOG.warn("Shutting down while there are still {} inflight threads currently blocked.", count);
+            log.warn("Shutting down while there are still {} inflight threads currently blocked.", count);
 
             StringBuilder sb = new StringBuilder();
             for (AwaitThread entry : threads) {
@@ -197,19 +195,19 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
             }
 
             if (isInterruptThreadsWhileStopping()) {
-                LOG.warn("The following threads are blocked and will be interrupted so the threads are released:\n{}", sb);
+                log.warn("The following threads are blocked and will be interrupted so the threads are released:\n{}", sb);
                 for (AwaitThread entry : threads) {
                     try {
                         interrupt(entry.getExchange());
                     } catch (Throwable e) {
-                        LOG.warn("Error while interrupting thread: " + entry.getBlockedThread().getName() + ". This exception is ignored.", e);
+                        log.warn("Error while interrupting thread: " + entry.getBlockedThread().getName() + ". This exception is ignored.", e);
                     }
                 }
             } else {
-                LOG.warn("The following threads are blocked, and may reside in the JVM:\n{}", sb);
+                log.warn("The following threads are blocked, and may reside in the JVM:\n{}", sb);
             }
         } else {
-            LOG.debug("Shutting down with no inflight threads.");
+            log.debug("Shutting down with no inflight threads.");
         }
 
         inflight.clear();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 4bfdb90..daf04a1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -191,8 +191,6 @@ import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.function.ThrowingRunnable;
 import org.apache.camel.util.jsse.SSLContextParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
 
 import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
@@ -204,7 +202,7 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
  */
 @SuppressWarnings("deprecation")
 public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, ManagedCamelContext, Suspendable {
-    private final Logger log = LoggerFactory.getLogger(getClass());
+
     private String version;
     private final AtomicBoolean vetoStated = new AtomicBoolean();
     private JAXBContext jaxbContext;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
index d059fab..af4c1f6 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
  * Default component to use for base for components implementations.
  */
 public abstract class DefaultComponent extends ServiceSupport implements Component {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultComponent.class);
+
     private static final Pattern RAW_PATTERN = Pattern.compile("RAW(.*&&.*)");
 
     private final List<Supplier<ComponentExtension>> extensions = new ArrayList<>();
@@ -113,12 +113,12 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone
         uri = useRawUri() ? uri : encodedUri;
 
         validateURI(uri, path, parameters);
-        if (LOG.isTraceEnabled()) {
+        if (log.isTraceEnabled()) {
             // at trace level its okay to have parameters logged, that may contain passwords
-            LOG.trace("Creating endpoint uri=[{}], path=[{}], parameters=[{}]", URISupport.sanitizeUri(uri), URISupport.sanitizePath(path), parameters);
-        } else if (LOG.isDebugEnabled()) {
+            log.trace("Creating endpoint uri=[{}], path=[{}], parameters=[{}]", URISupport.sanitizeUri(uri), URISupport.sanitizePath(path), parameters);
+        } else if (log.isDebugEnabled()) {
             // but at debug level only output sanitized uris
-            LOG.debug("Creating endpoint uri=[{}], path=[{}]", URISupport.sanitizeUri(uri), URISupport.sanitizePath(path));
+            log.debug("Creating endpoint uri=[{}], path=[{}]", URISupport.sanitizeUri(uri), URISupport.sanitizePath(path));
         }
         Endpoint endpoint = createEndpoint(uri, path, parameters);
         if (endpoint == null) {
@@ -245,10 +245,10 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone
             // only resolve property placeholders if its in use
             Component existing = CamelContextHelper.lookupPropertiesComponent(camelContext, false);
             if (existing != null) {
-                LOG.debug("Resolving property placeholders on component: {}", this);
+                log.debug("Resolving property placeholders on component: {}", this);
                 CamelContextHelper.resolvePropertyPlaceholders(camelContext, this);
             } else {
-                LOG.debug("Cannot resolve property placeholders on component: {} as PropertiesComponent is not in use", this);
+                log.debug("Cannot resolve property placeholders on component: {} as PropertiesComponent is not in use", this);
             }
         }
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
index c24701c..9ab5a3d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
@@ -31,8 +31,6 @@ import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnitOfWorkHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A default consumer useful for implementation inheritance.
@@ -40,7 +38,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class DefaultConsumer extends ServiceSupport implements Consumer, RouteAware {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
+
     private transient String consumerToString;
     private final Endpoint endpoint;
     private final Processor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
index 0d72921..175e6d5 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
@@ -41,7 +41,6 @@ import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
  */
 public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerTemplate {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultConsumerTemplate.class);
     private final CamelContext camelContext;
     private ConsumerCache consumerCache;
     private int maximumCacheSize;
@@ -207,13 +206,13 @@ public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerT
             if (exchange.getUnitOfWork() == null) {
                 // handover completions and done them manually to ensure they are being executed
                 List<Synchronization> synchronizations = exchange.handoverCompletions();
-                UnitOfWorkHelper.doneSynchronizations(exchange, synchronizations, LOG);
+                UnitOfWorkHelper.doneSynchronizations(exchange, synchronizations, log);
             } else {
                 // done the unit of work
                 exchange.getUnitOfWork().done(exchange);
             }
         } catch (Throwable e) {
-            LOG.warn("Exception occurred during done UnitOfWork for Exchange: " + exchange
+            log.warn("Exception occurred during done UnitOfWork for Exchange: " + exchange
                     + ". This exception will be ignored.", e);
         }
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
index 50695b5..d7d7632 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
@@ -57,7 +57,6 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint, HasId, CamelContextAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultEndpoint.class);
     private final String id = EndpointHelper.createEndpointId();
     private transient String endpointUriToString;
     private String endpointUri;
@@ -206,8 +205,8 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint
 
     public PollingConsumer createPollingConsumer() throws Exception {
         // should not call configurePollingConsumer when its EventDrivenPollingConsumer
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Creating EventDrivenPollingConsumer with queueSize: {} blockWhenFull: {} blockTimeout: {}",
+        if (log.isDebugEnabled()) {
+            log.debug("Creating EventDrivenPollingConsumer with queueSize: {} blockWhenFull: {} blockTimeout: {}",
                     new Object[]{getPollingConsumerQueueSize(), isPollingConsumerBlockWhenFull(), getPollingConsumerBlockTimeout()});
         }
         EventDrivenPollingConsumer consumer = new EventDrivenPollingConsumer(this, getPollingConsumerQueueSize());
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
index f63569d..102c358 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
@@ -42,7 +42,6 @@ import org.slf4j.LoggerFactory;
  */
 public class DefaultInflightRepository extends ServiceSupport implements InflightRepository {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultInflightRepository.class);
     private final ConcurrentMap<String, Exchange> inflight = new ConcurrentHashMap<>();
     private final ConcurrentMap<String, AtomicInteger> routeCount = new ConcurrentHashMap<>();
 
@@ -172,9 +171,9 @@ public class DefaultInflightRepository extends ServiceSupport implements Infligh
     protected void doStop() throws Exception {
         int count = size();
         if (count > 0) {
-            LOG.warn("Shutting down while there are still {} inflight exchanges.", count);
+            log.warn("Shutting down while there are still {} inflight exchanges.", count);
         } else {
-            LOG.debug("Shutting down with no inflight exchanges.");
+            log.debug("Shutting down with no inflight exchanges.");
         }
         routeCount.clear();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
index 3885e64..019b748 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public abstract class DefaultProducer extends ServiceSupport implements Producer {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
+
     private transient String producerToString;
     private final Endpoint endpoint;
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumerScheduler.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumerScheduler.java
index f2b2093..20be481 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumerScheduler.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumerScheduler.java
@@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.spi.ScheduledPollConsumerScheduler;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,9 +34,8 @@ import org.slf4j.LoggerFactory;
 /**
  * Default {@link org.apache.camel.impl.ScheduledBatchPollingConsumer}.
  */
-public class DefaultScheduledPollConsumerScheduler extends org.apache.camel.support.ServiceSupport implements ScheduledPollConsumerScheduler {
+public class DefaultScheduledPollConsumerScheduler extends ServiceSupport implements ScheduledPollConsumerScheduler {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultScheduledPollConsumerScheduler.class);
     private CamelContext camelContext;
     private Consumer consumer;
     private ScheduledExecutorService scheduledExecutorService;
@@ -137,16 +137,16 @@ public class DefaultScheduledPollConsumerScheduler extends org.apache.camel.supp
         // only schedule task if we have not already done that
         if (futures.size() == 0) {
             if (isUseFixedDelay()) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Scheduling poll (fixed delay) with initialDelay: {}, delay: {} ({}) for: {}",
+                if (log.isDebugEnabled()) {
+                    log.debug("Scheduling poll (fixed delay) with initialDelay: {}, delay: {} ({}) for: {}",
                             new Object[]{getInitialDelay(), getDelay(), getTimeUnit().name().toLowerCase(Locale.ENGLISH), consumer.getEndpoint()});
                 }
                 for (int i = 0; i < concurrentTasks; i++) {
                     futures.add(scheduledExecutorService.scheduleWithFixedDelay(task, getInitialDelay(), getDelay(), getTimeUnit()));
                 }
             } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Scheduling poll (fixed rate) with initialDelay: {}, delay: {} ({}) for: {}",
+                if (log.isDebugEnabled()) {
+                    log.debug("Scheduling poll (fixed rate) with initialDelay: {}, delay: {} ({}) for: {}",
                             new Object[]{getInitialDelay(), getDelay(), getTimeUnit().name().toLowerCase(Locale.ENGLISH), consumer.getEndpoint()});
                 }
                 for (int i = 0; i < concurrentTasks; i++) {
@@ -180,7 +180,7 @@ public class DefaultScheduledPollConsumerScheduler extends org.apache.camel.supp
     @Override
     protected void doStop() throws Exception {
         if (isSchedulerStarted()) {
-            LOG.debug("This consumer is stopping, so cancelling scheduled task: {}", futures);
+            log.debug("This consumer is stopping, so cancelling scheduled task: {}", futures);
             for (ScheduledFuture<?> future : futures) {
                 future.cancel(true);
             }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
index 91a7b73..7d70ff6 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
@@ -114,7 +114,6 @@ import org.slf4j.LoggerFactory;
  * @version
  */
 public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownStrategy, CamelContextAware {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultShutdownStrategy.class);
 
     private CamelContext camelContext;
     private ExecutorService executor;
@@ -186,9 +185,9 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
         routesOrdered.sort(comparator);
 
         if (suspendOnly) {
-            LOG.info("Starting to graceful suspend {} routes (timeout {} {})", routesOrdered.size(), timeout, timeUnit.toString().toLowerCase(Locale.ENGLISH));
+            log.info("Starting to graceful suspend {} routes (timeout {} {})", routesOrdered.size(), timeout, timeUnit.toString().toLowerCase(Locale.ENGLISH));
         } else {
-            LOG.info("Starting to graceful shutdown {} routes (timeout {} {})", routesOrdered.size(), timeout, timeUnit.toString().toLowerCase(Locale.ENGLISH));
+            log.info("Starting to graceful shutdown {} routes (timeout {} {})", routesOrdered.size(), timeout, timeUnit.toString().toLowerCase(Locale.ENGLISH));
         }
 
         // use another thread to perform the shutdowns so we can support timeout
@@ -215,7 +214,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
 
             // if set, stop processing and return false to indicate that the shutdown is aborting
             if (!forceShutdown && abortAfterTimeout) {
-                LOG.warn("Timeout occurred during graceful shutdown. Aborting the shutdown now."
+                log.warn("Timeout occurred during graceful shutdown. Aborting the shutdown now."
                         + " Notice: some resources may still be running as graceful shutdown did not complete successfully.");
 
                 // we attempt to force shutdown so lets log the current inflight exchanges which are affected
@@ -224,7 +223,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                 return false;
             } else {
                 if (forceShutdown || shutdownNowOnTimeout) {
-                    LOG.warn("Timeout occurred during graceful shutdown. Forcing the routes to be shutdown now."
+                    log.warn("Timeout occurred during graceful shutdown. Forcing the routes to be shutdown now."
                             + " Notice: some resources may still be running as graceful shutdown did not complete successfully.");
 
                     // we attempt to force shutdown so lets log the current inflight exchanges which are affected
@@ -240,7 +239,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                         }
                     }
                 } else {
-                    LOG.warn("Timeout occurred during graceful shutdown. Will ignore shutting down the remainder routes."
+                    log.warn("Timeout occurred during graceful shutdown. Will ignore shutting down the remainder routes."
                             + " Notice: some resources may still be running as graceful shutdown did not complete successfully.");
 
                     logInflightExchanges(context, routes, isLogInflightExchangesOnTimeout());
@@ -253,7 +252,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
         // convert to seconds as its easier to read than a big milli seconds number
         long seconds = TimeUnit.SECONDS.convert(watch.taken(), TimeUnit.MILLISECONDS);
 
-        LOG.info("Graceful shutdown of {} routes completed in {} seconds", routesOrdered.size(), seconds);
+        log.info("Graceful shutdown of {} routes completed in {} seconds", routesOrdered.size(), seconds);
         return true;
     }
 
@@ -342,7 +341,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
             // it has completed its current task
             ShutdownRunningTask current = order.getRoute().getRouteContext().getShutdownRunningTask();
             if (current != ShutdownRunningTask.CompleteCurrentTaskOnly) {
-                LOG.debug("Changing shutdownRunningTask from {} to " +  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);
             }
@@ -369,19 +368,19 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
      *
      * @param consumer the consumer to shutdown
      */
-    protected static void shutdownNow(Consumer consumer) {
-        LOG.trace("Shutting down: {}", consumer);
+    protected void shutdownNow(Consumer consumer) {
+        log.trace("Shutting down: {}", consumer);
 
         // allow us to do custom work before delegating to service helper
         try {
             ServiceHelper.stopService(consumer);
         } catch (Throwable e) {
-            LOG.warn("Error occurred while shutting down route: " + consumer + ". This exception will be ignored.", e);
+            log.warn("Error occurred while shutting down route: " + consumer + ". This exception will be ignored.", e);
             // fire event
             EventHelper.notifyServiceStopFailure(consumer.getEndpoint().getCamelContext(), consumer, e);
         }
 
-        LOG.trace("Shutdown complete for: {}", consumer);
+        log.trace("Shutdown complete for: {}", consumer);
     }
 
     /**
@@ -389,19 +388,19 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
      *
      * @param consumer the consumer to suspend
      */
-    protected static void suspendNow(Consumer consumer) {
-        LOG.trace("Suspending: {}", consumer);
+    protected void suspendNow(Consumer consumer) {
+        log.trace("Suspending: {}", consumer);
 
         // allow us to do custom work before delegating to service helper
         try {
             ServiceHelper.suspendService(consumer);
         } catch (Throwable e) {
-            LOG.warn("Error occurred while suspending route: " + consumer + ". This exception will be ignored.", e);
+            log.warn("Error occurred while suspending route: " + consumer + ". This exception will be ignored.", e);
             // fire event
             EventHelper.notifyServiceStopFailure(consumer.getEndpoint().getCamelContext(), consumer, e);
         }
 
-        LOG.trace("Suspend complete for: {}", consumer);
+        log.trace("Suspend complete for: {}", consumer);
     }
 
     private ExecutorService getExecutorService() {
@@ -443,7 +442,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
      * @param forced  whether to force shutdown
      * @param includeChildren whether to prepare the child of the service as well
      */
-    private static void prepareShutdown(Service service, boolean suspendOnly, boolean forced, boolean includeChildren, boolean suppressLogging) {
+    private void prepareShutdown(Service service, boolean suspendOnly, boolean forced, boolean includeChildren, boolean suppressLogging) {
         Set<Service> list;
         if (includeChildren) {
             // include error handlers as we want to prepare them for shutdown as well
@@ -456,13 +455,13 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
         for (Service child : list) {
             if (child instanceof ShutdownPrepared) {
                 try {
-                    LOG.trace("Preparing {} shutdown on {}", forced ? "forced" : "", child);
+                    log.trace("Preparing {} shutdown on {}", forced ? "forced" : "", child);
                     ((ShutdownPrepared) child).prepareShutdown(suspendOnly, forced);
                 } catch (Exception e) {
                     if (suppressLogging) {
-                        LOG.trace("Error during prepare shutdown on " + child + ". This exception will be ignored.", e);
+                        log.trace("Error during prepare shutdown on " + child + ". This exception will be ignored.", e);
                     } else {
-                        LOG.warn("Error during prepare shutdown on " + child + ". This exception will be ignored.", e);
+                        log.warn("Error during prepare shutdown on " + child + ". This exception will be ignored.", e);
                     }
                 }
             }
@@ -493,7 +492,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
     /**
      * Shutdown task which shutdown all the routes in a graceful manner.
      */
-    static class ShutdownTask implements Runnable {
+    class ShutdownTask implements Runnable {
 
         private final CamelContext context;
         private final List<RouteStartupOrder> routes;
@@ -524,7 +523,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
             // 2) wait until all inflight and pending exchanges has been completed
             // 3) shutdown the deferred routes
 
-            LOG.debug("There are {} routes to {}", routes.size(), suspendOnly ? "suspend" : "shutdown");
+            log.debug("There are {} routes to {}", routes.size(), suspendOnly ? "suspend" : "shutdown");
 
             // list of deferred consumers to shutdown when all exchanges has been completed routed
             // and thus there are no more inflight exchanges so they can be safely shutdown at that time
@@ -534,8 +533,8 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                 ShutdownRoute shutdownRoute = order.getRoute().getRouteContext().getShutdownRoute();
                 ShutdownRunningTask shutdownRunningTask = order.getRoute().getRouteContext().getShutdownRunningTask();
 
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("{}{} with options [{},{}]",
+                if (log.isTraceEnabled()) {
+                    log.trace("{}{} with options [{},{}]",
                             suspendOnly ? "Suspending route: " : "Shutting down route: ",
                             order.getRoute().getId(), shutdownRoute, shutdownRunningTask);
                 }
@@ -568,15 +567,15 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                         suspendNow(consumer);
                         // add it to the deferred list so the route will be shutdown later
                         deferredConsumers.add(new ShutdownDeferredConsumer(order.getRoute(), consumer));
-                        LOG.debug("Route: {} suspended and shutdown deferred, was consuming from: {}", order.getRoute().getId(), order.getRoute().getEndpoint());
+                        log.debug("Route: {} suspended and shutdown deferred, was consuming from: {}", order.getRoute().getId(), order.getRoute().getEndpoint());
                     } else if (shutdown) {
                         shutdownNow(consumer);
-                        LOG.info("Route: {} shutdown complete, was consuming from: {}", order.getRoute().getId(), order.getRoute().getEndpoint());
+                        log.info("Route: {} shutdown complete, was consuming from: {}", order.getRoute().getId(), order.getRoute().getEndpoint());
                     } else {
                         // we will stop it later, but for now it must run to be able to help all inflight messages
                         // be safely completed
                         deferredConsumers.add(new ShutdownDeferredConsumer(order.getRoute(), consumer));
-                        LOG.debug("Route: " + order.getRoute().getId() + (suspendOnly ? " shutdown deferred." : " suspension deferred."));
+                        log.debug("Route: " + order.getRoute().getId() + (suspendOnly ? " shutdown deferred." : " suspension deferred."));
                     }
                 }
             }
@@ -608,7 +607,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                         String routeId = order.getRoute().getId();
                         routeInflight.put(routeId, inflight);
                         size += inflight;
-                        LOG.trace("{} inflight and pending exchanges for route: {}", inflight, routeId);
+                        log.trace("{} inflight and pending exchanges for route: {}", inflight, routeId);
                     }
                 }
                 if (size > 0) {
@@ -624,7 +623,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                                 + (TimeUnit.SECONDS.convert(timeout, timeUnit) - (loopCount++ * loopDelaySeconds)) + " seconds.";
                         msg += " Inflights per route: [" + csb.toString() + "]";
 
-                        LOG.info(msg);
+                        log.info(msg);
 
                         // log verbose if DEBUG logging is enabled
                         logInflightExchanges(context, routes, logInflightExchangesOnTimeout);
@@ -632,10 +631,10 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                         Thread.sleep(loopDelaySeconds * 1000);
                     } catch (InterruptedException e) {
                         if (abortAfterTimeout) {
-                            LOG.warn("Interrupted while waiting during graceful shutdown, will abort.");
+                            log.warn("Interrupted while waiting during graceful shutdown, will abort.");
                             return;
                         } else {
-                            LOG.warn("Interrupted while waiting during graceful shutdown, will force shutdown now.");
+                            log.warn("Interrupted while waiting during graceful shutdown, will force shutdown now.");
                             break;
                         }
                     }
@@ -648,11 +647,11 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
             for (ShutdownDeferredConsumer deferred : deferredConsumers) {
                 Consumer consumer = deferred.getConsumer();
                 if (consumer instanceof ShutdownAware) {
-                    LOG.trace("Route: {} preparing to shutdown.", deferred.getRoute().getId());
+                    log.trace("Route: {} preparing to shutdown.", deferred.getRoute().getId());
                     boolean forced = context.getShutdownStrategy().forceShutdown(consumer);
                     boolean suppress = context.getShutdownStrategy().isSuppressLoggingOnTimeout();
                     prepareShutdown(consumer, suspendOnly, forced, false, suppress);
-                    LOG.debug("Route: {} preparing to shutdown complete.", deferred.getRoute().getId());
+                    log.debug("Route: {} preparing to shutdown complete.", deferred.getRoute().getId());
                 }
             }
 
@@ -661,10 +660,10 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
                 Consumer consumer = deferred.getConsumer();
                 if (suspendOnly) {
                     suspendNow(consumer);
-                    LOG.info("Route: {} suspend complete, was consuming from: {}", deferred.getRoute().getId(), deferred.getConsumer().getEndpoint());
+                    log.info("Route: {} suspend complete, was consuming from: {}", deferred.getRoute().getId(), deferred.getConsumer().getEndpoint());
                 } else {
                     shutdownNow(consumer);
-                    LOG.info("Route: {} shutdown complete, was consuming from: {}", deferred.getRoute().getId(), deferred.getConsumer().getEndpoint());
+                    log.info("Route: {} shutdown complete, was consuming from: {}", deferred.getRoute().getId(), deferred.getConsumer().getEndpoint());
                 }
             }
 
@@ -709,9 +708,9 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
      *
      * @param infoLevel <tt>true</tt> to log at INFO level, <tt>false</tt> to log at DEBUG level
      */
-    protected static void logInflightExchanges(CamelContext camelContext, List<RouteStartupOrder> routes, boolean infoLevel) {
+    protected void logInflightExchanges(CamelContext camelContext, List<RouteStartupOrder> routes, boolean infoLevel) {
         // check if we need to log
-        if (!infoLevel && !LOG.isDebugEnabled()) {
+        if (!infoLevel && !log.isDebugEnabled()) {
             return;
         }
 
@@ -751,9 +750,9 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
         }
 
         if (infoLevel) {
-            LOG.info(sb.toString());
+            log.info(sb.toString());
         } else {
-            LOG.debug(sb.toString());
+            log.debug(sb.toString());
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
index e974d74..c6bbea1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.StreamCache;
 import org.apache.camel.spi.StreamCachingStrategy;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.FilePathResolver;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
@@ -38,9 +39,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Default implementation of {@link StreamCachingStrategy}
  */
-public class DefaultStreamCachingStrategy extends org.apache.camel.support.ServiceSupport implements CamelContextAware, StreamCachingStrategy {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultStreamCachingStrategy.class);
+public class DefaultStreamCachingStrategy extends ServiceSupport implements CamelContextAware, StreamCachingStrategy {
 
     private CamelContext camelContext;
     private boolean enabled;
@@ -169,7 +168,7 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
         }
 
         boolean answer = anySpoolRules ? any : all;
-        LOG.debug("Should spool cache {} -> {}", length, answer);
+        log.debug("Should spool cache {} -> {}", length, answer);
         return answer;
     }
 
@@ -181,8 +180,8 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
         Message message = exchange.hasOut() ? exchange.getOut() : exchange.getIn();
         StreamCache cache = message.getBody(StreamCache.class);
         if (cache != null) {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Cached stream to {} -> {}", cache.inMemory() ? "memory" : "spool", cache);
+            if (log.isTraceEnabled()) {
+                log.trace("Cached stream to {} -> {}", cache.inMemory() ? "memory" : "spool", cache);
             }
             if (statistics.isStatisticsEnabled()) {
                 try {
@@ -192,7 +191,7 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
                         statistics.updateSpool(cache.length());
                     }
                 } catch (Exception e) {
-                    LOG.debug("Error updating cache statistics. This exception is ignored.", e);
+                    log.debug("Error updating cache statistics. This exception is ignored.", e);
                 }
             }
         }
@@ -222,7 +221,7 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
     @Override
     protected void doStart() throws Exception {
         if (!enabled) {
-            LOG.debug("StreamCaching is not enabled");
+            log.debug("StreamCaching is not enabled");
             return;
         }
 
@@ -249,16 +248,16 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
 
             if (spoolDirectory.exists()) {
                 if (spoolDirectory.isDirectory()) {
-                    LOG.debug("Using spool directory: {}", spoolDirectory);
+                    log.debug("Using spool directory: {}", spoolDirectory);
                 } else {
-                    LOG.warn("Spool directory: {} is not a directory. This may cause problems spooling to disk for the stream caching!", spoolDirectory);
+                    log.warn("Spool directory: {} is not a directory. This may cause problems spooling to disk for the stream caching!", spoolDirectory);
                 }
             } else {
                 boolean created = spoolDirectory.mkdirs();
                 if (!created) {
-                    LOG.warn("Cannot create spool directory: {}. This may cause problems spooling to disk for the stream caching!", spoolDirectory);
+                    log.warn("Cannot create spool directory: {}. This may cause problems spooling to disk for the stream caching!", spoolDirectory);
                 } else {
-                    LOG.debug("Created spool directory: {}", spoolDirectory);
+                    log.debug("Created spool directory: {}", spoolDirectory);
                 }
 
             }
@@ -275,24 +274,24 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
             }
         }
 
-        LOG.debug("StreamCaching configuration {}", this);
+        log.debug("StreamCaching configuration {}", this);
 
         if (spoolDirectory != null) {
-            LOG.info("StreamCaching in use with spool directory: {} and rules: {}", spoolDirectory.getPath(), spoolRules);
+            log.info("StreamCaching in use with spool directory: {} and rules: {}", spoolDirectory.getPath(), spoolRules);
         } else {
-            LOG.info("StreamCaching in use with rules: {}", spoolRules);
+            log.info("StreamCaching in use with rules: {}", spoolRules);
         }
     }
 
     @Override
     protected void doStop() throws Exception {
         if (spoolThreshold > 0 & spoolDirectory != null  && isRemoveSpoolDirectoryWhenStopping()) {
-            LOG.debug("Removing spool directory: {}", spoolDirectory);
+            log.debug("Removing spool directory: {}", spoolDirectory);
             FileUtil.removeDir(spoolDirectory);
         }
 
-        if (LOG.isDebugEnabled() && statistics.isStatisticsEnabled()) {
-            LOG.debug("Stopping StreamCachingStrategy with statistics: {}", statistics);
+        if (log.isDebugEnabled() && statistics.isStatisticsEnabled()) {
+            log.debug("Stopping StreamCachingStrategy with statistics: {}", statistics);
         }
 
         statistics.reset();
@@ -313,7 +312,7 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
 
         public boolean shouldSpoolCache(long length) {
             if (spoolThreshold > 0 && length > spoolThreshold) {
-                LOG.trace("Should spool cache fixed threshold {} > {} -> true", length, spoolThreshold);
+                log.trace("Should spool cache fixed threshold {} > {} -> true", length, spoolThreshold);
                 return true;
             }
             return false;
@@ -347,15 +346,15 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
                 double calc = (used / upper) * 100;
                 int percentage = (int) calc;
 
-                if (LOG.isTraceEnabled()) {
+                if (log.isTraceEnabled()) {
                     long u = heapUsage.getHeapMemoryUsage().getUsed();
                     long c = heapUsage.getHeapMemoryUsage().getCommitted();
                     long m = heapUsage.getHeapMemoryUsage().getMax();
-                    LOG.trace("Heap memory: [used={}M ({}%), committed={}M, max={}M]", u >> 20, percentage, c >> 20, m >> 20);
+                    log.trace("Heap memory: [used={}M ({}%), committed={}M, max={}M]", u >> 20, percentage, c >> 20, m >> 20);
                 }
 
                 if (percentage > spoolUsedHeapMemoryThreshold) {
-                    LOG.trace("Should spool cache heap memory threshold {} > {} -> true", percentage, spoolUsedHeapMemoryThreshold);
+                    log.trace("Should spool cache heap memory threshold {} > {} -> true", percentage, spoolUsedHeapMemoryThreshold);
                     return true;
                 }
             }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java
index b94063c..1fac509 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class EventDrivenPollingConsumer extends PollingConsumerSupport implements Processor, IsSingleton {
-    private static final Logger LOG = LoggerFactory.getLogger(EventDrivenPollingConsumer.class);
+
     private final BlockingQueue<Exchange> queue;
     private ExceptionHandler interruptedExceptionHandler;
     private Consumer consumer;
@@ -127,7 +127,7 @@ public class EventDrivenPollingConsumer extends PollingConsumerSupport implement
                 }
             }
         }
-        LOG.trace("Consumer is not running, so returning null");
+        log.trace("Consumer is not running, so returning null");
         return null;
     }
 
@@ -194,7 +194,7 @@ public class EventDrivenPollingConsumer extends PollingConsumerSupport implement
             try {
                 timeout = strategy.beforePoll(timeout);
             } catch (Exception e) {
-                LOG.debug("Error occurred before polling " + consumer + ". This exception will be ignored.", e);
+                log.debug("Error occurred before polling " + consumer + ". This exception will be ignored.", e);
             }
         }
         return timeout;
@@ -206,7 +206,7 @@ public class EventDrivenPollingConsumer extends PollingConsumerSupport implement
             try {
                 strategy.afterPoll();
             } catch (Exception e) {
-                LOG.debug("Error occurred after polling " + consumer + ". This exception will be ignored.", e);
+                log.debug("Error occurred after polling " + consumer + ". This exception will be ignored.", e);
             }
         }
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/FileStateRepository.java b/camel-core/src/main/java/org/apache/camel/impl/FileStateRepository.java
index 398d7ca..4890689 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/FileStateRepository.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/FileStateRepository.java
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
  */
 @ManagedResource(description = "File based state repository")
 public class FileStateRepository extends ServiceSupport implements StateRepository<String, String> {
-    private static final Logger LOG = LoggerFactory.getLogger(FileStateRepository.class);
+
     private static final String STORE_DELIMITER = "\n";
     private static final String KEY_VALUE_DELIMITER = "=";
     private final AtomicBoolean init = new AtomicBoolean();
@@ -143,19 +143,19 @@ public class FileStateRepository extends ServiceSupport implements StateReposito
      * @param key the state key
      */
     private void appendToStore(String key, String value) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Appending {}={} to state filestore: {}", key, value, fileStore);
+        if (log.isDebugEnabled()) {
+            log.debug("Appending {}={} to state filestore: {}", key, value, fileStore);
         }
         FileOutputStream fos = null;
         try {
             // create store parent directory if missing
             File storeParentDirectory = fileStore.getParentFile();
             if (storeParentDirectory != null && !storeParentDirectory.exists()) {
-                LOG.info("Parent directory of file store {} doesn't exist. Creating.", fileStore);
+                log.info("Parent directory of file store {} doesn't exist. Creating.", fileStore);
                 if (fileStore.getParentFile().mkdirs()) {
-                    LOG.info("Parent directory of file store {} successfully created.", fileStore);
+                    log.info("Parent directory of file store {} successfully created.", fileStore);
                 } else {
-                    LOG.warn("Parent directory of file store {} cannot be created.", fileStore);
+                    log.warn("Parent directory of file store {} cannot be created.", fileStore);
                 }
             }
             // create store if missing
@@ -171,7 +171,7 @@ public class FileStateRepository extends ServiceSupport implements StateReposito
         } catch (IOException e) {
             throw ObjectHelper.wrapRuntimeCamelException(e);
         } finally {
-            IOHelper.close(fos, "Appending to file state repository", LOG);
+            IOHelper.close(fos, "Appending to file state repository", log);
         }
     }
 
@@ -180,7 +180,7 @@ public class FileStateRepository extends ServiceSupport implements StateReposito
      * to the file store.
      */
     protected void trunkStore() {
-        LOG.info("Trunking state filestore: {}", fileStore);
+        log.info("Trunking state filestore: {}", fileStore);
         FileOutputStream fos = null;
         try {
             fos = new FileOutputStream(fileStore);
@@ -193,7 +193,7 @@ public class FileStateRepository extends ServiceSupport implements StateReposito
         } catch (IOException e) {
             throw ObjectHelper.wrapRuntimeCamelException(e);
         } finally {
-            IOHelper.close(fos, "Trunking file state repository", LOG);
+            IOHelper.close(fos, "Trunking file state repository", log);
         }
     }
 
@@ -203,7 +203,7 @@ public class FileStateRepository extends ServiceSupport implements StateReposito
     protected void loadStore() throws IOException {
         // auto create starting directory if needed
         if (!fileStore.exists()) {
-            LOG.debug("Creating filestore: {}", fileStore);
+            log.debug("Creating filestore: {}", fileStore);
             File parent = fileStore.getParentFile();
             if (parent != null) {
                 parent.mkdirs();
@@ -214,7 +214,7 @@ public class FileStateRepository extends ServiceSupport implements StateReposito
             }
         }
 
-        LOG.trace("Loading to 1st level cache from state filestore: {}", fileStore);
+        log.trace("Loading to 1st level cache from state filestore: {}", fileStore);
 
         cache.clear();
         try (Scanner scanner = new Scanner(fileStore, null, STORE_DELIMITER)) {
@@ -229,7 +229,7 @@ public class FileStateRepository extends ServiceSupport implements StateReposito
             throw ObjectHelper.wrapRuntimeCamelException(e);
         }
 
-        LOG.debug("Loaded {} to the 1st level cache from state filestore: {}", cache.size(), fileStore);
+        log.debug("Loaded {} to the 1st level cache from state filestore: {}", cache.size(), fileStore);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
index d8cc101..5ed03e5 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
@@ -20,7 +20,6 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
 import org.apache.camel.Producer;
 import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
@@ -34,7 +33,6 @@ import static org.apache.camel.processor.PipelineHelper.continueProcessing;
  */
 public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(InterceptSendToEndpointProcessor.class);
     private final InterceptSendToEndpoint endpoint;
     private final Endpoint delegate;
     private final Producer producer;
@@ -55,8 +53,8 @@ public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
         // process the detour so we do the detour routing
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Sending to endpoint: {} is intercepted and detoured to: {} for exchange: {}", getEndpoint(), endpoint.getDetour(), exchange);
+        if (log.isDebugEnabled()) {
+            log.debug("Sending to endpoint: {} is intercepted and detoured to: {} for exchange: {}", getEndpoint(), endpoint.getDetour(), exchange);
         }
         // add header with the real endpoint uri
         exchange.getIn().setHeader(Exchange.INTERCEPTED_ENDPOINT, delegate.getEndpointUri());
@@ -72,7 +70,7 @@ public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
 
         // Decide whether to continue or not; similar logic to the Pipeline
         // check for error if so we should break out
-        if (!continueProcessing(exchange, "skip sending to original intended destination: " + getEndpoint(), LOG)) {
+        if (!continueProcessing(exchange, "skip sending to original intended destination: " + getEndpoint(), log)) {
             callback.done(true);
             return true;
         }
@@ -107,8 +105,8 @@ public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
                 return true;
             }
         } else {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Stop() means skip sending exchange to original intended destination: {} for exchange: {}", getEndpoint(), exchange);
+            if (log.isDebugEnabled()) {
+                log.debug("Stop() means skip sending exchange to original intended destination: {} for exchange: {}", getEndpoint(), exchange);
             }
             callback.done(true);
             return true;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java b/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java
index 1890d3c..14d0f06 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public abstract class PollingConsumerSupport extends ServiceSupport implements PollingConsumer {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
+
     private final Endpoint endpoint;
     private ExceptionHandler exceptionHandler;
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
index d6bdadb..2caecb6 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
@@ -46,8 +46,6 @@ import org.slf4j.LoggerFactory;
  */
 public class ProducerCache extends ServiceSupport {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ProducerCache.class);
-
     private final CamelContext camelContext;
     private final ServicePool<AsyncProducer> producers;
     private final Object source;
@@ -152,7 +150,7 @@ public class ProducerCache extends ServiceSupport {
         AsyncProducer producer = acquireProducer(endpoint);
         try {
             // now lets dispatch
-            LOG.debug(">>>> {} {}", endpoint, exchange);
+            log.debug(">>>> {} {}", endpoint, exchange);
 
             // set property which endpoint we send to
             exchange.setProperty(Exchange.TO_ENDPOINT, endpoint.getEndpointUri());
@@ -287,7 +285,7 @@ public class ProducerCache extends ServiceSupport {
 
             if (producer == null) {
                 if (isStopped()) {
-                    LOG.warn("Ignoring exchange sent after processor is stopped: {}", exchange);
+                    log.warn("Ignoring exchange sent after processor is stopped: {}", exchange);
                     callback.done(true);
                     return true;
                 } else {
@@ -342,7 +340,7 @@ public class ProducerCache extends ServiceSupport {
     protected boolean asyncDispatchExchange(Endpoint endpoint, AsyncProducer producer,
                                             Processor resultProcessor, Exchange exchange, AsyncCallback callback) {
         // now lets dispatch
-        LOG.debug(">>>> {} {}", endpoint, exchange);
+        log.debug(">>>> {} {}", endpoint, exchange);
 
         // set property which endpoint we send to
         exchange.setProperty(Exchange.TO_ENDPOINT, endpoint.getEndpointUri());
@@ -392,7 +390,7 @@ public class ProducerCache extends ServiceSupport {
     public int size() {
         int size = producers.size();
 
-        LOG.trace("size = {}", size);
+        log.trace("size = {}", size);
         return size;
     }
 
@@ -456,7 +454,7 @@ public class ProducerCache extends ServiceSupport {
             producers.stop();
             producers.start();
         } catch (Exception e) {
-            LOG.debug("Error restarting producers", e);
+            log.debug("Error restarting producers", e);
         }
         if (statistics != null) {
             statistics.clear();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
index e224127..8baaa55 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
@@ -61,8 +61,6 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_ROUTE_ID;
  */
 public class RouteService extends ChildServiceSupport {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RouteService.class);
-
     private final DefaultCamelContext camelContext;
     private final RouteDefinition routeDefinition;
     private final List<RouteContext> routeContexts;
@@ -165,7 +163,7 @@ public class RouteService extends ChildServiceSupport {
                     // warm up the route first
                     route.warmUp();
 
-                    LOG.debug("Starting services on route: {}", route.getId());
+                    log.debug("Starting services on route: {}", route.getId());
                     List<Service> services = route.getServices();
 
                     // callback that we are staring these services
@@ -250,7 +248,7 @@ public class RouteService extends ChildServiceSupport {
         
         for (Route route : routes) {
             try (MDCHelper mdcHelper = new MDCHelper(route.getId())) {
-                LOG.debug("Stopping services on route: {}", route.getId());
+                log.debug("Stopping services on route: {}", route.getId());
 
                 // gather list of services to stop as we need to start child services as well
                 Set<Service> services = gatherChildServices(route, true);
@@ -286,7 +284,7 @@ public class RouteService extends ChildServiceSupport {
     protected void doShutdown() throws Exception {
         for (Route route : routes) {
             try (MDCHelper mdcHelper = new MDCHelper(route.getId())) {
-                LOG.debug("Shutting down services on route: {}", route.getId());
+                log.debug("Shutting down services on route: {}", route.getId());
 
                 // gather list of services to stop as we need to start child services as well
                 Set<Service> services = gatherChildServices(route, true);
@@ -363,7 +361,7 @@ public class RouteService extends ChildServiceSupport {
 
     protected void startChildService(Route route, List<Service> services) throws Exception {
         for (Service service : services) {
-            LOG.debug("Starting child service on route: {} -> {}", route.getId(), service);
+            log.debug("Starting child service on route: {} -> {}", route.getId(), service);
             for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
                 strategy.onServiceAdd(camelContext, service, route);
             }
@@ -374,7 +372,7 @@ public class RouteService extends ChildServiceSupport {
 
     protected void stopChildService(Route route, Set<Service> services, boolean shutdown) throws Exception {
         for (Service service : services) {
-            LOG.debug("{} child service on route: {} -> {}", shutdown ? "Shutting down" : "Stopping", route.getId(), service);
+            log.debug("{} child service on route: {} -> {}", shutdown ? "Shutting down" : "Stopping", route.getId(), service);
             if (service instanceof ErrorHandler) {
                 // special for error handlers
                 for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ScheduledBatchPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/ScheduledBatchPollingConsumer.java
index 661eb7a..927f849 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ScheduledBatchPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ScheduledBatchPollingConsumer.java
@@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory;
  * A useful base class for any consumer which is polling batch based
  */
 public abstract class ScheduledBatchPollingConsumer extends ScheduledPollConsumer implements BatchConsumer, ShutdownAware {
-    private static final Logger LOG = LoggerFactory.getLogger(ScheduledBatchPollingConsumer.class);
+
     protected volatile ShutdownRunningTask shutdownRunningTask;
     protected volatile int pendingExchanges;
     protected int maxMessagesPerPoll;
@@ -67,7 +67,7 @@ public abstract class ScheduledBatchPollingConsumer extends ScheduledPollConsume
             // in the processBatch method and until an exchange gets enlisted as in-flight
             // which happens later, so we need to signal back to the shutdown strategy that
             // there is a pending exchange. When we are no longer polling, then we will return 0
-            LOG.trace("Currently polling so returning 1 as pending exchanges");
+            log.trace("Currently polling so returning 1 as pending exchanges");
             answer = 1;
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java
index b19f707..1f59d0d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java
@@ -40,7 +40,6 @@ import org.slf4j.LoggerFactory;
  * A useful base class for any consumer which is polling based
  */
 public abstract class ScheduledPollConsumer extends DefaultConsumer implements Runnable, Suspendable, PollingConsumerPollingStrategy {
-    private static final Logger LOG = LoggerFactory.getLogger(ScheduledPollConsumer.class);
 
     private ScheduledPollConsumerScheduler scheduler;
     private ScheduledExecutorService scheduledExecutorService;
@@ -86,15 +85,15 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
         try {
             // log starting
             if (LoggingLevel.ERROR == runLoggingLevel) {
-                LOG.error("Scheduled task started on:   {}", this.getEndpoint());
+                log.error("Scheduled task started on:   {}", this.getEndpoint());
             } else if (LoggingLevel.WARN == runLoggingLevel) {
-                LOG.warn("Scheduled task started on:   {}", this.getEndpoint());
+                log.warn("Scheduled task started on:   {}", this.getEndpoint());
             } else if (LoggingLevel.INFO == runLoggingLevel) {
-                LOG.info("Scheduled task started on:   {}", this.getEndpoint());
+                log.info("Scheduled task started on:   {}", this.getEndpoint());
             } else if (LoggingLevel.DEBUG == runLoggingLevel) {
-                LOG.debug("Scheduled task started on:   {}", this.getEndpoint());
+                log.debug("Scheduled task started on:   {}", this.getEndpoint());
             } else {
-                LOG.trace("Scheduled task started on:   {}", this.getEndpoint());
+                log.trace("Scheduled task started on:   {}", this.getEndpoint());
             }
 
             // execute scheduled task
@@ -102,26 +101,26 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
 
             // log completed
             if (LoggingLevel.ERROR == runLoggingLevel) {
-                LOG.error("Scheduled task completed on: {}", this.getEndpoint());
+                log.error("Scheduled task completed on: {}", this.getEndpoint());
             } else if (LoggingLevel.WARN == runLoggingLevel) {
-                LOG.warn("Scheduled task completed on: {}", this.getEndpoint());
+                log.warn("Scheduled task completed on: {}", this.getEndpoint());
             } else if (LoggingLevel.INFO == runLoggingLevel) {
-                LOG.info("Scheduled task completed on: {}", this.getEndpoint());
+                log.info("Scheduled task completed on: {}", this.getEndpoint());
             } else if (LoggingLevel.DEBUG == runLoggingLevel) {
-                LOG.debug("Scheduled task completed on: {}", this.getEndpoint());
+                log.debug("Scheduled task completed on: {}", this.getEndpoint());
             } else {
-                LOG.trace("Scheduled task completed on: {}", this.getEndpoint());
+                log.trace("Scheduled task completed on: {}", this.getEndpoint());
             }
 
         } catch (Error e) {
             // must catch Error, to ensure the task is re-scheduled
-            LOG.error("Error occurred during running scheduled task on: " + this.getEndpoint() + ", due: " + e.getMessage(), e);
+            log.error("Error occurred during running scheduled task on: " + this.getEndpoint() + ", due: " + e.getMessage(), e);
         }
     }
 
     private void doRun() {
         if (isSuspended()) {
-            LOG.trace("Cannot start to poll: {} as its suspended", this.getEndpoint());
+            log.trace("Cannot start to poll: {} as its suspended", this.getEndpoint());
             return;
         }
 
@@ -133,9 +132,9 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
             if (backoffCounter++ < backoffMultiplier) {
                 // yes we should backoff
                 if (idleCounter > 0) {
-                    LOG.debug("doRun() backoff due subsequent {} idles (backoff at {}/{})", idleCounter, backoffCounter, backoffMultiplier);
+                    log.debug("doRun() backoff due subsequent {} idles (backoff at {}/{})", idleCounter, backoffCounter, backoffMultiplier);
                 } else {
-                    LOG.debug("doRun() backoff due subsequent {} errors (backoff at {}/{})", errorCounter, backoffCounter, backoffMultiplier);
+                    log.debug("doRun() backoff due subsequent {} errors (backoff at {}/{})", errorCounter, backoffCounter, backoffMultiplier);
                 }
                 return;
             } else {
@@ -143,7 +142,7 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
                 idleCounter = 0;
                 errorCounter = 0;
                 backoffCounter = 0;
-                LOG.trace("doRun() backoff finished, resetting counters.");
+                log.trace("doRun() backoff finished, resetting counters.");
             }
         }
 
@@ -160,9 +159,9 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
                 if (isPollAllowed()) {
 
                     if (retryCounter == -1) {
-                        LOG.trace("Starting to poll: {}", this.getEndpoint());
+                        log.trace("Starting to poll: {}", this.getEndpoint());
                     } else {
-                        LOG.debug("Retrying attempt {} to poll: {}", retryCounter, this.getEndpoint());
+                        log.debug("Retrying attempt {} to poll: {}", retryCounter, this.getEndpoint());
                     }
 
                     // mark we are polling which should also include the begin/poll/commit
@@ -172,7 +171,7 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
                         if (begin) {
                             retryCounter++;
                             polledMessages = poll();
-                            LOG.trace("Polled {} messages", polledMessages);
+                            log.trace("Polled {} messages", polledMessages);
 
                             if (polledMessages == 0 && isSendEmptyMessageWhenIdle()) {
                                 // send an "empty" exchange
@@ -184,17 +183,17 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
                             if (polledMessages > 0 && isGreedy()) {
                                 done = false;
                                 retryCounter = -1;
-                                LOG.trace("Greedy polling after processing {} messages", polledMessages);
+                                log.trace("Greedy polling after processing {} messages", polledMessages);
                             }
                         } else {
-                            LOG.debug("Cannot begin polling as pollStrategy returned false: {}", pollStrategy);
+                            log.debug("Cannot begin polling as pollStrategy returned false: {}", pollStrategy);
                         }
                     } finally {
                         polling = false;
                     }
                 }
 
-                LOG.trace("Finished polling: {}", this.getEndpoint());
+                log.trace("Finished polling: {}", this.getEndpoint());
             } catch (Exception e) {
                 try {
                     boolean retry = pollStrategy.rollback(this, getEndpoint(), retryCounter, e);
@@ -221,7 +220,7 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
                     getExceptionHandler().handleException("Consumer " + this + " failed polling endpoint: " + getEndpoint()
                             + ". Will try again at next poll", cause);
                 } catch (Throwable e) {
-                    LOG.warn("Error handling exception. This exception will be ignored.", e);
+                    log.warn("Error handling exception. This exception will be ignored.", e);
                 }
             }
         }
@@ -233,7 +232,7 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
             idleCounter = polledMessages == 0 ? ++idleCounter : 0;
             errorCounter = 0;
         }
-        LOG.trace("doRun() done with idleCounter={}, errorCounter={}", idleCounter, errorCounter);
+        log.trace("doRun() done with idleCounter={}, errorCounter={}", idleCounter, errorCounter);
 
         // avoid this thread to throw exceptions because the thread pool wont re-schedule a new thread
     }
@@ -411,7 +410,7 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
             if (backoffIdleThreshold <= 0 && backoffErrorThreshold <= 0) {
                 throw new IllegalArgumentException("backoffIdleThreshold and/or backoffErrorThreshold must be configured to a positive value when using backoffMultiplier");
             }
-            LOG.debug("Using backoff[multiplier={}, idleThreshold={}, errorThreshold={}] on {}", backoffMultiplier, backoffIdleThreshold, backoffErrorThreshold, getEndpoint());
+            log.debug("Using backoff[multiplier={}, idleThreshold={}, errorThreshold={}] on {}", backoffMultiplier, backoffIdleThreshold, backoffErrorThreshold, getEndpoint());
         }
 
         if (scheduler == null) {
@@ -490,7 +489,7 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
 
     @Override
     public long beforePoll(long timeout) throws Exception {
-        LOG.trace("Before poll {}", getEndpoint());
+        log.trace("Before poll {}", getEndpoint());
         // resume or start our self
         if (!ServiceHelper.resumeService(this)) {
             ServiceHelper.startService(this);
@@ -502,7 +501,7 @@ public abstract class ScheduledPollConsumer extends DefaultConsumer implements R
 
     @Override
     public void afterPoll() throws Exception {
-        LOG.trace("After poll {}", getEndpoint());
+        log.trace("After poll {}", getEndpoint());
         // suspend or stop our self
         if (!ServiceHelper.suspendService(this)) {
             ServiceHelper.stopService(this);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
index cf9b7d4..042559a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
@@ -50,7 +50,6 @@ import org.slf4j.LoggerFactory;
  * to determine if the processes that cause the route to be open are now available
  */
 public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implements CamelContextAware {
-    private static final Logger LOG = LoggerFactory.getLogger(ThrottlingExceptionRoutePolicy.class);
 
     private static final int STATE_CLOSED = 0;
     private static final int STATE_HALF_OPEN = 1;
@@ -102,7 +101,7 @@ public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implement
 
     @Override
     public void onInit(Route route) {
-        LOG.debug("Initializing ThrottlingExceptionRoutePolicy route policy...");
+        log.debug("Initializing ThrottlingExceptionRoutePolicy route policy...");
         logState();
     }
 
@@ -118,7 +117,7 @@ public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implement
     public void onExchangeDone(Route route, Exchange exchange) {
         if (keepOpen.get()) {
             if (state.get() != STATE_OPEN) {
-                LOG.debug("opening circuit b/c keepOpen is on");
+                log.debug("opening circuit b/c keepOpen is on");
                 openCircuit(route);
             }
         } else {
@@ -161,9 +160,9 @@ public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implement
             }
         }
 
-        if (LOG.isDebugEnabled()) {
+        if (log.isDebugEnabled()) {
             String exceptionName = exchange.getException() == null ? "none" : exchange.getException().getClass().getSimpleName();
-            LOG.debug("hasFailed ({}) with Throttled Exception: {} for exchangeId: {}", answer, exceptionName, exchange.getExchangeId());
+            log.debug("hasFailed ({}) with Throttled Exception: {} for exchangeId: {}", answer, exceptionName, exchange.getExchangeId());
         }
         return answer;
     }
@@ -175,32 +174,32 @@ public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implement
 
         if (state.get() == STATE_CLOSED) {
             if (failureLimitReached) {
-                LOG.debug("Opening circuit...");
+                log.debug("Opening circuit...");
                 openCircuit(route);
             }
         } else if (state.get() == STATE_HALF_OPEN) {
             if (failureLimitReached) {
-                LOG.debug("Opening circuit...");
+                log.debug("Opening circuit...");
                 openCircuit(route);
             } else {
-                LOG.debug("Closing circuit...");
+                log.debug("Closing circuit...");
                 closeCircuit(route);
             }
         } else if (state.get() == STATE_OPEN) {
             if (!keepOpen.get()) {
                 long elapsedTimeSinceOpened = System.currentTimeMillis() - openedAt;
                 if (halfOpenAfter <= elapsedTimeSinceOpened) {
-                    LOG.debug("Checking an open circuit...");
+                    log.debug("Checking an open circuit...");
                     if (halfOpenHandler != null) {
                         if (halfOpenHandler.isReadyToBeClosed()) {
-                            LOG.debug("Closing circuit...");
+                            log.debug("Closing circuit...");
                             closeCircuit(route);
                         } else {
-                            LOG.debug("Opening circuit...");
+                            log.debug("Opening circuit...");
                             openCircuit(route);
                         }
                     } else {
-                        LOG.debug("Half opening circuit...");
+                        log.debug("Half opening circuit...");
                         halfOpenCircuit(route);
                     }
                 } else {
@@ -276,8 +275,8 @@ public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implement
     }
 
     private void logState() {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug(dumpState());
+        if (log.isDebugEnabled()) {
+            log.debug(dumpState());
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterService.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterService.java
index 9652d08..b38fe2c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterService.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterService.java
@@ -35,7 +35,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public abstract class AbstractCamelClusterService<T extends CamelClusterView> extends ServiceSupport implements CamelClusterService {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractCamelClusterService.class);
 
     private final Map<String, ViewHolder<T>> views;
     private final Map<String, Object> attributes;
@@ -193,10 +192,10 @@ public abstract class AbstractCamelClusterService<T extends CamelClusterView> ex
                 ViewHolder<T> holder = views.get(namespace);
 
                 if (holder != null) {
-                    LOGGER.info("Force start of view {}", namespace);
+                    log.info("Force start of view {}", namespace);
                     holder.startView();
                 } else {
-                    LOGGER.warn("Error forcing start of view {}: it does not exist", namespace);
+                    log.warn("Error forcing start of view {}: it does not exist", namespace);
                 }
             }
         );
@@ -210,10 +209,10 @@ public abstract class AbstractCamelClusterService<T extends CamelClusterView> ex
                 ViewHolder<T> holder = views.get(namespace);
 
                 if (holder != null) {
-                    LOGGER.info("Force stop of view {}", namespace);
+                    log.info("Force stop of view {}", namespace);
                     holder.stopView();
                 } else {
-                    LOGGER.warn("Error forcing stop of view {}: it does not exist", namespace);
+                    log.warn("Error forcing stop of view {}: it does not exist", namespace);
                 }
             }
         );
@@ -275,7 +274,7 @@ public abstract class AbstractCamelClusterService<T extends CamelClusterView> ex
         }
 
         V retain() {
-            LOGGER.debug("Retain view {}, old-refs={}", view.getNamespace(), count.get());
+            log.debug("Retain view {}, old-refs={}", view.getNamespace(), count.get());
 
             count.retain();
 
@@ -283,22 +282,22 @@ public abstract class AbstractCamelClusterService<T extends CamelClusterView> ex
         }
 
         void release() {
-            LOGGER.debug("Release view {}, old-refs={}", view.getNamespace(), count.get());
+            log.debug("Release view {}, old-refs={}", view.getNamespace(), count.get());
 
             count.release();
         }
 
         void startView() throws Exception {
             if (AbstractCamelClusterService.this.isRunAllowed()) {
-                LOGGER.debug("Start view {}", view.getNamespace());
+                log.debug("Start view {}", view.getNamespace());
                 view.start();
             } else {
-                LOGGER.debug("Can't start view {} as cluster service is not running, view will be started on service start-up", view.getNamespace());
+                log.debug("Can't start view {} as cluster service is not running, view will be started on service start-up", view.getNamespace());
             }
         }
 
         void stopView() throws Exception {
-            LOGGER.debug("Stop view {}", view.getNamespace());
+            log.debug("Stop view {}", view.getNamespace());
             view.stop();
         }
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index b35972b..98420ab 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -48,7 +48,6 @@ import org.slf4j.LoggerFactory;
 
 @ManagedResource(description = "Clustered Route policy using")
 public final class ClusteredRoutePolicy extends RoutePolicySupport implements CamelContextAware {
-    private static final Logger LOGGER = LoggerFactory.getLogger(ClusteredRoutePolicy.class);
 
     private final AtomicBoolean leader;
     private final Set<Route> startedRoutes;
@@ -161,7 +160,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
     public void onInit(Route route) {
         super.onInit(route);
 
-        LOGGER.info("Route managed by {}. Setting route {} AutoStartup flag to false.", getClass(), route.getId());
+        log.info("Route managed by {}. Setting route {} AutoStartup flag to false.", getClass(), route.getId());
         definition(route).setAutoStartup("false");
 
         this.refCount.retain();
@@ -178,7 +177,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
             );
         }
 
-        LOGGER.debug("ClusteredRoutePolicy {} is using ClusterService instance {} (id={}, type={})",
+        log.debug("ClusteredRoutePolicy {} is using ClusterService instance {} (id={}, type={})",
             this,
             clusterService,
             clusterService.getId(),
@@ -208,10 +207,10 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
 
     private synchronized void setLeader(boolean isLeader) {
         if (isLeader && leader.compareAndSet(false, isLeader)) {
-            LOGGER.debug("Leadership taken");
+            log.debug("Leadership taken");
             startManagedRoutes();
         } else if (!isLeader && leader.getAndSet(isLeader)) {
-            LOGGER.debug("Leadership lost");
+            log.debug("Leadership lost");
             stopManagedRoutes();
         }
     }
@@ -235,7 +234,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
             for (Route route : stoppedRoutes) {
                 ServiceStatus status = definition(route).getStatus(getCamelContext());
                 if (status.isStartable()) {
-                    LOGGER.debug("Starting route '{}'", route.getId());
+                    log.debug("Starting route '{}'", route.getId());
                     camelContext.getRouteController().startRoute(route.getId());
 
                     startedRoutes.add(route);
@@ -267,7 +266,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
             for (Route route : startedRoutes) {
                 ServiceStatus status = definition(route).getStatus(getCamelContext());
                 if (status.isStoppable()) {
-                    LOGGER.debug("Stopping route '{}'", route.getId());
+                    log.debug("Stopping route '{}'", route.getId());
                     stopRoute(route);
 
                     stoppedRoutes.add(route);
@@ -281,7 +280,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
     }
 
     private void onCamelContextStarted() {
-        LOGGER.debug("Apply cluster policy (stopped-routes='{}', started-routes='{}')",
+        log.debug("Apply cluster policy (stopped-routes='{}', started-routes='{}')",
             stoppedRoutes.stream().map(Route::getId).collect(Collectors.joining(",")),
             startedRoutes.stream().map(Route::getId).collect(Collectors.joining(","))
         );
@@ -336,7 +335,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
 
                 // Eventually delay the startup of the routes a later time
                 if (initialDelay.toMillis() > 0) {
-                    LOGGER.debug("Policy will be effective in {}", initialDelay);
+                    log.debug("Policy will be effective in {}", initialDelay);
                     executorService.schedule(ClusteredRoutePolicy.this::onCamelContextStarted, initialDelay.toMillis(), TimeUnit.MILLISECONDS);
                 } else {
                     ClusteredRoutePolicy.this.onCamelContextStarted();
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 5ff6da4..3e2a133 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -107,8 +107,6 @@ import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.TimerListenerManager;
 import org.apache.camel.util.KeyValueHolder;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Default JMX managed lifecycle strategy that registered objects using the configured
@@ -120,7 +118,6 @@ import org.slf4j.LoggerFactory;
 @SuppressWarnings("deprecation")
 public class DefaultManagementLifecycleStrategy extends ServiceSupport implements LifecycleStrategy, CamelContextAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultManagementLifecycleStrategy.class);
     // the wrapped processors is for performance counters, which are in use for the created routes
     // when a route is removed, we should remove the associated processors from this map
     private final Map<Processor, KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor>> wrappedProcessors = new HashMap<>();
@@ -179,7 +176,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
                         throw new VetoCamelContextStartException("CamelContext (" + context.getName() + ") with ObjectName[" + on + "] is already registered."
                             + " Make sure to use unique names on CamelContext when using multiple CamelContexts in the same MBeanServer.", context);
                     } else {
-                        LOG.warn("This CamelContext(" + context.getName() + ") will be registered using the name: " + managementName
+                        log.warn("This CamelContext(" + context.getName() + ") will be registered using the name: " + managementName
                             + " due to clash with an existing name already registered in MBeanServer.");
                     }
                 }
@@ -224,7 +221,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             }
             manageObject(me);
         } catch (Exception e) {
-            LOG.warn("Could not register CamelHealth MBean. This exception will be ignored.", e);
+            log.warn("Could not register CamelHealth MBean. This exception will be ignored.", e);
         }
 
         try {
@@ -235,7 +232,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             }
             manageObject(me);
         } catch (Exception e) {
-            LOG.warn("Could not register RouteController MBean. This exception will be ignored.", e);
+            log.warn("Could not register RouteController MBean. This exception will be ignored.", e);
         }
     }
 
@@ -253,8 +250,8 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             newName = strategy.getNextName();
             ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForCamelContext(newName, name);
             done = !getManagementStrategy().isManaged(mc, on);
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Using name: {} in ObjectName[{}] exists? {}", name, on, done);
+            if (log.isTraceEnabled()) {
+                log.trace("Using name: {} in ObjectName[{}] exists? {}", name, on, done);
             }
         }
         return newName;
@@ -274,7 +271,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             return;
         }
 
-        LOG.debug("Registering {} pre registered services", preServices.size());
+        log.debug("Registering {} pre registered services", preServices.size());
         for (PreRegisterService pre : preServices) {
             if (pre.getComponent() != null) {
                 onComponentAdd(pre.getName(), pre.getComponent());
@@ -302,7 +299,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
                 unmanageObject(mc);
             }
         } catch (Exception e) {
-            LOG.warn("Could not unregister RouteController MBean", e);
+            log.warn("Could not unregister RouteController MBean", e);
         }
 
         try {
@@ -312,7 +309,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
                 unmanageObject(mc);
             }
         } catch (Exception e) {
-            LOG.warn("Could not unregister CamelHealth MBean", e);
+            log.warn("Could not unregister CamelHealth MBean", e);
         }
 
         try {
@@ -322,7 +319,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
                 unmanageObject(mc);
             }
         } catch (Exception e) {
-            LOG.warn("Could not unregister CamelContext MBean", e);
+            log.warn("Could not unregister CamelContext MBean", e);
         }
 
         camelContextMBean = null;
@@ -341,7 +338,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             Object mc = getManagementObjectStrategy().getManagedObjectForComponent(camelContext, component, name);
             manageObject(mc);
         } catch (Exception e) {
-            LOG.warn("Could not register Component MBean", e);
+            log.warn("Could not register Component MBean", e);
         }
     }
 
@@ -354,7 +351,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             Object mc = getManagementObjectStrategy().getManagedObjectForComponent(camelContext, component, name);
             unmanageObject(mc);
         } catch (Exception e) {
-            LOG.warn("Could not unregister Component MBean", e);
+            log.warn("Could not unregister Component MBean", e);
         }
     }
 
@@ -387,7 +384,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             }
             manageObject(me);
         } catch (Exception e) {
-            LOG.warn("Could not register Endpoint MBean for endpoint: " + endpoint + ". This exception will be ignored.", e);
+            log.warn("Could not register Endpoint MBean for endpoint: " + endpoint + ". This exception will be ignored.", e);
         }
     }
 
@@ -401,7 +398,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             Object me = getManagementObjectStrategy().getManagedObjectForEndpoint(camelContext, endpoint);
             unmanageObject(me);
         } catch (Exception e) {
-            LOG.warn("Could not unregister Endpoint MBean for endpoint: " + endpoint + ". This exception will be ignored.", e);
+            log.warn("Could not unregister Endpoint MBean for endpoint: " + endpoint + ". This exception will be ignored.", e);
         }
     }
 
@@ -430,14 +427,14 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
         // skip already managed services, for example if a route has been restarted
         if (getManagementStrategy().isManaged(managedObject, null)) {
-            LOG.trace("The service is already managed: {}", service);
+            log.trace("The service is already managed: {}", service);
             return;
         }
 
         try {
             manageObject(managedObject);
         } catch (Exception e) {
-            LOG.warn("Could not register service: " + service + " as Service MBean.", e);
+            log.warn("Could not register service: " + service + " as Service MBean.", e);
         }
     }
 
@@ -452,7 +449,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             try {
                 unmanageObject(managedObject);
             } catch (Exception e) {
-                LOG.warn("Could not unregister service: " + service + " as Service MBean.", e);
+                log.warn("Could not unregister service: " + service + " as Service MBean.", e);
             }
         }
     }
@@ -594,7 +591,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
             // skip already managed routes, for example if the route has been restarted
             if (getManagementStrategy().isManaged(mr, null)) {
-                LOG.trace("The route is already managed: {}", route);
+                log.trace("The route is already managed: {}", route);
                 continue;
             }
 
@@ -623,9 +620,9 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             try {
                 manageObject(mr);
             } catch (JMException e) {
-                LOG.warn("Could not register Route MBean", e);
+                log.warn("Could not register Route MBean", e);
             } catch (Exception e) {
-                LOG.warn("Could not create Route MBean", e);
+                log.warn("Could not create Route MBean", e);
             }
         }
     }
@@ -640,15 +637,15 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             Object mr = getManagementObjectStrategy().getManagedObjectForRoute(camelContext, route);
 
             // skip unmanaged routes
-            if (!getManagementStrategy().isManaged(mr, null)) {
-                LOG.trace("The route is not managed: {}", route);
+            if (!getManagementStrategy().isManaged(mr)) {
+                log.trace("The route is not managed: {}", route);
                 continue;
             }
 
             try {
                 unmanageObject(mr);
             } catch (Exception e) {
-                LOG.warn("Could not unregister Route MBean", e);
+                log.warn("Could not unregister Route MBean", e);
             }
 
             // remove from known routes ids, as the route has been removed
@@ -670,14 +667,14 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
         // skip already managed services, for example if a route has been restarted
         if (getManagementStrategy().isManaged(me, null)) {
-            LOG.trace("The error handler builder is already managed: {}", errorHandlerBuilder);
+            log.trace("The error handler builder is already managed: {}", errorHandlerBuilder);
             return;
         }
 
         try {
             manageObject(me);
         } catch (Exception e) {
-            LOG.warn("Could not register error handler builder: " + errorHandlerBuilder + " as ErrorHandler MBean.", e);
+            log.warn("Could not register error handler builder: " + errorHandlerBuilder + " as ErrorHandler MBean.", e);
         }
     }
 
@@ -691,7 +688,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             try {
                 unmanageObject(me);
             } catch (Exception e) {
-                LOG.warn("Could not unregister error handler: " + me + " as ErrorHandler MBean.", e);
+                log.warn("Could not unregister error handler: " + me + " as ErrorHandler MBean.", e);
             }
         }
     }
@@ -708,7 +705,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
         // skip already managed services, for example if a route has been restarted
         if (getManagementStrategy().isManaged(mtp, null)) {
-            LOG.trace("The thread pool is already managed: {}", threadPool);
+            log.trace("The thread pool is already managed: {}", threadPool);
             return;
         }
 
@@ -718,7 +715,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             // we need to keep track here, as we cannot re-construct the thread pool ObjectName when removing the thread pool
             managedThreadPools.put(threadPool, mtp);
         } catch (Exception e) {
-            LOG.warn("Could not register thread pool: " + threadPool + " as ThreadPool MBean.", e);
+            log.warn("Could not register thread pool: " + threadPool + " as ThreadPool MBean.", e);
         }
     }
 
@@ -732,14 +729,14 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         if (mtp != null) {
             // skip unmanaged routes
             if (!getManagementStrategy().isManaged(mtp, null)) {
-                LOG.trace("The thread pool is not managed: {}", threadPool);
+                log.trace("The thread pool is not managed: {}", threadPool);
                 return;
             }
 
             try {
                 unmanageObject(mtp);
             } catch (Exception e) {
-                LOG.warn("Could not unregister ThreadPool MBean", e);
+                log.warn("Could not unregister ThreadPool MBean", e);
             }
         }
     }
@@ -908,7 +905,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             return false;
         }
 
-        LOG.trace("Checking whether to register {} from route: {}", service, route);
+        log.trace("Checking whether to register {} from route: {}", service, route);
 
         ManagementAgent agent = getManagementStrategy().getManagementAgent();
         if (agent == null) {
@@ -963,7 +960,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
                     && camelContext.getManagementStrategy().getManagementAgent().getLoadStatisticsEnabled();
             boolean disabled = !load || camelContext.getManagementStrategy().getManagementAgent().getStatisticsLevel() == ManagementStatisticsLevel.Off;
 
-            LOG.debug("Load performance statistics {}", disabled ? "disabled" : "enabled");
+            log.debug("Load performance statistics {}", disabled ? "disabled" : "enabled");
             if (!disabled) {
                 // must use 1 sec interval as the load statistics is based on 1 sec calculations
                 loadTimer.setInterval(1000);
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
index dc8f970..444722f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
@@ -32,8 +32,6 @@ import org.apache.camel.spi.ManagementMBeanAssembler;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * An assembler to assemble a {@link javax.management.modelmbean.ModelMBean} which can be used
@@ -43,7 +41,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class DefaultManagementMBeanAssembler extends ServiceSupport implements ManagementMBeanAssembler {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultManagementMBeanAssembler.class);
+
     protected final MBeanInfoAssembler assembler;
     protected final CamelContext camelContext;
 
@@ -62,7 +60,7 @@ public class DefaultManagementMBeanAssembler extends ServiceSupport implements M
             // there may be a custom embedded instance which have additional methods
             custom = ((ManagedInstance) obj).getInstance();
             if (custom != null && ObjectHelper.hasAnnotation(custom.getClass().getAnnotations(), ManagedResource.class)) {
-                LOG.trace("Assembling MBeanInfo for: {} from custom @ManagedResource object: {}", name, custom);
+                log.trace("Assembling MBeanInfo for: {} from custom @ManagedResource object: {}", name, custom);
                 // get the mbean info into different groups (mbi = both, standard = standard out of the box mbi)
                 mbi = assembler.getMBeanInfo(obj, custom, name.toString());
                 standardMbi = assembler.getMBeanInfo(obj, null, name.toString());
@@ -71,7 +69,7 @@ public class DefaultManagementMBeanAssembler extends ServiceSupport implements M
 
         if (mbi == null) {
             // use the default provided mbean which has been annotated with JMX annotations
-            LOG.trace("Assembling MBeanInfo for: {} from @ManagedResource object: {}", name, obj);
+            log.trace("Assembling MBeanInfo for: {} from @ManagedResource object: {}", name, obj);
             mbi = assembler.getMBeanInfo(obj, null, name.toString());
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index b1da7ef..b184be5 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -83,7 +83,6 @@ import org.slf4j.LoggerFactory;
  */
 public class CamelInternalProcessor extends DelegateAsyncProcessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CamelInternalProcessor.class);
     private final List<CamelInternalProcessorAdvice> advices = new ArrayList<>();
 
     public CamelInternalProcessor() {
@@ -163,11 +162,11 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
         Object synchronous = exchange.removeProperty(Exchange.UNIT_OF_WORK_PROCESS_SYNC);
         if (exchange.isTransacted() || synchronous != null) {
             // must be synchronized for transacted exchanges
-            if (LOG.isTraceEnabled()) {
+            if (log.isTraceEnabled()) {
                 if (exchange.isTransacted()) {
-                    LOG.trace("Transacted Exchange must be routed synchronously for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
+                    log.trace("Transacted Exchange must be routed synchronously for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
                 } else {
-                    LOG.trace("Synchronous UnitOfWork Exchange must be routed synchronously for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
+                    log.trace("Synchronous UnitOfWork Exchange must be routed synchronously for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
                 }
             }
             // ----------------------------------------------------------
@@ -196,8 +195,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
             // ----------------------------------------------------------
             // CAMEL END USER - DEBUG ME HERE +++ START +++
             // ----------------------------------------------------------
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Processing exchange for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
+            if (log.isTraceEnabled()) {
+                log.trace("Processing exchange for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
             }
             boolean sync = processor.process(exchange, async);
             // ----------------------------------------------------------
@@ -209,8 +208,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
                 uow.afterProcess(processor, exchange, callback, sync);
             }
 
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Exchange processed and is continued routed {} for exchangeId: {} -> {}",
+            if (log.isTraceEnabled()) {
+                log.trace("Exchange processed and is continued routed {} for exchangeId: {} -> {}",
                         new Object[]{sync ? "synchronously" : "asynchronously", exchange.getExchangeId(), exchange});
             }
             return sync;
@@ -276,7 +275,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
         if (stop != null) {
             boolean doStop = exchange.getContext().getTypeConverter().convertTo(Boolean.class, stop);
             if (doStop) {
-                LOG.debug("Exchange is marked to stop routing: {}", exchange);
+                log.debug("Exchange is marked to stop routing: {}", exchange);
                 return false;
             }
         }
@@ -285,7 +284,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
         boolean forceShutdown = exchange.getContext().getShutdownStrategy().forceShutdown(this);
         if (forceShutdown) {
             String msg = "Run not allowed as ShutdownStrategy is forcing shutting down, will reject executing exchange: " + exchange;
-            LOG.debug(msg);
+            log.debug(msg);
             if (exchange.getException() == null) {
                 exchange.setException(new RejectedExecutionException(msg));
             }
@@ -335,6 +334,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
      */
     public static class InstrumentationAdvice implements CamelInternalProcessorAdvice<StopWatch> {
 
+        private final Logger log = LoggerFactory.getLogger(getClass());
         private PerformanceCounter counter;
         private String type;
 
@@ -362,8 +362,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
         }
 
         protected void recordTime(Exchange exchange, long duration) {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("{}Recording duration: {} millis for exchange: {}", type != null ? type + ": " : "", duration, exchange);
+            if (log.isTraceEnabled()) {
+                log.trace("{}Recording duration: {} millis for exchange: {}", type != null ? type + ": " : "", duration, exchange);
             }
 
             if (!exchange.isFailed() && exchange.getException() == null) {
@@ -430,6 +430,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
      */
     public static class RoutePolicyAdvice implements CamelInternalProcessorAdvice {
 
+        private final Logger log = LoggerFactory.getLogger(getClass());
         private final List<RoutePolicy> routePolicies;
         private Route route;
 
@@ -464,7 +465,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
                         policy.onExchangeBegin(route, exchange);
                     }
                 } catch (Exception e) {
-                    LOG.warn("Error occurred during onExchangeBegin on RoutePolicy: " + policy
+                    log.warn("Error occurred during onExchangeBegin on RoutePolicy: " + policy
                             + ". This exception will be ignored", e);
                 }
             }
@@ -485,7 +486,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
                         policy.onExchangeDone(route, exchange);
                     }
                 } catch (Exception e) {
-                    LOG.warn("Error occurred during onExchangeDone on RoutePolicy: " + policy
+                    log.warn("Error occurred during onExchangeDone on RoutePolicy: " + policy
                             + ". This exception will be ignored", e);
                 }
             }
@@ -811,6 +812,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
      */
     public static class DelayerAdvice implements CamelInternalProcessorAdvice {
 
+        private final Logger log = LoggerFactory.getLogger(getClass());
         private final long delay;
 
         public DelayerAdvice(long delay) {
@@ -820,10 +822,10 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
         @Override
         public Object before(Exchange exchange) throws Exception {
             try {
-                LOG.trace("Sleeping for: {} millis", delay);
+                log.trace("Sleeping for: {} millis", delay);
                 Thread.sleep(delay);
             } catch (InterruptedException e) {
-                LOG.debug("Sleep interrupted");
+                log.debug("Sleep interrupted");
                 Thread.currentThread().interrupt();
                 throw e;
             }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java
index c2ea27f..cf7f8e5 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CatchProcessor.java
@@ -36,7 +36,6 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class CatchProcessor extends DelegateAsyncProcessor implements Traceable, IdAware {
-    private static final Logger LOG = LoggerFactory.getLogger(CatchProcessor.class);
 
     private String id;
     private final List<Class<? extends Throwable>> exceptions;
@@ -76,8 +75,8 @@ public class CatchProcessor extends DelegateAsyncProcessor implements Traceable,
             callback.done(true);
             return true;
         }
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("This CatchProcessor catches the exception: {} caused by: {}", caught.getClass().getName(), e.getMessage());
+        if (log.isTraceEnabled()) {
+            log.trace("This CatchProcessor catches the exception: {} caused by: {}", caught.getClass().getName(), e.getMessage());
         }
 
         // store the last to endpoint as the failure endpoint
@@ -94,8 +93,8 @@ public class CatchProcessor extends DelegateAsyncProcessor implements Traceable,
         // is the exception handled by the catch clause
         final boolean handled = handles(exchange);
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("The exception is handled: {} for the exception: {} caused by: {}",
+        if (log.isDebugEnabled()) {
+            log.debug("The exception is handled: {} for the exception: {} caused by: {}",
                     new Object[]{handled, e.getClass().getName(), e.getMessage()});
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
index 5c1c54f..1c3f118 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ChoiceProcessor.java
@@ -44,7 +44,7 @@ import static org.apache.camel.processor.PipelineHelper.continueProcessing;
  * @version 
  */
 public class ChoiceProcessor extends ServiceSupport implements AsyncProcessor, Navigate<Processor>, Traceable, IdAware {
-    private static final Logger LOG = LoggerFactory.getLogger(ChoiceProcessor.class);
+
     private String id;
     private final List<FilterProcessor> filters;
     private final Processor otherwise;
@@ -103,7 +103,7 @@ public class ChoiceProcessor extends ServiceSupport implements AsyncProcessor, N
             }
 
             // check for error if so we should break out
-            if (!continueProcessing(exchange, "so breaking out of choice", LOG)) {
+            if (!continueProcessing(exchange, "so breaking out of choice", log)) {
                 break;
             }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
index 19743f5..d0da898 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
@@ -43,7 +43,6 @@ import org.slf4j.LoggerFactory;
  */
 public class ClaimCheckProcessor extends ServiceSupport implements AsyncProcessor, IdAware, CamelContextAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ClaimCheckProcessor.class);
     private CamelContext camelContext;
     private String id;
     private String operation;
@@ -122,13 +121,13 @@ public class ClaimCheckProcessor extends ServiceSupport implements AsyncProcesso
                 Exchange copy = ExchangeHelper.createCorrelatedCopy(exchange, false);
                 boolean addedNew = repo.add(key, copy);
                 if (addedNew) {
-                    LOG.debug("Add: {} -> {}", key, copy);
+                    log.debug("Add: {} -> {}", key, copy);
                 } else {
-                    LOG.debug("Override: {} -> {}", key, copy);
+                    log.debug("Override: {} -> {}", key, copy);
                 }
             } else if ("Get".equals(operation)) {
                 Exchange copy = repo.get(key);
-                LOG.debug("Get: {} -> {}", key, exchange);
+                log.debug("Get: {} -> {}", key, exchange);
                 if (copy != null) {
                     Exchange result = aggregationStrategy.aggregate(exchange, copy);
                     if (result != null) {
@@ -137,7 +136,7 @@ public class ClaimCheckProcessor extends ServiceSupport implements AsyncProcesso
                 }
             } else if ("GetAndRemove".equals(operation)) {
                 Exchange copy = repo.getAndRemove(key);
-                LOG.debug("GetAndRemove: {} -> {}", key, exchange);
+                log.debug("GetAndRemove: {} -> {}", key, exchange);
                 if (copy != null) {
                     // prepare the exchanges for aggregation
                     ExchangeHelper.prepareAggregation(exchange, copy);
@@ -149,11 +148,11 @@ public class ClaimCheckProcessor extends ServiceSupport implements AsyncProcesso
             } else if ("Push".equals(operation)) {
                 // copy exchange, and do not share the unit of work
                 Exchange copy = ExchangeHelper.createCorrelatedCopy(exchange, false);
-                LOG.debug("Push: {} -> {}", key, copy);
+                log.debug("Push: {} -> {}", key, copy);
                 repo.push(copy);
             } else if ("Pop".equals(operation)) {
                 Exchange copy = repo.pop();
-                LOG.debug("Pop: {} -> {}", key, exchange);
+                log.debug("Pop: {} -> {}", key, exchange);
                 if (copy != null) {
                     // prepare the exchanges for aggregation
                     ExchangeHelper.prepareAggregation(exchange, copy);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java b/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java
index 80abba9..a3269f0 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java
@@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public abstract class DelayProcessorSupport extends DelegateAsyncProcessor {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
+
     private final CamelContext camelContext;
     private final ScheduledExecutorService executorService;
     private final boolean shutdownExecutorService;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
index 2f488b3..d980e69a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
@@ -57,7 +57,6 @@ import static org.apache.camel.util.ExchangeHelper.copyResultsPreservePattern;
  */
 public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware, CamelContextAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(Enricher.class);
     private CamelContext camelContext;
     private String id;
     private ProducerCache producerCache;
@@ -166,8 +165,8 @@ public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware,
             producer = producerCache.acquireProducer(endpoint);
         } catch (Throwable e) {
             if (isIgnoreInvalidEndpoint()) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
+                if (log.isDebugEnabled()) {
+                    log.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
                 }
             } else {
                 exchange.setException(e);
@@ -238,13 +237,13 @@ public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware,
         });
 
         if (!sync) {
-            LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
+            log.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
             // the remainder of the routing slip will be completed async
             // so we break out now, then the callback will be invoked which then continue routing from where we left here
             return false;
         }
 
-        LOG.trace("Processing exchangeId: {} is continued being processed synchronously", exchange.getExchangeId());
+        log.trace("Processing exchangeId: {} is continued being processed synchronously", exchange.getExchangeId());
 
         if (watch != null) {
             // emit event that the exchange was sent to the endpoint
@@ -346,7 +345,7 @@ public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware,
 
         if (producerCache == null) {
             producerCache = new ProducerCache(this, camelContext, cacheSize);
-            LOG.debug("Enricher {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
+            log.debug("Enricher {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
         ServiceHelper.startService(producerCache, aggregationStrategy);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ErrorHandlerSupport.java b/camel-core/src/main/java/org/apache/camel/processor/ErrorHandlerSupport.java
index 90ba3c1..b86740a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ErrorHandlerSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ErrorHandlerSupport.java
@@ -40,8 +40,6 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class ErrorHandlerSupport extends ChildServiceSupport implements ErrorHandler {
 
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-
     protected final Map<ExceptionPolicyKey, OnExceptionDefinition> exceptionPolicies = new LinkedHashMap<>();
     protected ExceptionPolicyStrategy exceptionPolicy = createDefaultExceptionPolicyStrategy();
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java
index 77cc9fa..f2a3d9d 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/FatalFallbackErrorHandler.java
@@ -39,8 +39,6 @@ import static org.apache.camel.builder.ExpressionBuilder.routeIdExpression;
  */
 public class FatalFallbackErrorHandler extends DelegateAsyncProcessor implements ErrorHandler {
 
-    private static final Logger LOG = LoggerFactory.getLogger(FatalFallbackErrorHandler.class);
-
     private boolean deadLetterChannel;
 
     public FatalFallbackErrorHandler(Processor processor) {
@@ -65,7 +63,7 @@ public class FatalFallbackErrorHandler extends DelegateAsyncProcessor implements
             exchange.setProperty(Exchange.FATAL_FALLBACK_ERROR_HANDLER, fatals);
         }
         if (fatals.contains(id)) {
-            LOG.warn("Circular error-handler detected at route: {} - breaking out processing Exchange: {}", id, exchange);
+            log.warn("Circular error-handler detected at route: {} - breaking out processing Exchange: {}", id, exchange);
             // mark this exchange as already been error handler handled (just by having this property)
             // the false value mean the caught exception will be kept on the exchange, causing the
             // exception to be propagated back to the caller, and to break out routing
@@ -163,15 +161,15 @@ public class FatalFallbackErrorHandler extends DelegateAsyncProcessor implements
         // when using dead letter channel we only want to log at WARN level
         if (deadLetterChannel) {
             if (t != null) {
-                LOG.warn(message, t);
+                log.warn(message, t);
             } else {
-                LOG.warn(message);
+                log.warn(message);
             }
         } else {
             if (t != null) {
-                LOG.error(message, t);
+                log.error(message, t);
             } else {
-                LOG.error(message);
+                log.error(message);
             }
         }
     }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
index 3963ebd..f9dd9b9 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class FilterProcessor extends DelegateAsyncProcessor implements Traceable, IdAware {
-    private static final Logger LOG = LoggerFactory.getLogger(FilterProcessor.class);
+
     private String id;
     private final Predicate predicate;
     private transient long filtered;
@@ -64,7 +64,7 @@ public class FilterProcessor extends DelegateAsyncProcessor implements Traceable
     public boolean matches(Exchange exchange) {
         boolean matches = predicate.matches(exchange);
 
-        LOG.debug("Filter matches: {} for exchange: {}", matches, exchange);
+        log.debug("Filter matches: {} for exchange: {}", matches, exchange);
 
         // set property whether the filter matches or not
         exchange.setProperty(Exchange.FILTER_MATCHED, matches);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/FinallyProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/FinallyProcessor.java
index bf543dd..f6af37c 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/FinallyProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/FinallyProcessor.java
@@ -32,7 +32,6 @@ import org.slf4j.LoggerFactory;
  */
 public class FinallyProcessor extends DelegateAsyncProcessor implements Traceable, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(FinallyProcessor.class);
     private String id;
 
     public FinallyProcessor(Processor processor) {
@@ -84,7 +83,7 @@ public class FinallyProcessor extends DelegateAsyncProcessor implements Traceabl
         this.id = id;
     }
 
-    private static final class FinallyAsyncCallback implements AsyncCallback {
+    private final class FinallyAsyncCallback implements AsyncCallback {
 
         private final Exchange exchange;
         private final AsyncCallback callback;
@@ -120,7 +119,7 @@ public class FinallyProcessor extends DelegateAsyncProcessor implements Traceabl
                 if (!doneSync) {
                     // signal callback to continue routing async
                     ExchangeHelper.prepareOutToIn(exchange);
-                    LOG.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
+                    log.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
                 }
             } finally {
                 // callback must always be called
diff --git a/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
index 3909e7b..20d95cc 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
@@ -39,7 +39,6 @@ import org.slf4j.LoggerFactory;
  */
 public class LogProcessor extends ServiceSupport implements AsyncProcessor, Traceable, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(LogProcessor.class);
     private String id;
     private final Expression expression;
     private final CamelLogger logger;
@@ -89,9 +88,9 @@ public class LogProcessor extends ServiceSupport implements AsyncProcessor, Trac
                 String output = listener.onLog(exchange, logger, message);
                 message = output != null ? output : message;
             } catch (Throwable t) {
-                LOG.warn("Ignoring an exception thrown by {}: {}", listener.getClass().getName(), t.getMessage());
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("", t);
+                log.warn("Ignoring an exception thrown by {}: {}", listener.getClass().getName(), t.getMessage());
+                if (log.isDebugEnabled()) {
+                    log.debug("", t);
                 }
             }
         }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
index 07bb255..531572c 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
@@ -36,7 +36,6 @@ import static org.apache.camel.processor.PipelineHelper.continueProcessing;
  * The processor which sends messages in a loop.
  */
 public class LoopProcessor extends DelegateAsyncProcessor implements Traceable, IdAware {
-    private static final Logger LOG = LoggerFactory.getLogger(LoopProcessor.class);
 
     private String id;
     private final Expression expression;
@@ -96,23 +95,23 @@ public class LoopProcessor extends DelegateAsyncProcessor implements Traceable,
             boolean sync = process(target, callback, index, count, doWhile, original);
 
             if (!sync) {
-                LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", target.getExchangeId());
+                log.trace("Processing exchangeId: {} is continued being processed asynchronously", target.getExchangeId());
                 // the remainder of the loop will be completed async
                 // so we break out now, then the callback will be invoked which then continue routing from where we left here
                 return false;
             }
 
-            LOG.trace("Processing exchangeId: {} is continued being processed synchronously", target.getExchangeId());
+            log.trace("Processing exchangeId: {} is continued being processed synchronously", target.getExchangeId());
 
             // check for error if so we should break out
-            if (!continueProcessing(target, "so breaking out of loop", LOG)) {
+            if (!continueProcessing(target, "so breaking out of loop", log)) {
                 break;
             }
         }
 
         // we are done so prepare the result
         ExchangeHelper.copyResults(exchange, target);
-        LOG.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
+        log.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
         callback.done(true);
         return true;
     }
@@ -122,7 +121,7 @@ public class LoopProcessor extends DelegateAsyncProcessor implements Traceable,
                               final Exchange original) {
 
         // set current index as property
-        LOG.debug("LoopProcessor: iteration #{}", index.get());
+        log.debug("LoopProcessor: iteration #{}", index.get());
         exchange.setProperty(Exchange.LOOP_INDEX, index.get());
 
         boolean sync = processor.process(exchange, new AsyncCallback() {
@@ -154,7 +153,7 @@ public class LoopProcessor extends DelegateAsyncProcessor implements Traceable,
                 while ((predicate != null && doWhile.get()) || (index.get() < count.get())) {
 
                     // check for error if so we should break out
-                    if (!continueProcessing(target, "so breaking out of loop", LOG)) {
+                    if (!continueProcessing(target, "so breaking out of loop", log)) {
                         break;
                     }
 
@@ -164,7 +163,7 @@ public class LoopProcessor extends DelegateAsyncProcessor implements Traceable,
                     // process again
                     boolean sync = process(target, callback, index, count, doWhile, original);
                     if (!sync) {
-                        LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", target.getExchangeId());
+                        log.trace("Processing exchangeId: {} is continued being processed asynchronously", target.getExchangeId());
                         // the remainder of the routing slip will be completed async
                         // so we break out now, then the callback will be invoked which then continue routing from where we left here
                         return;
@@ -173,7 +172,7 @@ public class LoopProcessor extends DelegateAsyncProcessor implements Traceable,
 
                 // we are done so prepare the result
                 ExchangeHelper.copyResults(exchange, target);
-                LOG.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
+                log.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
                 callback.done(false);
             }
         });
diff --git a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index 44ab3cb..e69a698 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -85,8 +85,6 @@ import static org.apache.camel.util.ObjectHelper.notNull;
  */
 public class MulticastProcessor extends ServiceSupport implements AsyncProcessor, Navigate<Processor>, Traceable, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(MulticastProcessor.class);
-
     /**
      * Class that represent each step in the multicast route to do
      */
@@ -292,7 +290,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                     aggregationOnTheFlyDone, allTasksSubmitted, executionException);
             final AtomicBoolean aggregationTaskSubmitted = new AtomicBoolean();
 
-            LOG.trace("Starting to submit parallel tasks");
+            log.trace("Starting to submit parallel tasks");
             
             try {
                 while (it.hasNext()) {
@@ -326,7 +324,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
     
                             // Decide whether to continue with the multicast or not; similar logic to the Pipeline
                             Integer number = getExchangeIndex(subExchange);
-                            boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Parallel processing failed for number " + number, LOG);
+                            boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Parallel processing failed for number " + number, log);
                             if (stopOnException && !continueProcessing) {
                                 // signal to stop running
                                 running.set(false);
@@ -338,7 +336,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                                 }
                             }
     
-                            LOG.trace("Parallel processing complete for exchange: {}", subExchange);
+                            log.trace("Parallel processing complete for exchange: {}", subExchange);
                             return subExchange;
                         }
                     });
@@ -354,32 +352,32 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                     executionException.set(ObjectHelper.wrapRuntimeCamelException(e));
                 }
                 // and because of the exception we must signal we are done so the latch can open and let the other thread continue processing
-                LOG.debug("Signaling we are done aggregating on the fly for exchangeId: {}", original.getExchangeId());
-                LOG.trace("Aggregate on the fly task done for exchangeId: {}", original.getExchangeId());
+                log.debug("Signaling we are done aggregating on the fly for exchangeId: {}", original.getExchangeId());
+                log.trace("Aggregate on the fly task done for exchangeId: {}", original.getExchangeId());
                 aggregationOnTheFlyDone.countDown();
             }
 
             // signal all tasks has been submitted
-            LOG.trace("Signaling that all {} tasks has been submitted.", total.get());
+            log.trace("Signaling that all {} tasks has been submitted.", total.get());
             allTasksSubmitted.set(true);
 
             // its to hard to do parallel async routing so we let the caller thread be synchronously
             // and have it pickup the replies and do the aggregation (eg we use a latch to wait)
             // wait for aggregation to be done
-            LOG.debug("Waiting for on-the-fly aggregation to complete aggregating {} responses for exchangeId: {}", total.get(), original.getExchangeId());
+            log.debug("Waiting for on-the-fly aggregation to complete aggregating {} responses for exchangeId: {}", total.get(), original.getExchangeId());
             aggregationOnTheFlyDone.await();
 
             // did we fail for whatever reason, if so throw that caused exception
             if (executionException.get() != null) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Parallel processing failed due {}", executionException.get().getMessage());
+                if (log.isDebugEnabled()) {
+                    log.debug("Parallel processing failed due {}", executionException.get().getMessage());
                 }
                 throw executionException.get();
             }
         }
 
         // no everything is okay so we are done
-        LOG.debug("Done parallel processing {} exchanges", total);
+        log.debug("Done parallel processing {} exchanges", total);
     }
 
     /**
@@ -419,7 +417,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
         }
 
         public void run() {
-            LOG.trace("Aggregate on the fly task started for exchangeId: {}", original.getExchangeId());
+            log.trace("Aggregate on the fly task started for exchangeId: {}", original.getExchangeId());
 
             try {
                 aggregateOnTheFly();
@@ -431,8 +429,8 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                 }
             } finally {
                 // must signal we are done so the latch can open and let the other thread continue processing
-                LOG.debug("Signaling we are done aggregating on the fly for exchangeId: {}", original.getExchangeId());
-                LOG.trace("Aggregate on the fly task done for exchangeId: {}", original.getExchangeId());
+                log.debug("Signaling we are done aggregating on the fly for exchangeId: {}", original.getExchangeId());
+                log.trace("Aggregate on the fly task done for exchangeId: {}", original.getExchangeId());
                 aggregationOnTheFlyDone.countDown();
             }
         }
@@ -447,7 +445,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
             while (!done) {
                 // check if we have already aggregate everything
                 if (allTasksSubmitted.get() && aggregated.intValue() >= total.get()) {
-                    LOG.debug("Done aggregating {} exchanges on the fly.", aggregated);
+                    log.debug("Done aggregating {} exchanges on the fly.", aggregated);
                     break;
                 }
 
@@ -456,16 +454,16 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                     // we are timed out but try to grab if some tasks has been completed
                     // poll will return null if no tasks is present
                     future = completion.poll();
-                    LOG.trace("Polled completion task #{} after timeout to grab already completed tasks: {}", aggregated, future);
+                    log.trace("Polled completion task #{} after timeout to grab already completed tasks: {}", aggregated, future);
                 } else if (timeout > 0) {
                     long left = timeout - watch.taken();
                     if (left < 0) {
                         left = 0;
                     }
-                    LOG.trace("Polling completion task #{} using timeout {} millis.", aggregated, left);
+                    log.trace("Polling completion task #{} using timeout {} millis.", aggregated, left);
                     future = completion.poll(left, TimeUnit.MILLISECONDS);
                 } else {
-                    LOG.trace("Polling completion task #{}", aggregated);
+                    log.trace("Polling completion task #{}", aggregated);
                     // we must not block so poll every second
                     future = completion.poll(1, TimeUnit.SECONDS);
                     if (future == null) {
@@ -488,7 +486,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
 
                     // Decide whether to continue with the multicast or not; similar logic to the Pipeline
                     Integer number = getExchangeIndex(subExchange);
-                    boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Parallel processing failed for number " + number, LOG);
+                    boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Parallel processing failed for number " + number, log);
                     if (stopOnException && !continueProcessing) {
                         // we want to stop on exception and an exception or failure occurred
                         // this is similar to what the pipeline does, so we should do the same to not surprise end users
@@ -511,10 +509,10 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
 
             if (timedOut.get() || stoppedOnException) {
                 if (timedOut.get()) {
-                    LOG.debug("Cancelling tasks due timeout after {} millis.", timeout);
+                    log.debug("Cancelling tasks due timeout after {} millis.", timeout);
                 }
                 if (stoppedOnException) {
-                    LOG.debug("Cancelling tasks due stopOnException.");
+                    log.debug("Cancelling tasks due stopOnException.");
                 }
                 // cancel tasks as we timed out (its safe to cancel done tasks)
                 running.set(false);
@@ -552,7 +550,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                     // wrap in exception to explain where it failed
                     CamelExchangeException cex = new CamelExchangeException("Parallel processing failed for number " + aggregated.get(), subExchange, e);
                     subExchange.setException(cex);
-                    LOG.debug(cex.getMessage(), cex);
+                    log.debug(cex.getMessage(), cex);
                 }
             } finally {
                 aggregated.incrementAndGet();
@@ -598,9 +596,9 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                 ((TimeoutAwareAggregationStrategy) strategy).timeout(oldExchange, aggregated.intValue(), total.intValue(), timeout);
             } else {
                 // log a WARN we timed out since it will not be aggregated and the Exchange will be lost
-                LOG.warn("Parallel processing timed out after {} millis for number {}. This task will be cancelled and will not be aggregated.", timeout, aggregated.intValue());
+                log.warn("Parallel processing timed out after {} millis for number {}. This task will be cancelled and will not be aggregated.", timeout, aggregated.intValue());
             }
-            LOG.debug("Timeout occurred after {} millis for number {} task.", timeout, aggregated.intValue());
+            log.debug("Timeout occurred after {} millis for number {} task.", timeout, aggregated.intValue());
             timedOut.set(true);
 
             // mark that index as timed out, which allows us to try to retrieve
@@ -629,21 +627,21 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
 
             boolean sync = doProcessSequential(original, result, pairs, it, pair, callback, total);
             if (!sync) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", pair.getExchange().getExchangeId());
+                if (log.isTraceEnabled()) {
+                    log.trace("Processing exchangeId: {} is continued being processed asynchronously", pair.getExchange().getExchangeId());
                 }
                 // the remainder of the multicast will be completed async
                 // so we break out now, then the callback will be invoked which then continue routing from where we left here
                 return false;
             }
 
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Processing exchangeId: {} is continued being processed synchronously", pair.getExchange().getExchangeId());
+            if (log.isTraceEnabled()) {
+                log.trace("Processing exchangeId: {} is continued being processed synchronously", pair.getExchange().getExchangeId());
             }
 
             // Decide whether to continue with the multicast or not; similar logic to the Pipeline
             // remember to test for stop on exception and aggregate before copying back results
-            boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Sequential processing failed for number " + total.get(), LOG);
+            boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Sequential processing failed for number " + total.get(), log);
             if (stopOnException && !continueProcessing) {
                 if (subExchange.getException() != null) {
                     // wrap in exception to explain where it failed
@@ -657,7 +655,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                 return true;
             }
 
-            LOG.trace("Sequential processing complete for number {} exchange: {}", total, subExchange);
+            log.trace("Sequential processing complete for number {} exchange: {}", total, subExchange);
 
             if (parallelAggregate) {
                 doAggregateInternal(getAggregationStrategy(subExchange), result, subExchange);
@@ -668,7 +666,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
             total.incrementAndGet();
         }
 
-        LOG.debug("Done sequential processing {} exchanges", total);
+        log.debug("Done sequential processing {} exchanges", total);
 
         return true;
     }
@@ -720,7 +718,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
 
                     // Decide whether to continue with the multicast or not; similar logic to the Pipeline
                     // remember to test for stop on exception and aggregate before copying back results
-                    boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Sequential processing failed for number " + total.get(), LOG);
+                    boolean continueProcessing = PipelineHelper.continueProcessing(subExchange, "Sequential processing failed for number " + total.get(), log);
                     if (stopOnException && !continueProcessing) {
                         if (subExchange.getException() != null) {
                             // wrap in exception to explain where it failed
@@ -762,13 +760,13 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                         boolean sync = doProcessSequential(original, result, pairs, it, pair, callback, total);
 
                         if (!sync) {
-                            LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", original.getExchangeId());
+                            log.trace("Processing exchangeId: {} is continued being processed asynchronously", original.getExchangeId());
                             return;
                         }
 
                         // Decide whether to continue with the multicast or not; similar logic to the Pipeline
                         // remember to test for stop on exception and aggregate before copying back results
-                        continueProcessing = PipelineHelper.continueProcessing(subExchange, "Sequential processing failed for number " + total.get(), LOG);
+                        continueProcessing = PipelineHelper.continueProcessing(subExchange, "Sequential processing failed for number " + total.get(), log);
                         if (stopOnException && !continueProcessing) {
                             if (subExchange.getException() != null) {
                                 // wrap in exception to explain where it failed
@@ -864,7 +862,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
 
         // we are done so close the pairs iterator
         if (pairs instanceof Closeable) {
-            IOHelper.close((Closeable) pairs, "pairs", LOG);
+            IOHelper.close((Closeable) pairs, "pairs", log);
         }
 
         AggregationStrategy strategy = getAggregationStrategy(subExchange);
@@ -1064,11 +1062,11 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
             // lookup cached first to reuse and preserve memory
             answer = errorHandlers.get(key);
             if (answer != null) {
-                LOG.trace("Using existing error handler for: {}", processor);
+                log.trace("Using existing error handler for: {}", processor);
                 return answer;
             }
 
-            LOG.trace("Creating error handler for: {}", processor);
+            log.trace("Creating error handler for: {}", processor);
             RouteDefinition route = (RouteDefinition) routeContext.getRoute();
             ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
             // create error handler (create error handler directly to keep it light weight,
diff --git a/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
index 4579235..054c10e 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
@@ -48,7 +48,6 @@ import static org.apache.camel.util.ObjectHelper.notNull;
  */
 public class OnCompletionProcessor extends ServiceSupport implements AsyncProcessor, Traceable, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(OnCompletionProcessor.class);
     private final CamelContext camelContext;
     private String id;
     private final Processor processor;
@@ -206,7 +205,7 @@ public class OnCompletionProcessor extends ServiceSupport implements AsyncProces
         }
 
         if (useOriginalBody) {
-            LOG.trace("Using the original IN message instead of current");
+            log.trace("Using the original IN message instead of current");
 
             Message original = ExchangeHelper.getOriginalInMessage(exchange);
             answer.setIn(original);
@@ -242,14 +241,14 @@ public class OnCompletionProcessor extends ServiceSupport implements AsyncProces
             if (executorService != null) {
                 executorService.submit(new Callable<Exchange>() {
                     public Exchange call() throws Exception {
-                        LOG.debug("Processing onComplete: {}", copy);
+                        log.debug("Processing onComplete: {}", copy);
                         doProcess(processor, copy);
                         return copy;
                     }
                 });
             } else {
                 // run without thread-pool
-                LOG.debug("Processing onComplete: {}", copy);
+                log.debug("Processing onComplete: {}", copy);
                 doProcess(processor, copy);
             }
         }
@@ -282,7 +281,7 @@ public class OnCompletionProcessor extends ServiceSupport implements AsyncProces
             if (executorService != null) {
                 executorService.submit(new Callable<Exchange>() {
                     public Exchange call() throws Exception {
-                        LOG.debug("Processing onFailure: {}", copy);
+                        log.debug("Processing onFailure: {}", copy);
                         doProcess(processor, copy);
                         // restore exception after processing
                         copy.setException(original);
@@ -291,7 +290,7 @@ public class OnCompletionProcessor extends ServiceSupport implements AsyncProces
                 });
             } else {
                 // run without thread-pool
-                LOG.debug("Processing onFailure: {}", copy);
+                log.debug("Processing onFailure: {}", copy);
                 doProcess(processor, copy);
                 // restore exception after processing
                 copy.setException(original);
@@ -344,14 +343,14 @@ public class OnCompletionProcessor extends ServiceSupport implements AsyncProces
             if (executorService != null) {
                 executorService.submit(new Callable<Exchange>() {
                     public Exchange call() throws Exception {
-                        LOG.debug("Processing onAfterRoute: {}", copy);
+                        log.debug("Processing onAfterRoute: {}", copy);
                         doProcess(processor, copy);
                         return copy;
                     }
                 });
             } else {
                 // run without thread-pool
-                LOG.debug("Processing onAfterRoute: {}", copy);
+                log.debug("Processing onAfterRoute: {}", copy);
                 doProcess(processor, copy);
             }
         }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java b/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
index e75c20c..c7a0ca3 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
@@ -41,7 +41,6 @@ import static org.apache.camel.processor.PipelineHelper.continueProcessing;
  * @version 
  */
 public class Pipeline extends MulticastProcessor {
-    private static final Logger LOG = LoggerFactory.getLogger(Pipeline.class);
 
     private String id;
 
@@ -102,16 +101,16 @@ public class Pipeline extends MulticastProcessor {
 
             // continue as long its being processed synchronously
             if (!sync) {
-                LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
+                log.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
                 // the remainder of the pipeline will be completed async
                 // so we break out now, then the callback will be invoked which then continue routing from where we left here
                 return false;
             }
 
-            LOG.trace("Processing exchangeId: {} is continued being processed synchronously", exchange.getExchangeId());
+            log.trace("Processing exchangeId: {} is continued being processed synchronously", exchange.getExchangeId());
 
             // check for error if so we should break out
-            if (!continueProcessing(nextExchange, "so breaking out of pipeline", LOG)) {
+            if (!continueProcessing(nextExchange, "so breaking out of pipeline", log)) {
                 break;
             }
         }
@@ -119,7 +118,7 @@ public class Pipeline extends MulticastProcessor {
         // logging nextExchange as it contains the exchange that might have altered the payload and since
         // we are logging the completion if will be confusing if we log the original instead
         // we could also consider logging the original and the nextExchange then we have *before* and *after* snapshots
-        LOG.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), nextExchange);
+        log.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), nextExchange);
 
         // copy results back to the original exchange
         ExchangeHelper.copyResults(exchange, nextExchange);
@@ -131,7 +130,7 @@ public class Pipeline extends MulticastProcessor {
     private boolean process(final Exchange original, final Exchange exchange, final AsyncCallback callback,
                             final Iterator<Processor> processors, final AsyncProcessor asyncProcessor) {
         // this does the actual processing so log at trace level
-        LOG.trace("Processing exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
+        log.trace("Processing exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
 
         // implement asynchronous routing logic in callback so we can have the callback being
         // triggered and then continue routing where we left
@@ -149,20 +148,20 @@ public class Pipeline extends MulticastProcessor {
                     AsyncProcessor processor = AsyncProcessorConverterHelper.convert(processors.next());
 
                     // check for error if so we should break out
-                    if (!continueProcessing(nextExchange, "so breaking out of pipeline", LOG)) {
+                    if (!continueProcessing(nextExchange, "so breaking out of pipeline", log)) {
                         break;
                     }
 
                     nextExchange = createNextExchange(nextExchange);
                     boolean isDoneSync = process(original, nextExchange, callback, processors, processor);
                     if (!isDoneSync) {
-                        LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
+                        log.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
                         return;
                     }
                 }
 
                 ExchangeHelper.copyResults(original, nextExchange);
-                LOG.trace("Processing complete for exchangeId: {} >>> {}", original.getExchangeId(), original);
+                log.trace("Processing complete for exchangeId: {} >>> {}", original.getExchangeId(), original);
                 callback.done(false);
             }
         });
@@ -189,7 +188,7 @@ public class Pipeline extends MulticastProcessor {
         if (stop != null) {
             boolean doStop = exchange.getContext().getTypeConverter().convertTo(Boolean.class, stop);
             if (doStop) {
-                LOG.debug("ExchangeId: {} is marked to stop routing: {}", exchange.getExchangeId(), exchange);
+                log.debug("ExchangeId: {} is marked to stop routing: {}", exchange.getExchangeId(), exchange);
                 answer = false;
             }
         } else {
@@ -197,7 +196,7 @@ public class Pipeline extends MulticastProcessor {
             answer = it.hasNext();
         }
 
-        LOG.trace("ExchangeId: {} should continue routing: {}", exchange.getExchangeId(), answer);
+        log.trace("ExchangeId: {} should continue routing: {}", exchange.getExchangeId(), answer);
         return answer;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
index 06408fc..571461c 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
@@ -57,7 +57,6 @@ import static org.apache.camel.util.ExchangeHelper.copyResultsPreservePattern;
  */
 public class PollEnricher extends ServiceSupport implements AsyncProcessor, IdAware, CamelContextAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PollEnricher.class);
     private CamelContext camelContext;
     private ConsumerCache consumerCache;
     private String id;
@@ -202,8 +201,8 @@ public class PollEnricher extends ServiceSupport implements AsyncProcessor, IdAw
             consumer = consumerCache.acquirePollingConsumer(endpoint);
         } catch (Throwable e) {
             if (isIgnoreInvalidEndpoint()) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
+                if (log.isDebugEnabled()) {
+                    log.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
                 }
             } else {
                 exchange.setException(e);
@@ -230,20 +229,20 @@ public class PollEnricher extends ServiceSupport implements AsyncProcessor, IdAw
         Exchange resourceExchange;
         try {
             if (timeout < 0) {
-                LOG.debug("Consumer receive: {}", consumer);
+                log.debug("Consumer receive: {}", consumer);
                 resourceExchange = consumer.receive();
             } else if (timeout == 0) {
-                LOG.debug("Consumer receiveNoWait: {}", consumer);
+                log.debug("Consumer receiveNoWait: {}", consumer);
                 resourceExchange = consumer.receiveNoWait();
             } else {
-                LOG.debug("Consumer receive with timeout: {} ms. {}", timeout, consumer);
+                log.debug("Consumer receive with timeout: {} ms. {}", timeout, consumer);
                 resourceExchange = consumer.receive(timeout);
             }
 
             if (resourceExchange == null) {
-                LOG.debug("Consumer received no exchange");
+                log.debug("Consumer received no exchange");
             } else {
-                LOG.debug("Consumer received: {}", resourceExchange);
+                log.debug("Consumer received: {}", resourceExchange);
             }
         } catch (Exception e) {
             exchange.setException(new CamelExchangeException("Error during poll", exchange, e));
@@ -373,7 +372,7 @@ public class PollEnricher extends ServiceSupport implements AsyncProcessor, IdAw
         if (consumerCache == null) {
             // create consumer cache if we use dynamic expressions for computing the endpoints to poll
             consumerCache = new ConsumerCache(this, camelContext, cacheSize);
-            LOG.debug("PollEnrich {} using ConsumerCache with cacheSize={}", this, cacheSize);
+            log.debug("PollEnrich {} using ConsumerCache with cacheSize={}", this, cacheSize);
         }
         if (aggregationStrategy instanceof CamelContextAware) {
             ((CamelContextAware) aggregationStrategy).setCamelContext(camelContext);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
index 108b1dd..73d6587 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
@@ -52,7 +52,6 @@ import static org.apache.camel.util.ObjectHelper.notNull;
  */
 public class RecipientList extends ServiceSupport implements AsyncProcessor, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RecipientList.class);
     private static final String IGNORE_DELIMITER_MARKER = "false";
     private final CamelContext camelContext;
     private String id;
@@ -187,7 +186,7 @@ public class RecipientList extends ServiceSupport implements AsyncProcessor, IdA
     protected void doStart() throws Exception {
         if (producerCache == null) {
             producerCache = new ProducerCache(this, camelContext, cacheSize);
-            LOG.debug("RecipientList {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
+            log.debug("RecipientList {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
         ServiceHelper.startService(aggregationStrategy, producerCache);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
index b955aea..569cd1d 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
  */
 public class RecipientListProcessor extends MulticastProcessor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RecipientListProcessor.class);
+    private static final Logger log = LoggerFactory.getLogger(RecipientListProcessor.class);
     private final Iterator<Object> iter;
     private boolean ignoreInvalidEndpoints;
     private ProducerCache producerCache;
@@ -110,20 +110,20 @@ public class RecipientListProcessor extends MulticastProcessor {
 
         public void begin() {
             // we have already acquired and prepare the producer
-            LOG.trace("RecipientProcessorExchangePair #{} begin: {}", index, exchange);
+            log.trace("RecipientProcessorExchangePair #{} begin: {}", index, exchange);
             exchange.setProperty(Exchange.RECIPIENT_LIST_ENDPOINT, endpoint.getEndpointUri());
             // ensure stream caching is reset
             MessageHelper.resetStreamCache(exchange.getIn());
             // if the MEP on the endpoint is different then
             if (pattern != null) {
                 originalPattern = exchange.getPattern();
-                LOG.trace("Using exchangePattern: {} on exchange: {}", pattern, exchange);
+                log.trace("Using exchangePattern: {} on exchange: {}", pattern, exchange);
                 exchange.setPattern(pattern);
             }
         }
 
         public void done() {
-            LOG.trace("RecipientProcessorExchangePair #{} done: {}", index, exchange);
+            log.trace("RecipientProcessorExchangePair #{} done: {}", index, exchange);
             try {
                 // preserve original MEP
                 if (originalPattern != null) {
@@ -132,8 +132,8 @@ public class RecipientListProcessor extends MulticastProcessor {
                 // when we are done we should release back in pool
                 producerCache.releaseProducer(endpoint, producer);
             } catch (Exception e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Error releasing producer: " + producer + ". This exception will be ignored.", e);
+                if (log.isDebugEnabled()) {
+                    log.debug("Error releasing producer: " + producer + ". This exception will be ignored.", e);
                 }
             }
         }
@@ -194,8 +194,8 @@ public class RecipientListProcessor extends MulticastProcessor {
                 producer = producerCache.acquireProducer(endpoint);
             } catch (Exception e) {
                 if (isIgnoreInvalidEndpoints()) {
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
+                    if (log.isDebugEnabled()) {
+                        log.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
                     }
                     continue;
                 } else {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
index 915b09b..b6fed24 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -57,7 +57,7 @@ import static org.apache.camel.util.ObjectHelper.notNull;
  * pipeline to ensure it works the same and the async routing engine is flawless.
  */
 public class RoutingSlip extends ServiceSupport implements AsyncProcessor, Traceable, IdAware {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
+
     protected String id;
     protected ProducerCache producerCache;
     protected int cacheSize;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java b/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java
index 9d6bbfe..314dc4c 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SamplingThrottler.java
@@ -42,7 +42,6 @@ import org.slf4j.LoggerFactory;
  */
 public class SamplingThrottler extends DelegateAsyncProcessor implements Traceable, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SamplingThrottler.class);
     private String id;
     private long messageFrequency;
     private long currentMessageCount;
@@ -129,13 +128,13 @@ public class SamplingThrottler extends DelegateAsyncProcessor implements Traceab
                 long now = System.currentTimeMillis();
                 if (now >= timeOfLastExchange + periodInMillis) {
                     doSend = true;
-                    if (LOG.isTraceEnabled()) {
-                        LOG.trace(sampled.sample());
+                    if (log.isTraceEnabled()) {
+                        log.trace(sampled.sample());
                     }
                     timeOfLastExchange = now;
                 } else {
-                    if (LOG.isTraceEnabled()) {
-                        LOG.trace(sampled.drop());
+                    if (log.isTraceEnabled()) {
+                        log.trace(sampled.drop());
                     }
                 }
             }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
index 21d3d87..f924d7a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
@@ -18,8 +18,6 @@ package org.apache.camel.processor;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.AsyncProducer;
-import org.apache.camel.impl.ProducerCache.AsyncProducerCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
@@ -48,7 +46,7 @@ import org.slf4j.LoggerFactory;
  * @see org.apache.camel.processor.SendProcessor
  */
 public class SendDynamicProcessor extends ServiceSupport implements AsyncProcessor, IdAware, CamelContextAware {
-    protected static final Logger LOG = LoggerFactory.getLogger(SendDynamicProcessor.class);
+
     protected SendDynamicAware dynamicAware;
     protected CamelContext camelContext;
     protected final String uri;
@@ -120,8 +118,8 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
                         preAwareProcessor = dynamicAware.createPreProcessor(exchange, entry);
                         postAwareProcessor = dynamicAware.createPostProcessor(exchange, entry);
                         if (staticUri != null) {
-                            if (LOG.isDebugEnabled()) {
-                                LOG.debug("Optimising toD via SendDynamicAware component: {} to use static uri: {}", scheme, URISupport.sanitizeUri(staticUri));
+                            if (log.isDebugEnabled()) {
+                                log.debug("Optimising toD via SendDynamicAware component: {} to use static uri: {}", scheme, URISupport.sanitizeUri(staticUri));
                             }
                         }
                     }
@@ -133,8 +131,8 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
                 endpoint = resolveEndpoint(exchange, recipient);
             }
             if (endpoint == null) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Send dynamic evaluated as null so cannot send to any endpoint");
+                if (log.isDebugEnabled()) {
+                    log.debug("Send dynamic evaluated as null so cannot send to any endpoint");
                 }
                 // no endpoint to send to, so ignore
                 callback.done(true);
@@ -143,8 +141,8 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
             destinationExchangePattern = EndpointHelper.resolveExchangePatternFromUrl(endpoint.getEndpointUri());
         } catch (Throwable e) {
             if (isIgnoreInvalidEndpoint()) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
+                if (log.isDebugEnabled()) {
+                    log.debug("Endpoint uri is invalid: " + recipient + ". This exception will be ignored.", e);
                 }
             } else {
                 exchange.setException(e);
@@ -172,7 +170,7 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
                 c.done(true);
             }
 
-            LOG.debug(">>>> {} {}", endpoint, e);
+            log.debug(">>>> {} {}", endpoint, e);
             return p.process(target, new AsyncCallback() {
                 public void done(boolean doneSync) {
                     // restore previous MEP
@@ -251,7 +249,7 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
     protected void doStart() throws Exception {
         if (producerCache == null) {
             producerCache = new ProducerCache(this, camelContext, cacheSize);
-            LOG.debug("DynamicSendTo {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
+            log.debug("DynamicSendTo {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
         if (isAllowOptimisedComponents() && uri != null) {
@@ -265,15 +263,15 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
                     SendDynamicAwareResolver resolver = new SendDynamicAwareResolver();
                     dynamicAware = resolver.resolve(camelContext, scheme);
                     if (dynamicAware != null) {
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("Detected SendDynamicAware component: {} optimising toD: {}", scheme, URISupport.sanitizeUri(uri));
+                        if (log.isDebugEnabled()) {
+                            log.debug("Detected SendDynamicAware component: {} optimising toD: {}", scheme, URISupport.sanitizeUri(uri));
                         }
                     }
                 }
             } catch (Throwable e) {
                 // ignore
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Error creating optimised SendDynamicAwareResolver for uri: " + URISupport.sanitizeUri(uri)
+                if (log.isDebugEnabled()) {
+                    log.debug("Error creating optimised SendDynamicAwareResolver for uri: " + URISupport.sanitizeUri(uri)
                         + " due to " + e.getMessage() + ". This exception is ignored", e);
                 }
             }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
index 0548bf7..2ce2328 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -17,7 +17,6 @@
 package org.apache.camel.processor;
 
 import java.net.URISyntaxException;
-import java.util.HashMap;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
@@ -27,15 +26,11 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.Producer;
 import org.apache.camel.Traceable;
-import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.InterceptSendToEndpoint;
 import org.apache.camel.impl.ProducerCache;
-import org.apache.camel.impl.ServicePool;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.AsyncProcessorHelper;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.EventHelper;
@@ -52,7 +47,7 @@ import org.slf4j.LoggerFactory;
  * @see SendDynamicProcessor
  */
 public class SendProcessor extends ServiceSupport implements AsyncProcessor, Traceable, EndpointAware, IdAware {
-    protected static final Logger LOG = LoggerFactory.getLogger(SendProcessor.class);
+
     protected transient String traceLabelToString;
     protected final CamelContext camelContext;
     protected final ExchangePattern pattern;
@@ -138,7 +133,7 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
             final StopWatch watch = sw;
 
             try {
-                LOG.debug(">>>> {} {}", destination, exchange);
+                log.debug(">>>> {} {}", destination, exchange);
                 return producer.process(exchange, new AsyncCallback() {
                     @Override
                     public void done(boolean doneSync) {
@@ -164,7 +159,7 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
         }
 
         configureExchange(exchange, pattern);
-        LOG.debug(">>>> {} {}", destination, exchange);
+        log.debug(">>>> {} {}", destination, exchange);
 
         // send the exchange to the destination using the producer cache for the non optimized producers
         return producerCache.doInAsyncProducer(destination, exchange, callback, (producer, ex, cb) -> producer.process(ex, doneSync -> {
@@ -218,8 +213,8 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
         // lookup this before we can use the destination
         Endpoint lookup = camelContext.hasEndpoint(destination.getEndpointKey());
         if (lookup instanceof InterceptSendToEndpoint) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Intercepted sending to {} -> {}",
+            if (log.isDebugEnabled()) {
+                log.debug("Intercepted sending to {} -> {}",
                         URISupport.sanitizeUri(destination.getEndpointUri()), URISupport.sanitizeUri(lookup.getEndpointUri()));
             }
             destination = lookup;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java b/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
index 6b1df38..fde1a47 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
@@ -69,8 +69,6 @@ import org.slf4j.LoggerFactory;
  */
 public class StreamResequencer extends ServiceSupport implements SequenceSender<Exchange>, AsyncProcessor, Navigate<Processor>, Traceable, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(StreamResequencer.class);
-
     private String id;
     private final CamelContext camelContext;
     private final ExceptionHandler exceptionHandler;
@@ -238,7 +236,7 @@ public class StreamResequencer extends ServiceSupport implements SequenceSender<
             delivery.request();
         } catch (Exception e) {
             if (isIgnoreInvalidExchanges()) {
-                LOG.debug("Invalid Exchange. This Exchange will be ignored: {}", exchange);
+                log.debug("Invalid Exchange. This Exchange will be ignored: {}", exchange);
             } else {
                 exchange.setException(new CamelExchangeException("Error processing Exchange in StreamResequencer", exchange, e));
             }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
index 94af2e7..a510cc3 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
@@ -59,7 +59,6 @@ import org.slf4j.LoggerFactory;
  */
 public class ThreadsProcessor extends ServiceSupport implements AsyncProcessor, IdAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ThreadsProcessor.class);
     private String id;
     private final CamelContext camelContext;
     private final ExecutorService executorService;
@@ -80,7 +79,7 @@ public class ThreadsProcessor extends ServiceSupport implements AsyncProcessor,
 
         @Override
         public void run() {
-            LOG.trace("Continue routing exchange {}", exchange);
+            log.trace("Continue routing exchange {}", exchange);
             if (shutdown.get()) {
                 exchange.setException(new RejectedExecutionException("ThreadsProcessor is not running."));
             }
@@ -91,7 +90,7 @@ public class ThreadsProcessor extends ServiceSupport implements AsyncProcessor,
         public void reject() {
             // reject should mark the exchange with an rejected exception and mark not to route anymore
             exchange.setException(new RejectedExecutionException());
-            LOG.trace("Rejected routing exchange {}", exchange);
+            log.trace("Rejected routing exchange {}", exchange);
             if (shutdown.get()) {
                 exchange.setException(new RejectedExecutionException("ThreadsProcessor is not running."));
             }
@@ -126,7 +125,7 @@ public class ThreadsProcessor extends ServiceSupport implements AsyncProcessor,
         // we cannot execute this asynchronously for transacted exchanges, as the transaction manager doesn't support
         // using different threads in the same transaction
         if (exchange.isTransacted()) {
-            LOG.trace("Transacted Exchange must be routed synchronously for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
+            log.trace("Transacted Exchange must be routed synchronously for exchangeId: {} -> {}", exchange.getExchangeId(), exchange);
             callback.done(true);
             return true;
         }
@@ -134,7 +133,7 @@ public class ThreadsProcessor extends ServiceSupport implements AsyncProcessor,
         try {
             // process the call in asynchronous mode
             ProcessCall call = new ProcessCall(exchange, callback, false);
-            LOG.trace("Submitting task {}", call);
+            log.trace("Submitting task {}", call);
             executorService.submit(call);
             // tell Camel routing engine we continue routing asynchronous
             return false;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Throttler.java b/camel-core/src/main/java/org/apache/camel/processor/Throttler.java
index d1bd9e5..42259fe 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Throttler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Throttler.java
@@ -70,7 +70,6 @@ public class Throttler extends DelegateAsyncProcessor implements Traceable, IdAw
 
     private enum State { SYNC, ASYNC, ASYNC_REJECTED }
 
-    private final Logger log = LoggerFactory.getLogger(Throttler.class);
     private final CamelContext camelContext;
     private final ScheduledExecutorService asyncExecutor;
     private final boolean shutdownAsyncExecutor;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java b/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
index e4bf8c0..05e7bc6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
@@ -30,8 +30,6 @@ import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.AsyncProcessorHelper;
 import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A logger for logging message throughput.
@@ -39,7 +37,6 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class ThroughputLogger extends ServiceSupport implements AsyncProcessor, IdAware {
-    private static final Logger LOG = LoggerFactory.getLogger(ThroughputLogger.class);
 
     private String id;
     private final AtomicInteger receivedCounter = new AtomicInteger();
@@ -54,22 +51,22 @@ public class ThroughputLogger extends ServiceSupport implements AsyncProcessor,
     private String action = "Received";
     private CamelContext camelContext;
     private ScheduledExecutorService logSchedulerService;
-    private CamelLogger log;
+    private CamelLogger logger;
     private String lastLogMessage;
     private double rate;
     private double average;
 
-    public ThroughputLogger(CamelLogger log) {
-        this.log = log;
+    public ThroughputLogger(CamelLogger logger) {
+        this.logger = logger;
     }
 
-    public ThroughputLogger(CamelLogger log, Integer groupSize) {
-        this(log);
+    public ThroughputLogger(CamelLogger logger, Integer groupSize) {
+        this(logger);
         setGroupSize(groupSize);
     }
 
-    public ThroughputLogger(CamelLogger log, CamelContext camelContext, Long groupInterval, Long groupDelay, Boolean groupActiveOnly) {
-        this(log);
+    public ThroughputLogger(CamelLogger logger, CamelContext camelContext, Long groupInterval, Long groupDelay, Boolean groupActiveOnly) {
+        this(logger);
         this.camelContext = camelContext;
         setGroupInterval(groupInterval);
         setGroupActiveOnly(groupActiveOnly);
@@ -100,7 +97,7 @@ public class ThroughputLogger extends ServiceSupport implements AsyncProcessor,
         if (groupSize != null) {
             if (receivedCount % groupSize == 0) {
                 lastLogMessage = createLogMessage(exchange, receivedCount);
-                log.log(lastLogMessage);
+                logger.log(lastLogMessage);
             }
         }
 
@@ -196,7 +193,7 @@ public class ThroughputLogger extends ServiceSupport implements AsyncProcessor,
 
             logSchedulerService = camelContext.getExecutorServiceManager().newSingleThreadScheduledExecutor(this, "ThroughputLogger");
             Runnable scheduledLogTask = new ScheduledLogTask();
-            LOG.info("Scheduling throughput log to run every {} millis.", groupInterval);
+            log.info("Scheduling throughput logger to run every {} millis.", groupInterval);
             // must use fixed rate to have it trigger at every X interval
             logSchedulerService.scheduleAtFixedRate(scheduledLogTask, groupDelay, groupInterval, TimeUnit.MILLISECONDS);
         }
@@ -235,7 +232,7 @@ public class ThroughputLogger extends ServiceSupport implements AsyncProcessor,
         public void run() {
             // only run if CamelContext has been fully started
             if (!camelContext.getStatus().isStarted()) {
-                LOG.trace("ThroughputLogger cannot start because CamelContext({}) has not been started yet", camelContext.getName());
+                log.trace("ThroughputLogger cannot start because CamelContext({}) has not been started yet", camelContext.getName());
                 return;
             }
 
@@ -245,14 +242,14 @@ public class ThroughputLogger extends ServiceSupport implements AsyncProcessor,
 
     protected void createGroupIntervalLogMessage() {
         
-        // this indicates that no messages have been received yet...don't log yet
+        // this indicates that no messages have been received yet...don't logger yet
         if (startTime == 0) {
             return;
         }
         
         int receivedCount = receivedCounter.get();
 
-        // if configured, hide log messages when no new messages have been received
+        // if configured, hide logger messages when no new messages have been received
         if (groupActiveOnly && receivedCount == groupReceivedCount) {
             return;
         }
@@ -273,7 +270,7 @@ public class ThroughputLogger extends ServiceSupport implements AsyncProcessor,
         lastLogMessage = getAction() + ": " + currentCount + " new messages, with total " + receivedCount + " so far. Last group took: " + duration
                 + " millis which is: " + numberFormat.format(rate)
                 + " messages per second. average: " + numberFormat.format(average);
-        log.log(lastLogMessage);
+        logger.log(lastLogMessage);
     }
 
     protected double messagesPerSecond(long messageCount, long startTime, long endTime) {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
index 2573fe1..1cb861d 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/TryProcessor.java
@@ -41,7 +41,6 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class TryProcessor extends ServiceSupport implements AsyncProcessor, Navigate<Processor>, Traceable, IdAware {
-    private static final Logger LOG = LoggerFactory.getLogger(TryProcessor.class);
 
     protected String id;
     protected final Processor tryProcessor;
@@ -85,19 +84,19 @@ public class TryProcessor extends ServiceSupport implements AsyncProcessor, Navi
 
             // continue as long its being processed synchronously
             if (!sync) {
-                LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
+                log.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
                 // the remainder of the try .. catch .. finally will be completed async
                 // so we break out now, then the callback will be invoked which then continue routing from where we left here
                 return false;
             }
 
-            LOG.trace("Processing exchangeId: {} is continued being processed synchronously", exchange.getExchangeId());
+            log.trace("Processing exchangeId: {} is continued being processed synchronously", exchange.getExchangeId());
         }
 
         ExchangeHelper.prepareOutToIn(exchange);
         exchange.removeProperty(Exchange.TRY_ROUTE_BLOCK);
         exchange.setProperty(Exchange.EXCEPTION_HANDLED, lastHandled);
-        LOG.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
+        log.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
         callback.done(true);
         return true;
     }
@@ -106,7 +105,7 @@ public class TryProcessor extends ServiceSupport implements AsyncProcessor, Navi
                               final Iterator<Processor> processors, final AsyncProcessor processor,
                               final Object lastHandled) {
         // this does the actual processing so log at trace level
-        LOG.trace("Processing exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
+        log.trace("Processing exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
 
         // implement asynchronous routing logic in callback so we can have the callback being
         // triggered and then continue routing where we left
@@ -127,7 +126,7 @@ public class TryProcessor extends ServiceSupport implements AsyncProcessor, Navi
                     doneSync = process(exchange, callback, processors, processor, lastHandled);
 
                     if (!doneSync) {
-                        LOG.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
+                        log.trace("Processing exchangeId: {} is continued being processed asynchronously", exchange.getExchangeId());
                         // the remainder of the try .. catch .. finally will be completed async
                         // so we break out now, then the callback will be invoked which then continue routing from where we left here
                         return;
@@ -137,7 +136,7 @@ public class TryProcessor extends ServiceSupport implements AsyncProcessor, Navi
                 ExchangeHelper.prepareOutToIn(exchange);
                 exchange.removeProperty(Exchange.TRY_ROUTE_BLOCK);
                 exchange.setProperty(Exchange.EXCEPTION_HANDLED, lastHandled);
-                LOG.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
+                log.trace("Processing complete for exchangeId: {} >>> {}", exchange.getExchangeId(), exchange);
                 callback.done(false);
             }
         });
@@ -150,7 +149,7 @@ public class TryProcessor extends ServiceSupport implements AsyncProcessor, Navi
         if (stop != null) {
             boolean doStop = exchange.getContext().getTypeConverter().convertTo(Boolean.class, stop);
             if (doStop) {
-                LOG.debug("Exchange is marked to stop routing: {}", exchange);
+                log.debug("Exchange is marked to stop routing: {}", exchange);
                 return false;
             }
         }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
index 63f7ae4..06f68a4 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
@@ -53,7 +53,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class WireTapProcessor extends ServiceSupport implements AsyncProcessor, Traceable, ShutdownAware, IdAware, CamelContextAware {
-    private static final Logger LOG = LoggerFactory.getLogger(WireTapProcessor.class);
+
     private String id;
     private CamelContext camelContext;
     private final SendDynamicProcessor dynamicProcessor;
@@ -156,10 +156,10 @@ public class WireTapProcessor extends ServiceSupport implements AsyncProcessor,
             public Exchange call() throws Exception {
                 taskCount.increment();
                 try {
-                    LOG.debug(">>>> (wiretap) {} {}", uri, wireTapExchange);
+                    log.debug(">>>> (wiretap) {} {}", uri, wireTapExchange);
                     processor.process(wireTapExchange);
                 } catch (Throwable e) {
-                    LOG.warn("Error occurred during processing " + wireTapExchange + " wiretap to " + uri + ". This exception will be ignored.", e);
+                    log.warn("Error occurred during processing " + wireTapExchange + " wiretap to " + uri + ". This exception will be ignored.", e);
                 } finally {
                     taskCount.decrement();
                 }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
index d9078d7..129d86f 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
@@ -89,8 +89,6 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
     public static final String AGGREGATE_TIMEOUT_CHECKER = "AggregateTimeoutChecker";
 
-    private static final Logger LOG = LoggerFactory.getLogger(AggregateProcessor.class);
-
     private final Lock lock = new ReentrantLock();
     private final AtomicBoolean aggregateRepositoryWarned = new AtomicBoolean();
     private final CamelContext camelContext;
@@ -296,7 +294,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         if (ObjectHelper.isEmpty(key)) {
             // we have a bad correlation key
             if (isIgnoreInvalidCorrelationKeys()) {
-                LOG.debug("Invalid correlation key. This Exchange will be ignored: {}", exchange);
+                log.debug("Invalid correlation key. This Exchange will be ignored: {}", exchange);
                 return;
             } else {
                 throw new CamelExchangeException("Invalid correlation key", exchange);
@@ -329,7 +327,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                     exhaustedRetries = false;
                     break;
                 } catch (OptimisticLockingAggregationRepository.OptimisticLockingException e) {
-                    LOG.trace("On attempt {} OptimisticLockingAggregationRepository: {} threw OptimisticLockingException while trying to add() key: {} and exchange: {}",
+                    log.trace("On attempt {} OptimisticLockingAggregationRepository: {} threw OptimisticLockingException while trying to add() key: {} and exchange: {}",
                               new Object[]{attempt, aggregationRepository, key, copy, e});
                     optimisticLockRetryPolicy.doDelay(attempt);
                 }
@@ -396,7 +394,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
      * @throws org.apache.camel.CamelExchangeException is thrown if error aggregating
      */
     private List<Exchange> doAggregation(String key, Exchange newExchange) throws CamelExchangeException {
-        LOG.trace("onAggregation +++ start +++ with correlation key: {}", key);
+        log.trace("onAggregation +++ start +++ with correlation key: {}", key);
 
         List<Exchange> list = new ArrayList<>();
         String complete = null;
@@ -487,7 +485,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         if (aggregationRepository instanceof RecoverableAggregationRepository) {
             boolean valid = oldExchange == null || answer.getExchangeId().equals(oldExchange.getExchangeId());
             if (!valid && aggregateRepositoryWarned.compareAndSet(false, true)) {
-                LOG.warn("AggregationStrategy should return the oldExchange instance instead of the newExchange whenever possible"
+                log.warn("AggregationStrategy should return the oldExchange instance instead of the newExchange whenever possible"
                     + " as otherwise this can lead to unexpected behavior with some RecoverableAggregationRepository implementations");
             }
         }
@@ -512,7 +510,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
             doAggregationComplete(complete, list, key, originalExchange, answer);
         }
 
-        LOG.trace("onAggregation +++  end  +++ with correlation key: {}", key);
+        log.trace("onAggregation +++  end  +++ with correlation key: {}", key);
         return list;
     }
 
@@ -548,7 +546,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
     }
 
     protected void doAggregationRepositoryAdd(CamelContext camelContext, String key, Exchange oldExchange, Exchange newExchange) {
-        LOG.trace("In progress aggregated oldExchange: {}, newExchange: {} with correlation key: {}", oldExchange, newExchange, key);
+        log.trace("In progress aggregated oldExchange: {}, newExchange: {} with correlation key: {}", oldExchange, newExchange, key);
         if (optimisticLocking) {
             try {
                 ((OptimisticLockingAggregationRepository)aggregationRepository).add(camelContext, key, oldExchange, newExchange);
@@ -567,7 +565,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
             strategy = ((DelegateAggregationStrategy) strategy).getDelegate();
         }
         if (strategy instanceof OptimisticLockingAwareAggregationStrategy) {
-            LOG.trace("onOptimisticLockFailure with AggregationStrategy: {}, oldExchange: {}, newExchange: {}",
+            log.trace("onOptimisticLockFailure with AggregationStrategy: {}, oldExchange: {}, newExchange: {}",
                       new Object[]{strategy, oldExchange, newExchange});
             ((OptimisticLockingAwareAggregationStrategy)strategy).onOptimisticLockFailure(oldExchange, newExchange);
         }
@@ -654,8 +652,8 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         if (getCompletionTimeoutExpression() != null) {
             Long value = getCompletionTimeoutExpression().evaluate(exchange, Long.class);
             if (value != null && value > 0) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Updating correlation key {} to timeout after {} ms. as exchange received: {}",
+                if (log.isTraceEnabled()) {
+                    log.trace("Updating correlation key {} to timeout after {} ms. as exchange received: {}",
                             new Object[]{key, value, exchange});
                 }
                 addExchangeToTimeoutMap(key, exchange, value);
@@ -664,8 +662,8 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         }
         if (!timeoutSet && getCompletionTimeout() > 0) {
             // timeout is used so use the timeout map to keep an eye on this
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Updating correlation key {} to timeout after {} ms. as exchange received: {}",
+            if (log.isTraceEnabled()) {
+                log.trace("Updating correlation key {} to timeout after {} ms. as exchange received: {}",
                         new Object[]{key, getCompletionTimeout(), exchange});
             }
             addExchangeToTimeoutMap(key, exchange, getCompletionTimeout());
@@ -703,7 +701,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
         if (!fromTimeout && timeoutMap != null) {
             // cleanup timeout map if it was a incoming exchange which triggered the timeout (and not the timeout checker)
-            LOG.trace("Removing correlation key {} from timeout", key);
+            log.trace("Removing correlation key {} from timeout", key);
             timeoutMap.remove(key);
         }
 
@@ -728,7 +726,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         Exchange answer;
         if (fromTimeout && isDiscardOnCompletionTimeout()) {
             // discard due timeout
-            LOG.debug("Aggregation for correlation key {} discarding aggregated exchange: {}", key, aggregated);
+            log.debug("Aggregation for correlation key {} discarding aggregated exchange: {}", key, aggregated);
             // must confirm the discarded exchange
             aggregationRepository.confirm(aggregated.getContext(), aggregated.getExchangeId());
             // and remove redelivery state as well
@@ -744,7 +742,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
     }
 
     private void onSubmitCompletion(final String key, final Exchange exchange) {
-        LOG.debug("Aggregation complete for correlation key {} sending aggregated exchange: {}", key, exchange);
+        log.debug("Aggregation complete for correlation key {} sending aggregated exchange: {}", key, exchange);
 
         // add this as in progress before we submit the task
         inProgressCompleteExchanges.add(exchange.getExchangeId());
@@ -782,7 +780,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         // send this exchange
         executorService.submit(new Runnable() {
             public void run() {
-                LOG.debug("Processing aggregated exchange: {}", exchange);
+                log.debug("Processing aggregated exchange: {}", exchange);
 
                 // add on completion task so we remember to update the inProgressCompleteExchanges
                 exchange.addOnCompletion(new AggregateOnCompletion(exchange.getExchangeId()));
@@ -798,7 +796,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                     // if there was an exception then let the exception handler handle it
                     getExceptionHandler().handleException("Error processing aggregated exchange", exchange, exchange.getException());
                 } else {
-                    LOG.trace("Processing aggregated exchange: {} complete.", exchange);
+                    log.trace("Processing aggregated exchange: {} complete.", exchange);
                 }
             }
         });
@@ -818,20 +816,20 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         }
 
         StopWatch watch = new StopWatch();
-        LOG.trace("Starting restoring CompletionTimeout for {} existing exchanges from the aggregation repository...", keys.size());
+        log.trace("Starting restoring CompletionTimeout for {} existing exchanges from the aggregation repository...", keys.size());
 
         for (String key : keys) {
             Exchange exchange = aggregationRepository.get(camelContext, key);
             // grab the timeout value
             long timeout = exchange.hasProperties() ? exchange.getProperty(Exchange.AGGREGATED_TIMEOUT, 0, long.class) : 0;
             if (timeout > 0) {
-                LOG.trace("Restoring CompletionTimeout for exchangeId: {} with timeout: {} millis.", exchange.getExchangeId(), timeout);
+                log.trace("Restoring CompletionTimeout for exchangeId: {} with timeout: {} millis.", exchange.getExchangeId(), timeout);
                 addExchangeToTimeoutMap(key, exchange, timeout);
             }
         }
 
         // log duration of this task so end user can see how long it takes to pre-check this upon starting
-        LOG.info("Restored {} CompletionTimeout conditions in the AggregationTimeoutChecker in {}",
+        log.info("Restored {} CompletionTimeout conditions in the AggregationTimeoutChecker in {}",
                 timeoutMap.size(), TimeUtils.printDuration(watch.taken()));
     }
 
@@ -1084,7 +1082,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         }
 
         public void onFailure(Exchange exchange) {
-            LOG.trace("Aggregated exchange onFailure: {}", exchange);
+            log.trace("Aggregated exchange onFailure: {}", exchange);
 
             // must remember to remove in progress when we failed
             inProgressCompleteExchanges.remove(exchangeId);
@@ -1092,7 +1090,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         }
 
         public void onComplete(Exchange exchange) {
-            LOG.trace("Aggregated exchange onComplete: {}", exchange);
+            log.trace("Aggregated exchange onComplete: {}", exchange);
 
             // only confirm if we processed without a problem
             try {
@@ -1142,7 +1140,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
             boolean inProgress = inProgressCompleteExchanges.contains(exchangeId);
             if (inProgress) {
-                LOG.trace("Aggregated exchange with id: {} is already in progress.", exchangeId);
+                log.trace("Aggregated exchange with id: {} is already in progress.", exchangeId);
                 return true;
             }
 
@@ -1165,7 +1163,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
             }
 
             if (optimisticLocking && evictionStolen) {
-                LOG.debug("Another Camel instance has already successfully correlated or processed this timeout eviction "
+                log.debug("Another Camel instance has already successfully correlated or processed this timeout eviction "
                           + "for exchange with id: {} and correlation id: {}", exchangeId, key);
             }
             return true;
@@ -1180,11 +1178,11 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         public void run() {
             // only run if CamelContext has been fully started
             if (!camelContext.getStatus().isStarted()) {
-                LOG.trace("Completion interval task cannot start due CamelContext({}) has not been started yet", camelContext.getName());
+                log.trace("Completion interval task cannot start due CamelContext({}) has not been started yet", camelContext.getName());
                 return;
             }
 
-            LOG.trace("Starting completion interval task");
+            log.trace("Starting completion interval task");
 
             // trigger completion for all in the repository
             Set<String> keys = aggregationRepository.getKeys();
@@ -1201,7 +1199,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                         if (exchange == null) {
                             stolenInterval = true;
                         } else {
-                            LOG.trace("Completion interval triggered for correlation key: {}", key);
+                            log.trace("Completion interval triggered for correlation key: {}", key);
                             // indicate it was completed by interval
                             exchange.setProperty(Exchange.AGGREGATED_COMPLETED_BY, "interval");
                             try {
@@ -1214,7 +1212,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                             }
                         }
                         if (optimisticLocking && stolenInterval) {
-                            LOG.debug("Another Camel instance has already processed this interval aggregation for exchange with correlation id: {}", key);
+                            log.debug("Another Camel instance has already processed this interval aggregation for exchange with correlation id: {}", key);
                         }
                     }
                 } finally {
@@ -1224,7 +1222,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                 }
             }
 
-            LOG.trace("Completion interval task complete");
+            log.trace("Completion interval task complete");
         }
     }
 
@@ -1241,11 +1239,11 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         public void run() {
             // only run if CamelContext has been fully started
             if (!camelContext.getStatus().isStarted()) {
-                LOG.trace("Recover check cannot start due CamelContext({}) has not been started yet", camelContext.getName());
+                log.trace("Recover check cannot start due CamelContext({}) has not been started yet", camelContext.getName());
                 return;
             }
 
-            LOG.trace("Starting recover check");
+            log.trace("Starting recover check");
 
             // copy the current in progress before doing scan
             final Set<String> copyOfInProgress = new LinkedHashSet<>(inProgressCompleteExchanges);
@@ -1255,7 +1253,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
                 // we may shutdown while doing recovery
                 if (!isRunAllowed()) {
-                    LOG.info("We are shutting down so stop recovering");
+                    log.info("We are shutting down so stop recovering");
                     return;
                 }
                 if (!optimisticLocking) {
@@ -1266,9 +1264,9 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                     // its safer to consider it in progress than risk duplicates due both in progress + recovered
                     boolean inProgress = copyOfInProgress.contains(exchangeId) || inProgressCompleteExchanges.contains(exchangeId);
                     if (inProgress) {
-                        LOG.trace("Aggregated exchange with id: {} is already in progress.", exchangeId);
+                        log.trace("Aggregated exchange with id: {} is already in progress.", exchangeId);
                     } else {
-                        LOG.debug("Loading aggregated exchange with id: {} to be recovered.", exchangeId);
+                        log.debug("Loading aggregated exchange with id: {} to be recovered.", exchangeId);
                         Exchange exchange = recoverable.recover(camelContext, exchangeId);
                         if (exchange != null) {
                             // get the correlation key
@@ -1281,7 +1279,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
                             // if we are exhausted, then move to dead letter channel
                             if (data != null && recoverable.getMaximumRedeliveries() > 0 && data.redeliveryCounter >= recoverable.getMaximumRedeliveries()) {
-                                LOG.warn("The recovered exchange is exhausted after " + recoverable.getMaximumRedeliveries()
+                                log.warn("The recovered exchange is exhausted after " + recoverable.getMaximumRedeliveries()
                                         + " attempts, will now be moved to dead letter channel: " + recoverable.getDeadLetterUri());
 
                                 // send to DLC
@@ -1316,7 +1314,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                                     exchange.getIn().setHeader(Exchange.REDELIVERY_MAX_COUNTER, recoverable.getMaximumRedeliveries());
                                 }
 
-                                LOG.debug("Delivery attempt: {} to recover aggregated exchange with id: {}", data.redeliveryCounter, exchangeId);
+                                log.debug("Delivery attempt: {} to recover aggregated exchange with id: {}", data.redeliveryCounter, exchangeId);
 
                                 // not exhaust so resubmit the recovered exchange
                                 onSubmitCompletion(key, exchange);
@@ -1330,7 +1328,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                 }
             }
 
-            LOG.trace("Recover check complete");
+            log.trace("Recover check complete");
         }
     }
 
@@ -1346,7 +1344,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         }
         if (strategy instanceof PreCompletionAwareAggregationStrategy) {
             preCompletion = true;
-            LOG.info("PreCompletionAwareAggregationStrategy detected. Aggregator {} is in pre-completion mode.", getId());
+            log.info("PreCompletionAwareAggregationStrategy detected. Aggregator {} is in pre-completion mode.", getId());
         }
 
         if (!preCompletion) {
@@ -1361,24 +1359,24 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
         if (getCloseCorrelationKeyOnCompletion() != null) {
             if (getCloseCorrelationKeyOnCompletion() > 0) {
-                LOG.info("Using ClosedCorrelationKeys with a LRUCache with a capacity of {}", getCloseCorrelationKeyOnCompletion());
+                log.info("Using ClosedCorrelationKeys with a LRUCache with a capacity of {}", getCloseCorrelationKeyOnCompletion());
                 closedCorrelationKeys = LRUCacheFactory.newLRUCache(getCloseCorrelationKeyOnCompletion());
             } else {
-                LOG.info("Using ClosedCorrelationKeys with unbounded capacity");
+                log.info("Using ClosedCorrelationKeys with unbounded capacity");
                 closedCorrelationKeys = new ConcurrentHashMap<>();
             }
         }
 
         if (aggregationRepository == null) {
             aggregationRepository = new MemoryAggregationRepository(optimisticLocking);
-            LOG.info("Defaulting to MemoryAggregationRepository");
+            log.info("Defaulting to MemoryAggregationRepository");
         }
 
         if (optimisticLocking) {
             if (!(aggregationRepository instanceof OptimisticLockingAggregationRepository)) {
                 throw new IllegalArgumentException("Optimistic locking cannot be enabled without using an AggregationRepository that implements OptimisticLockingAggregationRepository");
             }
-            LOG.info("Optimistic locking is enabled");
+            log.info("Optimistic locking is enabled");
         }
 
         ServiceHelper.startService(aggregationStrategy, processor, aggregationRepository);
@@ -1395,7 +1393,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                 // create a background recover thread to check every interval
                 recoverService = camelContext.getExecutorServiceManager().newScheduledThreadPool(this, "AggregateRecoverChecker", 1);
                 Runnable recoverTask = new RecoverTask(recoverable);
-                LOG.info("Using RecoverableAggregationRepository by scheduling recover checker to run every {} millis.", interval);
+                log.info("Using RecoverableAggregationRepository by scheduling recover checker to run every {} millis.", interval);
                 // use fixed delay so there is X interval between each run
                 recoverService.scheduleWithFixedDelay(recoverTask, 1000L, interval, TimeUnit.MILLISECONDS);
 
@@ -1404,7 +1402,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                     if (max <= 0) {
                         throw new IllegalArgumentException("Option maximumRedeliveries must be a positive number, was: " + max);
                     }
-                    LOG.info("After {} failed redelivery attempts Exchanges will be moved to deadLetterUri: {}", max, recoverable.getDeadLetterUri());
+                    log.info("After {} failed redelivery attempts Exchanges will be moved to deadLetterUri: {}", max, recoverable.getDeadLetterUri());
 
                     // dead letter uri must be a valid endpoint
                     Endpoint endpoint = camelContext.getEndpoint(recoverable.getDeadLetterUri());
@@ -1420,7 +1418,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
             throw new IllegalArgumentException("Only one of completionInterval or completionTimeout can be used, not both.");
         }
         if (getCompletionInterval() > 0) {
-            LOG.info("Using CompletionInterval to run every {} millis.", getCompletionInterval());
+            log.info("Using CompletionInterval to run every {} millis.", getCompletionInterval());
             if (getTimeoutCheckerExecutorService() == null) {
                 setTimeoutCheckerExecutorService(camelContext.getExecutorServiceManager().newScheduledThreadPool(this, AGGREGATE_TIMEOUT_CHECKER, 1));
                 shutdownTimeoutCheckerExecutorService = true;
@@ -1431,7 +1429,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
         // start timeout service if its in use
         if (getCompletionTimeout() > 0 || getCompletionTimeoutExpression() != null) {
-            LOG.info("Using CompletionTimeout to trigger after {} millis of inactivity.", getCompletionTimeout());
+            log.info("Using CompletionTimeout to trigger after {} millis of inactivity.", getCompletionTimeout());
             if (getTimeoutCheckerExecutorService() == null) {
                 setTimeoutCheckerExecutorService(camelContext.getExecutorServiceManager().newScheduledThreadPool(this, AGGREGATE_TIMEOUT_CHECKER, 1));
                 shutdownTimeoutCheckerExecutorService = true;
@@ -1514,18 +1512,18 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
 
         StopWatch watch = new StopWatch();
         while (inProgressCompleteExchanges.size() > 0) {
-            LOG.trace("Waiting for {} inflight exchanges to complete", getInProgressCompleteExchanges());
+            log.trace("Waiting for {} inflight exchanges to complete", getInProgressCompleteExchanges());
             try {
                 Thread.sleep(100);
             } catch (InterruptedException e) {
                 // break out as we got interrupted such as the JVM terminating
-                LOG.warn("Interrupted while waiting for {} inflight exchanges to complete.", getInProgressCompleteExchanges());
+                log.warn("Interrupted while waiting for {} inflight exchanges to complete.", getInProgressCompleteExchanges());
                 break;
             }
         }
 
         if (expected > 0) {
-            LOG.info("Forcing completion of all groups with {} exchanges completed in {}", expected, TimeUtils.printDuration(watch.taken()));
+            log.info("Forcing completion of all groups with {} exchanges completed in {}", expected, TimeUtils.printDuration(watch.taken()));
         }
     }
 
@@ -1559,7 +1557,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
             Exchange exchange = aggregationRepository.get(camelContext, key);
             if (exchange != null) {
                 total = 1;
-                LOG.trace("Force completion triggered for correlation key: {}", key);
+                log.trace("Force completion triggered for correlation key: {}", key);
                 // indicate it was completed by a force completion request
                 exchange.setProperty(Exchange.AGGREGATED_COMPLETED_BY, "force");
                 Exchange answer = onCompletion(key, exchange, exchange, false);
@@ -1572,10 +1570,10 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                 lock.unlock(); 
             }
         }
-        LOG.trace("Completed force completion of group {}", key);
+        log.trace("Completed force completion of group {}", key);
 
         if (total > 0) {
-            LOG.debug("Forcing completion of group {} with {} exchanges", key, total);
+            log.debug("Forcing completion of group {} with {} exchanges", key, total);
         }
         return total;
     }
@@ -1585,11 +1583,11 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
         // only run if CamelContext has been fully started or is stopping
         boolean allow = camelContext.getStatus().isStarted() || camelContext.getStatus().isStopping();
         if (!allow) {
-            LOG.warn("Cannot start force completion of all groups because CamelContext({}) has not been started", camelContext.getName());
+            log.warn("Cannot start force completion of all groups because CamelContext({}) has not been started", camelContext.getName());
             return 0;
         }
 
-        LOG.trace("Starting force completion of all groups task");
+        log.trace("Starting force completion of all groups task");
 
         // trigger completion for all in the repository
         Set<String> keys = aggregationRepository.getKeys();
@@ -1605,7 +1603,7 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                 for (String key : keys) {
                     Exchange exchange = aggregationRepository.get(camelContext, key);
                     if (exchange != null) {
-                        LOG.trace("Force completion triggered for correlation key: {}", key);
+                        log.trace("Force completion triggered for correlation key: {}", key);
                         // indicate it was completed by a force completion request
                         exchange.setProperty(Exchange.AGGREGATED_COMPLETED_BY, "force");
                         Exchange answer = onCompletion(key, exchange, exchange, false);
@@ -1620,10 +1618,10 @@ public class AggregateProcessor extends ServiceSupport implements AsyncProcessor
                 }
             }
         }
-        LOG.trace("Completed force completion of all groups task");
+        log.trace("Completed force completion of all groups task");
 
         if (total > 0) {
-            LOG.debug("Forcing completion of all groups with {} exchanges", total);
+            log.debug("Forcing completion of all groups with {} exchanges", total);
         }
         return total;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/idempotent/FileIdempotentRepository.java b/camel-core/src/main/java/org/apache/camel/processor/idempotent/FileIdempotentRepository.java
index c6758b9..e4c49f6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/idempotent/FileIdempotentRepository.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/idempotent/FileIdempotentRepository.java
@@ -53,7 +53,7 @@ import org.slf4j.LoggerFactory;
  */
 @ManagedResource(description = "File based idempotent repository")
 public class FileIdempotentRepository extends ServiceSupport implements IdempotentRepository<String> {
-    private static final Logger LOG = LoggerFactory.getLogger(FileIdempotentRepository.class);
+
     private static final String STORE_DELIMITER = "\n";
 
     private final AtomicBoolean init = new AtomicBoolean();
@@ -142,7 +142,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
 
                 // check if we hit maximum capacity (if enabled) and report a warning about this
                 if (maxFileStoreSize > 0 && fileStore.length() > maxFileStoreSize) {
-                    LOG.warn("Maximum capacity of file store: {} hit at {} bytes. Dropping {} oldest entries from the file store", fileStore, maxFileStoreSize, dropOldestFileStore);
+                    log.warn("Maximum capacity of file store: {} hit at {} bytes. Dropping {} oldest entries from the file store", fileStore, maxFileStoreSize, dropOldestFileStore);
                     trunkStore();
                 }
 
@@ -308,17 +308,17 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
      * @param key  the key
      */
     protected void appendToStore(final String key) {
-        LOG.debug("Appending: {} to idempotent filestore: {}", key, fileStore);
+        log.debug("Appending: {} to idempotent filestore: {}", key, fileStore);
         FileOutputStream fos = null;
         try {
             // create store parent directory if missing
             File storeParentDirectory = fileStore.getParentFile();
             if (storeParentDirectory != null && !storeParentDirectory.exists()) {
-                LOG.info("Parent directory of file store {} doesn't exist. Creating.", fileStore);
+                log.info("Parent directory of file store {} doesn't exist. Creating.", fileStore);
                 if (fileStore.getParentFile().mkdirs()) {
-                    LOG.info("Parent directory of filestore: {} successfully created.", fileStore);
+                    log.info("Parent directory of filestore: {} successfully created.", fileStore);
                 } else {
-                    LOG.warn("Parent directory of filestore: {} cannot be created.", fileStore);
+                    log.warn("Parent directory of filestore: {} cannot be created.", fileStore);
                 }
             }
             // create store if missing
@@ -332,12 +332,12 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
         } catch (IOException e) {
             throw ObjectHelper.wrapRuntimeCamelException(e);
         } finally {
-            IOHelper.close(fos, "Appending to file idempotent repository", LOG);
+            IOHelper.close(fos, "Appending to file idempotent repository", log);
         }
     }
 
     protected synchronized void removeFromStore(String key) {
-        LOG.debug("Removing: {} from idempotent filestore: {}", key, fileStore);
+        log.debug("Removing: {} from idempotent filestore: {}", key, fileStore);
 
         // we need to re-load the entire file and remove the key and then re-write the file
         List<String> lines = new ArrayList<>();
@@ -364,7 +364,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
 
         if (found) {
             // rewrite file
-            LOG.debug("Rewriting idempotent filestore: {} due to key: {} removed", fileStore, key);
+            log.debug("Rewriting idempotent filestore: {} due to key: {} removed", fileStore, key);
             FileOutputStream fos = null;
             try {
                 fos = new FileOutputStream(fileStore);
@@ -375,7 +375,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
             } catch (IOException e) {
                 throw ObjectHelper.wrapRuntimeCamelException(e);
             } finally {
-                IOHelper.close(fos, "Rewriting file idempotent repository", LOG);
+                IOHelper.close(fos, "Rewriting file idempotent repository", log);
             }
         }
     }
@@ -400,7 +400,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
             return;
         }
 
-        LOG.debug("Trunking: {} oldest entries from idempotent filestore: {}", dropOldestFileStore, fileStore);
+        log.debug("Trunking: {} oldest entries from idempotent filestore: {}", dropOldestFileStore, fileStore);
 
         // we need to re-load the entire file and remove the key and then re-write the file
         List<String> lines = new ArrayList<>();
@@ -426,7 +426,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
 
         if (!lines.isEmpty()) {
             // rewrite file
-            LOG.debug("Rewriting idempotent filestore: {} with {} entries:", fileStore, lines.size());
+            log.debug("Rewriting idempotent filestore: {} with {} entries:", fileStore, lines.size());
             FileOutputStream fos = null;
             try {
                 fos = new FileOutputStream(fileStore);
@@ -437,11 +437,11 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
             } catch (IOException e) {
                 throw ObjectHelper.wrapRuntimeCamelException(e);
             } finally {
-                IOHelper.close(fos, "Rewriting file idempotent repository", LOG);
+                IOHelper.close(fos, "Rewriting file idempotent repository", log);
             }
         } else {
             // its a small file so recreate the file
-            LOG.debug("Clearing idempotent filestore: {}", fileStore);
+            log.debug("Clearing idempotent filestore: {}", fileStore);
             clearStore();
         }
     }
@@ -462,7 +462,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
     protected void loadStore() throws IOException {
         // auto create starting directory if needed
         if (!fileStore.exists()) {
-            LOG.debug("Creating filestore: {}", fileStore);
+            log.debug("Creating filestore: {}", fileStore);
             File parent = fileStore.getParentFile();
             if (parent != null) {
                 parent.mkdirs();
@@ -473,7 +473,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
             }
         }
 
-        LOG.trace("Loading to 1st level cache from idempotent filestore: {}", fileStore);
+        log.trace("Loading to 1st level cache from idempotent filestore: {}", fileStore);
 
         cache.clear();
         try (Scanner scanner = new Scanner(fileStore, null, STORE_DELIMITER)) {
@@ -485,7 +485,7 @@ public class FileIdempotentRepository extends ServiceSupport implements Idempote
             throw ObjectHelper.wrapRuntimeCamelException(e);
         }
 
-        LOG.debug("Loaded {} to the 1st level cache from idempotent filestore: {}", cache.size(), fileStore);
+        log.debug("Loaded {} to the 1st level cache from idempotent filestore: {}", cache.size(), fileStore);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java b/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java
index 9ce5d85..9e2adec 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/idempotent/IdempotentConsumer.java
@@ -53,7 +53,7 @@ import org.slf4j.LoggerFactory;
  * @see org.apache.camel.spi.ExchangeIdempotentRepository
  */
 public class IdempotentConsumer extends ServiceSupport implements CamelContextAware, AsyncProcessor, Navigate<Processor>, IdAware {
-    private static final Logger LOG = LoggerFactory.getLogger(IdempotentConsumer.class);
+
     private CamelContext camelContext;
     private String id;
     private final Expression messageIdExpression;
@@ -147,7 +147,7 @@ public class IdempotentConsumer extends ServiceSupport implements CamelContextAw
 
                 if (skipDuplicate) {
                     // if we should skip duplicate then we are done
-                    LOG.debug("Ignoring duplicate message with id: {} for exchange: {}", messageId, exchange);
+                    log.debug("Ignoring duplicate message with id: {} for exchange: {}", messageId, exchange);
                     callback.done(true);
                     return true;
                 }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index 5fb2efa..a0cedad 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -67,12 +67,10 @@ import org.slf4j.LoggerFactory;
  */
 public class BacklogDebugger extends ServiceSupport implements InterceptStrategy {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BacklogDebugger.class);
-
     private long fallbackTimeout = 300;
     private final CamelContext camelContext;
     private LoggingLevel loggingLevel = LoggingLevel.INFO;
-    private final CamelLogger logger = new CamelLogger(LOG, loggingLevel);
+    private final CamelLogger logger = new CamelLogger(log, loggingLevel);
     private final AtomicBoolean enabled = new AtomicBoolean();
     private final AtomicLong debugCounter = new AtomicLong(0);
     private final Debugger debugger;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
index a308493..3a1490a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
@@ -48,7 +48,6 @@ public final class BacklogTracer extends ServiceSupport implements InterceptStra
 
     // lets limit the tracer to 10 thousand messages in total
     public static final int MAX_BACKLOG_SIZE = 10 * 1000;
-    private static final Logger LOG = LoggerFactory.getLogger(BacklogTracer.class);
     private final CamelContext camelContext;
     private boolean enabled;
     private final AtomicLong traceCounter = new AtomicLong(0);
@@ -123,8 +122,8 @@ public final class BacklogTracer extends ServiceSupport implements InterceptStra
             filter = shouldTraceFilter(exchange);
         }
 
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Should trace evaluated {} -> pattern: {}, filter: {}", definition.getId(), pattern, filter);
+        if (log.isTraceEnabled()) {
+            log.trace("Should trace evaluated {} -> pattern: {}, filter: {}", definition.getId(), pattern, filter);
         }
         return pattern && filter;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
index 96aa6d6..9cf70d3 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
@@ -62,8 +62,6 @@ import org.slf4j.LoggerFactory;
  */
 public class DefaultChannel extends CamelInternalProcessor implements ModelChannel {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultChannel.class);
-
     private final List<InterceptStrategy> interceptors = new ArrayList<>();
     private Processor errorHandler;
     // the next processor (non wrapped)
@@ -200,7 +198,7 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
         // the definition to wrap should be the fine grained,
         // so if a child is set then use it, if not then its the original output used
         ProcessorDefinition<?> targetOutputDef = childDefinition != null ? childDefinition : outputDefinition;
-        LOG.debug("Initialize channel for target: '{}'", targetOutputDef);
+        log.debug("Initialize channel for target: '{}'", targetOutputDef);
 
         // fix parent/child relationship. This will be the case of the routes has been
         // defined using XML DSL or end user may have manually assembled a route from the model.
@@ -263,7 +261,7 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
             // 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);
             if (!(wrapped instanceof AsyncProcessor)) {
-                LOG.warn("Interceptor: " + strategy + " at: " + outputDefinition + " does not return an AsyncProcessor instance."
+                log.warn("Interceptor: " + strategy + " at: " + outputDefinition + " does not return an AsyncProcessor instance."
                         + " This causes the asynchronous routing engine to not work as optimal as possible."
                         + " See more details at the InterceptStrategy javadoc."
                         + " Camel will use a bridge to adapt the interceptor to the asynchronous routing engine,"
diff --git a/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java b/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java
index 37d8947..296b4d5 100644
--- a/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java
@@ -17,8 +17,6 @@
 package org.apache.camel.support;
 
 import org.apache.camel.spi.EventNotifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Base class to extend for custom {@link EventNotifier} implementations.
@@ -26,7 +24,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public abstract class EventNotifierSupport extends ServiceSupport implements EventNotifier {
-    protected Logger log = LoggerFactory.getLogger(getClass());
+
     private boolean ignoreCamelContextEvents;
     private boolean ignoreRouteEvents;
     private boolean ignoreServiceEvents;
diff --git a/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java b/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java
index 139037b..4d1d9b5 100644
--- a/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java
@@ -35,7 +35,6 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class RoutePolicySupport extends ServiceSupport implements RoutePolicy {
 
-    protected final Logger log = LoggerFactory.getLogger(getClass());
     private ExceptionHandler exceptionHandler;
 
     public void onInit(Route route) {
diff --git a/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java b/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
index 4667ee3..c1ee206 100644
--- a/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
@@ -41,7 +41,6 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public abstract class ServiceSupport implements StatefulService {
-    private static final Logger LOG = LoggerFactory.getLogger(ServiceSupport.class);
 
     protected final AtomicBoolean started = new AtomicBoolean(false);
     protected final AtomicBoolean starting = new AtomicBoolean(false);
@@ -52,7 +51,7 @@ public abstract class ServiceSupport implements StatefulService {
     protected final AtomicBoolean shuttingdown = new AtomicBoolean(false);
     protected final AtomicBoolean shutdown = new AtomicBoolean(false);
 
-    private String version;
+    protected final Logger log = LoggerFactory.getLogger(getClass());
 
     /**
      * <b>Important: </b> You should override the lifecycle methods that start with <tt>do</tt>, eg {@link #doStart()},
@@ -63,11 +62,11 @@ public abstract class ServiceSupport implements StatefulService {
     public void start() throws Exception {
         if (isStarting() || isStarted()) {
             // only start service if not already started
-            LOG.trace("Service already started");
+            log.trace("Service already started");
             return;
         }
         if (starting.compareAndSet(false, true)) {
-            LOG.trace("Starting service");
+            log.trace("Starting service");
             try {
                 doStart();
                 started.set(true);
@@ -107,11 +106,11 @@ public abstract class ServiceSupport implements StatefulService {
      */
     public void stop() throws Exception {
         if (isStopped()) {
-            LOG.trace("Service already stopped");
+            log.trace("Service already stopped");
             return;
         }
         if (isStopping()) {
-            LOG.trace("Service already stopping");
+            log.trace("Service already stopping");
             return;
         }
         stopping.set(true);
@@ -192,7 +191,7 @@ public abstract class ServiceSupport implements StatefulService {
     @Override
     public void shutdown() throws Exception {
         if (shutdown.get()) {
-            LOG.trace("Service already shut down");
+            log.trace("Service already shut down");
             return;
         }
         // ensure we are stopped first
diff --git a/camel-core/src/main/java/org/apache/camel/util/component/AbstractApiConsumer.java b/camel-core/src/main/java/org/apache/camel/util/component/AbstractApiConsumer.java
index 900fb82..7b95a96 100644
--- a/camel-core/src/main/java/org/apache/camel/util/component/AbstractApiConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/util/component/AbstractApiConsumer.java
@@ -33,9 +33,6 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractApiConsumer<E extends Enum<E> & ApiName, T>
     extends ScheduledPollConsumer implements PropertyNamesInterceptor, PropertiesInterceptor, ResultInterceptor {
 
-    // logger
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-
     // API Endpoint
     protected final AbstractApiEndpoint<E, T> endpoint;
 
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
index 4a9045b..8ef0d1c 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
@@ -70,7 +70,7 @@ public class LogCustomLoggerTest extends ContextTestSupport {
         ConsumingAppender.newAppender(
             LogComponent.class.getCanonicalName(),
             "LogComponent",
-            Level.TRACE,
+            Level.INFO,
             event -> sw2.append(event.getLoggerName()));
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java b/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
index d7f6c87..7a175d4 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
@@ -23,7 +23,6 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.OptionalIdentifiedDefinition;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.NodeIdFactory;
@@ -125,7 +124,7 @@ public class CustomIdFactoryTest extends ContextTestSupport {
             return new DelegateProcessor(target) {
                 @Override
                 protected void processNext(Exchange exchange) throws Exception {
-                    LOG.debug("Debugging at: {} with id: {} with exchange: {}", definition, definition.getId(), exchange);
+                    log.debug("Debugging at: {} with id: {} with exchange: {}", definition, definition.getId(), exchange);
 
                     // record the path taken at runtime
                     ids += definition.getId();
diff --git a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
index d170fb4..a6cca02 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
@@ -296,11 +296,11 @@ public class TransformerRouteTest extends ContextTestSupport {
                 public boolean process(Exchange exchange, AsyncCallback callback) {
                     Object input = exchange.getIn().getBody();
                     if (input instanceof XOrderResponse) {
-                        LOG.info("Endpoint: XOrderResponse -> XML");
+                        log.info("Endpoint: XOrderResponse -> XML");
                         exchange.getIn().setBody("<XOrderResponse/>");
                     } else {
                         assertEquals("<XOrder/>", input);
-                        LOG.info("Endpoint: XML -> XOrder");
+                        log.info("Endpoint: XML -> XOrder");
                         exchange.getIn().setBody(new XOrder());
                         
                     }
@@ -327,7 +327,7 @@ public class TransformerRouteTest extends ContextTestSupport {
         @Override
         public void transform(Message message, DataType from, DataType to) throws Exception {
             assertEquals("name=XOrder", message.getBody());
-            LOG.info("Bean: Other -> XOrder");
+            log.info("Bean: Other -> XOrder");
             message.setBody(new XOrder());
         }
     }
@@ -335,7 +335,7 @@ public class TransformerRouteTest extends ContextTestSupport {
     public static class XOrderResponseToOtherTransformer extends Transformer {
         @Override
         public void transform(Message message, DataType from, DataType to) throws Exception {
-            LOG.info("Bean: XOrderResponse -> Other");
+            log.info("Bean: XOrderResponse -> Other");
             message.setBody("name=XOrderResponse");
         }
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java b/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java
index 4531b27..c45b7e0 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java
@@ -161,7 +161,7 @@ public class ValidatorRouteTest extends ContextTestSupport {
         public void validate(Message message, DataType type) throws ValidationException {
             message.getExchange().setProperty(VALIDATOR_INVOKED, OtherXOrderValidator.class);
             assertEquals("name=XOrder", message.getBody());
-            LOG.info("Java validation: other XOrder");
+            log.info("Java validation: other XOrder");
         }
     }
     
@@ -170,7 +170,7 @@ public class ValidatorRouteTest extends ContextTestSupport {
         public void validate(Message message, DataType type) throws ValidationException {
             message.getExchange().setProperty(VALIDATOR_INVOKED, OtherXOrderResponseValidator.class);
             assertEquals("name=XOrderResponse", message.getBody());
-            LOG.info("Java validation: other XOrderResponse");
+            log.info("Java validation: other XOrderResponse");
         }
     }
     
diff --git a/camel-core/src/test/java/org/apache/camel/processor/LogEipPropagateExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/LogEipPropagateExceptionTest.java
index 2aa4e4b..67e2d46 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/LogEipPropagateExceptionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/LogEipPropagateExceptionTest.java
@@ -73,7 +73,7 @@ public class LogEipPropagateExceptionTest extends ContextTestSupport {
 
                 from("direct:handleFailure")
                     .errorHandler(noErrorHandler())
-                    .log("FAULTY LOG")
+                    .log("FAULTY log")
                     .to("mock:handleFailure");
 
                 from("direct:startSuccess")
diff --git a/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java b/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
index c34b6ae..f453e3d 100644
--- a/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
+++ b/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
@@ -41,7 +41,6 @@ import org.slf4j.LoggerFactory;
 @UriEndpoint(firstVersion = "2.14.0", scheme = "ahc-ws,ahc-wss", extendsScheme = "ahc,ahc", title = "AHC Websocket,AHC Secure Websocket",
         syntax = "ahc-ws:httpUri", consumerClass = WsConsumer.class, label = "websocket")
 public class WsEndpoint extends AhcEndpoint {
-    private static final transient Logger LOG = LoggerFactory.getLogger(WsEndpoint.class);
 
     private final Set<WsConsumer> consumers = new HashSet<>();
     private final WsListener listener = new WsListener();
@@ -120,7 +119,7 @@ public class WsEndpoint extends AhcEndpoint {
     public void connect() throws Exception {
         String uri = getHttpUri().toASCIIString();
 
-        LOG.debug("Connecting to {}", uri);
+        log.debug("Connecting to {}", uri);
         websocket = getClient().prepareGet(uri).execute(
             new WebSocketUpgradeHandler.Builder()
                 .addWebSocketListener(listener).build()).get();
@@ -129,8 +128,8 @@ public class WsEndpoint extends AhcEndpoint {
     @Override
     protected void doStop() throws Exception {
         if (websocket != null && websocket.isOpen()) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Disconnecting from {}", getHttpUri().toASCIIString());
+            if (log.isDebugEnabled()) {
+                log.debug("Disconnecting from {}", getHttpUri().toASCIIString());
             }
             websocket.removeWebSocketListener(listener);
             websocket.sendCloseFrame();
@@ -151,7 +150,7 @@ public class WsEndpoint extends AhcEndpoint {
     void reConnect() throws Exception {
         if (websocket == null || !websocket.isOpen()) {
             String uri = getHttpUri().toASCIIString();
-            LOG.info("Reconnecting websocket: {}", uri);
+            log.info("Reconnecting websocket: {}", uri);
             connect();
         }
     }
@@ -160,22 +159,22 @@ public class WsEndpoint extends AhcEndpoint {
 
         @Override
         public void onOpen(WebSocket websocket) {
-            LOG.debug("Websocket opened");
+            log.debug("Websocket opened");
         }
 
         @Override
         public void onClose(WebSocket websocket, int code, String reason) {
-            LOG.debug("websocket closed - reconnecting");
+            log.debug("websocket closed - reconnecting");
             try {
                 reConnect();
             } catch (Exception e) {
-                LOG.warn("Error re-connecting to websocket", e);
+                log.warn("Error re-connecting to websocket", e);
             }
         }
 
         @Override
         public void onError(Throwable t) {
-            LOG.debug("websocket on error", t);
+            log.debug("websocket on error", t);
             if (isSendMessageOnError()) {
                 for (WsConsumer consumer : consumers) {
                     consumer.sendMessage(t);
@@ -185,7 +184,7 @@ public class WsEndpoint extends AhcEndpoint {
 
         @Override
         public void onBinaryFrame(byte[] message, boolean finalFragment, int rsv) {
-            LOG.debug("Received message --> {}", message);
+            log.debug("Received message --> {}", message);
             for (WsConsumer consumer : consumers) {
                 consumer.sendMessage(message);
             }
@@ -193,7 +192,7 @@ public class WsEndpoint extends AhcEndpoint {
 
         @Override
         public void onTextFrame(String message, boolean finalFragment, int rsv) {
-            LOG.debug("Received message --> {}", message);
+            log.debug("Received message --> {}", message);
             for (WsConsumer consumer : consumers) {
                 consumer.sendMessage(message);
             }
diff --git a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java
index d229714..ca48903 100644
--- a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java
+++ b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java
@@ -42,8 +42,6 @@ import org.slf4j.LoggerFactory;
  */
 public class AhcComponent extends HeaderFilterStrategyComponent implements SSLContextParametersAware {
     
-    private static final Logger LOG = LoggerFactory.getLogger(AhcComponent.class);
-    
     private static final String CLIENT_CONFIG_PREFIX = "clientConfig.";
     private static final String CLIENT_REALM_CONFIG_PREFIX = "clientConfig.realm.";
 
@@ -88,12 +86,12 @@ public class AhcComponent extends HeaderFilterStrategyComponent implements SSLCo
                     ? new DefaultAsyncHttpClientConfig.Builder() : AhcComponent.cloneConfig(endpoint.getClientConfig());
             
             if (endpoint.getClient() != null) {
-                LOG.warn("The user explicitly set an AsyncHttpClient instance on the component or "
+                log.warn("The user explicitly set an AsyncHttpClient instance on the component or "
                          + "endpoint, but this endpoint URI contains client configuration parameters.  "
                          + "Are you sure that this is what was intended?  The AsyncHttpClient will be used"
                          + " and the URI parameters will be ignored.");
             } else if (endpoint.getClientConfig() != null) {
-                LOG.warn("The user explicitly set an AsyncHttpClientConfig instance on the component or "
+                log.warn("The user explicitly set an AsyncHttpClientConfig instance on the component or "
                          + "endpoint, but this endpoint URI contains client configuration parameters.  "
                          + "Are you sure that this is what was intended?  The URI parameters will be applied"
                          + " to a clone of the supplied AsyncHttpClientConfig in order to prevent unintended modification"
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
index 5444f61..c5d9619 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
@@ -32,8 +32,6 @@ import org.slf4j.LoggerFactory;
  */
 public class AS2Component extends AbstractApiComponent<AS2ApiName, AS2Configuration, AS2ApiCollection> {
     
-    private static final Logger LOG = LoggerFactory.getLogger(AS2Component.class);
-
     public AS2Component() {
         super(AS2Endpoint.class, AS2ApiName.class, AS2ApiCollection.getCollection());
     }
@@ -67,7 +65,7 @@ public class AS2Component extends AbstractApiComponent<AS2ApiName, AS2Configurat
     protected void doStart() throws Exception {
         super.doStart();
         if (Security.getProvider("BC") == null) {
-            LOG.debug("Adding BouncyCastleProvider as security provider");
+            log.debug("Adding BouncyCastleProvider as security provider");
             Security.addProvider(new BouncyCastleProvider());
         }
     }
diff --git a/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskProducer.java b/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskProducer.java
index eaff92e..04a32bc 100644
--- a/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskProducer.java
+++ b/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskProducer.java
@@ -25,14 +25,11 @@ import org.asteriskjava.manager.AuthenticationFailedException;
 import org.asteriskjava.manager.TimeoutException;
 import org.asteriskjava.manager.action.ManagerAction;
 import org.asteriskjava.manager.response.ManagerResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The Asterisk producer.
  */
 public class AsteriskProducer extends DefaultProducer {
-    private static final Logger LOG = LoggerFactory.getLogger(AsteriskProducer.class);
 
     private final AsteriskEndpoint endpoint;
     private final AsteriskConnection connection;
@@ -70,7 +67,7 @@ public class AsteriskProducer extends DefaultProducer {
         // Action must be set
         ObjectHelper.notNull(action, "action");
 
-        LOG.debug("Send action {}", action);
+        log.debug("Send action {}", action);
 
         ManagerAction managerAction = action.apply(exchange);
         ManagerResponse managerResponse = connection.sendAction(managerAction);
diff --git a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java
index c729284..df507ea 100644
--- a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java
+++ b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java
@@ -30,8 +30,6 @@ import org.apache.camel.component.atmos.util.AtmosOperation;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.atmos.util.AtmosConstants.POLL_CONSUMER_DELAY;
 
@@ -41,8 +39,6 @@ import static org.apache.camel.component.atmos.util.AtmosConstants.POLL_CONSUMER
 @UriEndpoint(firstVersion = "2.15.0", scheme = "atmos", title = "Atmos", syntax = "atmos:name/operation", consumerClass = AtmosScheduledPollConsumer.class, label = "file,cloud")
 public class AtmosEndpoint extends DefaultEndpoint {
 
-    private static final transient Logger LOG = LoggerFactory.getLogger(AtmosEndpoint.class);
-
     @UriParam
     private AtmosConfiguration configuration;
 
@@ -69,8 +65,8 @@ public class AtmosEndpoint extends DefaultEndpoint {
      * @throws Exception
      */
     public Producer createProducer() throws Exception {
-        LOG.debug("resolve producer atmos endpoint {{}}", configuration.getOperation());
-        LOG.debug("resolve producer atmos attached client: {}", configuration.getClient());
+        log.debug("resolve producer atmos endpoint {{}}", configuration.getOperation());
+        log.debug("resolve producer atmos attached client: {}", configuration.getClient());
         if (configuration.getOperation() == AtmosOperation.put) {
             return new AtmosPutProducer(this, configuration);
         } else if (this.configuration.getOperation() == AtmosOperation.del) {
@@ -92,8 +88,8 @@ public class AtmosEndpoint extends DefaultEndpoint {
      * @throws Exception
      */
     public Consumer createConsumer(Processor processor) throws Exception {
-        LOG.debug("resolve consumer atmos endpoint {{}}", configuration.getOperation());
-        LOG.debug("resolve consumer atmos attached client:{}", configuration.getClient());
+        log.debug("resolve consumer atmos endpoint {{}}", configuration.getOperation());
+        log.debug("resolve consumer atmos attached client:{}", configuration.getClient());
 
         AtmosScheduledPollConsumer consumer;
         if (this.configuration.getOperation() == AtmosOperation.get) {
diff --git a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/integration/consumer/AtmosScheduledPollConsumer.java b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/integration/consumer/AtmosScheduledPollConsumer.java
index 3a491ac..a58f99d 100644
--- a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/integration/consumer/AtmosScheduledPollConsumer.java
+++ b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/integration/consumer/AtmosScheduledPollConsumer.java
@@ -25,7 +25,7 @@ import org.slf4j.LoggerFactory;
 
 
 public abstract class AtmosScheduledPollConsumer extends ScheduledPollConsumer {
-    protected static final transient Logger LOG = LoggerFactory.getLogger(AtmosScheduledPollConsumer.class);
+
     protected AtmosEndpoint endpoint;
     protected AtmosConfiguration configuration;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientProducer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientProducer.java
index 21e785f..3a6d24a 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientProducer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientProducer.java
@@ -40,7 +40,7 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.RES
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_NAME;
 
 public abstract class AbstractAtomixClientProducer<E extends AbstractAtomixClientEndpoint, R extends Resource> extends DefaultProducer implements AsyncProcessor {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAtomixClientProducer.class);
+
     private final Map<String, AtomixAsyncMessageProcessor> processors;
     private ConcurrentMap<String, R> resources;
 
@@ -142,7 +142,7 @@ public abstract class AbstractAtomixClientProducer<E extends AbstractAtomixClien
                 throw new IllegalArgumentException("Second argument should be of type AsyncCallback");
             }
 
-            LOGGER.debug("bind key={}, class={}, method={}",
+            log.debug("bind key={}, class={}, method={}",
                 annotation.value(), this.getClass(), method.getName());
 
             this.processors.put(annotation.value(), (m, c) -> (boolean)method.invoke(this, m, c));
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java
index 73269ee..bf4e41c 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java
@@ -29,7 +29,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 final class AtomixMapConsumer extends AbstractAtomixClientConsumer<AtomixMapEndpoint> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AtomixMapConsumer.class);
 
     private final List<Listener<DistributedMap.EntryEvent<Object, Object>>> listeners;
     private final String resourceName;
@@ -58,12 +57,12 @@ final class AtomixMapConsumer extends AbstractAtomixClientConsumer<AtomixMapEndp
 
         Object key = getAtomixEndpoint().getConfiguration().getKey();
         if (key == null) {
-            LOGGER.debug("Subscribe to events for map: {}", resourceName);
+            log.debug("Subscribe to events for map: {}", resourceName);
             this.listeners.add(this.map.onAdd(this::onEvent).join());
             this.listeners.add(this.map.onRemove(this::onEvent).join());
             this.listeners.add(this.map.onUpdate(this::onEvent).join());
         } else {
-            LOGGER.debug("Subscribe to events for map: {}, key: {}", resourceName, key);
+            log.debug("Subscribe to events for map: {}, key: {}", resourceName, key);
             this.listeners.add(this.map.onAdd(key, this::onEvent).join());
             this.listeners.add(this.map.onRemove(key, this::onEvent).join());
             this.listeners.add(this.map.onUpdate(key, this::onEvent).join());
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java
index 547a66c..b738353 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java
@@ -37,7 +37,6 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.MEM
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_NAME;
 
 final class AtomixMessagingConsumer extends AbstractAtomixClientConsumer<AtomixMessagingEndpoint> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AtomixMessagingConsumer.class);
 
     private final List<Listener<Message<Object>>> listeners;
     private final String resultHeader;
@@ -74,7 +73,7 @@ final class AtomixMessagingConsumer extends AbstractAtomixClientConsumer<AtomixM
         this.localMember = group.join(memberName).join();
         this.consumer = localMember.messaging().consumer(channelName);
 
-        LOGGER.debug("Subscribe to group: {}, member: {}, channel: {}", groupName, memberName, channelName);
+        log.debug("Subscribe to group: {}, member: {}, channel: {}", groupName, memberName, channelName);
         this.listeners.add(consumer.onMessage(this::onMessage));
     }
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java
index eef6eec..4a9486d 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java
@@ -29,7 +29,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 final class AtomixQueueConsumer extends AbstractAtomixClientConsumer<AtomixQueueEndpoint> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AtomixQueueConsumer.class);
 
     private final List<Listener<DistributedQueue.ValueEvent<Object>>> listeners;
     private final String resourceName;
@@ -56,7 +55,7 @@ final class AtomixQueueConsumer extends AbstractAtomixClientConsumer<AtomixQueue
             .join();
 
 
-        LOGGER.debug("Subscribe to events for queue: {}", resourceName);
+        log.debug("Subscribe to events for queue: {}", resourceName);
         this.listeners.add(this.queue.onAdd(this::onEvent).join());
         this.listeners.add(this.queue.onRemove(this::onEvent).join());
     }
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java
index e20a719..7b85e2a 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java
@@ -29,7 +29,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 final class AtomixSetConsumer extends AbstractAtomixClientConsumer<AtomixSetEndpoint> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AtomixSetConsumer.class);
 
     private final List<Listener<DistributedSet.ValueEvent<Object>>> listeners;
     private final String resourceName;
@@ -56,7 +55,7 @@ final class AtomixSetConsumer extends AbstractAtomixClientConsumer<AtomixSetEndp
             .join();
 
 
-        LOGGER.debug("Subscribe to events for set: {}", resourceName);
+        log.debug("Subscribe to events for set: {}", resourceName);
         this.listeners.add(this.set.onAdd(this::onEvent).join());
         this.listeners.add(this.set.onRemove(this::onEvent).join());
     }
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java
index 5c067bf..2192ab1 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java
@@ -29,7 +29,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 final class AtomixValueConsumer extends AbstractAtomixClientConsumer<AtomixValueEndpoint> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AtomixValueConsumer.class);
 
     private final List<Listener<DistributedValue.ChangeEvent<Object>>> listeners;
     private final String resourceName;
@@ -56,7 +55,7 @@ final class AtomixValueConsumer extends AbstractAtomixClientConsumer<AtomixValue
             .join();
 
 
-        LOGGER.debug("Subscribe to events for value: {}", resourceName);
+        log.debug("Subscribe to events for value: {}", resourceName);
         this.listeners.add(this.value.onChange(this::onEvent).join());
     }
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java
index 3f14f9c..1ef2d04 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java
@@ -29,7 +29,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public final class AtomixClusterService extends AbstractCamelClusterService<AtomixClusterView> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AtomixClusterService.class);
 
     private Address address;
     private AtomixClusterConfiguration configuration;
@@ -144,7 +143,7 @@ public final class AtomixClusterService extends AbstractCamelClusterService<Atom
         super.doStop();
 
         if (atomix != null) {
-            LOGGER.debug("Leaving atomix cluster replica {}", atomix);
+            log.debug("Leaving atomix cluster replica {}", atomix);
             atomix.leave().join();
         }
     }
@@ -164,13 +163,13 @@ public final class AtomixClusterService extends AbstractCamelClusterService<Atom
             atomix = AtomixClusterHelper.createReplica(getCamelContext(), address, configuration);
 
             if (ObjectHelper.isNotEmpty(configuration.getNodes())) {
-                LOGGER.debug("Bootstrap cluster on address {} for nodes: {}", address, configuration.getNodes());
+                log.debug("Bootstrap cluster on address {} for nodes: {}", address, configuration.getNodes());
                 this.atomix.bootstrap(configuration.getNodes()).join();
-                LOGGER.debug("Bootstrap cluster done");
+                log.debug("Bootstrap cluster done");
             } else {
-                LOGGER.debug("Bootstrap cluster on address {}", address, configuration.getNodes());
+                log.debug("Bootstrap cluster on address {}", address, configuration.getNodes());
                 this.atomix.bootstrap().join();
-                LOGGER.debug("Bootstrap cluster done");
+                log.debug("Bootstrap cluster done");
             }
         }
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java
index 6305944..64852ba 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java
@@ -31,11 +31,8 @@ import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.component.atomix.AtomixConfiguration;
 import org.apache.camel.impl.cluster.AbstractCamelClusterView;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 final class AtomixClusterView extends AbstractCamelClusterView {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AtomixClusterView.class);
 
     private final Atomix atomix;
     private final AtomixLocalMember localMember;
@@ -84,7 +81,7 @@ final class AtomixClusterView extends AbstractCamelClusterView {
     @Override
     protected void doStart() throws Exception {
         if (!localMember.hasJoined()) {
-            LOGGER.debug("Get group {}", getNamespace());
+            log.debug("Get group {}", getNamespace());
 
             group = this.atomix.getGroup(
                 getNamespace(),
@@ -92,28 +89,28 @@ final class AtomixClusterView extends AbstractCamelClusterView {
                 new DistributedGroup.Options(configuration.getResourceOptions(getNamespace()))
             ).get();
 
-            LOGGER.debug("Listen election events");
+            log.debug("Listen election events");
             group.election().onElection(term -> {
                 if (isRunAllowed()) {
                     fireLeadershipChangedEvent(Optional.of(toClusterMember(term.leader())));
                 }
             });
 
-            LOGGER.debug("Listen join events");
+            log.debug("Listen join events");
             group.onJoin(member -> {
                 if (isRunAllowed()) {
                     fireMemberAddedEvent(toClusterMember(member));
                 }
             });
 
-            LOGGER.debug("Listen leave events");
+            log.debug("Listen leave events");
             group.onLeave(member -> {
                 if (isRunAllowed()) {
                     fireMemberRemovedEvent(toClusterMember(member));
                 }
             });
 
-            LOGGER.debug("Join group {}", getNamespace());
+            log.debug("Join group {}", getNamespace());
             localMember.join();
         }
     }
@@ -178,11 +175,11 @@ final class AtomixClusterView extends AbstractCamelClusterView {
             if (member == null && group != null) {
                 String id = getClusterService().getId();
                 if (ObjectHelper.isEmpty(id) || configuration.isEphemeral()) {
-                    LOGGER.debug("Joining group: {}", group);
+                    log.debug("Joining group: {}", group);
                     member = group.join().join();
-                    LOGGER.debug("Group {} joined with id {}", group, member.id());
+                    log.debug("Group {} joined with id {}", group, member.id());
                 } else {
-                    LOGGER.debug("Joining group: {}, with id: {}", group, id);
+                    log.debug("Joining group: {}, with id: {}", group, id);
                     member = group.join(id).join();
                 }
             }
@@ -194,7 +191,7 @@ final class AtomixClusterView extends AbstractCamelClusterView {
             if (member != null) {
                 String id = member.id();
 
-                LOGGER.debug("Member {} : leave group {}", id, group);
+                log.debug("Member {} : leave group {}", id, group);
 
                 member.leave().join();
                 group.remove(id).join();
diff --git a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
index 1f3d3a2..1f20958 100644
--- a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
+++ b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
@@ -258,14 +258,14 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
 
             if (event instanceof ExchangeSendingEvent) {
                 ExchangeSendingEvent ese = (ExchangeSendingEvent) event;
-                LOG.trace("-> {} - target: {} (routeId: {})",
+                log.trace("-> {} - target: {} (routeId: {})",
                         event.getClass().getSimpleName(), ese.getEndpoint(),
                         ese.getExchange().getFromRouteId());
 
                 if (Thread.currentThread().getName().contains("Multicast")) {
                     // copy the segment from the exchange to the thread (local) context
                     Segment segment = (Segment) ese.getExchange().getProperty(CURRENT_SEGMENT);
-                    LOG.trace("Copying over segment {}/{} from exchange received from {} to exchange processing {}",
+                    log.trace("Copying over segment {}/{} from exchange received from {} to exchange processing {}",
                             segment.getId(), segment.getName(), ese.getExchange().getFromEndpoint(),
                             ese.getEndpoint());
                     AWSXRay.setTraceEntity(segment);
@@ -286,19 +286,19 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
                     try {
                         Subsegment subsegment = AWSXRay.beginSubsegment(sanitizeName(name));
                         sd.pre(subsegment, ese.getExchange(), ese.getEndpoint());
-                        LOG.trace("Creating new subsegment with ID {} and name {}",
+                        log.trace("Creating new subsegment with ID {} and name {}",
                                 subsegment.getId(), subsegment.getName());
                     } catch (AlreadyEmittedException aeEx) {
-                        LOG.warn("Ignoring starting of subsegment " + name + " as its parent segment"
+                        log.warn("Ignoring starting of subsegment " + name + " as its parent segment"
                                 + " was already emitted to AWS.");
                     }
                 } else {
-                    LOG.trace("Ignoring creation of XRay subsegment as no segment exists in the current thread");
+                    log.trace("Ignoring creation of XRay subsegment as no segment exists in the current thread");
                 }
 
             } else if (event instanceof ExchangeSentEvent) {
                 ExchangeSentEvent ese = (ExchangeSentEvent) event;
-                LOG.trace("-> {} - target: {} (routeId: {})",
+                log.trace("-> {} - target: {} (routeId: {})",
                         event.getClass().getSimpleName(), ese.getEndpoint(), ese.getExchange().getFromRouteId());
 
                 SegmentDecorator sd = getSegmentDecorator(ese.getEndpoint());
@@ -309,15 +309,15 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
                         Subsegment subsegment = AWSXRay.getCurrentSubsegment();
                         sd.post(subsegment, ese.getExchange(), ese.getEndpoint());
                         subsegment.close();
-                        LOG.trace("Closing down subsegment with ID {} and name {}",
+                        log.trace("Closing down subsegment with ID {} and name {}",
                                 subsegment.getId(), subsegment.getName());
                     } catch (AlreadyEmittedException aeEx) {
-                        LOG.warn("Ignoring close of subsegment " + name
+                        log.warn("Ignoring close of subsegment " + name
                                 + " as its parent segment was already emitted to AWS");
                     }
                 }
             } else {
-                LOG.trace("Received event {} from source {}", event, event.getSource());
+                log.trace("Received event {} from source {}", event, event.getSource());
             }
         }
 
@@ -364,7 +364,7 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
                 return;
             }
 
-            LOG.trace("=> RoutePolicy-Begin: Route: {} - RouteId: {}", routeId, route.getId());
+            log.trace("=> RoutePolicy-Begin: Route: {} - RouteId: {}", routeId, route.getId());
 
             TraceID traceID;
             if (exchange.getIn().getHeaders().containsKey(XRAY_TRACE_ID)) {
@@ -399,7 +399,7 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
                 Segment segment = AWSXRay.beginSegment(sanitizeName(route.getId()));
                 segment.setTraceId(traceID);
                 sd.pre(segment, exchange, route.getEndpoint());
-                LOG.trace("Created new XRay segment {} with name {}",
+                log.trace("Created new XRay segment {} with name {}",
                         segment.getId(), segment.getName());
                 exchange.setProperty(CURRENT_SEGMENT, segment);
             } else {
@@ -407,10 +407,10 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
                 try {
                     Subsegment subsegment = AWSXRay.beginSubsegment(route.getId());
                     sd.pre(subsegment, exchange, route.getEndpoint());
-                    LOG.trace("Created new XRay subsegment {} with name {}",
+                    log.trace("Created new XRay subsegment {} with name {}",
                             subsegment.getId(), subsegment.getName());
                 } catch (AlreadyEmittedException aeEx) {
-                    LOG.warn("Ignoring opening of subsegment " + route.getId() + " as its parent segment "
+                    log.warn("Ignoring opening of subsegment " + route.getId() + " as its parent segment "
                             + segmentName + " was already emitted before.");
                 }
             }
@@ -423,7 +423,7 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
                 return;
             }
 
-            LOG.trace("=> RoutePolicy-Done: Route: {} - RouteId: {}", routeId, route.getId());
+            log.trace("=> RoutePolicy-Done: Route: {} - RouteId: {}", routeId, route.getId());
 
             try {
                 SegmentDecorator sd = getSegmentDecorator(route.getEndpoint());
@@ -433,17 +433,17 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
                     Subsegment subsegment = curSubSegment.get();
                     sd.post(subsegment, exchange, route.getEndpoint());
                     subsegment.close();
-                    LOG.trace("Closing down Subsegment {} with name {}",
+                    log.trace("Closing down Subsegment {} with name {}",
                             subsegment.getId(), subsegment.getName());
                 } else if (curSegment.isPresent()) {
                     Segment segment = curSegment.get();
                     sd.post(segment, exchange, route.getEndpoint());
                     segment.close();
-                    LOG.trace("Closing down Segment {} with name {}",
+                    log.trace("Closing down Segment {} with name {}",
                             segment.getId(), segment.getName());
                 }
             } catch (AlreadyEmittedException aeEx) {
-                LOG.warn("Ignoring closing of (sub)segment {} as the segment was already emitted.", route.getId());
+                log.warn("Ignoring closing of (sub)segment {} as the segment was already emitted.", route.getId());
             }
         }
 
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbEndpoint.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbEndpoint.java
index 7766851..a86fb42 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbEndpoint.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbEndpoint.java
@@ -41,8 +41,6 @@ import org.apache.camel.impl.ScheduledPollEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The aws-ddb component is used for storing and retrieving data from Amazon's DynamoDB service.
@@ -50,8 +48,6 @@ import org.slf4j.LoggerFactory;
 @UriEndpoint(firstVersion = "2.10.0", scheme = "aws-ddb", title = "AWS DynamoDB", syntax = "aws-ddb:tableName", producerOnly = true, label = "cloud,database,nosql")
 public class DdbEndpoint extends ScheduledPollEndpoint {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DdbEndpoint.class);
-
     @UriParam
     private DdbConfiguration configuration;
 
@@ -82,7 +78,7 @@ public class DdbEndpoint extends ScheduledPollEndpoint {
             : createDdbClient();
         
         String tableName = getConfiguration().getTableName();
-        LOG.trace("Querying whether table [{}] already exists...", tableName);
+        log.trace("Querying whether table [{}] already exists...", tableName);
 
         try {
             DescribeTableRequest request = new DescribeTableRequest().withTableName(tableName);
@@ -91,17 +87,17 @@ public class DdbEndpoint extends ScheduledPollEndpoint {
                 waitForTableToBecomeAvailable(tableName);
             }
 
-            LOG.trace("Table [{}] already exists", tableName);
+            log.trace("Table [{}] already exists", tableName);
             return;
         } catch (ResourceNotFoundException e) {
-            LOG.trace("Table [{}] doesn't exist yet", tableName);
-            LOG.trace("Creating table [{}]...", tableName);
+            log.trace("Table [{}] doesn't exist yet", tableName);
+            log.trace("Creating table [{}]...", tableName);
             TableDescription tableDescription = createTable(tableName);
             if (!isTableActive(tableDescription)) {
                 waitForTableToBecomeAvailable(tableName);
             }
 
-            LOG.trace("Table [{}] created", tableName);
+            log.trace("Table [{}] created", tableName);
         }
     }
     
@@ -169,7 +165,7 @@ public class DdbEndpoint extends ScheduledPollEndpoint {
     }
 
     private void waitForTableToBecomeAvailable(String tableName) {
-        LOG.trace("Waiting for [{}] to become ACTIVE...", tableName);
+        log.trace("Waiting for [{}] to become ACTIVE...", tableName);
 
         long waitTime = 5 * 60 * 1000;
         while (waitTime > 0) {
@@ -182,10 +178,10 @@ public class DdbEndpoint extends ScheduledPollEndpoint {
                 DescribeTableRequest request = new DescribeTableRequest().withTableName(tableName);
                 TableDescription tableDescription = getDdbClient().describeTable(request).getTable();
                 if (isTableActive(tableDescription)) {
-                    LOG.trace("Table [{}] became active", tableName);
+                    log.trace("Table [{}] became active", tableName);
                     return;
                 }
-                LOG.trace("Table [{}] not active yet", tableName);
+                log.trace("Table [{}] not active yet", tableName);
             } catch (AmazonServiceException ase) {
                 if (!ase.getErrorCode().equalsIgnoreCase("ResourceNotFoundException")) {
                     throw ase;
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java
index df7faad..7b91318 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamConsumer.java
@@ -32,11 +32,8 @@ import org.apache.camel.Processor;
 import org.apache.camel.impl.ScheduledBatchPollingConsumer;
 import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class DdbStreamConsumer extends ScheduledBatchPollingConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(DdbStreamConsumer.class);
 
     private final ShardIteratorHandler shardIteratorHandler;
     private String lastSeenSequenceNumber;
@@ -59,7 +56,7 @@ public class DdbStreamConsumer extends ScheduledBatchPollingConsumer {
                         .withLimit(getEndpoint().getConfiguration().getMaxResultsPerRequest());
             result = getClient().getRecords(req);
         } catch (ExpiredIteratorException e) {
-            LOG.warn("Expired Shard Iterator, attempting to resume from {}", lastSeenSequenceNumber, e);
+            log.warn("Expired Shard Iterator, attempting to resume from {}", lastSeenSequenceNumber, e);
             GetRecordsRequest req = new GetRecordsRequest()
                         .withShardIterator(shardIteratorHandler.getShardIterator(lastSeenSequenceNumber))
                         .withLimit(getEndpoint().getConfiguration().getMaxResultsPerRequest());
@@ -84,11 +81,11 @@ public class DdbStreamConsumer extends ScheduledBatchPollingConsumer {
         while (!exchanges.isEmpty()) {
             final Exchange exchange = ObjectHelper.cast(Exchange.class, exchanges.poll());
 
-            LOG.trace("Processing exchange [{}] started.", exchange);
+            log.trace("Processing exchange [{}] started.", exchange);
             getAsyncProcessor().process(exchange, new AsyncCallback() {
                 @Override
                 public void done(boolean doneSync) {
-                    LOG.trace("Processing exchange [{}] done.", exchange);
+                    log.trace("Processing exchange [{}] done.", exchange);
                 }
             });
             processedExchanges++;
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java
index 505c689..86affab 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java
@@ -51,8 +51,6 @@ import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageForResponse;
 
@@ -62,8 +60,6 @@ import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageFo
  */
 public class EC2Producer extends DefaultProducer {
     
-    private static final Logger LOG = LoggerFactory.getLogger(EC2Producer.class);
-    
     private transient String ec2ProducerToString;
 
     public EC2Producer(Endpoint endpoint) {
@@ -199,10 +195,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.runInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Run Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Run Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Creating and running instances with ami [{}] and instance type {}", ami, instanceType);
+        log.trace("Creating and running instances with ami [{}] and instance type {}", ami, instanceType);
         Message message = getMessageForResponse(exchange);
         message.setBody(result);
     }
@@ -220,10 +216,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.startInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Start Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Start Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Starting instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
+        log.trace("Starting instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
         Message message = getMessageForResponse(exchange);
         message.setBody(result);        
     }
@@ -241,10 +237,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.stopInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Stop Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Stop Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Stopping instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
+        log.trace("Stopping instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
         Message message = getMessageForResponse(exchange);
         message.setBody(result);        
     }
@@ -262,10 +258,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.terminateInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Terminate Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Terminate Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Terminating instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
+        log.trace("Terminating instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
         Message message = getMessageForResponse(exchange);
         message.setBody(result);        
     }
@@ -281,7 +277,7 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.describeInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Describe Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Describe Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -299,7 +295,7 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.describeInstanceStatus(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Describe Instances Status command returned the error code {}", ase.getErrorCode());
+            log.trace("Describe Instances Status command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -316,10 +312,10 @@ public class EC2Producer extends DefaultProducer {
             throw new IllegalArgumentException("Instances Ids must be specified");
         }
         try {
-            LOG.trace("Rebooting instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
+            log.trace("Rebooting instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
             ec2Client.rebootInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Reboot Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Reboot Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
     }
@@ -337,10 +333,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.monitorInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Monitor Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Monitor Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Start Monitoring instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
+        log.trace("Start Monitoring instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
         Message message = getMessageForResponse(exchange);
         message.setBody(result); 
     }
@@ -358,10 +354,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.unmonitorInstances(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Unmonitor Instances command returned the error code {}", ase.getErrorCode());
+            log.trace("Unmonitor Instances command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Stop Monitoring instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
+        log.trace("Stop Monitoring instances with Ids [{}] ", Arrays.toString(instanceIds.toArray()));
         Message message = getMessageForResponse(exchange);
         message.setBody(result); 
     }
@@ -386,10 +382,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.createTags(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Create tags command returned the error code {}", ase.getErrorCode());
+            log.trace("Create tags command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Created tags [{}] on resources with Ids [{}] ", Arrays.toString(tags.toArray()), Arrays.toString(instanceIds.toArray()));
+        log.trace("Created tags [{}] on resources with Ids [{}] ", Arrays.toString(tags.toArray()), Arrays.toString(instanceIds.toArray()));
         Message message = getMessageForResponse(exchange);
         message.setBody(result); 
     }
@@ -414,10 +410,10 @@ public class EC2Producer extends DefaultProducer {
         try {
             result = ec2Client.deleteTags(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Delete tags command returned the error code {}", ase.getErrorCode());
+            log.trace("Delete tags command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
-        LOG.trace("Delete tags [{}] on resources with Ids [{}] ", Arrays.toString(tags.toArray()), Arrays.toString(instanceIds.toArray()));
+        log.trace("Delete tags [{}] on resources with Ids [{}] ", Arrays.toString(tags.toArray()), Arrays.toString(instanceIds.toArray()));
         Message message = getMessageForResponse(exchange);
         message.setBody(result); 
     }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java
index ffe9b61..d31cdc7 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java
@@ -40,8 +40,6 @@ import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageForResponse;
 
@@ -51,8 +49,6 @@ import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageFo
  */
 public class IAMProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(IAMProducer.class);
-
     private transient String iamProducerToString;
 
     public IAMProducer(Endpoint endpoint) {
@@ -120,7 +116,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.listAccessKeys();
         } catch (AmazonServiceException ase) {
-            LOG.trace("List Access Keys command returned the error code {}", ase.getErrorCode());
+            log.trace("List Access Keys command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -137,7 +133,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.createUser(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Create user command returned the error code {}", ase.getErrorCode());
+            log.trace("Create user command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -154,7 +150,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.deleteUser(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Delete user command returned the error code {}", ase.getErrorCode());
+            log.trace("Delete user command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -171,7 +167,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.getUser(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("get user command returned the error code {}", ase.getErrorCode());
+            log.trace("get user command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -183,7 +179,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.listUsers();
         } catch (AmazonServiceException ase) {
-            LOG.trace("List users command returned the error code {}", ase.getErrorCode());
+            log.trace("List users command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -200,7 +196,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.createAccessKey(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Create Access Key command returned the error code {}", ase.getErrorCode());
+            log.trace("Create Access Key command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -223,7 +219,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.deleteAccessKey(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Delete Access Key command returned the error code {}", ase.getErrorCode());
+            log.trace("Delete Access Key command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -252,7 +248,7 @@ public class IAMProducer extends DefaultProducer {
         try {
             result = iamClient.updateAccessKey(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Update Access Key command returned the error code {}", ase.getErrorCode());
+            log.trace("Update Access Key command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisConsumer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisConsumer.java
index 52bd17a..0ce61ef 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisConsumer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisConsumer.java
@@ -38,11 +38,8 @@ import org.apache.camel.Processor;
 import org.apache.camel.impl.ScheduledBatchPollingConsumer;
 import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class KinesisConsumer extends ScheduledBatchPollingConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(KinesisConsumer.class);
 
     private String currentShardIterator;
     private boolean isShardClosed;
@@ -68,12 +65,12 @@ public class KinesisConsumer extends ScheduledBatchPollingConsumer {
         if (isShardClosed) {
             switch (getEndpoint().getConfiguration().getShardClosed()) {
             case ignore:
-                LOG.warn("The shard {} is in closed state");
+                log.warn("The shard {} is in closed state");
                 break;
             case silent:
                 break;
             case fail:
-                LOG.info("Shard Iterator reaches CLOSE status:", getEndpoint().getConfiguration().getStreamName(), getEndpoint().getConfiguration().getShardId());
+                log.info("Shard Iterator reaches CLOSE status:", getEndpoint().getConfiguration().getStreamName(), getEndpoint().getConfiguration().getShardId());
                 throw new ReachedClosedStatusException(getEndpoint().getConfiguration().getStreamName(), getEndpoint().getConfiguration().getShardId());
             default:
                 throw new IllegalArgumentException("Unsupported shard closed strategy");
@@ -89,11 +86,11 @@ public class KinesisConsumer extends ScheduledBatchPollingConsumer {
         while (!exchanges.isEmpty()) {
             final Exchange exchange = ObjectHelper.cast(Exchange.class, exchanges.poll());
 
-            LOG.trace("Processing exchange [{}] started.", exchange);
+            log.trace("Processing exchange [{}] started.", exchange);
             getAsyncProcessor().process(exchange, new AsyncCallback() {
                 @Override
                 public void done(boolean doneSync) {
-                    LOG.trace("Processing exchange [{}] done.", exchange);
+                    log.trace("Processing exchange [{}] done.", exchange);
                 }
             });
             processedExchanges++;
@@ -143,7 +140,7 @@ public class KinesisConsumer extends ScheduledBatchPollingConsumer {
                     isShardClosed = true;
                 }
             }
-            LOG.debug("ShardId is: {}", shardId);
+            log.debug("ShardId is: {}", shardId);
 
             GetShardIteratorRequest req = new GetShardIteratorRequest().withStreamName(getEndpoint().getConfiguration().getStreamName()).withShardId(shardId)
                 .withShardIteratorType(getEndpoint().getConfiguration().getIteratorType());
@@ -155,7 +152,7 @@ public class KinesisConsumer extends ScheduledBatchPollingConsumer {
             GetShardIteratorResult result = getClient().getShardIterator(req);
             currentShardIterator = result.getShardIterator();
         }
-        LOG.debug("Shard Iterator is: {}", currentShardIterator);
+        log.debug("Shard Iterator is: {}", currentShardIterator);
         return currentShardIterator;
     }
 
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java
index 90e014c..94a359f 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java
@@ -37,8 +37,6 @@ import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageForResponse;
 
@@ -48,8 +46,6 @@ import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageFo
  */
 public class KMSProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(KMSProducer.class);
-
     private transient String kmsProducerToString;
 
     public KMSProducer(Endpoint endpoint) {
@@ -116,7 +112,7 @@ public class KMSProducer extends DefaultProducer {
         try {
             result = kmsClient.listKeys(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("List Keys command returned the error code {}", ase.getErrorCode());
+            log.trace("List Keys command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -133,7 +129,7 @@ public class KMSProducer extends DefaultProducer {
         try {
             result = kmsClient.createKey(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Create Key command returned the error code {}", ase.getErrorCode());
+            log.trace("Create Key command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -152,7 +148,7 @@ public class KMSProducer extends DefaultProducer {
         try {
             result = kmsClient.disableKey(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Disable Key command returned the error code {}", ase.getErrorCode());
+            log.trace("Disable Key command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -175,7 +171,7 @@ public class KMSProducer extends DefaultProducer {
         try {
             result = kmsClient.scheduleKeyDeletion(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Schedule Key Deletion command returned the error code {}", ase.getErrorCode());
+            log.trace("Schedule Key Deletion command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -194,7 +190,7 @@ public class KMSProducer extends DefaultProducer {
         try {
             result = kmsClient.describeKey(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Describe Key command returned the error code {}", ase.getErrorCode());
+            log.trace("Describe Key command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -213,7 +209,7 @@ public class KMSProducer extends DefaultProducer {
         try {
             result = kmsClient.enableKey(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Enable Key command returned the error code {}", ase.getErrorCode());
+            log.trace("Enable Key command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java
index 2fcb27c..551dd18 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java
@@ -48,8 +48,6 @@ import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageForResponse;
 
@@ -59,8 +57,6 @@ import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageFo
  */
 public class LambdaProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(LambdaProducer.class);
-
     public LambdaProducer(final Endpoint endpoint) {
         super(endpoint);
     }
@@ -96,7 +92,7 @@ public class LambdaProducer extends DefaultProducer {
         try {
             result = lambdaClient.getFunction(new GetFunctionRequest().withFunctionName(getConfiguration().getFunction()));
         } catch (AmazonServiceException ase) {
-            LOG.trace("getFunction command returned the error code {}", ase.getErrorCode());
+            log.trace("getFunction command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -108,7 +104,7 @@ public class LambdaProducer extends DefaultProducer {
         try {
             result = lambdaClient.deleteFunction(new DeleteFunctionRequest().withFunctionName(getConfiguration().getFunction()));
         } catch (AmazonServiceException ase) {
-            LOG.trace("deleteFunction command returned the error code {}", ase.getErrorCode());
+            log.trace("deleteFunction command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -120,7 +116,7 @@ public class LambdaProducer extends DefaultProducer {
         try {
             result = lambdaClient.listFunctions();
         } catch (AmazonServiceException ase) {
-            LOG.trace("listFunctions command returned the error code {}", ase.getErrorCode());
+            log.trace("listFunctions command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -135,7 +131,7 @@ public class LambdaProducer extends DefaultProducer {
                 .withPayload(exchange.getIn().getBody(String.class));
             result = lambdaClient.invoke(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("invokeFunction command returned the error code {}", ase.getErrorCode());
+            log.trace("invokeFunction command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -269,7 +265,7 @@ public class LambdaProducer extends DefaultProducer {
             result = lambdaClient.createFunction(request);
 
         } catch (AmazonServiceException ase) {
-            LOG.trace("createFunction command returned the error code {}", ase.getErrorCode());
+            log.trace("createFunction command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
 
@@ -333,7 +329,7 @@ public class LambdaProducer extends DefaultProducer {
             result = lambdaClient.updateFunctionCode(request);
 
         } catch (AmazonServiceException ase) {
-            LOG.trace("updateFunction command returned the error code {}", ase.getErrorCode());
+            log.trace("updateFunction command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
 
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQProducer.java
index 6e697e9..bb12d17 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQProducer.java
@@ -39,8 +39,6 @@ import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageForResponse;
 
@@ -50,8 +48,6 @@ import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageFo
  */
 public class MQProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(MQProducer.class);
-
     private transient String mqProducerToString;
 
     public MQProducer(Endpoint endpoint) {
@@ -118,7 +114,7 @@ public class MQProducer extends DefaultProducer {
         try {
             result = mqClient.listBrokers(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("List Brokers command returned the error code {}", ase.getErrorCode());
+            log.trace("List Brokers command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -145,7 +141,7 @@ public class MQProducer extends DefaultProducer {
         try {
             result = mqClient.createBroker(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Create Broker command returned the error code {}", ase.getErrorCode());
+            log.trace("Create Broker command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -165,7 +161,7 @@ public class MQProducer extends DefaultProducer {
         try {
             result = mqClient.deleteBroker(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Delete Broker command returned the error code {}", ase.getErrorCode());
+            log.trace("Delete Broker command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -185,7 +181,7 @@ public class MQProducer extends DefaultProducer {
         try {
             result = mqClient.rebootBroker(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Reboot Broker command returned the error code {}", ase.getErrorCode());
+            log.trace("Reboot Broker command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -212,7 +208,7 @@ public class MQProducer extends DefaultProducer {
         try {
             result = mqClient.updateBroker(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Update Broker command returned the error code {}", ase.getErrorCode());
+            log.trace("Update Broker command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
@@ -232,7 +228,7 @@ public class MQProducer extends DefaultProducer {
         try {
             result = mqClient.describeBroker(request);
         } catch (AmazonServiceException ase) {
-            LOG.trace("Reboot Broker command returned the error code {}", ase.getErrorCode());
+            log.trace("Reboot Broker command returned the error code {}", ase.getErrorCode());
             throw ase;
         }
         Message message = getMessageForResponse(exchange);
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
index 5f1c00d..268bf62 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
@@ -40,8 +40,6 @@ import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Consumer of messages from the Amazon Web Service Simple Storage Service
@@ -49,7 +47,6 @@ import org.slf4j.LoggerFactory;
  */
 public class S3Consumer extends ScheduledBatchPollingConsumer {
     
-    private static final Logger LOG = LoggerFactory.getLogger(S3Consumer.class);
     private String marker;
     private transient String s3ConsumerToString;
 
@@ -68,12 +65,12 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
         Queue<Exchange> exchanges;
         
         if (fileName != null) {
-            LOG.trace("Getting object in bucket [{}] with file name [{}]...", bucketName, fileName);
+            log.trace("Getting object in bucket [{}] with file name [{}]...", bucketName, fileName);
 
             S3Object s3Object = getAmazonS3Client().getObject(new GetObjectRequest(bucketName, fileName));
             exchanges = createExchanges(s3Object);
         } else {
-            LOG.trace("Queueing objects in bucket [{}]...", bucketName);
+            log.trace("Queueing objects in bucket [{}]...", bucketName);
 
             ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
             listObjectsRequest.setBucketName(bucketName);
@@ -83,20 +80,20 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
             }
             // if there was a marker from previous poll then use that to continue from where we left last time
             if (marker != null) {
-                LOG.trace("Resuming from marker: {}", marker);
+                log.trace("Resuming from marker: {}", marker);
                 listObjectsRequest.setMarker(marker);
             }
 
             ObjectListing listObjects = getAmazonS3Client().listObjects(listObjectsRequest);
             if (listObjects.isTruncated()) {
                 marker = listObjects.getNextMarker();
-                LOG.trace("Returned list is truncated, so setting next marker: {}", marker);
+                log.trace("Returned list is truncated, so setting next marker: {}", marker);
             } else {
                 // no more data so clear marker
                 marker = null;
             }
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Found {} objects in bucket [{}]...", listObjects.getObjectSummaries().size(), bucketName);
+            if (log.isTraceEnabled()) {
+                log.trace("Found {} objects in bucket [{}]...", listObjects.getObjectSummaries().size(), bucketName);
             }
 
             exchanges = createExchanges(listObjects.getObjectSummaries());
@@ -112,8 +109,8 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
     }
     
     protected Queue<Exchange> createExchanges(List<S3ObjectSummary> s3ObjectSummaries) {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Received {} messages in this poll", s3ObjectSummaries.size());
+        if (log.isTraceEnabled()) {
+            log.trace("Received {} messages in this poll", s3ObjectSummaries.size());
         }
 
         Collection<S3Object> s3Objects = new ArrayList<>();
@@ -127,7 +124,7 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
                 answer.add(exchange);
             }
         } catch (Throwable e) {
-            LOG.warn("Error getting S3Object due: {}", e.getMessage(), e);
+            log.warn("Error getting S3Object due: {}", e.getMessage(), e);
             // ensure all previous gathered s3 objects are closed
             // if there was an exception creating the exchanges in this batch
             s3Objects.forEach(IOHelper::close);
@@ -167,11 +164,11 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
                 }
             });
 
-            LOG.trace("Processing exchange [{}]...", exchange);
+            log.trace("Processing exchange [{}]...", exchange);
             getAsyncProcessor().process(exchange, new AsyncCallback() {
                 @Override
                 public void done(boolean doneSync) {
-                    LOG.trace("Processing exchange [{}] done.", exchange);
+                    log.trace("Processing exchange [{}] done.", exchange);
                 }
             });
         }
@@ -190,11 +187,11 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
                 String bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
                 String key = exchange.getIn().getHeader(S3Constants.KEY, String.class);
                 
-                LOG.trace("Deleting object from bucket {} with key {}...", bucketName, key);
+                log.trace("Deleting object from bucket {} with key {}...", bucketName, key);
                 
                 getAmazonS3Client().deleteObject(bucketName, key);
 
-                LOG.trace("Deleted object from bucket {} with key {}...", bucketName, key);
+                log.trace("Deleted object from bucket {} with key {}...", bucketName, key);
             }
         } catch (AmazonClientException e) {
             getExceptionHandler().handleException("Error occurred during deleting object. This exception is ignored.", exchange, e);
@@ -209,9 +206,9 @@ public class S3Consumer extends ScheduledBatchPollingConsumer {
     protected void processRollback(Exchange exchange) {
         Exception cause = exchange.getException();
         if (cause != null) {
-            LOG.warn("Exchange failed, so rolling back message status: {}", exchange, cause);
+            log.warn("Exchange failed, so rolling back message status: {}", exchange, cause);
         } else {
-            LOG.warn("Exchange failed, so rolling back message status: {}", exchange);
+            log.warn("Exchange failed, so rolling back message status: {}", exchange);
         }
     }
 
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsEndpoint.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsEndpoint.java
index 6f88332..17b21df 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsEndpoint.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsEndpoint.java
@@ -43,8 +43,6 @@ import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The aws-sns component is used for sending messages to an Amazon Simple Notification Topic.
@@ -53,8 +51,6 @@ import org.slf4j.LoggerFactory;
     producerOnly = true, label = "cloud,mobile,messaging")
 public class SnsEndpoint extends DefaultEndpoint implements HeaderFilterStrategyAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SnsEndpoint.class);
-
     private AmazonSNS snsClient;
 
     @UriPath(description = "Topic name or ARN")
@@ -120,7 +116,7 @@ public class SnsEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
                     }
                 } while (nextToken != null);
             } catch (final AmazonServiceException ase) {
-                LOG.trace("The list topics operation return the following error code {}", ase.getErrorCode());
+                log.trace("The list topics operation return the following error code {}", ase.getErrorCode());
                 throw ase;
             }
         }
@@ -129,20 +125,20 @@ public class SnsEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
             // creates a new topic, or returns the URL of an existing one
             CreateTopicRequest request = new CreateTopicRequest(configuration.getTopicName());
 
-            LOG.trace("Creating topic [{}] with request [{}]...", configuration.getTopicName(), request);
+            log.trace("Creating topic [{}] with request [{}]...", configuration.getTopicName(), request);
 
             CreateTopicResult result = snsClient.createTopic(request);
             configuration.setTopicArn(result.getTopicArn());
 
-            LOG.trace("Topic created with Amazon resource name: {}", configuration.getTopicArn());
+            log.trace("Topic created with Amazon resource name: {}", configuration.getTopicArn());
         }
         
         if (ObjectHelper.isNotEmpty(configuration.getPolicy())) {
-            LOG.trace("Updating topic [{}] with policy [{}]", configuration.getTopicArn(), configuration.getPolicy());
+            log.trace("Updating topic [{}] with policy [{}]", configuration.getTopicArn(), configuration.getPolicy());
             
             snsClient.setTopicAttributes(new SetTopicAttributesRequest(configuration.getTopicArn(), "Policy", configuration.getPolicy()));
             
-            LOG.trace("Topic policy updated");
+            log.trace("Topic policy updated");
         }
         
     }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsProducer.java
index 2b447e1..caab137 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsProducer.java
@@ -31,8 +31,6 @@ import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageForResponse;
 
@@ -43,8 +41,6 @@ import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageFo
  */
 public class SnsProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SnsProducer.class);
-
     private transient String snsProducerToString;
 
     public SnsProducer(Endpoint endpoint) {
@@ -60,11 +56,11 @@ public class SnsProducer extends DefaultProducer {
         request.setMessage(exchange.getIn().getBody(String.class));
         request.setMessageAttributes(this.translateAttributes(exchange.getIn().getHeaders(), exchange));
 
-        LOG.trace("Sending request [{}] from exchange [{}]...", request, exchange);
+        log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
 
         PublishResult result = getEndpoint().getSNSClient().publish(request);
 
-        LOG.trace("Received result [{}]", result);
+        log.trace("Received result [{}]", result);
 
         Message message = getMessageForResponse(exchange);
         message.setHeader(SnsConstants.MESSAGE_ID, result.getMessageId());
@@ -112,7 +108,7 @@ public class SnsProducer extends DefaultProducer {
                     result.put(entry.getKey(), mav);
                 } else {
                     // cannot translate the message header to message attribute value
-                    LOG.warn("Cannot put the message header key={}, value={} into Sns MessageAttribute", entry.getKey(), entry.getValue());
+                    log.warn("Cannot put the message header key={}, value={} into Sns MessageAttribute", entry.getKey(), entry.getValue());
                 }
             }
         }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConsumer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConsumer.java
index fe8b559..dadd5aa 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConsumer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConsumer.java
@@ -46,8 +46,6 @@ import org.apache.camel.spi.Synchronization;
 import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Consumer of messages from the Amazon Web Service Simple Queue Service
@@ -55,7 +53,6 @@ import org.slf4j.LoggerFactory;
  */
 public class SqsConsumer extends ScheduledBatchPollingConsumer {
     
-    private static final Logger LOG = LoggerFactory.getLogger(SqsConsumer.class);
     private ScheduledExecutorService scheduledExecutor;
     private transient String sqsConsumerToString;
     private Collection<String> attributeNames;
@@ -92,19 +89,19 @@ public class SqsConsumer extends ScheduledBatchPollingConsumer {
             request.setMessageAttributeNames(messageAttributeNames);
         }
 
-        LOG.trace("Receiving messages with request [{}]...", request);
+        log.trace("Receiving messages with request [{}]...", request);
         
         ReceiveMessageResult messageResult = null;
         try {
             messageResult = getClient().receiveMessage(request);
         } catch (QueueDoesNotExistException e) {
-            LOG.info("Queue does not exist....recreating now...");
+            log.info("Queue does not exist....recreating now...");
             reConnectToQueue();
             messageResult = getClient().receiveMessage(request);
         }
 
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Received {} messages", messageResult.getMessages().size());
+        if (log.isTraceEnabled()) {
+            log.trace("Received {} messages", messageResult.getMessages().size());
         }
         
         Queue<Exchange> exchanges = createExchanges(messageResult.getMessages());
@@ -115,21 +112,21 @@ public class SqsConsumer extends ScheduledBatchPollingConsumer {
         try {
             getEndpoint().createQueue(getClient());
         } catch (QueueDeletedRecentlyException qdr) {
-            LOG.debug("Queue recently deleted, will retry in 30 seconds.");
+            log.debug("Queue recently deleted, will retry in 30 seconds.");
             try {
                 Thread.sleep(30000);
                 getEndpoint().createQueue(getClient());
             } catch (Exception e) {
-                LOG.warn("failed to retry queue connection.", e);
+                log.warn("failed to retry queue connection.", e);
             }
         } catch (Exception e) {
-            LOG.warn("Could not connect to queue in amazon.", e);
+            log.warn("Could not connect to queue in amazon.", e);
         }
     }
     
     protected Queue<Exchange> createExchanges(List<Message> messages) {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Received {} messages in this poll", messages.size());
+        if (log.isTraceEnabled()) {
+            log.trace("Received {} messages in this poll", messages.size());
         }
         
         Queue<Exchange> answer = new LinkedList<>();
@@ -161,8 +158,8 @@ public class SqsConsumer extends ScheduledBatchPollingConsumer {
                 int delay = visibilityTimeout.intValue() / 2;
                 int period = visibilityTimeout.intValue();
                 int repeatSeconds = Double.valueOf(visibilityTimeout.doubleValue() * 1.5).intValue();
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Scheduled TimeoutExtender task to start after {} delay, and run with {}/{} period/repeat (seconds), to extend exchangeId: {}",
+                if (log.isDebugEnabled()) {
+                    log.debug("Scheduled TimeoutExtender task to start after {} delay, and run with {}/{} period/repeat (seconds), to extend exchangeId: {}",
                             new Object[]{delay, period, repeatSeconds, exchange.getExchangeId()});
                 }
                 final ScheduledFuture<?> scheduledFuture = this.scheduledExecutor.scheduleAtFixedRate(
@@ -180,7 +177,7 @@ public class SqsConsumer extends ScheduledBatchPollingConsumer {
 
                     private void cancelExtender(Exchange exchange) {
                         // cancel task as we are done
-                        LOG.trace("Processing done so cancelling TimeoutExtender task for exchangeId: {}", exchange.getExchangeId());
+                        log.trace("Processing done so cancelling TimeoutExtender task for exchangeId: {}", exchange.getExchangeId());
                         scheduledFuture.cancel(true);
                     }
                 });
@@ -202,11 +199,11 @@ public class SqsConsumer extends ScheduledBatchPollingConsumer {
                 }
             });
 
-            LOG.trace("Processing exchange [{}]...", exchange);
+            log.trace("Processing exchange [{}]...", exchange);
             getAsyncProcessor().process(exchange, new AsyncCallback() {
                 @Override
                 public void done(boolean doneSync) {
-                    LOG.trace("Processing exchange [{}] done.", exchange);
+                    log.trace("Processing exchange [{}] done.", exchange);
                 }
             });
         }
@@ -226,11 +223,11 @@ public class SqsConsumer extends ScheduledBatchPollingConsumer {
                 String receiptHandle = exchange.getIn().getHeader(SqsConstants.RECEIPT_HANDLE, String.class);
                 DeleteMessageRequest deleteRequest = new DeleteMessageRequest(getQueueUrl(), receiptHandle);
 
-                LOG.trace("Deleting message with receipt handle {}...", receiptHandle);
+                log.trace("Deleting message with receipt handle {}...", receiptHandle);
 
                 getClient().deleteMessage(deleteRequest);
 
-                LOG.trace("Deleted message with receipt handle {}...", receiptHandle);
+                log.trace("Deleted message with receipt handle {}...", receiptHandle);
             }
         } catch (AmazonClientException e) {
             getExceptionHandler().handleException("Error occurred during deleting message. This exception is ignored.", exchange, e);
@@ -323,15 +320,15 @@ public class SqsConsumer extends ScheduledBatchPollingConsumer {
                     exchange.getIn().getHeader(SqsConstants.RECEIPT_HANDLE, String.class), repeatSeconds);
 
             try {
-                LOG.trace("Extending visibility window by {} seconds for exchange {}", this.repeatSeconds, this.exchange);
+                log.trace("Extending visibility window by {} seconds for exchange {}", this.repeatSeconds, this.exchange);
                 getEndpoint().getClient().changeMessageVisibility(request);
-                LOG.debug("Extended visibility window by {} seconds for exchange {}", this.repeatSeconds, this.exchange);
+                log.debug("Extended visibility window by {} seconds for exchange {}", this.repeatSeconds, this.exchange);
             } catch (ReceiptHandleIsInvalidException e) {
                 // Ignore.
             } catch (MessageNotInflightException e) {
                 // Ignore.
             } catch (Exception e) {
-                LOG.warn("Extending visibility window failed for exchange " + exchange
+                log.warn("Extending visibility window failed for exchange " + exchange
                         + ". Will not attempt to extend visibility further. This exception will be ignored.", e);
             }
         }
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
index 1182f12..7c96496 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
@@ -52,8 +52,6 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The aws-sqs component is used for sending and receiving messages to Amazon's SQS service.
@@ -62,8 +60,6 @@ import org.slf4j.LoggerFactory;
     consumerClass = SqsConsumer.class, label = "cloud,messaging")
 public class SqsEndpoint extends ScheduledPollEndpoint implements HeaderFilterStrategyAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SqsEndpoint.class);
-
     private AmazonSQS client;
     private String queueUrl;
 
@@ -143,7 +139,7 @@ public class SqsEndpoint extends ScheduledPollEndpoint implements HeaderFilterSt
                 for (String url : listQueuesResult.getQueueUrls()) {
                     if (url.endsWith("/" + configuration.getQueueName())) {
                         queueUrl = url;
-                        LOG.trace("Queue available at '{}'.", queueUrl);
+                        log.trace("Queue available at '{}'.", queueUrl);
                         break;
                     }
                 }
@@ -153,13 +149,13 @@ public class SqsEndpoint extends ScheduledPollEndpoint implements HeaderFilterSt
         if (queueUrl == null) {
             createQueue(client);
         } else {
-            LOG.debug("Using Amazon SQS queue url: {}", queueUrl);
+            log.debug("Using Amazon SQS queue url: {}", queueUrl);
             updateQueueAttributes(client);
         }
     }
 
     protected void createQueue(AmazonSQS client) {
-        LOG.trace("Queue '{}' doesn't exist. Will create it...", configuration.getQueueName());
+        log.trace("Queue '{}' doesn't exist. Will create it...", configuration.getQueueName());
 
         // creates a new queue, or returns the URL of an existing one
         CreateQueueRequest request = new CreateQueueRequest(configuration.getQueueName());
@@ -186,12 +182,12 @@ public class SqsEndpoint extends ScheduledPollEndpoint implements HeaderFilterSt
         if (getConfiguration().getRedrivePolicy() != null) {
             request.getAttributes().put(QueueAttributeName.RedrivePolicy.name(), getConfiguration().getRedrivePolicy());
         }
-        LOG.trace("Creating queue [{}] with request [{}]...", configuration.getQueueName(), request);
+        log.trace("Creating queue [{}] with request [{}]...", configuration.getQueueName(), request);
 
         CreateQueueResult queueResult = client.createQueue(request);
         queueUrl = queueResult.getQueueUrl();
 
-        LOG.trace("Queue created and available at: {}", queueUrl);
+        log.trace("Queue created and available at: {}", queueUrl);
     }
 
     private void updateQueueAttributes(AmazonSQS client) {
@@ -216,9 +212,9 @@ public class SqsEndpoint extends ScheduledPollEndpoint implements HeaderFilterSt
             request.getAttributes().put(QueueAttributeName.RedrivePolicy.name(), getConfiguration().getRedrivePolicy());
         }
         if (!request.getAttributes().isEmpty()) {
-            LOG.trace("Updating queue '{}' with the provided queue attributes...", configuration.getQueueName());
+            log.trace("Updating queue '{}' with the provided queue attributes...", configuration.getQueueName());
             client.setQueueAttributes(request);
-            LOG.trace("Queue '{}' updated and available at {}'", configuration.getQueueName(), queueUrl);
+            log.trace("Queue '{}' updated and available at {}'", configuration.getQueueName(), queueUrl);
         }
     }
 
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsProducer.java
index a0e68c8..898c7a6 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsProducer.java
@@ -32,8 +32,6 @@ import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageForResponse;
 
@@ -44,8 +42,6 @@ import static org.apache.camel.component.aws.common.AwsExchangeUtil.getMessageFo
  */
 public class SqsProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SqsProducer.class);
-
     private transient String sqsProducerToString;
 
     public SqsProducer(SqsEndpoint endpoint) throws NoFactoryAvailableException {
@@ -59,11 +55,11 @@ public class SqsProducer extends DefaultProducer {
         addDelay(request, exchange);
         configureFifoAttributes(request, exchange);
 
-        LOG.trace("Sending request [{}] from exchange [{}]...", request, exchange);
+        log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
 
         SendMessageResult result = getClient().sendMessage(request);
 
-        LOG.trace("Received result [{}]", result);
+        log.trace("Received result [{}]", result);
 
         Message message = getMessageForResponse(exchange);
         message.setHeader(SqsConstants.MESSAGE_ID, result.getMessageId());
@@ -88,13 +84,13 @@ public class SqsProducer extends DefaultProducer {
         Integer headerValue = exchange.getIn().getHeader(SqsConstants.DELAY_HEADER, Integer.class);
         Integer delayValue;
         if (headerValue == null) {
-            LOG.trace("Using the config delay");
+            log.trace("Using the config delay");
             delayValue = getEndpoint().getConfiguration().getDelaySeconds();
         } else {
-            LOG.trace("Using the header delay");
+            log.trace("Using the header delay");
             delayValue = headerValue;
         }
-        LOG.trace("found delay: {}", delayValue);
+        log.trace("found delay: {}", delayValue);
         request.setDelaySeconds(delayValue == null ? Integer.valueOf(0) : delayValue);
     }
 
@@ -169,7 +165,7 @@ public class SqsProducer extends DefaultProducer {
                     result.put(entry.getKey(), mav);
                 } else {
                     // cannot translate the message header to message attribute value
-                    LOG.warn("Cannot put the message header key={}, value={} into Sqs MessageAttribute", entry.getKey(), entry.getValue());
+                    log.warn("Cannot put the message header key={}, value={} into Sqs MessageAttribute", entry.getKey(), entry.getValue());
                 }
             }
         }
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceConsumer.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceConsumer.java
index d712d1d..ad8feed 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceConsumer.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceConsumer.java
@@ -21,8 +21,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.ScheduledPollConsumer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Consumer of the blob content from the Azure Blob Service
@@ -30,8 +28,7 @@ import org.slf4j.LoggerFactory;
 // Extending DefaultConsumer is simpler if the blob must exist before this consumer is started,
 // polling makes it easier to get the consumer working if no blob exists yet.
 public class BlobServiceConsumer extends ScheduledPollConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(BlobServiceConsumer.class);
-    
+
     public BlobServiceConsumer(BlobServiceEndpoint endpoint, Processor processor) throws NoFactoryAvailableException {
         super(endpoint, processor);
     }
@@ -40,7 +37,7 @@ public class BlobServiceConsumer extends ScheduledPollConsumer {
     protected int poll() throws Exception {
         Exchange exchange = super.getEndpoint().createExchange();
         try {
-            LOG.trace("Getting the blob content");
+            log.trace("Getting the blob content");
             getBlob(exchange);
             super.getAsyncProcessor().process(exchange);
             return 1;
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceEndpoint.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceEndpoint.java
index a146aa5..6ee6703 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceEndpoint.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceEndpoint.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The azure-blob component is used for storing and retrieving blobs from Azure Storage Blob Service.
@@ -39,8 +37,6 @@ import org.slf4j.LoggerFactory;
              label = "cloud,database,nosql")
 public class BlobServiceEndpoint extends DefaultEndpoint {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BlobServiceEndpoint.class);
-    
     @UriPath(description = "Container or Blob compact Uri")
     @Metadata(required = "true")
     private String containerOrBlobUri; // to support component docs
@@ -53,7 +49,7 @@ public class BlobServiceEndpoint extends DefaultEndpoint {
     }
 
     public Consumer createConsumer(Processor processor) throws Exception {
-        LOG.trace("Creating a consumer");
+        log.trace("Creating a consumer");
         if (getConfiguration().getBlobName() == null) {
             throw new IllegalArgumentException("Blob name must be specified.");
         }
@@ -63,7 +59,7 @@ public class BlobServiceEndpoint extends DefaultEndpoint {
     }
 
     public Producer createProducer() throws Exception {
-        LOG.trace("Creating a producer");
+        log.trace("Creating a producer");
         if (getConfiguration().getBlobName() == null
             && getConfiguration().getOperation() != null 
             && BlobServiceOperations.listBlobs != configuration.getOperation()) {
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java
index 8e4f6b8..a3b1403 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java
@@ -46,16 +46,12 @@ import org.apache.camel.component.azure.common.ExchangeUtil;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Producer which sends messages to the Azure Storage Blob Service
  */
 public class BlobServiceProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BlobServiceProducer.class);
-
     public BlobServiceProducer(final Endpoint endpoint) {
         super(endpoint);
     }
@@ -118,7 +114,7 @@ public class BlobServiceProducer extends DefaultProducer {
     private void listBlobs(Exchange exchange) throws Exception {
         CloudBlobContainer client = BlobServiceUtil.createBlobContainerClient(getConfiguration());
         BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange);
-        LOG.trace("Getting the blob list from the container [{}] from exchange [{}]...", 
+        log.trace("Getting the blob list from the container [{}] from exchange [{}]...",
                   getConfiguration().getContainerName(), exchange);
         BlobServiceConfiguration cfg = getConfiguration();
         EnumSet<BlobListingDetails> details = null;
@@ -143,7 +139,7 @@ public class BlobServiceProducer extends DefaultProducer {
         
         InputStream inputStream = getInputStreamFromExchange(exchange);
         
-        LOG.trace("Putting a block blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Putting a block blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         try {
             client.upload(inputStream, -1,
                           opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext());
@@ -169,7 +165,7 @@ public class BlobServiceProducer extends DefaultProducer {
         configureCloudBlobForWrite(client);
         BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange);
         
-        LOG.trace("Putting a blob [{}] from blocks from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Putting a blob [{}] from blocks from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         List<BlockEntry> blockEntries = new LinkedList<>();
         for (BlobBlock blobBlock : blobBlocks) {
             blockEntries.add(blobBlock.getBlockEntry());
@@ -200,7 +196,7 @@ public class BlobServiceProducer extends DefaultProducer {
         CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(getConfiguration());
         BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange);
         
-        LOG.trace("Putting a blob [{}] block list from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Putting a blob [{}] block list from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         client.commitBlockList(blockEntries, 
                                opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext());
     }
@@ -228,7 +224,7 @@ public class BlobServiceProducer extends DefaultProducer {
     private void getBlobBlockList(Exchange exchange) throws Exception {
         CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(getConfiguration());
         BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange);
-        LOG.trace("Getting the blob block list [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Getting the blob block list [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         BlockListingFilter filter = exchange.getIn().getBody(BlockListingFilter.class);
         if (filter == null) {
             filter = BlockListingFilter.COMMITTED;
@@ -255,7 +251,7 @@ public class BlobServiceProducer extends DefaultProducer {
     
     private void doCreateAppendBlob(CloudAppendBlob client, BlobServiceRequestOptions opts, Exchange exchange) 
         throws Exception {
-        LOG.trace("Creating an append blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Creating an append blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         try {
             client.createOrReplace(opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext());
         } catch (StorageException ex) {
@@ -309,7 +305,7 @@ public class BlobServiceProducer extends DefaultProducer {
     
     private void doCreatePageBlob(CloudPageBlob client, BlobServiceRequestOptions opts, Exchange exchange) 
         throws Exception {
-        LOG.trace("Creating a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Creating a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         Long pageSize = getPageBlobSize(exchange);
         try {
             client.create(pageSize,
@@ -325,7 +321,7 @@ public class BlobServiceProducer extends DefaultProducer {
     }
     
     private void uploadPageBlob(Exchange exchange) throws Exception {
-        LOG.trace("Updating a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Updating a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         
         CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration());
         configureCloudBlobForWrite(client);
@@ -346,7 +342,7 @@ public class BlobServiceProducer extends DefaultProducer {
     }
     
     private void resizePageBlob(Exchange exchange) throws Exception {
-        LOG.trace("Resizing a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Resizing a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         
         CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration());
         BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange);
@@ -355,7 +351,7 @@ public class BlobServiceProducer extends DefaultProducer {
     }
     
     private void clearPageBlob(Exchange exchange) throws Exception {
-        LOG.trace("Clearing a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Clearing a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
                 
         CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration());
         BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange);
@@ -400,7 +396,7 @@ public class BlobServiceProducer extends DefaultProducer {
         CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration());
         BlobServiceUtil.configureCloudBlobForRead(client, getConfiguration());
         BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange);
-        LOG.trace("Getting the page blob ranges [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Getting the page blob ranges [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         List<PageRange> ranges = 
             client.downloadPageRanges(opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext());
         ExchangeUtil.getMessageForResponse(exchange).setBody(ranges);
@@ -421,7 +417,7 @@ public class BlobServiceProducer extends DefaultProducer {
 
     
     private void doDeleteBlock(CloudBlob client, Exchange exchange) throws Exception {
-        LOG.trace("Deleting a blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
+        log.trace("Deleting a blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange);
         client.delete();
     }
 
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceConsumer.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceConsumer.java
index a70ad46..32a41f2 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceConsumer.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceConsumer.java
@@ -21,15 +21,12 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.ScheduledPollConsumer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Consumer of the queue content from the Azure Queue Service
  */
 public class QueueServiceConsumer extends ScheduledPollConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(QueueServiceConsumer.class);
-    
+
     public QueueServiceConsumer(QueueServiceEndpoint endpoint, Processor processor) throws NoFactoryAvailableException {
         super(endpoint, processor);
     }
@@ -38,7 +35,7 @@ public class QueueServiceConsumer extends ScheduledPollConsumer {
     protected int poll() throws Exception {
         Exchange exchange = super.getEndpoint().createExchange();
         try {
-            LOG.trace("Retrieving a message");
+            log.trace("Retrieving a message");
             retrieveMessage(exchange);
             super.getAsyncProcessor().process(exchange);
             return 1;
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceEndpoint.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceEndpoint.java
index 5173ada..c5c542e 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceEndpoint.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceEndpoint.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The azure-queue component is used for storing and retrieving messages from Azure Storage Queue Service.
@@ -39,8 +37,6 @@ import org.slf4j.LoggerFactory;
              label = "cloud,queue,azure")
 public class QueueServiceEndpoint extends DefaultEndpoint {
 
-    private static final Logger LOG = LoggerFactory.getLogger(QueueServiceEndpoint.class);
-    
     @UriPath(description = "Container Queue compact Uri")
     @Metadata(required = "true")
     private String containerAndQueueUri; // to support component docs
@@ -53,14 +49,14 @@ public class QueueServiceEndpoint extends DefaultEndpoint {
     }
 
     public Consumer createConsumer(Processor processor) throws Exception {
-        LOG.trace("Creating a consumer");
+        log.trace("Creating a consumer");
         QueueServiceConsumer consumer = new QueueServiceConsumer(this, processor);
         configureConsumer(consumer);
         return consumer;
     }
 
     public Producer createProducer() throws Exception {
-        LOG.trace("Creating a producer");
+        log.trace("Creating a producer");
         return new QueueServiceProducer(this);
     }
 
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceProducer.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceProducer.java
index ff15369..ca59d7b 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceProducer.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceProducer.java
@@ -29,16 +29,12 @@ import org.apache.camel.component.azure.common.ExchangeUtil;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Producer which sends messages to the Azure Storage Queue Service
  */
 public class QueueServiceProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(QueueServiceProducer.class);
-
     public QueueServiceProducer(final Endpoint endpoint) {
         super(endpoint);
     }
@@ -101,7 +97,7 @@ public class QueueServiceProducer extends DefaultProducer {
     }
     
     private void doCreateQueue(CloudQueue client, QueueServiceRequestOptions opts, Exchange exchange) throws Exception {
-        LOG.trace("Creating the queue [{}] from exchange [{}]...", 
+        log.trace("Creating the queue [{}] from exchange [{}]...",
                   getConfiguration().getQueueName(), exchange);
         client.createIfNotExists(opts.getRequestOpts(), opts.getOpContext());
         ExchangeUtil.getMessageForResponse(exchange)
@@ -109,7 +105,7 @@ public class QueueServiceProducer extends DefaultProducer {
     }
     
     private void deleteQueue(Exchange exchange) throws Exception {
-        LOG.trace("Deleting the queue [{}] from exchange [{}]...", 
+        log.trace("Deleting the queue [{}] from exchange [{}]...",
                   getConfiguration().getQueueName(), exchange);
         CloudQueue client = QueueServiceUtil.createQueueClient(getConfiguration());
         QueueServiceRequestOptions opts = QueueServiceUtil.getRequestOptions(exchange);
@@ -117,7 +113,7 @@ public class QueueServiceProducer extends DefaultProducer {
     }
     
     private void addMessage(Exchange exchange) throws Exception {
-        LOG.trace("Putting the message into the queue [{}] from exchange [{}]...", 
+        log.trace("Putting the message into the queue [{}] from exchange [{}]...",
                   getConfiguration().getQueueName(), exchange);
         CloudQueue client = QueueServiceUtil.createQueueClient(getConfiguration());
         QueueServiceRequestOptions opts = QueueServiceUtil.getRequestOptions(exchange);
@@ -139,7 +135,7 @@ public class QueueServiceProducer extends DefaultProducer {
         QueueServiceRequestOptions opts = QueueServiceUtil.getRequestOptions(exchange);
         
         CloudQueueMessage message = getCloudQueueMessage(exchange);
-        LOG.trace("Updating the message in the queue [{}] from exchange [{}]...", 
+        log.trace("Updating the message in the queue [{}] from exchange [{}]...",
                   getConfiguration().getQueueName(), exchange);
         
         EnumSet<MessageUpdateFields> fields = null;
@@ -158,7 +154,7 @@ public class QueueServiceProducer extends DefaultProducer {
     }
     
     private void deleteMessage(Exchange exchange) throws Exception {
-        LOG.trace("Deleting the message from the queue [{}] from exchange [{}]...", 
+        log.trace("Deleting the message from the queue [{}] from exchange [{}]...",
                   getConfiguration().getQueueName(), exchange);
         CloudQueue client = QueueServiceUtil.createQueueClient(getConfiguration());
         QueueServiceRequestOptions opts = QueueServiceUtil.getRequestOptions(exchange);
diff --git a/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java b/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
index 8c16985..f5100a6 100644
--- a/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
+++ b/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
@@ -41,8 +41,6 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ExchangeHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * {@link DataFormat} to create (encode) and
@@ -54,11 +52,6 @@ import org.slf4j.LoggerFactory;
 public class BarcodeDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     /**
-     * Logger.
-     */
-    private static final Logger LOG = LoggerFactory.getLogger(BarcodeDataFormat.class);
-
-    /**
      * The bean for the default parameters.
      */
     private BarcodeParameters params;
@@ -239,7 +232,7 @@ public class BarcodeDataFormat extends ServiceSupport implements DataFormat, Dat
      */
     public final void addToHintMap(final EncodeHintType hintType, final Object value) {
         this.writerHintMap.put(hintType, value);
-        LOG.info(String.format("Added '%s' with value '%s' to writer hint map.", hintType.toString(), value.toString()));
+        log.info(String.format("Added '%s' with value '%s' to writer hint map.", hintType.toString(), value.toString()));
     }
 
     /**
@@ -255,9 +248,9 @@ public class BarcodeDataFormat extends ServiceSupport implements DataFormat, Dat
     public final void removeFromHintMap(final EncodeHintType hintType) {
         if (this.writerHintMap.containsKey(hintType)) {
             this.writerHintMap.remove(hintType);
-            LOG.info(String.format("Removed '%s' from writer hint map.", hintType.toString()));
+            log.info(String.format("Removed '%s' from writer hint map.", hintType.toString()));
         } else {
-            LOG.warn(String.format("Could not find encode hint type '%s' in writer hint map.", hintType.toString()));
+            log.warn(String.format("Could not find encode hint type '%s' in writer hint map.", hintType.toString()));
         }
     }
 
@@ -267,9 +260,9 @@ public class BarcodeDataFormat extends ServiceSupport implements DataFormat, Dat
     public final void removeFromHintMap(final DecodeHintType hintType) {
         if (this.readerHintMap.containsKey(hintType)) {
             this.readerHintMap.remove(hintType);
-            LOG.info(String.format("Removed '%s' from reader hint map.", hintType.toString()));
+            log.info(String.format("Removed '%s' from reader hint map.", hintType.toString()));
         } else {
-            LOG.warn(String.format("Could not find decode hint type '%s' in reader hint map.", hintType.toString()));
+            log.warn(String.format("Could not find decode hint type '%s' in reader hint map.", hintType.toString()));
         }
     }
 
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkConsumer.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkConsumer.java
index 07a2e6b..8829b9a 100644
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkConsumer.java
+++ b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkConsumer.java
@@ -33,8 +33,6 @@ import org.apache.camel.component.beanstalk.processors.DeleteCommand;
 import org.apache.camel.component.beanstalk.processors.ReleaseCommand;
 import org.apache.camel.impl.ScheduledPollConsumer;
 import org.apache.camel.spi.Synchronization;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * PollingConsumer to read Beanstalk jobs.
@@ -53,7 +51,7 @@ import org.slf4j.LoggerFactory;
  * The reaction on failures is configurable: possible variants are "bury", "release" or "delete"
  */
 public class BeanstalkConsumer extends ScheduledPollConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(BeanstalkConsumer.class);
+
     private static final String[] STATS_KEY_STR = new String[]{"tube", "state"};
     private static final String[] STATS_KEY_INT = new String[]{"age", "time-left", "timeouts", "releases", "buries", "kicks"};
 
@@ -86,8 +84,8 @@ public class BeanstalkConsumer extends ScheduledPollConsumer {
                     return null;
                 }
 
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug(String.format("Received job ID %d (data length %d)", job.getJobId(), job.getData().length));
+                if (log.isDebugEnabled()) {
+                    log.debug(String.format("Received job ID %d (data length %d)", job.getJobId(), job.getData().length));
                 }
 
                 final Exchange exchange = getEndpoint().createExchange(ExchangePattern.InOnly);
@@ -222,7 +220,7 @@ public class BeanstalkConsumer extends ScheduledPollConsumer {
             try {
                 executor.submit(new RunCommand(successCommand, exchange)).get();
             } catch (Exception e) {
-                LOG.error(String.format("Could not run completion of exchange %s", exchange), e);
+                log.error(String.format("Could not run completion of exchange %s", exchange), e);
             }
         }
 
@@ -231,7 +229,7 @@ public class BeanstalkConsumer extends ScheduledPollConsumer {
             try {
                 executor.submit(new RunCommand(failureCommand, exchange)).get();
             } catch (Exception e) {
-                LOG.error(String.format("%s could not run failure of exchange %s", failureCommand.getClass().getName(), exchange), e);
+                log.error(String.format("%s could not run failure of exchange %s", failureCommand.getClass().getName(), exchange), e);
             }
         }
 
@@ -250,12 +248,12 @@ public class BeanstalkConsumer extends ScheduledPollConsumer {
                     try {
                         command.act(client, exchange);
                     } catch (BeanstalkException e) {
-                        LOG.warn(String.format("Post-processing %s of exchange %s failed, retrying.", command.getClass().getName(), exchange), e);
+                        log.warn(String.format("Post-processing %s of exchange %s failed, retrying.", command.getClass().getName(), exchange), e);
                         resetClient();
                         command.act(client, exchange);
                     }
                 } catch (final Exception e) {
-                    LOG.error(String.format("%s could not post-process exchange %s", command.getClass().getName(), exchange), e);
+                    log.error(String.format("%s could not post-process exchange %s", command.getClass().getName(), exchange), e);
                     exchange.setException(e);
                 }
             }
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMandatoryFieldsUnmarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMandatoryFieldsUnmarshallTest.java
index 1501aa8..e28c375 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMandatoryFieldsUnmarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMandatoryFieldsUnmarshallTest.java
@@ -68,7 +68,7 @@ public class BindySimpleCsvMandatoryFieldsUnmarshallTest extends AbstractJUnit4S
             fail("Should have thrown an exception");
         } catch (CamelExecutionException e) {
             Assert.isInstanceOf(Exception.class, e.getCause());
-            // LOG.info(">> Error : " + e);
+            // log.info(">> Error : " + e);
         }
 
         resultEndpoint1.assertIsSatisfied();
@@ -183,7 +183,7 @@ public class BindySimpleCsvMandatoryFieldsUnmarshallTest extends AbstractJUnit4S
             template2.sendBody(header + record4);
             resultEndpoint2.assertIsSatisfied();
         } catch (CamelExecutionException e) {
-            // LOG.info(">> Error : " + e);
+            // log.info(">> Error : " + e);
         }
     }
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java
index aef74c2..b584dea 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java
@@ -73,7 +73,7 @@ public class BindySimpleCsvUnmarshallTest extends AbstractJUnit4SpringContextTes
         /*
          * List<Exchange> exchanges = resultEndpoint.getExchanges();
          * for(Exchange exchange : exchanges) { Object body =
-         * exchange.getOut().getBody(); LOG.debug("Body received : " +
+         * exchange.getOut().getBody(); log.debug("Body received : " +
          * body.toString()); }
          */
 
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
index ad56a4b..56b4b4b 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
@@ -42,16 +42,12 @@ import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.blueprint.container.BlueprintContainer;
 import org.osgi.service.blueprint.container.BlueprintEvent;
 import org.osgi.service.blueprint.container.BlueprintListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * OSGi Blueprint based {@link org.apache.camel.CamelContext}.
  */
 public class BlueprintCamelContext extends DefaultCamelContext implements ServiceListener, BlueprintListener {
 
-    private static final Logger LOG = LoggerFactory.getLogger(BlueprintCamelContext.class);
-    
     protected final AtomicBoolean routeDefinitionValid = new AtomicBoolean(true);
 
     private BundleContext bundleContext;
@@ -98,7 +94,7 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
     }
    
     public void init() throws Exception {
-        LOG.trace("init {}", this);
+        log.trace("init {}", this);
 
         // add service listener so we can be notified when blueprint container is done
         // and we would be ready to start CamelContext
@@ -109,19 +105,19 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
     }
 
     public void destroy() throws Exception {
-        LOG.trace("destroy {}", this);
+        log.trace("destroy {}", this);
 
         // remove listener and stop this CamelContext
         try {
             bundleContext.removeServiceListener(this);
         } catch (Exception e) {
-            LOG.warn("Error removing ServiceListener: " + this + ". This exception is ignored.", e);
+            log.warn("Error removing ServiceListener: " + this + ". This exception is ignored.", e);
         }
         if (registration != null) {
             try {
                 registration.unregister();
             } catch (Exception e) {
-                LOG.warn("Error unregistering service registration: " + registration + ". This exception is ignored.", e);
+                log.warn("Error unregistering service registration: " + registration + ". This exception is ignored.", e);
             }
             registration = null;
         }
@@ -137,7 +133,7 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
 
     @Override
     public void blueprintEvent(BlueprintEvent event) {
-        if (LOG.isDebugEnabled()) {
+        if (log.isDebugEnabled()) {
             String eventTypeString;
 
             switch (event.getType()) {
@@ -167,23 +163,23 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
                 break;
             }
 
-            LOG.debug("Received BlueprintEvent[replay={} type={} bundle={}] %s", event.isReplay(), eventTypeString, event.getBundle().getSymbolicName(), event);
+            log.debug("Received BlueprintEvent[replay={} type={} bundle={}] %s", event.isReplay(), eventTypeString, event.getBundle().getSymbolicName(), event);
         }
 
         if (!event.isReplay() && this.getBundleContext().getBundle().getBundleId() == event.getBundle().getBundleId()) {
             if (event.getType() == BlueprintEvent.CREATED) {
                 try {
-                    LOG.info("Attempting to start CamelContext: {}", this.getName());
+                    log.info("Attempting to start CamelContext: {}", this.getName());
                     this.maybeStart();
                 } catch (Exception startEx) {
-                    LOG.error("Error occurred during starting CamelContext: {}", this.getName(), startEx);
+                    log.error("Error occurred during starting CamelContext: {}", this.getName(), startEx);
                 }
             } else if (event.getType() == BlueprintEvent.DESTROYING) {
                 try {
-                    LOG.info("Stopping CamelContext: {}", this.getName());
+                    log.info("Stopping CamelContext: {}", this.getName());
                     this.stop();
                 } catch (Exception stopEx) {
-                    LOG.error("Error occurred during stopping CamelContext: {}", this.getName(), stopEx);
+                    log.error("Error occurred during stopping CamelContext: {}", this.getName(), stopEx);
                 }
             }
         }
@@ -191,7 +187,7 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
 
     @Override
     public void serviceChanged(ServiceEvent event) {
-        if (LOG.isTraceEnabled()) {
+        if (log.isTraceEnabled()) {
             String eventTypeString;
 
             switch (event.getType()) {
@@ -213,7 +209,7 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
             }
 
             // use trace logging as this is very noisy
-            LOG.trace("Service: {} changed to: {}", event, eventTypeString);
+            log.trace("Service: {} changed to: {}", event, eventTypeString);
         }
     }
 
@@ -250,10 +246,10 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
     }
 
     private void maybeStart() throws Exception {
-        LOG.trace("maybeStart: {}", this);
+        log.trace("maybeStart: {}", this);
 
         if (!routeDefinitionValid.get()) {
-            LOG.trace("maybeStart: {} is skipping since CamelRoute definition is not correct.", this);
+            log.trace("maybeStart: {} is skipping since CamelRoute definition is not correct.", this);
             return;
         }
 
@@ -274,16 +270,16 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
         // when blueprint loading the bundle
         boolean skip = "true".equalsIgnoreCase(System.getProperty("skipStartingCamelContext"));
         if (skip) {
-            LOG.trace("maybeStart: {} is skipping as System property skipStartingCamelContext is set", this);
+            log.trace("maybeStart: {} is skipping as System property skipStartingCamelContext is set", this);
             return;
         }
 
         if (!isStarted() && !isStarting()) {
-            LOG.debug("Starting {}", this);
+            log.debug("Starting {}", this);
             start();
         } else {
             // ignore as Camel is already started
-            LOG.trace("Ignoring maybeStart() as {} is already started", this);
+            log.trace("Ignoring maybeStart() as {} is already started", this);
         }
     }
 
diff --git a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/processor/aggregate/CaffeineAggregationRepository.java b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/processor/aggregate/CaffeineAggregationRepository.java
index 8c4624d..601cdb8 100644
--- a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/processor/aggregate/CaffeineAggregationRepository.java
+++ b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/processor/aggregate/CaffeineAggregationRepository.java
@@ -28,11 +28,8 @@ import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultExchangeHolder;
 import org.apache.camel.spi.RecoverableAggregationRepository;
 import org.apache.camel.support.ServiceSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class CaffeineAggregationRepository extends ServiceSupport implements RecoverableAggregationRepository {
-    private static final Logger LOG = LoggerFactory.getLogger(CaffeineAggregationRepository.class);
 
     private CamelContext camelContext;
     private Cache<String, DefaultExchangeHolder> cache;
@@ -126,7 +123,7 @@ public class CaffeineAggregationRepository extends ServiceSupport implements Rec
 
     @Override
     public Exchange add(final CamelContext camelContext, final String key, final Exchange exchange) {
-        LOG.trace("Adding an Exchange with ID {} for key {} in a thread-safe manner.", exchange.getExchangeId(), key);
+        log.trace("Adding an Exchange with ID {} for key {} in a thread-safe manner.", exchange.getExchangeId(), key);
 
         final DefaultExchangeHolder oldHolder = cache.getIfPresent(key);
         final DefaultExchangeHolder newHolder = DefaultExchangeHolder.marshal(exchange, true, allowSerializedHeaders);
@@ -143,13 +140,13 @@ public class CaffeineAggregationRepository extends ServiceSupport implements Rec
 
     @Override
     public void remove(CamelContext camelContext, String key, Exchange exchange) {
-        LOG.trace("Removing an exchange with ID {} for key {}", exchange.getExchangeId(), key);
+        log.trace("Removing an exchange with ID {} for key {}", exchange.getExchangeId(), key);
         cache.invalidate(key);
     }
 
     @Override
     public void confirm(CamelContext camelContext, String exchangeId) {
-        LOG.trace("Confirming an exchange with ID {}.", exchangeId);
+        log.trace("Confirming an exchange with ID {}.", exchangeId);
         cache.invalidate(exchangeId);
     }
 
@@ -162,15 +159,15 @@ public class CaffeineAggregationRepository extends ServiceSupport implements Rec
 
     @Override
     public Set<String> scan(CamelContext camelContext) {
-        LOG.trace("Scanning for exchanges to recover in {} context", camelContext.getName());
+        log.trace("Scanning for exchanges to recover in {} context", camelContext.getName());
         Set<String> scanned = Collections.unmodifiableSet(getKeys());
-        LOG.trace("Found {} keys for exchanges to recover in {} context", scanned.size(), camelContext.getName());
+        log.trace("Found {} keys for exchanges to recover in {} context", scanned.size(), camelContext.getName());
         return scanned;
     }
 
     @Override
     public Exchange recover(CamelContext camelContext, String exchangeId) {
-        LOG.trace("Recovering an Exchange with ID {}.", exchangeId);
+        log.trace("Recovering an Exchange with ID {}.", exchangeId);
         return useRecovery ? unmarshallExchange(camelContext, cache.getIfPresent(exchangeId)) : null;
     }
 
diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java
index 1b03c25..7a8d25f 100644
--- a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java
+++ b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java
@@ -41,7 +41,6 @@ import static org.apache.camel.utils.cassandra.CassandraUtils.isEmpty;
  */
 public class CassandraProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CassandraProducer.class);
     private PreparedStatement preparedStatement;
 
     public CassandraProducer(CassandraEndpoint endpoint) {
diff --git a/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java b/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java
index 5c77faf..2106cdb 100644
--- a/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java
+++ b/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java
@@ -27,16 +27,12 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.impl.DefaultComponent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Represents the component that manages {@link CMEndpoint}s.
  */
 public class CMComponent extends DefaultComponent {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CMComponent.class);
-
     private Validator validator;
 
     public CMComponent() {
@@ -54,7 +50,7 @@ public class CMComponent extends DefaultComponent {
         setProperties(config, parameters);
 
         // Validate configuration
-        LOG.debug("Validating uri based configuration");
+        log.debug("Validating uri based configuration");
         final Set<ConstraintViolation<CMConfiguration>> constraintViolations = getValidator().validate(config);
         if (constraintViolations.size() > 0) {
             final StringBuffer msg = new StringBuffer();
diff --git a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISConsumer.java b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISConsumer.java
index e51aaef..1c85d5b 100644
--- a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISConsumer.java
+++ b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISConsumer.java
@@ -23,14 +23,12 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.ScheduledPollConsumer;
 import org.apache.chemistry.opencmis.client.api.OperationContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The CMIS consumer.
  */
 public class CMISConsumer extends ScheduledPollConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(CMISConsumer.class);
+
     private final CMISSessionFacadeFactory sessionFacadeFactory;
     private CMISSessionFacade sessionFacade;
 
@@ -59,7 +57,7 @@ public class CMISConsumer extends ScheduledPollConsumer {
         Exchange exchange = getEndpoint().createExchange();
         exchange.getIn().setHeaders(properties);
         exchange.getIn().setBody(inputStream);
-        LOG.debug("Polling node : {}", properties.get("cmis:name"));
+        log.debug("Polling node : {}", properties.get("cmis:name"));
         getProcessor().process(exchange);
         return 1;
     }
diff --git a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java
index dc92702..79ec22d 100644
--- a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java
+++ b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java
@@ -36,14 +36,12 @@ import org.apache.chemistry.opencmis.commons.PropertyIds;
 import org.apache.chemistry.opencmis.commons.data.ContentStream;
 import org.apache.chemistry.opencmis.commons.enums.VersioningState;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The CMIS producer.
  */
 public class CMISProducer extends DefaultProducer {
-    private static final Logger LOG = LoggerFactory.getLogger(CMISProducer.class);
+
     private final CMISSessionFacadeFactory sessionFacadeFactory;
     private CMISSessionFacade sessionFacade;
 
@@ -60,7 +58,7 @@ public class CMISProducer extends DefaultProducer {
 
     public void process(Exchange exchange) throws Exception {
         CmisObject cmisObject = createNode(exchange);
-        LOG.debug("Created node with id: {}", cmisObject.getId());
+        log.debug("Created node with id: {}", cmisObject.getId());
 
         // copy the header of in message to the out message
         exchange.getOut().copyFrom(exchange.getIn());
@@ -152,7 +150,7 @@ public class CMISProducer extends DefaultProducer {
         if (!cmisProperties.containsKey(PropertyIds.OBJECT_TYPE_ID)) {
             cmisProperties.put(PropertyIds.OBJECT_TYPE_ID, CamelCMISConstants.CMIS_FOLDER);
         }
-        LOG.debug("Creating folder with properties: {}", cmisProperties);
+        log.debug("Creating folder with properties: {}", cmisProperties);
         return parentFolder.createFolder(cmisProperties);
     }
 
@@ -165,7 +163,7 @@ public class CMISProducer extends DefaultProducer {
         if (getSessionFacade().isObjectTypeVersionable((String) cmisProperties.get(PropertyIds.OBJECT_TYPE_ID))) {
             versioningState = VersioningState.MAJOR;
         }
-        LOG.debug("Creating document with properties: {}", cmisProperties);
+        log.debug("Creating document with properties: {}", cmisProperties);
         return parentFolder.createDocument(cmisProperties, contentStream, versioningState);
     }
 
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java
index fba33da..ddf9512 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java
@@ -38,13 +38,9 @@ import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class CryptoCmsComponent extends DefaultComponent {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CryptoCmsComponent.class);
-
     @Metadata(label = "advanced")
     private SignedDataVerifierConfiguration signedDataVerifierConfiguration;
 
@@ -110,7 +106,7 @@ public class CryptoCmsComponent extends DefaultComponent {
             processor = new EnvelopedDataDecryptor(config);
         } else {
             String error = "Endpoint uri " + uri + " is wrong configured. Operation " + scheme + " is not supported. Supported operations are: sign, verify, encrypt, decrypt";
-            LOG.error(error);
+            log.error(error);
             throw new IllegalStateException(error);
         }
         CryptoCmsEndpoint endpoint = new CryptoCmsEndpoint(uri, this, processor);
@@ -152,7 +148,7 @@ public class CryptoCmsComponent extends DefaultComponent {
     @Override
     protected void doStart() throws Exception { // NOPMD
         if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
-            LOG.debug("Adding BouncyCastleProvider as security provider");
+            log.debug("Adding BouncyCastleProvider as security provider");
             Security.addProvider(new BouncyCastleProvider());
         }
         super.doStart();
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsProducer.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsProducer.java
index 072a3a3..bd68bdd 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsProducer.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsProducer.java
@@ -22,7 +22,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultProducer;
 
 public class CryptoCmsProducer extends DefaultProducer {
-    // private static final Logger LOG =
+    // private static final Logger log =
     // LoggerFactory.getLogger(CmsProducer.class);
 
     private Processor processor;
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormat.java b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormat.java
index 6819440..fed56b3 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormat.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormat.java
@@ -46,7 +46,7 @@ public class PGPDataFormat extends PGPKeyAccessDataFormat implements PGPPublicKe
     public static final String SIGNATURE_KEY_RING = "CamelPGPDataFormatSignatureKeyRing";
     public static final String SIGNATURE_KEY_PASSWORD = "CamelPGPDataFormatSignatureKeyPassword";
 
-    //private static final Logger LOG = LoggerFactory.getLogger(PGPDataFormatChanged.class);
+    //private static final Logger log = LoggerFactory.getLogger(PGPDataFormatChanged.class);
 
     private String password; // only for decryption
     private String keyFileName;
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java
index a26b8d7..4233a23 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java
@@ -22,13 +22,9 @@ import org.apache.camel.util.ObjectHelper;
 import org.apache.cxf.BusFactory;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.blueprint.container.BlueprintContainer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class CxfBlueprintEndpoint extends CxfEndpoint {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CxfBlueprintEndpoint.class);
-
     private BlueprintContainer blueprintContainer;
     private BundleContext bundleContext;
     private BlueprintCamelContext blueprintCamelContext;
@@ -56,7 +52,7 @@ public class CxfBlueprintEndpoint extends CxfEndpoint {
 
     protected void checkName(Object value, String name) {
         if (ObjectHelper.isEmpty(value)) {
-            LOG.warn("The " + name + " of " + this.getEndpointUri() + " is empty, cxf will try to load the first one in wsdl for you.");
+            log.warn("The " + name + " of " + this.getEndpointUri() + " is empty, cxf will try to load the first one in wsdl for you.");
         }
     }
 
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
index 973e4e5..5c8833e 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
@@ -35,8 +35,6 @@ import org.slf4j.LoggerFactory;
  */
 public class CxfComponent extends HeaderFilterStrategyComponent implements SSLContextParametersAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CxfComponent.class);
-
     @Metadata(label = "advanced")
     private Boolean allowStreaming;
     @Metadata(label = "security", defaultValue = "false")
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
index ff6741b..512c0f7 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
@@ -48,8 +48,6 @@ import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.ws.addressing.ContextUtils;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Consumer of exchanges for a service in CXF.  CxfConsumer acts a CXF
@@ -60,7 +58,7 @@ import org.slf4j.LoggerFactory;
  * @version
  */
 public class CxfConsumer extends DefaultConsumer implements Suspendable {
-    private static final Logger LOG = LoggerFactory.getLogger(CxfConsumer.class);
+
     private Server server;
     private CxfEndpoint cxfEndpoint;
 
@@ -154,14 +152,14 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
 
         // we receive a CXF request when this method is called
         public Object invoke(Exchange cxfExchange, Object o) {
-            LOG.trace("Received CXF Request: {}", cxfExchange);
+            log.trace("Received CXF Request: {}", cxfExchange);
             Continuation continuation;
             if (!endpoint.isSynchronous() && isAsyncInvocationSupported(cxfExchange)
                 && (continuation = getContinuation(cxfExchange)) != null) {
-                LOG.trace("Calling the Camel async processors.");
+                log.trace("Calling the Camel async processors.");
                 return asyncInvoke(cxfExchange, continuation);
             } else {
-                LOG.trace("Calling the Camel sync processors.");
+                log.trace("Calling the Camel sync processors.");
                 return syncInvoke(cxfExchange);
             }
         }
@@ -175,7 +173,7 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
                     final org.apache.camel.Exchange camelExchange = prepareCamelExchange(cxfExchange);
 
                     // Now we don't set up the timeout value
-                    LOG.trace("Suspending continuation of exchangeId: {}", camelExchange.getExchangeId());
+                    log.trace("Suspending continuation of exchangeId: {}", camelExchange.getExchangeId());
 
                     // The continuation could be called before the suspend is called
                     continuation.suspend(cxfEndpoint.getContinuationTimeout());
@@ -187,7 +185,7 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
                         public void done(boolean doneSync) {
                             // make sure the continuation resume will not be called before the suspend method in other thread
                             synchronized (continuation) {
-                                LOG.trace("Resuming continuation of exchangeId: {}", camelExchange.getExchangeId());
+                                log.trace("Resuming continuation of exchangeId: {}", camelExchange.getExchangeId());
                                 // resume processing after both, sync and async callbacks
                                 continuation.resume();
                             }
@@ -236,14 +234,14 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
             org.apache.camel.Exchange camelExchange = prepareCamelExchange(cxfExchange);
             try {
                 try {
-                    LOG.trace("Processing +++ START +++");
+                    log.trace("Processing +++ START +++");
                     // send Camel exchange to the target processor
                     getProcessor().process(camelExchange);
                 } catch (Exception e) {
                     throw new Fault(e);
                 }
 
-                LOG.trace("Processing +++ END +++");
+                log.trace("Processing +++ END +++");
                 setResponseBack(cxfExchange, camelExchange);
             }  catch (Exception ex) {
                 doneUoW(camelExchange);
@@ -274,7 +272,7 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
 
             if (boi != null) {
                 camelExchange.setProperty(BindingOperationInfo.class.getName(), boi);
-                LOG.trace("Set exchange property: BindingOperationInfo: {}", boi);
+                log.trace("Set exchange property: BindingOperationInfo: {}", boi);
                 // set the message exchange patter with the boi
                 if (boi.getOperationInfo().isOneWay()) {
                     camelExchange.setPattern(ExchangePattern.InOnly);
@@ -288,7 +286,7 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
 
             // set data format mode in Camel exchange
             camelExchange.setProperty(CxfConstants.DATA_FORMAT_PROPERTY, dataFormat);
-            LOG.trace("Set Exchange property: {}={}", DataFormat.class.getName(), dataFormat);
+            log.trace("Set Exchange property: {}={}", DataFormat.class.getName(), dataFormat);
 
             camelExchange.setProperty(Message.MTOM_ENABLED, String.valueOf(endpoint.isMtomEnabled()));
 
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
index e24dc6e..0c25856 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
@@ -113,8 +113,6 @@ import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.staxutils.StaxSource;
 import org.apache.cxf.staxutils.StaxUtils;
 import org.apache.cxf.wsdl.WSDLManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The cxf component is used for SOAP WebServices using Apache CXF.
@@ -122,8 +120,6 @@ import org.slf4j.LoggerFactory;
 @UriEndpoint(firstVersion = "1.0.0", scheme = "cxf", title = "CXF", syntax = "cxf:beanId:address", consumerClass = CxfConsumer.class, label = "soap,webservice")
 public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, HeaderFilterStrategyAware, Service, Cloneable {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CxfEndpoint.class);
-
     @UriParam(label = "advanced")
     protected Bus bus;
 
@@ -323,7 +319,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
                 sfb.getFeatures().add(feature);
             }
         } else {
-            LOG.debug("Ignore DataFormat mode {} since SEI class is annotated with WebServiceProvider", getDataFormat());
+            log.debug("Ignore DataFormat mode {} since SEI class is annotated with WebServiceProvider", getDataFormat());
         }
 
         if (isLoggingFeatureEnabled()) {
@@ -351,7 +347,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
             } else {
                 sfb.setProperties(getProperties());
             }
-            LOG.debug("ServerFactoryBean: {} added properties: {}", sfb, getProperties());
+            log.debug("ServerFactoryBean: {} added properties: {}", sfb, getProperties());
         }
         if (this.isSkipPayloadMessagePartCheck()) {
             if (sfb.getProperties() == null) {
@@ -537,7 +533,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
             } else {
                 factoryBean.setProperties(getProperties());
             }
-            LOG.debug("ClientFactoryBean: {} added properties: {}", factoryBean, getProperties());
+            log.debug("ClientFactoryBean: {} added properties: {}", factoryBean, getProperties());
         }
 
         // setup the basic authentication property
@@ -641,7 +637,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
 
     void checkName(Object value, String name) {
         if (ObjectHelper.isEmpty(value)) {
-            LOG.warn("The " + name + " of " + this.getEndpointUri() + " is empty, cxf will try to load the first one in wsdl for you.");
+            log.warn("The " + name + " of " + this.getEndpointUri() + " is empty, cxf will try to load the first one in wsdl for you.");
         }
     }
 
@@ -952,12 +948,12 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         if (bus == null) {
             bus = CxfEndpointUtils.createBus(getCamelContext());
             this.createBus = true;
-            LOG.debug("Using DefaultBus {}", bus);
+            log.debug("Using DefaultBus {}", bus);
         }
 
         if (!getBusHasBeenCalled.getAndSet(true) && defaultBus) {
             BusFactory.setDefaultBus(bus);
-            LOG.debug("Set bus {} as thread default bus", bus);
+            log.debug("Set bus {} as thread default bus", bus);
         }
         return bus;
     }
@@ -1025,7 +1021,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
                                              this.properties);
             } catch (Throwable e) {
                 // TODO: Why dont't we rethrown this exception
-                LOG.warn("Error setting CamelContext. This exception will be ignored.", e);
+                log.warn("Error setting CamelContext. This exception will be ignored.", e);
             }
         }
     }
@@ -1050,7 +1046,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
                                              this.properties);
             } catch (Throwable e) {
                 // TODO: Why dont't we rethrown this exception
-                LOG.warn("Error setting properties. This exception will be ignored.", e);
+                log.warn("Error setting properties. This exception will be ignored.", e);
             }
         }
     }
@@ -1083,7 +1079,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
     protected void doStop() throws Exception {
         // we should consider to shutdown the bus if the bus is created by cxfEndpoint
         if (createBus && bus != null) {
-            LOG.info("shutdown the bus ... {}", bus);
+            log.info("shutdown the bus ... {}", bus);
             getBus().shutdown(false);
             // clean up the bus to create a new one if the endpoint is started again
             bus = null;
@@ -1263,7 +1259,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
                     }
                 } catch (XMLStreamException e) {
                     //ignore
-                    LOG.warn("Error finding the start element.", e);
+                    log.warn("Error finding the start element.", e);
                     return null;
                 }
                 return r.getLocalName();
@@ -1458,7 +1454,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         try {
             return new URI(uriString);
         } catch (URISyntaxException e) {
-            LOG.error("cannot determine request URI", e);
+            log.error("cannot determine request URI", e);
             return null;
         }
     }
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
index 3e02d69..7f31f44 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
@@ -47,8 +47,6 @@ import org.apache.cxf.message.Message;
 import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.transport.Conduit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * CxfProducer binds a Camel exchange to a CXF exchange, acts as a CXF 
@@ -58,7 +56,7 @@ import org.slf4j.LoggerFactory;
  * @version 
  */
 public class CxfProducer extends DefaultProducer implements AsyncProcessor {
-    private static final Logger LOG = LoggerFactory.getLogger(CxfProducer.class);
+
     private Client client;
     private CxfEndpoint endpoint;
 
@@ -112,7 +110,7 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
     // As the cxf client async and sync api is implement different,
     // so we don't delegate the sync process call to the async process 
     public boolean process(Exchange camelExchange, AsyncCallback callback) {
-        LOG.trace("Process exchange: {} in an async way.", camelExchange);
+        log.trace("Process exchange: {} in an async way.", camelExchange);
         
         try {
             // create CXF exchange
@@ -150,7 +148,7 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
      * invokes the CXF client.
      */
     public void process(Exchange camelExchange) throws Exception {
-        LOG.trace("Process exchange: {} in sync way.", camelExchange);
+        log.trace("Process exchange: {} in sync way.", camelExchange);
         
         // create CXF exchange
         ExchangeImpl cxfExchange = new ExchangeImpl();
@@ -182,7 +180,7 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
                         endpoint.getCookieHandler().storeCookies(camelExchange, endpoint.getRequestUri(camelExchange), cxfHeaders);
                     }
                 } catch (IOException e) {
-                    LOG.error("Cannot store cookies", e);
+                    log.error("Cannot store cookies", e);
                 }
             }
             // bind the CXF response to Camel exchange
@@ -203,7 +201,7 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
         // set data format mode in exchange
         DataFormat dataFormat = endpoint.getDataFormat();
         camelExchange.setProperty(CxfConstants.DATA_FORMAT_PROPERTY, dataFormat);   
-        LOG.trace("Set Camel Exchange property: {}={}", DataFormat.class.getName(), dataFormat);
+        log.trace("Set Camel Exchange property: {}={}", DataFormat.class.getName(), dataFormat);
         
         if (endpoint.getMergeProtocolHeaders()) {
             camelExchange.setProperty(CxfConstants.CAMEL_CXF_PROTOCOL_HEADERS_MERGED, Boolean.TRUE);
@@ -215,7 +213,7 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
         // don't let CXF ClientImpl close the input stream 
         if (dataFormat.dealias() == DataFormat.RAW) {
             cxfExchange.put(Client.KEEP_CONDUIT_ALIVE, true);
-            LOG.trace("Set CXF Exchange property: {}={}", Client.KEEP_CONDUIT_ALIVE, true);
+            log.trace("Set CXF Exchange property: {}={}", Client.KEEP_CONDUIT_ALIVE, true);
         }
      
         // bind the request CXF exchange
@@ -238,7 +236,7 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
                     requestContext.put(Message.PROTOCOL_HEADERS, transportHeaders);
                 }
             } catch (IOException e) {
-                LOG.warn("Cannot load cookies", e);
+                log.warn("Cannot load cookies", e);
             }
         }
 
@@ -264,13 +262,13 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
         
         // store the original boi in the exchange
         camelExchange.setProperty(BindingOperationInfo.class.getName(), boi);
-        LOG.trace("Set exchange property: BindingOperationInfo: {}", boi);
+        log.trace("Set exchange property: BindingOperationInfo: {}", boi);
 
         // Unwrap boi before passing it to make a client call
         if (endpoint.getDataFormat() != DataFormat.PAYLOAD && !endpoint.isWrapped() && boi != null) {
             if (boi.isUnwrappedCapable()) {
                 boi = boi.getUnwrappedOperation();
-                LOG.trace("Unwrapped BOI {}", boi);
+                log.trace("Unwrapped BOI {}", boi);
             }
         }
         return  boi;
@@ -367,10 +365,10 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
             params[0] = exchange.getIn().getBody();
         }
 
-        if (LOG.isTraceEnabled()) {
+        if (log.isTraceEnabled()) {
             if (params != null) {
                 for (int i = 0; i < params.length; i++) {
-                    LOG.trace("params[{}] = {}", i, params[i]);
+                    log.trace("params[{}] = {}", i, params[i]);
                 }
             }
         }
@@ -393,11 +391,11 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
         BindingOperationInfo answer = null;
         String lp = ex.getIn().getHeader(CxfConstants.OPERATION_NAME, String.class);
         if (lp == null) {
-            LOG.debug("CxfProducer cannot find the {} from message header, trying with defaultOperationName", CxfConstants.OPERATION_NAME);
+            log.debug("CxfProducer cannot find the {} from message header, trying with defaultOperationName", CxfConstants.OPERATION_NAME);
             lp = endpoint.getDefaultOperationName();
         }
         if (lp == null) {
-            LOG.debug("CxfProducer cannot find the {} from message header and there is no DefaultOperationName setting, CxfProducer will pick up the first available operation.",
+            log.debug("CxfProducer cannot find the {} from message header and there is no DefaultOperationName setting, CxfProducer will pick up the first available operation.",
                      CxfConstants.OPERATION_NAME);
             Collection<BindingOperationInfo> bois = 
                 client.getEndpoint().getEndpointInfo().getBinding().getOperations();
@@ -414,12 +412,12 @@ public class CxfProducer extends DefaultProducer implements AsyncProcessor {
             }
             if (ns == null) {
                 ns = client.getEndpoint().getService().getName().getNamespaceURI();
-                LOG.trace("Operation namespace not in header. Set it to: {}", ns);
+                log.trace("Operation namespace not in header. Set it to: {}", ns);
             }            
 
             QName qname = new QName(ns, lp);
 
-            LOG.trace("Operation qname = {}", qname);
+            log.trace("Operation qname = {}", qname);
             
             answer = client.getEndpoint().getEndpointInfo().getBinding().getOperation(qname);
             if (answer == null) {
diff --git a/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/SedaDisruptorCompareTest.java b/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/SedaDisruptorCompareTest.java
index b6fbb82..efac1b6 100644
--- a/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/SedaDisruptorCompareTest.java
+++ b/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/SedaDisruptorCompareTest.java
@@ -145,9 +145,9 @@ public class SedaDisruptorCompareTest extends CamelTestSupport {
         // It defines all parameters to the same values as the default, so the result should be the same as
         // 'seda:speedtest'. This shows that disruptor has a slight disadvantage as its name is longer than 'seda' :)
         // The reason why this test takes so long is because Camel has a SLF4J call in ProducerCache:
-        // LOG.debug(">>>> {} {}", endpoint, exchange);
+        // log.debug(">>>> {} {}", endpoint, exchange);
         // and the DefaultEndpoint.toString() method will use a Matcher to sanitize the URI.  There should be a guard
-        // before the debug() call to only evaluate the args when required: if(LOG.isDebugEnabled())...
+        // before the debug() call to only evaluate the args when required: if(log.isDebugEnabled())...
         if (SIZE_PARAMETER_VALUE == 0) {
             parameters
                 .add(new Object[] {"SEDA LONG {P=1, C=1, CCT=1, SIZE=0}",
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
index 75a169a..b3f2df9 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
@@ -31,7 +31,6 @@ import org.slf4j.LoggerFactory;
  * Represents the component that manages {@link DockerEndpoint}.
  */
 public class DockerComponent extends DefaultComponent {
-    private static final Logger LOG = LoggerFactory.getLogger(DockerComponent.class);
 
     @Metadata(label = "advanced")
     private DockerConfiguration configuration = new DockerConfiguration();
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java
index 7f28df7..09ff9e6 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/consumer/DockerEventsConsumer.java
@@ -31,11 +31,8 @@ import org.apache.camel.component.docker.DockerConstants;
 import org.apache.camel.component.docker.DockerEndpoint;
 import org.apache.camel.component.docker.DockerHelper;
 import org.apache.camel.impl.DefaultConsumer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class DockerEventsConsumer extends DefaultConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(DockerEventsConsumer.class);
 
     private DockerEndpoint endpoint;
     private DockerComponent component;
@@ -84,18 +81,18 @@ public class DockerEventsConsumer extends DefaultConsumer {
     protected class EventsCallback extends EventsResultCallback {
 
         public void onNext(Event event) {
-            LOG.debug("Received Docker Event: {}", event);
+            log.debug("Received Docker Event: {}", event);
 
             final Exchange exchange = getEndpoint().createExchange();
             Message message = exchange.getIn();
             message.setBody(event);
 
             try {
-                LOG.trace("Processing exchange [{}]...", exchange);
+                log.trace("Processing exchange [{}]...", exchange);
                 getAsyncProcessor().process(exchange, new AsyncCallback() {
                     @Override
                     public void done(boolean doneSync) {
-                        LOG.trace("Done processing exchange [{}]...", exchange);
+                        log.trace("Done processing exchange [{}]...", exchange);
                     }
                 });
             } catch (Exception e) {
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
index 7fcf5e1..042938f 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
@@ -27,8 +27,6 @@ import org.slf4j.LoggerFactory;
 
 public class DozerComponent extends DefaultComponent {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DozerComponent.class);
-
     public DozerComponent() {
     }
 
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
index 0ba1454..5561eb7 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
@@ -33,15 +33,12 @@ import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.util.ResourceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The dozer component provides the ability to map between Java beans using the Dozer mapping library.
  */
 @UriEndpoint(firstVersion = "2.15.0", scheme = "dozer", title = "Dozer", syntax = "dozer:name", producerOnly = true, label = "transformation")
 public class DozerEndpoint extends DefaultEndpoint {
-    private static final Logger LOG = LoggerFactory.getLogger(DozerEndpoint.class);
 
     // IDs for built-in custom converters used with the Dozer component
     private static final String CUSTOM_MAPPING_ID = "_customMapping";
@@ -117,7 +114,7 @@ public class DozerEndpoint extends DefaultEndpoint {
     }
 
     protected void initDozerBeanContainerAndMapper() throws Exception {
-        LOG.info("Configuring {}...", Mapper.class.getName());
+        log.info("Configuring {}...", Mapper.class.getName());
 
         if (mapper == null) {
             if (configuration.getMappingConfiguration() == null) {
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java
index 7050225..53e8402 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerProducer.java
@@ -23,16 +23,12 @@ import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.processor.MarshalProcessor;
 import org.apache.camel.processor.UnmarshalProcessor;
 import org.apache.camel.spi.DataFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Producer class for Dozer endpoints.
  */
 public class DozerProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DozerProducer.class);
-    
     private DozerEndpoint endpoint;
     private UnmarshalProcessor unmarshaller;
     private MarshalProcessor marshaller;
@@ -51,7 +47,7 @@ public class DozerProducer extends DefaultProducer {
         // Unmarshal the source content only if an unmarshaller is configured.
         String unmarshalId = endpoint.getConfiguration().getUnmarshalId();
         if (unmarshalId != null) {
-            LOG.debug("Unmarshalling input data using data format '{}'.", unmarshalId);
+            log.debug("Unmarshalling input data using data format '{}'.", unmarshalId);
             resolveUnmarshaller(exchange, unmarshalId).process(exchange);
             if (exchange.getException() != null) {
                 throw exchange.getException();
@@ -68,7 +64,7 @@ public class DozerProducer extends DefaultProducer {
         // Convert to source model, if specified
         String sourceType = endpoint.getConfiguration().getSourceModel();
         if (sourceType != null) {
-            LOG.debug("Converting to source model {}.", sourceType);
+            log.debug("Converting to source model {}.", sourceType);
             Class<?> sourceModel = endpoint.getCamelContext()
                     .getClassResolver().resolveClass(sourceType);
             if (sourceModel == null) {
@@ -78,7 +74,7 @@ public class DozerProducer extends DefaultProducer {
         }
         
         // Perform mappings
-        LOG.debug("Mapping to target model {}.", targetModel.getName());
+        log.debug("Mapping to target model {}.", targetModel.getName());
         Object targetObject = endpoint.getMapper().map(msg.getBody(), targetModel);
         // Second pass to process literal mappings
         endpoint.getMapper().map(endpoint.getVariableMapper(), targetObject);
@@ -96,7 +92,7 @@ public class DozerProducer extends DefaultProducer {
         // Marshal the source content only if a marshaller is configured.
         String marshalId = endpoint.getConfiguration().getMarshalId();
         if (marshalId != null) {
-            LOG.debug("Marshalling output data using data format '{}'.", marshalId);
+            log.debug("Marshalling output data using data format '{}'.", marshalId);
             resolveMarshaller(exchange, marshalId).process(exchange);
             if (exchange.getException() != null) {
                 throw exchange.getException();
diff --git a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/processor/aggregate/EhcacheAggregationRepository.java b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/processor/aggregate/EhcacheAggregationRepository.java
index 7c5af56..f9a1b90 100644
--- a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/processor/aggregate/EhcacheAggregationRepository.java
+++ b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/processor/aggregate/EhcacheAggregationRepository.java
@@ -30,11 +30,8 @@ import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.ehcache.Cache;
 import org.ehcache.CacheManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class EhcacheAggregationRepository extends ServiceSupport implements RecoverableAggregationRepository {
-    private static final Logger LOG = LoggerFactory.getLogger(EhcacheAggregationRepository.class);
 
     private CamelContext camelContext;
     private CacheManager cacheManager;
@@ -146,7 +143,7 @@ public class EhcacheAggregationRepository extends ServiceSupport implements Reco
 
     @Override
     public Exchange add(final CamelContext camelContext, final String key, final Exchange exchange) {
-        LOG.trace("Adding an Exchange with ID {} for key {} in a thread-safe manner.", exchange.getExchangeId(), key);
+        log.trace("Adding an Exchange with ID {} for key {} in a thread-safe manner.", exchange.getExchangeId(), key);
 
         final DefaultExchangeHolder oldHolder = cache.get(key);
         final DefaultExchangeHolder newHolder = DefaultExchangeHolder.marshal(exchange, true, allowSerializedHeaders);
@@ -163,13 +160,13 @@ public class EhcacheAggregationRepository extends ServiceSupport implements Reco
 
     @Override
     public void remove(CamelContext camelContext, String key, Exchange exchange) {
-        LOG.trace("Removing an exchange with ID {} for key {}", exchange.getExchangeId(), key);
+        log.trace("Removing an exchange with ID {} for key {}", exchange.getExchangeId(), key);
         cache.remove(key);
     }
 
     @Override
     public void confirm(CamelContext camelContext, String exchangeId) {
-        LOG.trace("Confirming an exchange with ID {}.", exchangeId);
+        log.trace("Confirming an exchange with ID {}.", exchangeId);
         cache.remove(exchangeId);
     }
 
@@ -183,15 +180,15 @@ public class EhcacheAggregationRepository extends ServiceSupport implements Reco
 
     @Override
     public Set<String> scan(CamelContext camelContext) {
-        LOG.trace("Scanning for exchanges to recover in {} context", camelContext.getName());
+        log.trace("Scanning for exchanges to recover in {} context", camelContext.getName());
         Set<String> scanned = Collections.unmodifiableSet(getKeys());
-        LOG.trace("Found {} keys for exchanges to recover in {} context", scanned.size(), camelContext.getName());
+        log.trace("Found {} keys for exchanges to recover in {} context", scanned.size(), camelContext.getName());
         return scanned;
     }
 
     @Override
     public Exchange recover(CamelContext camelContext, String exchangeId) {
-        LOG.trace("Recovering an Exchange with ID {}.", exchangeId);
+        log.trace("Recovering an Exchange with ID {}.", exchangeId);
         return useRecovery ? unmarshallExchange(camelContext, cache.get(exchangeId)) : null;
     }
 
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
index ac436da..475e298 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
@@ -44,8 +44,6 @@ import org.elasticsearch.client.sniff.Sniffer;
 import org.elasticsearch.client.sniff.SnifferBuilder;
 import org.elasticsearch.rest.RestStatus;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 
 /**
@@ -53,8 +51,6 @@ import org.slf4j.LoggerFactory;
  */
 public class ElasticsearchProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ElasticsearchProducer.class);
-
     protected final ElasticsearchConfiguration configuration;
     private RestClient client;
     private Sniffer sniffer;
@@ -240,12 +236,12 @@ public class ElasticsearchProducer extends DefaultProducer {
 
     private void startClient() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, UnknownHostException {
         if (client == null) {
-            LOG.info("Connecting to the ElasticSearch cluster: {}", configuration.getClusterName());
+            log.info("Connecting to the ElasticSearch cluster: {}", configuration.getClusterName());
             if (configuration.getHostAddressesList() != null
                 && !configuration.getHostAddressesList().isEmpty()) {
                 client = createClient();
             } else {
-                LOG.warn("Incorrect ip address and port parameters settings for ElasticSearch cluster");
+                log.warn("Incorrect ip address and port parameters settings for ElasticSearch cluster");
             }
         }
     }
@@ -277,7 +273,7 @@ public class ElasticsearchProducer extends DefaultProducer {
     @Override
     protected void doStop() throws Exception {
         if (client != null) {
-            LOG.info("Disconnecting from ElasticSearch cluster: {}", configuration.getClusterName());
+            log.info("Disconnecting from ElasticSearch cluster: {}", configuration.getClusterName());
             client.close();
             if (sniffer != null) {
                 sniffer.close();
diff --git a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlEndpoint.java b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlEndpoint.java
index 7b10470..6cc432e 100644
--- a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlEndpoint.java
+++ b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlEndpoint.java
@@ -39,9 +39,6 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.jdbc.core.namedparam.EmptySqlParameterSource;
 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 import org.springframework.jdbc.core.namedparam.SqlParameterSource;
 
@@ -52,8 +49,6 @@ import org.springframework.jdbc.core.namedparam.SqlParameterSource;
         label = "database,sql")
 public class ElsqlEndpoint extends DefaultSqlEndpoint {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ElsqlEndpoint.class);
-
     private ElSql elSql;
     private final NamedParameterJdbcTemplate namedJdbcTemplate;
 
@@ -86,7 +81,7 @@ public class ElsqlEndpoint extends DefaultSqlEndpoint {
         final Exchange dummy = createExchange();
         final SqlParameterSource param = new ElsqlSqlMapSource(dummy, null);
         final String sql = elSql.getSql(elsqlName, new SpringSqlParams(param));
-        LOG.debug("ElsqlConsumer @{} using sql: {}", elsqlName, sql);
+        log.debug("ElsqlConsumer @{} using sql: {}", elsqlName, sql);
 
         final ElsqlConsumer consumer = new ElsqlConsumer(this, processor, namedJdbcTemplate, sql, param, preStategy, proStrategy);
         consumer.setMaxMessagesPerPoll(getMaxMessagesPerPoll());
diff --git a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlProducer.java b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlProducer.java
index 58feb1d..fae9239 100644
--- a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlProducer.java
+++ b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlProducer.java
@@ -33,8 +33,6 @@ import org.apache.camel.component.sql.SqlConstants;
 import org.apache.camel.component.sql.SqlOutputType;
 import org.apache.camel.component.sql.SqlPrepareStatementStrategy;
 import org.apache.camel.impl.DefaultProducer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.PreparedStatementCallback;
 import org.springframework.jdbc.core.PreparedStatementCreator;
@@ -51,7 +49,6 @@ import static org.springframework.jdbc.support.JdbcUtils.closeStatement;
 
 public class ElsqlProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ElsqlProducer.class);
     private final ElSql elSql;
     private final String elSqlName;
     private final NamedParameterJdbcTemplate jdbcTemplate;
@@ -81,7 +78,7 @@ public class ElsqlProducer extends DefaultProducer {
 
         final SqlParameterSource param = new ElsqlSqlMapSource(exchange, data);
         final String sql = elSql.getSql(elSqlName, new SpringSqlParams(param));
-        LOG.debug("ElsqlProducer @{} using sql: {}", elSqlName, sql);
+        log.debug("ElsqlProducer @{} using sql: {}", elSqlName, sql);
 
         // special for processing stream list (batch not supported)
         final SqlOutputType outputType = getEndpoint().getOutputType();
diff --git a/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminConsumer.java b/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminConsumer.java
index a8d6b0f..86586c8 100644
--- a/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminConsumer.java
+++ b/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminConsumer.java
@@ -25,12 +25,9 @@ import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.event.Event;
 import org.osgi.service.event.EventConstants;
 import org.osgi.service.event.EventHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class EventAdminConsumer extends DefaultConsumer implements EventHandler {
 
-    private static final Logger LOG = LoggerFactory.getLogger(EventAdminConsumer.class);
     private final EventAdminEndpoint endpoint;
     private ServiceRegistration<?> registration;
 
@@ -44,7 +41,7 @@ public class EventAdminConsumer extends DefaultConsumer implements EventHandler
         // TODO: populate exchange headers
         exchange.getIn().setBody(event);
 
-        LOG.trace("EventAdmin {} is firing", endpoint.getTopic());
+        log.trace("EventAdmin {} is firing", endpoint.getTopic());
         try {
             getProcessor().process(exchange);
             // log exception if an exception occurred and was not handled
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookConsumer.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookConsumer.java
index a1d0020..3c2d03c 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookConsumer.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookConsumer.java
@@ -42,8 +42,7 @@ import org.apache.camel.component.facebook.data.FacebookPropertiesHelper;
 import org.apache.camel.component.facebook.data.ReadingBuilder;
 import org.apache.camel.impl.ScheduledPollConsumer;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
 import static org.apache.camel.component.facebook.FacebookConstants.FACEBOOK_DATE_FORMAT;
 import static org.apache.camel.component.facebook.FacebookConstants.READING_PREFIX;
 import static org.apache.camel.component.facebook.FacebookConstants.READING_PROPERTY;
@@ -57,7 +56,6 @@ import static org.apache.camel.component.facebook.data.FacebookMethodsTypeHelper
  */
 public class FacebookConsumer extends ScheduledPollConsumer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(FacebookConsumer.class);
     private static final String SINCE_PREFIX = "since=";
 
     private final FacebookEndpoint endpoint;
@@ -96,10 +94,10 @@ public class FacebookConsumer extends ScheduledPollConsumer {
                 } catch (UnsupportedEncodingException e) {
                     throw new RuntimeCamelException(String.format("Error decoding %s.since with value %s due to: %s", READING_PREFIX, strSince, e.getMessage()), e);
                 }
-                LOG.debug("Using supplied property {}since value {}", READING_PREFIX, this.sinceTime);
+                log.debug("Using supplied property {}since value {}", READING_PREFIX, this.sinceTime);
             }
             if (queryString.contains("until=")) {
-                LOG.debug("Overriding configured property {}until", READING_PREFIX);
+                log.debug("Overriding configured property {}until", READING_PREFIX);
             }
         }
         this.endpointProperties = Collections.unmodifiableMap(properties);
@@ -135,7 +133,7 @@ public class FacebookConsumer extends ScheduledPollConsumer {
             result = filteredMethods.get(0);
         } else {
             result = getHighestPriorityMethod(filteredMethods);
-            LOG.warn("Using highest priority method {} from methods {}", method, filteredMethods);
+            log.warn("Using highest priority method {} from methods {}", method, filteredMethods);
         }
         return result;
     }
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookEndpoint.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookEndpoint.java
index 38d291c..3ff4cd1 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookEndpoint.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookEndpoint.java
@@ -38,8 +38,6 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.facebook.data.FacebookMethodsTypeHelper.convertToGetMethod;
 import static org.apache.camel.component.facebook.data.FacebookMethodsTypeHelper.convertToSearchMethod;
@@ -56,8 +54,6 @@ import static org.apache.camel.component.facebook.data.FacebookPropertiesHelper.
 @UriEndpoint(firstVersion = "2.14.0", scheme = "facebook", title = "Facebook", syntax = "facebook:methodName", consumerClass = FacebookConsumer.class, label = "social")
 public class FacebookEndpoint extends DefaultEndpoint implements FacebookConstants {
 
-    private static final Logger LOG = LoggerFactory.getLogger(FacebookEndpoint.class);
-
     private FacebookNameStyle nameStyle;
 
     @UriPath(name = "methodName", description = "What operation to perform") @Metadata(required = "true")
@@ -165,10 +161,10 @@ public class FacebookEndpoint extends DefaultEndpoint implements FacebookConstan
         }
 
         // log missing/extra properties for debugging
-        if (LOG.isDebugEnabled()) {
+        if (log.isDebugEnabled()) {
             final Set<String> missing = getMissingProperties(method, nameStyle, arguments);
             if (!missing.isEmpty()) {
-                LOG.debug("Method {} could use one or more properties from {}", method, missing);
+                log.debug("Method {} could use one or more properties from {}", method, missing);
             }
         }
     }
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java
index 615a994..7f8bb00 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java
@@ -25,13 +25,9 @@ import org.apache.camel.impl.ScheduledPollConsumer;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public abstract class AbstractGitConsumer extends ScheduledPollConsumer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractGitConsumer.class);
-
     private final GitEndpoint endpoint;
 
     private Repository repo;
@@ -65,7 +61,7 @@ public abstract class AbstractGitConsumer extends ScheduledPollConsumer {
                     .findGitDir() // scan up the file system tree
                     .build();
         } catch (IOException e) {
-            LOG.error("There was an error, cannot open {} repository", endpoint.getLocalPath());
+            log.error("There was an error, cannot open {} repository", endpoint.getLocalPath());
             throw e;
         }
         return repo;
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
index ccea8729..71f8b6a 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
@@ -47,14 +47,10 @@ import org.eclipse.jgit.transport.PushResult;
 import org.eclipse.jgit.transport.RemoteConfig;
 import org.eclipse.jgit.transport.URIish;
 import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 
 public class GitProducer extends DefaultProducer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(GitProducer.class);
-
     private final GitEndpoint endpoint;
 
     private Repository repo;
@@ -209,7 +205,7 @@ public class GitProducer extends DefaultProducer {
                 throw new IllegalArgumentException("The local repository directory already exists");
             }
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         } finally {
             if (ObjectHelper.isNotEmpty(result)) {
@@ -226,7 +222,7 @@ public class GitProducer extends DefaultProducer {
         try {
             result = Git.init().setDirectory(new File(endpoint.getLocalPath(), "")).setBare(false).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         } finally {
             if (ObjectHelper.isNotEmpty(result)) {
@@ -248,7 +244,7 @@ public class GitProducer extends DefaultProducer {
             }
             git.add().addFilepattern(fileName).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -266,7 +262,7 @@ public class GitProducer extends DefaultProducer {
             }
             git.rm().addFilepattern(fileName).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -300,7 +296,7 @@ public class GitProducer extends DefaultProducer {
                 git.commit().setAllowEmpty(allowEmpty).setMessage(commitMessage).call();
             }
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -334,7 +330,7 @@ public class GitProducer extends DefaultProducer {
                 git.commit().setAllowEmpty(allowEmpty).setAll(true).setMessage(commitMessage).call();
             }
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -346,7 +342,7 @@ public class GitProducer extends DefaultProducer {
         try {
             git.branchCreate().setName(endpoint.getBranchName()).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -358,7 +354,7 @@ public class GitProducer extends DefaultProducer {
         try {
             git.branchDelete().setBranchNames(endpoint.getBranchName()).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -371,7 +367,7 @@ public class GitProducer extends DefaultProducer {
             }
             status = git.status().call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, status);
@@ -385,7 +381,7 @@ public class GitProducer extends DefaultProducer {
             }
             revCommit = git.log().call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, revCommit);
@@ -407,7 +403,7 @@ public class GitProducer extends DefaultProducer {
                 result = git.push().setRemote(endpoint.getRemoteName()).call();
             }
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -429,7 +425,7 @@ public class GitProducer extends DefaultProducer {
                 result = git.push().setRemote(endpoint.getRemoteName()).add(Constants.R_TAGS + endpoint.getTagName()).call();
             }
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -451,7 +447,7 @@ public class GitProducer extends DefaultProducer {
                 result = git.pull().setRemote(endpoint.getRemoteName()).call();
             }
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -468,7 +464,7 @@ public class GitProducer extends DefaultProducer {
             git.checkout().setName("master").call();
             result = git.merge().include(mergeBase).setFastForward(FastForwardMode.FF).setCommit(true).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -481,7 +477,7 @@ public class GitProducer extends DefaultProducer {
         try {
             git.tag().setName(endpoint.getTagName()).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -493,7 +489,7 @@ public class GitProducer extends DefaultProducer {
         try {
             git.tagDelete().setTags(endpoint.getTagName()).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
     }
@@ -503,7 +499,7 @@ public class GitProducer extends DefaultProducer {
         try {
             result = git.branchList().setListMode(ListMode.ALL).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -514,7 +510,7 @@ public class GitProducer extends DefaultProducer {
         try {
             result = git.tagList().call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -538,7 +534,7 @@ public class GitProducer extends DefaultProducer {
             }
             result = git.cherryPick().include(commit).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -552,7 +548,7 @@ public class GitProducer extends DefaultProducer {
             }
             result = git.clean().setCleanDirectories(true).call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -563,7 +559,7 @@ public class GitProducer extends DefaultProducer {
         try {
             result = git.gc().call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -583,7 +579,7 @@ public class GitProducer extends DefaultProducer {
             remoteAddCommand.setName(endpoint.getRemoteName());
             result = remoteAddCommand.call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -594,7 +590,7 @@ public class GitProducer extends DefaultProducer {
         try {
             result = git.remoteList().call();
         } catch (Exception e) {
-            LOG.error("There was an error in Git {} operation", operation);
+            log.error("There was an error in Git {} operation", operation);
             throw e;
         }
         updateExchange(exchange, result);
@@ -611,7 +607,7 @@ public class GitProducer extends DefaultProducer {
                 .findGitDir() // scan up the file system tree
                 .build();
         } catch (IOException e) {
-            LOG.error("There was an error, cannot open {} repository", endpoint.getLocalPath());
+            log.error("There was an error, cannot open {} repository", endpoint.getLocalPath());
             throw e;
         }
         return repo;
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
index 5c31853..eb43131 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
@@ -34,15 +34,12 @@ import org.apache.camel.Processor;
 import org.apache.camel.impl.ScheduledBatchPollingConsumer;
 import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The GoogleCalendar consumer.
  */
 public class GoogleCalendarStreamConsumer extends ScheduledBatchPollingConsumer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(GoogleCalendarStreamConsumer.class);
     private DateTime lastUpdate;
 
     public GoogleCalendarStreamConsumer(Endpoint endpoint, Processor processor) {
@@ -133,7 +130,7 @@ public class GoogleCalendarStreamConsumer extends ScheduledBatchPollingConsumer
             getAsyncProcessor().process(exchange, new AsyncCallback() {
                 @Override
                 public void done(boolean doneSync) {
-                    LOG.trace("Processing exchange done");
+                    log.trace("Processing exchange done");
                 }
             });
         }
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java
index eab297b..35e89d8 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java
@@ -48,8 +48,6 @@ import org.slf4j.LoggerFactory;
              label = "api,cloud")
 public class GoogleCalendarStreamEndpoint extends ScheduledPollEndpoint {
     
-    private static final Logger LOG = LoggerFactory.getLogger(GoogleCalendarStreamEndpoint.class);
-
     @UriParam
     private GoogleCalendarStreamConfiguration configuration;
 
diff --git a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraConsumer.java b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraConsumer.java
index 63afa93..174a34c 100644
--- a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraConsumer.java
+++ b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraConsumer.java
@@ -27,8 +27,6 @@ import org.apache.gora.persistency.Persistent;
 import org.apache.gora.query.Query;
 import org.apache.gora.query.Result;
 import org.apache.gora.store.DataStore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Implementation of Camel-Gora {@link Consumer}.
@@ -36,11 +34,6 @@ import org.slf4j.LoggerFactory;
 public class GoraConsumer extends ScheduledPollConsumer {
 
     /**
-     * logger
-     */
-    private static final Logger LOG = LoggerFactory.getLogger(GoraConsumer.class);
-
-    /**
      * GORA datastore
      */
     private final DataStore<Object, Persistent> dataStore;
@@ -94,7 +87,7 @@ public class GoraConsumer extends ScheduledPollConsumer {
         //proceed with query
         final Result result = query.execute();
 
-        LOG.trace("Processing exchange [{}]...", exchange);
+        log.trace("Processing exchange [{}]...", exchange);
 
         try {
             getProcessor().process(exchange);
diff --git a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java
index 80c4848..4eae170 100644
--- a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java
+++ b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java
@@ -35,11 +35,6 @@ import static org.apache.camel.component.gora.utils.GoraUtils.getValueFromExchan
 public class GoraProducer extends DefaultProducer {
 
     /**
-     * logger
-     */
-    private static final Logger LOG = LoggerFactory.getLogger(GoraProducer.class);
-
-    /**
      * Camel-Gora endpoint configuration
      */
     private final GoraConfiguration configuration;
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java
index dfe717f..7f53c15 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java
@@ -41,14 +41,11 @@ import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Represents gRPC server consumer implementation
  */
 public class GrpcConsumer extends DefaultConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(GrpcConsumer.class);
 
     protected final GrpcConfiguration configuration;
     protected final GrpcEndpoint endpoint;
@@ -69,17 +66,17 @@ public class GrpcConsumer extends DefaultConsumer {
     protected void doStart() throws Exception {
         super.doStart();
         if (server == null) {
-            LOG.info("Starting the gRPC server");
+            log.info("Starting the gRPC server");
             initializeServer();
             server.start();
-            LOG.info("gRPC server started and listening on port: {}", server.getPort());
+            log.info("gRPC server started and listening on port: {}", server.getPort());
         }
     }
 
     @Override
     protected void doStop() throws Exception {
         if (server != null) {
-            LOG.debug("Terminating gRPC server");
+            log.debug("Terminating gRPC server");
             server.shutdown().shutdownNow();
             server = null;
         }
@@ -101,7 +98,7 @@ public class GrpcConsumer extends DefaultConsumer {
         }
         
         if (!ObjectHelper.isEmpty(configuration.getHost()) && !ObjectHelper.isEmpty(configuration.getPort())) {
-            LOG.debug("Building gRPC server on {}:{}", configuration.getHost(), configuration.getPort());
+            log.debug("Building gRPC server on {}:{}", configuration.getHost(), configuration.getPort());
             serverBuilder = NettyServerBuilder.forAddress(new InetSocketAddress(configuration.getHost(), configuration.getPort()));
         } else {
             throw new IllegalArgumentException("No server start properties (host, port) specified");
@@ -173,7 +170,7 @@ public class GrpcConsumer extends DefaultConsumer {
             });
             return false;
         } else {
-            LOG.warn("Consumer not ready to process exchanges. The exchange {} will be discarded", exchange);
+            log.warn("Consumer not ready to process exchanges. The exchange {} will be discarded", exchange);
             callback.done(true);
             return true;
         }
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java
index a411f8e..2e9867a 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java
@@ -40,14 +40,11 @@ import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Represents asynchronous and synchronous gRPC producer implementations.
  */
 public class GrpcProducer extends DefaultProducer implements AsyncProcessor {
-    private static final Logger LOG = LoggerFactory.getLogger(GrpcProducer.class);
 
     protected final GrpcConfiguration configuration;
     protected final GrpcEndpoint endpoint;
@@ -110,10 +107,10 @@ public class GrpcProducer extends DefaultProducer implements AsyncProcessor {
             }
             
             if (endpoint.isSynchronous()) {
-                LOG.debug("Getting synchronous method stub from channel");
+                log.debug("Getting synchronous method stub from channel");
                 grpcStub = GrpcUtils.constructGrpcBlockingStub(endpoint.getServicePackage(), endpoint.getServiceName(), channel, callCreds, endpoint.getCamelContext());
             } else {
-                LOG.debug("Getting asynchronous method stub from channel");
+                log.debug("Getting asynchronous method stub from channel");
                 grpcStub = GrpcUtils.constructGrpcAsyncStub(endpoint.getServicePackage(), endpoint.getServiceName(), channel, callCreds, endpoint.getCamelContext());
             }
             forwarder = GrpcExchangeForwarderFactory.createExchangeForwarder(configuration, grpcStub);
@@ -130,7 +127,7 @@ public class GrpcProducer extends DefaultProducer implements AsyncProcessor {
             forwarder.shutdown();
             forwarder = null;
 
-            LOG.debug("Terminating channel to the remote gRPC server");
+            log.debug("Terminating channel to the remote gRPC server");
             channel.shutdown().shutdownNow();
             channel = null;
             grpcStub = null;
@@ -143,7 +140,7 @@ public class GrpcProducer extends DefaultProducer implements AsyncProcessor {
         NettyChannelBuilder channelBuilder = null;
         
         if (!ObjectHelper.isEmpty(configuration.getHost()) && !ObjectHelper.isEmpty(configuration.getPort())) {
-            LOG.info("Creating channel to the remote gRPC server {}:{}", configuration.getHost(), configuration.getPort());
+            log.info("Creating channel to the remote gRPC server {}:{}", configuration.getHost(), configuration.getPort());
             channelBuilder = NettyChannelBuilder.forAddress(configuration.getHost(), configuration.getPort());
         } else {
             throw new IllegalArgumentException("No connection properties (host or port) specified");
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueConsumer.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueConsumer.java
index b2cb56c..5c71509 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueConsumer.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueConsumer.java
@@ -27,12 +27,9 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.hazelcast.HazelcastDefaultConsumer;
 import org.apache.camel.component.hazelcast.listener.CamelItemListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class HazelcastQueueConsumer extends HazelcastDefaultConsumer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(HazelcastQueueConsumer.class);
     private final Processor processor;
     private ExecutorService executor;
     private QueueConsumerTask queueConsumerTask;
@@ -95,8 +92,8 @@ public class HazelcastQueueConsumer extends HazelcastDefaultConsumer {
                             getExceptionHandler().handleException("Error during processing", exchange, e);
                         }
                     } catch (InterruptedException e) {
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("Hazelcast Queue Consumer Interrupted: {}", e, e);
+                        if (log.isDebugEnabled()) {
+                            log.debug("Hazelcast Queue Consumer Interrupted: {}", e, e);
                             continue;
                         }
                     }
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaConsumer.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaConsumer.java
index 95183d7..0b6633a 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaConsumer.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaConsumer.java
@@ -31,15 +31,12 @@ import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.impl.DefaultExchangeHolder;
 import org.apache.camel.util.AsyncProcessorConverterHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Implementation of Hazelcast SEDA {@link Consumer} component.
  */
 public class HazelcastSedaConsumer extends DefaultConsumer implements Runnable {
 
-    private static final Logger LOG = LoggerFactory.getLogger(HazelcastSedaConsumer.class);
     private final HazelcastSedaEndpoint endpoint;
     private final AsyncProcessor processor;
     private ExecutorService executor;
@@ -114,7 +111,7 @@ public class HazelcastSedaConsumer extends DefaultConsumer implements Runnable {
                         }
 
                     } catch (Exception e) {
-                        LOG.error("Hzlq Exception caught: {}", e, e);
+                        log.error("Hzlq Exception caught: {}", e, e);
                         // Rollback
                         if (transactionCtx != null) {
                             log.trace("Rollback transaction: {}", transactionCtx.getTxnId());
@@ -128,8 +125,8 @@ public class HazelcastSedaConsumer extends DefaultConsumer implements Runnable {
                     transactionCtx.commitTransaction();
                 }
             } catch (InterruptedException e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Hzlq Consumer Interrupted: {}", e, e);
+                if (log.isDebugEnabled()) {
+                    log.debug("Hzlq Consumer Interrupted: {}", e, e);
                 }
                 continue;
             } catch (Throwable e) {
diff --git a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java
index 10983c7..209e38d 100644
--- a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java
+++ b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java
@@ -41,16 +41,12 @@ import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.filter.Filter;
 import org.apache.hadoop.hbase.filter.FilterList;
 import org.apache.hadoop.hbase.filter.PageFilter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The HBase consumer.
  */
 public class HBaseConsumer extends ScheduledBatchPollingConsumer {
 
-    private static final Logger LOG = LoggerFactory.getLogger(HBaseConsumer.class);
-
     private final HBaseEndpoint endpoint;
     private HBaseRow rowModel;
 
@@ -154,7 +150,7 @@ public class HBaseConsumer extends ScheduledBatchPollingConsumer {
 
         // limit if needed
         if (maxMessagesPerPoll > 0 && total > maxMessagesPerPoll) {
-            LOG.debug("Limiting to maximum messages to poll {} as there were {} messages in this poll.", maxMessagesPerPoll, total);
+            log.debug("Limiting to maximum messages to poll {} as there were {} messages in this poll.", maxMessagesPerPoll, total);
             total = maxMessagesPerPoll;
         }
 
@@ -169,7 +165,7 @@ public class HBaseConsumer extends ScheduledBatchPollingConsumer {
             // update pending number of exchanges
             pendingExchanges = total - index - 1;
 
-            LOG.trace("Processing exchange [{}]...", exchange);
+            log.trace("Processing exchange [{}]...", exchange);
             getProcessor().process(exchange);
             if (exchange.getException() != null) {
                 // if we failed then throw exception
diff --git a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/processor/idempotent/HBaseIdempotentRepository.java b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/processor/idempotent/HBaseIdempotentRepository.java
index 92d0198..f5527c9 100644
--- a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/processor/idempotent/HBaseIdempotentRepository.java
+++ b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/processor/idempotent/HBaseIdempotentRepository.java
@@ -32,13 +32,9 @@ import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.ResultScanner;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.client.Table;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class HBaseIdempotentRepository extends ServiceSupport implements IdempotentRepository<Object> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(HBaseIdempotentRepository.class);
-
     private final String tableName;
     private final String family;
     private final String qualifier;
@@ -69,7 +65,7 @@ public class HBaseIdempotentRepository extends ServiceSupport implements Idempot
                 return true;
             }
         } catch (Exception e) {
-            LOG.warn("Error adding object {} to HBase repository.", o);
+            log.warn("Error adding object {} to HBase repository.", o);
             return false;
         }
     }
@@ -82,7 +78,7 @@ public class HBaseIdempotentRepository extends ServiceSupport implements Idempot
             get.addColumn(HBaseHelper.getHBaseFieldAsBytes(family), HBaseHelper.getHBaseFieldAsBytes(qualifier));
             return table.exists(get);
         } catch (Exception e) {
-            LOG.warn("Error reading object {} from HBase repository.", o);
+            log.warn("Error reading object {} from HBase repository.", o);
             return false;
         }
     }
@@ -99,7 +95,7 @@ public class HBaseIdempotentRepository extends ServiceSupport implements Idempot
                 return false;
             }
         } catch (Exception e) {
-            LOG.warn("Error removing object {} from HBase repository.", o);
+            log.warn("Error removing object {} from HBase repository.", o);
             return false;
         }
     }
@@ -120,7 +116,7 @@ public class HBaseIdempotentRepository extends ServiceSupport implements Idempot
                 table.delete(d);
             } 
         } catch (Exception e) {
-            LOG.warn("Error clear HBase repository {}", table);
+            log.warn("Error clear HBase repository {}", table);
         }
     }    
 
diff --git a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java
index 3e3f835..71bc882 100644
--- a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java
+++ b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java
@@ -23,8 +23,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Represents the component that manages {@link HipchatEndpoint}. Hipchat is an Atlassian software for team chat.
@@ -36,8 +34,6 @@ import org.slf4j.LoggerFactory;
  */
 public class HipchatComponent extends DefaultComponent {
 
-    private static final Logger LOG = LoggerFactory.getLogger(HipchatComponent.class);
-
     public HipchatComponent() {
     }
 
@@ -52,7 +48,7 @@ public class HipchatComponent extends DefaultComponent {
             throw new HipchatException("OAuth 2 auth token must be specified");
         }
         parseUri(remaining, endpoint);
-        LOG.debug("Using Hipchat API URL: {}", endpoint.getConfiguration().hipChatUrl());
+        log.debug("Using Hipchat API URL: {}", endpoint.getConfiguration().hipChatUrl());
         return endpoint;
     }
 
diff --git a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatConsumer.java b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatConsumer.java
index 8947729..e8c9535 100644
--- a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatConsumer.java
+++ b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatConsumer.java
@@ -32,15 +32,12 @@ import org.apache.camel.impl.ScheduledPollConsumer;
 import org.apache.camel.util.URISupport;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The Hipchat consumer consumes messages from a list of users.
  */
 public class HipchatConsumer extends ScheduledPollConsumer {
     public static final long DEFAULT_CONSUMER_DELAY = 5 * 1000;
-    private static final Logger LOG = LoggerFactory.getLogger(HipchatConsumer.class);
     private static final MapType MAP_TYPE = TypeFactory.defaultInstance().constructMapType(Map.class, String.class, Object.class);
     private static final ObjectMapper MAPPER = new ObjectMapper();
     
@@ -63,7 +60,7 @@ public class HipchatConsumer extends ScheduledPollConsumer {
 
     private void processExchangeForUser(String user, Exchange exchange) throws Exception {
         String urlPath = String.format(getMostRecentMessageUrl(), user);
-        LOG.debug("Polling HipChat Api " + urlPath + " for new messages at " + Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime());
+        log.debug("Polling HipChat Api " + urlPath + " for new messages at " + Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime());
         HttpGet httpGet = new HttpGet(getConfig().hipChatUrl() + urlPath);
         CloseableHttpResponse response = executeGet(httpGet);
         exchange.getIn().setHeader(HipchatConstants.FROM_USER, user);
@@ -73,7 +70,7 @@ public class HipchatConsumer extends ScheduledPollConsumer {
     private void processApiResponse(Exchange exchange, CloseableHttpResponse response) throws Exception {
         try {
             Map<String, Object> jsonMap = MAPPER.readValue(response.getEntity().getContent(), MAP_TYPE);
-            LOG.debug("Hipchat response " + response + ", json: " + MAPPER.writeValueAsString(jsonMap));
+            log.debug("Hipchat response " + response + ", json: " + MAPPER.writeValueAsString(jsonMap));
             if (jsonMap != null && jsonMap.size() > 0) {
                 List<Map<String, Object>> items = (List<Map<String, Object>>) jsonMap.get(HipchatApiConstants.API_ITEMS);
                 if (items != null && items.size() > 0) {
@@ -81,7 +78,7 @@ public class HipchatConsumer extends ScheduledPollConsumer {
                         Map<String, Object> item = items.get(0);
                         String date = (String) item.get(HipchatApiConstants.API_DATE);
                         String message = (String) item.get(HipchatApiConstants.API_MESSAGE);
-                        LOG.debug("Setting exchange body: " + message + ", header " + HipchatConstants.MESSAGE_DATE + ": " + date);
+                        log.debug("Setting exchange body: " + message + ", header " + HipchatConstants.MESSAGE_DATE + ": " + date);
                         exchange.getIn().setHeader(HipchatConstants.FROM_USER_RESPONSE_STATUS, response.getStatusLine());
                         exchange.getIn().setHeader(HipchatConstants.MESSAGE_DATE, date);
                         exchange.getIn().setBody(message);
diff --git a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatProducer.java b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatProducer.java
index 125980b..7200d8b 100644
--- a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatProducer.java
+++ b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatProducer.java
@@ -32,8 +32,6 @@ import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.ContentType;
 import org.apache.http.entity.StringEntity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.util.UnsafeUriCharactersEncoder.encodeHttpURI;
 
@@ -41,7 +39,7 @@ import static org.apache.camel.util.UnsafeUriCharactersEncoder.encodeHttpURI;
  * The Hipchat producer to send message to a user and/or a room.
  */
 public class HipchatProducer extends DefaultProducer {
-    private static final Logger LOG = LoggerFactory.getLogger(HipchatProducer.class);
+
     private static final ObjectMapper MAPPER = new ObjectMapper();
     
     private transient String hipchatProducerToString;
@@ -69,18 +67,18 @@ public class HipchatProducer extends DefaultProducer {
         if (backGroundColor != null) {
             jsonParam.put(HipchatApiConstants.API_MESSAGE_COLOR, backGroundColor);
         }
-        LOG.info("Sending message to room: " + room + ", " + MAPPER.writeValueAsString(jsonParam));
+        log.info("Sending message to room: " + room + ", " + MAPPER.writeValueAsString(jsonParam));
         StatusLine statusLine = post(encodeHttpURI(urlPath), jsonParam);
-        LOG.debug("Response status for send room message: {}", statusLine);
+        log.debug("Response status for send room message: {}", statusLine);
         return statusLine;
     }
 
     private StatusLine sendUserMessage(String user, Exchange exchange) throws IOException, InvalidPayloadException {
         String urlPath = String.format(getConfig().withAuthToken(HipchatApiConstants.URI_PATH_USER_MESSAGE), user);
         Map<String, String> jsonParam = getCommonHttpPostParam(exchange);
-        LOG.info("Sending message to user: " + user + ", " + MAPPER.writeValueAsString(jsonParam));
+        log.info("Sending message to user: " + user + ", " + MAPPER.writeValueAsString(jsonParam));
         StatusLine statusLine = post(urlPath, jsonParam);
-        LOG.debug("Response status for send user message: {}", statusLine);
+        log.debug("Response status for send user message: {}", statusLine);
         return statusLine;
     }
 
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
index 45fe267..d13d15e 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
@@ -62,8 +62,6 @@ import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.ssl.SSLContexts;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Defines the <a href="http://camel.apache.org/http4.html">HTTP4
@@ -74,8 +72,6 @@ import org.slf4j.LoggerFactory;
 @Metadata(label = "verifiers", enums = "parameters,connectivity")
 public class HttpComponent extends HttpCommonComponent implements RestProducerFactory, SSLContextParametersAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(HttpComponent.class);
-
     @Metadata(label = "advanced", description = "To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used.")
     protected HttpClientConfigurer httpClientConfigurer;
     @Metadata(label = "advanced", description = "To use a custom and shared HttpClientConnectionManager to manage connections."
@@ -275,7 +271,7 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         // create the endpoint and set the http uri to be null
         String endpointUriString = endpointUri.toString();
 
-        LOG.debug("Creating endpoint uri {}", endpointUriString);
+        log.debug("Creating endpoint uri {}", endpointUriString);
         final HttpClientConnectionManager localConnectionManager = createConnectionManager(parameters, sslContextParameters);
         HttpEndpoint endpoint = new HttpEndpoint(endpointUriString, this, clientBuilder, localConnectionManager, configurer);
 
@@ -407,7 +403,7 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         if (localConnectionsPerRoute > 0) {
             answer.setDefaultMaxPerRoute(localConnectionsPerRoute);
         }
-        LOG.info("Created ClientConnectionManager {}", answer);
+        log.info("Created ClientConnectionManager {}", answer);
 
         return answer;
     }
@@ -664,7 +660,7 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
     public void doStop() throws Exception {
         // shutdown connection manager
         if (clientConnectionManager != null) {
-            LOG.info("Shutting down ClientConnectionManager: {}", clientConnectionManager);
+            log.info("Shutting down ClientConnectionManager: {}", clientConnectionManager);
             clientConnectionManager.shutdown();
             clientConnectionManager = null;
         }
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
index c0aa983..bd4d307 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
@@ -47,8 +47,6 @@ import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.pool.ConnPoolControl;
 import org.apache.http.pool.PoolStats;
 import org.apache.http.protocol.HttpContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * For calling out to external HTTP servers using Apache HTTP Client 4.x.
@@ -58,8 +56,6 @@ import org.slf4j.LoggerFactory;
 @ManagedResource(description = "Managed HttpEndpoint")
 public class HttpEndpoint extends HttpCommonEndpoint {
 
-    private static final Logger LOG = LoggerFactory.getLogger(HttpEndpoint.class);
-
     @UriParam(label = "advanced", description = "To use a custom HttpContext instance")
     private HttpContext httpContext;
     @UriParam(label = "advanced", description = "Register a custom configuration strategy for new HttpClient instances"
@@ -194,7 +190,7 @@ public class HttpEndpoint extends HttpCommonEndpoint {
                 if (scheme == null) {
                     scheme = HttpHelper.isSecureConnection(getEndpointUri()) ? "https" : "http";
                 }
-                LOG.debug("CamelContext properties http.proxyHost, http.proxyPort, and http.proxyScheme detected. Using http proxy host: {} port: {} scheme: {}", host, port, scheme);
+                log.debug("CamelContext properties http.proxyHost, http.proxyPort, and http.proxyScheme detected. Using http proxy host: {} port: {} scheme: {}", host, port, scheme);
                 HttpHost proxy = new HttpHost(host, port, scheme);
                 clientBuilder.setProxy(proxy);
             }
@@ -217,7 +213,7 @@ public class HttpEndpoint extends HttpCommonEndpoint {
             clientBuilder.setDefaultCookieStore(new NoopCookieStore());
         }
 
-        LOG.debug("Setup the HttpClientBuilder {}", clientBuilder);
+        log.debug("Setup the HttpClientBuilder {}", clientBuilder);
         return clientBuilder.build();
     }
 
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
index ac9b059..3ba3ce0 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
@@ -71,14 +71,12 @@ import org.apache.http.protocol.BasicHttpContext;
 import org.apache.http.protocol.HTTP;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * @version
  */
 public class HttpProducer extends DefaultProducer {
-    private static final Logger LOG = LoggerFactory.getLogger(HttpProducer.class);
+
     private HttpClient httpClient;
     private HttpContext httpContext;
     private boolean throwException;
@@ -187,12 +185,12 @@ public class HttpProducer extends DefaultProducer {
         // lets store the result in the output message.
         HttpResponse httpResponse = null;
         try {
... 9027 lines suppressed ...


[camel] 42/44: Extract org.apache.camel.management to camel-management-impl

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e9e4e01930f9db05a5652159684a3241765b0528
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Oct 11 11:42:36 2018 +0200

    Extract org.apache.camel.management to camel-management-impl
    
    # Conflicts:
    #	camel-management-impl/pom.xml
---
 bom/camel-bom/pom.xml                              |  11 +
 .../camel/spi/ManagementStrategyFactory.java       |  16 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |  16 +-
 .../impl/DefaultManagementStrategyFactory.java}    |  18 +-
 .../java/org/apache/camel/ContextTestSupport.java  |  20 -
 .../org/apache/camel/TestSupportJmxCleanup.java    |   6 +-
 .../file/FileExclusiveReadManuelTest.java          |   1 -
 .../apache/camel/issues/TwoTimerWithJMXIssue.java  |   6 +-
 .../org/apache/camel/processor/ChannelTest.java    |   7 -
 ... => RecipientListWithSimpleExpressionTest.java} |   9 +-
 camel-management-impl/pom.xml                      | 406 +++++++++++++++++++++
 .../management/CompositePerformanceCounter.java    |   0
 .../DefaultInstrumentationProcessor.java           |   0
 .../camel/management/DefaultManagementAgent.java   |   0
 .../DefaultManagementLifecycleStrategy.java        |   8 -
 .../DefaultManagementMBeanAssembler.java           |   0
 .../DefaultManagementObjectNameStrategy.java       |   0
 .../DefaultManagementObjectStrategy.java           |   0
 .../management/DelegatePerformanceCounter.java     |   0
 .../InstrumentationInterceptStrategy.java          |   0
 .../management/JmxNotificationEventNotifier.java   |   0
 .../camel/management/JmxSystemPropertyKeys.java    |   0
 .../camel/management/LoggingEventNotifier.java     |   0
 .../camel/management/MBeanInfoAssembler.java       |   0
 .../camel/management/ManagedCamelContextImpl.java  |   0
 .../apache/camel/management/ManagedLoadTimer.java  |   0
 .../management/ManagedManagementStrategy.java      |   0
 .../management/ManagementStrategyFactory.java      |   4 +-
 .../camel/management/MixinRequiredModelMBean.java  |   0
 .../management/NotificationSenderAdapter.java      |   0
 .../camel/management/PerformanceCounter.java       |   0
 .../camel/management/PublishEventNotifier.java     |   0
 .../apache/camel/management/mbean/LoadTriplet.java |   0
 .../mbean/ManagedAggregateProcessor.java           |   0
 .../mbean/ManagedAsyncProcessorAwaitManager.java   |   0
 .../management/mbean/ManagedBacklogDebugger.java   |   0
 .../management/mbean/ManagedBacklogTracer.java     |   0
 .../management/mbean/ManagedBeanProcessor.java     |   0
 .../management/mbean/ManagedBrowsableEndpoint.java |   0
 .../management/mbean/ManagedCamelContext.java      |   0
 .../camel/management/mbean/ManagedCamelHealth.java |   0
 .../camel/management/mbean/ManagedChoice.java      |   0
 .../camel/management/mbean/ManagedClaimCheck.java  |   0
 .../management/mbean/ManagedClusterService.java    |   0
 .../camel/management/mbean/ManagedComponent.java   |   0
 .../camel/management/mbean/ManagedConsumer.java    |   0
 .../management/mbean/ManagedConsumerCache.java     |   0
 .../camel/management/mbean/ManagedConvertBody.java |   0
 .../camel/management/mbean/ManagedCounter.java     |   0
 .../mbean/ManagedCustomLoadBalancer.java           |   0
 .../camel/management/mbean/ManagedDataFormat.java  |   0
 .../camel/management/mbean/ManagedDelayer.java     |   0
 .../management/mbean/ManagedDynamicRouter.java     |   0
 .../camel/management/mbean/ManagedEndpoint.java    |   0
 .../management/mbean/ManagedEndpointRegistry.java  |   0
 .../camel/management/mbean/ManagedEnricher.java    |   0
 .../management/mbean/ManagedErrorHandler.java      |   0
 .../management/mbean/ManagedEventNotifier.java     |   0
 .../mbean/ManagedEventNotifierMBean.java           |   0
 .../mbean/ManagedFailoverLoadBalancer.java         |   0
 .../camel/management/mbean/ManagedFilter.java      |   0
 .../mbean/ManagedIdempotentConsumer.java           |   0
 .../mbean/ManagedInflightRepository.java           |   0
 .../apache/camel/management/mbean/ManagedLog.java  |   0
 .../apache/camel/management/mbean/ManagedLoop.java |   0
 .../camel/management/mbean/ManagedMarshal.java     |   0
 .../camel/management/mbean/ManagedMulticast.java   |   0
 .../mbean/ManagedPerformanceCounter.java           |   0
 .../management/mbean/ManagedPollEnricher.java      |   0
 .../camel/management/mbean/ManagedProcess.java     |   0
 .../camel/management/mbean/ManagedProcessor.java   |   0
 .../camel/management/mbean/ManagedProducer.java    |   0
 .../management/mbean/ManagedProducerCache.java     |   0
 .../mbean/ManagedRandomLoadBalancer.java           |   0
 .../management/mbean/ManagedRecipientList.java     |   0
 .../management/mbean/ManagedRemoveHeader.java      |   0
 .../management/mbean/ManagedRemoveHeaders.java     |   0
 .../management/mbean/ManagedRemoveProperties.java  |   0
 .../management/mbean/ManagedRemoveProperty.java    |   0
 .../camel/management/mbean/ManagedResequencer.java |   0
 .../management/mbean/ManagedRestRegistry.java      |   0
 .../camel/management/mbean/ManagedRollback.java    |   0
 .../mbean/ManagedRoundRobinLoadBalancer.java       |   0
 .../camel/management/mbean/ManagedRoute.java       |   0
 .../management/mbean/ManagedRouteController.java   |   0
 .../camel/management/mbean/ManagedRoutingSlip.java |   0
 .../mbean/ManagedRuntimeCamelCatalog.java          |   0
 .../mbean/ManagedRuntimeEndpointRegistry.java      |   0
 .../management/mbean/ManagedSamplingThrottler.java |   0
 .../mbean/ManagedScheduledPollConsumer.java        |   0
 .../camel/management/mbean/ManagedScript.java      |   0
 .../mbean/ManagedSendDynamicProcessor.java         |   0
 .../management/mbean/ManagedSendProcessor.java     |   0
 .../camel/management/mbean/ManagedService.java     |   0
 .../camel/management/mbean/ManagedSetBody.java     |   0
 .../mbean/ManagedSetExchangePattern.java           |   0
 .../camel/management/mbean/ManagedSetHeader.java   |   0
 .../camel/management/mbean/ManagedSetProperty.java |   0
 .../camel/management/mbean/ManagedSplitter.java    |   0
 .../mbean/ManagedStickyLoadBalancer.java           |   0
 .../apache/camel/management/mbean/ManagedStop.java |   0
 .../mbean/ManagedStreamCachingStrategy.java        |   0
 .../management/mbean/ManagedSuspendableRoute.java  |   0
 .../camel/management/mbean/ManagedThreadPool.java  |   0
 .../camel/management/mbean/ManagedThreads.java     |   0
 .../camel/management/mbean/ManagedThrottler.java   |   0
 .../ManagedThrottlingExceptionRoutePolicy.java     |   0
 .../ManagedThrottlingInflightRoutePolicy.java      |   0
 .../management/mbean/ManagedThroughputLogger.java  |   0
 .../management/mbean/ManagedThrowException.java    |   0
 .../management/mbean/ManagedTopicLoadBalancer.java |   0
 .../camel/management/mbean/ManagedTransformer.java |   0
 .../mbean/ManagedTransformerRegistry.java          |   0
 .../mbean/ManagedTypeConverterRegistry.java        |   0
 .../camel/management/mbean/ManagedUnmarshal.java   |   0
 .../camel/management/mbean/ManagedValidate.java    |   0
 .../management/mbean/ManagedValidatorRegistry.java |   0
 .../mbean/ManagedWeightedLoadBalancer.java         |   0
 .../management/mbean/ManagedWireTapProcessor.java  |   0
 .../management/mbean/RouteCoverageXmlParser.java   |   0
 .../apache/camel/management/mbean/Statistic.java   |   0
 .../camel/management/mbean/StatisticCounter.java   |   0
 .../camel/management/mbean/StatisticDelta.java     |   0
 .../camel/management/mbean/StatisticMaximum.java   |   0
 .../camel/management/mbean/StatisticMinimum.java   |   0
 .../camel/management/mbean/StatisticValue.java     |   0
 .../org/apache/camel/management/mbean/package.html |   0
 .../java/org/apache/camel/management/package.html  |   0
 .../org.apache.camel.spi.ManagementStrategyFactory |   1 +
 .../component/controlbus/ControlBusStatsTest.java  |   0
 .../LanguageLoadScriptFromFileCachedTest.java      |   0
 .../component/xslt/ManagedXsltOutputBytesTest.java |   0
 .../camel/component/xslt/XsltContentCacheTest.java |   0
 .../DynamicRouterConvertBodyToIssueTest.java       |   0
 .../camel/management/AddEventNotifierTest.java     |   0
 .../camel/management/BacklogDebuggerTest.java      |   0
 .../camel/management/BacklogTracerFilterTest.java  |   0
 .../management/BacklogTracerIdOnAllNodesTest.java  |   0
 .../management/BacklogTracerPatternRouteTest.java  |   0
 .../camel/management/BacklogTracerPatternTest.java |   0
 .../management/BacklogTracerStreamCachingTest.java |   0
 .../apache/camel/management/BacklogTracerTest.java |   0
 .../org/apache/camel/management/BigRouteTest.java  |   0
 .../management/CamelChoiceWithManagementTest.java  |   0
 .../management/CamelContextDisableJmxTest.java     |   0
 .../apache/camel/management/CustomEndpoint.java    |   0
 .../management/DefaultManagementAgentMockTest.java |   0
 .../DualManagedThreadPoolProfileTest.java          |   0
 .../DualManagedThreadPoolWithIdTest.java           |   0
 .../management/ExceptionWithManagementTest.java    |   0
 .../JmxInstrumentationCustomMBeanTest.java         |   0
 ...mxInstrumentationDisableOnCamelContextTest.java |   0
 .../management/JmxInstrumentationDisableTest.java  |   0
 ...ationOnlyRegisterProcessorWithCustomIdTest.java |   0
 .../JmxInstrumentationUsingDefaultsTest.java       |   0
 .../JmxInstrumentationUsingPlatformMBSTest.java    |   0
 .../JmxInstrumentationUsingPropertiesTest.java     |   0
 .../JmxInstrumentationWithConnectorTest.java       |   0
 .../JmxNotificationEventNotifierTest.java          |   0
 .../camel/management/JmxRecipientListTest.java     |   0
 .../org/apache/camel/management/LoadTimerTest.java |   0
 .../apache/camel/management/LoadTripletTest.java   |   0
 .../camel/management/LoggingEventNotifierTest.java |   0
 .../management/ManagedAggregateControllerTest.java |   0
 .../ManagedBrowsableEndpointAsXmlFileTest.java     |   0
 .../ManagedBrowsableEndpointAsXmlTest.java         |   0
 .../ManagedBrowsableEndpointEmptyTest.java         |   0
 .../management/ManagedBrowsableEndpointTest.java   |   0
 .../apache/camel/management/ManagedCBRTest.java    |   0
 .../ManagedCamelContextAutoStartupTest.java        |   0
 .../ManagedCamelContextDumpRoutesAsXmlTest.java    |   0
 ...ManagedCamelContextDumpRoutesCoverageAsXml.java |   0
 .../ManagedCamelContextDumpStatsAsXmlTest.java     |   0
 .../ManagedCamelContextEmptyRouteTest.java         |   0
 .../ManagedCamelContextNewProxyTest.java           |   0
 .../ManagedCamelContextPropertiesTest.java         |   0
 .../management/ManagedCamelContextRestartTest.java |   0
 .../ManagedCamelContextSuspendResumeTest.java      |   0
 .../ManagedCamelContextSuspendStartTest.java       |   0
 .../camel/management/ManagedCamelContextTest.java  |   0
 ...ManagedCamelContextUpdateRoutesFromXmlTest.java |   0
 ...RoutesWithPropertyPlaceholdersFromXmlPTest.java |   0
 .../ManagedCanekContextExchangeStatisticsTest.java |   0
 .../apache/camel/management/ManagedChoiceTest.java |   0
 .../camel/management/ManagedComponentTest.java     |   0
 .../management/ManagedConsumerCacheHitsTest.java   |   0
 .../camel/management/ManagedConsumerCacheTest.java |   0
 .../camel/management/ManagedConvertBodyTest.java   |   0
 .../camel/management/ManagedCustomBeanTest.java    |   0
 .../management/ManagedCustomComponentNameTest.java |   0
 .../management/ManagedCustomLoadBalancerTest.java  |   0
 .../camel/management/ManagedCustomPolicyTest.java  |   0
 .../management/ManagedCustomProcessorTest.java     |   0
 .../camel/management/ManagedDataFormatTest.java    |   0
 .../camel/management/ManagedDelayerTest.java       |   0
 .../management/ManagedDualCamelContextTest.java    |   0
 .../camel/management/ManagedDuplicateIdTest.java   |   0
 .../camel/management/ManagedDynamicRouterTest.java |   0
 .../management/ManagedEndpointExplainTest.java     |   0
 .../management/ManagedEndpointRegistryTest.java    |   0
 .../camel/management/ManagedEndpointTest.java      |   0
 .../ManagedEndpointUtilizationStatisticsTest.java  |   0
 .../camel/management/ManagedEnricherTest.java      |   0
 .../management/ManagedErrorHandlerOptionsTest.java |   0
 .../ManagedErrorHandlerRedeliveryTest.java         |   0
 .../camel/management/ManagedErrorHandlerTest.java  |   0
 .../ManagedFailoverLoadBalancerTest.java           |   0
 .../management/ManagedFileIdempotentClearTest.java |   0
 .../ManagedFileIdempotentConsumerTest.java         |   0
 .../ManagedFileWatcherReloadStrategyTest.java      |   0
 .../apache/camel/management/ManagedFilterTest.java |   0
 .../ManagedFromRestGetEmbeddedRouteTest.java       |   0
 .../camel/management/ManagedFromRestGetTest.java   |   0
 .../management/ManagedFromRestPlaceholderTest.java |   0
 .../management/ManagedInflightRepositoryTest.java  |   0
 .../management/ManagedInflightStatisticsTest.java  |   0
 .../management/ManagedInlinedProcessorTest.java    |   0
 .../camel/management/ManagedInterceptFromTest.java |   0
 .../camel/management/ManagedInterceptTest.java     |   0
 .../management/ManagedListComponentsTest.java      |   0
 .../camel/management/ManagedLoadBalancerTest.java  |   0
 .../camel/management/ManagedLogEndpointTest.java   |   0
 .../apache/camel/management/ManagedLoopTest.java   |   0
 .../camel/management/ManagedMarshalTest.java       |   0
 .../ManagedMemoryIdempotentClearTest.java          |   0
 .../ManagedMemoryIdempotentConsumerTest.java       |   0
 .../camel/management/ManagedMulticastTest.java     |   0
 .../management/ManagedNamePatternFixedTest.java    |   0
 .../ManagedNamePatternIncludeHostNameTest.java     |   0
 .../ManagedNamePatternJvmSystemPropertyTest.java   |   0
 .../camel/management/ManagedNamePatternTest.java   |   0
 .../management/ManagedNonManagedServiceTest.java   |   0
 .../camel/management/ManagedPollEnricherTest.java  |   0
 .../camel/management/ManagedProcessTest.java       |   0
 ...gedProducerRecipientListRegisterAlwaysTest.java |   0
 .../ManagedProducerRecipientListTest.java          |   0
 ...edProducerRouteAddRemoveRegisterAlwaysTest.java |   0
 .../camel/management/ManagedProducerTest.java      |   0
 .../management/ManagedRandomLoadBalancerTest.java  |   0
 .../camel/management/ManagedRecipientListTest.java |   0
 .../management/ManagedRedeliverRouteOnlyTest.java  |   0
 .../camel/management/ManagedRedeliverTest.java     |   0
 .../camel/management/ManagedRefProducerTest.java   |   0
 .../ManagedRegisterCamelContextTest.java           |   0
 .../management/ManagedRegisterEndpointTest.java    |   0
 .../ManagedRegisterExchangeStatisticsTest.java     |   0
 .../camel/management/ManagedRegisterRouteTest.java |   0
 .../management/ManagedRegisterTwoRoutesTest.java   |   0
 .../ManagedRemoveRouteAggregateThreadPoolTest.java |   0
 .../camel/management/ManagedResequencerTest.java   |   0
 .../ManagedResetIncludeProcessorsTest.java         |   0
 .../management/ManagedResetIncludeRoutesTest.java  |   0
 .../camel/management/ManagedResourceTest.java      |   0
 .../camel/management/ManagedRestRegistryTest.java  |   0
 .../ManagedRoundRobinLoadBalancerTest.java         |   0
 .../management/ManagedRouteAddFromRouteTest.java   |   0
 .../management/ManagedRouteAddRemoveTest.java      |   0
 ...outeAddSecondRouteNotRegisterNewRoutesTest.java |   0
 .../management/ManagedRouteAddSecondRouteTest.java |   0
 .../management/ManagedRouteAutoStartupTest.java    |   0
 .../ManagedRouteDirectWhileIssueLeakTest.java      |   0
 .../ManagedRouteDumpRouteAsXmlPlaceholderTest.java |   0
 .../management/ManagedRouteDumpRouteAsXmlTest.java |   0
 ...DumpStatsAsXmlAndResetWithCustomDomainTest.java |   0
 ...ManagedRouteDumpStatsAsXmlCustomDomainTest.java |   0
 .../management/ManagedRouteDumpStatsAsXmlTest.java |   0
 .../management/ManagedRouteGetPropertiesTest.java  |   0
 .../management/ManagedRouteLoadstatisticsTest.java |   0
 .../management/ManagedRouteNoAutoStartupTest.java  |   0
 .../ManagedRoutePerformanceCounterTest.java        |   0
 ...edRouteRemoveContextScopedErrorHandlerTest.java |   0
 ...emoveRouteAndContextScopedErrorHandlerTest.java |   0
 ...agedRouteRemoveRouteScopedErrorHandlerTest.java |   0
 .../camel/management/ManagedRouteRemoveTest.java   |   0
 ...edRouteRemoveWireTapExplicitThreadPoolTest.java |   0
 .../management/ManagedRouteRemoveWireTapTest.java  |   0
 .../camel/management/ManagedRouteRestartTest.java  |   0
 .../ManagedRouteShutdownAndStartTest.java          |   0
 .../ManagedRouteStopAndStartCleanupTest.java       |   0
 .../management/ManagedRouteStopAndStartTest.java   |   0
 .../camel/management/ManagedRouteStopTest.java     |   0
 .../ManagedRouteStopUsingMBeanAPITest.java         |   0
 .../ManagedRouteStopWithAbortAfterTimeoutTest.java |   0
 .../ManagedRouteSuspendAndResumeTest.java          |   0
 .../ManagedRouteUpdateRouteFromXmlTest.java        |   0
 .../ManagedRouteWithOnExceptionTest.java           |   0
 .../camel/management/ManagedRoutingSlipTest.java   |   0
 .../management/ManagedRuntimeCamelCatalogTest.java |   0
 .../camel/management/ManagedSanitizeTest.java      |   0
 .../ManagedScheduledPollConsumerTest.java          |   0
 .../camel/management/ManagedSedaEndpointTest.java  |   0
 .../management/ManagedSedaRouteRemoveTest.java     |   0
 .../ManagedSendDynamicProcessorTest.java           |   0
 .../camel/management/ManagedSendProcessorTest.java |   0
 .../management/ManagedServiceUrlPathTest.java      |   0
 ...ManagedSetAndRemoveHeaderAndPropertiesTest.java |   0
 .../management/ManagedShutdownStrategyTest.java    |   0
 .../camel/management/ManagedSplitterTest.java      |   0
 .../management/ManagedStatisticsDisabledTest.java  |   0
 .../management/ManagedStatisticsLevelOffTest.java  |   0
 .../ManagedStatisticsLevelRoutesOnlyTest.java      |   0
 .../camel/management/ManagedStatisticsTest.java    |   0
 .../ManagedStatisticsWithSplitterTest.java         |   0
 .../management/ManagedStickyLoadBalancerTest.java  |   0
 .../ManagedStreamCachingStrategyTest.java          |   0
 .../management/ManagedSuspendedServiceTest.java    |   0
 .../management/ManagedThreadPoolProfileTest.java   |   0
 .../camel/management/ManagedThreadPoolTest.java    |   0
 .../management/ManagedThreadPoolWithIdTest.java    |   0
 .../camel/management/ManagedThreadsTest.java       |   0
 .../camel/management/ManagedThrottlerTest.java     |   0
 .../ManagedThrottlingExceptionRoutePolicyTest.java |   0
 .../ManagedThrottlingInflightRoutePolicyTest.java  |   0
 .../apache/camel/management/ManagedTimerTest.java  |   0
 .../management/ManagedTopicLoadBalancerTest.java   |   0
 .../management/ManagedTransformerRegistryTest.java |   0
 .../ManagedTypeConverterRegistryTest.java          |   0
 .../camel/management/ManagedUnmarshalTest.java     |   0
 .../ManagedUnregisterCamelContextTest.java         |   0
 .../management/ManagedUnregisterComponentTest.java |   0
 .../management/ManagedUnregisterConsumerTest.java  |   0
 .../management/ManagedUnregisterEndpointTest.java  |   0
 .../management/ManagedUnregisterProcessorTest.java |   0
 .../management/ManagedUnregisterProducerTest.java  |   0
 .../management/ManagedUnregisterRouteTest.java     |   0
 .../management/ManagedValidatorRegistryTest.java   |   0
 .../ManagedWeightedLoadBalancerTest.java           |   0
 .../camel/management/ManagedWireTapTest.java       |   0
 .../camel/management/ManagementTestSupport.java    |   0
 .../management/MultiInstanceProcessorTest.java     |   0
 .../apache/camel/management/MyDummyProcessor.java  |   0
 .../org/apache/camel/management/MyManagedBean.java |   0
 .../camel/management/PublishEventNotifierTest.java |   0
 .../PublishEventNotifierToRouteTest.java           |   0
 .../camel/management/RemoveEventNotifierTest.java  |   0
 .../management/RemoveRouteDefinitionTest.java      |   0
 ...nagedCamelContextAutoAssignedNameClashTest.java |   0
 .../TwoManagedCamelContextClashTest.java           |   0
 .../management/TwoManagedCamelContextTest.java     |   0
 .../management/TwoManagedNamePatternTest.java      |   0
 .../apache/camel/processor/NoErrorHandlerTest.java |  13 +-
 ...StacksNeededDuringRoutingSendProcessorTest.java |   0
 .../ReduceStacksNeededDuringRoutingTest.java       |   0
 .../processor/async/AsyncEndpointWithJMXTest.java  |   0
 components/camel-core-xml/pom.xml                  |   4 +
 components/camel-spring/pom.xml                    |  10 +
 .../org/apache/camel/spring/SpringTestSupport.java |   5 -
 .../MixedTransactionPropagationTest.java           |   1 -
 .../TransactionClientDataSourceSupport.java        |   1 -
 components/camel-test/pom.xml                      |   4 +
 examples/camel-example-transformer-demo/pom.xml    |   4 +
 parent/pom.xml                                     |  11 +
 .../camel-spring-boot-dependencies/pom.xml         |  11 +
 pom.xml                                            |   1 +
 354 files changed, 511 insertions(+), 83 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index f8ea547..711b8c9 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1615,6 +1615,17 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-impl</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-impl</artifactId>
+        <version>${project.version}</version>
+        <type>test-jar</type>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-manual</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategyFactory.java
similarity index 73%
copy from camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java
copy to camel-api/src/main/java/org/apache/camel/spi/ManagementStrategyFactory.java
index 1a8ef4b..63cbbc3 100644
--- a/camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategyFactory.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.spi;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
+import org.apache.camel.CamelContext;
 
-public class MyDummyProcessor implements Processor {
+/**
+ * Service Factory for ManagementStrategy
+ */
+public interface ManagementStrategyFactory {
+
+    ManagementStrategy create(CamelContext context);
 
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        exchange.getIn().setBody("Bye World");
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index e8edd43..5ab0dc1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -33,6 +33,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.ServiceLoader;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
@@ -92,7 +93,6 @@ import org.apache.camel.impl.converter.DefaultTypeConverter;
 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.management.ManagementStrategyFactory;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
@@ -138,6 +138,7 @@ import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.ManagementMBeanAssembler;
 import org.apache.camel.spi.ManagementNameStrategy;
 import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.spi.ManagementStrategyFactory;
 import org.apache.camel.spi.MessageHistoryFactory;
 import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.NodeIdFactory;
@@ -4560,7 +4561,18 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     protected ManagementStrategy createManagementStrategy() {
-        return new ManagementStrategyFactory().create(this, disableJMX);
+        if (!disableJMX) {
+            try {
+                ServiceLoader<ManagementStrategyFactory> loader = ServiceLoader.load(ManagementStrategyFactory.class);
+                Iterator<ManagementStrategyFactory> iterator = loader.iterator();
+                if (iterator.hasNext()) {
+                    return iterator.next().create(this);
+                }
+            } catch (Exception e) {
+                log.warn("Cannot create JMX lifecycle strategy. Will fallback and disable JMX.", e);
+            }
+        }
+        return new DefaultManagementStrategy(this);
     }
 
     /**
diff --git a/camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategyFactory.java
similarity index 65%
copy from camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java
copy to camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategyFactory.java
index 1a8ef4b..715b7b7 100644
--- a/camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategyFactory.java
@@ -14,15 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.spi.ManagementStrategyFactory;
 
-public class MyDummyProcessor implements Processor {
+/**
+ * Factory for creating {@link ManagementStrategy}
+ */
+public class DefaultManagementStrategyFactory implements ManagementStrategyFactory {
 
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        exchange.getIn().setBody("Bye World");
+    public ManagementStrategy create(CamelContext context) {
+        return new DefaultManagementStrategy(context);
     }
+
 }
diff --git a/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java b/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
index e61d378..df36f85 100644
--- a/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
@@ -25,7 +25,6 @@ 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.management.JmxSystemPropertyKeys;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.spi.Language;
 import org.apache.camel.support.jndi.JndiTest;
@@ -86,11 +85,6 @@ public abstract class ContextTestSupport extends TestSupport {
         // make SEDA testing faster
         System.setProperty("CamelSedaPollTimeout", "10");
 
-        if (!useJmx()) {
-            disableJMX();
-        } else {
-            enableJMX();
-        }
         CamelContext c2 = createCamelContext();
         if (c2 instanceof ModelCamelContext) {
             context = (ModelCamelContext)c2;
@@ -134,7 +128,6 @@ public abstract class ContextTestSupport extends TestSupport {
             template.stop();
         }
         stopCamelContext();
-        System.clearProperty(JmxSystemPropertyKeys.DISABLED);
         System.clearProperty("CamelSedaPollTimeout");
 
         super.tearDown();
@@ -379,17 +372,4 @@ public abstract class ContextTestSupport extends TestSupport {
         return endpoint;
     }
 
-    /**
-     * Disables the JMX agent. Must be called before the {@link #setUp()} method.
-     */
-    protected void disableJMX() {
-        System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
-    }
-
-    /**
-     * Enables the JMX agent. Must be called before the {@link #setUp()} method.
-     */
-    protected void enableJMX() {
-        System.setProperty(JmxSystemPropertyKeys.DISABLED, "false");
-    }
 }
diff --git a/camel-core/src/test/java/org/apache/camel/TestSupportJmxCleanup.java b/camel-core/src/test/java/org/apache/camel/TestSupportJmxCleanup.java
index cdeadc4..3a517ae 100644
--- a/camel-core/src/test/java/org/apache/camel/TestSupportJmxCleanup.java
+++ b/camel-core/src/test/java/org/apache/camel/TestSupportJmxCleanup.java
@@ -22,11 +22,13 @@ import java.util.Set;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
-import org.apache.camel.management.DefaultManagementAgent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public final class TestSupportJmxCleanup {
+
+    public static final String DEFAULT_DOMAIN = "org.apache.camel";
+
     private static final Logger LOG = LoggerFactory.getLogger(TestSupportJmxCleanup.class);
 
     private TestSupportJmxCleanup() {
@@ -55,7 +57,7 @@ public final class TestSupportJmxCleanup {
     }
 
     private static String getDomainName(String domain) {
-        return domain == null ? DefaultManagementAgent.DEFAULT_DOMAIN : domain;
+        return domain == null ? DEFAULT_DOMAIN : domain;
     }
 
 }
diff --git a/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadManuelTest.java b/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadManuelTest.java
index a9eb390..de926f5 100644
--- a/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadManuelTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadManuelTest.java
@@ -32,7 +32,6 @@ public class FileExclusiveReadManuelTest extends ContextTestSupport {
     @Before
     public void setUp() throws Exception {
         deleteDirectory("target/exclusiveread");
-        disableJMX();
         super.setUp();
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java b/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java
index 210eb48..05e4273 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java
@@ -32,9 +32,9 @@ public class TwoTimerWithJMXIssue extends ContextTestSupport {
     private static int counter;
 
     @Override
-    public void setUp() throws Exception {
-        enableJMX(); // the bug was in the JMX so it must be enabled
-        super.setUp();
+    protected boolean useJmx() {
+        // the bug was in the JMX so it must be enabled
+        return true;
     }
 
     public void testFromWithNoOutputs() throws Exception {
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ChannelTest.java b/camel-core/src/test/java/org/apache/camel/processor/ChannelTest.java
index cc38944..bc5c50d 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ChannelTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ChannelTest.java
@@ -27,13 +27,6 @@ public class ChannelTest extends ContextTestSupport {
 
     private static int counter;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        disableJMX();
-        super.setUp();
-    }
-
     @Test
     public void testChannel() throws Exception {
         counter = 0;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/RecipeientListWithSimpleExpressionTest.java b/camel-core/src/test/java/org/apache/camel/processor/RecipientListWithSimpleExpressionTest.java
similarity index 95%
rename from camel-core/src/test/java/org/apache/camel/processor/RecipeientListWithSimpleExpressionTest.java
rename to camel-core/src/test/java/org/apache/camel/processor/RecipientListWithSimpleExpressionTest.java
index 4a29928..fde980d 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/RecipeientListWithSimpleExpressionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/RecipientListWithSimpleExpressionTest.java
@@ -24,20 +24,13 @@ import org.apache.camel.builder.RouteBuilder;
 import org.junit.Before;
 import org.junit.Test;
 
-public class RecipeientListWithSimpleExpressionTest extends ContextTestSupport {
+public class RecipientListWithSimpleExpressionTest extends ContextTestSupport {
 
     @Override
     public boolean isUseRouteBuilder() {
         return false;
     }
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        disableJMX();
-        super.setUp();
-    }
-
     @Test
     public void testRecipientList() throws Exception {
         context.addRoutes(new RouteBuilder() {
diff --git a/camel-management-impl/pom.xml b/camel-management-impl/pom.xml
new file mode 100644
index 0000000..2881e23
--- /dev/null
+++ b/camel-management-impl/pom.xml
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-parent</artifactId>
+    <version>3.0.0-SNAPSHOT</version>
+    <relativePath>../parent</relativePath>
+  </parent>
+
+  <artifactId>camel-management-impl</artifactId>
+  <packaging>jar</packaging>
+  <name>Camel :: Management Implementation</name>
+  <description>The Camel Management Implementation</description>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>spi-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>meta-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-util</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>json-simple-ordered</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+    <!-- testing -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <artifactId>hamcrest-core</artifactId>
+          <groupId>org.hamcrest</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>java-hamcrest</artifactId>
+      <version>${hamcrest-version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <artifactId>hamcrest-core</artifactId>
+          <groupId>org.hamcrest</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>${assertj-version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core</artifactId>
+      <type>test-jar</type>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <excludes>
+            <exclude>log4j.properties</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <links>
+            <link>http://download.oracle.com/javase/7/docs/api/</link>
+            <link>http://download.oracle.com/javaee/7/api/</link>
+          </links>
+          <linksource>true</linksource>
+          <maxmemory>256m</maxmemory>
+          <groups>
+            <group>
+              <title>Camel API</title>
+              <packages>org.apache.camel</packages>
+            </group>
+            <group>
+              <title>Fluent API (DSL) for building EIP rules</title>
+              <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+            </group>
+            <group>
+              <title>EIP model</title>
+              <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+            </group>
+            <group>
+              <title>Camel Components</title>
+              <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+            </group>
+            <group>
+              <title>Language APIs and plugins for Expressions and Predicates</title>
+              <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+            </group>
+            <group>
+              <title>Processors to implement the Enterprise Integration Patterns</title>
+              <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+            </group>
+            <group>
+              <title>Strategy APIs for implementors extending Camel</title>
+              <packages>org.apache.camel.spi</packages>
+            </group>
+            <group>
+              <title>Support APIs for implementors</title>
+              <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+            </group>
+            <group>
+              <title>Management (JMX) API</title>
+              <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+            </group>
+            <group>
+              <title>Camel Runtime</title>
+              <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+            </group>
+            <group>
+              <title>Camel Main to run Camel standalone</title>
+              <packages>org.apache.camel.main</packages>
+            </group>
+            <group>
+              <title>Type conversion helper classes</title>
+              <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+            </group>
+            <group>
+              <title>Utility classes</title>
+              <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+            </group>
+          </groups>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+
+  <profiles>
+    <profile>
+      <id>release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-javadoc-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>package</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>jar</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <links>
+                <link>http://download.oracle.com/javase/7/docs/api/</link>
+                <link>http://download.oracle.com/javaee/7/api/</link>
+              </links>
+              <linksource>true</linksource>
+              <maxmemory>256m</maxmemory>
+              <groups>
+                <group>
+                  <title>Camel API</title>
+                  <packages>org.apache.camel</packages>
+                </group>
+                <group>
+                  <title>Fluent API (DSL) for building EIP rules</title>
+                  <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+                </group>
+                <group>
+                  <title>EIP model</title>
+                  <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+                </group>
+                <group>
+                  <title>Camel Components</title>
+                  <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+                </group>
+                <group>
+                  <title>Language APIs and plugins for Expressions and Predicates</title>
+                  <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+                </group>
+                <group>
+                  <title>Processors to implement the Enterprise Integration Patterns</title>
+                  <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+                </group>
+                <group>
+                  <title>Strategy APIs for implementors extending Camel</title>
+                  <packages>org.apache.camel.spi</packages>
+                </group>
+                <group>
+                  <title>Support APIs for implementors</title>
+                  <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+                </group>
+                <group>
+                  <title>Management (JMX) API</title>
+                  <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+                </group>
+                <group>
+                  <title>Camel Runtime</title>
+                  <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+                </group>
+                <group>
+                  <title>Camel Main to run Camel standalone</title>
+                  <packages>org.apache.camel.main</packages>
+                </group>
+                <group>
+                  <title>Type conversion helper classes</title>
+                  <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+                </group>
+                <group>
+                  <title>Utility classes</title>
+                  <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+                </group>
+              </groups>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <!-- skip management tests on AIX as it hangs CI servers -->
+    <profile>
+      <id>aix</id>
+      <activation>
+        <os>
+          <name>aix</name>
+        </os>
+      </activation>
+      <properties>
+        <platform.skip.tests>org/apache/camel/management/**/*.java</platform.skip.tests>
+      </properties>
+    </profile>
+    <profile>
+      <id>xalan</id>
+      <dependencies>
+        <!-- enable the Xalan processor -->
+        <dependency>
+          <groupId>xalan</groupId>
+          <artifactId>xalan</artifactId>
+          <version>${xalan-version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>xerces</id>
+      <dependencies>
+        <!-- enable the xerces processor -->
+        <dependency>
+          <groupId>xerces</groupId>
+          <artifactId>xercesImpl</artifactId>
+          <version>${xerces-version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>woodstox</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      <dependencies>
+        <!-- xmltokenizer using woodstox -->
+        <dependency>
+          <groupId>org.codehaus.woodstox</groupId>
+          <artifactId>woodstox-core-asl</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+
+    <profile>
+      <id>jdk9+-build</id>
+      <activation>
+        <jdk>[9,)</jdk>
+      </activation>
+      <dependencies>
+
+        <!-- enable the APT processor -->
+        <dependency>
+          <groupId>org.apache.camel</groupId>
+          <artifactId>apt</artifactId>
+          <scope>provided</scope>
+        </dependency>
+        <!-- xmltokenizer using woodstox -->
+        <dependency>
+          <groupId>org.codehaus.woodstox</groupId>
+          <artifactId>woodstox-core-asl</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <!-- skip file stress tests as they are intended to run manually -->
+              <excludes>
+                <exclude>org/apache/camel/component/file/stress/**.java</exclude>
+                <exclude>**/DistributedCompletionIntervalTest.java</exclude>
+                <exclude>**/DistributedConcurrentPerCorrelationKeyTest.java</exclude>
+                <exclude>${platform.skip.tests}</exclude>
+              </excludes>
+              <forkedProcessTimeoutInSeconds>3000</forkedProcessTimeoutInSeconds>
+              <!-- needed for testing the properties component -->
+              <environmentVariables>
+              <FOO_SERVICE_HOST>myserver</FOO_SERVICE_HOST>
+              <FOO_SERVICE_PORT>8081</FOO_SERVICE_PORT>
+              </environmentVariables>
+              <argLine>--add-modules java.xml.bind,java.xml.ws --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED</argLine>
+            </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>com.sun.xml.bind</groupId>
+                <artifactId>jaxb-core</artifactId>
+                <version>${jaxb-version}</version>
+              </dependency>
+              <dependency>
+                <groupId>com.sun.xml.bind</groupId>
+                <artifactId>jaxb-impl</artifactId>
+                <version>${jaxb-version}</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+</project>
diff --git a/camel-core/src/main/java/org/apache/camel/management/CompositePerformanceCounter.java b/camel-management-impl/src/main/java/org/apache/camel/management/CompositePerformanceCounter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/CompositePerformanceCounter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/CompositePerformanceCounter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 3ec406e..fc3db18 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -159,11 +159,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             boolean done = false;
             while (!done) {
                 ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(managementName, name);
-<<<<<<< HEAD
-                boolean exists = getManagementStrategy().isManaged(mc, on);
-=======
                 boolean exists = getManagementStrategy().isManagedName(on);
->>>>>>> db1604e8d06... wip
                 if (!exists) {
                     done = true;
                 } else {
@@ -253,11 +249,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             // compute the next name
             newName = strategy.getNextName();
             ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(newName, name);
-<<<<<<< HEAD
-            done = !getManagementStrategy().isManaged(mc, on);
-=======
             done = !getManagementStrategy().isManagedName(on);
->>>>>>> db1604e8d06... wip
             if (log.isTraceEnabled()) {
                 log.trace("Using name: {} in ObjectName[{}] exists? {}", name, on, done);
             }
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java b/camel-management-impl/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java b/camel-management-impl/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java b/camel-management-impl/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java b/camel-management-impl/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java b/camel-management-impl/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java b/camel-management-impl/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java b/camel-management-impl/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedLoadTimer.java b/camel-management-impl/src/main/java/org/apache/camel/management/ManagedLoadTimer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/ManagedLoadTimer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/ManagedLoadTimer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-management-impl/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java b/camel-management-impl/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
similarity index 90%
rename from camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
index 64d8d44..2d34281 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
+++ b/camel-management-impl/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
@@ -28,8 +28,8 @@ import org.slf4j.LoggerFactory;
 public class ManagementStrategyFactory {
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    public ManagementStrategy create(CamelContext context, boolean disableJMX) {
-        if (!disableJMX && !Boolean.getBoolean(JmxSystemPropertyKeys.DISABLED)) {
+    public ManagementStrategy create(CamelContext context) {
+        if (!Boolean.getBoolean(JmxSystemPropertyKeys.DISABLED)) {
             try {
                 return new ManagedManagementStrategy(context, new DefaultManagementAgent(context));
             } catch (Exception e) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/MixinRequiredModelMBean.java b/camel-management-impl/src/main/java/org/apache/camel/management/MixinRequiredModelMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/MixinRequiredModelMBean.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/MixinRequiredModelMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/NotificationSenderAdapter.java b/camel-management-impl/src/main/java/org/apache/camel/management/NotificationSenderAdapter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/NotificationSenderAdapter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/NotificationSenderAdapter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/PerformanceCounter.java b/camel-management-impl/src/main/java/org/apache/camel/management/PerformanceCounter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/PerformanceCounter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/PerformanceCounter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java b/camel-management-impl/src/main/java/org/apache/camel/management/PublishEventNotifier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/PublishEventNotifier.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/LoadTriplet.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/LoadTriplet.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/LoadTriplet.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/LoadTriplet.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAsyncProcessorAwaitManager.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedAsyncProcessorAwaitManager.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAsyncProcessorAwaitManager.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedAsyncProcessorAwaitManager.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogDebugger.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBacklogDebugger.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogDebugger.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBacklogDebugger.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCounter.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCounter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCounter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCounter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDataFormat.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedInflightRepository.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedInflightRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedInflightRepository.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedInflightRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLog.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeEndpointRegistry.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeEndpointRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeEndpointRegistry.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeEndpointRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScript.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedService.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStop.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSuspendableRoute.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSuspendableRoute.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSuspendableRoute.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedSuspendableRoute.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThroughputLogger.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThroughputLogger.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThroughputLogger.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThroughputLogger.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/Statistic.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/Statistic.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/Statistic.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/Statistic.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/StatisticCounter.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticCounter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/StatisticCounter.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticCounter.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/StatisticDelta.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticDelta.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/StatisticDelta.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticDelta.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/StatisticMaximum.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticMaximum.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/StatisticMaximum.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticMaximum.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/StatisticMinimum.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticMinimum.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/StatisticMinimum.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticMinimum.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/StatisticValue.java b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticValue.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/StatisticValue.java
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/StatisticValue.java
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/package.html b/camel-management-impl/src/main/java/org/apache/camel/management/mbean/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/mbean/package.html
rename to camel-management-impl/src/main/java/org/apache/camel/management/mbean/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/management/package.html b/camel-management-impl/src/main/java/org/apache/camel/management/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/package.html
rename to camel-management-impl/src/main/java/org/apache/camel/management/package.html
diff --git a/camel-management-impl/src/main/resources/META-INF/services/org.apache.camel.spi.ManagementStrategyFactory b/camel-management-impl/src/main/resources/META-INF/services/org.apache.camel.spi.ManagementStrategyFactory
new file mode 100644
index 0000000..870fa71
--- /dev/null
+++ b/camel-management-impl/src/main/resources/META-INF/services/org.apache.camel.spi.ManagementStrategyFactory
@@ -0,0 +1 @@
+org.apache.camel.impl.DefaultManagementStrategyFactory
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/component/controlbus/ControlBusStatsTest.java b/camel-management-impl/src/test/java/org/apache/camel/component/controlbus/ControlBusStatsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/component/controlbus/ControlBusStatsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/component/controlbus/ControlBusStatsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/component/language/LanguageLoadScriptFromFileCachedTest.java b/camel-management-impl/src/test/java/org/apache/camel/component/language/LanguageLoadScriptFromFileCachedTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/component/language/LanguageLoadScriptFromFileCachedTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/component/language/LanguageLoadScriptFromFileCachedTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/component/xslt/ManagedXsltOutputBytesTest.java b/camel-management-impl/src/test/java/org/apache/camel/component/xslt/ManagedXsltOutputBytesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/component/xslt/ManagedXsltOutputBytesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/component/xslt/ManagedXsltOutputBytesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/component/xslt/XsltContentCacheTest.java b/camel-management-impl/src/test/java/org/apache/camel/component/xslt/XsltContentCacheTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/component/xslt/XsltContentCacheTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/component/xslt/XsltContentCacheTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/issues/DynamicRouterConvertBodyToIssueTest.java b/camel-management-impl/src/test/java/org/apache/camel/issues/DynamicRouterConvertBodyToIssueTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/issues/DynamicRouterConvertBodyToIssueTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/issues/DynamicRouterConvertBodyToIssueTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BacklogDebuggerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BacklogDebuggerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BacklogDebuggerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BacklogDebuggerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerFilterTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerIdOnAllNodesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BacklogTracerPatternRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerPatternRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BacklogTracerPatternRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerPatternRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerPatternTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerStreamCachingTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BacklogTracerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BacklogTracerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BacklogTracerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/BigRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/BigRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/BigRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/BigRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/CamelChoiceWithManagementTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/CamelChoiceWithManagementTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/CamelChoiceWithManagementTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/CamelChoiceWithManagementTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/CustomEndpoint.java b/camel-management-impl/src/test/java/org/apache/camel/management/CustomEndpoint.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/CustomEndpoint.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/CustomEndpoint.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/DualManagedThreadPoolProfileTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/DualManagedThreadPoolProfileTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/DualManagedThreadPoolProfileTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/DualManagedThreadPoolProfileTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/DualManagedThreadPoolWithIdTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/DualManagedThreadPoolWithIdTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/DualManagedThreadPoolWithIdTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/DualManagedThreadPoolWithIdTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ExceptionWithManagementTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ExceptionWithManagementTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ExceptionWithManagementTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ExceptionWithManagementTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationCustomMBeanTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationCustomMBeanTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationCustomMBeanTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationCustomMBeanTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationDisableOnCamelContextTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationDisableOnCamelContextTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationDisableOnCamelContextTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationDisableOnCamelContextTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationDisableTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationDisableTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationDisableTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationDisableTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPlatformMBSTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPlatformMBSTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPlatformMBSTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPlatformMBSTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPropertiesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPropertiesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPropertiesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationUsingPropertiesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationWithConnectorTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationWithConnectorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationWithConnectorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxInstrumentationWithConnectorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxNotificationEventNotifierTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxNotificationEventNotifierTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxNotificationEventNotifierTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxNotificationEventNotifierTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxRecipientListTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/JmxRecipientListTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/JmxRecipientListTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/JmxRecipientListTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/LoadTimerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/LoadTimerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/LoadTimerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/LoadTimerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/LoadTripletTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/LoadTripletTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/LoadTripletTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/LoadTripletTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/LoggingEventNotifierTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/LoggingEventNotifierTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/LoggingEventNotifierTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/LoggingEventNotifierTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlFileTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlFileTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlFileTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlFileTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointAsXmlTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointEmptyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointEmptyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointEmptyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointEmptyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedBrowsableEndpointTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCBRTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCBRTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCBRTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCBRTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextAutoStartupTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextAutoStartupTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextAutoStartupTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextAutoStartupTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesCoverageAsXml.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesCoverageAsXml.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesCoverageAsXml.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpRoutesCoverageAsXml.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpStatsAsXmlTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpStatsAsXmlTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextDumpStatsAsXmlTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextDumpStatsAsXmlTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextNewProxyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextNewProxyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextNewProxyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextNewProxyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendResumeTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendResumeTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendResumeTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendResumeTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendStartTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendStartTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendStartTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextSuspendStartTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesFromXmlTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesFromXmlTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesFromXmlTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesFromXmlTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesWithPropertyPlaceholdersFromXmlPTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesWithPropertyPlaceholdersFromXmlPTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesWithPropertyPlaceholdersFromXmlPTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCamelContextUpdateRoutesWithPropertyPlaceholdersFromXmlPTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCanekContextExchangeStatisticsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCanekContextExchangeStatisticsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCanekContextExchangeStatisticsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCanekContextExchangeStatisticsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedChoiceTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedChoiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedChoiceTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedChoiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedComponentTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedComponentTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedConvertBodyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedConvertBodyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedConvertBodyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedConvertBodyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCustomBeanTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomBeanTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCustomBeanTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomBeanTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCustomComponentNameTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomComponentNameTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCustomComponentNameTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomComponentNameTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedDataFormatTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDelayerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedDelayerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedDelayerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedDelayerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDualCamelContextTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedDualCamelContextTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedDualCamelContextTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedDualCamelContextTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDuplicateIdTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedDuplicateIdTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedDuplicateIdTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedDuplicateIdTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointExplainTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointExplainTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedEndpointExplainTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointExplainTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedEndpointTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerRedeliveryTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerRedeliveryTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerRedeliveryTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerRedeliveryTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFailoverLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFailoverLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFailoverLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFailoverLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFileIdempotentClearTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileIdempotentClearTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFileIdempotentClearTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileIdempotentClearTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFileIdempotentConsumerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileIdempotentConsumerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFileIdempotentConsumerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileIdempotentConsumerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFileWatcherReloadStrategyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileWatcherReloadStrategyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFileWatcherReloadStrategyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFileWatcherReloadStrategyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFilterTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFilterTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFromRestGetEmbeddedRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFromRestGetEmbeddedRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFromRestGetEmbeddedRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFromRestGetEmbeddedRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFromRestGetTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFromRestGetTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFromRestGetTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFromRestGetTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFromRestPlaceholderTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedFromRestPlaceholderTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedFromRestPlaceholderTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedFromRestPlaceholderTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedInflightRepositoryTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInflightRepositoryTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedInflightRepositoryTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedInflightRepositoryTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedInflightStatisticsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInflightStatisticsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedInflightStatisticsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedInflightStatisticsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedInterceptFromTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInterceptFromTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedInterceptFromTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedInterceptFromTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedLogEndpointTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedLogEndpointTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedLogEndpointTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedLogEndpointTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedLoopTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedLoopTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedMarshalTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedMarshalTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedMarshalTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedMarshalTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentClearTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentClearTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentClearTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentClearTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentConsumerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentConsumerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentConsumerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedMemoryIdempotentConsumerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedMulticastTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedMulticastTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternJvmSystemPropertyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternJvmSystemPropertyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternJvmSystemPropertyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternJvmSystemPropertyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedNonManagedServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedProcessTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedProcessTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedProcessTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedProcessTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRecipientListTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRecipientListTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedProducerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedProducerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRandomLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRandomLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRandomLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRandomLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverRouteOnlyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRedeliverRouteOnlyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverRouteOnlyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRedeliverRouteOnlyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRefProducerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRefProducerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRefProducerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRefProducerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRegisterCamelContextTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterCamelContextTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRegisterCamelContextTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterCamelContextTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRegisterEndpointTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterEndpointTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRegisterEndpointTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterEndpointTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRegisterExchangeStatisticsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterExchangeStatisticsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRegisterExchangeStatisticsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterExchangeStatisticsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRegisterRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRegisterRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRegisterTwoRoutesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterTwoRoutesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRegisterTwoRoutesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRegisterTwoRoutesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRemoveRouteAggregateThreadPoolTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRemoveRouteAggregateThreadPoolTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRemoveRouteAggregateThreadPoolTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRemoveRouteAggregateThreadPoolTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedResequencerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedResequencerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedResequencerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedResequencerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedResetIncludeProcessorsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedResetIncludeProcessorsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedResetIncludeProcessorsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedResetIncludeProcessorsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedResetIncludeRoutesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedResetIncludeRoutesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedResetIncludeRoutesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedResetIncludeRoutesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedResourceTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedResourceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedResourceTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedResourceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRoundRobinLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoundRobinLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRoundRobinLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoundRobinLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddFromRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddFromRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddFromRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddFromRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddRemoveTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteNotRegisterNewRoutesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteNotRegisterNewRoutesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteNotRegisterNewRoutesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteNotRegisterNewRoutesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAddSecondRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteAutoStartupTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAutoStartupTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteAutoStartupTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteAutoStartupTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteDirectWhileIssueLeakTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDirectWhileIssueLeakTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteDirectWhileIssueLeakTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDirectWhileIssueLeakTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlPlaceholderTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlPlaceholderTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlPlaceholderTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlPlaceholderTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlAndResetWithCustomDomainTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlAndResetWithCustomDomainTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlAndResetWithCustomDomainTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlAndResetWithCustomDomainTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlCustomDomainTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlCustomDomainTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlCustomDomainTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlCustomDomainTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteDumpStatsAsXmlTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteGetPropertiesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteGetPropertiesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteGetPropertiesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteGetPropertiesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteNoAutoStartupTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteNoAutoStartupTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteNoAutoStartupTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteNoAutoStartupTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRoutePerformanceCounterTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoutePerformanceCounterTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRoutePerformanceCounterTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoutePerformanceCounterTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveContextScopedErrorHandlerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveContextScopedErrorHandlerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveContextScopedErrorHandlerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveContextScopedErrorHandlerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteScopedErrorHandlerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteScopedErrorHandlerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteScopedErrorHandlerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveRouteScopedErrorHandlerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapExplicitThreadPoolTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapExplicitThreadPoolTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapExplicitThreadPoolTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapExplicitThreadPoolTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRemoveWireTapTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteRestartTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRestartTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteRestartTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteRestartTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteShutdownAndStartTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteShutdownAndStartTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteShutdownAndStartTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteShutdownAndStartTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartCleanupTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartCleanupTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartCleanupTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartCleanupTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopAndStartTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopUsingMBeanAPITest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopUsingMBeanAPITest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopUsingMBeanAPITest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopUsingMBeanAPITest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopWithAbortAfterTimeoutTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopWithAbortAfterTimeoutTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopWithAbortAfterTimeoutTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteStopWithAbortAfterTimeoutTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteWithOnExceptionTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteWithOnExceptionTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRouteWithOnExceptionTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRouteWithOnExceptionTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedRuntimeCamelCatalogTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSedaRouteRemoveTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSedaRouteRemoveTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSedaRouteRemoveTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSedaRouteRemoveTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedServiceUrlPathTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedServiceUrlPathTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedServiceUrlPathTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedServiceUrlPathTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSetAndRemoveHeaderAndPropertiesTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSetAndRemoveHeaderAndPropertiesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSetAndRemoveHeaderAndPropertiesTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSetAndRemoveHeaderAndPropertiesTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedShutdownStrategyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedShutdownStrategyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedShutdownStrategyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedShutdownStrategyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSplitterTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSplitterTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSplitterTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSplitterTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsWithSplitterTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsWithSplitterTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsWithSplitterTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedStatisticsWithSplitterTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStickyLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStickyLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedStickyLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedStickyLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStreamCachingStrategyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStreamCachingStrategyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedStreamCachingStrategyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedStreamCachingStrategyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSuspendedServiceTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedSuspendedServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedSuspendedServiceTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedSuspendedServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolProfileTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolProfileTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolProfileTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolProfileTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolWithIdTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolWithIdTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedThreadPoolWithIdTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadPoolWithIdTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThreadsTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedThreadsTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedThreadsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedThrottlerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedTimerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedTimerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTopicLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedTopicLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedTopicLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedTopicLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnmarshalTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnmarshalTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnmarshalTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnmarshalTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterCamelContextTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterCamelContextTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterCamelContextTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterCamelContextTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterComponentTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterComponentTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterComponentTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterComponentTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterEndpointTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterEndpointTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterEndpointTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterEndpointTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProcessorTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterProcessorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProcessorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterProcessorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedUnregisterRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedValidatorRegistryTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedValidatorRegistryTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedValidatorRegistryTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedValidatorRegistryTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedWeightedLoadBalancerTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedWeightedLoadBalancerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedWeightedLoadBalancerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedWeightedLoadBalancerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java b/camel-management-impl/src/test/java/org/apache/camel/management/ManagementTestSupport.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/ManagementTestSupport.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java b/camel-management-impl/src/test/java/org/apache/camel/management/MyDummyProcessor.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/MyDummyProcessor.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/MyDummyProcessor.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/MyManagedBean.java b/camel-management-impl/src/test/java/org/apache/camel/management/MyManagedBean.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/MyManagedBean.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/MyManagedBean.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/PublishEventNotifierTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/PublishEventNotifierTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/PublishEventNotifierTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/PublishEventNotifierTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/PublishEventNotifierToRouteTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/PublishEventNotifierToRouteTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/PublishEventNotifierToRouteTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/PublishEventNotifierToRouteTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextAutoAssignedNameClashTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextAutoAssignedNameClashTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextAutoAssignedNameClashTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextAutoAssignedNameClashTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextClashTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextClashTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextClashTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextClashTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/TwoManagedCamelContextTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedCamelContextTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/management/TwoManagedNamePatternTest.java b/camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedNamePatternTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/management/TwoManagedNamePatternTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/management/TwoManagedNamePatternTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java b/camel-management-impl/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java
similarity index 94%
rename from camel-core/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java
index 6aa56fa..2da6447 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java
+++ b/camel-management-impl/src/test/java/org/apache/camel/processor/NoErrorHandlerTest.java
@@ -32,17 +32,14 @@ public class NoErrorHandlerTest extends ContextTestSupport {
     @Before
     public void setUp() throws Exception {
         counter = 0;
-
-        // we must enable/disable JMX in this setUp
-        if (jmx) {
-            enableJMX();
-            jmx = false;
-        } else {
-            disableJMX();
-        }
         super.setUp();
     }
 
+    @Override
+    protected boolean useJmx() {
+        return jmx;
+    }
+
     @Test
     public void testNoErrorHandler() throws Exception {
         doTest();
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingSendProcessorTest.java b/camel-management-impl/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingSendProcessorTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingSendProcessorTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingSendProcessorTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingTest.java b/camel-management-impl/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/processor/ReduceStacksNeededDuringRoutingTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointWithJMXTest.java b/camel-management-impl/src/test/java/org/apache/camel/processor/async/AsyncEndpointWithJMXTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointWithJMXTest.java
rename to camel-management-impl/src/test/java/org/apache/camel/processor/async/AsyncEndpointWithJMXTest.java
diff --git a/components/camel-core-xml/pom.xml b/components/camel-core-xml/pom.xml
index 3ab51a7..15a6914 100644
--- a/components/camel-core-xml/pom.xml
+++ b/components/camel-core-xml/pom.xml
@@ -42,6 +42,10 @@
       <artifactId>camel-core</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-management-impl</artifactId>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>
diff --git a/components/camel-spring/pom.xml b/components/camel-spring/pom.xml
index 5632a54..6eab46f 100644
--- a/components/camel-spring/pom.xml
+++ b/components/camel-spring/pom.xml
@@ -76,6 +76,10 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>camel-management-impl</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-core-xml</artifactId>
       <scope>provided</scope>
     </dependency>
@@ -137,6 +141,12 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-management-impl</artifactId>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-jdbc</artifactId>
       <scope>test</scope>
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
index 8e5bf0c..cf3a34d 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
@@ -44,11 +44,6 @@ public abstract class SpringTestSupport extends ContextTestSupport {
     public void setUp() throws Exception {
         // we want SpringTestSupport to startup faster and not use JMX by default and should stop seda quicker
         System.setProperty("CamelSedaPollTimeout", "10");
-        if (!this.useJmx()) {
-            this.disableJMX();
-        } else {
-            this.enableJMX();
-        }
 
         applicationContext = createApplicationContext();
         assertNotNull("Should have created a valid spring context", applicationContext);
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedTransactionPropagationTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedTransactionPropagationTest.java
index e5ef463..14ca0baa 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedTransactionPropagationTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedTransactionPropagationTest.java
@@ -42,7 +42,6 @@ public class MixedTransactionPropagationTest extends SpringTestSupport {
     @Override
     @Before
     public void setUp() throws Exception {
-        this.disableJMX();
         super.setUp();
 
         final DataSource ds = getMandatoryBean(DataSource.class, "dataSource");
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionClientDataSourceSupport.java b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionClientDataSourceSupport.java
index 658aaa7..e4cf8be 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionClientDataSourceSupport.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionClientDataSourceSupport.java
@@ -36,7 +36,6 @@ public class TransactionClientDataSourceSupport extends SpringTestSupport {
     @Before
     @Override
     public void setUp() throws Exception {
-        disableJMX();
         super.setUp();
 
         // START SNIPPET: e5
diff --git a/components/camel-test/pom.xml b/components/camel-test/pom.xml
index 630497b..75c0939 100644
--- a/components/camel-test/pom.xml
+++ b/components/camel-test/pom.xml
@@ -46,6 +46,10 @@
             <artifactId>camel-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-management-impl</artifactId>
+        </dependency>
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
diff --git a/examples/camel-example-transformer-demo/pom.xml b/examples/camel-example-transformer-demo/pom.xml
index 9f3f77d..758423f 100644
--- a/examples/camel-example-transformer-demo/pom.xml
+++ b/examples/camel-example-transformer-demo/pom.xml
@@ -58,6 +58,10 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-jaxb</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+    </dependency>
 
     <!-- logging -->
     <dependency>
diff --git a/parent/pom.xml b/parent/pom.xml
index 06d2524..9d1feee 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -832,6 +832,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-impl</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-core</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -3678,6 +3683,12 @@
         <type>test-jar</type>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-impl</artifactId>
+        <type>test-jar</type>
+        <version>${project.version}</version>
+      </dependency>
 
       <!-- cassandra -->
       <dependency>
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index 4514be3..f254b19 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -1816,6 +1816,17 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-impl</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-impl</artifactId>
+        <version>${project.version}</version>
+        <type>test-jar</type>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-manual</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/pom.xml b/pom.xml
index 182f871..aa5e898 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,6 +148,7 @@
     <module>camel-util</module>
     <module>camel-api</module>
     <module>camel-management-api</module>
+    <module>camel-management-impl</module>
     <module>camel-core</module>
     <module>components</module>
     <module>archetypes</module>


[camel] 36/44: Move some cluster classes to o.a.c.support.cluster

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 8125c3494c0f0ce4df3aa27d09d16c66313d2512
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 8 14:27:10 2018 +0200

    Move some cluster classes to o.a.c.support.cluster
---
 .../apache/camel/component/file/cluster/FileLockClusterView.java  | 2 +-
 .../org/apache/camel/impl/cluster/ClusteredRouteController.java   | 4 ++--
 .../java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java  | 4 ++--
 .../apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java    | 2 +-
 .../org/apache/camel/management/mbean/ManagedClusterService.java  | 2 +-
 .../camel/{impl => support}/cluster/AbstractCamelClusterView.java | 2 +-
 .../org/apache/camel/support}/cluster/ClusterServiceHelper.java   | 3 ++-
 .../apache/camel/support}/cluster/ClusterServiceSelectors.java    | 8 +++++---
 .../org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java | 7 ++++---
 .../org/apache/camel/impl/cluster/ClusterServiceViewTest.java     | 1 +
 .../apache/camel/component/atomix/cluster/AtomixClusterView.java  | 2 +-
 .../apache/camel/component/consul/cluster/ConsulClusterView.java  | 2 +-
 .../camel/component/jgroups/cluster/JGroupsLockClusterView.java   | 2 +-
 .../camel/component/kubernetes/cluster/KubernetesClusterView.java | 2 +-
 .../java/org/apache/camel/component/master/MasterComponent.java   | 4 ++--
 .../camel/component/zookeeper/cluster/ZooKeeperClusterView.java   | 2 +-
 16 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/component/file/cluster/FileLockClusterView.java b/camel-core/src/main/java/org/apache/camel/component/file/cluster/FileLockClusterView.java
index 5a3128d..c49332b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/cluster/FileLockClusterView.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/cluster/FileLockClusterView.java
@@ -31,7 +31,7 @@ import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.cluster.CamelClusterMember;
-import org.apache.camel.impl.cluster.AbstractCamelClusterView;
+import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
index 332a4fe..1e2b040 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
@@ -35,13 +35,13 @@ 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.cluster.ClusterServiceSelectors;
+import org.apache.camel.support.cluster.ClusterServiceSelectors;
 import org.apache.camel.impl.DefaultRouteController;
 import org.apache.camel.meta.Experimental;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
-import org.apache.camel.cluster.ClusterServiceHelper;
+import org.apache.camel.support.cluster.ClusterServiceHelper;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index 57330bb..3c2f134 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -36,13 +36,13 @@ 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.cluster.ClusterServiceSelectors;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.cluster.ClusterServiceHelper;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
+import org.apache.camel.support.cluster.ClusterServiceHelper;
+import org.apache.camel.support.cluster.ClusterServiceSelectors;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ReferenceCount;
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
index ff058a2..ffa7828 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
@@ -20,7 +20,7 @@ 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.cluster.ClusterServiceSelectors;
+import org.apache.camel.support.cluster.ClusterServiceSelectors;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
index 52b8cb5..9839de5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
@@ -25,7 +25,7 @@ import org.apache.camel.ServiceStatus;
 import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.mbean.ManagedClusterServiceMBean;
 import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.cluster.ClusterServiceHelper;
+import org.apache.camel.support.cluster.ClusterServiceHelper;
 import org.apache.camel.spi.ManagementStrategy;
 
 public class ManagedClusterService implements ManagedClusterServiceMBean {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterView.java b/camel-core/src/main/java/org/apache/camel/support/cluster/AbstractCamelClusterView.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterView.java
rename to camel-core/src/main/java/org/apache/camel/support/cluster/AbstractCamelClusterView.java
index 92faa38..ccb730e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/AbstractCamelClusterView.java
+++ b/camel-core/src/main/java/org/apache/camel/support/cluster/AbstractCamelClusterView.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.support.cluster;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceHelper.java b/camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceHelper.java
similarity index 95%
rename from camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceHelper.java
rename to camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceHelper.java
index 1571e0f..1cb34c5 100644
--- a/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceHelper.java
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.cluster;
+package org.apache.camel.support.cluster;
 
 import java.util.Optional;
 import java.util.Set;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.util.ObjectHelper;
 
 public final class ClusterServiceHelper {
diff --git a/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceSelectors.java b/camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceSelectors.java
similarity index 94%
rename from camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceSelectors.java
rename to camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceSelectors.java
index 485f648..65d6bc4 100644
--- a/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceSelectors.java
+++ b/camel-core/src/main/java/org/apache/camel/support/cluster/ClusterServiceSelectors.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.cluster;
+package org.apache.camel.support.cluster;
 
 import java.util.Collection;
 import java.util.Comparator;
@@ -23,18 +23,20 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
+import org.apache.camel.cluster.CamelClusterService;
+import org.apache.camel.cluster.CamelClusterService.Selector;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public final class ClusterServiceSelectors {
-    public static final CamelClusterService.Selector DEFAULT_SELECTOR = new SelectSingle();
+    public static final Selector DEFAULT_SELECTOR = new SelectSingle();
     private static final Logger LOGGER = LoggerFactory.getLogger(ClusterServiceSelectors.class);
 
     private ClusterServiceSelectors() {
     }
 
-    public static final class SelectSingle implements CamelClusterService.Selector {
+    public static final class SelectSingle implements Selector {
         @Override
         public Optional<CamelClusterService> select(Collection<CamelClusterService> services) {
             if (services != null && services.size() == 1) {
diff --git a/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java b/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
index d0897da..ac6f902 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
@@ -24,14 +24,15 @@ 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.cluster.ClusterServiceSelectors;
+import org.apache.camel.support.cluster.ClusterServiceSelectors;
 import org.apache.camel.component.file.cluster.FileLockClusterService;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.junit.Assert;
 import org.junit.Test;
 
-import static org.apache.camel.cluster.ClusterServiceHelper.lookupService;
-import static org.apache.camel.cluster.ClusterServiceHelper.mandatoryLookupService;
+import static org.apache.camel.support.cluster.ClusterServiceHelper.lookupService;
+import static org.apache.camel.support.cluster.ClusterServiceHelper.mandatoryLookupService;
 
 
 public class ClusterServiceSelectorTest {
diff --git a/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceViewTest.java b/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceViewTest.java
index bf9d278..9b4f0a3 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceViewTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceViewTest.java
@@ -31,6 +31,7 @@ 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.AbstractCamelClusterView;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java
index 64852ba..f1661de 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterView.java
@@ -29,7 +29,7 @@ import io.atomix.group.LocalMember;
 import org.apache.camel.cluster.CamelClusterMember;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.component.atomix.AtomixConfiguration;
-import org.apache.camel.impl.cluster.AbstractCamelClusterView;
+import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.apache.camel.util.ObjectHelper;
 
 final class AtomixClusterView extends AbstractCamelClusterView {
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/cluster/ConsulClusterView.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/cluster/ConsulClusterView.java
index bfd6dfd..b07e523 100644
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/cluster/ConsulClusterView.java
+++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/cluster/ConsulClusterView.java
@@ -34,7 +34,7 @@ import com.orbitz.consul.model.session.ImmutableSession;
 import com.orbitz.consul.model.session.SessionInfo;
 import com.orbitz.consul.option.QueryOptions;
 import org.apache.camel.cluster.CamelClusterMember;
-import org.apache.camel.impl.cluster.AbstractCamelClusterView;
+import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/cluster/JGroupsLockClusterView.java b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/cluster/JGroupsLockClusterView.java
index 9d3edc24..be7988e 100644
--- a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/cluster/JGroupsLockClusterView.java
+++ b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/cluster/JGroupsLockClusterView.java
@@ -25,7 +25,7 @@ import java.util.concurrent.locks.Lock;
 import org.apache.camel.CamelContext;
 import org.apache.camel.cluster.CamelClusterMember;
 import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.impl.cluster.AbstractCamelClusterView;
+import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.apache.camel.util.ObjectHelper;
 import org.jgroups.JChannel;
 import org.jgroups.blocks.locking.LockService;
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/cluster/KubernetesClusterView.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/cluster/KubernetesClusterView.java
index 7ace336..12aeb43 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/cluster/KubernetesClusterView.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/cluster/KubernetesClusterView.java
@@ -34,7 +34,7 @@ import org.apache.camel.component.kubernetes.KubernetesHelper;
 import org.apache.camel.component.kubernetes.cluster.lock.KubernetesClusterEvent;
 import org.apache.camel.component.kubernetes.cluster.lock.KubernetesLeadershipController;
 import org.apache.camel.component.kubernetes.cluster.lock.KubernetesLockConfiguration;
-import org.apache.camel.impl.cluster.AbstractCamelClusterView;
+import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.apache.camel.util.ObjectHelper;
 
 /**
diff --git a/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java b/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java
index 8f31a07..ce726bf 100644
--- a/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java
+++ b/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java
@@ -22,8 +22,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.support.DefaultComponent;
-import org.apache.camel.impl.cluster.ClusterServiceHelper;
-import org.apache.camel.cluster.ClusterServiceSelectors;
+import org.apache.camel.support.cluster.ClusterServiceHelper;
+import org.apache.camel.support.cluster.ClusterServiceSelectors;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusterView.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusterView.java
index b8a3813..2f549ea 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusterView.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/cluster/ZooKeeperClusterView.java
@@ -25,7 +25,7 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.cluster.CamelClusterMember;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.component.zookeeper.ZooKeeperCuratorConfiguration;
-import org.apache.camel.impl.cluster.AbstractCamelClusterView;
+import org.apache.camel.support.cluster.AbstractCamelClusterView;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.recipes.leader.LeaderSelector;


[camel] 19/44: [CAMEL-12818] Remove deprecated stuff

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f1fffba18792fd3c41160cbf5bb6b28d5e6a42f1
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 00:35:08 2018 +0200

    [CAMEL-12818] Remove deprecated stuff
---
 .../java/org/apache/camel/test/TestSupport.java    | 528 ---------------------
 1 file changed, 528 deletions(-)

diff --git a/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java b/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java
deleted file mode 100644
index 482535f..0000000
--- a/components/camel-test/src/main/java/org/apache/camel/test/TestSupport.java
+++ /dev/null
@@ -1,528 +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.test;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-
-import junit.framework.TestCase;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Channel;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
-import org.apache.camel.InvalidPayloadException;
-import org.apache.camel.Message;
-import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
-import org.apache.camel.Route;
-import org.apache.camel.builder.Builder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.builder.ValueBuilder;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.processor.DelegateProcessor;
-import org.apache.camel.util.ExchangeHelper;
-import org.apache.camel.util.PredicateAssertHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A bunch of useful testing methods
- *
- * @version 
- * @deprecated Support for JUnit 3.x is slated for removal in Camel 3.x. You are encouraged to move to
- *             JUnit 4.x based tests.  See {@link org.apache.camel.test.junit4.TestSupport}.
- */
-@Deprecated
-public abstract class TestSupport extends TestCase {
-    protected static final String LS = System.lineSeparator();
-    private static final Logger LOG = LoggerFactory.getLogger(TestSupport.class);
-    protected Logger log = LoggerFactory.getLogger(getClass());
-    
-    /**
-     * Runs the bare test sequence only if this platform is supported
-     * @exception Throwable if any exception is thrown
-     */
-    @Override
-    public void runBare() throws Throwable {
-        if (canRunOnThisPlatform()) {
-            //start with a clean slate
-            DefaultCamelContext.setContextCounter(0);
-            TestSupportNodeIdFactory.resetCounters();
-            super.runBare();
-        }
-    }
-
-    protected boolean canRunOnThisPlatform() {
-        return true;
-    }
-
-    // Builder methods for expressions used when testing
-    // -------------------------------------------------------------------------
-
-    /**
-     * Returns a value builder for the given header
-     */
-    public static ValueBuilder header(String name) {
-        return Builder.header(name);
-    }
-
-    /**
-     * Returns a value builder for the given property
-     */
-    public static ValueBuilder property(String name) {
-        return Builder.exchangeProperty(name);
-    }    
-    
-    /**
-     * Returns a predicate and value builder for the inbound body on an exchange
-     */
-    public static ValueBuilder body() {
-        return Builder.body();
-    }
-
-    /**
-     * Returns a predicate and value builder for the inbound message body as a
-     * specific type
-     */
-    public static <T> ValueBuilder bodyAs(Class<T> type) {
-        return Builder.bodyAs(type);
-    }
-
-    /**
-     * Returns a value builder for the given system property
-     */
-    public static ValueBuilder systemProperty(String name) {
-        return Builder.systemProperty(name);
-    }
-
-    /**
-     * Returns a value builder for the given system property
-     */
-    public static ValueBuilder systemProperty(String name, String defaultValue) {
-        return Builder.systemProperty(name, defaultValue);
-    }
-
-    // Assertions
-    // -----------------------------------------------------------------------
-
-    public static <T> T assertIsInstanceOf(Class<T> expectedType, Object value) {
-        assertNotNull("Expected an instance of type: " + expectedType.getName() + " but was null", value);
-        assertTrue("object should be a " + expectedType.getName() + " but was: " + value + " with type: "
-                   + value.getClass().getName(), expectedType.isInstance(value));
-        return expectedType.cast(value);
-    }
-
-    public static void assertEndpointUri(Endpoint endpoint, String uri) {
-        assertNotNull("Endpoint is null when expecting endpoint for: " + uri, endpoint);
-        assertEquals("Endpoint uri for: " + endpoint, uri, endpoint.getEndpointUri());
-    }
-
-    /**
-     * Asserts the In message on the exchange contains the expected value
-     */
-    public static Object assertInMessageHeader(Exchange exchange, String name, Object expected) {
-        return assertMessageHeader(exchange.getIn(), name, expected);
-    }
-
-    /**
-     * Asserts the Out message on the exchange contains the expected value
-     */
-    public static Object assertOutMessageHeader(Exchange exchange, String name, Object expected) {
-        return assertMessageHeader(exchange.getOut(), name, expected);
-    }
-
-    /**
-     * Asserts that the given exchange has an OUT message of the given body value
-     *
-     * @param exchange the exchange which should have an OUT message
-     * @param expected the expected value of the OUT message
-     * @throws InvalidPayloadException is thrown if the payload is not the expected class type
-     */
-    public static void assertInMessageBodyEquals(Exchange exchange, Object expected) throws InvalidPayloadException {
-        assertNotNull("Should have a response exchange!", exchange);
-
-        Object actual;
-        if (expected == null) {
-            actual = exchange.getIn().getMandatoryBody();
-            assertEquals("in body of: " + exchange, expected, actual);
-        } else {
-            actual = exchange.getIn().getMandatoryBody(expected.getClass());
-        }
-        assertEquals("in body of: " + exchange, expected, actual);
-
-        LOG.debug("Received response: " + exchange + " with in: " + exchange.getIn());
-    }
-
-    /**
-     * Asserts that the given exchange has an OUT message of the given body value
-     *
-     * @param exchange the exchange which should have an OUT message
-     * @param expected the expected value of the OUT message
-     * @throws InvalidPayloadException is thrown if the payload is not the expected class type
-     */
-    public static void assertOutMessageBodyEquals(Exchange exchange, Object expected) throws InvalidPayloadException {
-        assertNotNull("Should have a response exchange!", exchange);
-
-        Object actual;
-        if (expected == null) {
-            actual = exchange.getOut().getMandatoryBody();
-            assertEquals("output body of: " + exchange, expected, actual);
-        } else {
-            actual = exchange.getOut().getMandatoryBody(expected.getClass());
-        }
-        assertEquals("output body of: " + exchange, expected, actual);
-
-        LOG.debug("Received response: " + exchange + " with out: " + exchange.getOut());
-    }
-
-    public static Object assertMessageHeader(Message message, String name, Object expected) {
-        Object value = message.getHeader(name);
-        assertEquals("Header: " + name + " on Message: " + message, expected, value);
-        return value;
-    }
-
-    /**
-     * Asserts that the given expression when evaluated returns the given answer
-     */
-    public static Object assertExpression(Expression expression, Exchange exchange, Object expected) {
-        Object value;
-        if (expected != null) {
-            value = expression.evaluate(exchange, expected.getClass());
-        } else {
-            value = expression.evaluate(exchange, Object.class);
-        }
-
-        LOG.debug("Evaluated expression: " + expression + " on exchange: " + exchange + " result: " + value);
-
-        assertEquals("Expression: " + expression + " on Exchange: " + exchange, expected, value);
-        return value;
-    }
-
-    /**
-     * Asserts that the predicate returns the expected value on the exchange
-     */
-    public static void assertPredicateMatches(Predicate predicate, Exchange exchange) {
-        assertPredicate(predicate, exchange, true);
-    }
-
-    /**
-     * Asserts that the predicate returns the expected value on the exchange
-     */
-    public static void assertPredicateDoesNotMatch(Predicate predicate, Exchange exchange) {
-        try {
-            PredicateAssertHelper.assertMatches(predicate, "Predicate should match: ", exchange);
-        } catch (AssertionError e) {
-            LOG.debug("Caught expected assertion error: " + e);
-        }
-        assertPredicate(predicate, exchange, false);
-    }
-
-    /**
-     * Asserts that the predicate returns the expected value on the exchange
-     */
-    public static boolean assertPredicate(final Predicate predicate, Exchange exchange, boolean expected) {
-        if (expected) {
-            PredicateAssertHelper.assertMatches(predicate, "Predicate failed: ", exchange);
-        }
-        boolean value = predicate.matches(exchange);
-
-        LOG.debug("Evaluated predicate: " + predicate + " on exchange: " + exchange + " result: " + value);
-
-        assertEquals("Predicate: " + predicate + " on Exchange: " + exchange, expected, value);
-        return value;
-    }
-
-    /**
-     * Resolves an endpoint and asserts that it is found
-     */
-    public static Endpoint resolveMandatoryEndpoint(CamelContext context, String uri) {
-        Endpoint endpoint = context.getEndpoint(uri);
-
-        assertNotNull("No endpoint found for URI: " + uri, endpoint);
-
-        return endpoint;
-    }
-
-    /**
-     * Resolves an endpoint and asserts that it is found
-     */
-    public static <T extends Endpoint> T resolveMandatoryEndpoint(CamelContext context, String uri,
-                                                              Class<T> endpointType) {
-        T endpoint = context.getEndpoint(uri, endpointType);
-
-        assertNotNull("No endpoint found for URI: " + uri, endpoint);
-
-        return endpoint;
-    }
-
-    /**
-     * Creates an exchange with the given body
-     */
-    protected Exchange createExchangeWithBody(CamelContext camelContext, Object body) {
-        Exchange exchange = new DefaultExchange(camelContext);
-        Message message = exchange.getIn();
-        message.setHeader("testName", getName());
-        message.setHeader("testClass", getClass().getName());
-        message.setBody(body);
-        return exchange;
-    }
-
-    public static <T> T assertOneElement(List<T> list) {
-        assertEquals("Size of list should be 1: " + list, 1, list.size());
-        return list.get(0);
-    }
-
-    /**
-     * Asserts that a list is of the given size
-     */
-    public static <T> List<T> assertListSize(List<T> list, int size) {
-        return assertListSize("List", list, size);
-    }
-
-    /**
-     * Asserts that a list is of the given size
-     */
-    public static <T> List<T> assertListSize(String message, List<T> list, int size) {
-        assertEquals(message + " should be of size: "
-                + size + " but is: " + list, size, list.size());
-        return list;
-    }
-
-    /**
-     * Asserts that a list is of the given size
-     */
-    public static <T> Collection<T> assertCollectionSize(Collection<T> list, int size) {
-        return assertCollectionSize("List", list, size);
-    }
-
-    /**
-     * Asserts that a list is of the given size
-     */
-    public static <T> Collection<T> assertCollectionSize(String message, Collection<T> list, int size) {
-        assertEquals(message + " should be of size: "
-                + size + " but is: " + list, size, list.size());
-        return list;
-    }
-
-    /**
-     * A helper method to create a list of Route objects for a given route builder
-     */
-    public static List<Route> getRouteList(RouteBuilder builder) throws Exception {
-        CamelContext context = new DefaultCamelContext();
-        context.addRoutes(builder);
-        context.start();
-        List<Route> answer = context.getRoutes();
-        context.stop();
-        return answer;
-    }
-
-    /**
-     * Asserts that the text contains the given string
-     *
-     * @param text the text to compare
-     * @param containedText the text which must be contained inside the other text parameter
-     */
-    public static void assertStringContains(String text, String containedText) {
-        assertNotNull("Text should not be null!", text);
-        assertTrue("Text: " + text + " does not contain: " + containedText, text.contains(containedText));
-    }
-
-    /**
-     * If a processor is wrapped with a bunch of DelegateProcessor or DelegateAsyncProcessor objects
-     * this call will drill through them and return the wrapped Processor.
-     */
-    public static Processor unwrap(Processor processor) {
-        while (true) {
-            if (processor instanceof DelegateProcessor) {
-                processor = ((DelegateProcessor)processor).getProcessor();
-            } else {
-                return processor;
-            }
-        }
-    }
-
-    /**
-     * If a processor is wrapped with a bunch of DelegateProcessor or DelegateAsyncProcessor objects
-     * this call will drill through them and return the Channel.
-     * <p/>
-     * Returns null if no channel is found.
-     */
-    public static Channel unwrapChannel(Processor processor) {
-        while (true) {
-            if (processor instanceof Channel) {
-                return (Channel) processor;
-            } else if (processor instanceof DelegateProcessor) {
-                processor = ((DelegateProcessor)processor).getProcessor();
-            } else {
-                return null;
-            }
-        }
-    }
-
-    /**
-     * Recursively delete a directory, useful to zapping test data
-     *
-     * @param file the directory to be deleted
-     * @return <tt>false</tt> if error deleting directory
-     */
-    public static boolean deleteDirectory(String file) {
-        return deleteDirectory(new File(file));
-    }
-
-    /**
-     * Recursively delete a directory, useful to zapping test data
-     *
-     * @param file the directory to be deleted
-     * @return <tt>false</tt> if error deleting directory
-     */
-    public static boolean deleteDirectory(File file) {
-        int tries = 0;
-        int maxTries = 5;
-        boolean exists = true;
-        while (exists && (tries < maxTries)) {
-            recursivelyDeleteDirectory(file);
-            tries++;
-            exists = file.exists();
-            if (exists) {
-                try {
-                    Thread.sleep(1000);
-                } catch (InterruptedException e) {
-                    // Ignore
-                }
-            }
-        }
-        return !exists;
-    }
-
-    private static void recursivelyDeleteDirectory(File file) {
-        if (!file.exists()) {
-            return;
-        }
-
-        if (file.isDirectory()) {
-            File[] files = file.listFiles();
-            for (File child : files) {
-                recursivelyDeleteDirectory(child);
-            }
-        }
-        boolean success = file.delete();
-        if (!success) {
-            LOG.warn("Deletion of file: " + file.getAbsolutePath() + " failed");
-        }
-    }
-
-    /**
-     * create the directory
-     *
-     * @param file the directory to be created
-     */
-    public static void createDirectory(String file) {
-        File dir = new File(file);
-        dir.mkdirs();
-    }
-
-    /**
-     * To be used for folder/directory comparison that works across different platforms such
-     * as Window, Mac and Linux.
-     */
-    public static void assertDirectoryEquals(String expected, String actual) {
-        assertDirectoryEquals(null, expected, actual);
-    }
-
-    /**
-     * To be used for folder/directory comparison that works across different platforms such
-     * as Window, Mac and Linux.
-     */
-    public static void assertDirectoryEquals(String message, String expected, String actual) {
-        // must use single / as path separators
-        String expectedPath = expected.replace('\\', '/');
-        String actualPath = actual.replace('\\', '/');
-
-        if (message != null) {
-            assertEquals(message, expectedPath, actualPath);
-        } else {
-            assertEquals(expectedPath, actualPath);
-        }
-    }
-
-    /**
-     * To be used to check is a file is found in the file system
-     */
-    public static void assertFileExists(String filename) {
-        File file = new File(filename);
-        assertTrue("File " + filename + " should exist", file.exists());
-    }
-
-    /**
-     * To be used to check is a file is <b>not</b> found in the file system
-     */
-    public static void assertFileNotExists(String filename) {
-        File file = new File(filename);
-        assertFalse("File " + filename + " should not exist", file.exists());
-    }
-
-    /**
-     * Is this OS the given platform.
-     * <p/>
-     * Uses <tt>os.name</tt> from the system properties to determine the OS.
-     *
-     * @param platform such as Windows
-     * @return <tt>true</tt> if its that platform.
-     */
-    public static boolean isPlatform(String platform) {
-        String osName = System.getProperty("os.name").toLowerCase(Locale.US);
-        return osName.indexOf(platform.toLowerCase(Locale.US)) > -1;
-    }
-
-    /**
-     * Is this Java by the given vendor.
-     * <p/>
-     * Uses <tt>java.vendor</tt> from the system properties to determine the vendor.
-     *
-     * @param vendor such as IBM
-     * @return <tt>true</tt> if its that vendor.
-     */
-    public static boolean isJavaVendor(String vendor) {
-        String javaVendor = System.getProperty("java.vendor").toLowerCase(Locale.US);
-        return javaVendor.indexOf(vendor.toLowerCase(Locale.US)) > -1;
-    }
-
-    /**
-     * Is this Java 1.5
-     *
-     * @return <tt>true</tt> if its Java 1.5, <tt>false</tt> if its not (for example Java 1.6 or better)
-     */
-    public static boolean isJava15() {
-        String javaVersion = System.getProperty("java.version").toLowerCase(Locale.US);
-        return javaVersion.startsWith("1.5");
-    }
-
-    /**
-     * Gets the current test method name
-     *
-     * @return the method name
-     */
-    public String getTestMethodName() {
-        return getName();
-    }
-
-}


[camel] 43/44: Various build fixes

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ed124aef1887f4f2de319403c24e05fdd1472e02
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 11:15:56 2018 +0200

    Various build fixes
---
 .../DefaultManagementLifecycleStrategy.java        |  2 +-
 .../apache/camel/component/cxf/CxfComponent.java   |  2 +-
 .../camel/component/elsql/ElsqlComponent.java      |  1 +
 .../org/apache/camel/http/common/HttpHelper.java   |  1 +
 .../InfinispanRemoteQueryProducerIT.java           |  2 +-
 .../apache/camel/component/mllp/MllpEndpoint.java  |  1 +
 .../netty4/DefaultServerInitializerFactory.java    |  2 +-
 .../integration/SpringIntegrationEndpoint.java     |  6 ---
 .../converter/SpringIntegrationConverter.java      |  6 +--
 .../apache/camel/component/sql/SqlComponent.java   |  1 +
 .../dataformat/xstream/XStreamDataFormat.java      |  1 +
 .../catalog/CamelCatalogMBeanExporterTest.java     | 52 ----------------------
 .../HazelcastComponentAutoConfiguration.java       |  2 +-
 .../camel-spring-boot-dependencies/pom.xml         |  2 +-
 14 files changed, 14 insertions(+), 67 deletions(-)

diff --git a/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index fc3db18..60522cc 100644
--- a/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-management-impl/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -634,7 +634,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             Object mr = getManagementObjectStrategy().getManagedObjectForRoute(camelContext, route);
 
             // skip unmanaged routes
-            if (!getManagementStrategy().isManaged(mr, null)) {
+            if (!getManagementStrategy().isManaged(mr)) {
                 log.trace("The route is not managed: {}", route);
                 continue;
             }
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
index 9f60a86..c0f79c9 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
@@ -82,7 +82,7 @@ public class CxfComponent extends HeaderFilterStrategyComponent implements SSLCo
 
         Object value = parameters.remove("setDefaultBus");
         if (value != null) {
-            LOG.warn("The option setDefaultBus is @deprecated, use name defaultBus instead");
+            log.warn("The option setDefaultBus is @deprecated, use name defaultBus instead");
             if (!parameters.containsKey("defaultBus")) {
                 parameters.put("defaultBus", value);
             }
diff --git a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java
index 24243ba..744a890 100644
--- a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java
+++ b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java
@@ -21,6 +21,7 @@ import javax.sql.DataSource;
 
 import com.opengamma.elsql.ElSqlConfig;
 import org.apache.camel.Endpoint;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.IntrospectionSupport;
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
index 51d34ae..a72e2b5 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.Producer;
 import org.apache.camel.RuntimeExchangeException;
 import org.apache.camel.converter.stream.CachedOutputStream;
 import org.apache.camel.impl.DefaultCamelContext;
diff --git a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java
index c3f6b21..6726d3f 100644
--- a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java
+++ b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java
@@ -138,7 +138,7 @@ public class InfinispanRemoteQueryProducerIT extends CamelTestSupport {
         Exchange request = template.request("direct:start", new Processor() {
             @Override
             public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(OPERATION, QUERY);
+                exchange.getIn().setHeader(OPERATION, InfinispanOperation.QUERY);
             }
         });
         assertNull(request.getException());
diff --git a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java
index 655da8a..4103eeb 100644
--- a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java
+++ b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java
@@ -20,6 +20,7 @@ package org.apache.camel.component.mllp;
 import java.io.IOException;
 import java.net.Socket;
 import java.net.SocketAddress;
+import java.nio.charset.Charset;
 import java.util.Date;
 
 import org.apache.camel.Consumer;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/DefaultServerInitializerFactory.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/DefaultServerInitializerFactory.java
index 32930c6..6b257a6 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/DefaultServerInitializerFactory.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/DefaultServerInitializerFactory.java
@@ -45,7 +45,7 @@ public class DefaultServerInitializerFactory extends ServerInitializerFactory {
         try {
             this.sslContext = createSSLContext(null, configuration);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
 
         if (sslContext != null) {
diff --git a/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java b/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java
index 28b3f5c..0c33d4a 100644
--- a/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java
+++ b/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java
@@ -48,12 +48,6 @@ public class SpringIntegrationEndpoint extends DefaultEndpoint {
         this.defaultChannel = channel;
     }
 
-    @Deprecated
-    public SpringIntegrationEndpoint(String uri, MessageChannel channel, CamelContext context) {
-        super(uri, context);
-        this.messageChannel = channel;
-    }
-
     public Producer createProducer() throws Exception {
         return new SpringIntegrationProducer((SpringCamelContext) getCamelContext(), this);
     }
diff --git a/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/converter/SpringIntegrationConverter.java b/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/converter/SpringIntegrationConverter.java
index 05d66ad..2830e4a 100644
--- a/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/converter/SpringIntegrationConverter.java
+++ b/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/converter/SpringIntegrationConverter.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.spring.integration.converter;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Converter;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.spring.integration.SpringIntegrationEndpoint;
@@ -36,9 +37,8 @@ public final class SpringIntegrationConverter {
     }
 
     @Converter
-    @SuppressWarnings("deprecation")
     public static Endpoint toEndpoint(final MessageChannel channel) throws Exception {
-        Endpoint answer = new SpringIntegrationEndpoint("spring-integration://" + channel.toString(), channel, null);
+        Endpoint answer = new SpringIntegrationEndpoint("spring-integration://" + channel.toString(), channel.toString(), null);
         return answer;
     }
 
@@ -59,7 +59,7 @@ public final class SpringIntegrationConverter {
 
     @Converter
     public static org.apache.camel.Message toCamelMessage(final org.springframework.messaging.Message<?> springMessage) throws Exception {
-        return new SpringIntegrationMessage(null, springMessage);
+        return new SpringIntegrationMessage((CamelContext) null, springMessage);
     }
 
 }
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
index 56f7f7a..ef91018 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
@@ -22,6 +22,7 @@ import javax.sql.DataSource;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.IntrospectionSupport;
diff --git a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
index 02ead3a..86aa9c0 100644
--- a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
+++ b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
@@ -30,6 +30,7 @@ import com.thoughtworks.xstream.io.xml.QNameMap;
 import com.thoughtworks.xstream.io.xml.StaxReader;
 import com.thoughtworks.xstream.io.xml.StaxWriter;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.util.IOHelper;
 
diff --git a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogMBeanExporterTest.java b/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogMBeanExporterTest.java
deleted file mode 100644
index 4c24e50..0000000
--- a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogMBeanExporterTest.java
+++ /dev/null
@@ -1,52 +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.catalog;
-
-import java.lang.management.ManagementFactory;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-@Deprecated
-@Ignore
-public class CamelCatalogMBeanExporterTest {
-
-    private CamelCatalogMBeanExporter exporter = new CamelCatalogMBeanExporter();
-
-    @Test
-    public void testMBeanExporter() throws Exception {
-        exporter.init();
-
-        ObjectName on = exporter.getObjectName();
-
-        MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
-        assertTrue("MBean should be regsistered", mBeanServer.isRegistered(on));
-
-        String schema = (String) mBeanServer.invoke(on, "componentJSonSchema", new Object[]{"docker"}, new String[]{"java.lang.String"});
-        assertNotNull(schema);
-        assertTrue("Should be docker schema", schema.contains("org.apache.camel.component.docker.DockerComponent"));
-
-        exporter.destroy();
-        assertFalse("MBean should be unregsistered", mBeanServer.isRegistered(on));
-    }
-}
diff --git a/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java
index ed00daf..2a0c13a 100644
--- a/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-hazelcast-starter/src/main/java/org/apache/camel/component/hazelcast/springboot/HazelcastComponentAutoConfiguration.java
@@ -21,7 +21,7 @@ import java.util.Map;
 import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastComponent;
-import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.support.IntrospectionSupport;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionMessage;
 import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index f254b19..535b21a 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -88,7 +88,7 @@
       <dependency>
         <groupId>com.dropbox.core</groupId>
         <artifactId>dropbox-core-sdk</artifactId>
-        <version>3.0.9</version>
+        <version>3.0.10</version>
       </dependency>
       <dependency>
         <groupId>com.github.dozermapper</groupId>


[camel] 03/44: [CAMEL-12814] Remove deprecated binding component

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e4a9cff66c529e2064db8f987613cf4fd311999a
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 11:46:14 2018 +0200

    [CAMEL-12814] Remove deprecated binding component
---
 camel-core/readme.adoc                             |   5 +-
 .../camel/component/binding/BindingComponent.java  | 101 --------------
 .../binding/BindingConsumerProcessor.java          |  60 --------
 .../camel/component/binding/BindingEndpoint.java   | 153 ---------------------
 .../component/binding/BindingNameComponent.java    |  54 --------
 .../camel/component/binding/BindingProducer.java   |  65 ---------
 .../apache/camel/component/binding/package.html    |  28 ----
 .../services/org/apache/camel/component/binding    |  18 ---
 .../component/jackson/JacksonBindingTest.java      |  64 ---------
 .../component/jacksonxml/JacksonBindingTest.java   |  64 ---------
 .../src/main/docs/netty4-component.adoc            |   2 +-
 components/readme.adoc                             |   7 +-
 docs/user-manual/en/SUMMARY.md                     |   1 -
 .../BindingNameComponentAutoConfiguration.java     | 129 -----------------
 .../BindingNameComponentConfiguration.java         |  55 --------
 15 files changed, 4 insertions(+), 802 deletions(-)

diff --git a/camel-core/readme.adoc b/camel-core/readme.adoc
index 9de5b90..35aaf17 100644
--- a/camel-core/readme.adoc
+++ b/camel-core/readme.adoc
@@ -6,7 +6,7 @@ Components
 
 
 // components: START
-Number of Components: 26 in 1 JAR artifacts (1 deprecated)
+Number of Components: 25 in 1 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -15,9 +15,6 @@ Number of Components: 26 in 1 JAR artifacts (1 deprecated)
 | link:src/main/docs/bean-component.adoc[Bean] (camel-core) +
 `bean:beanName` | 1.0 | The bean component is for invoking Java beans from Camel.
 
-| link:src/main/docs/binding-component.adoc[Binding] (camel-core) +
-`binding:bindingName:delegateUri` | 2.11 | *deprecated* The binding component is used for as a of wrapping an Endpoint in a contract with a data format.
-
 | link:src/main/docs/browse-component.adoc[Browse] (camel-core) +
 `browse:name` | 1.3 | The browse component is used for viewing the messages received on endpoints that supports BrowsableEndpoint.
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/binding/BindingComponent.java b/camel-core/src/main/java/org/apache/camel/component/binding/BindingComponent.java
deleted file mode 100644
index b1e8264..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/binding/BindingComponent.java
+++ /dev/null
@@ -1,101 +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.component.binding;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.spi.Binding;
-import org.apache.camel.util.ObjectHelper;
-
-import static org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint;
-
-/**
- * A composite {@link org.apache.camel.Component} which creates a {@link BindingEndpoint} from a
- * configured {@link Binding} instance and using the optional {@link #setUriPrefix(String)}
- * and {@link #setUriPostfix(String)} to create the underlying endpoint from the remaining URI
- *
- * @deprecated use {@link org.apache.camel.component.binding.BindingNameComponent}
- */
-@Deprecated
-public class BindingComponent extends DefaultComponent {
-    private Binding binding;
-    private String uriPrefix;
-    private String uriPostfix;
-
-    public BindingComponent() {
-    }
-
-    public BindingComponent(Binding binding) {
-        this.binding = binding;
-    }
-
-    public BindingComponent(Binding binding, String uriPrefix) {
-        this(binding);
-        this.uriPrefix = uriPrefix;
-    }
-
-    public BindingComponent(Binding binding, String uriPrefix, String uriPostfix) {
-        this(binding, uriPrefix);
-        this.uriPostfix = uriPostfix;
-    }
-
-    public Binding getBinding() {
-        return binding;
-    }
-
-    public void setBinding(Binding binding) {
-        this.binding = binding;
-    }
-
-    public String getUriPostfix() {
-        return uriPostfix;
-    }
-
-    public void setUriPostfix(String uriPostfix) {
-        this.uriPostfix = uriPostfix;
-    }
-
-    public String getUriPrefix() {
-        return uriPrefix;
-    }
-
-    public void setUriPrefix(String uriPrefix) {
-        this.uriPrefix = uriPrefix;
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        Binding bindingValue = getBinding();
-        ObjectHelper.notNull(bindingValue, "binding");
-
-        CamelContext camelContext = getCamelContext();
-        String delegateURI = createDelegateURI(remaining, parameters);
-        Endpoint delegate = getMandatoryEndpoint(camelContext, delegateURI);
-        return new BindingEndpoint(uri, this, bindingValue, delegate);
-    }
-
-    protected String createDelegateURI(String remaining, Map<String, Object> parameters) {
-        return getOrEmpty(uriPrefix) + remaining + getOrEmpty(uriPostfix);
-    }
-
-    protected static String getOrEmpty(String text) {
-        return text != null ? text : "";
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/binding/BindingConsumerProcessor.java b/camel-core/src/main/java/org/apache/camel/component/binding/BindingConsumerProcessor.java
deleted file mode 100644
index f6d8b80..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/binding/BindingConsumerProcessor.java
+++ /dev/null
@@ -1,60 +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.component.binding;
-
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.ServiceHelper;
-
-/**
- * Applies a {@link org.apache.camel.spi.Binding} to a consumer
- */
-public class BindingConsumerProcessor extends ServiceSupport implements Processor {
-    private final BindingEndpoint endpoint;
-    private final Processor delegateProcessor;
-    private final Processor bindingProcessor;
-
-    public BindingConsumerProcessor(BindingEndpoint endpoint, Processor delegateProcessor) {
-        this.endpoint = endpoint;
-        this.delegateProcessor = delegateProcessor;
-        this.bindingProcessor = endpoint.getBinding().createConsumeProcessor();
-    }
-
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        endpoint.pipelineBindingProcessor(bindingProcessor, exchange, delegateProcessor);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        // inject CamelContext
-        if (bindingProcessor instanceof CamelContextAware) {
-            ((CamelContextAware) bindingProcessor).setCamelContext(endpoint.getCamelContext());
-        }
-        if (delegateProcessor instanceof CamelContextAware) {
-            ((CamelContextAware) delegateProcessor).setCamelContext(endpoint.getCamelContext());
-        }
-        ServiceHelper.startServices(bindingProcessor, delegateProcessor);
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        ServiceHelper.stopServices(delegateProcessor, bindingProcessor);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/binding/BindingEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/binding/BindingEndpoint.java
deleted file mode 100644
index 0af96df..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/binding/BindingEndpoint.java
+++ /dev/null
@@ -1,153 +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.component.binding;
-
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.processor.PipelineHelper;
-import org.apache.camel.spi.Binding;
-import org.apache.camel.spi.HasBinding;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.ServiceHelper;
-
-import static org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint;
-
-/**
- * The binding component is used for as a of wrapping an Endpoint in a contract with a data format.
- *
- * In Camel terms a binding is a way of wrapping an Endpoint in a contract; such as a Data Format,
- * a Content Enricher or validation step. Bindings are completely optional and you can choose to use
- * them on any camel endpoint.
- * Bindings are inspired by the work of SwitchYard project adding service contracts to various technologies
- * like Camel and many others. But rather than the SwitchYard approach of wrapping Camel in SCA,
- * Camel Bindings provide a way of wrapping Camel endpoints with contracts inside the Camel framework itself;
- * so you can use them easily inside any Camel route.
- *
- * Applies a {@link org.apache.camel.spi.Binding} to an underlying {@link Endpoint} so that the binding processes messages
- * before its sent to the endpoint and processes messages received by the endpoint consumer before its passed
- * to the real consumer.
- *
- * @deprecated use {@link org.apache.camel.spi.Contract} instead
- */
-@Deprecated @Metadata(deprecationNode = "Use org.apache.camel.spi.Contract instead")
-@UriEndpoint(firstVersion = "2.11.0", scheme = "binding", title = "Binding", syntax = "binding:bindingName:delegateUri",
-    consumerClass = BindingConsumerProcessor.class, label = "core,transformation")
-public class BindingEndpoint extends DefaultEndpoint implements HasBinding {
-
-    @UriPath @Metadata(required = "true")
-    private final String bindingName;
-    @UriPath @Metadata(required = "true")
-    private final String delegateUri;
-    private Binding binding;
-    private Endpoint delegate;
-
-    @Deprecated
-    public BindingEndpoint(String uri, Component component, Binding binding, Endpoint delegate) {
-        super(uri, component);
-        this.binding = binding;
-        this.delegate = delegate;
-        this.bindingName = null;
-        this.delegateUri = null;
-    }
-
-    public BindingEndpoint(String uri, Component component, String bindingName, String delegateUri) {
-        super(uri, component);
-        this.bindingName = bindingName;
-        this.delegateUri = delegateUri;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return new BindingProducer(this);
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        Processor bindingProcessor = new BindingConsumerProcessor(this, processor);
-        return delegate.createConsumer(bindingProcessor);
-    }
-
-    @Override
-    public boolean isSingleton() {
-        return true;
-    }
-
-    @Override
-    public Binding getBinding() {
-        return binding;
-    }
-
-    public Endpoint getDelegate() {
-        return delegate;
-    }
-
-    /**
-     * Name of the binding to lookup in the Camel registry.
-     */
-    public String getBindingName() {
-        return bindingName;
-    }
-
-    /**
-     * Uri of the delegate endpoint.
-     */
-    public String getDelegateUri() {
-        return delegateUri;
-    }
-
-    /**
-     * Applies the {@link Binding} processor to the given exchange before passing it on to the delegateProcessor (either a producer or consumer)
-     */
-    public void pipelineBindingProcessor(Processor bindingProcessor, Exchange exchange, Processor delegateProcessor) throws Exception {
-        bindingProcessor.process(exchange);
-
-        Exchange delegateExchange = PipelineHelper.createNextExchange(exchange);
-        delegateProcessor.process(delegateExchange);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        if (binding == null) {
-            binding = CamelContextHelper.mandatoryLookup(getCamelContext(), bindingName, Binding.class);
-        }
-        if (delegate == null) {
-            delegate = getMandatoryEndpoint(getCamelContext(), delegateUri);
-        }
-
-        // inject CamelContext
-        if (binding instanceof CamelContextAware) {
-            ((CamelContextAware) binding).setCamelContext(getCamelContext());
-        }
-        ServiceHelper.startServices(delegate, binding);
-        super.doStart();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        ServiceHelper.stopServices(delegate, binding);
-        super.doStop();
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/binding/BindingNameComponent.java b/camel-core/src/main/java/org/apache/camel/component/binding/BindingNameComponent.java
deleted file mode 100644
index 31b32db..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/binding/BindingNameComponent.java
+++ /dev/null
@@ -1,54 +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.component.binding;
-
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
-
-/**
- * The <a href="http://camel.apache.org/binding.html>Binding Component<a/> is for composing a Camel component with a Camel data-format as a single binding unit.
- * <p/>
- *
- * A Binding component using the URI form <code>binding:nameOfBinding:endpointURI</code>
- * to extract the binding name which is then resolved from the registry and used to create a
- * {@link BindingEndpoint} from the underlying {@link Endpoint}
- */
-public class BindingNameComponent extends UriEndpointComponent {
-
-    protected static final String BAD_FORMAT_MESSAGE = "URI should be of the format binding:nameOfBinding:endpointURI";
-
-    public BindingNameComponent() {
-        super(BindingEndpoint.class);
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        int idx = remaining.indexOf(":");
-        if (idx <= 0) {
-            throw new IllegalArgumentException(BAD_FORMAT_MESSAGE);
-        }
-        String bindingName = remaining.substring(0, idx);
-        String delegateURI = remaining.substring(idx + 1);
-        if (delegateURI.isEmpty()) {
-            throw new IllegalArgumentException(BAD_FORMAT_MESSAGE);
-        }
-        return new BindingEndpoint(uri, this, bindingName, delegateURI);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/binding/BindingProducer.java b/camel-core/src/main/java/org/apache/camel/component/binding/BindingProducer.java
deleted file mode 100644
index 4d728e7..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/binding/BindingProducer.java
+++ /dev/null
@@ -1,65 +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.component.binding;
-
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultProducer;
-import org.apache.camel.util.ServiceHelper;
-
-/**
- * A {@link Producer} which applies a {@link org.apache.camel.spi.Binding} before invoking the underlying {@link Producer} on the {@link Endpoint}
- */
-public class BindingProducer extends DefaultProducer {
-    private final BindingEndpoint endpoint;
-    private final Processor bindingProcessor;
-    private final Producer delegateProducer;
-
-    public BindingProducer(BindingEndpoint endpoint) throws Exception {
-        super(endpoint);
-        this.endpoint = endpoint;
-        this.bindingProcessor = endpoint.getBinding().createProduceProcessor();
-        this.delegateProducer = endpoint.getDelegate().createProducer();
-    }
-
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        endpoint.pipelineBindingProcessor(bindingProcessor, exchange, delegateProducer);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        // inject CamelContext
-        if (bindingProcessor instanceof CamelContextAware) {
-            ((CamelContextAware) bindingProcessor).setCamelContext(getEndpoint().getCamelContext());
-        }
-        if (delegateProducer instanceof CamelContextAware) {
-            ((CamelContextAware) delegateProducer).setCamelContext(getEndpoint().getCamelContext());
-        }
-        ServiceHelper.startServices(bindingProcessor, delegateProducer);
-        super.doStart();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        ServiceHelper.stopServices(delegateProducer, bindingProcessor);
-        super.doStop();
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/binding/package.html b/camel-core/src/main/java/org/apache/camel/component/binding/package.html
deleted file mode 100644
index 525f550..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/binding/package.html
+++ /dev/null
@@ -1,28 +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.
-
--->
-<html>
-<head>
-</head>
-<body>
-
-The <a href="http://camel.apache.org/binding.html">Binding Component</a> which is
-a way of wrapping an Endpoint in a contract; such as a Data Format, a Content Enricher or validation step.
-
-</body>
-</html>
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/binding b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/binding
deleted file mode 100644
index ff5a73d..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/binding
+++ /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.binding.BindingNameComponent
\ No newline at end of file
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonBindingTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonBindingTest.java
deleted file mode 100644
index 2ac3e6d..0000000
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonBindingTest.java
+++ /dev/null
@@ -1,64 +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.component.jackson;
-
-import javax.naming.Context;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.binding.BindingComponent;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.binding.DataFormatBinding;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
-
-public class JacksonBindingTest extends CamelTestSupport {
-    protected MockEndpoint results;
-
-    @Test
-    public void testMarshalAndUnmarshalPojo() throws Exception {
-        TestPojo in = new TestPojo();
-        in.setName("Camel");
-
-        results.expectedMessageCount(1);
-        results.message(0).body().isInstanceOf(TestPojo.class);
-        results.message(0).body().isEqualTo(in);
-
-        template.sendBody("direct:start", in);
-        results.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        results = getMockEndpoint("mock:results");
-        return new RouteBuilder() {
-
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("jsonmq:orders").to("file:target/copyOfMessages");
-                from("jsonmq:orders").to(results);
-            }
-        };
-    }
-
-    @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        JacksonDataFormat format = new JacksonDataFormat(TestPojo.class);
-        context.bind("jsonmq", new BindingComponent(new DataFormatBinding(format), "file:target/"));
-        return context;
-    }
-}
diff --git a/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/JacksonBindingTest.java b/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/JacksonBindingTest.java
deleted file mode 100644
index 97b049f..0000000
--- a/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/JacksonBindingTest.java
+++ /dev/null
@@ -1,64 +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.component.jacksonxml;
-
-import javax.naming.Context;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.binding.BindingComponent;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.binding.DataFormatBinding;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
-
-public class JacksonBindingTest extends CamelTestSupport {
-    protected MockEndpoint results;
-
-    @Test
-    public void testMarshalAndUnmarshalPojo() throws Exception {
-        TestPojo in = new TestPojo();
-        in.setName("Camel");
-
-        results.expectedMessageCount(1);
-        results.message(0).body().isInstanceOf(TestPojo.class);
-        results.message(0).body().isEqualTo(in);
-
-        template.sendBody("direct:start", in);
-        results.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        results = getMockEndpoint("mock:results");
-        return new RouteBuilder() {
-
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("jsonmq:orders").to("file:target/copyOfMessages");
-                from("jsonmq:orders").to(results);
-            }
-        };
-    }
-
-    @Override
-    protected Context createJndiContext() throws Exception {
-        Context context = super.createJndiContext();
-        JacksonXMLDataFormat format = new JacksonXMLDataFormat(TestPojo.class);
-        context.bind("jsonmq", new BindingComponent(new DataFormatBinding(format), "file:target/"));
-        return context;
-    }
-}
diff --git a/components/camel-netty4/src/main/docs/netty4-component.adoc b/components/camel-netty4/src/main/docs/netty4-component.adoc
index 705c6d7..4fc283a 100644
--- a/components/camel-netty4/src/main/docs/netty4-component.adoc
+++ b/components/camel-netty4/src/main/docs/netty4-component.adoc
@@ -179,7 +179,7 @@ The component supports 78 options, which are listed below.
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *camel.component.netty4.configuration.allow-default-codec* | The netty component installs a default codec if both, encoder/deocder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | Boolean
+| *camel.component.netty4.configuration.allow-default-codec* | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | Boolean
 | *camel.component.netty4.configuration.allow-serialized-headers* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | Boolean
 | *camel.component.netty4.configuration.auto-append-delimiter* | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | Boolean
 | *camel.component.netty4.configuration.backlog* | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting. |  | Integer
diff --git a/components/readme.adoc b/components/readme.adoc
index 7d8a917..055e173 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -2,7 +2,7 @@ Components
 ^^^^^^^^^^
 
 // components: START
-Number of Components: 281 in 185 JAR artifacts (1 deprecated)
+Number of Components: 280 in 185 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -125,9 +125,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-beanstalk/src/main/docs/beanstalk-component.adoc[Beanstalk] (camel-beanstalk) +
 `beanstalk:connectionSettings` | 2.15 | The beanstalk component is used for job retrieval and post-processing of Beanstalk jobs.
 
-| link:../camel-core/src/main/docs/binding-component.adoc[Binding] (camel-core) +
-`binding:bindingName:delegateUri` | 2.11 | *deprecated* The binding component is used for as a of wrapping an Endpoint in a contract with a data format.
-
 | link:camel-bonita/src/main/docs/bonita-component.adoc[Bonita] (camel-bonita) +
 `bonita:operation` | 2.19 | Used for communicating with a remote Bonita BPM process engine.
 
@@ -1007,7 +1004,7 @@ Miscellaneous Components
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
 // others: START
-Number of Miscellaneous Components: 31 in 31 JAR artifacts (0 deprecated)
+Number of Miscellaneous Components: 30 in 30 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index fbf4435..9173deb 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -86,7 +86,6 @@
 <!-- core components: START -->
 * Core Components
 	* [Bean](bean-component.adoc)
-	* [Binding](binding-component.adoc)
 	* [Browse](browse-component.adoc)
 	* [Class](class-component.adoc)
 	* [Control Bus](controlbus-component.adoc)
diff --git a/platforms/spring-boot/components-starter/camel-core-starter/src/main/java/org/apache/camel/component/binding/springboot/BindingNameComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-core-starter/src/main/java/org/apache/camel/component/binding/springboot/BindingNameComponentAutoConfiguration.java
deleted file mode 100644
index 30c9566..0000000
--- a/platforms/spring-boot/components-starter/camel-core-starter/src/main/java/org/apache/camel/component/binding/springboot/BindingNameComponentAutoConfiguration.java
+++ /dev/null
@@ -1,129 +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.component.binding.springboot;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.annotation.Generated;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.binding.BindingNameComponent;
-import org.apache.camel.spi.ComponentCustomizer;
-import org.apache.camel.spi.HasId;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.ComponentConfigurationProperties;
-import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
-import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
-import org.apache.camel.spring.boot.util.GroupCondition;
-import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Lazy;
-
-/**
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@Configuration
-@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class,
-        BindingNameComponentAutoConfiguration.GroupConditions.class})
-@AutoConfigureAfter(CamelAutoConfiguration.class)
-@EnableConfigurationProperties({ComponentConfigurationProperties.class,
-        BindingNameComponentConfiguration.class})
-public class BindingNameComponentAutoConfiguration {
-
-    private static final Logger LOGGER = LoggerFactory
-            .getLogger(BindingNameComponentAutoConfiguration.class);
-    @Autowired
-    private ApplicationContext applicationContext;
-    @Autowired
-    private CamelContext camelContext;
-    @Autowired
-    private BindingNameComponentConfiguration configuration;
-    @Autowired(required = false)
-    private List<ComponentCustomizer<BindingNameComponent>> customizers;
-
-    static class GroupConditions extends GroupCondition {
-        public GroupConditions() {
-            super("camel.component", "camel.component.binding");
-        }
-    }
-
-    @Lazy
-    @Bean(name = "binding-component")
-    @ConditionalOnMissingBean(BindingNameComponent.class)
-    public BindingNameComponent configureBindingNameComponent()
-            throws Exception {
-        BindingNameComponent component = new BindingNameComponent();
-        component.setCamelContext(camelContext);
-        Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(configuration, parameters, null,
-                false);
-        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
-            Object value = entry.getValue();
-            Class<?> paramClass = value.getClass();
-            if (paramClass.getName().endsWith("NestedConfiguration")) {
-                Class nestedClass = null;
-                try {
-                    nestedClass = (Class) paramClass.getDeclaredField(
-                            "CAMEL_NESTED_CLASS").get(null);
-                    HashMap<String, Object> nestedParameters = new HashMap<>();
-                    IntrospectionSupport.getProperties(value, nestedParameters,
-                            null, false);
-                    Object nestedProperty = nestedClass.newInstance();
-                    CamelPropertiesHelper.setCamelProperties(camelContext,
-                            nestedProperty, nestedParameters, false);
-                    entry.setValue(nestedProperty);
-                } catch (NoSuchFieldException e) {
-                }
-            }
-        }
-        CamelPropertiesHelper.setCamelProperties(camelContext, component,
-                parameters, false);
-        if (ObjectHelper.isNotEmpty(customizers)) {
-            for (ComponentCustomizer<BindingNameComponent> customizer : customizers) {
-                boolean useCustomizer = (customizer instanceof HasId)
-                        ? HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.binding.customizer",
-                                ((HasId) customizer).getId())
-                        : HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.binding.customizer");
-                if (useCustomizer) {
-                    LOGGER.debug("Configure component {}, with customizer {}",
-                            component, customizer);
-                    customizer.customize(component);
-                }
-            }
-        }
-        return component;
-    }
-}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-core-starter/src/main/java/org/apache/camel/component/binding/springboot/BindingNameComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-core-starter/src/main/java/org/apache/camel/component/binding/springboot/BindingNameComponentConfiguration.java
deleted file mode 100644
index 0fa054b..0000000
--- a/platforms/spring-boot/components-starter/camel-core-starter/src/main/java/org/apache/camel/component/binding/springboot/BindingNameComponentConfiguration.java
+++ /dev/null
@@ -1,55 +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.component.binding.springboot;
-
-import javax.annotation.Generated;
-import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * The binding component is used for as a of wrapping an Endpoint in a contract
- * with a data format.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@ConfigurationProperties(prefix = "camel.component.binding")
-public class BindingNameComponentConfiguration
-        extends
-            ComponentConfigurationPropertiesCommon {
-
-    /**
-     * Whether to enable auto configuration of the binding component. This is
-     * enabled by default.
-     */
-    private Boolean enabled;
-    /**
-     * Whether the component should resolve property placeholders on itself when
-     * starting. Only properties which are of String type can use property
-     * placeholders.
-     */
-    private Boolean resolvePropertyPlaceholders = true;
-
-    public Boolean getResolvePropertyPlaceholders() {
-        return resolvePropertyPlaceholders;
-    }
-
-    public void setResolvePropertyPlaceholders(
-            Boolean resolvePropertyPlaceholders) {
-        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
-    }
-}
\ No newline at end of file


[camel] 14/44: [CAMEL-12818] Remove multiParameterArray, enrichRef, pollEnrichRef

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a15c653469eddeeb763a6db42acda378aec8c59a
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Sep 25 09:46:16 2018 +0200

    [CAMEL-12818] Remove multiParameterArray, enrichRef, pollEnrichRef
---
 camel-core/src/main/docs/bean-component.adoc       |   3 +-
 camel-core/src/main/docs/class-component.adoc      |   3 +-
 camel-core/src/main/docs/eips/bean-eip.adoc        |   3 +-
 camel-core/src/main/docs/eips/loadBalance-eip.adoc |   2 +-
 camel-core/src/main/docs/simple-language.adoc      |   2 +-
 .../src/main/java/org/apache/camel/Exchange.java   |   2 -
 .../component/bean/AbstractBeanProcessor.java      |  16 --
 .../apache/camel/component/bean/BeanEndpoint.java  |  22 --
 .../apache/camel/component/bean/BeanProcessor.java |   8 -
 .../apache/camel/component/bean/MethodInfo.java    |  42 +---
 .../org/apache/camel/model/BeanDefinition.java     |  22 --
 .../apache/camel/model/ProcessorDefinition.java    | 275 +--------------------
 .../java/org/apache/camel/model/ToDefinition.java  |  12 -
 .../camel/component/bean/BeanEndpointTest.java     |   1 -
 .../apache/camel/component/bean/BeanInfoTest.java  |   3 -
 .../bean/BeanMethodWithMultipleParametersTest.java |  98 --------
 .../camel/component/bean/BeanNoCacheTest.java      |   2 +-
 .../camel/processor/enricher/EnricherRefTest.java  |   2 +-
 .../processor/enricher/PollEnricherRefTest.java    |   2 +-
 .../routingslip/RoutingSlipWithExceptionTest.java  |   2 +-
 .../camel/runtimecatalog/JSonSchemaHelperTest.java |   7 +-
 .../cxf/jaxrs/CxfRsConsumerWithBeanTest.java       |   4 +-
 22 files changed, 29 insertions(+), 504 deletions(-)

diff --git a/camel-core/src/main/docs/bean-component.adoc b/camel-core/src/main/docs/bean-component.adoc
index e8f777a..b4277f8 100644
--- a/camel-core/src/main/docs/bean-component.adoc
+++ b/camel-core/src/main/docs/bean-component.adoc
@@ -52,7 +52,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (5 parameters):
+==== Query Parameters (4 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -60,7 +60,6 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *method* (producer) | Sets the name of the method to invoke on the bean |  | String
 | *cache* (advanced) | If enabled, Camel will cache the result of the first Registry look-up. Cache can be enabled if the bean in the Registry is defined as a singleton scope. |  | Boolean
-| *multiParameterArray* (advanced) | *Deprecated* How to treat the parameters which are passed from the message body; if it is true, the message body should be an array of parameters. Note: This option is used internally by Camel, and is not intended for end users to use. Deprecation note: This option is used internally by Camel, and is not intended for end users to use. | false | boolean
 | *parameters* (advanced) | Used for configuring additional properties on the bean |  | Map
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 |===
diff --git a/camel-core/src/main/docs/class-component.adoc b/camel-core/src/main/docs/class-component.adoc
index cece0d1..83a9c98 100644
--- a/camel-core/src/main/docs/class-component.adoc
+++ b/camel-core/src/main/docs/class-component.adoc
@@ -55,7 +55,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (5 parameters):
+==== Query Parameters (4 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -63,7 +63,6 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *method* (producer) | Sets the name of the method to invoke on the bean |  | String
 | *cache* (advanced) | If enabled, Camel will cache the result of the first Registry look-up. Cache can be enabled if the bean in the Registry is defined as a singleton scope. |  | Boolean
-| *multiParameterArray* (advanced) | *Deprecated* How to treat the parameters which are passed from the message body; if it is true, the message body should be an array of parameters. Note: This option is used internally by Camel, and is not intended for end users to use. Deprecation note: This option is used internally by Camel, and is not intended for end users to use. | false | boolean
 | *parameters* (advanced) | Used for configuring additional properties on the bean |  | Map
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 |===
diff --git a/camel-core/src/main/docs/eips/bean-eip.adoc b/camel-core/src/main/docs/eips/bean-eip.adoc
index d3c3917..f8c2be8 100644
--- a/camel-core/src/main/docs/eips/bean-eip.adoc
+++ b/camel-core/src/main/docs/eips/bean-eip.adoc
@@ -16,7 +16,7 @@ the link:registry.html[Registry]
 === EIP options
 
 // eip options: START
-The Bean EIP supports 5 options which are listed below:
+The Bean EIP supports 4 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
@@ -25,7 +25,6 @@ The Bean EIP supports 5 options which are listed below:
 | *method* | Sets the method name on the bean to use |  | String
 | *beanType* | Sets the Class of the bean |  | String
 | *cache* | Caches the bean lookup, to avoid lookup up bean on every usage. | true | Boolean
-| *multiParameterArray* | *Deprecated* Whether the message body is an array type. | false | Boolean
 |===
 // eip options: END
 
diff --git a/camel-core/src/main/docs/eips/loadBalance-eip.adoc b/camel-core/src/main/docs/eips/loadBalance-eip.adoc
index 8023c64..d670bd4 100644
--- a/camel-core/src/main/docs/eips/loadBalance-eip.adoc
+++ b/camel-core/src/main/docs/eips/loadBalance-eip.adoc
@@ -17,7 +17,7 @@ Camel provides the following policies out-of-the-box:
 | Failover | In case of failures the exchange will be tried on the next endpoint.
 | Weighted Round-Robin | *Camel 2.5*: The weighted load balancing policy allows you to specify a processing load distribution ratio for each server with respect to the others. In addition to the weight, endpoint selection is then further refined using *round-robin* distribution based on weight.
 | Weighted Random | *Camel 2.5*: The weighted load balancing policy allows you to specify a processing load distribution ratio for each server with respect to others.In addition to the weight, endpoint selection is then further refined using *random* distribution based on weight.
-| Custom | *Camel 2.8*: From *Camel 2.8* onwards the preferred way of using a custom Load Balancer is to use this policy, instead of using the `@deprecated` ref attribute.
+| Custom | *Camel 2.8*: From *Camel 2.8* onwards the preferred way of using a custom Load Balancer is to use this policy, as the ref attribute is not supported anymore.
 | Circuit Breaker | *Camel 2.14*: Implements the Circuit Breaker pattern as described in "Release it!" book.
 |=======================================================================
 
diff --git a/camel-core/src/main/docs/simple-language.adoc b/camel-core/src/main/docs/simple-language.adoc
index b2b8ad3..89c683c 100644
--- a/camel-core/src/main/docs/simple-language.adoc
+++ b/camel-core/src/main/docs/simple-language.adoc
@@ -46,7 +46,7 @@ language as a Predicate then the literal text
 *must* be enclosed in either single or double quotes. For example:
 `"${body} == 'Camel'"`. Notice how we have single quotes around the
 literal. The old style of using `"body"` and `"header.foo"` to refer to
-the message body and header is @deprecated, and it is encouraged to
+the message body and header is not supported anymore, and it is required to
 always use $\{ } tokens for the built-in functions.
 The range operator now requires the range to be in single quote as well
 as shown: `"${header.zip} between '30000..39999'"`.
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java
index 500b782..55e14b9 100644
--- a/camel-core/src/main/java/org/apache/camel/Exchange.java
+++ b/camel-core/src/main/java/org/apache/camel/Exchange.java
@@ -90,8 +90,6 @@ public interface Exchange {
     String BATCH_SIZE                 = "CamelBatchSize";
     String BATCH_COMPLETE             = "CamelBatchComplete";
     String BEAN_METHOD_NAME           = "CamelBeanMethodName";
-    @Deprecated
-    String BEAN_MULTI_PARAMETER_ARRAY = "CamelBeanMultiParameterArray";
     String BINDING                    = "CamelBinding";
     // do not prefix with Camel and use lower-case starting letter as its a shared key
     // used across other Apache products such as AMQ, SMX etc.
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
index 8e44bd9..f437009 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
@@ -41,7 +41,6 @@ public abstract class AbstractBeanProcessor implements AsyncProcessor {
     private transient Processor processor;
     private transient boolean lookupProcessorDone;
     private final Object lock = new Object();
-    private boolean multiParameterArray;
     private Boolean cache;
     private String method;
     private boolean shorthandMethod;
@@ -162,10 +161,6 @@ public abstract class AbstractBeanProcessor implements AsyncProcessor {
             }
         }
 
-        // set temporary header which is a hint for the bean info that introspect the bean
-        if (isMultiParameterArray()) {
-            in.setHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, Boolean.TRUE);
-        }
         // set explicit method name to invoke as a header, which is how BeanInfo can detect it
         if (explicitMethodName != null) {
             in.setHeader(Exchange.BEAN_METHOD_NAME, explicitMethodName);
@@ -180,9 +175,6 @@ public abstract class AbstractBeanProcessor implements AsyncProcessor {
             return true;
         } finally {
             // must remove headers as they were provisional
-            if (isMultiParameterArray()) {
-                in.removeHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY);
-            }
             if (explicitMethodName != null) {
                 in.removeHeader(Exchange.BEAN_METHOD_NAME);
             }
@@ -217,14 +209,6 @@ public abstract class AbstractBeanProcessor implements AsyncProcessor {
         return method;
     }
 
-    public boolean isMultiParameterArray() {
-        return multiParameterArray;
-    }
-
-    public void setMultiParameterArray(boolean mpArray) {
-        multiParameterArray = mpArray;
-    }
-
     public Boolean getCache() {
         return cache;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
index 00e0c48..fbc1afc 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
@@ -43,10 +43,6 @@ public class BeanEndpoint extends DefaultEndpoint {
     @UriParam(label = "advanced", description = "If enabled, Camel will cache the result of the first Registry look-up."
             + " Cache can be enabled if the bean in the Registry is defined as a singleton scope.")
     private Boolean cache;
-    @UriParam(label = "advanced", description = "How to treat the parameters which are passed from the message body."
-            + "true means the message body should be an array of parameters.")
-    @Deprecated @Metadata(deprecationNode = "This option is used internally by Camel, and is not intended for end users to use.")
-    private boolean multiParameterArray;
     @UriParam(prefix = "bean.", label = "advanced", description = "Used for configuring additional properties on the bean", multiValue = true)
     private Map<String, Object> parameters;
 
@@ -102,7 +98,6 @@ public class BeanEndpoint extends DefaultEndpoint {
             if (method != null) {
                 processor.setMethod(method);
             }
-            processor.setMultiParameterArray(isMultiParameterArray());
             processor.setCache(cache);
             if (parameters != null) {
                 setProperties(processor, parameters);
@@ -130,23 +125,6 @@ public class BeanEndpoint extends DefaultEndpoint {
         this.beanName = beanName;
     }
 
-    public boolean isMultiParameterArray() {
-        return multiParameterArray;
-    }
-
-    /**
-     * How to treat the parameters which are passed from the message body;
-     * if it is true, the message body should be an array of parameters.
-     * <p/>
-     * Note: This option is used internally by Camel, and is not intended for end users to use.
-     *
-     * @deprecated this option is used internally by Camel, and is not intended for end users to use
-     */
-    @Deprecated
-    public void setMultiParameterArray(boolean mpArray) {
-        multiParameterArray = mpArray;
-    }
-
     public boolean isCache() {
         return cache != null ? cache : false;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
index cbf68c4..7410508 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
@@ -69,14 +69,6 @@ public class BeanProcessor extends ServiceSupport implements AsyncProcessor {
         return delegate.getMethod();
     }
 
-    public boolean isMultiParameterArray() {
-        return delegate.isMultiParameterArray();
-    }
-
-    public void setMultiParameterArray(boolean mpArray) {
-        delegate.setMultiParameterArray(mpArray);
-    }
-
     public Boolean getCache() {
         return delegate.getCache();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index 1461b2c..00e040d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -641,13 +641,6 @@ public class MethodInfo {
         @SuppressWarnings("unchecked")
         public <T> T evaluate(Exchange exchange, Class<T> type) {
             Object body = exchange.getIn().getBody();
-            boolean multiParameterArray = exchange.getIn().getHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, false, boolean.class);
-            if (multiParameterArray) {
-                // Just change the message body to an Object array
-                if (!(body instanceof Object[])) {
-                    body = exchange.getIn().getBody(Object[].class);
-                }
-            }
 
             // if there was an explicit method name to invoke, then we should support using
             // any provided parameter values in the method name
@@ -667,21 +660,18 @@ public class MethodInfo {
             // we need to do this before the expressions gets evaluated as it may contain
             // a @Bean expression which would by mistake read these headers. So the headers
             // must be removed at this point of time
-            if (multiParameterArray) {
-                exchange.getIn().removeHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY);
-            }
             if (methodName != null) {
                 exchange.getIn().removeHeader(Exchange.BEAN_METHOD_NAME);
             }
 
-            Object[] answer = evaluateParameterExpressions(exchange, body, multiParameterArray, it);
+            Object[] answer = evaluateParameterExpressions(exchange, body, it);
             return (T) answer;
         }
 
         /**
          * Evaluates all the parameter expressions
          */
-        private Object[] evaluateParameterExpressions(Exchange exchange, Object body, boolean multiParameterArray, Iterator<?> it) {
+        private Object[] evaluateParameterExpressions(Exchange exchange, Object body, Iterator<?> it) {
             Object[] answer = new Object[expressions.length];
             for (int i = 0; i < expressions.length; i++) {
 
@@ -697,24 +687,16 @@ public class MethodInfo {
                 // the value for the parameter to use
                 Object value = null;
 
-                if (multiParameterArray && body instanceof Object[]) {
-                    // get the value from the array
-                    Object[] array = (Object[]) body;
-                    if (array.length >= i) {
-                        value = array[i];
-                    }
-                } else {
-                    // prefer to use parameter value if given, as they override any bean parameter binding
-                    // we should skip * as its a type placeholder to indicate any type
-                    if (parameterValue != null && !parameterValue.equals("*")) {
-                        // evaluate the parameter value binding
-                        value = evaluateParameterValue(exchange, i, parameterValue, parameterType);
-                    }
-                    // use bean parameter binding, if still no value
-                    Expression expression = expressions[i];
-                    if (value == null && expression != null) {
-                        value = evaluateParameterBinding(exchange, expression, i, parameterType);
-                    }
+                // prefer to use parameter value if given, as they override any bean parameter binding
+                // we should skip * as its a type placeholder to indicate any type
+                if (parameterValue != null && !parameterValue.equals("*")) {
+                    // evaluate the parameter value binding
+                    value = evaluateParameterValue(exchange, i, parameterValue, parameterType);
+                }
+                // use bean parameter binding, if still no value
+                Expression expression = expressions[i];
+                if (value == null && expression != null) {
+                    value = evaluateParameterBinding(exchange, expression, i, parameterType);
                 }
                 // remember the value to use
                 if (value != Void.TYPE) {
diff --git a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java b/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
index 6dc0dbf..62b78f4 100644
--- a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
@@ -53,9 +53,6 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
     private String beanType;
     @XmlAttribute @Metadata(defaultValue = "true")
     private Boolean cache;
-    @XmlAttribute
-    @Deprecated
-    private Boolean multiParameterArray;
     @XmlTransient
     private Class<?> beanClass;
     @XmlTransient
@@ -163,20 +160,6 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
     public void setCache(Boolean cache) {
         this.cache = cache;
     }
-    
-    public Boolean getMultiParameterArray() {
-        return multiParameterArray;
-    }
-
-    /**
-     * Whether the message body is an array type.
-     *
-     * @deprecated is to be replaced with a better solution in Camel 3.0
-     */
-    @Deprecated
-    public void setMultiParameterArray(Boolean multiParameterArray) {
-        this.multiParameterArray = multiParameterArray;
-    }
 
     // Fluent API
     //-------------------------------------------------------------------------
@@ -261,11 +244,6 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
             answer = new BeanProcessor(beanHolder);
         }
         
-        // check for multiParameterArray setting
-        if (multiParameterArray != null) {
-            answer.setMultiParameterArray(multiParameterArray);
-        }
-
         // check for method exists
         if (method != null) {
             answer.setMethod(method);
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 4385cd9..bf1f76e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -24,7 +24,6 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
@@ -869,20 +868,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     }
 
     /**
-     * <a href="http://camel.apache.org/exchange-pattern.html">ExchangePattern:</a>
-     * set the exchange's ExchangePattern {@link ExchangePattern} to be InOnly
-     * <p/>
-     * The pattern set on the {@link Exchange} will be changed from this point going foward.
-     *
-     * @return the builder
-     * @deprecated use {@link #setExchangePattern(org.apache.camel.ExchangePattern)} instead
-     */
-    @Deprecated
-    public Type inOnly() {
-        return setExchangePattern(ExchangePattern.InOnly);
-    }
-
-    /**
      * Sends the message to the given endpoint using an
      * <a href="http://camel.apache.org/event-message.html">Event Message</a> or
      * <a href="http://camel.apache.org/exchange-pattern.html">InOnly exchange pattern</a>
@@ -953,18 +938,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     }
 
     /**
-     * <a href="http://camel.apache.org/exchange-pattern.html">ExchangePattern:</a>
-     * set the exchange's ExchangePattern {@link ExchangePattern} to be InOut
-     *
-     * @return the builder
-     * @deprecated use {@link #setExchangePattern(org.apache.camel.ExchangePattern)} instead
-     */
-    @Deprecated
-    public Type inOut() {
-        return setExchangePattern(ExchangePattern.InOut);
-    }
-
-    /**
      * Sends the message to the given endpoint using an
      * <a href="http://camel.apache.org/request-reply.html">Request Reply</a> or
      * <a href="http://camel.apache.org/exchange-pattern.html">InOut exchange pattern</a>
@@ -1795,75 +1768,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * Creates a routing slip allowing you to route a message consecutively through a series of processing
      * steps where the sequence of steps is not known at design time and can vary for each message.
      * <p/>
-     * The list of URIs will be split based on the default delimiter {@link RoutingSlipDefinition#DEFAULT_DELIMITER}
-     * <p/>
-     * The route slip will be evaluated <i>once</i>, use {@link #dynamicRouter()} if you need even more dynamic routing.
-     *
-     * @param header  is the header that the {@link org.apache.camel.processor.RoutingSlip RoutingSlip}
-     *                class will look in for the list of URIs to route the message to.
-     * @return the builder
-     * @deprecated prefer to use {@link #routingSlip(org.apache.camel.Expression)} instead
-     */
-    @Deprecated
-    public Type routingSlip(String header) {
-        RoutingSlipDefinition<Type> answer = new RoutingSlipDefinition<>(header);
-        addOutput(answer);
-        return (Type) this;
-    }
-    
-    /**
-     * <a href="http://camel.apache.org/routing-slip.html">Routing Slip EIP:</a>
-     * Creates a routing slip allowing you to route a message consecutively through a series of processing
-     * steps where the sequence of steps is not known at design time and can vary for each message.
-     * <p/>
-     * The route slip will be evaluated <i>once</i>, use {@link #dynamicRouter()} if you need even more dynamic routing.
-     *
-     * @param header  is the header that the {@link org.apache.camel.processor.RoutingSlip RoutingSlip}
-     *                class will look in for the list of URIs to route the message to.
-     * @param uriDelimiter  is the delimiter that will be used to split up
-     *                      the list of URIs in the routing slip.
-     * @param ignoreInvalidEndpoints if this parameter is true, routingSlip will ignore the endpoints which
-     *                               cannot be resolved or a producer cannot be created or started 
-     * @return the builder
-     * @deprecated prefer to use {@link #routingSlip()} instead
-     */
-    @Deprecated
-    public Type routingSlip(String header, String uriDelimiter, boolean ignoreInvalidEndpoints) {
-        RoutingSlipDefinition<Type> answer = new RoutingSlipDefinition<>(header, uriDelimiter);
-        answer.setIgnoreInvalidEndpoints(ignoreInvalidEndpoints);
-        addOutput(answer);
-        return (Type) this;
-    }
-
-    /**
-     * <a href="http://camel.apache.org/routing-slip.html">Routing Slip EIP:</a>
-     * Creates a routing slip allowing you to route a message consecutively through a series of processing
-     * steps where the sequence of steps is not known at design time and can vary for each message.
-     * <p/>
-     * The list of URIs will be split based on the default delimiter {@link RoutingSlipDefinition#DEFAULT_DELIMITER}
-     * <p/>
-     * The route slip will be evaluated <i>once</i>, use {@link #dynamicRouter()} if you need even more dynamic routing.
-     *
-     * @param header  is the header that the {@link org.apache.camel.processor.RoutingSlip RoutingSlip}
-     *                class will look in for the list of URIs to route the message to.
-     * @param ignoreInvalidEndpoints if this parameter is true, routingSlip will ignore the endpoints which
-     *                               cannot be resolved or a producer cannot be created or started 
-     * @return the builder
-     * @deprecated prefer to use {@link #routingSlip()} instead
-     */
-    @Deprecated
-    public Type routingSlip(String header, boolean ignoreInvalidEndpoints) {
-        RoutingSlipDefinition<Type> answer = new RoutingSlipDefinition<>(header);
-        answer.setIgnoreInvalidEndpoints(ignoreInvalidEndpoints);
-        addOutput(answer);
-        return (Type) this;
-    }
-    
-    /**
-     * <a href="http://camel.apache.org/routing-slip.html">Routing Slip EIP:</a>
-     * Creates a routing slip allowing you to route a message consecutively through a series of processing
-     * steps where the sequence of steps is not known at design time and can vary for each message.
-     * <p/>
      * The route slip will be evaluated <i>once</i>, use {@link #dynamicRouter()} if you need even more dynamic routing.
      *
      * @param expression  to decide the destinations
@@ -2626,24 +2530,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
 
     /**
      * <a href="http://camel.apache.org/message-translator.html">Message Translator EIP:</a>
-     * Adds the custom processor reference to this destination which could be a final
-     * destination, or could be a transformation in a pipeline
-     *
-     * @param ref   reference to a {@link Processor} to lookup in the registry
-     * @return the builder
-     * @deprecated use {@link #process(String)}
-     */
-    @SuppressWarnings("unchecked")
-    @Deprecated
-    public Type processRef(String ref) {
-        ProcessDefinition answer = new ProcessDefinition();
-        answer.setRef(ref);
-        addOutput(answer);
-        return (Type) this;
-    }
-
-    /**
-     * <a href="http://camel.apache.org/message-translator.html">Message Translator EIP:</a>
      * Adds the custom processor using a fluent builder to this destination which could be a final
      * destination, or could be a transformation in a pipeline
      *
@@ -2776,49 +2662,23 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
         addOutput(answer);
         return (Type) this;
     }
-    
-    /**
-     * <a href="http://camel.apache.org/message-translator.html">Message Translator EIP:</a>
-     * Adds a bean which is invoked which could be a final destination, or could be a transformation in a pipeline
-     *
-     * @param beanType  the bean class, Camel will instantiate an object at runtime
-     * @param method  the method name to invoke on the bean (can be used to avoid ambiguity)
-     * @param multiParameterArray if it is true, camel will treat the message body as an object array which holds
-     *  the multi parameter 
-     * @return the builder
-     * @deprecated the option multiParameterArray is deprecated
-     */
-    @SuppressWarnings("unchecked")
-    @Deprecated
-    public Type bean(Class<?> beanType, String method, boolean multiParameterArray) {
-        BeanDefinition answer = new BeanDefinition();
-        answer.setBeanType(beanType);
-        answer.setMethod(method);
-        answer.setMultiParameterArray(multiParameterArray);
-        addOutput(answer);
-        return (Type) this;
-    }
 
     /**
      * <a href="http://camel.apache.org/message-translator.html">Message Translator EIP:</a>
      * Adds a bean which is invoked which could be a final destination, or could be a transformation in a pipeline
      *
-     * @param beanType  the bean class, Camel will instantiate an object at runtime
+     * @param  beanType  the bean class, Camel will instantiate an object at runtime
      * @param method  the method name to invoke on the bean (can be used to avoid ambiguity)
-     * @param multiParameterArray if it is true, camel will treat the message body as an object array which holds
-     *  the multi parameter
      * @param cache  if enabled, Camel will cache the result of the first Registry look-up.
      *               Cache can be enabled if the bean in the Registry is defined as a singleton scope.
+     *  the multi parameter
      * @return the builder
-     * @deprecated the option multiParameterArray is deprecated
      */
     @SuppressWarnings("unchecked")
-    @Deprecated
-    public Type bean(Class<?> beanType, String method, boolean multiParameterArray, boolean cache) {
+    public Type bean(Class<?> beanType, String method, boolean cache) {
         BeanDefinition answer = new BeanDefinition();
         answer.setBeanType(beanType);
         answer.setMethod(method);
-        answer.setMultiParameterArray(multiParameterArray);
         answer.setCache(cache);
         addOutput(answer);
         return (Type) this;
@@ -3333,72 +3193,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * The difference between this and {@link #pollEnrich(String)} is that this uses a producer
      * to obtain the additional data, where as pollEnrich uses a polling consumer.
      *
-     * @param resourceRef            Reference of resource endpoint for obtaining additional data.
-     * @param aggregationStrategyRef Reference of aggregation strategy to aggregate input data and additional data.
-     * @return the builder
-     * @see org.apache.camel.processor.Enricher
-     * @deprecated use enrich with a <tt>ref:id</tt> as the resourceUri parameter.
-     */
-    @Deprecated
-    public Type enrichRef(String resourceRef, String aggregationStrategyRef) {
-        return enrichRef(resourceRef, aggregationStrategyRef, false);
-    }
-
-    /**
-     * The <a href="http://camel.apache.org/content-enricher.html">Content Enricher EIP</a>
-     * enriches an exchange with additional data obtained from a <code>resourceUri</code>.
-     * <p/>
-     * The difference between this and {@link #pollEnrich(String)} is that this uses a producer
-     * to obtain the additional data, where as pollEnrich uses a polling consumer.
-     *
-     * @param resourceRef            Reference of resource endpoint for obtaining additional data.
-     * @param aggregationStrategyRef Reference of aggregation strategy to aggregate input data and additional data.
-     * @param aggregateOnException   whether to call {@link org.apache.camel.processor.aggregate.AggregationStrategy#aggregate(org.apache.camel.Exchange, org.apache.camel.Exchange)} if
-     *                               an exception was thrown.
-     * @return the builder
-     * @see org.apache.camel.processor.Enricher
-     * @deprecated use enrich with a <tt>ref:id</tt> as the resourceUri parameter.
-     */
-    @Deprecated
-    public Type enrichRef(String resourceRef, String aggregationStrategyRef, boolean aggregateOnException) {
-        return enrichRef(resourceRef, aggregationStrategyRef, false, false);
-    }
-
-    /**
-     * The <a href="http://camel.apache.org/content-enricher.html">Content Enricher EIP</a>
-     * enriches an exchange with additional data obtained from a <code>resourceUri</code>.
-     * <p/>
-     * The difference between this and {@link #pollEnrich(String)} is that this uses a producer
-     * to obtain the additional data, where as pollEnrich uses a polling consumer.
-     *
-     * @param resourceRef            Reference of resource endpoint for obtaining additional data.
-     * @param aggregationStrategyRef Reference of aggregation strategy to aggregate input data and additional data.
-     * @param aggregateOnException   whether to call {@link org.apache.camel.processor.aggregate.AggregationStrategy#aggregate(org.apache.camel.Exchange, org.apache.camel.Exchange)} if
-     *                               an exception was thrown.
-     * @param shareUnitOfWork        whether to share unit of work
-     * @return the builder
-     * @see org.apache.camel.processor.Enricher
-     * @deprecated use enrich with a <tt>ref:id</tt> as the resourceUri parameter.
-     */
-    @Deprecated
-    @SuppressWarnings("unchecked")
-    public Type enrichRef(String resourceRef, String aggregationStrategyRef, boolean aggregateOnException, boolean shareUnitOfWork) {
-        EnrichDefinition answer = new EnrichDefinition();
-        answer.setExpression(new SimpleExpression("ref:" + resourceRef));
-        answer.setAggregationStrategyRef(aggregationStrategyRef);
-        answer.setAggregateOnException(aggregateOnException);
-        answer.setShareUnitOfWork(shareUnitOfWork);
-        addOutput(answer);
-        return (Type) this;
-    }
-
-    /**
-     * The <a href="http://camel.apache.org/content-enricher.html">Content Enricher EIP</a>
-     * enriches an exchange with additional data obtained from a <code>resourceUri</code>.
-     * <p/>
-     * The difference between this and {@link #pollEnrich(String)} is that this uses a producer
-     * to obtain the additional data, where as pollEnrich uses a polling consumer.
-     *
      * @return a expression builder clause to set the expression to use for computing the endpoint to use
      * @see org.apache.camel.processor.PollEnricher
      */
@@ -3623,69 +3417,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * If timeout is negative, we use <tt>receive</tt>. If timeout is 0 then we use <tt>receiveNoWait</tt>
      * otherwise we use <tt>receive(timeout)</tt>.
      *
-     * @param resourceRef            Reference of resource endpoint for obtaining additional data.
-     * @param timeout                timeout in millis to wait at most for data to be available.
-     * @param aggregationStrategyRef Reference of aggregation strategy to aggregate input data and additional data.
-     * @return the builder
-     * @see org.apache.camel.processor.PollEnricher
-     * @deprecated use pollEnrich with a <tt>ref:id</tt> as the resourceUri parameter.
-     */
-    @Deprecated
-    @SuppressWarnings("unchecked")
-    public Type pollEnrichRef(String resourceRef, long timeout, String aggregationStrategyRef) {
-        PollEnrichDefinition pollEnrich = new PollEnrichDefinition();
-        pollEnrich.setExpression(new SimpleExpression("ref:" + resourceRef));
-        pollEnrich.setTimeout(timeout);
-        pollEnrich.setAggregationStrategyRef(aggregationStrategyRef);
-        addOutput(pollEnrich);
-        return (Type) this;
-    }
-
-    /**
-     * The <a href="http://camel.apache.org/content-enricher.html">Content Enricher EIP</a>
-     * enriches an exchange with additional data obtained from a <code>resourceUri</code>
-     * using a {@link org.apache.camel.PollingConsumer} to poll the endpoint.
-     * <p/>
-     * The difference between this and {@link #enrich(String)} is that this uses a consumer
-     * to obtain the additional data, where as enrich uses a producer.
-     * <p/>
-     * The timeout controls which operation to use on {@link org.apache.camel.PollingConsumer}.
-     * If timeout is negative, we use <tt>receive</tt>. If timeout is 0 then we use <tt>receiveNoWait</tt>
-     * otherwise we use <tt>receive(timeout)</tt>.
-     *
-     * @param resourceRef            Reference of resource endpoint for obtaining additional data.
-     * @param timeout                timeout in millis to wait at most for data to be available.
-     * @param aggregationStrategyRef Reference of aggregation strategy to aggregate input data and additional data.
-     * @param aggregateOnException   whether to call {@link org.apache.camel.processor.aggregate.AggregationStrategy#aggregate(org.apache.camel.Exchange, org.apache.camel.Exchange)} if
-     *                               an exception was thrown.
-     * @return the builder
-     * @see org.apache.camel.processor.PollEnricher
-     * @deprecated use pollEnrich with a <tt>ref:id</tt> as the resourceUri parameter.
-     */
-    @Deprecated
-    @SuppressWarnings("unchecked")
-    public Type pollEnrichRef(String resourceRef, long timeout, String aggregationStrategyRef, boolean aggregateOnException) {
-        PollEnrichDefinition pollEnrich = new PollEnrichDefinition();
-        pollEnrich.setExpression(new SimpleExpression("ref:" + resourceRef));
-        pollEnrich.setTimeout(timeout);
-        pollEnrich.setAggregationStrategyRef(aggregationStrategyRef);
-        pollEnrich.setAggregateOnException(aggregateOnException);
-        addOutput(pollEnrich);
-        return (Type) this;
-    }
-
-    /**
-     * The <a href="http://camel.apache.org/content-enricher.html">Content Enricher EIP</a>
-     * enriches an exchange with additional data obtained from a <code>resourceUri</code>
-     * using a {@link org.apache.camel.PollingConsumer} to poll the endpoint.
-     * <p/>
-     * The difference between this and {@link #enrich(String)} is that this uses a consumer
-     * to obtain the additional data, where as enrich uses a producer.
-     * <p/>
-     * The timeout controls which operation to use on {@link org.apache.camel.PollingConsumer}.
-     * If timeout is negative, we use <tt>receive</tt>. If timeout is 0 then we use <tt>receiveNoWait</tt>
-     * otherwise we use <tt>receive(timeout)</tt>.
-     *
      * @param expression             to use an expression to dynamically compute the endpoint to poll from
      * @param timeout                timeout in millis to wait at most for data to be available.
      * @param aggregationStrategyRef Reference of aggregation strategy to aggregate input data and additional data.
diff --git a/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java
index 61c86c0..6c5df76 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java
@@ -80,16 +80,4 @@ public class ToDefinition extends SendDefinition<ToDefinition> {
         this.pattern = pattern;
     }
 
-    /**
-     * Sets the optional {@link ExchangePattern} used to invoke this endpoint
-     *
-     * @deprecated will be removed in the near future. Instead use {@link ProcessorDefinition#inOnly()}
-     * or {@link ProcessorDefinition#inOut()}
-     */
-    @Deprecated
-    public ToDefinition pattern(ExchangePattern pattern) {
-        setPattern(pattern);
-        return this;
-    }
-
 }
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
index d9c0e91..8213760 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/BeanEndpointTest.java
@@ -149,7 +149,6 @@ public class BeanEndpointTest extends ContextTestSupport {
         final BeanEndpoint endpoint = new BeanEndpoint();
         endpoint.setCamelContext(context);
         endpoint.setCache(true);
-        endpoint.setMultiParameterArray(false);
 
         endpoint.setBeanName("foo");
         endpoint.setMethod("hello");
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java
index 7c5ffbe..ed843a8 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/BeanInfoTest.java
@@ -195,9 +195,6 @@ public class BeanInfoTest extends Assert {
         public void inOnlyMethod() {
         }
 
-        public void robustInOnlyMethod() {
-        }
-
         public Object inOutMethod() {
             return null;
         }
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithMultipleParametersTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithMultipleParametersTest.java
deleted file mode 100644
index c1e18b3..0000000
--- a/camel-core/src/test/java/org/apache/camel/component/bean/BeanMethodWithMultipleParametersTest.java
+++ /dev/null
@@ -1,98 +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.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.processor.BeanRouteTest;
-import org.apache.camel.util.jndi.JndiContext;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @version 
- */
-public class BeanMethodWithMultipleParametersTest extends ContextTestSupport {
-    private static final Logger LOG = LoggerFactory.getLogger(BeanRouteTest.class);
-    protected MyBean myBean = new MyBean();
-
-    @Test
-    public void testDummy() throws Exception {
-
-    }
-
-    @Test
-    public void testSendMessageWithURI() throws Exception {
-        Object[] args = {"abc", 5, "def"};
-        template.sendBody("bean:myBean?method=myMethod&multiParameterArray=true", args);
-
-        assertEquals("bean.foo", "abc", myBean.foo);
-        assertEquals("bean.bar", 5, myBean.bar);
-        assertEquals("bean.x", "def", myBean.x);
-    }
-
-    @Test
-    public void testSendMessageWithSettingHeader() throws Exception {
-        Object[] args = {"hello", 123, "world"};
-        template.sendBodyAndHeader("direct:in", args, Exchange.BEAN_MULTI_PARAMETER_ARRAY, true);
-
-        assertEquals("bean.foo", "hello", myBean.foo);
-        assertEquals("bean.bar", 123, myBean.bar);
-        assertEquals("bean.x", "world", myBean.x);
-    }
-
-    @Override
-    protected Context createJndiContext() throws Exception {
-        JndiContext answer = new JndiContext();
-        answer.bind("myBean", myBean);
-        return answer;
-    }
-
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                from("direct:in").to("bean:myBean?method=myMethod");
-            }
-        };
-    }
-
-    public class MyBean {
-        public String foo;
-        public int bar;
-        public String x;
-
-        @Override
-        public String toString() {
-            return "MyBean[foo: " + foo + " bar: " + bar + " x: " + x + "]";
-        }
-
-        public void myMethod(String foo, int bar, String x) {
-            this.foo = foo;
-            this.bar = bar;
-            this.x = x;
-            LOG.info("myMethod() method called on " + this);
-        }
-
-        public void anotherMethod(Object body) {
-            fail("Should not have called this method!");
-        }
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/BeanNoCacheTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/BeanNoCacheTest.java
index 66fed5c..a8202b0 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/BeanNoCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/BeanNoCacheTest.java
@@ -46,7 +46,7 @@ public class BeanNoCacheTest extends ContextTestSupport {
             @Override
             public void configure() throws Exception {
                 from("direct:start")
-                    .bean(MyCoolBean.class, "doSomething", false, false)
+                    .bean(MyCoolBean.class, "doSomething", false)
                     .to("mock:result");
             }
         };
diff --git a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
index 550cb1d..488db77 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
@@ -63,7 +63,7 @@ public class EnricherRefTest extends ContextTestSupport {
             public void configure() throws Exception {
                 cool.setCamelContext(context);
 
-                from("direct:start").enrichRef("cool", "agg");
+                from("direct:start").enrich().simple("ref:cool").aggregationStrategyRef("agg");
             }
         };
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java b/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java
index 59994d0..43cee0a 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherRefTest.java
@@ -67,7 +67,7 @@ public class PollEnricherRefTest extends ContextTestSupport {
             public void configure() throws Exception {
                 cool.setEndpointUriIfNotSpecified("cool");
 
-                from("direct:start").pollEnrichRef("cool", 2000, "agg");
+                from("direct:start").pollEnrich().simple("ref:cool").timeout(2000).aggregationStrategyRef("agg");
             }
         };
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
index 634343a..06bec14 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
@@ -156,7 +156,7 @@ public class RoutingSlipWithExceptionTest extends ContextTestSupport {
             public void configure() {
                 from("direct:start").
                         doTry().
-                        routingSlip(ROUTING_SLIP_HEADER).to("mock:noexception").
+                        routingSlip(header(ROUTING_SLIP_HEADER)).end().to("mock:noexception").
                         doCatch(Exception.class).
                     to("mock:exception");
             }
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java
index ad7e11a..7be832c 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java
@@ -52,13 +52,12 @@ public class JSonSchemaHelperTest extends ContextTestSupport {
         assertEquals("version", rows.get(16).keySet().iterator().next());
 
         rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-        assertEquals(6, rows.size());
+        assertEquals(5, rows.size());
         assertEquals("beanName", rows.get(0).values().iterator().next());
         assertEquals("method", rows.get(1).values().iterator().next());
         assertEquals("cache", rows.get(2).values().iterator().next());
-        assertEquals("multiParameterArray", rows.get(3).values().iterator().next());
-        assertEquals("parameters", rows.get(4).values().iterator().next());
-        assertEquals("synchronous", rows.get(5).values().iterator().next());
+        assertEquals("parameters", rows.get(3).values().iterator().next());
+        assertEquals("synchronous", rows.get(4).values().iterator().next());
     }
 
     @Test
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerWithBeanTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerWithBeanTest.java
index 70706fe..1df5eb4 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerWithBeanTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerWithBeanTest.java
@@ -46,8 +46,8 @@ public class CxfRsConsumerWithBeanTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from(CXF_RS_ENDPOINT_URI).to("bean://service?multiParameterArray=true");
-                from(CXF_RS_ENDPOINT_URI_2).bean(ServiceUtil.class, "invoke", true);
+                from(CXF_RS_ENDPOINT_URI).to("bean://service?method=invoke(${body[0]}, ${body[1]})");
+                from(CXF_RS_ENDPOINT_URI_2).bean(ServiceUtil.class, "invoke(${body[0]}, ${body[1]})");
             };
         };
     }


[camel] 34/44: Isolate o.a.c.management from o.a.c.impl

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 387216d38b6b4ae3d300db7e4c23be40200caea7
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 5 15:24:27 2018 +0200

    Isolate o.a.c.management from o.a.c.impl
---
 .../main/java/org/apache/camel/CamelContext.java   |  5 ++
 .../src/main/java/org/apache/camel/Consumer.java   |  3 +
 .../src/main/java/org/apache/camel/Route.java      |  7 +++
 .../camel}/cluster/ClusterServiceHelper.java       |  3 +-
 .../camel}/cluster/ClusterServiceSelectors.java    |  3 +-
 .../org/apache/camel/support/ServiceHelper.java    |  4 +-
 .../org/apache/camel/builder/RouteBuilder.java     | 21 -------
 .../camel/component/seda/SedaPollingConsumer.java  |  6 ++
 .../impl/cluster/ClusteredRouteController.java     |  2 +
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |  4 +-
 .../impl/cluster/ClusteredRoutePolicyFactory.java  |  1 +
 .../DefaultManagementLifecycleStrategy.java        | 64 +++++++++++-----------
 .../InstrumentationInterceptStrategy.java          | 13 ++---
 .../management/mbean/ManagedClusterService.java    |  2 +-
 .../ManagedThrottlingExceptionRoutePolicy.java     |  4 +-
 .../ManagedThrottlingInflightRoutePolicy.java      |  2 +-
 .../camel/support/EventDrivenPollingConsumer.java  |  5 ++
 .../camel/support/PollingConsumerSupport.java      |  6 ++
 .../camel/support/ProcessorPollingConsumer.java    |  5 ++
 .../apache/camel/support/RoutePolicySupport.java   | 41 ++++----------
 .../ThrottlingExceptionHalfOpenHandler.java        |  2 +-
 .../ThrottlingExceptionRoutePolicy.java            |  4 +-
 .../ThrottlingInflightRoutePolicy.java             |  5 +-
 .../camel/component/test/TestEndpointTest.java     |  5 ++
 .../impl/cluster/ClusterServiceSelectorTest.java   |  5 +-
 .../ManagedThrottlingExceptionRoutePolicyTest.java |  4 +-
 .../ManagedThrottlingInflightRoutePolicyTest.java  |  2 +-
 ...xceptionRoutePolicyHalfOpenHandlerSedaTest.java |  4 +-
 ...ingExceptionRoutePolicyHalfOpenHandlerTest.java |  4 +-
 ...ThrottlingExceptionRoutePolicyHalfOpenTest.java |  2 +-
 ...lingExceptionRoutePolicyKeepOpenOnInitTest.java |  2 +-
 ...tlingExceptionRoutePolicyOpenViaConfigTest.java |  2 +-
 .../ThrottlingExceptionRoutePolicyTest.java        |  4 +-
 .../ThrottlingInflightRoutePolicyTest.java         |  2 +-
 .../component/disruptor/DisruptorConsumer.java     |  5 ++
 .../jms/JmsThrottlingInflightRoutePolicyTest.java  |  2 +-
 .../tx/JMSTransactionThrottlingRoutePolicyTest.xml |  2 +-
 .../camel/component/master/MasterComponent.java    |  2 +-
 .../quartz2/MultiplePoliciesOnRouteTest.java       |  2 +-
 .../camel/routepolicy/quartz2/MultiplePolicies.xml |  2 +-
 .../BackpressurePublisherRoutePolicyTest.java      |  2 +-
 .../ThrottlingInflightRoutePolicyTest.xml          |  2 +-
 .../component/connector/ConnectorProducer.java     |  2 +-
 .../resources/META-INF/spring/camel-server.xml     |  2 +-
 44 files changed, 138 insertions(+), 133 deletions(-)

diff --git a/camel-api/src/main/java/org/apache/camel/CamelContext.java b/camel-api/src/main/java/org/apache/camel/CamelContext.java
index 741475c..704624b 100644
--- a/camel-api/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-api/src/main/java/org/apache/camel/CamelContext.java
@@ -179,6 +179,11 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     String getManagementName();
 
     /**
+     * Sets the name this {@link CamelContext} will be registered in JMX.
+     */
+    void setManagementName(String name);
+
+    /**
      * Gets the version of the this CamelContext.
      *
      * @return the version
diff --git a/camel-api/src/main/java/org/apache/camel/Consumer.java b/camel-api/src/main/java/org/apache/camel/Consumer.java
index 89def42..825fe6a 100644
--- a/camel-api/src/main/java/org/apache/camel/Consumer.java
+++ b/camel-api/src/main/java/org/apache/camel/Consumer.java
@@ -20,4 +20,7 @@ package org.apache.camel;
  * A consumer of message exchanges from an {@link Endpoint}
  */
 public interface Consumer extends Service, EndpointAware {
+
+    Processor getProcessor();
+
 }
diff --git a/camel-api/src/main/java/org/apache/camel/Route.java b/camel-api/src/main/java/org/apache/camel/Route.java
index 53fddce..23c46e0 100644
--- a/camel-api/src/main/java/org/apache/camel/Route.java
+++ b/camel-api/src/main/java/org/apache/camel/Route.java
@@ -74,6 +74,13 @@ public interface Route extends EndpointAware {
     Consumer getConsumer();
 
     /**
+     * Gets the {@link Processor}
+     *
+     * @return the processor
+     */
+    Processor getProcessor();
+
+    /**
      * Whether or not the route supports suspension (suspend and resume)
      *
      * @return <tt>true</tt> if this route supports suspension
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceHelper.java b/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceHelper.java
similarity index 95%
rename from camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceHelper.java
rename to camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceHelper.java
index 22b7706..1571e0f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceHelper.java
+++ b/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceHelper.java
@@ -14,13 +14,12 @@
  * 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.Optional;
 import java.util.Set;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.util.ObjectHelper;
 
 public final class ClusterServiceHelper {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceSelectors.java b/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceSelectors.java
similarity index 98%
rename from camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceSelectors.java
rename to camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceSelectors.java
index aa86a5e..485f648 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusterServiceSelectors.java
+++ b/camel-api/src/main/java/org/apache/camel/cluster/ClusterServiceSelectors.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.Comparator;
@@ -23,7 +23,6 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java b/camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java
index 9ef50b6..111eb37 100644
--- a/camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java
+++ b/camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java
@@ -268,10 +268,10 @@ public final class ServiceHelper {
      * 
      * @param service the service
      * @return <tt>true</tt> if either <tt>resume</tt> method or
-     *         {@link #startService(Service)} was called, <tt>false</tt>
+     *         {@link #startService(Object)} was called, <tt>false</tt>
      *         otherwise.
      * @throws Exception is thrown if error occurred
-     * @see #startService(Service)
+     * @see #startService(Object)
      */
     public static boolean resumeService(Object service) throws Exception {
         if (service instanceof Suspendable && service instanceof SuspendableService) {
diff --git a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index 940c4d7..d5349f2 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -27,7 +27,6 @@ import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.component.properties.PropertiesComponent;
-import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.InterceptDefinition;
 import org.apache.camel.model.InterceptFromDefinition;
@@ -366,17 +365,6 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
         return getRouteCollection().onCompletion();
     }
     
-    // Properties
-    // -----------------------------------------------------------------------
-    public ModelCamelContext getContext() {
-        ModelCamelContext context = super.getContext();
-        if (context == null) {
-            context = createContainer();
-            setContext(context);
-        }
-        return context;
-    }
-
     public void addRoutesToCamelContext(CamelContext context) throws Exception {
         // must configure routes before rests
         configureRoutes((ModelCamelContext) context);
@@ -568,15 +556,6 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
         return this.routeCollection;
     }
 
-    /**
-     * Factory method
-     *
-     * @return the CamelContext
-     */
-    protected ModelCamelContext createContainer() {
-        return new DefaultCamelContext();
-    }
-
     protected void configureRest(RestDefinition rest) {
         // noop
     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java
index ae8ae38..6abbd5d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java
@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.IsSingleton;
+import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.support.PollingConsumerSupport;
 
@@ -36,6 +37,11 @@ public class SedaPollingConsumer extends PollingConsumerSupport implements IsSin
     }
 
     @Override
+    public Processor getProcessor() {
+        return null;
+    }
+
+    @Override
     public Exchange receive() {
         try {
             return getEndpoint().getQueue().take();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
index aae4459..332a4fe 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
@@ -35,11 +35,13 @@ 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.cluster.ClusterServiceSelectors;
 import org.apache.camel.impl.DefaultRouteController;
 import org.apache.camel.meta.Experimental;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
+import org.apache.camel.cluster.ClusterServiceHelper;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index 98420ab..29a7d67 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -37,14 +37,14 @@ 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.cluster.ClusterServiceSelectors;
 import org.apache.camel.management.event.CamelContextStartedEvent;
 import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.cluster.ClusterServiceHelper;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ReferenceCount;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @ManagedResource(description = "Clustered Route policy using")
 public final class ClusteredRoutePolicy extends RoutePolicySupport implements CamelContextAware {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
index 9ff0e2f..ff058a2 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
@@ -20,6 +20,7 @@ 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.cluster.ClusterServiceSelectors;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 5806f35..1971782 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -38,6 +38,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.ManagementStatisticsLevel;
+import org.apache.camel.NamedNode;
 import org.apache.camel.NonManagedService;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
@@ -48,11 +49,8 @@ import org.apache.camel.StartupListener;
 import org.apache.camel.TimerListener;
 import org.apache.camel.VetoCamelContextStartException;
 import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.DefaultEndpointRegistry;
-import org.apache.camel.impl.EventDrivenConsumerRoute;
-import org.apache.camel.impl.ThrottlingExceptionRoutePolicy;
-import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.apache.camel.management.mbean.ManagedAsyncProcessorAwaitManager;
 import org.apache.camel.management.mbean.ManagedBacklogDebugger;
 import org.apache.camel.management.mbean.ManagedBacklogTracer;
@@ -87,6 +85,7 @@ import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.ConsumerCache;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.EndpointRegistry;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.LifecycleStrategy;
@@ -118,7 +117,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
     // the wrapped processors is for performance counters, which are in use for the created routes
     // when a route is removed, we should remove the associated processors from this map
-    private final Map<Processor, KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor>> wrappedProcessors = new HashMap<>();
+    private final Map<Processor, KeyValueHolder<NamedNode, InstrumentationProcessor>> wrappedProcessors = new HashMap<>();
     private final List<PreRegisterService> preServices = new ArrayList<>();
     private final TimerListenerManager loadTimer = new ManagedLoadTimer();
     private final TimerListenerManagerStartupListener loadTimerStartupListener = new TimerListenerManagerStartupListener();
@@ -149,7 +148,11 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         Object mc = getManagementObjectStrategy().getManagedObjectForCamelContext(context);
 
         String name = context.getName();
-        String managementName = context.getManagementNameStrategy().getName();
+        String managementName = context.getManagementName();
+
+        if (managementName == null) {
+            managementName = context.getManagementNameStrategy().getName();
+        }
 
         try {
             boolean done = false;
@@ -189,9 +192,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         }
 
         // set the name we are going to use
-        if (context instanceof DefaultCamelContext) {
-            ((DefaultCamelContext) context).setManagementName(managementName);
-        }
+        context.setManagementName(managementName);
 
         try {
             manageObject(mc);
@@ -503,8 +504,8 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             answer = new ManagedConsumerCache(context, (ConsumerCache) service);
         } else if (service instanceof ProducerCache) {
             answer = new ManagedProducerCache(context, (ProducerCache) service);
-        } else if (service instanceof DefaultEndpointRegistry) {
-            answer = new ManagedEndpointRegistry(context, (DefaultEndpointRegistry) service);
+        } else if (service instanceof EndpointRegistry) {
+            answer = new ManagedEndpointRegistry(context, (EndpointRegistry) service);
         } else if (service instanceof TypeConverterRegistry) {
             answer = new ManagedTypeConverterRegistry(context, (TypeConverterRegistry) service);
         } else if (service instanceof RestRegistry) {
@@ -545,7 +546,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         // 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
-        KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor> holder = wrappedProcessors.get(processor);
+        KeyValueHolder<NamedNode, InstrumentationProcessor> holder = wrappedProcessors.get(processor);
         if (holder == null) {
             // skip as its not an well known processor we want to manage anyway, such as Channel/UnitOfWork/Pipeline etc.
             return null;
@@ -595,22 +596,19 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
             // get the wrapped instrumentation processor from this route
             // and set me as the counter
-            if (route instanceof EventDrivenConsumerRoute) {
-                EventDrivenConsumerRoute edcr = (EventDrivenConsumerRoute) route;
-                Processor processor = edcr.getProcessor();
-                if (processor instanceof CamelInternalProcessor && mr instanceof ManagedRoute) {
-                    CamelInternalProcessor internal = (CamelInternalProcessor) processor;
-                    ManagedRoute routeMBean = (ManagedRoute) mr;
-
-                    CamelInternalProcessor.InstrumentationAdvice task = internal.getAdvice(CamelInternalProcessor.InstrumentationAdvice.class);
-                    if (task != null) {
-                        // we need to wrap the counter with the camel context so we get stats updated on the context as well
-                        if (camelContextMBean != null) {
-                            CompositePerformanceCounter wrapper = new CompositePerformanceCounter(routeMBean, camelContextMBean);
-                            task.setCounter(wrapper);
-                        } else {
-                            task.setCounter(routeMBean);
-                        }
+            Processor processor = route.getProcessor();
+            if (processor instanceof CamelInternalProcessor && mr instanceof ManagedRoute) {
+                CamelInternalProcessor internal = (CamelInternalProcessor) processor;
+                ManagedRoute routeMBean = (ManagedRoute) mr;
+
+                CamelInternalProcessor.InstrumentationAdvice task = internal.getAdvice(CamelInternalProcessor.InstrumentationAdvice.class);
+                if (task != null) {
+                    // we need to wrap the counter with the camel context so we get stats updated on the context as well
+                    if (camelContextMBean != null) {
+                        CompositePerformanceCounter wrapper = new CompositePerformanceCounter(routeMBean, camelContextMBean);
+                        task.setCounter(wrapper);
+                    } else {
+                        task.setCounter(routeMBean);
                     }
                 }
             }
@@ -746,7 +744,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
         // Create a map (ProcessorType -> PerformanceCounter)
         // to be passed to InstrumentationInterceptStrategy.
-        Map<ProcessorDefinition<?>, PerformanceCounter> registeredCounters = new HashMap<>();
+        Map<NamedNode, PerformanceCounter> registeredCounters = new HashMap<>();
 
         // Each processor in a route will have its own performance counter.
         // These performance counter will be embedded to InstrumentationProcessor
@@ -775,9 +773,9 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         for (Route route : routes) {
             String id = route.getId();
 
-            Iterator<KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor>> it = wrappedProcessors.values().iterator();
+            Iterator<KeyValueHolder<NamedNode, InstrumentationProcessor>> it = wrappedProcessors.values().iterator();
             while (it.hasNext()) {
-                KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor> holder = it.next();
+                KeyValueHolder<NamedNode, InstrumentationProcessor> holder = it.next();
                 RouteDefinition def = ProcessorDefinitionHelper.getRoute(holder.getKey());
                 if (def != null && id.equals(def.getId())) {
                     it.remove();
@@ -788,7 +786,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
     }
 
     private void registerPerformanceCounters(RouteContext routeContext, ProcessorDefinition<?> processor,
-                                             Map<ProcessorDefinition<?>, PerformanceCounter> registeredCounters) {
+                                             Map<NamedNode, PerformanceCounter> registeredCounters) {
 
         // traverse children if any exists
         List<ProcessorDefinition<?>> children = processor.getOutputs();
diff --git a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
index 0a1fe79..186fc2c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
@@ -22,7 +22,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.management.mbean.ManagedPerformanceCounter;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.util.KeyValueHolder;
 
@@ -36,21 +35,21 @@ import org.apache.camel.util.KeyValueHolder;
  */
 public class InstrumentationInterceptStrategy implements InterceptStrategy {
 
-    private Map<ProcessorDefinition<?>, PerformanceCounter> registeredCounters;
-    private final Map<Processor, KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor>> wrappedProcessors;
+    private Map<NamedNode, PerformanceCounter> registeredCounters;
+    private final Map<Processor, KeyValueHolder<NamedNode, InstrumentationProcessor>> wrappedProcessors;
 
-    public InstrumentationInterceptStrategy(Map<ProcessorDefinition<?>, PerformanceCounter> registeredCounters,
-            Map<Processor, KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor>> wrappedProcessors) {
+    public InstrumentationInterceptStrategy(Map<NamedNode, PerformanceCounter> registeredCounters,
+            Map<Processor, KeyValueHolder<NamedNode, InstrumentationProcessor>> wrappedProcessors) {
         this.registeredCounters = registeredCounters;
         this.wrappedProcessors = wrappedProcessors;
     }
 
-    public PerformanceCounter prepareProcessor(ProcessorDefinition<?> definition, Processor target, InstrumentationProcessor advice) {
+    public PerformanceCounter prepareProcessor(NamedNode definition, Processor target, InstrumentationProcessor advice) {
         PerformanceCounter counter = registeredCounters.get(definition);
         if (counter != null) {
             // add it to the mapping of wrappers so we can later change it to a
             // decorated counter when we register the processor
-            KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor> holder = new KeyValueHolder<>(definition, advice);
+            KeyValueHolder<NamedNode, InstrumentationProcessor> holder = new KeyValueHolder<>(definition, advice);
             wrappedProcessors.put(target, holder);
         }
         return counter;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
index cb4c427..52b8cb5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClusterService.java
@@ -25,7 +25,7 @@ import org.apache.camel.ServiceStatus;
 import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.mbean.ManagedClusterServiceMBean;
 import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.impl.cluster.ClusterServiceHelper;
+import org.apache.camel.cluster.ClusterServiceHelper;
 import org.apache.camel.spi.ManagementStrategy;
 
 public class ManagedClusterService implements ManagedClusterServiceMBean {
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
index 8030eae..2f49504d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingExceptionRoutePolicy.java
@@ -19,8 +19,8 @@ package org.apache.camel.management.mbean;
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedThrottlingExceptionRoutePolicyMBean;
-import org.apache.camel.impl.ThrottlingExceptionHalfOpenHandler;
-import org.apache.camel.impl.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionHalfOpenHandler;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 
 @ManagedResource(description = "Managed ThrottlingExceptionRoutePolicy")
 public class ManagedThrottlingExceptionRoutePolicy extends ManagedService implements ManagedThrottlingExceptionRoutePolicyMBean {
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
index f8c1c74..7c287e4 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
@@ -20,7 +20,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedThrottlingInflightRoutePolicyMBean;
-import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
+import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 
 @ManagedResource(description = "Managed ThrottlingInflightRoutePolicy")
 public class ManagedThrottlingInflightRoutePolicy extends ManagedService implements ManagedThrottlingInflightRoutePolicyMBean {
diff --git a/camel-core/src/main/java/org/apache/camel/support/EventDrivenPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/support/EventDrivenPollingConsumer.java
index 4b424bd..17db223 100644
--- a/camel-core/src/main/java/org/apache/camel/support/EventDrivenPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/support/EventDrivenPollingConsumer.java
@@ -67,6 +67,11 @@ public class EventDrivenPollingConsumer extends PollingConsumerSupport implement
         this.interruptedExceptionHandler = new LoggingExceptionHandler(endpoint.getCamelContext(), EventDrivenPollingConsumer.class);
     }
 
+    @Override
+    public Processor getProcessor() {
+        return this;
+    }
+
     public boolean isBlockWhenFull() {
         return blockWhenFull;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/support/PollingConsumerSupport.java b/camel-core/src/main/java/org/apache/camel/support/PollingConsumerSupport.java
index d69a92f..09224fc 100644
--- a/camel-core/src/main/java/org/apache/camel/support/PollingConsumerSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/PollingConsumerSupport.java
@@ -18,6 +18,7 @@ package org.apache.camel.support;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.PollingConsumer;
+import org.apache.camel.Processor;
 import org.apache.camel.spi.ExceptionHandler;
 
 /**
@@ -42,6 +43,11 @@ public abstract class PollingConsumerSupport extends ServiceSupport implements P
         return endpoint;
     }
 
+    @Override
+    public Processor getProcessor() {
+        return null;
+    }
+
     public ExceptionHandler getExceptionHandler() {
         return exceptionHandler;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/support/ProcessorPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/support/ProcessorPollingConsumer.java
index 9893746..17a63f2 100644
--- a/camel-core/src/main/java/org/apache/camel/support/ProcessorPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/support/ProcessorPollingConsumer.java
@@ -37,6 +37,11 @@ public class ProcessorPollingConsumer extends PollingConsumerSupport implements
         this.processor = processor;
     }
 
+    @Override
+    public Processor getProcessor() {
+        return processor;
+    }
+
     protected void doStart() throws Exception {
         ServiceHelper.startService(processor);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java b/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java
index a74eea8..90d20e4 100644
--- a/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/RoutePolicySupport.java
@@ -21,7 +21,6 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Route;
-import org.apache.camel.Suspendable;
 import org.apache.camel.spi.ExceptionHandler;
 import org.apache.camel.spi.RoutePolicy;
 
@@ -107,21 +106,13 @@ public abstract class RoutePolicySupport extends ServiceSupport implements Route
      * @return <tt>true</tt> if the consumer was suspended or stopped, <tt>false</tt> if the consumer was already suspend or stopped
      */
     public boolean suspendOrStopConsumer(Consumer consumer) throws Exception {
-        if (consumer instanceof Suspendable) {
-            boolean suspended = ServiceHelper.suspendService(consumer);
-            if (suspended) {
-                log.debug("Suspended consumer {}", consumer);
-            } else {
-                log.trace("Consumer already suspended {}", consumer);
-            }
-            return suspended;
-        }
-        if (!ServiceHelper.isStopped(consumer)) {
-            ServiceHelper.stopService(consumer);
-            log.debug("Stopped consumer {}", consumer);
-            return true;
+        boolean suspended = ServiceHelper.suspendService(consumer);
+        if (suspended) {
+            log.debug("Suspended consumer {}", consumer);
+        } else {
+            log.trace("Consumer already suspended {}", consumer);
         }
-        return false;
+        return suspended;
     }
 
     /**
@@ -134,21 +125,13 @@ public abstract class RoutePolicySupport extends ServiceSupport implements Route
      * @return <tt>true</tt> if the consumer was resumed or started, <tt>false</tt> if the consumer was already resumed or started
      */
     public boolean resumeOrStartConsumer(Consumer consumer) throws Exception {
-        if (consumer instanceof Suspendable) {
-            boolean resumed = ServiceHelper.resumeService(consumer);
-            if (resumed) {
-                log.debug("Resumed consumer {}", consumer);
-            } else {
-                log.trace("Consumer already resumed {}", consumer);
-            }
-            return resumed;
-        }
-        if (!ServiceHelper.isStarted(consumer)) {
-            ServiceHelper.startService(consumer);
-            log.debug("Started consumer {}", consumer);
-            return true;
+        boolean resumed = ServiceHelper.resumeService(consumer);
+        if (resumed) {
+            log.debug("Resumed consumer {}", consumer);
+        } else {
+            log.trace("Consumer already resumed {}", consumer);
         }
-        return false;
+        return resumed;
     }
 
     public void startRoute(Route route) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionHalfOpenHandler.java b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionHalfOpenHandler.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionHalfOpenHandler.java
rename to camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionHalfOpenHandler.java
index 84607e76..7bdb502 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionHalfOpenHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionHalfOpenHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.throttling;
 
 /**
  * Used by the {@link ThrottlingExceptionRoutePolicy} to allow custom code
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
rename to camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java
index 042559a..86f3dcb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.throttling;
 
 import java.util.List;
 import java.util.Timer;
@@ -30,8 +30,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Route;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.support.RoutePolicySupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Modeled after the circuit breaker {@link ThrottlingInflightRoutePolicy}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
similarity index 98%
rename from camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
rename to camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
index 4947c47..d662c50 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.impl;
+package org.apache.camel.throttling;
 
 import java.util.EventObject;
 import java.util.LinkedHashSet;
@@ -34,7 +34,6 @@ import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.LoggerFactory;
 
 /**
  * A throttle based {@link org.apache.camel.spi.RoutePolicy} which is capable of dynamic
@@ -224,7 +223,7 @@ public class ThrottlingInflightRoutePolicy extends RoutePolicySupport implements
     }
 
     protected CamelLogger createLogger() {
-        return new CamelLogger(LoggerFactory.getLogger(ThrottlingInflightRoutePolicy.class), getLoggingLevel());
+        return new CamelLogger(log, getLoggingLevel());
     }
 
     private int getSize(Route route, Exchange exchange) {
diff --git a/camel-core/src/test/java/org/apache/camel/component/test/TestEndpointTest.java b/camel-core/src/test/java/org/apache/camel/component/test/TestEndpointTest.java
index 5d61765..03c529e 100644
--- a/camel-core/src/test/java/org/apache/camel/component/test/TestEndpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/test/TestEndpointTest.java
@@ -79,6 +79,11 @@ public class TestEndpointTest extends ContextTestSupport {
                 }
 
                 @Override
+                public Processor getProcessor() {
+                    return null;
+                }
+
+                @Override
                 public void start() throws Exception {
                     // when starting then send a message to the processor
                     Exchange exchange = new DefaultExchange(getEndpoint());
diff --git a/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java b/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
index 318e1fc..d0897da 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/cluster/ClusterServiceSelectorTest.java
@@ -24,13 +24,14 @@ 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.cluster.ClusterServiceSelectors;
 import org.apache.camel.component.file.cluster.FileLockClusterService;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.Assert;
 import org.junit.Test;
 
-import static org.apache.camel.impl.cluster.ClusterServiceHelper.lookupService;
-import static org.apache.camel.impl.cluster.ClusterServiceHelper.mandatoryLookupService;
+import static org.apache.camel.cluster.ClusterServiceHelper.lookupService;
+import static org.apache.camel.cluster.ClusterServiceHelper.mandatoryLookupService;
 
 
 public class ClusterServiceSelectorTest {
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
index 222f3b6..aef3ea8 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingExceptionRoutePolicyTest.java
@@ -27,8 +27,8 @@ import org.apache.camel.Processor;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.api.management.mbean.ManagedThrottlingExceptionRoutePolicyMBean;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.ThrottlingExceptionHalfOpenHandler;
-import org.apache.camel.impl.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionHalfOpenHandler;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.junit.Test;
 
 public class ManagedThrottlingExceptionRoutePolicyTest  extends ManagementTestSupport {
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
index 43141da..2cb25ae 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedThrottlingInflightRoutePolicyTest.java
@@ -23,7 +23,7 @@ import javax.management.ObjectName;
 
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
+import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.junit.Test;
 
 public class ManagedThrottlingInflightRoutePolicyTest extends ManagementTestSupport {
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerSedaTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerSedaTest.java
index 44b89c5..fd66596 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerSedaTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerSedaTest.java
@@ -25,8 +25,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.ThrottlingExceptionHalfOpenHandler;
-import org.apache.camel.impl.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionHalfOpenHandler;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.apache.camel.support.ServiceSupport;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerTest.java
index 24e2f5f..72da3aa 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenHandlerTest.java
@@ -25,8 +25,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.ThrottlingExceptionHalfOpenHandler;
-import org.apache.camel.impl.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionHalfOpenHandler;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.apache.camel.support.ServiceSupport;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenTest.java
index 49ff49a..9791f21 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyHalfOpenTest.java
@@ -25,7 +25,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.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.apache.camel.support.ServiceSupport;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyKeepOpenOnInitTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyKeepOpenOnInitTest.java
index b650dbd..73f30a8 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyKeepOpenOnInitTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyKeepOpenOnInitTest.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.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyOpenViaConfigTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyOpenViaConfigTest.java
index c096826..27fb6be 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyOpenViaConfigTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyOpenViaConfigTest.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.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyTest.java
index c944576..7a410bc 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingExceptionRoutePolicyTest.java
@@ -25,8 +25,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.ThrottlingExceptionHalfOpenHandler;
-import org.apache.camel.impl.ThrottlingExceptionRoutePolicy;
+import org.apache.camel.throttling.ThrottlingExceptionHalfOpenHandler;
+import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.apache.camel.support.ServiceSupport;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingInflightRoutePolicyTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingInflightRoutePolicyTest.java
index d3364e6..935a388 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThrottlingInflightRoutePolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThrottlingInflightRoutePolicyTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.processor;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
+import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.junit.Test;
 
 public class ThrottlingInflightRoutePolicyTest extends ContextTestSupport {
diff --git a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorConsumer.java b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorConsumer.java
index d72e7ab..63afcea 100644
--- a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorConsumer.java
+++ b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorConsumer.java
@@ -59,6 +59,11 @@ public class DisruptorConsumer extends ServiceSupport implements Consumer, Suspe
         this.processor = AsyncProcessorConverterHelper.convert(processor);
     }
 
+    @Override
+    public AsyncProcessor getProcessor() {
+        return processor;
+    }
+
     public ExceptionHandler getExceptionHandler() {
         if (exceptionHandler == null) {
             exceptionHandler = new LoggingExceptionHandler(endpoint.getCamelContext(), getClass());
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java
index 0d01804..6b8e2de 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java
@@ -21,7 +21,7 @@ import javax.jms.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
+import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
diff --git a/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionThrottlingRoutePolicyTest.xml b/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionThrottlingRoutePolicyTest.xml
index d0dac16..ba982c5 100644
--- a/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionThrottlingRoutePolicyTest.xml
+++ b/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionThrottlingRoutePolicyTest.xml
@@ -49,7 +49,7 @@
         <property name="transactionManager" ref="jmsTransactionManager"/>
     </bean>
     
-    <bean id="myPolicy" class="org.apache.camel.impl.ThrottlingInflightRoutePolicy">
+    <bean id="myPolicy" class="org.apache.camel.throttling.ThrottlingInflightRoutePolicy">
         <property name="maxInflightExchanges" value="16"/>
         <property name="resumePercentOfMax" value="25"/>
     </bean>
diff --git a/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java b/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java
index a877b62..8f31a07 100644
--- a/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java
+++ b/components/camel-master/src/main/java/org/apache/camel/component/master/MasterComponent.java
@@ -23,7 +23,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.impl.cluster.ClusterServiceHelper;
-import org.apache.camel.impl.cluster.ClusterServiceSelectors;
+import org.apache.camel.cluster.ClusterServiceSelectors;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
diff --git a/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/MultiplePoliciesOnRouteTest.java b/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/MultiplePoliciesOnRouteTest.java
index 21894ce..56294ac 100644
--- a/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/MultiplePoliciesOnRouteTest.java
+++ b/components/camel-quartz2/src/test/java/org/apache/camel/routepolicy/quartz2/MultiplePoliciesOnRouteTest.java
@@ -23,7 +23,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.quartz2.QuartzComponent;
 import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
+import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-quartz2/src/test/resources/org/apache/camel/routepolicy/quartz2/MultiplePolicies.xml b/components/camel-quartz2/src/test/resources/org/apache/camel/routepolicy/quartz2/MultiplePolicies.xml
index cbb9462..9792fbe 100644
--- a/components/camel-quartz2/src/test/resources/org/apache/camel/routepolicy/quartz2/MultiplePolicies.xml
+++ b/components/camel-quartz2/src/test/resources/org/apache/camel/routepolicy/quartz2/MultiplePolicies.xml
@@ -34,7 +34,7 @@
     <property name="routeStartRepeatInterval" value="3000"/>
   </bean>
 
-  <bean id="throttlePolicy" class="org.apache.camel.impl.ThrottlingInflightRoutePolicy">
+  <bean id="throttlePolicy" class="org.apache.camel.throttling.ThrottlingInflightRoutePolicy">
     <property name="maxInflightExchanges" value="10"/>
   </bean>
 
diff --git a/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BackpressurePublisherRoutePolicyTest.java b/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BackpressurePublisherRoutePolicyTest.java
index 728314c..2e95e92 100644
--- a/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BackpressurePublisherRoutePolicyTest.java
+++ b/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BackpressurePublisherRoutePolicyTest.java
@@ -26,7 +26,7 @@ import org.apache.camel.StatefulService;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.reactive.streams.api.CamelReactiveStreams;
 import org.apache.camel.component.reactive.streams.support.TestSubscriber;
-import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
+import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 import org.reactivestreams.Publisher;
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThrottlingInflightRoutePolicyTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThrottlingInflightRoutePolicyTest.xml
index cdb10c6..402baff 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThrottlingInflightRoutePolicyTest.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ThrottlingInflightRoutePolicyTest.xml
@@ -26,7 +26,7 @@
 
     <!-- START SNIPPET: e1 -->
     <!-- configure our route policy to throttling based -->
-    <bean id="myRoutePolicy" class="org.apache.camel.impl.ThrottlingInflightRoutePolicy">
+    <bean id="myRoutePolicy" class="org.apache.camel.throttling.ThrottlingInflightRoutePolicy">
         <!-- we want at most 10 concurrent inflight exchanges -->
         <property name="maxInflightExchanges" value="10"/>
         <!-- and we want a low water mark value of 20% of the max which means that
diff --git a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java
index 07da23d..122c002 100644
--- a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java
+++ b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorProducer.java
@@ -29,7 +29,7 @@ import org.apache.camel.support.ServiceHelper;
 
 /**
  * Connector {@link Producer} which is capable of performing before and after custom processing
- * via the {@link Pipeline }while processing (ie sending the message).
+ * via the {@link Pipeline} while processing (ie sending the message).
  */
 public class ConnectorProducer extends DefaultAsyncProducer {
 
diff --git a/examples/camel-example-route-throttling/src/main/resources/META-INF/spring/camel-server.xml b/examples/camel-example-route-throttling/src/main/resources/META-INF/spring/camel-server.xml
index 5f1d890..34f08d7 100644
--- a/examples/camel-example-route-throttling/src/main/resources/META-INF/spring/camel-server.xml
+++ b/examples/camel-example-route-throttling/src/main/resources/META-INF/spring/camel-server.xml
@@ -42,7 +42,7 @@
   </bean>
 
   <!-- START SNIPPET: e1 -->
-  <bean id="myPolicy" class="org.apache.camel.impl.ThrottlingInflightRoutePolicy">
+  <bean id="myPolicy" class="org.apache.camel.throttling.ThrottlingInflightRoutePolicy">
     <!-- define the scope to be context scoped so we measure against total inflight exchanges
          that means for both route1, route2 and route3 all together -->
     <property name="scope" value="Context"/>


[camel] 09/44: [CAMEL-12818] Remove deprecated stuff

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 5e01e2f2a6fabce9c3e08590b393d03651808173
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Sep 10 10:44:48 2018 +0200

    [CAMEL-12818] Remove deprecated stuff
---
 .../camel/component/disruptor/DisruptorMultipleConsumersTest.java  | 2 +-
 .../jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java | 1 +
 .../jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java       | 1 +
 .../camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java  | 1 +
 .../java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java  | 1 +
 .../java/org/apache/camel/component/printer/PrinterComponent.java  | 1 +
 .../java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java  | 1 +
 .../main/java/org/apache/camel/catalog/AbstractCamelCatalog.java   | 7 +++++--
 .../apache/camel/karaf/commands/internal/CamelControllerImpl.java  | 1 +
 9 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/DisruptorMultipleConsumersTest.java b/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/DisruptorMultipleConsumersTest.java
index 1fd9c24..53f217d 100644
--- a/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/DisruptorMultipleConsumersTest.java
+++ b/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/DisruptorMultipleConsumersTest.java
@@ -67,7 +67,7 @@ public class DisruptorMultipleConsumersTest extends CamelTestSupport {
         assertMockEndpointsSatisfied();
         resetMocks();
 
-        context.getRouteController().suspendRoute("testRoute");
+        context.getRouteController().resumeRoute("testRoute");
         getMockEndpoint("mock:a").expectedMessageCount(20);
         getMockEndpoint("mock:b").expectedMessageCount(20);
         getMockEndpoint("mock:c").expectedMessageCount(0);
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
index 90534fb..f9de30a 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
index 764004c..2449ef7 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
index f42da21..b922d73 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
index 5e729df..252c86d 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
diff --git a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterComponent.java b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterComponent.java
index 3a5f75b..7e6a9d3 100644
--- a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterComponent.java
+++ b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterComponent.java
@@ -25,6 +25,7 @@ import org.apache.camel.impl.DefaultComponent;
 public class PrinterComponent extends DefaultComponent {
 
     public PrinterComponent() {
+
     }
 
     @Override
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
index 4bff3e3..9f668c0 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
@@ -20,6 +20,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Route;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.management.ManagedCamelContext;
 
 /**
  * Container for exposing {@link org.apache.camel.Route} information
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
index 327b943..8426ac6 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
+++ b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
@@ -1074,6 +1074,7 @@ public abstract class AbstractCamelCatalog {
         return tokens.toArray(new String[tokens.size()]);
     }
 
+<<<<<<< HEAD
     private LanguageValidationResult doValidateSimple(ClassLoader classLoader, String simple, boolean predicate) {
         if (classLoader == null) {
             classLoader = getClass().getClassLoader();
@@ -1164,6 +1165,8 @@ public abstract class AbstractCamelCatalog {
         return answer;
     }
 
+=======
+>>>>>>> 79866dfb308... [CAMEL-12818] Remove deprecated stuff
     public LanguageValidationResult validateLanguagePredicate(ClassLoader classLoader, String language, String text) {
         if ("simple".equals(language)) {
             return doValidateSimple(classLoader, text, true);
@@ -1207,10 +1210,10 @@ public abstract class AbstractCamelCatalog {
         }
 
         Object instance = null;
-        Class clazz = null;
+        Class<?> clazz = null;
         try {
             clazz = classLoader.loadClass(className);
-            instance = clazz.newInstance();
+            instance = clazz.getDeclaredConstructor().newInstance();
         } catch (Exception e) {
             // ignore
         }
diff --git a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
index cfd311a..adf0f81 100644
--- a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
+++ b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.commands.AbstractLocalCamelController;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;


[camel] 10/44: Use the snapshot version of the ActiveMQComponent instead of a hacked version

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 88dbe835f8a7f54d8a168d2cf0f66cda8ac788f9
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Sat Sep 22 17:59:22 2018 +0200

    Use the snapshot version of the ActiveMQComponent instead of a hacked version
---
 .../camel/component/ActiveMQComponent.java         | 196 ---------------------
 parent/pom.xml                                     |   2 +-
 2 files changed, 1 insertion(+), 197 deletions(-)

diff --git a/components/camel-jms/src/test/java/org/apache/activemq/camel/component/ActiveMQComponent.java b/components/camel-jms/src/test/java/org/apache/activemq/camel/component/ActiveMQComponent.java
deleted file mode 100644
index 6ae69e2..0000000
--- a/components/camel-jms/src/test/java/org/apache/activemq/camel/component/ActiveMQComponent.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package org.apache.activemq.camel.component;
-
-import java.net.URISyntaxException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-import javax.jms.Connection;
-import org.apache.activemq.EnhancedConnection;
-import org.apache.activemq.Service;
-import org.apache.activemq.advisory.DestinationSource;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.jms.JmsComponent;
-import org.apache.camel.component.jms.JmsConfiguration;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.jms.connection.SingleConnectionFactory;
-
-public class ActiveMQComponent extends JmsComponent {
-
-    private final CopyOnWriteArrayList<SingleConnectionFactory> singleConnectionFactoryList = new CopyOnWriteArrayList<>();
-    private final CopyOnWriteArrayList<Service> pooledConnectionFactoryServiceList = new CopyOnWriteArrayList<>();
-    private static final transient Logger LOG = LoggerFactory.getLogger(ActiveMQComponent.class);
-    private boolean exposeAllQueues;
-    private CamelEndpointLoader endpointLoader;
-    private EnhancedConnection connection;
-    DestinationSource source;
-
-    public static ActiveMQComponent activeMQComponent() {
-        return new ActiveMQComponent();
-    }
-
-    public static ActiveMQComponent activeMQComponent(String brokerURL) {
-        ActiveMQComponent answer = new ActiveMQComponent();
-        if (answer.getConfiguration() instanceof ActiveMQConfiguration) {
-            ((ActiveMQConfiguration)answer.getConfiguration()).setBrokerURL(brokerURL);
-        }
-
-        return answer;
-    }
-
-    public ActiveMQComponent() {
-    }
-
-    public ActiveMQComponent(CamelContext context) {
-        super(context);
-    }
-
-    public ActiveMQComponent(ActiveMQConfiguration configuration) {
-        this.setConfiguration(configuration);
-    }
-
-    public void setBrokerURL(String brokerURL) {
-        if (this.getConfiguration() instanceof ActiveMQConfiguration) {
-            ((ActiveMQConfiguration)this.getConfiguration()).setBrokerURL(brokerURL);
-        }
-
-    }
-
-    /** @deprecated */
-    public void setUserName(String userName) {
-        this.setUsername(userName);
-    }
-
-    public void setTrustAllPackages(boolean trustAllPackages) {
-        if (this.getConfiguration() instanceof ActiveMQConfiguration) {
-            ((ActiveMQConfiguration)this.getConfiguration()).setTrustAllPackages(trustAllPackages);
-        }
-
-    }
-
-    public boolean isExposeAllQueues() {
-        return this.exposeAllQueues;
-    }
-
-    public void setExposeAllQueues(boolean exposeAllQueues) {
-        this.exposeAllQueues = exposeAllQueues;
-    }
-
-    public void setUsePooledConnection(boolean usePooledConnection) {
-        if (this.getConfiguration() instanceof ActiveMQConfiguration) {
-            ((ActiveMQConfiguration)this.getConfiguration()).setUsePooledConnection(usePooledConnection);
-        }
-
-    }
-
-    public void setUseSingleConnection(boolean useSingleConnection) {
-        if (this.getConfiguration() instanceof ActiveMQConfiguration) {
-            ((ActiveMQConfiguration)this.getConfiguration()).setUseSingleConnection(useSingleConnection);
-        }
-
-    }
-
-    protected void addPooledConnectionFactoryService(Service pooledConnectionFactoryService) {
-        this.pooledConnectionFactoryServiceList.add(pooledConnectionFactoryService);
-    }
-
-    protected void addSingleConnectionFactory(SingleConnectionFactory singleConnectionFactory) {
-        this.singleConnectionFactoryList.add(singleConnectionFactory);
-    }
-
-    protected String convertPathToActualDestination(String path, Map<String, Object> parameters) {
-        Map options = IntrospectionSupport.extractProperties(parameters, "destination.");
-
-        String query;
-        try {
-            query = URISupport.createQueryString(options);
-        } catch (URISyntaxException var6) {
-            throw ObjectHelper.wrapRuntimeCamelException(var6);
-        }
-
-        return ObjectHelper.isNotEmpty(query) ? path + "?" + query : path;
-    }
-
-    protected void doStart() throws Exception {
-        super.doStart();
-        if (this.isExposeAllQueues()) {
-            this.createDestinationSource();
-            this.endpointLoader = new CamelEndpointLoader(this.getCamelContext(), this.source);
-            this.endpointLoader.afterPropertiesSet();
-        }
-
-        if (this.getMessageCreatedStrategy() == null) {
-            this.setMessageCreatedStrategy(new OriginalDestinationPropagateStrategy());
-        }
-
-    }
-
-    protected void createDestinationSource() {
-        try {
-            if (this.source == null) {
-                if (this.connection == null) {
-                    Connection value = this.getConfiguration().getConnectionFactory().createConnection();
-                    if (!(value instanceof EnhancedConnection)) {
-                        throw new IllegalArgumentException("Created JMS Connection is not an EnhancedConnection: " + value);
-                    }
-
-                    this.connection = (EnhancedConnection)value;
-                    this.connection.start();
-                }
-
-                this.source = this.connection.getDestinationSource();
-            }
-        } catch (Throwable var2) {
-            LOG.info("Can't get destination source, endpoint completer will not work", var2);
-        }
-
-    }
-
-    protected void doStop() throws Exception {
-        if (this.source != null) {
-            this.source.stop();
-            this.source = null;
-        }
-
-        if (this.connection != null) {
-            this.connection.close();
-            this.connection = null;
-        }
-
-        Iterator var1 = this.pooledConnectionFactoryServiceList.iterator();
-
-        while(var1.hasNext()) {
-            Service s = (Service)var1.next();
-            s.stop();
-        }
-
-        this.pooledConnectionFactoryServiceList.clear();
-        var1 = this.singleConnectionFactoryList.iterator();
-
-        while(var1.hasNext()) {
-            SingleConnectionFactory s = (SingleConnectionFactory)var1.next();
-            s.destroy();
-        }
-
-        this.singleConnectionFactoryList.clear();
-        super.doStop();
-    }
-
-    public void setConfiguration(JmsConfiguration configuration) {
-        if (configuration instanceof ActiveMQConfiguration) {
-            ((ActiveMQConfiguration)configuration).setActiveMQComponent(this);
-        }
-
-        super.setConfiguration(configuration);
-    }
-
-    protected JmsConfiguration createConfiguration() {
-        ActiveMQConfiguration answer = new ActiveMQConfiguration();
-        answer.setActiveMQComponent(this);
-        return answer;
-    }
-
-}
diff --git a/parent/pom.xml b/parent/pom.xml
index f98b9dc..3581c92 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -40,7 +40,7 @@
     <!-- dependency versions -->
     <abdera-version>1.1.3</abdera-version>
     <!-- Note that activemq dependency is only used for testing! -->
-    <activemq-version>5.15.6</activemq-version>
+    <activemq-version>5.16.0-SNAPSHOT</activemq-version>
     <activemq-artemis-version>2.6.3</activemq-artemis-version>
     <aether-version>1.0.2.v20150114</aether-version>
     <ahc-version>2.5.4</ahc-version>


[camel] 02/44: [CAMEL-12814] Remove deprecated kubernetes component

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit fd73ca30fbb378fa6246686bf41baddcbdd50f44
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 11:10:07 2018 +0200

    [CAMEL-12814] Remove deprecated kubernetes component
---
 camel-core/readme.adoc                             |   2 +-
 .../src/main/docs/kubernetes-component.adoc        | 289 ---------------------
 .../component/kubernetes/KubernetesComponent.java  |  32 ---
 .../component/kubernetes/KubernetesEndpoint.java   | 157 -----------
 .../services/org/apache/camel/component/kubernetes |  18 --
 .../src/main/docs/netty4-component.adoc            |   2 +-
 components/readme.adoc                             | 107 +-------
 docs/user-manual/en/SUMMARY.md                     |  40 ---
 .../KubernetesComponentAutoConfiguration.java      | 128 ---------
 .../KubernetesComponentConfiguration.java          |  54 ----
 10 files changed, 5 insertions(+), 824 deletions(-)

diff --git a/camel-core/readme.adoc b/camel-core/readme.adoc
index 1243b8f..9de5b90 100644
--- a/camel-core/readme.adoc
+++ b/camel-core/readme.adoc
@@ -106,7 +106,7 @@ Data Formats
 
 
 // dataformats: START
-Number of Data Formats: 4 in 38 JAR artifacts (3 deprecated)
+Number of Data Formats: 4 in 34 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
diff --git a/components/camel-kubernetes/src/main/docs/kubernetes-component.adoc b/components/camel-kubernetes/src/main/docs/kubernetes-component.adoc
deleted file mode 100644
index 4b48382..0000000
--- a/components/camel-kubernetes/src/main/docs/kubernetes-component.adoc
+++ /dev/null
@@ -1,289 +0,0 @@
-[[kubernetes-component]]
-== Kubernetes Component (deprecated)
-
-*Available as of Camel version 2.17*
-
-[IMPORTANT]
-====================================================================================
-The composite kubernetes component has been deprecated. Use individual
-component splitted as following.
-
-* <<kubernetes-component,Kubernetes Components>>
-  ** <<openshift-build-configs-component,Kubernetes Build Config>>
-  ** Kubernetes Build
-  ** <<kubernetes-config-maps-component,Kubernetes ConfigMap>>
-  ** <<kubernetes-namespaces-component,Kubernetes Namespace>>
-  ** <<kubernetes-nodes-component,Kubernetes Node>>
-  ** <<kubernetes-persistent-volumes-component,Kubernetes Persistent Volume>>
-  ** <<kubernetes-persistent-volumes-claims-component,Kubernetes Persistent Volume Claim>>
-  ** <<kubernetes-pods-component,Kubernetes Pod>>
-  ** <<kubernetes-replication-controllers-component,Kubernetes Replication Controller>>
-  ** <<kubernetes-resources-quota-component,Kubernetes Resource Quota>>
-  ** <<kubernetes-secrets-component,Kubernetes Secrets>>
-  ** <<kubernetes-service-accounts-component,Kubernetes Service Account>>
-  ** <<kubernetes-services-component,Kubernetes Service>>
-====================================================================================
-
-The *Kubernetes* component is a component for integrating your
-application with Kubernetes standalone or on top of Openshift. 
-
-Maven users will need to add the following dependency to
-their `pom.xml` for this component:
-
-[source,xml]
-------------------------------------------------------------
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-kubernetes</artifactId>
-    <version>x.x.x</version>
-    <!-- use the same version as your Camel core version -->
-</dependency>
-------------------------------------------------------------
-
-=== URI format
-
-[source,java]
-------------------------------
-kubernetes:masterUrl[?options]
-------------------------------
-
-You can append query options to the URI in the following
-format, `?option=value&option=value&...`
-
-=== Options
-
-
-// component options: START
-The Kubernetes component has no options.
-// component options: END
-
-
-
-
-
-
-
-
-// endpoint options: START
-The Kubernetes endpoint is configured using URI syntax:
-
-----
-kubernetes:masterUrl
-----
-
-with the following path and query parameters:
-
-==== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *masterUrl* | *Required* Kubernetes Master url |  | String
-|===
-
-
-==== Query Parameters (29 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *apiVersion* (common) | The Kubernetes API Version to use |  | String
-| *category* (common) | *Required* Kubernetes Producer and Consumer category |  | String
-| *dnsDomain* (common) | The dns domain, used for ServiceCall EIP |  | String
-| *kubernetesClient* (common) | Default KubernetesClient to use if provided |  | KubernetesClient
-| *portName* (common) | The port name, used for ServiceCall EIP |  | String
-| *portProtocol* (common) | The port protocol, used for ServiceCall EIP | tcp | String
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *labelKey* (consumer) | The Consumer Label key when watching at some resources |  | String
-| *labelValue* (consumer) | The Consumer Label value when watching at some resources |  | String
-| *namespace* (consumer) | The namespace |  | String
-| *poolSize* (consumer) | The Consumer pool size | 1 | int
-| *resourceName* (consumer) | The Consumer Resource Name we would like to watch |  | String
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
-| *operation* (producer) | Producer operation to do on Kubernetes |  | String
-| *connectionTimeout* (advanced) | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. |  | Integer
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *caCertData* (security) | The CA Cert Data |  | String
-| *caCertFile* (security) | The CA Cert File |  | String
-| *clientCertData* (security) | The Client Cert Data |  | String
-| *clientCertFile* (security) | The Client Cert File |  | String
-| *clientKeyAlgo* (security) | The Key Algorithm used by the client |  | String
-| *clientKeyData* (security) | The Client Key data |  | String
-| *clientKeyFile* (security) | The Client Key file |  | String
-| *clientKeyPassphrase* (security) | The Client Key Passphrase |  | String
-| *oauthToken* (security) | The Auth Token |  | String
-| *password* (security) | Password to connect to Kubernetes |  | String
-| *trustCerts* (security) | Define if the certs we used are trusted anyway or not |  | Boolean
-| *username* (security) | Username to connect to Kubernetes |  | String
-|===
-// endpoint options: END
-// spring-boot-auto-configure options: START
-=== Spring Boot Auto-Configuration
-
-
-The component supports 16 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *camel.component.kubernetes.cluster.service.attributes* | Custom service attributes. |  | Map
-| *camel.component.kubernetes.cluster.service.cluster-labels* | Set the labels used to identify the pods composing the cluster. |  | Map
-| *camel.component.kubernetes.cluster.service.config-map-name* | Set the name of the ConfigMap used to do optimistic locking (defaults to 'leaders'). |  | String
-| *camel.component.kubernetes.cluster.service.connection-timeout-millis* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. |  | Integer
-| *camel.component.kubernetes.cluster.service.enabled* | Sets if the Kubernetes cluster service should be enabled or not, default is false. | false | Boolean
-| *camel.component.kubernetes.cluster.service.id* | Cluster Service ID |  | String
-| *camel.component.kubernetes.cluster.service.jitter-factor* | A jitter factor to apply in order to prevent all pods to call Kubernetes APIs in the same instant. |  | Double
-| *camel.component.kubernetes.cluster.service.kubernetes-namespace* | Set the name of the Kubernetes namespace containing the pods and the configmap (autodetected by default) |  | String
-| *camel.component.kubernetes.cluster.service.lease-duration-millis* | The default duration of the lease for the current leader. |  | Long
-| *camel.component.kubernetes.cluster.service.master-url* | Set the URL of the Kubernetes master (read from Kubernetes client properties by default). |  | String
-| *camel.component.kubernetes.cluster.service.order* | Service lookup order/priority. |  | Integer
-| *camel.component.kubernetes.cluster.service.pod-name* | Set the name of the current pod (autodetected from container host name by default). |  | String
-| *camel.component.kubernetes.cluster.service.renew-deadline-millis* | The deadline after which the leader must stop its services because it may have lost the leadership. |  | Long
-| *camel.component.kubernetes.cluster.service.retry-period-millis* | The time between two subsequent attempts to check and acquire the leadership. It is randomized using the jitter factor. |  | Long
-| *camel.component.kubernetes.enabled* | Whether to enable auto configuration of the kubernetes component. This is enabled by default. |  | Boolean
-| *camel.component.kubernetes.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
-|===
-// spring-boot-auto-configure options: END
-
-
-
-
-
-
-
-
-=== Headers
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Name |Type |Description
-
-|CamelKubernetesOperation |String |The Producer operation
-
-|CamelKubernetesNamespaceName |String |The Namespace name
-
-|CamelKubernetesNamespaceLabels |Map |The Namespace Labels
-
-|CamelKubernetesServiceLabels |Map |The Service labels
-
-|CamelKubernetesServiceName |String |The Service name
-
-|CamelKubernetesServiceSpec |io.fabric8.kubernetes.api.model.ServiceSpec |The Spec for a Service
-
-|CamelKubernetesReplicationControllersLabels |Map |Replication controller labels
-
-|CamelKubernetesReplicationControllerName |String |Replication controller name
-
-|CamelKubernetesReplicationControllerSpec |io.fabric8.kubernetes.api.model.ReplicationControllerSpec |The Spec for a Replication Controller
-
-|CamelKubernetesReplicationControllerReplicas |Integer |The number of replicas for a Replication Controller during the Scale operation
-
-|CamelKubernetesPodsLabels |Map |Pod labels
-
-|CamelKubernetesPodName |String |Pod name
-
-|CamelKubernetesPodSpec |io.fabric8.kubernetes.api.model.PodSpec |The Spec for a Pod
-
-|CamelKubernetesPersistentVolumesLabels |Map |Persistent Volume labels
-
-|CamelKubernetesPersistentVolumesName |String |Persistent Volume name
-
-|CamelKubernetesPersistentVolumesClaimsLabels |Map |Persistent Volume Claim labels
-
-|CamelKubernetesPersistentVolumesClaimsName |String |Persistent Volume Claim name
-
-|CamelKubernetesPersistentVolumesClaimsSpec |io.fabric8.kubernetes.api.model.PersistentVolumeClaimSpec |The Spec for a Persistent Volume claim
-
-|CamelKubernetesSecretsLabels |Map |Secret labels
-
-|CamelKubernetesSecretsName |String |Secret name
-
-|CamelKubernetesSecret |io.fabric8.kubernetes.api.model.Secret |A Secret Object
-
-|CamelKubernetesResourcesQuotaLabels |Map |Resource Quota labels
-
-|CamelKubernetesResourcesQuotaName |String |Resource Quota name
-
-|CamelKubernetesResourceQuotaSpec |io.fabric8.kubernetes.api.model.ResourceQuotaSpec |The Spec for a Resource Quota
-
-|CamelKubernetesServiceAccountsLabels |Map |Service Account labels
-
-|CamelKubernetesServiceAccountName |String |Service Account name
-
-|CamelKubernetesServiceAccount |io.fabric8.kubernetes.api.model.ServiceAccount |A Service Account object
-
-|CamelKubernetesNodesLabels |Map |Node labels
-
-|CamelKubernetesNodeName |String |Node name
-
-|CamelKubernetesBuildsLabels |Map |Openshift Build labels
-
-|CamelKubernetesBuildName |String |Openshift Build name
-
-|CamelKubernetesBuildConfigsLabels |Map |Openshift Build Config labels
-
-|CamelKubernetesBuildConfigName |String |Openshift Build Config name
-
-|CamelKubernetesEventAction |io.fabric8.kubernetes.client.Watcher.Action |Action watched by the consumer
-
-|CamelKubernetesEventTimestamp |String |Timestamp of the action watched by the consumer
-
-|CamelKubernetesConfigMapName |String |ConfigMap name
-
-|CamelKubernetesConfigMapsLabels |Map |ConfigMap labels
-
-|CamelKubernetesConfigData |Map |ConfigMap Data
-|=======================================================================
-
-
-=== Categories
-
-Actually the camel-kubernetes component supports the following Kubernetes resources
-
-- Namespaces
-- Pods
-- Replication Controllers
-- Services
-- Persistent Volumes
-- Persistent Volume Claims
-- Secrets
-- Resource Quota
-- Service Accounts
-- Nodes
-- Configmaps
-
-In Openshift also
-
-- Builds
-- BuildConfigs
-
-=== Usage
-
-==== Producer examples
-
-Here we show some examples of producer using camel-kubernetes.
-
-==== Create a pod
-
-[source,java]
--------------------------------------------------------------
-from("direct:createPod")
-    .toF("kubernetes://%s?oauthToken=%s&category=pods&operation=createPod", host, authToken);
--------------------------------------------------------------
-
-By using the KubernetesConstants.KUBERNETES_POD_SPEC header you can specify your PodSpec and pass it to this operation.
-
-==== Delete a pod
-
-[source,java]
--------------------------------------------------------------
-from("direct:createPod")
-    .toF("kubernetes://%s?oauthToken=%s&category=pods&operation=deletePod", host, authToken);
--------------------------------------------------------------
-
-By using the KubernetesConstants.KUBERNETES_POD_NAME header you can specify your Pod name and pass it to this operation.
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesComponent.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesComponent.java
deleted file mode 100644
index 1b94147..0000000
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesComponent.java
+++ /dev/null
@@ -1,32 +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.component.kubernetes;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Deprecated
-public class KubernetesComponent extends AbstractKubernetesComponent {
-
-    private static final Logger LOG = LoggerFactory.getLogger(KubernetesComponent.class);
-
-    protected AbstractKubernetesEndpoint doCreateEndpoint(String uri, String remaining, KubernetesConfiguration config) throws Exception {
-        LOG.warn("The syntax 'kubernetes://{}' has been deprecated. Use 'kubernetes-{}://{}' instead.", remaining, config.getCategory(), remaining);
-        KubernetesEndpoint endpoint = new KubernetesEndpoint(uri, this, config);
-        return endpoint;
-    }
-}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java
deleted file mode 100644
index 4dd5162..0000000
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesEndpoint.java
+++ /dev/null
@@ -1,157 +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.component.kubernetes;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.kubernetes.config_maps.KubernetesConfigMapsProducer;
-import org.apache.camel.component.kubernetes.namespaces.KubernetesNamespacesConsumer;
-import org.apache.camel.component.kubernetes.namespaces.KubernetesNamespacesProducer;
-import org.apache.camel.component.kubernetes.nodes.KubernetesNodesConsumer;
-import org.apache.camel.component.kubernetes.nodes.KubernetesNodesProducer;
-import org.apache.camel.component.kubernetes.persistent_volumes.KubernetesPersistentVolumesProducer;
-import org.apache.camel.component.kubernetes.persistent_volumes_claims.KubernetesPersistentVolumesClaimsProducer;
-import org.apache.camel.component.kubernetes.pods.KubernetesPodsConsumer;
-import org.apache.camel.component.kubernetes.pods.KubernetesPodsProducer;
-import org.apache.camel.component.kubernetes.replication_controllers.KubernetesReplicationControllersConsumer;
-import org.apache.camel.component.kubernetes.replication_controllers.KubernetesReplicationControllersProducer;
-import org.apache.camel.component.kubernetes.resources_quota.KubernetesResourcesQuotaProducer;
-import org.apache.camel.component.kubernetes.secrets.KubernetesSecretsProducer;
-import org.apache.camel.component.kubernetes.service_accounts.KubernetesServiceAccountsProducer;
-import org.apache.camel.component.kubernetes.services.KubernetesServicesConsumer;
-import org.apache.camel.component.kubernetes.services.KubernetesServicesProducer;
-import org.apache.camel.component.openshift.build_configs.OpenshiftBuildConfigsProducer;
-import org.apache.camel.component.openshift.builds.OpenshiftBuildsProducer;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Use splitted kubernetes components instead of this composite component.
- * @deprecated
- */
-@Deprecated
-@UriEndpoint(firstVersion = "2.17.0", scheme = "kubernetes", title = "Kubernetes", syntax = "kubernetes:masterUrl", label = "container,cloud,paas")
-public class KubernetesEndpoint extends AbstractKubernetesEndpoint {
-
-    private static final Logger LOG = LoggerFactory.getLogger(KubernetesEndpoint.class);
-
-    @UriParam(enums = "namespaces,services,replicationControllers,pods,persistentVolumes,persistentVolumesClaims,secrets,resourcesQuota,serviceAccounts,nodes,configMaps,builds,buildConfigs")
-    @Metadata(required = "true")
-    private String category;
-
-    public KubernetesEndpoint(String uri, KubernetesComponent component, KubernetesConfiguration config) {
-        super(uri, component, config);
-        category = config.getCategory();
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        if (ObjectHelper.isEmpty(category)) {
-            throw new IllegalArgumentException("A producer category must be specified");
-        } else {
-            switch (category) {
-
-            case KubernetesCategory.NAMESPACES:
-                return new KubernetesNamespacesProducer(this);
-
-            case KubernetesCategory.SERVICES:
-                return new KubernetesServicesProducer(this);
-
-            case KubernetesCategory.REPLICATION_CONTROLLERS:
-                return new KubernetesReplicationControllersProducer(this);
-
-            case KubernetesCategory.PODS:
-                return new KubernetesPodsProducer(this);
-
-            case KubernetesCategory.PERSISTENT_VOLUMES:
-                return new KubernetesPersistentVolumesProducer(this);
-
-            case KubernetesCategory.PERSISTENT_VOLUMES_CLAIMS:
-                return new KubernetesPersistentVolumesClaimsProducer(this);
-
-            case KubernetesCategory.SECRETS:
-                return new KubernetesSecretsProducer(this);
-
-            case KubernetesCategory.RESOURCES_QUOTA:
-                return new KubernetesResourcesQuotaProducer(this);
-
-            case KubernetesCategory.SERVICE_ACCOUNTS:
-                return new KubernetesServiceAccountsProducer(this);
-
-            case KubernetesCategory.NODES:
-                return new KubernetesNodesProducer(this);
-                
-            case KubernetesCategory.CONFIGMAPS:
-                return new KubernetesConfigMapsProducer(this);
-
-            case KubernetesCategory.BUILDS:
-                return new OpenshiftBuildsProducer(this);
-
-            case KubernetesCategory.BUILD_CONFIGS:
-                return new OpenshiftBuildConfigsProducer(this);
-
-            default:
-                throw new IllegalArgumentException("The " + category + " producer category doesn't exist");
-            }
-        }
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        if (ObjectHelper.isEmpty(category)) {
-            throw new IllegalArgumentException("A consumer category must be specified");
-        } else {
-            switch (category) {
-
-            case KubernetesCategory.PODS:
-                return new KubernetesPodsConsumer(this, processor);
-
-            case KubernetesCategory.SERVICES:
-                return new KubernetesServicesConsumer(this, processor);
-
-            case KubernetesCategory.REPLICATION_CONTROLLERS:
-                return new KubernetesReplicationControllersConsumer(this, processor);
-                
-            case KubernetesCategory.NAMESPACES:
-                return new KubernetesNamespacesConsumer(this, processor);
-                
-            case KubernetesCategory.NODES:
-                return new KubernetesNodesConsumer(this, processor);
-
-            default:
-                throw new IllegalArgumentException("The " + category + " consumer category doesn't exist");
-            }
-        }
-    }
-
-    /**
-     * Kubernetes Producer and Consumer category
-     */
-    public String getCategory() {
-        return category;
-    }
-
-    public void setCategory(String category) {
-        this.category = category;
-    }
-
-}
diff --git a/components/camel-kubernetes/src/main/resources/META-INF/services/org/apache/camel/component/kubernetes b/components/camel-kubernetes/src/main/resources/META-INF/services/org/apache/camel/component/kubernetes
deleted file mode 100644
index 4d2f23e..0000000
--- a/components/camel-kubernetes/src/main/resources/META-INF/services/org/apache/camel/component/kubernetes
+++ /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.kubernetes.KubernetesComponent
diff --git a/components/camel-netty4/src/main/docs/netty4-component.adoc b/components/camel-netty4/src/main/docs/netty4-component.adoc
index 2d6eb0b..705c6d7 100644
--- a/components/camel-netty4/src/main/docs/netty4-component.adoc
+++ b/components/camel-netty4/src/main/docs/netty4-component.adoc
@@ -143,7 +143,7 @@ with the following path and query parameters:
 | *udpByteArrayCodec* (advanced) | For UDP only. If enabled the using byte array codec instead of Java serialization protocol. | false | boolean
 | *workerCount* (advanced) | When netty works on nio mode, it uses default workerCount parameter from Netty, which is cpu_core_threads x 2. User can use this operation to override the default workerCount from Netty. |  | int
 | *workerGroup* (advanced) | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. |  | EventLoopGroup
-| *allowDefaultCodec* (codec) | The netty component installs a default codec if both, encoder/deocder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | boolean
+| *allowDefaultCodec* (codec) | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | boolean
 | *autoAppendDelimiter* (codec) | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | boolean
 | *decoder* (codec) | *Deprecated* A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads. |  | ChannelHandler
 | *decoderMaxLineLength* (codec) | The max line length to use for the textline codec. | 1024 | int
diff --git a/components/readme.adoc b/components/readme.adoc
index fadba62..7d8a917 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -146,9 +146,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-caffeine/src/main/docs/caffeine-loadcache-component.adoc[Caffeine LoadCache] (camel-caffeine) +
 `caffeine-loadcache:cacheName` | 2.20 | The caffeine-loadcache component is used for integration with Caffeine Load Cache.
 
-| link:camel-context/src/main/docs/context-component.adoc[Camel Context] (camel-context) +
-`context:contextId:localEndpointUrl` | 2.7 | *deprecated* The context component allows to send/receive messages between Camel routes in a black box way.
-
 | link:camel-cassandraql/src/main/docs/cql-component.adoc[Cassandra CQL] (camel-cassandraql) +
 `cql:beanRef:hosts:port/keyspace` | 2.15 | The cql component aims at integrating Cassandra 2.0 using the CQL3 API (not the Thrift API).
 
@@ -230,9 +227,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-dropbox/src/main/docs/dropbox-component.adoc[Dropbox] (camel-dropbox) +
 `dropbox:operation` | 2.14 | For uploading, downloading and managing files, folders, groups, collaborations, etc on dropbox DOT com.
 
-| link:camel-cache/src/main/docs/cache-component.adoc[EHCache] (camel-cache) +
-`cache:cacheName` | 2.1 | *deprecated* The cache component enables you to perform caching operations using EHCache as the Cache Implementation.
-
 | link:camel-ehcache/src/main/docs/ehcache-component.adoc[Ehcache] (camel-ehcache) +
 `ehcache:cacheName` | 2.18 | The ehcache component enables you to perform caching operations using Ehcache as cache implementation.
 
@@ -242,12 +236,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-elasticsearch-rest/src/main/docs/elasticsearch-rest-component.adoc[Elastichsearch Rest] (camel-elasticsearch-rest) +
 `elasticsearch-rest:clusterName` | 2.21 | The elasticsearch component is used for interfacing with ElasticSearch server using REST API.
 
-| link:camel-elasticsearch/src/main/docs/elasticsearch-component.adoc[Elasticsearch] (camel-elasticsearch) +
-`elasticsearch:clusterName` | 2.11 | *deprecated* The elasticsearch component is used for interfacing with ElasticSearch server.
-
-| link:camel-elasticsearch5/src/main/docs/elasticsearch5-component.adoc[Elasticsearch5] (camel-elasticsearch5) +
-`elasticsearch5:clusterName` | 2.19 | *deprecated* The elasticsearch component is used for interfacing with ElasticSearch server using 5.x API.
-
 | link:camel-elsql/src/main/docs/elsql-component.adoc[ElSQL] (camel-elsql) +
 `elsql:elsqlName:resourceUri` | 2.16 | The elsql component is an extension to the existing SQL Component that uses ElSql to define the SQL queries.
 
@@ -362,24 +350,15 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-hbase/src/main/docs/hbase-component.adoc[HBase] (camel-hbase) +
 `hbase:tableName` | 2.10 | For reading/writing from/to an HBase store (Hadoop database).
 
-| link:camel-hdfs/src/main/docs/hdfs-component.adoc[HDFS] (camel-hdfs) +
-`hdfs:hostName:port/path` | 2.8 | *deprecated* For reading/writing from/to an HDFS filesystem using Hadoop 1.x.
-
 | link:camel-hdfs2/src/main/docs/hdfs2-component.adoc[HDFS2] (camel-hdfs2) +
 `hdfs2:hostName:port/path` | 2.14 | For reading/writing from/to an HDFS filesystem using Hadoop 2.x.
 
 | link:camel-hipchat/src/main/docs/hipchat-component.adoc[Hipchat] (camel-hipchat) +
 `hipchat:protocol:host:port` | 2.15 | The hipchat component supports producing and consuming messages from/to Hipchat service.
 
-| link:camel-http/src/main/docs/http-component.adoc[HTTP] (camel-http) +
-`http:httpUri` | 1.0 | *deprecated* For calling out to external HTTP servers using Apache HTTP Client 3.x.
-
 | link:camel-http4/src/main/docs/http4-component.adoc[HTTP4] (camel-http4) +
 `http4:httpUri` | 2.3 | For calling out to external HTTP servers using Apache HTTP Client 4.x.
 
-| link:camel-ibatis/src/main/docs/ibatis-component.adoc[iBatis] (camel-ibatis) +
-`ibatis:statement` | 1.2 | *deprecated* Performs a query, poll, insert, update or delete in a relational database using Apache iBATIS.
-
 | link:camel-iec60870/src/main/docs/iec60870-client-component.adoc[IEC 60870 Client] (camel-iec60870) +
 `iec60870-client:uriPath` | 2.20 | IEC 60870 component used for telecontrol (supervisory control and data acquisition) such as controlling electric power transmission grids and other geographically widespread control systems.
 
@@ -419,9 +398,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-ironmq/src/main/docs/ironmq-component.adoc[IronMQ] (camel-ironmq) +
 `ironmq:queueName` | 2.17 | The ironmq provides integration with IronMQ an elastic and durable hosted message queue as a service.
 
-| link:camel-javaspace/src/main/docs/javaspace-component.adoc[JavaSpace] (camel-javaspace) +
-`javaspace:url` | 2.1 | *deprecated* Sending and receiving messages through JavaSpace.
-
 | link:camel-jbpm/src/main/docs/jbpm-component.adoc[JBPM] (camel-jbpm) +
 `jbpm:connectionURL` | 2.6 | The jbpm component provides integration with jBPM (Business Process Management).
 
@@ -449,9 +425,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-jing/src/main/docs/jing-component.adoc[Jing] (camel-jing) +
 `jing:resourceUri` | 1.1 | Validates the payload of a message using RelaxNG Syntax using Jing library.
 
-| link:camel-jira/src/main/docs/jira-component.adoc[JIRA] (camel-jira) +
-`jira:type` | 2.15 | *deprecated* The jira component interacts with the JIRA issue tracker.
-
 | link:camel-jms/src/main/docs/jms-component.adoc[JMS] (camel-jms) +
 `jms:destinationType:destinationName` | 1.0 | The jms component allows messages to be sent to (or consumed from) a JMS Queue or Topic.
 
@@ -473,15 +446,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-kafka/src/main/docs/kafka-component.adoc[Kafka] (camel-kafka) +
 `kafka:topic` | 2.13 | The kafka component allows messages to be sent to (or consumed from) Apache Kafka brokers.
 
-| link:camel-kestrel/src/main/docs/kestrel-component.adoc[Kestrel] (camel-kestrel) +
-`kestrel:addresses/queue` | 2.6 | *deprecated* The kestrel component allows messages to be sent to (or consumed from) Kestrel brokers.
-
-| link:camel-krati/src/main/docs/krati-component.adoc[Krati] (camel-krati) +
-`krati:path` | 2.9 | *deprecated* The krati allows the use krati datastores and datasets inside Camel.
-
-| link:camel-kubernetes/src/main/docs/kubernetes-component.adoc[Kubernetes] (camel-kubernetes) +
-`kubernetes:masterUrl` | 2.17 | *deprecated* Use splitted kubernetes components instead of this composite component.
-
 | link:camel-kubernetes/src/main/docs/kubernetes-config-maps-component.adoc[Kubernetes ConfigMap] (camel-kubernetes) +
 `kubernetes-config-maps:masterUrl` | 2.17 | The Kubernetes Configmaps component provides a producer to execute kubernetes configmap operations.
 
@@ -557,9 +521,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-micrometer/src/main/docs/micrometer-component.adoc[Micrometer] (camel-micrometer) +
 `micrometer:metricsType:metricsName` | 2.22 | To collect various metrics directly from Camel routes using the Micrometer library.
 
-| link:camel-mina/src/main/docs/mina-component.adoc[Mina] (camel-mina) +
-`mina:protocol:host:port` | 1.0 | *deprecated* Socket level networking using TCP or UDP with the Apache Mina 1.x library.
-
 | link:camel-mina2/src/main/docs/mina2-component.adoc[Mina2] (camel-mina2) +
 `mina2:protocol:host:port` | 2.10 | Socket level networking using TCP or UDP with the Apache Mina 2.x library.
 
@@ -569,9 +530,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:../camel-core/src/main/docs/mock-component.adoc[Mock] (camel-core) +
 `mock:name` | 1.0 | The mock component is used for testing routes and mediation rules using mocks.
 
-| link:camel-mongodb/src/main/docs/mongodb-component.adoc[MongoDB] (camel-mongodb) +
-`mongodb:connectionBean` | 2.10 | *deprecated* Component for working with documents stored in MongoDB database.
-
 | link:camel-mongodb3/src/main/docs/mongodb3-component.adoc[MongoDB] (camel-mongodb3) +
 `mongodb3:connectionBean` | 2.19 | Component for working with documents stored in MongoDB database.
 
@@ -602,12 +560,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-nats/src/main/docs/nats-component.adoc[Nats] (camel-nats) +
 `nats:servers` | 2.17 | The nats component allows you produce and consume messages from NATS.
 
-| link:camel-netty/src/main/docs/netty-component.adoc[Netty] (camel-netty) +
-`netty:protocol:host:port` | 2.3 | *deprecated* Socket level networking using TCP or UDP with the Netty 3.x library.
-
-| link:camel-netty-http/src/main/docs/netty-http-component.adoc[Netty HTTP] (camel-netty-http) +
-`netty-http:protocol:host:port/path` | 2.12 | *deprecated* Netty HTTP server and client using the Netty 3.x library.
-
 | link:camel-netty4/src/main/docs/netty4-component.adoc[Netty4] (camel-netty4) +
 `netty4:protocol:host:port` | 2.14 | Socket level networking using TCP or UDP with the Netty 4.x library.
 
@@ -626,9 +578,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-milo/src/main/docs/milo-server-component.adoc[OPC UA Server] (camel-milo) +
 `milo-server:itemId` | 2.19 | Make telemetry data available as an OPC UA server
 
-| link:camel-openshift/src/main/docs/openshift-component.adoc[OpenShift] (camel-openshift) +
-`openshift:clientId` | 2.14 | *deprecated* To manage your Openshift 2.x applications.
-
 | link:camel-kubernetes/src/main/docs/openshift-build-configs-component.adoc[Openshift Build Config] (camel-kubernetes) +
 `openshift-build-configs:masterUrl` | 2.17 | The Kubernetes Build Config component provides a producer to execute kubernetes build config operations.
 
@@ -680,9 +629,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-pubnub/src/main/docs/pubnub-component.adoc[PubNub] (camel-pubnub) +
 `pubnub:channel` | 2.19 | To send and receive messages to PubNub data stream network for connected devices.
 
-| link:camel-quartz/src/main/docs/quartz-component.adoc[Quartz] (camel-quartz) +
-`quartz:groupName/timerName` | 1.0 | *deprecated* Provides a scheduled delivery of messages using the Quartz 1.x scheduler.
-
 | link:camel-quartz2/src/main/docs/quartz2-component.adoc[Quartz2] (camel-quartz2) +
 `quartz2:groupName/triggerName` | 2.12 | Provides a scheduled delivery of messages using the Quartz 2.x scheduler.
 
@@ -713,9 +659,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-rmi/src/main/docs/rmi-component.adoc[RMI] (camel-rmi) +
 `rmi:hostname:port/name` | 1.0 | The rmi component is for invoking Java RMI beans from Camel.
 
-| link:camel-routebox/src/main/docs/routebox-component.adoc[RouteBox] (camel-routebox) +
-`routebox:routeboxName` | 2.6 | *deprecated* The routebox component allows to send/receive messages between Camel routes in a black box way.
-
 | link:camel-rss/src/main/docs/rss-component.adoc[RSS] (camel-rss) +
 `rss:feedUri` | 2.0 | The rss component is used for consuming RSS feeds.
 
@@ -842,9 +785,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-twilio/src/main/docs/twilio-component.adoc[Twilio] (camel-twilio) +
 `twilio:apiName/methodName` | 2.20 | The Twilio component allows you to interact with the Twilio REST APIs using Twilio Java SDK.
 
-| link:camel-twitter/src/main/docs/twitter-component.adoc[Twitter] (camel-twitter) +
-`twitter:kind` | 2.10 | *deprecated* Use twitter-directmessage, twitter-search, twitter-streaming and twitter-timeline instead of this component.
-
 | link:camel-twitter/src/main/docs/twitter-directmessage-component.adoc[Twitter Direct Message] (camel-twitter) +
 `twitter-directmessage:user` | 2.10 | The Twitter Direct Message Component consumes/produces user's direct messages.
 
@@ -884,9 +824,6 @@ Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 | link:camel-xchange/src/main/docs/xchange-component.adoc[XChange] (camel-xchange) +
 `xchange:name` | 2.21 | The camel-xchange component provide access to many bitcoin and altcoin exchanges for trading and accessing market data.
 
-| link:camel-xmlrpc/src/main/docs/xmlrpc-component.adoc[XML RPC] (camel-xmlrpc) +
-`xmlrpc:address` | 2.11 | *deprecated* The xmlrpc component is used for sending messages to a XML RPC service.
-
 | link:camel-xmlsecurity/src/main/docs/xmlsecurity-component.adoc[XML Security] (camel-xmlsecurity) +
 `xmlsecurity:command:name` | 2.12 | Used to sign and verify exchanges using the XML signature specification.
 
@@ -922,7 +859,7 @@ Data Formats
 ^^^^^^^^^^^^
 
 // dataformats: START
-Number of Data Formats: 47 in 38 JAR artifacts (3 deprecated)
+Number of Data Formats: 43 in 34 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -954,8 +891,6 @@ Number of Data Formats: 47 in 38 JAR artifacts (3 deprecated)
 
 | link:../camel-core/src/main/docs/gzip-dataformat.adoc[GZip] (camel-core) | 2.0 | The GZip data format is a message compression and de-compression format (which works with the popular gzip/gunzip tools).
 
-| link:camel-hessian/src/main/docs/hessian-dataformat.adoc[Hessian] (camel-hessian) | 2.17 | *deprecated* Hessian data format is used for marshalling and unmarshalling messages using Cauchos Hessian format.
-
 | link:camel-hl7/src/main/docs/hl7-dataformat.adoc[HL7] (camel-hl7) | 2.0 | The HL7 data format can be used to marshal or unmarshal HL7 (Health Care) model objects.
 
 | link:camel-ical/src/main/docs/ical-dataformat.adoc[iCal] (camel-ical) | 2.12 | The iCal dataformat is used for working with iCalendar messages.
@@ -1006,12 +941,6 @@ Number of Data Formats: 47 in 38 JAR artifacts (3 deprecated)
 
 | link:camel-univocity-parsers/src/main/docs/univocity-tsv-dataformat.adoc[uniVocity TSV] (camel-univocity-parsers) | 2.15 | The uniVocity TSV data format is used for working with TSV (Tabular Separated Values) flat payloads.
 
-| link:camel-xmlbeans/src/main/docs/xmlBeans-dataformat.adoc[XML Beans] (camel-xmlbeans) | 1.2 | *deprecated* XML Beans data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
-
-| link:camel-xmljson/src/main/docs/xmljson-dataformat.adoc[XML JSon] (camel-xmljson) | 2.10 | *deprecated* XML JSon data format can convert from XML to JSON and vice-versa directly, without stepping through intermediate POJOs.
-
-| link:camel-xmlrpc/src/main/docs/xmlrpc-dataformat.adoc[XML RPC] (camel-xmlrpc) | 2.11 | The XML RPC data format is used for working with the XML RPC protocol.
-
 | link:camel-xmlsecurity/src/main/docs/secureXML-dataformat.adoc[XML Security] (camel-xmlsecurity) | 2.0 | The XML Security data format facilitates encryption and decryption of XML payloads.
 
 | link:camel-xstream/src/main/docs/xstream-dataformat.adoc[XStream] (camel-xstream) | 1.3 | XSTream data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
@@ -1029,7 +958,7 @@ Expression Languages
 ^^^^^^^^^^^^^^^^^^^^
 
 // languages: START
-Number of Languages: 20 in 11 JAR artifacts (2 deprecated)
+Number of Languages: 18 in 9 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -1053,8 +982,6 @@ Number of Languages: 20 in 11 JAR artifacts (2 deprecated)
 
 | link:camel-jsonpath/src/main/docs/jsonpath-language.adoc[JsonPath] (camel-jsonpath) | 2.13 | To use JsonPath in Camel expressions or predicates.
 
-| link:camel-jxpath/src/main/docs/jxpath-language.adoc[JXPath] (camel-jxpath) | 1.3 | *deprecated* To use JXPath in Camel expressions or predicates.
-
 | link:camel-mvel/src/main/docs/mvel-language.adoc[MVEL] (camel-mvel) | 2.0 | To use MVEL scripts in Camel expressions or predicates.
 
 | link:camel-ognl/src/main/docs/ognl-language.adoc[OGNL] (camel-ognl) | 1.1 | To use OGNL scripts in Camel expressions or predicates.
@@ -1065,8 +992,6 @@ Number of Languages: 20 in 11 JAR artifacts (2 deprecated)
 
 | link:camel-spring/src/main/docs/spel-language.adoc[SpEL] (camel-spring) | 2.7 | To use Spring Expression Language (SpEL) in Camel expressions or predicates.
 
-| link:camel-josql/src/main/docs/sql-language.adoc[SQL] (camel-josql) | 1.0 | *deprecated* To use SQL (on Java beans) in Camel expressions or predicates.
-
 | link:../camel-core/src/main/docs/tokenize-language.adoc[Tokenize] (camel-core) | 2.0 | To use Camel message body or header with a tokenizer in Camel expressions or predicates.
 
 | link:../camel-core/src/main/docs/xtokenize-language.adoc[XML Tokenize] (camel-core) | 2.14 | To use Camel message body or header with a XML tokenizer in Camel expressions or predicates.
@@ -1082,28 +1007,18 @@ Miscellaneous Components
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
 // others: START
-Number of Miscellaneous Components: 44 in 44 JAR artifacts (13 deprecated)
+Number of Miscellaneous Components: 31 in 31 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
 | Component | Available From | Description
 
-| link:camel-bam/src/main/docs/bam.adoc[BAM] (camel-bam) | 1.0 | *deprecated* Business Activity Monitoring
-
 | link:camel-blueprint/src/main/docs/blueprint.adoc[Blueprint] (camel-blueprint) | 2.4 | Using Camel with OSGi Blueprint
 
 | link:camel-cdi/src/main/docs/cdi.adoc[CDI] (camel-cdi) | 2.10 | Using Camel with CDI
 
 | link:camel-cxf-transport/src/main/docs/cxf-transport.adoc[CXF Transport] (camel-cxf-transport) | 2.8 | Camel Transport for Apache CXF
 
-| link:camel-eclipse/src/main/docs/eclipse.adoc[Eclipse] (camel-eclipse) | 2.3 | *deprecated* Camel classpath scanning support for running in Eclipse Desktop Applications
-
-| link:camel-groovy-dsl/src/main/docs/groovy-dsl.adoc[Groovy DSL] (camel-groovy-dsl) | 2.19 | *deprecated* Camel Groovy DSL support
-
-| link:camel-guice/src/main/docs/guice.adoc[Guice] (camel-guice) | 1.5 | *deprecated* Using Camel with Guice
-
-| link:camel-hawtdb/src/main/docs/hawtdb.adoc[HawtDB] (camel-hawtdb) | 2.3 | *deprecated* Using HawtDB as persistent EIP store
-
 | link:camel-headersmap/src/main/docs/headersmap.adoc[Headersmap] (camel-headersmap) | 2.20 | Fast case-insensitive headers map implementation
 
 | link:camel-hystrix/src/main/docs/hystrix.adoc[Hystrix] (camel-hystrix) | 2.18 | Circuit Breaker EIP using Netflix Hystrix
@@ -1122,18 +1037,8 @@ Number of Miscellaneous Components: 44 in 44 JAR artifacts (13 deprecated)
 
 | link:camel-ribbon/src/main/docs/ribbon.adoc[Ribbon] (camel-ribbon) | 2.18 | Using Netflix Ribbon for client side load balancing
 
-| link:camel-ruby/src/main/docs/ruby.adoc[Ruby] (camel-ruby) | 1.0 | *deprecated* Camel Ruby DSL
-
-| link:camel-rx/src/main/docs/rx.adoc[RX] (camel-rx) | 2.11 | *deprecated* Camel Reactive using RxJava library
-
 | link:camel-rxjava2/src/main/docs/rxjava2.adoc[Rxjava2] (camel-rxjava2) | 2.22 | RxJava2 based back-end for Camel's reactive streams component
 
-| link:camel-scala/src/main/docs/scala.adoc[Scala DSL] (camel-scala) | 1.4 | *deprecated* Camel Scala DSL
-
-| link:camel-scr/src/main/docs/scr.adoc[SCR] (camel-scr) | 2.15 | *deprecated* Camel with OSGi SCR (Declarative Services)
-
-| link:camel-servletlistener/src/main/docs/servletlistener.adoc[Servlet Listener] (camel-servletlistener) | 2.11 | *deprecated* Bootstrapping Camel using Servet Listener
-
 | link:camel-shiro/src/main/docs/shiro.adoc[Shiro] (camel-shiro) | 2.5 | Security using Shiro
 
 | link:camel-spring-boot/src/main/docs/spring-boot.adoc[Spring Boot] (camel-spring-boot) | 2.15 | Using Camel with Spring Boot
@@ -1150,8 +1055,6 @@ Number of Miscellaneous Components: 44 in 44 JAR artifacts (13 deprecated)
 
 | link:camel-spring-security/src/main/docs/spring-security.adoc[Spring Security] (camel-spring-security) | 2.3 | Security using Spring Security
 
-| link:camel-swagger/src/main/docs/swagger.adoc[Swagger] (camel-swagger) | 2.14 | *deprecated* Rest-dsl support for using swagger api-doc (uses Scala)
-
 | link:camel-swagger-java/src/main/docs/swagger-java.adoc[Swagger Java] (camel-swagger-java) | 2.16 | Rest-dsl support for using swagger api-doc
 
 | link:camel-test/src/main/docs/test.adoc[Test] (camel-test) | 2.9 | Camel unit testing
@@ -1168,10 +1071,6 @@ Number of Miscellaneous Components: 44 in 44 JAR artifacts (13 deprecated)
 
 | link:camel-testcontainers-spring/src/main/docs/testcontainers-spring.adoc[Testcontainers Spring] (camel-testcontainers-spring) | 2.22 | Camel unit testing with Spring and testcontainers
 
-| link:camel-testng/src/main/docs/testng.adoc[TestNG] (camel-testng) | 2.8 | *deprecated* Camel unit testing with TestNG
-
-| link:camel-urlrewrite/src/main/docs/urlrewrite.adoc[URLRewrite] (camel-urlrewrite) | 2.11 | *deprecated* URL rewrite support for HTTP components
-
 | link:camel-aws-xray/src/main/docs/aws-xray.adoc[XRay] (camel-aws-xray) | 2.21 | Distributed tracing using AWS XRay
 
 | link:camel-zipkin/src/main/docs/zipkin.adoc[Zipkin] (camel-zipkin) | 2.18 | Distributed message tracing using Zipkin
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 49ccab0..fbf4435 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -166,7 +166,6 @@
 	* [Braintree](braintree-component.adoc)
 	* [Caffeine Cache](caffeine-cache-component.adoc)
 	* [Caffeine LoadCache](caffeine-loadcache-component.adoc)
-	* [Camel Context](context-component.adoc)
 	* [Cassandra CQL](cql-component.adoc)
 	* [Chronicle Engine](chronicle-engine-component.adoc)
 	* [Chunk](chunk-component.adoc)
@@ -188,12 +187,9 @@
 	* [Dozer](dozer-component.adoc)
 	* [Drill](drill-component.adoc)
 	* [Dropbox](dropbox-component.adoc)
-	* [EHCache](cache-component.adoc)
 	* [Ehcache](ehcache-component.adoc)
 	* [EJB](ejb-component.adoc)
 	* [Elastichsearch Rest](elasticsearch-rest-component.adoc)
-	* [Elasticsearch](elasticsearch-component.adoc)
-	* [Elasticsearch5](elasticsearch5-component.adoc)
 	* [ElSQL](elsql-component.adoc)
 	* [etcd](etcd-component.adoc)
 	* [Exec](exec-component.adoc)
@@ -231,12 +227,9 @@
 	* [Hazelcast Set](hazelcast-set-component.adoc)
 	* [Hazelcast Topic](hazelcast-topic-component.adoc)
 	* [HBase](hbase-component.adoc)
-	* [HDFS](hdfs-component.adoc)
 	* [HDFS2](hdfs2-component.adoc)
 	* [Hipchat](hipchat-component.adoc)
-	* [HTTP](http-component.adoc)
 	* [HTTP4](http4-component.adoc)
-	* [iBatis](ibatis-component.adoc)
 	* [IEC 60870 Client](iec60870-client-component.adoc)
 	* [IEC 60870 Server](iec60870-server-component.adoc)
 	* [Ignite Cache](ignite-cache-component.adoc)
@@ -251,7 +244,6 @@
 	* [InfluxDB](influxdb-component.adoc)
 	* [IRC](irc-component.adoc)
 	* [IronMQ](ironmq-component.adoc)
-	* [JavaSpace](javaspace-component.adoc)
 	* [JBPM](jbpm-component.adoc)
 	* [JCache](jcache-component.adoc)
 	* [JClouds](jclouds-component.adoc)
@@ -261,7 +253,6 @@
 	* [Jetty Websocket](websocket-component.adoc)
 	* [JGroups](jgroups-component.adoc)
 	* [Jing](jing-component.adoc)
-	* [JIRA](jira-component.adoc)
 	* [JMS](jms-component.adoc)
 	* [JMX](jmx-component.adoc)
 	* [JOLT](jolt-component.adoc)
@@ -269,9 +260,6 @@
 	* [JSON Schema Validator](json-validator-component.adoc)
 	* [JT400](jt400-component.adoc)
 	* [Kafka](kafka-component.adoc)
-	* [Kestrel](kestrel-component.adoc)
-	* [Krati](krati-component.adoc)
-	* [Kubernetes](kubernetes-component.adoc)
 	* [Kubernetes ConfigMap](kubernetes-config-maps-component.adoc)
 	* [Kubernetes Deployments](kubernetes-deployments-component.adoc)
 	* [Kubernetes HPA](kubernetes-hpa-component.adoc)
@@ -294,10 +282,8 @@
 	* [Master](master-component.adoc)
 	* [Metrics](metrics-component.adoc)
 	* [Micrometer](micrometer-component.adoc)
-	* [Mina](mina-component.adoc)
 	* [Mina2](mina2-component.adoc)
 	* [MLLP](mllp-component.adoc)
-	* [MongoDB](mongodb-component.adoc)
 	* [MongoDB](mongodb3-component.adoc)
 	* [MongoDB GridFS](mongodb-gridfs-component.adoc)
 	* [MQTT](mqtt-component.adoc)
@@ -308,15 +294,12 @@
 	* [MyBatis Bean](mybatis-bean-component.adoc)
 	* [Nagios](nagios-component.adoc)
 	* [Nats](nats-component.adoc)
-	* [Netty](netty-component.adoc)
-	* [Netty HTTP](netty-http-component.adoc)
 	* [Netty4](netty4-component.adoc)
 	* [Netty4 HTTP](netty4-http-component.adoc)
 	* [Olingo2](olingo2-component.adoc)
 	* [Olingo4](olingo4-component.adoc)
 	* [OPC UA Client](milo-client-component.adoc)
 	* [OPC UA Server](milo-server-component.adoc)
-	* [OpenShift](openshift-component.adoc)
 	* [Openshift Build Config](openshift-build-configs-component.adoc)
 	* [Openshift Builds](openshift-builds-component.adoc)
 	* [OpenStack Cinder](openstack-cinder-component.adoc)
@@ -333,7 +316,6 @@
 	* [PostgresSQL Event](pgevent-component.adoc)
 	* [Printer](lpr-component.adoc)
 	* [PubNub](pubnub-component.adoc)
-	* [Quartz](quartz-component.adoc)
 	* [Quartz2](quartz2-component.adoc)
 	* [QuickFix](quickfix-component.adoc)
 	* [RabbitMQ](rabbitmq-component.adoc)
@@ -341,7 +323,6 @@
 	* [REST Swagger](rest-swagger-component.adoc)
 	* [Restlet](restlet-component.adoc)
 	* [RMI](rmi-component.adoc)
-	* [RouteBox](routebox-component.adoc)
 	* [RSS](rss-component.adoc)
 	* [Salesforce](salesforce-component.adoc)
 	* [SAP NetWeaver](sap-netweaver-component.adoc)
@@ -378,7 +359,6 @@
 	* [Thrift](thrift-component.adoc)
 	* [Tika](tika-component.adoc)
 	* [Twilio](twilio-component.adoc)
-	* [Twitter](twitter-component.adoc)
 	* [Twitter Direct Message](twitter-directmessage-component.adoc)
 	* [Twitter Search](twitter-search-component.adoc)
 	* [Twitter Streaming](twitter-streaming-component.adoc)
@@ -390,7 +370,6 @@
 	* [Web3j Ethereum Blockchain](web3j-component.adoc)
 	* [Wordpress](wordpress-component.adoc)
 	* [XChange](xchange-component.adoc)
-	* [XML RPC](xmlrpc-component.adoc)
 	* [XML Security](xmlsecurity-component.adoc)
 	* [XMPP](xmpp-component.adoc)
 	* [XQuery](xquery-component.adoc)
@@ -406,14 +385,9 @@
 
 <!-- others: START -->
 * Miscellaneous Components
-	* [BAM](bam.adoc)
 	* [Blueprint](blueprint.adoc)
 	* [CDI](cdi.adoc)
 	* [CXF Transport](cxf-transport.adoc)
-	* [Eclipse](eclipse.adoc)
-	* [Groovy DSL](groovy-dsl.adoc)
-	* [Guice](guice.adoc)
-	* [HawtDB](hawtdb.adoc)
 	* [Headersmap](headersmap.adoc)
 	* [Hystrix](hystrix.adoc)
 	* [Jasypt](jasypt.adoc)
@@ -423,12 +397,7 @@
 	* [OpenTracing](opentracing.adoc)
 	* [Reactor](reactor.adoc)
 	* [Ribbon](ribbon.adoc)
-	* [Ruby](ruby.adoc)
-	* [RX](rx.adoc)
 	* [Rxjava2](rxjava2.adoc)
-	* [Scala DSL](scala.adoc)
-	* [SCR](scr.adoc)
-	* [Servlet Listener](servletlistener.adoc)
 	* [Shiro](shiro.adoc)
 	* [Spring Boot](spring-boot.adoc)
 	* [Spring Cloud](spring-cloud.adoc)
@@ -437,7 +406,6 @@
 	* [Spring Cloud Zookeeper](spring-cloud-zookeeper.adoc)
 	* [Spring Java Configuration](spring-javaconfig.adoc)
 	* [Spring Security](spring-security.adoc)
-	* [Swagger](swagger.adoc)
 	* [Swagger Java](swagger-java.adoc)
 	* [Test](test.adoc)
 	* [Test Blueprint](test-blueprint.adoc)
@@ -446,8 +414,6 @@
 	* [Test Spring](test-spring.adoc)
 	* [Testcontainers](testcontainers.adoc)
 	* [Testcontainers Spring](testcontainers-spring.adoc)
-	* [TestNG](testng.adoc)
-	* [URLRewrite](urlrewrite.adoc)
 	* [XRay](aws-xray.adoc)
 	* [Zipkin](zipkin.adoc)
 <!-- others: END -->
@@ -468,7 +434,6 @@
 	* [CSV](csv-dataformat.adoc)
 	* [Flatpack](flatpack-dataformat.adoc)
 	* [GZip](gzip-dataformat.adoc)
-	* [Hessian](hessian-dataformat.adoc)
 	* [HL7](hl7-dataformat.adoc)
 	* [iCal](ical-dataformat.adoc)
 	* [JacksonXML](jacksonxml-dataformat.adoc)
@@ -494,9 +459,6 @@
 	* [uniVocity CSV](univocity-csv-dataformat.adoc)
 	* [uniVocity Fixed Length](univocity-fixed-dataformat.adoc)
 	* [uniVocity TSV](univocity-tsv-dataformat.adoc)
-	* [XML Beans](xmlBeans-dataformat.adoc)
-	* [XML JSon](xmljson-dataformat.adoc)
-	* [XML RPC](xmlrpc-dataformat.adoc)
 	* [XML Security](secureXML-dataformat.adoc)
 	* [XStream](xstream-dataformat.adoc)
 	* [YAML SnakeYAML](yaml-snakeyaml-dataformat.adoc)
@@ -523,13 +485,11 @@
 	* [HL7 Terser](terser-language.adoc)
 	* [JavaScript](javaScript-language.adoc)
 	* [JsonPath](jsonpath-language.adoc)
-	* [JXPath](jxpath-language.adoc)
 	* [MVEL](mvel-language.adoc)
 	* [OGNL](ognl-language.adoc)
 	* [Ref](ref-language.adoc)
 	* [Simple](simple-language.adoc)
 	* [SpEL](spel-language.adoc)
-	* [SQL](sql-language.adoc)
 	* [Tokenize](tokenize-language.adoc)
 	* [XML Tokenize](xtokenize-language.adoc)
 	* [XPath](xpath-language.adoc)
diff --git a/platforms/spring-boot/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/springboot/KubernetesComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/springboot/KubernetesComponentAutoConfiguration.java
deleted file mode 100644
index 7a7fc62..0000000
--- a/platforms/spring-boot/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/springboot/KubernetesComponentAutoConfiguration.java
+++ /dev/null
@@ -1,128 +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.component.kubernetes.springboot;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.annotation.Generated;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.kubernetes.KubernetesComponent;
-import org.apache.camel.spi.ComponentCustomizer;
-import org.apache.camel.spi.HasId;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.ComponentConfigurationProperties;
-import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
-import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
-import org.apache.camel.spring.boot.util.GroupCondition;
-import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Lazy;
-
-/**
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@Configuration
-@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class,
-        KubernetesComponentAutoConfiguration.GroupConditions.class})
-@AutoConfigureAfter(CamelAutoConfiguration.class)
-@EnableConfigurationProperties({ComponentConfigurationProperties.class,
-        KubernetesComponentConfiguration.class})
-public class KubernetesComponentAutoConfiguration {
-
-    private static final Logger LOGGER = LoggerFactory
-            .getLogger(KubernetesComponentAutoConfiguration.class);
-    @Autowired
-    private ApplicationContext applicationContext;
-    @Autowired
-    private CamelContext camelContext;
-    @Autowired
-    private KubernetesComponentConfiguration configuration;
-    @Autowired(required = false)
-    private List<ComponentCustomizer<KubernetesComponent>> customizers;
-
-    static class GroupConditions extends GroupCondition {
-        public GroupConditions() {
-            super("camel.component", "camel.component.kubernetes");
-        }
-    }
-
-    @Lazy
-    @Bean(name = "kubernetes-component")
-    @ConditionalOnMissingBean(KubernetesComponent.class)
-    public KubernetesComponent configureKubernetesComponent() throws Exception {
-        KubernetesComponent component = new KubernetesComponent();
-        component.setCamelContext(camelContext);
-        Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(configuration, parameters, null,
-                false);
-        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
-            Object value = entry.getValue();
-            Class<?> paramClass = value.getClass();
-            if (paramClass.getName().endsWith("NestedConfiguration")) {
-                Class nestedClass = null;
-                try {
-                    nestedClass = (Class) paramClass.getDeclaredField(
-                            "CAMEL_NESTED_CLASS").get(null);
-                    HashMap<String, Object> nestedParameters = new HashMap<>();
-                    IntrospectionSupport.getProperties(value, nestedParameters,
-                            null, false);
-                    Object nestedProperty = nestedClass.newInstance();
-                    CamelPropertiesHelper.setCamelProperties(camelContext,
-                            nestedProperty, nestedParameters, false);
-                    entry.setValue(nestedProperty);
-                } catch (NoSuchFieldException e) {
-                }
-            }
-        }
-        CamelPropertiesHelper.setCamelProperties(camelContext, component,
-                parameters, false);
-        if (ObjectHelper.isNotEmpty(customizers)) {
-            for (ComponentCustomizer<KubernetesComponent> customizer : customizers) {
-                boolean useCustomizer = (customizer instanceof HasId)
-                        ? HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.kubernetes.customizer",
-                                ((HasId) customizer).getId())
-                        : HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.kubernetes.customizer");
-                if (useCustomizer) {
-                    LOGGER.debug("Configure component {}, with customizer {}",
-                            component, customizer);
-                    customizer.customize(component);
-                }
-            }
-        }
-        return component;
-    }
-}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/springboot/KubernetesComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/springboot/KubernetesComponentConfiguration.java
deleted file mode 100644
index be63bf2..0000000
--- a/platforms/spring-boot/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/springboot/KubernetesComponentConfiguration.java
+++ /dev/null
@@ -1,54 +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.component.kubernetes.springboot;
-
-import javax.annotation.Generated;
-import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * Use splitted kubernetes components instead of this composite component.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@ConfigurationProperties(prefix = "camel.component.kubernetes")
-public class KubernetesComponentConfiguration
-        extends
-            ComponentConfigurationPropertiesCommon {
-
-    /**
-     * Whether to enable auto configuration of the kubernetes component. This is
-     * enabled by default.
-     */
-    private Boolean enabled;
-    /**
-     * Whether the component should resolve property placeholders on itself when
-     * starting. Only properties which are of String type can use property
-     * placeholders.
-     */
-    private Boolean resolvePropertyPlaceholders = true;
-
-    public Boolean getResolvePropertyPlaceholders() {
-        return resolvePropertyPlaceholders;
-    }
-
-    public void setResolvePropertyPlaceholders(
-            Boolean resolvePropertyPlaceholders) {
-        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
-    }
-}
\ No newline at end of file


[camel] 15/44: [CAMEL-12818] Remove useDom, handled(), add rethrow()

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b91ad91ccee2d143fd4610cbd7064b7f7528ee64
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Sep 25 20:40:14 2018 +0200

    [CAMEL-12818] Remove useDom, handled(), add rethrow()
---
 camel-core/src/main/docs/validator-component.adoc  |  3 +-
 .../component/validator/ValidatorEndpoint.java     | 14 -----
 .../org/apache/camel/model/RethrowDefinition.java  | 66 ++++++++++++++++++++++
 .../java/org/apache/camel/model/TryDefinition.java | 45 ++-------------
 .../processor/validation/ValidatingProcessor.java  | 21 -------
 .../java/org/apache/camel/util/ResourceHelper.java | 22 --------
 .../resources/org/apache/camel/model/jaxb.index    |  1 +
 .../TryCatchWithSplitNotHandledIssueTest.java      |  3 +-
 .../camel/processor/TryProcessorHandledTest.java   |  5 +-
 .../processor/ValidatingDomProcessorTest.java      |  6 +-
 .../camel-ejb/src/main/docs/ejb-component.adoc     |  3 +-
 .../camel/component/validator/msv/MsvEndpoint.java |  2 -
 .../src/main/docs/restlet-component.adoc           |  3 +-
 .../ssh/ResourceHelperKeyPairProvider.java         | 34 +++++------
 .../org/apache/camel/component/ssh/SshHelper.java  |  2 +-
 15 files changed, 98 insertions(+), 132 deletions(-)

diff --git a/camel-core/src/main/docs/validator-component.adoc b/camel-core/src/main/docs/validator-component.adoc
index c32f2bd..41004cf 100644
--- a/camel-core/src/main/docs/validator-component.adoc
+++ b/camel-core/src/main/docs/validator-component.adoc
@@ -85,7 +85,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (11 parameters):
+==== Query Parameters (10 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -100,7 +100,6 @@ with the following path and query parameters:
 | *schemaFactory* (advanced) | To use a custom javax.xml.validation.SchemaFactory |  | SchemaFactory
 | *schemaLanguage* (advanced) | Configures the W3C XML Schema Namespace URI. | http://www.w3.org/2001/XMLSchema | String
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *useDom* (advanced) | Whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator. | false | boolean
 | *useSharedSchema* (advanced) | Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue. | true | boolean
 |===
 // endpoint options: END
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
index 124e1a9..941e57f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
@@ -56,8 +56,6 @@ public class ValidatorEndpoint extends DefaultEndpoint {
     private SchemaFactory schemaFactory;
     @UriParam(label = "advanced", description = "To use a custom org.apache.camel.processor.validation.ValidatorErrorHandler. The default error handler captures the errors and throws an exception.")
     private ValidatorErrorHandler errorHandler = new DefaultValidationErrorHandler();
-    @UriParam(label = "advanced", description = "Whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator.")
-    private boolean useDom;
     @UriParam(defaultValue = "true", label = "advanced",
             description = "Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue.")
     private boolean useSharedSchema = true;
@@ -140,7 +138,6 @@ public class ValidatorEndpoint extends DefaultEndpoint {
 
     protected void configureValidator(ValidatingProcessor validator) throws Exception {
         validator.setErrorHandler(getErrorHandler());
-        validator.setUseDom(isUseDom());
         validator.setUseSharedSchema(isUseSharedSchema());
         validator.setFailOnNullBody(isFailOnNullBody());
         validator.setFailOnNullHeader(isFailOnNullHeader());
@@ -194,17 +191,6 @@ public class ValidatorEndpoint extends DefaultEndpoint {
         this.errorHandler = errorHandler;
     }
 
-    public boolean isUseDom() {
-        return useDom;
-    }
-
-    /**
-     * Whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator.
-     */
-    public void setUseDom(boolean useDom) {
-        this.useDom = useDom;
-    }
-
     public boolean isUseSharedSchema() {
         return useSharedSchema;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
new file mode 100644
index 0000000..13d06e5
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
@@ -0,0 +1,66 @@
+/**
+ * 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.model;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.RouteContext;
+
+/**
+ * Rethrow an exception inside a catch block
+ *
+ * @version 
+ */
+@Metadata(label = "error")
+@XmlRootElement(name = "rethrow")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class RethrowDefinition extends NoOutputDefinition<RethrowDefinition> {
+
+    public RethrowDefinition() {
+    }
+
+    @Override
+    public String toString() {
+        return "Rethrow[]";
+    }
+
+    @Override
+    public String getShortName() {
+        return "rethrow";
+    }
+
+    @Override
+    public String getLabel() {
+        return "rethrow[]";
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        return exchange -> {
+            Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
+            if (e != null) {
+                throw e;
+            }
+        };
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
index 7c7589f..9e5a12e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
@@ -26,6 +26,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
+import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
@@ -168,53 +169,15 @@ public class TryDefinition extends OutputDefinition<TryDefinition> {
     }
 
     /**
-     * Sets whether the exchange should be marked as handled or not.
+     * Rethrow the exception that has been caught by Camel.
      *
-     * @param handled  handled or not
      * @return the builder
-     * @deprecated will be removed in Camel 3.0. Instead of using handled(false) you can re-throw the exception
-     * from a {@link Processor} or use the {@link ProcessorDefinition#throwException(Exception)}
      */
-    @Deprecated
-    public TryDefinition handled(boolean handled) {
-        Expression expression = ExpressionBuilder.constantExpression(Boolean.toString(handled));
-        return handled(expression);
-    }
-
-    /**
-     * Sets whether the exchange should be marked as handled or not.
-     *
-     * @param handled  predicate that determines true or false
-     * @return the builder
-     * @deprecated will be removed in Camel 3.0. Instead of using handled(false) you can re-throw the exception
-     * from a {@link Processor} or use the {@link ProcessorDefinition#throwException(Exception)}
-     */
-    @Deprecated
-    public TryDefinition handled(@AsPredicate Predicate handled) {
-        // we must use a delegate so we can use the fluent builder based on TryDefinition
-        // to configure all with try .. catch .. finally
-        // set the handled on all the catch definitions
-        Iterator<CatchDefinition> it = ProcessorDefinitionHelper.filterTypeInOutputs(getOutputs(), CatchDefinition.class);
-        while (it.hasNext()) {
-            CatchDefinition doCatch = it.next();
-            doCatch.setHandledPolicy(handled);
-        }
+    public TryDefinition rethrow() {
+        addOutput(new RethrowDefinition());
         return this;
     }
 
-    /**
-     * Sets whether the exchange should be marked as handled or not.
-     *
-     * @param handled  expression that determines true or false
-     * @return the builder
-     * @deprecated will be removed in Camel 3.0. Instead of using handled(false) you can re-throw the exception
-     * from a {@link Processor} or use the {@link ProcessorDefinition#throwException(Exception)}
-     */
-    @Deprecated
-    public TryDefinition handled(@AsPredicate Expression handled) {
-        return handled(ExpressionToPredicateAdapter.toPredicate(handled));
-    }
-
     // Properties
     // -------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java
index 8bba7e7..bf8db68 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java
@@ -65,7 +65,6 @@ public class ValidatingProcessor implements AsyncProcessor {
     private final SchemaReader schemaReader;
     private ValidatorErrorHandler errorHandler = new DefaultValidationErrorHandler();
     private final XmlConverter converter = new XmlConverter();
-    private boolean useDom;
     private boolean useSharedSchema = true;
     private boolean failOnNullBody = true;
     private boolean failOnNullHeader = true;
@@ -265,21 +264,6 @@ public class ValidatingProcessor implements AsyncProcessor {
         this.errorHandler = errorHandler;
     }
 
-    @Deprecated
-    public boolean isUseDom() {
-        return useDom;
-    }
-
-    /**
-     * Sets whether DOMSource and DOMResult should be used.
-     *
-     * @param useDom true to use DOM otherwise
-     */
-    @Deprecated
-    public void setUseDom(boolean useDom) {
-        this.useDom = useDom;
-    }
-
     public boolean isUseSharedSchema() {
         return useSharedSchema;
     }
@@ -380,11 +364,6 @@ public class ValidatingProcessor implements AsyncProcessor {
      * </ul>
      */
     protected Source getSource(Exchange exchange, Object content) {
-        if (isUseDom()) {
-            // force DOM
-            return exchange.getContext().getTypeConverter().tryConvertTo(DOMSource.class, exchange, content);
-        }
-
         // body or header may already be a source
         if (content instanceof Source) {
             return (Source) content;
diff --git a/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java b/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java
index 72d6648..ec30baf 100644
--- a/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java
@@ -200,28 +200,6 @@ public final class ResourceHelper {
     }
 
     /**
-     * Resolves the mandatory resource.
-     * <p/>
-     * If possible recommended to use {@link #resolveMandatoryResourceAsUrl(org.apache.camel.spi.ClassResolver, String)}
-     *
-     * @param classResolver the class resolver to load the resource from the classpath
-     * @param uri URI of the resource
-     * @return the resource as an {@link InputStream}.  Remember to close this stream after usage.
-     * @throws java.io.IOException is thrown if the resource file could not be found or loaded as {@link InputStream}
-     * @deprecated use {@link #resolveMandatoryResourceAsInputStream(CamelContext, String)}
-     */
-    @Deprecated
-    public static InputStream resolveMandatoryResourceAsInputStream(ClassResolver classResolver, String uri) throws IOException {
-        InputStream is = resolveResourceAsInputStream(classResolver, uri);
-        if (is == null) {
-            String resolvedName = resolveUriPath(uri);
-            throw new FileNotFoundException("Cannot find resource: " + resolvedName + " in classpath for URI: " + uri);
-        } else {
-            return is;
-        }
-    }
-
-    /**
      * Resolves the resource.
      * <p/>
      * If possible recommended to use {@link #resolveMandatoryResourceAsUrl(org.apache.camel.spi.ClassResolver, String)}
diff --git a/camel-core/src/main/resources/org/apache/camel/model/jaxb.index b/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
index cb929cf..a879745 100644
--- a/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
+++ b/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
@@ -70,6 +70,7 @@ RemovePropertyDefinition
 RemovePropertiesDefinition
 ResequenceDefinition
 RestContextRefDefinition
+RethrowDefinition
 RollbackDefinition
 RouteBuilderDefinition
 RouteDefinition
diff --git a/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java
index 25d4927..7f05a11 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java
@@ -63,8 +63,9 @@ public class TryCatchWithSplitNotHandledIssueTest extends ContextTestSupport {
                     .doTry()
                         .to("bean:error")
                         .to("mock:result")
-                    .doCatch(Exception.class).handled(false)
+                    .doCatch(Exception.class)
                         .to("mock:error")
+                        .rethrow()
                     .end();
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java b/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java
index 513dbb6..2629c6d 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java
@@ -77,11 +77,10 @@ public class TryProcessorHandledTest extends ContextTestSupport {
                     .doTry()
                         .process(new ProcessorFail())
                         .to("mock:result")
-                    // catch IOExcption that we do not want to handle, eg the caller should get the error back
+                    // catch IOException that we do not want to handle, eg the caller should get the error back
                     .doCatch(IOException.class)
-                        // mark this as NOT handled, eg the caller will also get the exception
-                        .handled(false)
                         .to("mock:io")
+                        .rethrow()
                     .doCatch(Exception.class)
                         // and catch all other exceptions
                         // they are handled by default (ie handled = true)
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ValidatingDomProcessorTest.java b/camel-core/src/test/java/org/apache/camel/processor/ValidatingDomProcessorTest.java
index 8334ffa..3ce5e4c 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ValidatingDomProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ValidatingDomProcessorTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.processor;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.processor.validation.NoXmlBodyValidationException;
+import org.apache.camel.processor.validation.SchemaValidationException;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -30,8 +31,6 @@ public class ValidatingDomProcessorTest extends ValidatingProcessorTest {
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        validating.setUseDom(true);
-        assertEquals(true, validating.isUseDom());
     }
 
     @Test
@@ -48,8 +47,7 @@ public class ValidatingDomProcessorTest extends ValidatingProcessorTest {
             template.sendBody("direct:start", xml);
             fail("Should have thrown a RuntimeCamelException");
         } catch (CamelExecutionException e) {
-            // cannot be converted to DOM
-            assertIsInstanceOf(NoXmlBodyValidationException.class, e.getCause());
+            assertIsInstanceOf(SchemaValidationException.class, e.getCause());
         }
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-ejb/src/main/docs/ejb-component.adoc b/components/camel-ejb/src/main/docs/ejb-component.adoc
index a734448..77694e1 100644
--- a/components/camel-ejb/src/main/docs/ejb-component.adoc
+++ b/components/camel-ejb/src/main/docs/ejb-component.adoc
@@ -69,7 +69,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (5 parameters):
+==== Query Parameters (4 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -77,7 +77,6 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *method* (producer) | Sets the name of the method to invoke on the bean |  | String
 | *cache* (advanced) | If enabled, Camel will cache the result of the first Registry look-up. Cache can be enabled if the bean in the Registry is defined as a singleton scope. |  | Boolean
-| *multiParameterArray* (advanced) | *Deprecated* How to treat the parameters which are passed from the message body.true means the message body should be an array of parameters.. Deprecation note: This option is used internally by Camel, and is not intended for end users to use. Deprecation note: This option is used internally by Camel, and is not intended for end users to use. | false | boolean
 | *parameters* (advanced) | Used for configuring additional properties on the bean |  | Map
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 |===
diff --git a/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvEndpoint.java b/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvEndpoint.java
index 45efa6b..be933ec 100644
--- a/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvEndpoint.java
+++ b/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvEndpoint.java
@@ -38,8 +38,6 @@ public class MsvEndpoint extends ValidatorEndpoint {
     protected void configureValidator(ValidatingProcessor validator) throws Exception {
         super.configureValidator(validator);
         validator.setSchemaLanguage(XMLConstants.RELAXNG_NS_URI);
-        // must use Dom for Msv to work
-        validator.setUseDom(true);
     }
 
     @Override
diff --git a/components/camel-restlet/src/main/docs/restlet-component.adoc b/components/camel-restlet/src/main/docs/restlet-component.adoc
index ae08e9c..2d54e21 100644
--- a/components/camel-restlet/src/main/docs/restlet-component.adoc
+++ b/components/camel-restlet/src/main/docs/restlet-component.adoc
@@ -121,7 +121,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (18 parameters):
+==== Query Parameters (17 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -133,7 +133,6 @@ with the following path and query parameters:
 | *disableStreamCache* (consumer) | Determines whether or not the raw input stream from Restlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Restlet input stream to support reading it multiple times to ensure Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persist [...]
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
-| *restletUriPatterns* (consumer) | *Deprecated* Specify one ore more URI templates to be serviced by a restlet consumer endpoint, using the # notation to reference a List in the Camel Registry. If a URI pattern has been defined in the endpoint URI, both the URI pattern defined in the endpoint and the restletUriPatterns option will be honored. |  | List
 | *connectTimeout* (producer) | The Client will give up connection if the connection is timeout, 0 for unlimited wait. | 30000 | int
 | *cookieHandler* (producer) | Configure a cookie handler to maintain a HTTP session |  | CookieHandler
 | *socketTimeout* (producer) | The Client socket receive timeout, 0 for unlimited wait. | 30000 | int
diff --git a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
index 60062c1..4fa7f9a 100644
--- a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
+++ b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/ResourceHelperKeyPairProvider.java
@@ -22,8 +22,9 @@ import java.io.InputStreamReader;
 import java.security.KeyPair;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Supplier;
 
-import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.CamelContext;
 import org.apache.camel.util.ResourceHelper;
 import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
 import org.apache.sshd.common.util.io.IoUtils;
@@ -32,7 +33,6 @@ import org.bouncycastle.openssl.PEMDecryptorProvider;
 import org.bouncycastle.openssl.PEMEncryptedKeyPair;
 import org.bouncycastle.openssl.PEMKeyPair;
 import org.bouncycastle.openssl.PEMParser;
-import org.bouncycastle.openssl.PasswordFinder;
 import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
 import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
 import org.slf4j.Logger;
@@ -49,33 +49,33 @@ import org.slf4j.LoggerFactory;
 public class ResourceHelperKeyPairProvider extends AbstractKeyPairProvider {
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
-    private ClassResolver classResolver;
+    private CamelContext camelContext;
     private String[] resources;
-    private PasswordFinder passwordFinder;
+    private Supplier<char[]> passwordFinder;
 
     public ResourceHelperKeyPairProvider() {
     }
 
     public ResourceHelperKeyPairProvider(String[] resources,
-                                         ClassResolver classResolver) {
-        this.classResolver = classResolver;
+                                         CamelContext camelContext) {
+        this.camelContext = camelContext;
         this.resources = resources;
     }
 
     public ResourceHelperKeyPairProvider(String[] resources,
-                                         PasswordFinder passwordFinder,
-                                         ClassResolver classResolver) {
-        this.classResolver = classResolver;
+                                         Supplier<char[]> passwordFinder,
+                                         CamelContext camelContext) {
+        this.camelContext = camelContext;
         this.resources = resources;
         this.passwordFinder = passwordFinder;
     }
 
-    public ClassResolver getClassResolver() {
-        return classResolver;
+    public CamelContext getCamelContext() {
+        return camelContext;
     }
 
-    public void setClassResolver(ClassResolver classResolver) {
-        this.classResolver = classResolver;
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
     }
 
     public String[] getResources() {
@@ -86,11 +86,11 @@ public class ResourceHelperKeyPairProvider extends AbstractKeyPairProvider {
         this.resources = resources;
     }
 
-    public PasswordFinder getPasswordFinder() {
+    public Supplier<char[]> getPasswordFinder() {
         return passwordFinder;
     }
 
-    public void setPasswordFinder(PasswordFinder passwordFinder) {
+    public void setPasswordFinder(Supplier<char[]> passwordFinder) {
         this.passwordFinder = passwordFinder;
     }
 
@@ -108,7 +108,7 @@ public class ResourceHelperKeyPairProvider extends AbstractKeyPairProvider {
             InputStreamReader isr = null;
             InputStream is = null;
             try {
-                is = ResourceHelper.resolveMandatoryResourceAsInputStream(classResolver, resource);
+                is = ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, resource);
                 isr = new InputStreamReader(is);
                 r = new PEMParser(isr);
 
@@ -118,7 +118,7 @@ public class ResourceHelperKeyPairProvider extends AbstractKeyPairProvider {
                 pemConverter.setProvider("BC");
                 if (passwordFinder != null && o instanceof PEMEncryptedKeyPair) {
                     JcePEMDecryptorProviderBuilder decryptorBuilder = new JcePEMDecryptorProviderBuilder();
-                    PEMDecryptorProvider pemDecryptor = decryptorBuilder.build(passwordFinder.getPassword());
+                    PEMDecryptorProvider pemDecryptor = decryptorBuilder.build(passwordFinder.get());
                     o = pemConverter.getKeyPair(((PEMEncryptedKeyPair) o).decryptKeyPair(pemDecryptor));
                 }
                 
diff --git a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java
index 02082c0..8aa3f2f 100644
--- a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java
+++ b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshHelper.java
@@ -82,7 +82,7 @@ public final class SshHelper {
             final String certResource = configuration.getCertResource();
             if (certResource != null) {
                 LOG.debug("Attempting to authenticate using ResourceKey '{}'...", certResource);
-                keyPairProvider = new ResourceHelperKeyPairProvider(new String[]{certResource}, endpoint.getCamelContext().getClassResolver());
+                keyPairProvider = new ResourceHelperKeyPairProvider(new String[]{certResource}, endpoint.getCamelContext());
             } else {
                 keyPairProvider = configuration.getKeyPairProvider();
             }


[camel] 40/44: Rename ManagementNamingStrategy to ManagementObjectNameStrategy

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 645f965ff36fd95959891f733a5b14daec92a83c
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 09:26:40 2018 +0200

    Rename ManagementNamingStrategy to ManagementObjectNameStrategy
    
    # Conflicts:
    #	camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentParallelTest.java
---
 .../java/org/apache/camel/spi/ManagementAgent.java |  2 +-
 ...tegy.java => ManagementObjectNameStrategy.java} |  4 +--
 .../org/apache/camel/spi/ManagementStrategy.java   |  6 ++--
 .../component/controlbus/ControlBusProducer.java   |  4 +--
 .../org/apache/camel/impl/DefaultCamelContext.java |  8 ++---
 .../DefaultManagementLifecycleStrategy.java        |  6 ++--
 ...va => DefaultManagementObjectNameStrategy.java} |  8 ++---
 .../management/DefaultManagementStrategy.java      | 24 +++++++-------
 .../management/ManagedManagementStrategy.java      | 37 +++++++++++-----------
 .../management/mbean/ManagedCamelContext.java      |  2 +-
 .../ManagedNamePatternIncludeHostNameTest.java     |  2 +-
 .../core/xml/AbstractCamelContextFactoryBean.java  | 10 +++---
 .../camel-jmx/src/main/docs/jmx-component.adoc     |  6 ++--
 .../camel/spring/boot/CamelAutoConfiguration.java  |  6 ++--
 .../SpringJmxDumpRouteAsXmlIncludeHostNameTest.xml |  2 +-
 .../managedNamePatternFixedIncludeHostNameTest.xml |  2 +-
 16 files changed, 63 insertions(+), 66 deletions(-)

diff --git a/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java
index 7c7ee07..75390db 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java
@@ -278,7 +278,7 @@ public interface ManagementAgent extends Service {
     Boolean getIncludeHostName();
 
     /**
-     * Sets whether to include host name in the {@link ManagementNamingStrategy}.
+     * Sets whether to include host name in the {@link ManagementObjectNameStrategy}.
      * <p/>
      * By default this is turned off from Camel 2.13 onwards, but this option
      * can be set to <tt>true</tt> to include the hostname as Camel 2.12 or
diff --git a/camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
similarity index 97%
rename from camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
index f8074dc..808ad10 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
@@ -36,9 +36,7 @@ import org.apache.camel.cluster.CamelClusterService;
 /**
  * Strategy for computing {@link ObjectName} names for the various beans that Camel register for management.
  */
-public interface ManagementNamingStrategy {
-
-    // TODO: Should be renamed to ManagementObjectNameStrategy
+public interface ManagementObjectNameStrategy {
 
     ObjectName getObjectNameForCamelContext(String managementName, String name) throws MalformedObjectNameException;
 
diff --git a/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
index 7fb8d47..49573c4 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
@@ -28,7 +28,7 @@ import org.apache.camel.Service;
  *
  * @see org.apache.camel.spi.EventNotifier
  * @see org.apache.camel.spi.EventFactory
- * @see org.apache.camel.spi.ManagementNamingStrategy
+ * @see ManagementObjectNameStrategy
  * @see org.apache.camel.spi.ManagementAgent
  */
 public interface ManagementStrategy extends Service {
@@ -151,14 +151,14 @@ public interface ManagementStrategy extends Service {
      *
      * @return naming strategy
      */
-    ManagementNamingStrategy getManagementNamingStrategy();
+    ManagementObjectNameStrategy getManagementObjectNameStrategy();
 
     /**
      * Sets the naming strategy to use
      *
      * @param strategy naming strategy
      */
-    void setManagementNamingStrategy(ManagementNamingStrategy strategy);
+    void setManagementObjectNameStrategy(ManagementObjectNameStrategy strategy);
 
     /**
      * Gets the object strategy to use
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
index 127af96..8949269 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
@@ -198,11 +198,11 @@ public class ControlBusProducer extends DefaultAsyncProducer {
                         String operation;
                         if (id == null) {
                             CamelContext camelContext = getEndpoint().getCamelContext();
-                            on = getEndpoint().getCamelContext().getManagementStrategy().getManagementNamingStrategy().getObjectNameForCamelContext(camelContext);
+                            on = getEndpoint().getCamelContext().getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(camelContext);
                             operation = "dumpRoutesStatsAsXml";
                         } else {
                             Route route = getEndpoint().getCamelContext().getRoute(id);
-                            on = getEndpoint().getCamelContext().getManagementStrategy().getManagementNamingStrategy().getObjectNameForRoute(route);
+                            on = getEndpoint().getCamelContext().getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForRoute(route);
                             operation = "dumpRouteStatsAsXml";
                         }
                         if (on != null) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index af89cbb..a68ec91 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -120,8 +120,8 @@ import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.Debug;
 import org.apache.camel.processor.interceptor.HandleFault;
-import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
+import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.CamelContextTracker;
@@ -926,7 +926,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         // processor may be null if its anonymous inner class or as lambda
         if (def != null) {
             try {
-                ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForProcessor(this, processor, def);
+                ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForProcessor(this, processor, def);
                 return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
             } catch (MalformedObjectNameException e) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(e);
@@ -946,7 +946,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
         if (route != null) {
             try {
-                ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForRoute(route);
+                ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForRoute(route);
                 return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
             } catch (MalformedObjectNameException e) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(e);
@@ -963,7 +963,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         }
 
         try {
-            ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForCamelContext(this);
+            ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(this);
             return getManagementStrategy().getManagementAgent().newProxyClient(on, ManagedCamelContextMBean.class);
         } catch (MalformedObjectNameException e) {
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 1971782..9a006b4 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -157,7 +157,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         try {
             boolean done = false;
             while (!done) {
-                ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForCamelContext(managementName, name);
+                ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(managementName, name);
                 boolean exists = getManagementStrategy().isManaged(mc, on);
                 if (!exists) {
                     done = true;
@@ -247,7 +247,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         while (!done) {
             // compute the next name
             newName = strategy.getNextName();
-            ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForCamelContext(newName, name);
+            ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(newName, name);
             done = !getManagementStrategy().isManaged(mc, on);
             if (log.isTraceEnabled()) {
                 log.trace("Using name: {} in ObjectName[{}] exists? {}", name, on, done);
@@ -633,7 +633,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             Object mr = getManagementObjectStrategy().getManagedObjectForRoute(camelContext, route);
 
             // skip unmanaged routes
-            if (!getManagementStrategy().isManaged(mr)) {
+            if (!getManagementStrategy().isManaged(mr, null)) {
                 log.trace("The route is not managed: {}", route);
                 continue;
             }
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
similarity index 98%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
rename to camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
index e640792..804593c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
@@ -39,7 +39,7 @@ import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.spi.ManagementNamingStrategy;
+import org.apache.camel.spi.ManagementObjectNameStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.InetAddressUtil;
 import org.apache.camel.util.ObjectHelper;
@@ -48,7 +48,7 @@ import org.apache.camel.util.URISupport;
 /**
  * Naming strategy used when registering MBeans.
  */
-public class DefaultManagementNamingStrategy implements ManagementNamingStrategy, CamelContextAware {
+public class DefaultManagementObjectNameStrategy implements ManagementObjectNameStrategy, CamelContextAware {
     public static final String VALUE_UNKNOWN = "unknown";
     public static final String KEY_NAME = "name";
     public static final String KEY_TYPE = "type";
@@ -74,12 +74,12 @@ public class DefaultManagementNamingStrategy implements ManagementNamingStrategy
     protected String hostName = "localhost";
     protected CamelContext camelContext;
 
-    public DefaultManagementNamingStrategy() {
+    public DefaultManagementObjectNameStrategy() {
         this("org.apache.camel");
         // default constructor needed for <bean> style configuration
     }
 
-    public DefaultManagementNamingStrategy(String domainName) {
+    public DefaultManagementObjectNameStrategy(String domainName) {
         if (domainName != null) {
             this.domainName = domainName;
         }
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
index 088af57..b2f1a93 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventFactory;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementAgent;
-import org.apache.camel.spi.ManagementNamingStrategy;
+import org.apache.camel.spi.ManagementObjectNameStrategy;
 import org.apache.camel.spi.ManagementObjectStrategy;
 import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.support.ServiceHelper;
@@ -53,7 +53,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
     private static final Logger LOG = LoggerFactory.getLogger(DefaultManagementStrategy.class);
     private List<EventNotifier> eventNotifiers = new CopyOnWriteArrayList<>();
     private EventFactory eventFactory = new DefaultEventFactory();
-    private ManagementNamingStrategy managementNamingStrategy;
+    private ManagementObjectNameStrategy managementObjectNameStrategy;
     private ManagementObjectStrategy managementObjectStrategy;
     private ManagementAgent managementAgent;
     private CamelContext camelContext;
@@ -89,15 +89,15 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         this.eventFactory = eventFactory;
     }
 
-    public ManagementNamingStrategy getManagementNamingStrategy() {
-        if (managementNamingStrategy == null) {
-            managementNamingStrategy = new DefaultManagementNamingStrategy();
+    public ManagementObjectNameStrategy getManagementObjectNameStrategy() {
+        if (managementObjectNameStrategy == null) {
+            managementObjectNameStrategy = new DefaultManagementObjectNameStrategy();
         }
-        return managementNamingStrategy;
+        return managementObjectNameStrategy;
     }
 
-    public void setManagementNamingStrategy(ManagementNamingStrategy managementNamingStrategy) {
-        this.managementNamingStrategy = managementNamingStrategy;
+    public void setManagementObjectNameStrategy(ManagementObjectNameStrategy managementObjectNameStrategy) {
+        this.managementObjectNameStrategy = managementObjectNameStrategy;
     }
 
     public ManagementObjectStrategy getManagementObjectStrategy() {
@@ -191,12 +191,12 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         if (managementAgent != null) {
             ServiceHelper.startService(managementAgent);
             // set the naming strategy using the domain name from the agent
-            if (managementNamingStrategy == null) {
-                setManagementNamingStrategy(new DefaultManagementNamingStrategy(managementAgent.getMBeanObjectDomainName()));
+            if (managementObjectNameStrategy == null) {
+                setManagementObjectNameStrategy(new DefaultManagementObjectNameStrategy(managementAgent.getMBeanObjectDomainName()));
             }
         }
-        if (managementNamingStrategy instanceof CamelContextAware) {
-            ((CamelContextAware) managementNamingStrategy).setCamelContext(getCamelContext());
+        if (managementObjectNameStrategy instanceof CamelContextAware) {
+            ((CamelContextAware) managementObjectNameStrategy).setCamelContext(getCamelContext());
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index f6211a5..a00e329 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -38,7 +38,6 @@ import org.apache.camel.management.mbean.ManagedRoute;
 import org.apache.camel.management.mbean.ManagedRouteController;
 import org.apache.camel.management.mbean.ManagedService;
 import org.apache.camel.management.mbean.ManagedThreadPool;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.ManagementAgent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,54 +86,54 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
 
         if (managedObject instanceof ManagedCamelContext) {
             ManagedCamelContext mcc = (ManagedCamelContext) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForCamelContext(mcc.getContext());
+            objectName = getManagementObjectNameStrategy().getObjectNameForCamelContext(mcc.getContext());
         } else if (managedObject instanceof ManagedCamelHealth) {
             ManagedCamelHealth mch = (ManagedCamelHealth) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForCamelHealth(mch.getContext());
+            objectName = getManagementObjectNameStrategy().getObjectNameForCamelHealth(mch.getContext());
         } else if (managedObject instanceof ManagedRouteController) {
             ManagedRouteController mrc = (ManagedRouteController) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForRouteController(mrc.getContext());
+            objectName = getManagementObjectNameStrategy().getObjectNameForRouteController(mrc.getContext());
         } else if (managedObject instanceof ManagedComponent) {
             ManagedComponent mc = (ManagedComponent) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForComponent(mc.getComponent(), mc.getComponentName());
+            objectName = getManagementObjectNameStrategy().getObjectNameForComponent(mc.getComponent(), mc.getComponentName());
         } else if (managedObject instanceof ManagedDataFormat) {
             ManagedDataFormat md = (ManagedDataFormat) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForDataFormat(md.getContext(), md.getDataFormat());
+            objectName = getManagementObjectNameStrategy().getObjectNameForDataFormat(md.getContext(), md.getDataFormat());
         } else if (managedObject instanceof ManagedEndpoint) {
             ManagedEndpoint me = (ManagedEndpoint) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForEndpoint(me.getEndpoint());
+            objectName = getManagementObjectNameStrategy().getObjectNameForEndpoint(me.getEndpoint());
         } else if (managedObject instanceof Endpoint) {
-            objectName = getManagementNamingStrategy().getObjectNameForEndpoint((Endpoint) managedObject);
+            objectName = getManagementObjectNameStrategy().getObjectNameForEndpoint((Endpoint) managedObject);
         } else if (managedObject instanceof ManagedRoute) {
             ManagedRoute mr = (ManagedRoute) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForRoute(mr.getRoute());
+            objectName = getManagementObjectNameStrategy().getObjectNameForRoute(mr.getRoute());
         } else if (managedObject instanceof ManagedErrorHandler) {
             ManagedErrorHandler meh = (ManagedErrorHandler) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForErrorHandler(meh.getRouteContext(), meh.getErrorHandler(), meh.getErrorHandlerBuilder());
+            objectName = getManagementObjectNameStrategy().getObjectNameForErrorHandler(meh.getRouteContext(), meh.getErrorHandler(), meh.getErrorHandlerBuilder());
         } else if (managedObject instanceof ManagedProcessor) {
             ManagedProcessor mp = (ManagedProcessor) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForProcessor(mp.getContext(), mp.getProcessor(), mp.getDefinition());
+            objectName = getManagementObjectNameStrategy().getObjectNameForProcessor(mp.getContext(), mp.getProcessor(), mp.getDefinition());
         } else if (managedObject instanceof ManagedConsumer) {
             ManagedConsumer ms = (ManagedConsumer) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForConsumer(ms.getContext(), ms.getConsumer());
+            objectName = getManagementObjectNameStrategy().getObjectNameForConsumer(ms.getContext(), ms.getConsumer());
         } else if (managedObject instanceof ManagedProducer) {
             ManagedProducer ms = (ManagedProducer) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForProducer(ms.getContext(), ms.getProducer());
+            objectName = getManagementObjectNameStrategy().getObjectNameForProducer(ms.getContext(), ms.getProducer());
         } else if (managedObject instanceof ManagedBacklogTracer) {
             ManagedBacklogTracer mt = (ManagedBacklogTracer) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForTracer(mt.getContext(), mt.getBacklogTracer());
+            objectName = getManagementObjectNameStrategy().getObjectNameForTracer(mt.getContext(), mt.getBacklogTracer());
         } else if (managedObject instanceof ManagedBacklogDebugger) {
             ManagedBacklogDebugger md = (ManagedBacklogDebugger) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForTracer(md.getContext(), md.getBacklogDebugger());
+            objectName = getManagementObjectNameStrategy().getObjectNameForTracer(md.getContext(), md.getBacklogDebugger());
         } else if (managedObject instanceof ManagedEventNotifier) {
             ManagedEventNotifier men = (ManagedEventNotifier) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForEventNotifier(men.getContext(), men.getEventNotifier());
+            objectName = getManagementObjectNameStrategy().getObjectNameForEventNotifier(men.getContext(), men.getEventNotifier());
         } else if (managedObject instanceof ManagedThreadPool) {
             ManagedThreadPool mes = (ManagedThreadPool) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForThreadPool(mes.getContext(), mes.getThreadPool(), mes.getId(), mes.getSourceId());
+            objectName = getManagementObjectNameStrategy().getObjectNameForThreadPool(mes.getContext(), mes.getThreadPool(), mes.getId(), mes.getSourceId());
         } else if (managedObject instanceof ManagedClusterService) {
             ManagedClusterService mcs = (ManagedClusterService) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForClusterService(mcs.getContext(), mcs.getService());
+            objectName = getManagementObjectNameStrategy().getObjectNameForClusterService(mcs.getContext(), mcs.getService());
         } else if (managedObject instanceof ManagedService) {
             // check for managed service should be last
             ManagedService ms = (ManagedService) managedObject;
@@ -142,7 +141,7 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
             if (ms.getService() instanceof Endpoint) {
                 return null;
             }
-            objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
+            objectName = getManagementObjectNameStrategy().getObjectNameForService(ms.getContext(), ms.getService());
         }
 
         return nameType.cast(objectName);
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
index 385693d..d93ed46 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
@@ -574,7 +574,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti
         if (endpoint != null) {
             // ensure endpoint is registered, as the management strategy could have been configured to not always
             // register new endpoints in JMX, so we need to check if its registered, and if not register it manually
-            ObjectName on = context.getManagementStrategy().getManagementNamingStrategy().getObjectNameForEndpoint(endpoint);
+            ObjectName on = context.getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForEndpoint(endpoint);
             if (on != null && !context.getManagementStrategy().getManagementAgent().isRegistered(on)) {
                 // register endpoint as mbean
                 Object me = context.getManagementStrategy().getManagementObjectStrategy().getManagedObjectForEndpoint(context, endpoint);
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
index 5cdc535..14afd0f 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
@@ -28,7 +28,7 @@ public class ManagedNamePatternIncludeHostNameTest extends ManagementTestSupport
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        DefaultManagementNamingStrategy naming = (DefaultManagementNamingStrategy)context.getManagementStrategy().getManagementNamingStrategy();
+        DefaultManagementObjectNameStrategy naming = (DefaultManagementObjectNameStrategy)context.getManagementStrategy().getManagementObjectNameStrategy();
         naming.setHostName("localhost");
         context.getManagementStrategy().getManagementAgent().setIncludeHostName(true);
         context.getManagementNameStrategy().setNamePattern("cool-#name#");
diff --git a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index e15c459..865f8b9 100644
--- a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -96,7 +96,7 @@ import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.LogListener;
-import org.apache.camel.spi.ManagementNamingStrategy;
+import org.apache.camel.spi.ManagementObjectNameStrategy;
 import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.spi.MessageHistoryFactory;
 import org.apache.camel.spi.ModelJAXBContextFactory;
@@ -214,10 +214,10 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             LOG.info("Using custom ManagementStrategy: {}", managementStrategy);
             getContext().setManagementStrategy(managementStrategy);
         }
-        ManagementNamingStrategy managementNamingStrategy = getBeanForType(ManagementNamingStrategy.class);
-        if (managementNamingStrategy != null) {
-            LOG.info("Using custom ManagementNamingStrategy: {}", managementNamingStrategy);
-            getContext().getManagementStrategy().setManagementNamingStrategy(managementNamingStrategy);
+        ManagementObjectNameStrategy managementObjectNameStrategy = getBeanForType(ManagementObjectNameStrategy.class);
+        if (managementObjectNameStrategy != null) {
+            LOG.info("Using custom ManagementObjectNameStrategy: {}", managementObjectNameStrategy);
+            getContext().getManagementStrategy().setManagementObjectNameStrategy(managementObjectNameStrategy);
         }
         EventFactory eventFactory = getBeanForType(EventFactory.class);
         if (eventFactory != null) {
diff --git a/components/camel-jmx/src/main/docs/jmx-component.adoc b/components/camel-jmx/src/main/docs/jmx-component.adoc
index 7a18b5d..ed3b43d 100644
--- a/components/camel-jmx/src/main/docs/jmx-component.adoc
+++ b/components/camel-jmx/src/main/docs/jmx-component.adoc
@@ -134,7 +134,7 @@ Some of these management objects also expose lifecycle operations in
 addition to performance counter attributes.
 
 The
-http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/management/DefaultManagementNamingStrategy.html[`DefaultManagementNamingStrategy`]
+http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/management/DefaultManagementObjectNameStrategy.html[`DefaultManagementObjectNameStrategy`]
 is the default naming strategy which builds object names used for MBean
 registration. By default, `org.apache.camel` is the domain name for all
 object names created by `CamelNamingStrategy`. The domain name of the
@@ -800,12 +800,12 @@ types such as:
 
 And in the future we will add additional wrappers for more EIP patterns.
 
-==== ManagementNamingStrategy
+==== ManagementObjectNameStrategy
 
 *Available as of Camel 2.1*
 
 Camel provides a pluggable API for naming strategy by
-`org.apache.camel.spi.ManagementNamingStrategy`. A default
+`org.apache.camel.spi.ManagementObjectNameStrategy`. A default
 implementation is used to compute the MBean names that all MBeans are
 registered with.
 
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
index 7bc5085..7df790f 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
@@ -52,7 +52,7 @@ import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.LogListener;
-import org.apache.camel.spi.ManagementNamingStrategy;
+import org.apache.camel.spi.ManagementObjectNameStrategy;
 import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ReloadStrategy;
@@ -67,8 +67,8 @@ import org.apache.camel.spi.UuidGenerator;
 import org.apache.camel.spring.CamelBeanPostProcessor;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.camel.spring.spi.XmlCamelContextConfigurer;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.support.jsse.GlobalSSLContextParametersSupplier;
+import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -348,7 +348,7 @@ public class CamelAutoConfiguration {
         registerPropertyForBeanType(applicationContext, InflightRepository.class, camelContext::setInflightRepository);
         registerPropertyForBeanType(applicationContext, AsyncProcessorAwaitManager.class, camelContext::setAsyncProcessorAwaitManager);
         registerPropertyForBeanType(applicationContext, ManagementStrategy.class, camelContext::setManagementStrategy);
-        registerPropertyForBeanType(applicationContext, ManagementNamingStrategy.class, managementStrategy::setManagementNamingStrategy);
+        registerPropertyForBeanType(applicationContext, ManagementObjectNameStrategy.class, managementStrategy::setManagementObjectNameStrategy);
         registerPropertyForBeanType(applicationContext, EventFactory.class, managementStrategy::setEventFactory);
         registerPropertyForBeanType(applicationContext, UnitOfWorkFactory.class, camelContext::setUnitOfWorkFactory);
         registerPropertyForBeanType(applicationContext, RuntimeEndpointRegistry.class, camelContext::setRuntimeEndpointRegistry);
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringJmxDumpRouteAsXmlIncludeHostNameTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringJmxDumpRouteAsXmlIncludeHostNameTest.xml
index 22a8d1f..66fefdc 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringJmxDumpRouteAsXmlIncludeHostNameTest.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringJmxDumpRouteAsXmlIncludeHostNameTest.xml
@@ -24,7 +24,7 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-    <bean id="naming" class="org.apache.camel.management.DefaultManagementNamingStrategy">
+    <bean id="naming" class="org.apache.camel.management.DefaultManagementObjectNameStrategy">
         <property name="hostName" value="localhost"/>
         <property name="domainName" value="org.apache.camel"/>
     </bean>
diff --git a/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedIncludeHostNameTest.xml b/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedIncludeHostNameTest.xml
index bc62ecf..f086664 100644
--- a/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedIncludeHostNameTest.xml
+++ b/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedIncludeHostNameTest.xml
@@ -22,7 +22,7 @@
            xsi:schemaLocation="
              http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
 
-  <bean id="naming" class="org.apache.camel.management.DefaultManagementNamingStrategy">
+  <bean id="naming" class="org.apache.camel.management.DefaultManagementObjectNameStrategy">
     <property name="hostName" value="localhost"/>
     <property name="domainName" value="org.apache.camel"/>
   </bean>


[camel] 08/44: [CAMEL-12818] Remove deprecated stuff

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 04f42428e89981d5186532cc59b72fc1533f8a04
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Sep 10 10:44:48 2018 +0200

    [CAMEL-12818] Remove deprecated stuff
---
 camel-core/readme-eip.adoc                         |   8 +-
 camel-core/src/main/docs/bean-language.adoc        |   5 +-
 camel-core/src/main/docs/binding-component.adoc    | 131 -------
 camel-core/src/main/docs/controlbus-component.adoc |   2 +-
 camel-core/src/main/docs/eips/aggregate-eip.adoc   |   3 +-
 camel-core/src/main/docs/eips/from-eip.adoc        |   3 +-
 camel-core/src/main/docs/eips/inOnly-eip.adoc      |   3 +-
 camel-core/src/main/docs/eips/inOut-eip.adoc       |   3 +-
 camel-core/src/main/docs/eips/marshal-eip.adoc     |   3 +-
 camel-core/src/main/docs/eips/to-eip.adoc          |   3 +-
 camel-core/src/main/docs/eips/unmarshal-eip.adoc   |   3 +-
 camel-core/src/main/docs/ref-component.adoc        |   2 +-
 .../main/java/org/apache/camel/AsyncProcessor.java |   2 +-
 .../main/java/org/apache/camel/CamelContext.java   | 158 +-------
 .../src/main/java/org/apache/camel/Component.java  |  24 --
 .../org/apache/camel/ComponentConfiguration.java   | 158 --------
 .../java/org/apache/camel/ComponentVerifier.java   |  33 --
 .../src/main/java/org/apache/camel/Endpoint.java   |  19 -
 .../org/apache/camel/EndpointConfiguration.java    |  77 ----
 .../src/main/java/org/apache/camel/Exchange.java   |  11 -
 .../java/org/apache/camel/ExchangePattern.java     |  24 +-
 .../src/main/java/org/apache/camel/Main.java       |  25 --
 .../src/main/java/org/apache/camel/Message.java    |   9 -
 .../main/java/org/apache/camel/MessageHistory.java |   8 -
 .../src/main/java/org/apache/camel/Producer.java   |  29 --
 .../src/main/java/org/apache/camel/Properties.java |  37 --
 .../src/main/java/org/apache/camel/Property.java   |  38 --
 .../src/main/java/org/apache/camel/Route.java      |   4 +-
 .../org/apache/camel/RuntimeConfiguration.java     |   2 +-
 .../src/main/java/org/apache/camel/URIField.java   |  37 --
 .../java/org/apache/camel/VerifiableComponent.java |  32 --
 .../management/mbean/ManagedCamelContextMBean.java |  46 ---
 .../ManagedCircuitBreakerLoadBalancerMBean.java    |  47 ---
 .../management/mbean/ManagedComponentMBean.java    |   4 +-
 .../api/management/mbean/ManagedRouteMBean.java    |   7 -
 .../mbean/ManagedSendProcessorMBean.java           |   7 -
 .../org/apache/camel/builder/AdviceWithTasks.java  |   6 +-
 .../java/org/apache/camel/builder/Builder.java     |  68 ----
 .../org/apache/camel/builder/BuilderSupport.java   | 136 -------
 .../org/apache/camel/builder/DataFormatClause.java | 136 +++++--
 .../camel/builder/DefaultErrorHandlerBuilder.java  |  18 -
 .../camel/builder/ErrorHandlerBuilderRef.java      |   2 +-
 .../apache/camel/builder/ExpressionBuilder.java    |  33 --
 .../org/apache/camel/builder/ExpressionClause.java |  20 -
 .../camel/builder/ExpressionClauseSupport.java     |  20 -
 .../org/apache/camel/builder/ProcessorBuilder.java |  59 ---
 .../org/apache/camel/builder/RouteBuilder.java     |  18 +-
 .../apache/camel/builder/TransformerBuilder.java   |   3 +-
 .../org/apache/camel/builder/ValidatorBuilder.java |   3 +-
 .../org/apache/camel/cluster/CamelClusterView.java |  11 -
 .../bean/AbstractCamelInvocationHandler.java       |   7 +-
 .../apache/camel/component/bean/BeanComponent.java |   9 +-
 .../org/apache/camel/component/bean/BeanInfo.java  |   7 -
 .../component/bean/CamelInvocationHandler.java     |   5 -
 .../apache/camel/component/bean/ProxyHelper.java   |  60 ---
 .../camel/component/beanclass/ClassComponent.java  |   1 -
 .../camel/component/browse/BrowseComponent.java    |   5 +-
 .../component/controlbus/ControlBusComponent.java  |   5 +-
 .../component/controlbus/ControlBusProducer.java   |  14 +-
 .../component/dataformat/DataFormatComponent.java  |   5 +-
 .../camel/component/dataset/DataSetComponent.java  |   5 +-
 .../camel/component/dataset/DataSetEndpoint.java   |   7 -
 .../camel/component/direct/DirectComponent.java    |   5 +-
 .../component/directvm/DirectVmComponent.java      |   5 +-
 .../camel/component/directvm/DirectVmProducer.java |   2 +-
 .../extension/ComponentExtensionHelper.java        |  42 ---
 .../extension/ComponentVerifierExtension.java      |  78 ++--
 .../DefaultComponentVerifierExtension.java         |   3 +-
 .../apache/camel/component/file/FileComponent.java |  57 +--
 .../apache/camel/component/file/FileConsumer.java  |  13 -
 .../apache/camel/component/file/GenericFile.java   |   2 +-
 .../camel/component/file/GenericFileComponent.java |   7 +-
 .../camel/component/file/GenericFileConsumer.java  |  14 -
 .../camel/component/file/GenericFileMessage.java   |  15 +-
 .../component/language/LanguageComponent.java      |   5 +-
 .../apache/camel/component/log/LogComponent.java   |   5 +-
 .../apache/camel/component/mock/MockComponent.java |  10 +-
 .../apache/camel/component/mock/MockEndpoint.java  |  21 +-
 .../component/properties/PropertiesComponent.java  |  20 +-
 .../apache/camel/component/ref/RefComponent.java   |   5 +-
 .../camel/component/rest/RestApiComponent.java     |   5 +-
 .../apache/camel/component/rest/RestComponent.java |   7 +-
 .../rest/RestComponentVerifierExtension.java       |   3 +-
 .../component/scheduler/SchedulerComponent.java    |   5 +-
 .../camel/component/seda/CollectionProducer.java   |  47 ---
 .../apache/camel/component/seda/SedaComponent.java |  25 +-
 .../apache/camel/component/seda/SedaProducer.java  |  24 +-
 .../apache/camel/component/stub/StubComponent.java |   1 -
 .../apache/camel/component/test/TestComponent.java |   5 +-
 .../camel/component/timer/TimerComponent.java      |   5 +-
 .../component/validator/ValidatorComponent.java    |   9 +-
 .../org/apache/camel/component/vm/VmComponent.java |   5 -
 .../apache/camel/component/xslt/XsltComponent.java |   5 +-
 .../apache/camel/component/xslt/XsltConstants.java |  32 --
 .../apache/camel/component/xslt/XsltEndpoint.java  |   9 -
 .../org/apache/camel/converter/HasAnnotation.java  |  40 --
 .../org/apache/camel/converter/IOConverter.java    | 149 +-------
 .../apache/camel/converter/ObjectConverter.java    |   8 -
 .../apache/camel/converter/jaxp/StaxConverter.java |  28 +-
 .../apache/camel/converter/jaxp/XmlConverter.java  | 259 +------------
 .../camel/converter/stream/CachedOutputStream.java |  24 --
 .../apache/camel/impl/ActiveMQUuidGenerator.java   | 191 ----------
 .../impl/AnnotatedParameterConfiguration.java      |  43 ---
 .../camel/impl/ComponentConfigurationSupport.java  | 214 -----------
 .../org/apache/camel/impl/CompositeRegistry.java   |  11 -
 .../org/apache/camel/impl/ConfigurationHelper.java | 167 --------
 .../org/apache/camel/impl/DefaultCamelContext.java |  90 +----
 .../org/apache/camel/impl/DefaultComponent.java    |  19 +-
 .../camel/impl/DefaultComponentConfiguration.java  |  83 ----
 .../apache/camel/impl/DefaultConsumerTemplate.java |   8 -
 .../org/apache/camel/impl/DefaultEndpoint.java     |  73 ----
 .../camel/impl/DefaultEndpointConfiguration.java   |  90 -----
 .../apache/camel/impl/DefaultEndpointRegistry.java |   4 +-
 .../org/apache/camel/impl/DefaultExchange.java     |  55 +--
 .../camel/impl/DefaultExecutorServiceStrategy.java | 176 ---------
 .../camel/impl/DefaultInflightRepository.java      |  11 -
 .../java/org/apache/camel/impl/DefaultMessage.java |  12 +-
 .../apache/camel/impl/DefaultMessageHistory.java   |   6 -
 .../camel/impl/DefaultMessageHistoryFactory.java   |   7 -
 .../impl/DefaultPackageScanClassResolver.java      |   5 -
 .../apache/camel/impl/DefaultPollingEndpoint.java  |  11 -
 .../org/apache/camel/impl/DefaultProducer.java     |  10 -
 .../apache/camel/impl/DefaultProducerTemplate.java |  16 -
 .../java/org/apache/camel/impl/DefaultRoute.java   |   8 +-
 .../apache/camel/impl/DefaultRouteController.java  |  16 +
 .../org/apache/camel/impl/DefaultRouteNode.java    |   4 -
 .../apache/camel/impl/DefaultShutdownStrategy.java |   2 +-
 .../camel/impl/DefaultStreamCachingStrategy.java   |  35 --
 .../camel/impl/DefaultTransformerRegistry.java     |   2 +-
 .../apache/camel/impl/DefaultUuidGenerator.java    |   3 +-
 .../camel/impl/DefaultValidatorRegistry.java       |   2 +-
 .../java/org/apache/camel/impl/DeferProducer.java  |  25 --
 .../org/apache/camel/impl/DurationRoutePolicy.java |   4 +-
 .../org/apache/camel/impl/EmptyConsumerCache.java  |   2 +-
 .../org/apache/camel/impl/EmptyProducerCache.java  |   2 +-
 .../camel/impl/EventDrivenConsumerRoute.java       |   4 +-
 .../org/apache/camel/impl/ExpressionAdapter.java   |  27 --
 .../org/apache/camel/impl/ExpressionSupport.java   |  27 --
 .../camel/impl/HeaderFilterStrategyComponent.java  |   9 +-
 .../apache/camel/impl/InterceptSendToEndpoint.java |  10 -
 .../impl/InterceptSendToEndpointProcessor.java     |  13 -
 .../java/org/apache/camel/impl/JndiRegistry.java   |  12 -
 .../apache/camel/impl/LoggingExceptionHandler.java |  52 ---
 .../java/org/apache/camel/impl/MainSupport.java    |  25 --
 .../camel/impl/MappedEndpointConfiguration.java    | 165 --------
 .../apache/camel/impl/ParameterConfiguration.java  |  90 -----
 .../org/apache/camel/impl/ProcessorEndpoint.java   |   9 +-
 .../impl/PropertyPlaceholderDelegateRegistry.java  |  12 -
 .../org/apache/camel/impl/RoutePolicySupport.java  |  24 --
 .../apache/camel/impl/ScheduledPollEndpoint.java   |  11 -
 .../java/org/apache/camel/impl/ServiceSupport.java |  26 --
 .../java/org/apache/camel/impl/SimpleRegistry.java |  11 -
 .../camel/impl/SupervisingRouteController.java     |   2 +-
 .../camel/impl/SynchronousDelegateProducer.java    |  13 -
 .../camel/impl/ThrottlingExceptionRoutePolicy.java |   5 +-
 .../camel/impl/UriComponentConfiguration.java      | 156 --------
 .../apache/camel/impl/UriEndpointComponent.java    | 132 -------
 .../camel/impl/UriEndpointConfiguration.java       | 149 --------
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |   2 +-
 .../converter/AsyncProcessorTypeConverter.java     |   7 -
 .../converter/CorePackageScanClassResolver.java    |   6 -
 .../InstanceMethodFallbackTypeConverter.java       |   5 -
 .../converter/InstanceMethodTypeConverter.java     |   5 -
 .../impl/converter/LazyLoadingTypeConverter.java   | 133 -------
 .../StaticMethodFallbackTypeConverter.java         |   5 -
 .../impl/converter/StaticMethodTypeConverter.java  |   5 -
 .../TypeConvertersPackageScanClassResolver.java    |   6 -
 .../property/ExchangePropertyLanguage.java         |   8 -
 .../language/simple/SimpleExpressionParser.java    |  10 -
 .../language/simple/SimplePredicateParser.java     |  10 -
 .../camel/language/simple/SimpleTokenizer.java     |   5 +-
 .../simple/ast/SimpleFunctionExpression.java       |   5 -
 .../language/simple/types/LogicalOperatorType.java |  26 +-
 .../java/org/apache/camel/main/MainSupport.java    |   6 +-
 .../DefaultManagementLifecycleStrategy.java        |  14 +-
 .../DefaultManagementObjectStrategy.java           |  30 +-
 .../management/DefaultManagementStrategy.java      |  60 ---
 .../camel/management/EventNotifierSupport.java     |  26 --
 .../camel/management/MBeanInfoAssembler.java       |   5 -
 .../apache/camel/management/ManagedLoadTimer.java  |   2 +-
 .../management/ManagedManagementStrategy.java      |   5 -
 .../management/mbean/ManagedCamelContext.java      |  56 +--
 .../mbean/ManagedCircuitBreakerLoadBalancer.java   | 146 -------
 .../camel/management/mbean/ManagedComponent.java   |  18 +-
 .../camel/management/mbean/ManagedMarshal.java     |   4 +-
 .../camel/management/mbean/ManagedRoute.java       |   6 +-
 .../management/mbean/ManagedSendProcessor.java     |   4 -
 .../management/mbean/ManagedSuspendableRoute.java  |   6 +-
 .../camel/management/mbean/ManagedUnmarshal.java   |   4 +-
 .../java/org/apache/camel/model/AOPDefinition.java | 205 ----------
 .../apache/camel/model/AggregateDefinition.java    |  39 --
 .../org/apache/camel/model/BeanDefinition.java     |  62 ---
 .../org/apache/camel/model/CatchDefinition.java    |  45 ---
 .../apache/camel/model/DataFormatDefinition.java   |  21 +-
 .../apache/camel/model/DescriptionDefinition.java  |  59 ---
 .../org/apache/camel/model/ExpressionNode.java     |   8 +-
 .../org/apache/camel/model/FromDefinition.java     |  46 +--
 .../apache/camel/model/LoadBalanceDefinition.java  |  23 +-
 .../org/apache/camel/model/MarshalDefinition.java  |  26 +-
 .../org/apache/camel/model/ModelCamelContext.java  | 133 +++++--
 .../apache/camel/model/OnExceptionDefinition.java  |  23 --
 .../apache/camel/model/ProcessorDefinition.java    | 373 +-----------------
 .../camel/model/ProcessorDefinitionHelper.java     |  18 -
 .../apache/camel/model/PropertiesDefinition.java   |  65 ----
 .../org/apache/camel/model/RouteDefinition.java    |  10 +-
 .../apache/camel/model/RouteDefinitionHelper.java  |  14 +-
 .../org/apache/camel/model/RoutesDefinition.java   |  12 +-
 .../org/apache/camel/model/SendDefinition.java     |  39 +-
 .../apache/camel/model/SetOutHeaderDefinition.java | 100 -----
 .../apache/camel/model/UnmarshalDefinition.java    |  27 +-
 .../org/apache/camel/model/WireTapDefinition.java  |  10 +-
 ...ngServiceCallServiceDiscoveryConfiguration.java |  63 ----
 ...ngServiceCallServiceDiscoveryConfiguration.java |   6 +-
 ...ainedServiceCallServiceFilterConfiguration.java |  69 ----
 ...ulServiceCallServiceDiscoveryConfiguration.java |  22 +-
 .../cloud/ServiceCallConfigurationDefinition.java  |  34 --
 .../camel/model/cloud/ServiceCallDefinition.java   |  29 +-
 .../model/dataformat/XMLSecurityDataFormat.java    | 177 +--------
 .../camel/model/language/MethodCallExpression.java |  20 +-
 .../CircuitBreakerLoadBalancerDefinition.java      | 154 --------
 .../camel/model/rest/OptionsVerbDefinition.java    |  34 --
 .../model/rest/RestConfigurationDefinition.java    |   2 +-
 .../apache/camel/model/rest/RestDefinition.java    |  50 ---
 .../model/rest/RestOperationParamDefinition.java   |  36 --
 .../apache/camel/model/rest/VerbDefinition.java    |   2 -
 .../org/apache/camel/processor/AOPProcessor.java   |  37 --
 .../camel/processor/CamelInternalProcessor.java    |  32 --
 .../org/apache/camel/processor/CamelLogger.java    | 309 ---------------
 .../camel/processor/DelegateAsyncProcessor.java    |   8 -
 .../apache/camel/processor/MulticastProcessor.java |   8 -
 .../camel/processor/RecipientListProcessor.java    |  10 -
 .../apache/camel/processor/RedeliveryPolicy.java   |  26 --
 .../org/apache/camel/processor/SendProcessor.java  |   7 -
 .../org/apache/camel/processor/SortProcessor.java  |   2 +-
 .../java/org/apache/camel/processor/Splitter.java  |  12 -
 .../java/org/apache/camel/processor/Traceable.java |  26 --
 .../apache/camel/processor/UnitOfWorkProducer.java |  13 -
 .../aggregate/AggregationStrategyBeanInfo.java     |   5 -
 .../aggregate/AggregationStrategyMethodInfo.java   |   8 +-
 .../aggregate/UseOriginalAggregationStrategy.java  |   5 -
 .../camel/processor/binding/DataFormatBinding.java |  93 -----
 .../exceptionpolicy/ExceptionPolicyKey.java        |  24 --
 .../processor/interceptor/DefaultChannel.java      |   4 -
 .../processor/interceptor/DelayInterceptor.java    |  54 ---
 .../camel/processor/interceptor/Delayer.java       |  78 ----
 .../camel/processor/interceptor/StreamCaching.java |  83 ----
 .../interceptor/StreamCachingInterceptor.java      |  58 ---
 .../loadbalancer/CircuitBreakerLoadBalancer.java   | 324 ----------------
 .../camel/runtimecatalog/AbstractCamelCatalog.java |  66 +---
 .../camel/runtimecatalog/RuntimeCamelCatalog.java  |  46 ---
 .../runtimecatalog/SimpleValidationResult.java     |  34 --
 .../main/java/org/apache/camel/spi/Binding.java    |  40 --
 .../main/java/org/apache/camel/spi/Container.java  | 135 -------
 .../org/apache/camel/spi/EndpointCompleter.java    |  41 --
 .../apache/camel/spi/ExecutorServiceStrategy.java  | 271 -------------
 .../main/java/org/apache/camel/spi/HasBinding.java |  32 --
 .../org/apache/camel/spi/InflightRepository.java   |  16 -
 .../java/org/apache/camel/spi/ManagementAware.java |  45 ---
 .../org/apache/camel/spi/ManagementStrategy.java   |  58 ---
 .../apache/camel/spi/MessageHistoryFactory.java    |  12 -
 .../apache/camel/spi/PackageScanClassResolver.java |  10 -
 .../main/java/org/apache/camel/spi/Registry.java   |  35 --
 .../main/java/org/apache/camel/spi/Required.java   |  38 --
 .../org/apache/camel/spi/RestConfiguration.java    |  35 +-
 .../java/org/apache/camel/spi/RouteController.java |  20 +
 .../camel/support/LoggingExceptionHandler.java     |  15 -
 .../camel/support/ReloadStrategySupport.java       |   3 +-
 .../apache/camel/support/RoutePolicySupport.java   |  14 +-
 .../support/TokenXMLPairExpressionIterator.java    | 230 -----------
 .../apache/camel/util/AsyncProcessorHelper.java    |  58 ---
 .../org/apache/camel/util/CamelContextHelper.java  |   3 +-
 .../java/org/apache/camel/util/EndpointHelper.java |  42 +--
 .../java/org/apache/camel/util/ExchangeHelper.java |  54 +--
 .../main/java/org/apache/camel/util/FileUtil.java  |  90 +----
 .../org/apache/camel/util/GroupTokenIterator.java  |  24 --
 .../main/java/org/apache/camel/util/IOHelper.java  |  24 --
 .../java/org/apache/camel/util/ObjectHelper.java   | 234 +-----------
 .../main/java/org/apache/camel/util/StopWatch.java |  11 -
 .../java/org/apache/camel/util/StringHelper.java   |  13 -
 .../org/apache/camel/util/UnitOfWorkHelper.java    |  12 -
 .../java/org/apache/camel/util/ValueHolder.java    |  17 +-
 .../camel/util/component/AbstractApiComponent.java | 149 +-------
 .../camel/util/component/AbstractApiEndpoint.java  |   2 +-
 .../camel/util/jsse/SSLContextParameters.java      |  18 -
 .../util/toolbox/XsltAggregationStrategy.java      |   5 -
 .../org/apache/camel/model/cloud/jaxb.index        |   2 -
 .../resources/org/apache/camel/model/jaxb.index    |   3 -
 .../org/apache/camel/model/loadbalancer/jaxb.index |   1 -
 .../org/apache/camel/model/rest/jaxb.index         |   1 -
 .../java/org/apache/camel/CamelExceptionsTest.java |   1 -
 .../java/org/apache/camel/ContextTestSupport.java  |  11 -
 .../test/java/org/apache/camel/TestSupport.java    |  51 ---
 .../camel/builder/ContextErrorHandlerTest.java     |   3 +-
 .../camel/builder/ErrorHandlerBuilderRefTest.java  |   4 +-
 .../apache/camel/builder/ExchangeBuilderTest.java  |   4 +-
 .../org/apache/camel/builder/RouteBuilderTest.java |   2 +-
 .../camel/component/bean/BeanConcurrentTest.java   |   2 +-
 .../bean/BeanExpressionConcurrentTest.java         |   2 +-
 .../apache/camel/component/bean/BeanInfoTest.java  |  21 +-
 .../ControlBusLanguageSimpleStartRouteTest.java    |  16 +-
 .../controlbus/ControlBusRestartRouteTest.java     |   4 +-
 .../controlbus/ControlBusStartRouteAsyncTest.java  |   2 +-
 .../controlbus/ControlBusStartRouteTest.java       |  20 +-
 .../component/dataset/DataSetEndpointTest.java     |   4 +-
 .../component/dataset/DataSetPreloadTest.java      |   2 +-
 .../camel/component/dataset/DataSetSedaTest.java   |   2 +-
 .../component/direct/DirectNoConsumerTest.java     |   2 +-
 .../direct/DirectProducerBlockingTest.java         |   4 +-
 .../component/directvm/DirectVmNoConsumerTest.java |   2 +-
 .../directvm/DirectVmProducerBlockingTest.java     |   4 +-
 .../extension/verifier/ComponentVerifierTest.java  |   7 +-
 .../FileConcurrentWriteAppendSameFileTest.java     |   2 +-
 .../file/FileConsumeDoneFileIssueTest.java         |   6 +-
 .../file/FileConsumeMaxMessagesPerPollTest.java    |   2 +-
 .../file/FileConsumeMoveRelativeNameTest.java      |   2 +-
 .../FileConsumeNotEagerMaxMessagesPerPollTest.java |   2 +-
 ...ileConsumerAbsoluteRootPathDefaultMoveTest.java |   2 +-
 .../component/file/FileConsumerBatchTest.java      |   2 +-
 .../file/FileConsumerCustomSchedulerTest.java      |   2 +-
 ...FileConsumerIdempotentKeyChangedIssue2Test.java |   2 +-
 .../FileConsumerIdempotentKeyChangedIssueTest.java |   2 +-
 ...FileConsumerPollStrategyPolledMessagesTest.java |   2 +-
 .../file/FileConsumerRelativeFileNameTest.java     |   2 +-
 .../file/FileConsumerRestartNotLeakThreadTest.java |   4 +-
 .../FileConsumerSharedThreadPollStopRouteTest.java |   4 +-
 .../FileConsumerThreadsInProgressIssueTest.java    |   2 +-
 .../file/FileMarkerFileDeleteOldLockFilesTest.java |   2 +-
 ...eMarkerFileRecursiveDeleteOldLockFilesTest.java |   2 +-
 ...erFileRecursiveDoNotDeleteOldLockFilesTest.java |   2 +-
 ...cursiveFilterDeleteOldLockFilesIncludeTest.java |   2 +-
 ...rFileRecursiveFilterDeleteOldLockFilesTest.java |   2 +-
 .../camel/component/file/FilePollEnrichTest.java   |   2 +-
 .../file/FileProducerFileExistAppendTest.java      |   2 +-
 .../file/FileProducerFileExistOverrideTest.java    |   2 +-
 .../file/FileProducerFileExistTryRenameTest.java   |   2 +-
 .../FileRenameReadLockMustUseMarkerFileTest.java   |   2 +-
 .../camel/component/file/FileSplitInSplitTest.java |   2 +-
 .../file/FromFilePollThirdTimeOkTest.java          |   2 +-
 .../component/file/stress/FileAsyncStressTest.java |   2 +-
 .../camel/component/log/LogListenerTest.java       |   3 +-
 .../camel/component/mock/MockAsBeanTest.java       |   3 +-
 .../camel/component/mock/MockEndpointTest.java     |   4 +-
 .../camel/component/rest/FromRestOptionsTest.java  |  73 ----
 .../component/rest/RestComponentVerifierTest.java  |  15 +-
 .../component/seda/CollectionProducerTest.java     |  59 ---
 .../seda/SedaComponentReferenceEndpointTest.java   |   4 +-
 .../seda/SedaConcurrentConsumersNPEIssueTest.java  |   6 +-
 .../seda/SedaConsumerSuspendResumeTest.java        |   4 +-
 .../component/seda/SedaMultipleConsumersTest.java  |   2 +-
 .../camel/component/seda/SedaNoConsumerTest.java   |   2 +-
 .../component/seda/SedaPurgeWhenStoppingTest.java  |   4 +-
 .../seda/SedaRemoveRouteThenAddAgainTest.java      |   2 +-
 .../seda/SedaSuspendConsumerStopRouteTest.java     |   4 +-
 .../camel/component/seda/SedaTimeoutTest.java      |   2 +-
 .../camel/component/test/TestEndpointTest.java     |   3 +-
 .../timer/TimerMultipleConsumerStopRouteTest.java  |   2 +-
 .../camel/component/timer/TimerNameTest.java       |   2 +-
 .../component/timer/TimerNegativeDelayTest.java    |   2 +-
 .../timer/TimerNegativeNoRepeatCountDelayTest.java |   2 +-
 .../component/timer/TimerRepeatCountTest.java      |   2 +-
 .../vm/VmComponentReferenceEndpointTest.java       |   4 +-
 .../vm/VmMultipleConsumersRemoteRouteTest.java     |   2 +-
 .../XsltFromHeaderOverrideEndpointUriTest.java     |  81 ----
 .../apache/camel/component/xslt/XsltRouteTest.java |   2 +-
 .../camel/converter/ObjectConverterTest.java       |   8 -
 .../camel/converter/jaxp/XmlConverterTest.java     |  18 +-
 .../camel/impl/ActiveMQUuidGeneratorTest.java      |  61 ---
 .../CamelContextAddRestDefinitionsFromXmlTest.java |   2 +-
 ...CamelContextAddRouteDefinitionsFromXmlTest.java |  16 +-
 .../camel/impl/ComponentConfigurationTest.java     | 419 ---------------------
 .../apache/camel/impl/CompositeRegistryTest.java   |   2 +-
 .../apache/camel/impl/ConfigurationHelperTest.java | 390 -------------------
 .../org/apache/camel/impl/CustomIdFactoryTest.java |   2 +
 .../impl/DefaultCamelContextAutoStartupTest.java   |   4 +-
 ...aultCamelContextLazyLoadTypeConvertersTest.java |  70 ----
 ...melContextWithLifecycleStrategyRestartTest.java |   4 +-
 .../org/apache/camel/impl/DefaultExchangeTest.java |  26 +-
 .../impl/DefaultExecutorServiceStrategyTest.java   | 367 ------------------
 .../org/apache/camel/impl/DefaultMessageTest.java  |  11 -
 .../apache/camel/impl/DefaultUnitOfWorkTest.java   |   2 +
 .../camel/impl/DurationRoutePolicyFactoryTest.java |   8 +-
 .../impl/DurationRoutePolicyMaxMessagesTest.java   |   8 +-
 .../impl/DurationRoutePolicyMaxSecondsTest.java    |   8 +-
 .../camel/impl/EndpointConfigurationTest.java      | 105 ------
 ...outeEndpointsRemoteRouteSharedEndpointTest.java |   2 +-
 ...tRegistryKeepRouteEndpointsRemoteRouteTest.java |   2 +-
 .../impl/ExtendedStartupListenerComponentTest.java |  14 +-
 .../impl/HeaderFilterStrategyComponentTest.java    |   2 +-
 .../org/apache/camel/impl/JndiRegistryTest.java    |  10 +-
 .../org/apache/camel/impl/RefDataFormatTest.java   |   1 +
 .../camel/impl/RemoveRouteStopEndpointTest.java    |  10 +-
 .../camel/impl/RouteDirectSuspendResumeTest.java   |   8 +-
 .../apache/camel/impl/RoutePolicyCallbackTest.java |  10 +-
 .../apache/camel/impl/RoutePolicySupportTest.java  |  10 +-
 .../org/apache/camel/impl/RoutePolicyTest.java     |  14 +-
 .../org/apache/camel/impl/RouteRemove2Test.java    |  14 +-
 .../org/apache/camel/impl/RouteRemoveTest.java     |  14 +-
 .../apache/camel/impl/RouteSedaStopStartTest.java  |   8 +-
 .../camel/impl/RouteSedaSuspendResumeTest.java     |   8 +-
 .../camel/impl/RouteSuspendResumeWarmUpTest.java   |   4 +-
 ...edPollEndpointConfigureConsumerRestartTest.java |   4 +-
 .../ShutdownGracefulNoAutoStartedRoutesTest.java   |   6 +-
 .../SimpleShutdownGracefulNoAtuoStartedTest.java   |   2 +-
 .../camel/impl/StartStopAndShutdownRouteTest.java  |   4 +-
 .../StartupListenerComponentFromRegistryTest.java  |   8 +-
 .../camel/impl/StartupListenerComponentTest.java   |   8 +-
 .../org/apache/camel/impl/StartupListenerTest.java |   8 +-
 .../camel/impl/StopRouteAbortAfterTimeoutTest.java |   8 +-
 .../camel/impl/TwoRouteSuspendResumeTest.java      |  12 +-
 .../impl/cloud/ServiceCallConfigurationTest.java   |  10 +-
 ...ScopedOnExceptionMultipleRouteBuildersTest.java |   2 +-
 .../camel/issues/ErrorHandlerAdviceIssueTest.java  |   2 +-
 .../OnExceptionBeforeErrorHandlerIssueTest.java    |   6 +-
 .../issues/OnExceptionContinuedIssueTest.java      |   2 +-
 ...ScopedOnExceptionMultipleRouteBuildersTest.java |   3 +-
 .../camel/issues/ServicePoolAwareLeakyTest.java    |   4 +-
 .../camel/issues/StopRouteFromRouteTest.java       |  10 +-
 .../issues/StopRouteImpactsErrorHandlerTest.java   |   2 +-
 ...dNotStopContextScopedErrorHandlerIssueTest.java |   2 +-
 ...uldNotStopRouteScopedErrorHandlerIssueTest.java |   2 +-
 .../issues/TypeConverterConcurrencyIssueTest.java  |   2 +-
 .../simple/SimpleParserExpressionInvalidTest.java  |  10 +-
 .../simple/SimpleParserExpressionTest.java         |  44 +--
 .../simple/SimpleParserPredicateInvalidTest.java   |  14 +-
 .../language/simple/SimpleParserPredicateTest.java |  50 +--
 .../simple/SimpleParserRegexpPredicateTest.java    |   2 +-
 .../apache/camel/language/simple/SimpleTest.java   |   2 +-
 .../java/org/apache/camel/main/MainVetoTest.java   |   1 +
 .../management/CamelContextDisableJmxTest.java     |   1 +
 .../apache/camel/management/CustomEndpoint.java    |   7 +-
 .../camel/management/EndpointCompletionTest.java   | 114 ------
 .../ManagedCamelContextPropertiesTest.java         |   8 +-
 .../ManagedCircuitBreakerLoadBalancerTest.java     | 129 -------
 .../camel/management/ManagedComponentTest.java     |  28 +-
 .../camel/management/ManagedMarshalTest.java       |   2 +-
 ...gedProducerRecipientListRegisterAlwaysTest.java |   5 +-
 ...edProducerRouteAddRemoveRegisterAlwaysTest.java |   2 +-
 .../camel/management/ManagedProducerTest.java      |   5 +-
 .../camel/management/ManagedRefProducerTest.java   |  13 +-
 .../camel/management/ManagedRegisterRouteTest.java |   6 +-
 .../camel/management/ManagedRestRegistryTest.java  |   2 +-
 .../management/ManagedRouteAddRemoveTest.java      |  14 +-
 .../ManagedRoutePerformanceCounterTest.java        |   8 +-
 ...edRouteRemoveWireTapExplicitThreadPoolTest.java |   2 +-
 .../ManagedRouteSuspendAndResumeTest.java          |   1 +
 .../camel/management/ManagedSedaEndpointTest.java  |   2 +-
 .../camel/management/ManagedSendProcessorTest.java |   2 +-
 ...ManagedSetAndRemoveHeaderAndPropertiesTest.java |   4 +-
 .../ManagedThrottlingInflightRoutePolicyTest.java  |   4 +-
 .../camel/management/ManagedUnmarshalTest.java     |   2 +-
 .../ManagedUnregisterCamelContextTest.java         |   6 +-
 .../management/RemoveRouteDefinitionTest.java      |   2 +-
 .../java/org/apache/camel/model/XmlParseTest.java  |  40 +-
 .../camel/processor/AOPAfterFinallyTest.java       |  76 ----
 .../org/apache/camel/processor/AOPAfterTest.java   |  53 ---
 .../camel/processor/AOPAroundFinallyTest.java      |  78 ----
 .../org/apache/camel/processor/AOPAroundTest.java  |  54 ---
 .../org/apache/camel/processor/AOPBeforeTest.java  |  53 ---
 .../apache/camel/processor/AOPNestedRouteTest.java |  58 ---
 .../camel/processor/BeanCachedProcessorTest.java   |   8 +-
 .../org/apache/camel/processor/BeanCachedTest.java |   8 +-
 .../CircuitBreakerLoadBalancerInvalidTest.java     |  51 ---
 .../processor/CircuitBreakerLoadBalancerTest.java  | 242 ------------
 ...point2MustBeStartedBeforeSendProcessorTest.java |   4 +-
 ...dpointMustBeStartedBeforeSendProcessorTest.java |   4 +-
 .../FailOverLoadBalanceAutoStartupFalseTest.java   |   2 +-
 .../apache/camel/processor/FlipRoutePolicy.java    |   4 +-
 .../camel/processor/IdempotentConsumerTest.java    |   2 +-
 .../apache/camel/processor/LogEipListenerTest.java |   3 +-
 ...deliveryWhileStoppingDeadLetterChannelTest.java |   2 +-
 ...cipientListWithStringDelimitedPropertyTest.java |   2 +-
 ...tterErrorHandlerNoRedeliveryOnShutdownTest.java |   2 +-
 ...veryErrorHandlerNoRedeliveryOnShutdownTest.java |   2 +-
 ...StacksNeededDuringRoutingSendProcessorTest.java |   9 +-
 .../apache/camel/processor/ResequencerTest.java    |   2 -
 .../camel/processor/RouteAutoStartupTest.java      |   6 +-
 .../camel/processor/RouteNoAutoStartupTest.java    |   2 +-
 ...StartupOrderSuspendResumeNoAutoStartupTest.java |   6 +-
 .../camel/processor/SetExchangePatternTest.java    |   7 -
 .../processor/ShutdownCompleteAllTasksTest.java    |   2 +-
 .../SimpleMockNoLazyTypeConverterTest.java         |  29 --
 .../processor/SplitterWireTapStreamCacheTest.java  |   2 +
 .../processor/TransformToInvalidEndpointTest.java  |  49 ---
 .../apache/camel/processor/TransformToTest.java    |  73 ----
 .../camel/processor/WireTapOnPrepareTest.java      |   2 +-
 ...WireTapUsingFireAndForgetCopyAsDefaultTest.java |  26 +-
 .../WireTapUsingFireAndForgetCopyTest.java         |  24 +-
 .../processor/WireTapUsingFireAndForgetTest.java   |  10 +-
 .../aggregator/AbstractDistributedTest.java        |   4 +-
 .../aggregator/AggregateCompleteAllOnStopTest.java |   2 +-
 .../AggregateForceCompletionOnStopTest.java        |   4 +-
 .../AggregateGroupedExchangeBackwardsCompTest.java |   5 +-
 ...roupedExchangeCompletionExpressionSizeTest.java |   5 +-
 .../AggregateShutdownThreadPoolTest.java           |   8 +-
 .../AggregateSimpleExpressionIssueTest.java        |   2 +-
 .../aggregator/AggregatorConcurrencyTest.java      |   2 +-
 ...ionStrategyCompletionFromBatchConsumerTest.java |   2 +-
 .../camel/processor/enricher/EnricherRefTest.java  |   4 +-
 .../interceptor/AdviceWithAutoStartupTest.java     |  16 +-
 .../interceptor/DebugExceptionBreakpointTest.java  |   2 +
 .../DebugExceptionEventBreakpointTest.java         |   2 +
 .../interceptor/DebugSingleStepConditionTest.java  |   2 +
 .../processor/interceptor/DebugSingleStepTest.java |   2 +
 .../camel/processor/interceptor/DebugTest.java     |   4 +-
 .../interceptor/StreamCachingInterceptorTest.java  | 144 -------
 ...ScopedOnExceptionLoadBalancerStopRouteTest.java |   2 +-
 .../runtimecatalog/RuntimeCamelCatalogTest.java    |  25 +-
 .../java/org/apache/camel/spi/ContainerTest.java   |  89 -----
 .../util/DumpModelAsXmlSplitBodyRouteTest.java     |   2 +-
 ...umpModelAsXmlSplitNestedChoiceEndRouteTest.java |   2 +-
 .../DumpModelAsXmlTransformRouteConstantTest.java  |   2 +-
 .../DumpModelAsXmlTransformRouteLanguageTest.java  |   2 +-
 .../util/DumpModelAsXmlTransformRouteTest.java     |   2 +-
 .../java/org/apache/camel/util/FileUtilTest.java   |  14 +-
 .../org/apache/camel/util/MessageHelperTest.java   |   6 +-
 .../component/ApiMethodPropertiesHelperTest.java   |   4 +-
 .../camel/util/jsse/SSLContextParametersTest.java  |  92 ++---
 .../org/apache/camel/model/setOutHeader.xml        |  28 --
 .../apache/camel/model/setOutHeaderToConstant.xml  |  28 --
 .../component/ahc/ws/WsProducerConsumerTest.java   |   8 +-
 .../apache/camel/component/ahc/AhcComponent.java   |   1 -
 .../apache/camel/component/amqp/AMQPComponent.java |  14 +-
 .../apache/camel/component/apns/ApnsComponent.java |   5 +-
 ...1DataFormatWithStreamIteratorByteArrayTest.java |   8 +-
 .../ASN1DataFormatWithStreamIteratorClassTest.java |  16 +-
 .../asn1/SpringASN1DataFormatRouteTest.xml         |   2 +-
 .../camel/component/atmos/AtmosComponent.java      |   7 +-
 .../camel/component/atmos/AtmosEndpoint.java       |   4 -
 .../apache/camel/component/atom/AtomComponent.java |   1 -
 .../apache/camel/component/feed/FeedComponent.java |   7 +-
 .../atomix/client/map/AtomixMapComponent.java      |   1 -
 .../client/messaging/AtomixMessagingComponent.java |   1 -
 .../client/multimap/AtomixMultiMapComponent.java   |   1 -
 .../atomix/client/queue/AtomixQueueComponent.java  |   1 -
 .../atomix/client/set/AtomixSetComponent.java      |   1 -
 .../atomix/client/value/AtomixValueComponent.java  |   1 -
 .../camel-avro/src/main/docs/avro-component.adoc   |   2 +-
 .../camel-avro/src/main/docs/avro-dataformat.adoc  |   2 +-
 .../apache/camel/component/avro/AvroComponent.java |   7 +-
 .../camel/component/avro/AvroHttpConsumerTest.java |   4 +-
 .../component/avro/AvroNettyConsumerTest.java      |   4 +-
 .../camel/component/avro/avro-http-consumer.xml    |   4 +-
 .../camel/component/avro/avro-netty-consumer.xml   |   4 +-
 .../camel/dataformat/avro/springDataFormat.xml     |   6 +-
 .../aws/xray/TraceAnnotatedTracingStrategy.java    |   4 +-
 .../aws/xray/component/TestXRayComponent.java      |   1 -
 .../apache/camel/component/aws/cw/CwEndpoint.java  |   7 -
 .../camel/component/aws/ddb/DdbEndpoint.java       |   7 -
 .../apache/camel/component/aws/s3/S3Endpoint.java  |   7 -
 .../camel/component/aws/sdb/SdbEndpoint.java       |   6 -
 .../camel/component/aws/ses/SesEndpoint.java       |   6 -
 .../camel/component/aws/sns/SnsEndpoint.java       |   6 -
 .../component/aws/s3/S3ComponentFileTest.java      |   2 +-
 .../component/azure/blob/BlobServiceComponent.java |   7 +-
 .../azure/queue/QueueServiceComponent.java         |   7 +-
 .../dataformat/barcode/barcodeDataformatSpring.xml |  12 +-
 .../SpringBase64DataFormatLineEndingsTest.xml      |   4 +-
 .../SpringBase64DataFormatLineLengthTest.xml       |   4 +-
 .../bean/validator/BeanValidatorComponent.java     |   5 +-
 .../beanio/BeanIODataFormatComplexTest.java        |   4 +-
 .../beanio/SpringBeanIODataFormatSimpleTest.xml    |   6 +-
 .../component/beanstalk/BeanstalkComponent.java    |   5 +-
 .../beanstalk/ConsumerCompletionTest.java          |   6 +-
 .../beanstalk/ConsumerToProducerHeadersTest.java   |   2 +-
 .../beanstalk/TestExchangeCopyProcessor.java       |   2 +-
 .../BindySimpleCsvUnmarshallDslTest-context.xml    |   2 +-
 .../blueprint/BlueprintContainerRegistry.java      |  15 -
 .../camel/blueprint/CamelContextFactoryBean.java   |  28 --
 .../blueprint/CamelErrorHandlerFactoryBean.java    |   4 -
 .../apache/camel/blueprint/ErrorHandlerType.java   |   2 +-
 .../blueprint/handler/CamelNamespaceHandler.java   |  12 +-
 .../blueprint/BlueprintComponentResolverTest.java  |  12 -
 .../camel/component/bonita/BonitaComponent.java    |   7 +-
 .../camel/component/bonita/BonitaEndpoint.java     |   4 -
 .../camel-boon/src/main/docs/boon-dataformat.adoc  |   2 +-
 .../org/apache/camel/cdi/CdiCamelExtension.java    |   1 +
 .../org/apache/camel/cdi/CdiCamelRegistry.java     |  14 -
 .../org/apache/camel/cdi/CdiEventEndpoint.java     |   2 +-
 .../JtaTransactionErrorHandlerBuilder.java         |   2 +-
 .../camel/cdi/xml/CamelContextFactoryBean.java     |  26 --
 .../camel/cdi/mock/DummyRestConsumerFactory.java   |   8 +-
 .../cdi/test/AdvisedMockEndpointProducerTest.java  |   2 +-
 .../apache/camel/cdi/test/AdvisedRouteTest.java    |   4 +-
 .../camel/cdi/test/ContextComponentTest.java       |   2 +
 .../camel/cdi/test/CustomCamelContextTest.java     |   4 +-
 .../camel/cdi/test/ManualCamelContextTest.java     |   4 +-
 .../camel/cdi/test/MultiCamelContextTest.java      |   2 +-
 .../cdi/test/MultiContextConsumerTemplateTest.java |   2 +-
 .../cdi/test/MultiContextEndpointInjectTest.java   |   2 +-
 .../cdi/test/MultiContextEventEndpointTest.java    |   2 +-
 .../cdi/test/MultiContextEventNotifierTest.java    |   2 +-
 .../cdi/test/MultiContextProduceTemplateTest.java  |   2 +-
 .../cdi/test/MultiContextProducerTemplateTest.java |   2 +-
 .../cdi/test/MultiContextPropertyInjectTest.java   |   2 +-
 .../camel/cdi/test/PropertyEndpointTest.java       |   2 +
 .../org/apache/camel/cdi/test/XmlBeansTest.java    |   2 +
 .../cdi/test/XmlServiceCallConfigurationTest.java  |   5 +-
 .../src/test/resources/camel-context-beans.xml     |   4 +-
 .../chronicle/engine/ChronicleEngineComponent.java |   7 +-
 .../camel/component/chunk/ChunkComponent.java      |   5 +-
 .../camel/component/chunk/ChunkComponentTest.java  |   2 +-
 .../org/apache/camel/component/cm/CMComponent.java |   7 +-
 .../org/apache/camel/component/cm/test/CMTest.java |   6 +-
 .../apache/camel/component/cmis/CMISComponent.java |   5 +-
 .../java/org/apache/camel/coap/CoAPComponent.java  |  15 +-
 .../camel/component/cometd/CometdComponent.java    |   5 +-
 .../camel/component/consul/ConsulComponent.java    |   1 -
 .../camel/component/consul/ConsulRegistry.java     |  15 -
 .../cloud/ConsulServiceRegistrationTestBase.java   |   4 +-
 .../apache/camel/core/osgi/OsgiClassResolver.java  |  13 +-
 .../camel/core/osgi/OsgiServiceRegistry.java       |  12 -
 .../camel/core/osgi/OsgiComponentResolverTest.java |  12 -
 .../core/xml/AbstractCamelContextFactoryBean.java  | 119 ++----
 .../core/xml/AbstractCamelEndpointFactoryBean.java |  33 --
 .../camel/component/couchdb/CouchDbComponent.java  |   7 +-
 .../component/crypto/cms/CryptoCmsComponent.java   |   7 +-
 .../crypto/DigitalSignatureComponent.java          |   7 +-
 .../crypto/SpringCryptoDataFormatTest.xml          |  40 +-
 .../component/crypto/SpringPGPDataFormatTest.xml   |   8 +-
 .../component/cxf/transport/CamelOutputStream.java |   2 +-
 .../apache/camel/component/cxf/CxfComponent.java   |   3 +-
 .../apache/camel/component/cxf/CxfEndpoint.java    |  14 -
 .../component/cxf/cxfbean/CxfBeanComponent.java    |   1 -
 .../camel/component/cxf/jaxrs/CxfRsComponent.java  |   3 +-
 .../camel/component/cxf/jaxrs/CxfRsEndpoint.java   |   7 -
 .../cxf/CxfGreeterCXFMessageRouterTest.java        |   3 +-
 .../cxf/CxfCustomizedExceptionContext.xml          |   4 +-
 .../component/cxf/GreeterEnrichRouterContext.xml   |   2 +-
 .../apache/camel/component/cxf/WsdlOnlyBeans.xml   |   6 +-
 .../component/cxf/cxfbean/CxfBeanTest-context.xml  |   2 +-
 ...eanWithWsdlLocationInBeanAndIoCTest-context.xml |   2 +-
 .../CxfBeanWithWsdlLocationInBeanTest-context.xml  |   2 +-
 .../cxf/jaxrs/CxfRsProducerHeaderTest-context.xml  |   6 +-
 .../cxf/jaxrs/CxfRsSpringAsyncProducer.xml         |   2 +-
 .../component/cxf/jaxrs/CxfRsSpringProducer.xml    |   2 +-
 .../jaxrs/CxfRsSpringProducerAddressOverride.xml   |   2 +-
 .../digitalocean/DigitalOceanComponent.java        |  10 +-
 .../component/disruptor/DisruptorComponent.java    |   5 +-
 .../disruptor/DisruptorBufferingTest.java          |   2 +-
 .../DisruptorComponentReferenceEndpointTest.java   |   4 +-
 .../DisruptorConcurrentConsumersNPEIssueTest.java  |   6 +-
 .../disruptor/DisruptorConcurrentTest.java         |   8 +-
 .../DisruptorConsumerSuspendResumeTest.java        |   4 +-
 .../DisruptorInOutChainedTimeoutTest.java          |   2 +-
 .../disruptor/DisruptorMultipleConsumersTest.java  |   2 +-
 .../DisruptorRemoveRouteThenAddAgainTest.java      |   2 +-
 .../component/disruptor/DisruptorTimeoutTest.java  |   2 +-
 .../DisruptorVmComponentReferenceEndpointTest.java |   4 +-
 .../vm/DisruptorVmInOutChainedTimeoutTest.java     |   2 +-
 .../apache/camel/component/dns/DnsComponent.java   |   5 +-
 .../component/dns/policy/DnsActivationPolicy.java  |   6 +-
 .../camel/component/docker/DockerEndpoint.java     |   4 -
 .../camel/component/docker/DockerHelper.java       |   4 +-
 .../camel/component/dozer/DozerComponent.java      |   7 +-
 .../component/dozer/CustomMappingTest-context.xml  |   2 +-
 .../ExpressionMappingClasspathTest-context.xml     |   2 +-
 .../dozer/ExpressionMappingFileTest-context.xml    |   2 +-
 .../dozer/ExpressionMappingTest-context.xml        |   2 +-
 .../dozer/VariableMappingTest-context.xml          |   2 +-
 .../component/dozer/XmlToJsonTest-context.xml      |   2 +-
 .../camel/component/drill/DrillComponent.java      |   7 +-
 .../camel/component/dropbox/DropboxEndpoint.java   |   4 -
 .../apache/camel/component/ejb/EjbComponent.java   |   1 -
 .../camel/component/elsql/ElsqlComponent.java      |   5 +-
 .../elsql/ElSqlConsumerDynamicParameterTest.java   |   2 +-
 .../apache/camel/component/etcd/EtcdComponent.java |   1 -
 .../camel/component/etcd/EtcdKeysProducer.java     |   6 +-
 .../apache/camel/component/etcd/EtcdWatchTest.java |   2 +-
 .../component/eventadmin/EventAdminComponent.java  |   5 +-
 .../apache/camel/component/exec/ExecComponent.java |   5 +-
 .../component/facebook/FacebookComponent.java      |   6 +-
 .../facebook/FacebookComponentConsumerTest.java    |   2 +-
 .../FhirDataformatDefaultConfigSpringTest.java     |   3 +-
 .../fhir/FhirDataFormatConfigSpringTest.xml        |   4 +-
 .../fhir/FhirDataFormatDefaultConfigSpringTest.xml |   4 +-
 .../FhirJsonDataFormatErrorHandlerSpringTest.xml   |   4 +-
 .../FhirXmlDataFormatErrorHandlerSpringTest.xml    |   4 +-
 .../component/flatpack/FlatpackComponent.java      |   5 +-
 .../flatpack/DelimitedAllowLongTest-context.xml    |   2 +-
 .../DelimitedAllowShortAndLongTest-context.xml     |   2 +-
 .../flatpack/DelimitedAllowShortTest-context.xml   |   2 +-
 .../DelimitedErrorWithUnmarshalTest-context.xml    |   2 +-
 .../DelimitedWithUnmarshalTest-context.xml         |   2 +-
 .../flatpack/FixedLengthAllowLongTest-context.xml  |   2 +-
 .../FixedLengthAllowShortAndLongTest-context.xml   |   2 +-
 .../flatpack/FixedLengthAllowShortTest-context.xml |   2 +-
 .../FixedLengthWithUnmarshalTest-context.xml       |   2 +-
 .../camel/component/flink/FlinkComponent.java      |   5 +-
 .../apache/camel/component/fop/FopComponent.java   |   5 +-
 .../component/freemarker/FreemarkerComponent.java  |   5 +-
 .../camel/component/freemarker/camel-context.xml   |   4 +-
 .../camel/component/file/remote/FtpComponent.java  |   2 -
 .../camel/component/file/remote/FtpConsumer.java   |   3 +-
 .../camel/component/file/remote/FtpsComponent.java |   2 -
 .../file/remote/RemoteFileConfiguration.java       |   5 +-
 .../component/file/remote/RemoteFileEndpoint.java  |   6 +-
 .../camel/component/file/remote/SftpComponent.java |   2 -
 .../camel/component/file/remote/SftpConsumer.java  |   3 +-
 .../file/remote/FromFtpAsyncProcessTest.java       |   2 +-
 .../FromFtpSetNamesWithMultiDirectoriesTest.java   |   2 +-
 .../remote/FtpConsumerLocalWorkDirectoryTest.java  |   2 +-
 .../remote/FtpConsumerMaxMessagesPerPollTest.java  |   2 +-
 .../FtpConsumerNotEagerMaxMessagesPerPollTest.java |   2 +-
 .../file/remote/FtpConsumerResumeDownloadTest.java |   2 +-
 .../file/remote/FtpSimpleConsumeAbsoluteTest.java  |   2 +-
 ...ectoryParseWithAbsoluteDepthNoStepwiseTest.java |   2 +-
 .../FtpSimpleConsumeStreamingPartialReadTest.java  |   2 +-
 .../file/remote/FtpSimpleConsumeStreamingTest.java |   2 +-
 ...impleConsumeStreamingWithMultipleFilesTest.java |   2 +-
 .../file/remote/sftp/SftpChangedReadLockTest.java  |   2 +-
 .../remote/sftp/SftpConsumerDisconnectTest.java    |   4 +-
 .../remote/sftp/SftpConsumerWithCharsetTest.java   |   2 +-
 .../file/remote/sftp/SftpKeyConsumeTest.java       |   2 +-
 .../file/remote/sftp/SftpKeyFileConsumeTest.java   |   2 +-
 .../remote/sftp/SftpKeyPairDSAConsumeTest.java     |   2 +-
 .../remote/sftp/SftpKeyPairRSAConsumeTest.java     |   2 +-
 .../sftp/SftpKeyUriConsumeFromClasspathTest.java   |   2 +-
 .../file/remote/sftp/SftpKeyUriConsumeTest.java    |   2 +-
 .../sftp/SftpSimpleConsumeRecursiveTest.java       |   2 +-
 .../SftpSimpleConsumeStreamingPartialReadTest.java |   2 +-
 .../sftp/SftpSimpleConsumeStreamingTest.java       |   2 +-
 ...impleConsumeStreamingWithMultipleFilesTest.java |   2 +-
 .../file/remote/sftp/SftpSimpleConsumeTest.java    |   2 +-
 .../sftp/SftpSimpleConsumeThroughProxyTest.java    |   2 +-
 .../remote/sftp/SftpSimpleIPV6ConsumeTest.java     |   2 +-
 .../file/remote/sftp/SftpUseListFalseTest.java     |   2 +-
 .../camel/component/ganglia/GangliaComponent.java  |   5 +-
 .../component/geocoder/GeoCoderComponent.java      |   5 +-
 .../camel/component/github/GitHubEndpoint.java     |   4 +-
 .../google/bigquery/GoogleBigQueryComponent.java   |   1 -
 .../google/pubsub/GooglePubsubComponent.java       |  10 +-
 .../google/pubsub/unit/PubsubEndpointTest.java     |   2 -
 .../apache/camel/component/gora/GoraComponent.java |   5 +-
 .../camel/component/grape/GrapeComponent.groovy    |   3 +
 .../gson/SpringGsonFieldNamePolicyTest.xml         |   4 +-
 .../gson/SpringGsonJsonDataFormatTest.xml          |   8 +-
 .../guava/eventbus/GuavaEventBusComponent.java     |   5 +-
 .../component/hazelcast/HazelcastComponent.java    |   1 -
 .../HazelcastAtomicnumberComponent.java            |   1 -
 .../instance/HazelcastInstanceComponent.java       |   1 -
 .../hazelcast/list/HazelcastListComponent.java     |   1 -
 .../hazelcast/map/HazelcastMapComponent.java       |   1 -
 .../multimap/HazelcastMultimapComponent.java       |   1 -
 .../hazelcast/queue/HazelcastQueueComponent.java   |   1 -
 .../HazelcastReplicatedmapComponent.java           |   1 -
 .../ringbuffer/HazelcastRingbufferComponent.java   |   1 -
 .../hazelcast/seda/HazelcastSedaComponent.java     |   1 -
 .../hazelcast/set/HazelcastSetComponent.java       |   1 -
 .../hazelcast/topic/HazelcastTopicComponent.java   |   1 -
 .../camel/component/hbase/HBaseComponent.java      |   7 +-
 .../camel/component/hdfs2/HdfsComponent.java       |  13 +-
 .../apache/camel/component/hdfs2/HdfsEndpoint.java |   5 +-
 .../camel/component/hipchat/HipchatComponent.java  |   7 +-
 .../HipchatXmlDefinedComponentProducerTest.java    |   3 +-
 .../org/apache/camel/component/hl7/AckCode.java    |  43 ---
 .../apache/camel/component/hl7/AckExpression.java  |  24 --
 .../java/org/apache/camel/component/hl7/HL7.java   |  24 --
 .../apache/camel/component/hl7/AckCodeTest.java    |  37 --
 .../camel/http/common/HttpCommonComponent.java     |   3 +-
 .../org/apache/camel/http/common/HttpHelper.java   |   2 +-
 .../org/apache/camel/http/common/HttpMessage.java  |   6 +-
 .../camel/component/http4/HttpComponent.java       |  14 +-
 .../apache/camel/component/http4/HttpEndpoint.java |   8 +-
 .../http4/HttpOperationFailedException.java        |  30 --
 .../apache/camel/component/http4/HttpProducer.java |   4 +-
 .../http4/CamelComponentVerifierExtensionTest.java |   5 +-
 .../http4/CamelComponentVerifierTest.java          |  70 ++--
 .../http4/rest/RestCamelComponentVerifierTest.java |  30 +-
 .../hystrix/processor/HystrixProcessorFactory.java |   5 +-
 .../processor/HystrixHierarchicalConfigTest.java   |   7 +-
 .../component/iec60870/AbstractIecComponent.java   |   5 +-
 .../component/iec60870/client/ClientComponent.java |   4 +-
 .../component/iec60870/server/ServerComponent.java |   4 +-
 .../ignite/IgniteCacheContinuousQueryTest.java     |  12 +-
 .../camel/component/ignite/IgniteEventsTest.java   |   4 +-
 .../policy/InfinispanRoutePolicyTestBase.java      |   5 +-
 .../component/influxdb/InfluxDbComponent.java      |   5 +-
 .../apache/camel/component/irc/IrcComponent.java   |   5 +-
 .../camel/component/irc/IrcConfiguration.java      |   4 +-
 .../camel/component/ironmq/IronMQComponent.java    |   7 +-
 .../ConcurrentConsumerLoadTest.java                |   2 +-
 .../jackson/converter/JacksonTypeConverters.java   |   8 +-
 .../component/jackson/JacksonNameBindingTest.java  |  69 ----
 .../converter/JacksonConversionsPojoTest.java      |   4 +-
 .../converter/JacksonConversionsSimpleTest.java    |   2 +-
 .../jackson/converter/JacksonConversionsTest.java  |   2 +-
 .../jackson/SpringJacksonEnableFeatureTest.xml     |   2 +-
 .../jackson/SpringJacksonJsonDataFormatTest.xml    |  14 +-
 .../SpringJacksonMarshalUnmarshalListTest.xml      |   2 +-
 .../SpringJacksonObjectMapperRegistryTest.xml      |   4 +-
 .../src/main/docs/jacksonxml-dataformat.adoc       |   2 +-
 .../converter/JacksonXMLTypeConverters.java        |   2 +-
 .../jacksonxml/JacksonConversionsSimpleTest.java   |   2 +-
 .../jacksonxml/JacksonConversionsTest.java         |   2 +-
 .../jacksonxml/JacksonNameBindingTest.java         |  69 ----
 .../jacksonxml/SpringJacksonEnableFeatureTest.xml  |   2 +-
 .../jacksonxml/SpringJacksonJsonDataFormatTest.xml |  14 +-
 .../SpringJacksonMarshalUnmarshalListTest.xml      |   2 +-
 .../converter/jaxb/FallbackTypeConverter.java      |   4 +-
 .../camel/example/marshalAndUnmarshalWithRef.xml   |   4 +-
 .../example/marshalAndUnmarshalWithSpringBean.xml  |   4 +-
 .../camel/component/jcache/JCacheComponent.java    |   7 +-
 .../camel/component/jclouds/JcloudsComponent.java  |   5 +-
 .../apache/camel/component/jcr/JcrComponent.java   |   7 +-
 .../camel/component/jetty/JettyHttpComponent.java  |  21 +-
 components/camel-jetty9/pom.xml                    |   5 +
 .../jetty/HttpAuthMethodPriorityTest.java          |   2 +
 .../camel/component/jetty/HttpBasicAuthTest.java   |   2 +-
 .../jetty/HttpBridgeMultipartRouteTest.java        |   1 +
 .../component/jetty/HttpProducerSOTimeoutTest.java |   4 +-
 .../jetty/HttpStreamCacheFileIssueTest.java        |   4 +-
 .../jetty/HttpStreamCacheFileStopIssueTest.java    |   4 +-
 .../component/jetty/HttpStreamCacheFileTest.java   |   4 +-
 .../camel/component/jetty/JettyEnableJmxTest.java  |   8 +-
 .../jetty/JettyHttpClientOptionsTest.java          |  30 +-
 .../camel/component/jetty/MultiPartFormTest.java   |  42 +--
 .../jetty/MultiPartFormWithCustomFilterTest.java   |   2 +-
 .../SpringJettyNoConnectionRedeliveryTest.java     |   2 +-
 .../jetty/SpringJettyNoConnectionTest.java         |   2 +-
 .../jetty/TwoCamelContextWithJettyRouteTest.java   |   5 +-
 .../async/JettyAsyncContinuationTimeoutTest.java   |   2 +-
 .../JettyAsyncDefaultContinuationTimeoutTest.java  |   2 +-
 .../jetty/rest/RestJettyPostJsonPojoListTest.java  |   2 +-
 .../rest/RestJettyRemoveAddRestAndRouteTest.java   |   2 +-
 .../apache/camel/component/jetty/jetty-https.xml   |   2 +-
 .../jetty/jetty-noconnection-redelivery.xml        |   4 +-
 .../camel/component/jetty/jetty-noconnection.xml   |   4 +-
 .../camel/component/jgroups/JGroupsComponent.java  |   5 +-
 .../jgroups/JGroupsSharedChannelTest.java          |   8 +-
 .../camel-jibx/src/main/docs/jibx-dataformat.adoc  |   4 +-
 .../jibx/SpringJibxConfigurationTest.xml           |   4 +-
 .../component/validator/jing/JingComponent.java    |   5 +-
 .../camel-jms/src/main/docs/jms-component.adoc     |   2 +-
 .../component/jms/EndpointMessageListener.java     |   2 +-
 .../apache/camel/component/jms/JmsComponent.java   |  11 +-
 .../apache/camel/component/jms/JmsEndpoint.java    |   4 +-
 .../org/apache/camel/component/jms/JmsMessage.java |  11 +-
 .../camel/component/jms/JmsMessageHelper.java      |   8 +-
 .../component/jms/reply/ReplyManagerSupport.java   |   2 +-
 .../camel/component/ActiveMQComponent.java         | 196 ++++++++++
 .../jms/JmsAddAndRemoveRouteManagementTest.java    |   2 +-
 .../jms/JmsComponentConfigurationTest.java         | 102 -----
 .../jms/JmsDefaultTaskExecutorTypeTest.java        |   8 +-
 ...sRequestReplyExclusiveReplyToComponentTest.java |   2 +-
 ...RequestReplyExclusiveReplyToConcurrentTest.java |   2 +-
 ...estReplyExclusiveReplyToRemoveAddRouteTest.java |   2 +-
 .../jms/JmsRequestReplyExclusiveReplyToTest.java   |   2 +-
 .../jms/JmsRequestReplySharedReplyToTest.java      |   2 +-
 .../camel/component/jms/JmsSuspendResumeTest.java  |   4 +-
 .../component/jms/ManagedJmsEndpointTest.java      |   2 +-
 .../component/jms/TwoConsumerOnSameQueueTest.java  |   6 +-
 .../component/jms/TwoConsumerOnSameTopicTest.java  |   6 +-
 .../component/jms/async/AsyncJmsInOutTest.java     |   2 +-
 .../issues/JmsConcurrentConsumerInOnlyTest.java    |   2 +-
 .../jms/issues/JmsDirectStartupOrderIssueTest.java |   2 +-
 .../issues/JmsInOutWithSpringRestartIssueTest.java |   6 +-
 .../jms/issues/JmsLifecycleIssueTest.java          |   8 +-
 ...msEndpointWithCustomDestinationTest-context.xml |   4 +-
 .../apache/camel/component/jmx/JMXComponent.java   |   5 +-
 .../camel/component/jmx/JMXEndpointTest.java       |   2 -
 .../camel/component/jmx/SimpleBeanFixture.java     |   1 -
 .../johnzon/SpringJohnzonJsonDataFormatTest.xml    |   8 +-
 .../apache/camel/component/jolt/JoltComponent.java |   5 +-
 .../apache/camel/component/jpa/JpaComponent.java   |   5 +-
 .../apache/camel/component/jpa/JpaEndpoint.java    |  33 +-
 .../camel/component/jpa/JpaEndpointTest.java       |   9 +-
 .../jpa/FileConsumerJpaIdempotentTest.java         |   2 +-
 .../camel/processor/jpa/JpaBatchConsumerTest.java  |   8 +-
 .../camel/processor/jpa/JpaNonTXRollbackTest.java  |   2 +-
 .../jpa/JpaProducerPassingEntityManagerTest.java   |   2 +-
 .../camel/processor/jpa/JpaProducerRemoveTest.java |   4 +-
 .../jpa/JpaRouteSharedEntityManagerTest.java       |   4 +-
 .../jpa/JpaRouteSkipLockedEntityTest.java          |   8 +-
 .../camel/processor/jpa/JpaTXRollbackTest.java     |   2 +-
 .../apache/camel/jsonpath/JsonPathSourceTest.java  |  12 +-
 .../camel/component/jt400/Jt400Component.java      |   6 +-
 .../kafka/KafkaConsumerBatchSizeTest.java          |   4 +-
 .../component/kafka/KafkaConsumerFullTest.java     |   8 +-
 .../apache/camel/component/kura/KuraRouter.java    |   5 +-
 .../camel/component/kura/KuraRouterTest.java       |   3 +-
 .../apache/camel/component/ldap/LdapComponent.java |   5 +-
 .../apache/camel/component/ldap/LdapEndpoint.java  |   6 -
 .../component/linkedin/LinkedInConfiguration.java  |   9 +-
 .../camel/component/lucene/LuceneComponent.java    |   8 +-
 .../camel/component/lucene/LuceneEndpoint.java     |  11 -
 .../lucene/LuceneIndexAndQueryProducerTest.java    |   4 +-
 .../component/lumberjack/LumberjackComponent.java  |   6 +-
 .../apache/camel/component/mail/MailBinding.java   |   9 +-
 .../apache/camel/component/mail/MailComponent.java |   9 +-
 .../camel/component/mail/MailConfiguration.java    |   2 +-
 .../apache/camel/component/mail/MailEndpoint.java  |  24 +-
 .../apache/camel/component/mail/MailMessage.java   |  13 +-
 .../mail/MailDefaultDelayForMailConsumeTest.java   |   2 +-
 ...IdempotentRepositoryDuplicateNotRemoveTest.java |   2 +-
 .../MailIdempotentRepositoryDuplicateTest.java     |   2 +-
 .../mail/MailIdempotentRepositoryTest.java         |   2 +-
 .../camel/component/mail/MailSortTermTest.java     |   2 +-
 .../component/mail/MailSortTermThreeTest.java      |   2 +-
 .../camel/component/mail/MailSortTermTwoTest.java  |   2 +-
 .../camel/component/metrics/MetricsComponent.java  |   5 +-
 .../MetricsMessageHistoryFactory.java              |   7 -
 .../component/micrometer/MicrometerComponent.java  |   5 +-
 .../MicrometerMessageHistoryFactory.java           |   7 -
 .../MicrometerRouteEventNotifierTest.java          |   2 +-
 .../camel/component/mina2/Mina2Component.java      |   8 +-
 .../camel/component/mina2/Mina2Producer.java       |   3 +-
 .../Mina2ClientModeTcpTextlineDelimiterTest.java   |   2 +-
 .../mina2/SpringMinaEndpointTest-context.xml       |   2 +-
 .../mina2/SpringMinaEndpointUDPTest-context.xml    |   2 +-
 .../mina2/SpringMultipleUDPTest-context.xml        |   2 +-
 .../apache/camel/component/mllp/MllpEndpoint.java  |   7 -
 .../mllp/MllpProducerConsumerLoopbackTest.java     |   1 +
 .../component/mongodb/gridfs/GridFsComponent.java  |   5 +-
 .../MongoDbTailableCursorConsumerTest.java         |  44 +--
 .../apache/camel/component/mqtt/MQTTComponent.java |   5 +-
 .../camel/component/mqtt/MQTTProducerTest.java     |   2 +-
 .../component/validator/msv/MsvComponent.java      |   1 -
 .../component/mustache/MustacheComponent.java      |   5 +-
 .../component/mustache/MustacheComponentTest.java  |   2 +-
 .../apache/camel/component/mvel/MvelComponent.java |   5 +-
 .../mybatis/MyBatisBatchConsumerTest.java          |   8 +-
 .../mybatis/MyBatisShutdownAllTasksTest.java       |   2 +-
 .../netty4/http/HttpClientInitializerFactory.java  |   4 +-
 .../netty4/http/HttpServerInitializerFactory.java  |   4 +-
 .../http/HttpServerSharedInitializerFactory.java   |   2 +-
 .../component/netty4/http/NettyHttpComponent.java  |   6 +-
 .../component/netty4/http/NettyHttpHelper.java     |   2 +-
 .../netty4/http/NettyHttpRedeliveryTest.java       |   4 +-
 .../http/NettyHttpTwoRoutesStopOneRouteTest.java   |   2 +-
 .../rest/RestNettyHttpPostJsonPojoListTest.java    |   2 +-
 .../netty4/http/SpringNettyHttpBasicAuthTest.xml   |   2 +-
 .../netty4/http/SpringNettyHttpSSLTest.xml         |   2 +-
 .../netty4/DefaultClientInitializerFactory.java    |   4 +-
 .../netty4/DefaultServerInitializerFactory.java    |   4 +-
 .../camel/component/netty4/NettyComponent.java     |   9 +-
 .../component/netty4/ssl/SSLEngineFactory.java     |   7 +-
 .../NettyConsumerClientModeReconnectTest.java      |   2 +-
 .../NettyConsumerClientModeReuseChannelTest.java   |   2 +-
 .../netty4/NettyConsumerClientModeTest.java        |   2 +-
 .../netty4/NettySSLConsumerClientModeTest.java     |   2 +-
 .../component/netty4/NettySuspendResumeTest.java   |   4 +-
 .../component/openshift/OpenShiftComponent.java    |  94 +++++
 .../camel/opentracing/ActiveSpanManagerTest.java   |   4 +-
 .../component/paxlogging/PaxLoggingComponent.java  |   8 +-
 .../apache/camel/component/pdf/PdfComponent.java   |   5 +-
 .../camel/component/pgevent/PgEventComponent.java  |   5 +-
 .../camel/component/printer/PrinterComponent.java  |   5 +-
 .../camel/dataformat/protobuf/springDataFormat.xml |   6 +-
 .../camel/component/pubnub/PubNubComponent.java    |   1 -
 .../camel/component/pubnub/PubNubPresenceTest.java |   4 +-
 .../component/pubnub/PubNubSubscriberTest.java     |   2 +-
 .../camel/component/quartz2/QuartzComponent.java   |   7 +-
 .../routepolicy/quartz2/ScheduledRoutePolicy.java  |   2 +-
 .../quartz2/DelegateEndpointQuartzTest.java        |   2 +-
 .../quartz2/QuartzCronRouteWithSmallCacheTest.java |   2 +-
 .../component/quartz2/QuartzRouteRestartTest.java  |   4 +-
 .../quartz2/QuartzStartDelayedOptionTest.java      |   2 +-
 .../component/quartz2/QuartzStartDelayedTest.java  |   2 +-
 .../component/quartz2/QuartzStopRouteTest.java     |   4 +-
 .../component/quartz2/QuartzSuspendRouteTest.java  |   4 +-
 ...pringQuartzPersistentStoreRestartRouteTest.java |   4 +-
 .../FileConsumerQuartzSchedulerRestartTest.java    |   6 +-
 .../quartz2/FileConsumerQuartzSchedulerTest.java   |   2 +-
 .../quartz2/CronScheduledRoutePolicyTest.java      |  26 +-
 .../quartz2/MultiplePoliciesOnRouteTest.java       |   2 +-
 .../camel/routepolicy/quartz2/MyRoutePolicy.java   |   3 +-
 .../SimpleScheduledCombinedRoutePolicyTest.java    |   4 +-
 .../quartz2/SimpleScheduledRoutePolicyTest.java    |   6 +-
 .../quartz2/SpringScheduledRoutePolicyTest.java    |   6 +-
 .../component/quickfixj/QuickfixjEndpoint.java     |   7 -
 .../quickfixj/QuickfixjComponentTest.java          |   2 +-
 .../quickfixj/examples/DynamicRoutingExample.java  |   2 +-
 .../quickfixj/examples/SimpleMessagingExample.java |   2 +-
 .../examples/trading/TradeExecutorExample.java     |   2 +-
 .../component/rabbitmq/RabbitMQComponent.java      |   7 +-
 .../rabbitmq/RabbitMQSupendResumeIntTest.java      |   4 +-
 .../CamelPublisherConversionVerificationTest.java  |   1 +
 .../tck/CamelPublisherVerificationTest.java        |   1 +
 .../CamelSubscriberConversionVerificationTest.java |   1 +
 .../tck/CamelSubscriberVerificationTest.java       |   1 +
 .../camel/component/restlet/RestletComponent.java  |   6 +-
 .../restlet/RestRestletPostJsonPojoListTest.java   |   2 +-
 .../component/restlet/RestletRestartRouteTest.java |   8 +-
 .../cloud/RibbonServiceCallUpdateRouteTest.java    |   2 +-
 .../apache/camel/component/rmi/RmiComponent.java   |   5 +-
 .../apache/camel/component/rmi/RmiEndpoint.java    |   6 -
 .../apache/camel/component/rss/RssComponent.java   |   1 -
 .../component/salesforce/SalesforceComponent.java  |  11 +-
 ...eComponentVerifierExtensionIntegrationTest.java |   7 +-
 .../sap/netweaver/NetWeaverComponent.java          |   5 +-
 .../camel/component/xquery/XQueryComponent.java    |   5 +-
 .../saxon/XPathSplitChoicePerformanceTest.java     |   2 +-
 .../util/toolbox/XsltAggregationStrategyTest.java  |   4 +-
 .../component/schematron/SchematronComponent.java  |   5 +-
 .../component/schematron/SchematronEndpoint.java   |   4 -
 .../component/schematron/SchematronProducer.java   |   2 +-
 .../processor/SchematronProcessorFactory.java      |   2 +-
 .../schematron/SchematronEndpointTest.java         |  15 +-
 .../schematron/SchematronProducerTest.java         |   1 +
 .../processor/SchematronProcessorTest.java         |   2 +-
 .../apache/camel/builder/script/ScriptBuilder.java |  10 +-
 .../camel/builder/script/RubyScriptTextTest.java   |  82 ++++
 .../component/servicenow/ServiceNowComponent.java  |   7 +-
 .../ServiceNowComponentVerifierTest.java           |  62 +--
 .../camel/component/servlet/ServletComponent.java  |   9 +-
 .../component/servlet/ServletRestHttpBinding.java  |   6 -
 .../servlet/osgi/OsgiServletRegisterer.java        |   6 +-
 .../rest/RestServletPostJsonPojoListTest.java      |   2 +-
 .../apache/camel/component/sip/SipComponent.java   |   5 +-
 .../apache/camel/component/sjms/SjmsComponent.java |   3 +-
 .../apache/camel/component/sjms/SjmsEndpoint.java  |   2 +-
 .../apache/camel/component/sjms/SjmsMessage.java   |   6 +-
 .../component/sjms/batch/SjmsBatchComponent.java   |   1 -
 .../component/sjms/batch/SjmsBatchConsumer.java    |   3 +-
 .../component/sjms/batch/SjmsBatchEndpoint.java    |   2 +-
 .../camel/component/sjms/jms/JmsMessageHelper.java |   2 +-
 .../component/sjms/producer/InOutProducer.java     |   2 +-
 .../camel/component/sjms/SjmsEndpointTest.java     |   2 +-
 .../sjms/batch/SjmsBatchConsumerTest.java          |   8 +-
 .../camel/component/sjms/it/AsyncJmsInOutIT.java   |   2 +-
 .../component/sjms/it/AsyncJmsInOutTempDestIT.java |   2 +-
 .../component/sjms/it/ConnectionResourceIT.java    |   2 +-
 .../camel/component/sjms/it/SyncJmsInOutIT.java    |   2 +-
 .../component/sjms/it/SyncJmsInOutTempDestIT.java  |   2 +-
 .../component/sjms/threadpool/ThreadPoolTest.java  |   4 +-
 .../camel/component/sjms2/Sjms2EndpointTest.java   |   5 -
 .../apache/camel/component/smpp/SmppBinding.java   |   9 +-
 .../apache/camel/component/smpp/SmppComponent.java |   7 +-
 .../apache/camel/component/smpp/SmppMessage.java   |  21 +-
 .../camel/component/smpp/SmppMessageTest.java      |  45 +--
 .../OSGI-INF/blueprint/blueprint-typefilter.xml    |   8 +-
 .../component/snakeyaml/SnakeYAMLSpringTest.xml    |  12 +-
 .../snakeyaml/SnakeYAMLSpringTypeFilterTest.xml    |   8 +-
 .../apache/camel/component/snmp/SnmpComponent.java |   5 +-
 .../dataformat/soap/SoapToSoapDontIgnoreTest.java  |   5 +-
 .../dataformat/soap/SoapToSoapIgnoreTest.java      |   5 +-
 .../soap/SoapToSoapSingleDataFormatterTest.java    |   5 +-
 .../soap/SoapSpringRoundtripTest-context.xml       |   4 +-
 .../soap12/Soap12SpringRoundtripTest-context.xml   |   4 +-
 .../apache/camel/component/solr/SolrComponent.java |   5 +-
 .../camel/component/sparkrest/SparkComponent.java  |  19 +-
 .../camel/component/sparkrest/SparkEndpoint.java   |   6 +-
 .../camel/component/spark/SparkComponent.java      |   5 +-
 .../camel/component/splunk/SplunkComponent.java    |   5 +-
 .../spring/batch/SpringBatchComponent.java         |   5 +-
 .../src/main/docs/spring-boot.adoc                 |   2 +-
 .../spring/boot/CamelConfigurationProperties.java  |   2 +-
 .../apache/camel/spring/boot/RoutesCollector.java  |  11 +-
 .../boot/actuate/endpoint/CamelRoutesEndpoint.java |   3 +-
 .../boot/CustomCamelCamelConfigurationTest.java    |   4 +-
 .../SupervisingRouteControllerRestartTest.java     |   8 +-
 .../boot/SupervisingRouteControllerTest.java       |   4 +-
 .../CamelRoutesEndpointWriteOperationTest.java     |   6 +-
 .../integration/SpringIntegrationComponent.java    |   5 +-
 .../integration/SpringIntegrationConsumer.java     |   2 +-
 .../integration/SpringIntegrationEndpoint.java     |   6 -
 .../integration/SpringIntegrationMessage.java      |  17 +-
 .../converter/SpringIntegrationConverter.java      |   2 +-
 .../integration/SpringIntegrationMessageTest.java  |   5 +-
 .../component/springldap/SpringLdapComponent.java  |   5 +-
 .../camel/component/redis/RedisComponent.java      |   5 +-
 .../spring/ws/SpringWebserviceComponent.java       |   7 +-
 .../ProducerWss4JSecurityHeaderTest-context.xml    |   2 +-
 .../camel/component/event/EventComponent.java      |   7 +-
 .../camel/component/event/EventEndpoint.java       |  10 -
 .../apache/camel/language/spel/SpelExpression.java |   3 +-
 .../camel/spring/CamelContextFactoryBean.java      |  40 +-
 .../org/apache/camel/spring/ErrorHandlerType.java  |   2 +-
 .../main/java/org/apache/camel/spring/Main.java    |   3 +-
 .../apache/camel/spring/SpringCamelContext.java    |   2 +-
 .../spring/handler/CamelNamespaceHandler.java      |   6 +-
 .../handler/ErrorHandlerDefinitionParser.java      |  24 +-
 .../SpringScheduledPollConsumerScheduler.java      |   4 +-
 .../spring/spi/ApplicationContextRegistry.java     |  15 -
 .../CamelContextLazyLoadTypeConvertersTest.java    |  45 ---
 .../camel/spring/CamelGlobalOptionsTest.java       |   2 +-
 .../apache/camel/spring/DefaultJMXAgentTest.java   |   2 +-
 .../apache/camel/spring/DisableJmxAgentTest.java   |   2 +-
 .../spring/SpringLogDebugBodyMaxCharsTest.java     |   2 +
 .../org/apache/camel/spring/SpringTestSupport.java |   7 -
 .../cloud/LegacyServiceCallConfigurationTest.java  |  30 --
 .../camel/spring/config/CamelPropertiesTest.java   |  38 --
 .../apache/camel/spring/config/MyProduceBean.java  |   2 +-
 .../spring/interceptor/TraceFormatterTest.java     |  45 ---
 .../packagescan/SkipNonPublicRouteBuilderTest.java |   2 +-
 .../ManagedEndpointInjectRefEndpointTest.java      |  10 +-
 .../spring/management/ManagedRefEndpointTest.java  |  17 +-
 .../management/SpringManagedSedaEndpointTest.java  |   2 +-
 .../FileConsumerSpringSchedulerTest.java           |   2 +-
 .../processor/SpringAOPAfterFinallyTest.java       |  32 --
 .../camel/spring/processor/SpringAOPAfterTest.java |  32 --
 .../processor/SpringAOPAroundFinallyTest.java      |  32 --
 .../spring/processor/SpringAOPBeforeTest.java      |  32 --
 .../spring/processor/SpringAOPNestedRouteTest.java |  32 --
 .../processor/SpringCustomExpressionTest.java      |   2 +-
 ...pringIdempotentConsumerNoSkipDuplicateTest.java |  12 +-
 .../SpringManagedThreadsThreadPoolTest.java        |   2 +
 .../processor/SpringPollEnricherRefTest.java       |   2 +
 .../spring/processor/SpringSetOutHeaderTest.java   |  41 --
 .../SpringSetOutHeaderWithConstantTest.java        |  41 --
 .../aggregator/SpringAggregateControllerTest.java  |   2 +
 .../camel/component/log/SpringLogTest-context.xml  |   2 +-
 ...SpringPropertiesComponentOnExceptionRefTest.xml |   2 +-
 ...SpringPropertyPlaceholderOnExceptionRefTest.xml |   2 +-
 .../SpringSimpleMultiLineExpressionTest.xml        |   2 +-
 .../CamelContextLazyLoadTypeConvertersTest.xml     |  33 --
 .../apache/camel/spring/EndpointToIdRefTest.xml    |   2 +-
 .../apache/camel/spring/camelContextAwareBean.xml  |   6 +-
 .../org/apache/camel/spring/camelGlobalOptions.xml |   8 +-
 .../cloud/LegacyServiceCallConfigurationTest.xml   |  68 ----
 .../camel/spring/config/CamelPropertiesTest.xml    |  38 --
 .../camel/spring/config/CamelProxyUsingRefTest.xml |   2 +-
 .../config/DualCamelContextEndpointOutsideTest.xml |   8 +-
 .../dataFormatWithNonChildElementTest.xml          |   4 +-
 .../org/apache/camel/spring/endpointReference.xml  |   2 +-
 .../resources/org/apache/camel/spring/examples.xml |   4 +-
 ...ingFileAntPathMatcherFileFilterTest-context.xml |   2 +-
 .../spring/file/SpringFileRouteTest-context.xml    |   2 +-
 .../issues/ProduceSplitMethodCallIssueTest.xml     |   2 +-
 .../issues/SpringPropertyPlaceholderIssueTest.xml  |   2 +-
 .../stringDataFormatPropertyPlaceholderTest.xml    |   2 +-
 .../camel/spring/issues/stringDataFormatTest.xml   |   2 +-
 .../spring/management/ManagedRefEndpointTest.xml   |   2 +-
 .../SpringJmxEndpointInjectBeanRefTwoTest.xml      |   2 +-
 ...RemoveRouteAndContextScopedErrorHandlerTest.xml |   2 +-
 ...dualCamelContextManagedAutoAssignedNameTest.xml |   8 +-
 .../management/dualCamelContextManagedTest.xml     |   8 +-
 .../management/jmxInstrumentationWithConnector.xml |   4 +-
 .../spring/processor/CBRHeaderPredicateTest.xml    |   2 +-
 .../SpringInterceptFromEndpointRefTest.xml         |   6 +-
 ...GroupedExchangeCompletionExpressionSizeTest.xml |   4 +-
 .../org/apache/camel/spring/processor/aopafter.xml |  39 --
 .../camel/spring/processor/aopafterfinally.xml     |  49 ---
 .../camel/spring/processor/aoparoundfinally.xml    |  49 ---
 .../apache/camel/spring/processor/aopbefore.xml    |  39 --
 .../camel/spring/processor/aopnestedroute.xml      |  41 --
 .../camel/spring/processor/setExchangePattern.xml  |   4 -
 .../processor/setExchangePatternWithCustomId.xml   |   4 -
 .../apache/camel/spring/processor/setOutHeader.xml |  38 --
 .../spring/processor/setOutHeaderWithConstant.xml  |  38 --
 .../spring/processor/splitterMethodCallTest.xml    |   2 +-
 .../apache/camel/component/sql/SqlComponent.java   |  11 +-
 .../sql/SqlConsumerDynamicParameterTest.java       |   2 +-
 .../sql/SqlConsumerOutputTypeStreamListTest.java   |   6 +-
 .../component/sql/SpringSqlEndpointLikeTest.xml    |   2 +-
 .../camel/component/sql/SpringSqlMultilineTest.xml |   2 +-
 .../apache/camel/component/ssh/SshComponent.java   |   5 +-
 .../apache/camel/component/stax/StAXComponent.java |  10 +-
 .../apache/camel/component/stax/StAXEndpoint.java  |   6 +-
 .../stax/StAXXPathSplitChoicePerformanceTest.java  |   2 +-
 .../camel/component/stomp/StompComponent.java      |   1 -
 .../camel/component/stream/StreamComponent.java    |   5 +-
 .../camel/component/stream/StreamConsumer.java     |   6 +-
 .../camel/component/stream/StreamEndpoint.java     |   5 -
 .../camel/component/stream/StreamProducer.java     |   6 +-
 .../camel/component/stream/ScanStreamFileTest.java |   6 +-
 .../camel/component/stream/StreamFileTest.java     |   2 +-
 .../stringtemplate/StringTemplateComponent.java    |   5 +-
 .../camel/swagger/DummyRestConsumerFactory.java    |   6 +-
 ...RestSwaggerReaderEnableVendorExtensionTest.java |   2 +-
 .../RestSwaggerReaderModelApiSecurityTest.java     |   2 +-
 .../camel/swagger/RestSwaggerReaderModelTest.java  |   2 +-
 .../src/main/docs/syslog-dataformat.adoc           |   6 +-
 .../component/syslog/applicationContext-Mina.xml   |   6 +-
 .../component/syslog/applicationContext-Netty.xml  |   4 +-
 .../aggregate/tarfile/TarAggregationStrategy.java  |   2 +-
 .../dataformat/tarfile/TarFileDataFormatTest.java  |   2 +-
 .../component/telegram/TelegramComponent.java      |   5 +-
 .../component/rest/DummyRestConsumerFactory.java   |   6 +-
 .../ManagedEndpointInjectRefEndpointTest.java      |  23 +-
 .../management/ManagedRefEndpointTest.java         |  21 +-
 .../management/managedRefEndpointTest.xml          |   2 +-
 .../src/main/docs/test-spring.adoc                 |   3 -
 .../spring/StopWatchTestExecutionListener.java     |   2 +-
 .../java/org/apache/camel/test/TestSupport.java    |  40 +-
 .../apache/camel/test/junit4/CamelTestSupport.java |   5 +-
 .../apache/camel/test/junit4/CamelTestWatcher.java |   2 +-
 .../org/apache/camel/test/junit4/TestSupport.java  |  41 --
 .../test/patterns/IsMockEndpointsFileTest.java     |   2 +-
 .../twitter/AbstractTwitterComponent.java          |   7 +-
 .../twitter/AbstractComponentVerifierTest.java     |  32 +-
 .../search/TwitterSearchComponentVerifierTest.java |  20 +-
 components/camel-undertow/pom.xml                  |   5 +
 .../component/undertow/UndertowComponent.java      |  13 +-
 .../component/undertow/MultiPartFormTest.java      |  32 +-
 .../undertow/UndertowComponentVerifierTest.java    |  34 +-
 .../rest/RestUndertowComponentVerifierTest.java    |  30 +-
 .../rest/RestUndertowHttpPojoTypeTest.java         |   7 +-
 .../rest/RestUndertowHttpPostJsonPojoListTest.java |   2 +-
 .../ws/UndertowWsProducerRouteRestartTest.java     |  10 +-
 .../src/test/resources/SpringTest.xml              |   2 +-
 .../component/velocity/VelocityComponent.java      |   5 +-
 .../camel/component/velocity/camel-context.xml     |   4 +-
 .../camel/component/vertx/VertxComponent.java      |  15 +-
 .../camel/component/weather/WeatherComponent.java  |  11 +-
 .../component/websocket/WebsocketComponent.java    |   6 +-
 .../WebsocketProducerRouteRestartTest.java         |  10 +-
 .../xmlsecurity/XmlSignatureComponent.java         |   7 +-
 .../xmlsecurity/XMLSecurityDataFormat.java         |  16 +-
 .../xmlsecurity/EncryptionAlgorithmTest.java       |   2 +-
 .../xmlsecurity/XMLEncryption11Test.java           |   2 +-
 .../xmlsecurity/XMLSecurityDataFormatTest.java     |   4 +-
 .../apache/camel/component/xmpp/XmppComponent.java |   5 +-
 .../apache/camel/component/xmpp/XmppEndpoint.java  |   7 +-
 .../apache/camel/component/xmpp/XmppMessage.java   |  19 +-
 .../dataformat/xstream/AbstractXStreamWrapper.java |  10 +-
 .../xstream/SpringMarshalDomainObjectJSONTest.xml  |  10 +-
 .../dataformat/xstream/SpringMarshalListTest.xml   |   4 +-
 .../xstream/SpringMarshalOmitFieldsTest.xml        |   2 +-
 .../xstream/SpringXStreamConfigurationTest.xml     |  10 +-
 .../aggregate/zipfile/ZipAggregationStrategy.java  |  21 +-
 .../dataformat/zipfile/ZipFileDataFormatTest.java  |   2 +-
 .../zipfile/ZipFileMultipleFilesSplitterTest.java  |   2 +-
 .../zookeepermaster/policy/MasterRoutePolicy.java  |   3 +-
 .../component/zookeeper/ZooKeeperComponent.java    |  11 +-
 .../ZooKeeperServiceRegistrationTestBase.java      |   4 +-
 .../FailoverCuratorLeaderRoutePolicyTest.java      |   4 +-
 .../MultiMasterCuratorLeaderRoutePolicyTest.java   |   9 +-
 .../connector/DefaultConnectorComponent.java       |   9 +-
 .../main/java/org/beverage/BeverageComponent.java  |   5 +-
 docs/user-manual/en/json.adoc                      |   6 +-
 docs/user-manual/en/lifecycle.adoc                 |   2 +-
 docs/user-manual/en/spring-testing.adoc            |   4 -
 .../src/main/resources/META-INF/camel-routes.xml   |   6 +-
 .../apache/camel/example/cdi/osgi/CdiOsgiIT.java}  |  58 ++-
 .../src/main/resources/camel-context.xml           |   4 +-
 .../apache/camel/example/cdi/xml/CdiXmlTest.java   |   2 +-
 .../resources/META-INF/spring/camel-config.xml     |   2 +-
 .../apache/camel/example/fhir/osgi/FhirOsgiIT.java |   2 +-
 .../java/org/apache/camel/loanbroker/Client.java   |   2 +-
 .../resources/META-INF/spring/camel-context.xml    |   4 +-
 .../resources/META-INF/spring/camel-server.xml     |   6 +-
 .../camel/example/spark/UserRouteBuilder.java      |   2 +-
 .../apache/camel/example/cdi/UserRouteBuilder.java |   2 +-
 .../apache/camel/catalog/AbstractCamelCatalog.java |  66 +---
 .../org/apache/camel/catalog/CamelCatalog.java     |  46 ---
 .../camel/catalog/SimpleValidationResult.java      |  34 --
 .../org/apache/camel/catalog/CamelCatalogTest.java |  30 +-
 .../test/resources/org/foo/camel/dummy-pretty.json |   7 +-
 .../src/test/resources/org/foo/camel/dummy.json    |   2 +-
 .../src/test/resources/sample-pretty.json          |   7 +-
 .../camel-catalog/src/test/resources/sample.json   |   2 +-
 .../commands/AbstractLocalCamelController.java     |  19 +-
 .../camel/commands/ContextListCommandTest.java     |   3 +-
 .../camel/commands/TransformerListCommandTest.java |   7 +-
 .../camel/commands/ValidatorListCommandTest.java   |   7 +-
 .../camel/component/dummy/DummyComponent.java      |   5 +-
 ...ComponentConfigurationAndDocumentationTest.java |  47 ---
 ...ComponentConfigurationAndDocumentationTest.java |  47 ---
 ...ComponentConfigurationAndDocumentationTest.java |  48 ---
 ...ComponentConfigurationAndDocumentationTest.java |  20 -
 ...ComponentConfigurationAndDocumentationTest.java |  52 ---
 ...ComponentConfigurationAndDocumentationTest.java |  18 -
 ...ComponentConfigurationAndDocumentationTest.java |  47 ---
 ...ComponentConfigurationAndDocumentationTest.java |  48 ---
 ...ComponentConfigurationAndDocumentationTest.java |  51 ---
 ...ComponentConfigurationAndDocumentationTest.java |  47 ---
 ...ComponentConfigurationAndDocumentationTest.java |  48 ---
 ...ComponentConfigurationAndDocumentationTest.java |  19 -
 ...ComponentConfigurationAndDocumentationTest.java |  47 ---
 ...ComponentConfigurationAndDocumentationTest.java |  47 ---
 ...ComponentConfigurationAndDocumentationTest.java |  48 ---
 ...ComponentConfigurationAndDocumentationTest.java |  48 ---
 .../camel/itest/issues/JettyHttpFileCacheTest.java |   6 +-
 .../itest/jaxb/JaxbFallbackTypeConverterTest.java  |   2 +-
 .../camel/itest/jetty/JettyFreemarkerTest.java     |   2 +-
 .../camel/itest/jetty/JettyVelocityTest.java       |   2 +-
 .../apache/camel/itest/jetty/JettyXsltTest.java    |   2 +-
 ...eAntPathMatcherRemoteFileFilterTest-context.xml |   2 +-
 .../itest/ftp/SpringFtpEndpointTest-context.xml    |   2 +-
 .../jetty/JettySpringFailoverRoundRobinTest.xml    |  16 +-
 .../itest/mail/SpringMailEndpointTest-context.xml  |   2 +-
 .../org/apache/camel/parser/xml/myroutes.xml       |   2 +-
 .../java/org/apache/camel/maven/ValidateMojo.java  |   4 +-
 1274 files changed, 3248 insertions(+), 18523 deletions(-)

diff --git a/camel-core/readme-eip.adoc b/camel-core/readme-eip.adoc
index f027b4b..91f71ee 100644
--- a/camel-core/readme-eip.adoc
+++ b/camel-core/readme-eip.adoc
@@ -4,7 +4,7 @@ Enterprise Integration Patterns
 Camel supports most of the link:http://www.eaipatterns.com/toc.html[Enterprise Integration Patterns] from the excellent book by link:http://www.amazon.com/exec/obidos/search-handle-url/105-9796798-8100401?%5Fencoding=UTF8&search-type=ss&index=books&field-author=Gregor%20Hohpe[Gregor Hohpe] and link:http://www.amazon.com/exec/obidos/search-handle-url/105-9796798-8100401?%5Fencoding=UTF8&search-type=ss&index=books&field-author=Bobby%20Woolf[Bobby Woolf].
 
 // eips: START
-Number of EIPs: 64 (2 deprecated)
+Number of EIPs: 62 (0 deprecated)
 
 [width="100%",cols="4,6",options="header"]
 |===
@@ -22,9 +22,6 @@ Number of EIPs: 64 (2 deprecated)
 | link:src/main/docs/eips/choice-eip.adoc[Choice] +
 `<choice>` | Routes messages based on a series of predicates
 
-| link:src/main/docs/eips/circuitBreaker-eip.adoc[Circuit Breaker] +
-`<circuitBreaker>` | *deprecated* Circuit break load balancer
-
 | link:src/main/docs/eips/claimCheck-eip.adoc[Claim Check] +
 `<claimCheck>` | The Claim Check EIP allows you to replace message content with a claim check (a unique key), which can be used to retrieve the message content at a later time.
 
@@ -148,9 +145,6 @@ Number of EIPs: 64 (2 deprecated)
 | link:src/main/docs/eips/setHeader-eip.adoc[Set Header] +
 `<setHeader>` | Sets the value of a message header
 
-| link:src/main/docs/eips/setOutHeader-eip.adoc[Set Out Header] +
-`<setOutHeader>` | *deprecated* Sets the value of a header on the outbound message
-
 | link:src/main/docs/eips/setProperty-eip.adoc[Set Property] +
 `<setProperty>` | Sets a named property on the message exchange
 
diff --git a/camel-core/src/main/docs/bean-language.adoc b/camel-core/src/main/docs/bean-language.adoc
index 1f95857..ecab01d 100644
--- a/camel-core/src/main/docs/bean-language.adoc
+++ b/camel-core/src/main/docs/bean-language.adoc
@@ -24,14 +24,13 @@ annotate the bean to extract headers or other expressions such as
 === Bean Options
 
 // language options: START
-The Bean method language supports 5 options, which are listed below.
+The Bean method language supports 4 options, which are listed below.
 
 
 
 [width="100%",cols="2,1m,1m,6",options="header"]
 |===
 | Name | Default | Java Type | Description
-| bean |  | String | *Deprecated* Either a reference or a class name of the bean to use
 | ref |  | String | Reference to bean to lookup in the registry
 | method |  | String | Name of method to call
 | beanType |  | String | Class name of the bean to use
@@ -165,4 +164,4 @@ private MyBean my;
 
 === Dependencies
 
-The Bean language is part of *camel-core*.
\ No newline at end of file
+The Bean language is part of *camel-core*.
diff --git a/camel-core/src/main/docs/binding-component.adoc b/camel-core/src/main/docs/binding-component.adoc
deleted file mode 100644
index 2c1e586..0000000
--- a/camel-core/src/main/docs/binding-component.adoc
+++ /dev/null
@@ -1,131 +0,0 @@
-[[binding-component]]
-== Binding Component (deprecated)
-
-*Available as of Camel version 2.11*
-
-In Camel terms a _binding_ is a way of wrapping an
-Endpoint in a contract; such as a
-Data Format, a link:content-enricher.html[Content
-Enricher] or validation step. Bindings are completely optional and you
-can choose to use them on any camel endpoint.
-
-Bindings are inspired by the work of
-http://www.jboss.org/switchyard[SwitchYard project] adding service
-contracts to various technologies like Camel and many others. But rather
-than the SwitchYard approach of wrapping Camel in SCA, _Camel Bindings_
-provide a way of wrapping Camel endpoints with contracts inside the
-Camel framework itself; so you can use them easily inside any Camel
-route.
-
-=== Options
-
-
-// component options: START
-The Binding component has no options.
-// component options: END
-
-
-
-// endpoint options: START
-The Binding endpoint is configured using URI syntax:
-
-----
-binding:bindingName:delegateUri
-----
-
-with the following path and query parameters:
-
-==== Path Parameters (2 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bindingName* | *Required* Name of the binding to lookup in the Camel registry. |  | String
-| *delegateUri* | *Required* Uri of the delegate endpoint. |  | String
-|===
-
-
-==== Query Parameters (4 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN/ERROR level and ignored. | false | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions, that will be logged at WARN/ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the default exchange pattern when creating an exchange. |  | ExchangePattern
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-|===
-// endpoint options: END
-
-
-=== Using Bindings
-
-A Binding is currently a bean which defines the contract (though we'll
-hopefully add bindings to the Camel DSL).
-
-There are a few approaches to defining a bound endpoint (i.e. an
-endpoint bound with a Binding).
-
-=== Using the binding URI
-
-You can prefix any endpoint URI with *binding:nameOfBinding:* where
-_nameOfBinding_ is the name of the Binding bean in your registry.
-
-[source,java]
-----
-from("binding:jaxb:activemq:myQueue").to("binding:jaxb:activemq:anotherQueue")
-----
-
-Here we are using the "jaxb" binding which may, for example, use the
-JAXB Data Format to marshal and unmarshal
-messages.
-
-=== Using a BindingComponent
-
-There is a Component called BindingComponent which
-can be configured in your Registry by dependency
-injection which allows the creation of endpoints which are already bound
-to some binding.
-
-For example if you registered a new component called "jsonmq" in your
-registry using code like this
-
-[source,java]
-----
-JacksonDataFormat format = new JacksonDataFormat(MyBean.class);
-context.bind("jsonmq", new BindingComponent(new DataFormatBinding(format), "activemq:foo."));
-----
-
-Then you could use the endpoint as if it were any other endpoint.
-
-[source,java]
-----
-from("jsonmq:myQueue").to("jsonmq:anotherQueue")
-----
-
-which would be using the queueus "foo.myQueue" and "foo.anotherQueue"
-and would use the given Jackson Data Format to
-marshal on and off the queue.
-
-=== When to use Bindings
-
-If you only use an endpoint once in a single route; a binding may
-actually be more complex and more work than just using the 'raw'
-endpoint directly and using explicit marshalling and validation in the
-camel route as normal.
-
-However bindings can help when you are composing many routes together;
-or using a single route as a 'template' that is configured input and
-output endpoints; bindings then provide a nice way to wrap up a contract
-and endpoint together.
-
-Another good use case for bindings is when you are using many endpoints
-which use the same binding; rather than always having to mention a
-specific data format or validation rule, you can just use the
-BindingComponent to wrap the endpoints in the binding of your choice.
-
-So bindings are a composition tool really; only use them when they make
-sense - the extra complexity may not be worth it unless you have lots of
-routes or endpoints.
diff --git a/camel-core/src/main/docs/controlbus-component.adoc b/camel-core/src/main/docs/controlbus-component.adoc
index 883c74b..593dd00 100644
--- a/camel-core/src/main/docs/controlbus-component.adoc
+++ b/camel-core/src/main/docs/controlbus-component.adoc
@@ -161,7 +161,7 @@ message:
 
 [source,java]
 ----
-template.sendBody("controlbus:language:simple", "${camelContext.stopRoute('myRoute')}");
+template.sendBody("controlbus:language:simple", "${camelContext.getRouteController().stopRoute('myRoute')}");
 ----
 
 As this is a void operation, no result is returned. However, if you want
diff --git a/camel-core/src/main/docs/eips/aggregate-eip.adoc b/camel-core/src/main/docs/eips/aggregate-eip.adoc
index b3e0ff6..40e110d 100644
--- a/camel-core/src/main/docs/eips/aggregate-eip.adoc
+++ b/camel-core/src/main/docs/eips/aggregate-eip.adoc
@@ -17,7 +17,7 @@ single correlation key into a single message exchange.
 === Aggregator options
 
 // eip options: START
-The Aggregate EIP supports 25 options which are listed below:
+The Aggregate EIP supports 24 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
@@ -39,7 +39,6 @@ The Aggregate EIP supports 25 options which are listed below:
 | *completionTimeoutChecker Interval* | Interval in millis that is used by the background task that checks for timeouts (org.apache.camel.TimeoutMap). By default the timeout checker runs every second. The timeout is an approximation and there is no guarantee that the a timeout is triggered exactly after the timeout value. It is not recommended to use very low timeout values or checker intervals. | 1000 | Long
 | *completionFromBatchConsumer* | Enables the batch completion mode where we aggregate from a org.apache.camel.BatchConsumer and aggregate the total number of exchanges the org.apache.camel.BatchConsumer has reported as total by checking the exchange property org.apache.camel.Exchange#BATCH_COMPLETE when its complete. | false | Boolean
 | *completionOnNewCorrelation Group* | Enables completion on all previous groups when a new incoming correlation group. This can for example be used to complete groups with same correlation keys when they are in consecutive order. Notice when this is enabled then only 1 correlation group can be in progress as when a new correlation group starts, then the previous groups is forced completed. | false | Boolean
-| *groupExchanges* | *Deprecated* Enables grouped exchanges, so the aggregator will group all aggregated exchanges into a single combined Exchange holding all the aggregated exchanges in a java.util.List. | false | Boolean
 | *eagerCheckCompletion* | Use eager completion checking which means that the completionPredicate will use the incoming Exchange. As opposed to without eager completion checking the completionPredicate will use the aggregated Exchange. | false | Boolean
 | *ignoreInvalidCorrelation Keys* | If a correlation key cannot be successfully evaluated it will be ignored by logging a DEBUG and then just ignore the incoming Exchange. | false | Boolean
 | *closeCorrelationKeyOn Completion* | Closes a correlation key when its complete. Any late received exchanges which has a correlation key that has been closed, it will be defined and a ClosedCorrelationKeyException is thrown. |  | Integer
diff --git a/camel-core/src/main/docs/eips/from-eip.adoc b/camel-core/src/main/docs/eips/from-eip.adoc
index b2c8f02..6eb1746 100644
--- a/camel-core/src/main/docs/eips/from-eip.adoc
+++ b/camel-core/src/main/docs/eips/from-eip.adoc
@@ -5,13 +5,12 @@ Starting point for a Camel route that starts a route with a given endpoint. The
 === Options
 
 // eip options: START
-The From EIP supports 2 options which are listed below:
+The From EIP supports 1 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *uri* | *Required* Sets the URI of the endpoint to use |  | String
-| *ref* | *Deprecated* Sets the name of the endpoint within the registry (such as the Spring ApplicationContext or JNDI) to use |  | String
 |===
 // eip options: END
 
diff --git a/camel-core/src/main/docs/eips/inOnly-eip.adoc b/camel-core/src/main/docs/eips/inOnly-eip.adoc
index dcaa694..8d4f7b7 100644
--- a/camel-core/src/main/docs/eips/inOnly-eip.adoc
+++ b/camel-core/src/main/docs/eips/inOnly-eip.adoc
@@ -6,12 +6,11 @@ The *inOnly:* EIP define an InOnly ExchangePattern.
 === EIP options
 
 // eip options: START
-The In Only EIP supports 2 options which are listed below:
+The In Only EIP supports 1 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *uri* | *Required* Sets the uri of the endpoint to send to. |  | String
-| *ref* | *Deprecated* Sets the reference of the endpoint to send to. |  | String
 |===
 // eip options: END
diff --git a/camel-core/src/main/docs/eips/inOut-eip.adoc b/camel-core/src/main/docs/eips/inOut-eip.adoc
index a9d8c59..72f1b80 100644
--- a/camel-core/src/main/docs/eips/inOut-eip.adoc
+++ b/camel-core/src/main/docs/eips/inOut-eip.adoc
@@ -6,12 +6,11 @@ The *inOut:* EIP define an InOut ExchangePattern.
 === EIP options
 
 // eip options: START
-The In Out EIP supports 2 options which are listed below:
+The In Out EIP supports 1 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *uri* | *Required* Sets the uri of the endpoint to send to. |  | String
-| *ref* | *Deprecated* Sets the reference of the endpoint to send to. |  | String
 |===
 // eip options: END
diff --git a/camel-core/src/main/docs/eips/marshal-eip.adoc b/camel-core/src/main/docs/eips/marshal-eip.adoc
index 3b66833..858abe4 100644
--- a/camel-core/src/main/docs/eips/marshal-eip.adoc
+++ b/camel-core/src/main/docs/eips/marshal-eip.adoc
@@ -6,13 +6,12 @@ Marshalling is the opposite of unmarshalling, where a bean is marshalled into so
 == Options
 
 // eip options: START
-The Marshal EIP supports 2 options which are listed below:
+The Marshal EIP supports 1 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *dataFormatType* | *Required* The data format to be used |  | DataFormatDefinition
-| *ref* | *Deprecated* To refer to a custom data format to use as marshaller |  | String
 |===
 // eip options: END
 
diff --git a/camel-core/src/main/docs/eips/to-eip.adoc b/camel-core/src/main/docs/eips/to-eip.adoc
index 11a46e9..e70001e 100644
--- a/camel-core/src/main/docs/eips/to-eip.adoc
+++ b/camel-core/src/main/docs/eips/to-eip.adoc
@@ -13,13 +13,12 @@ See message related documentation
 === Options
 
 // eip options: START
-The To EIP supports 3 options which are listed below:
+The To EIP supports 2 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *uri* | *Required* Sets the uri of the endpoint to send to. |  | String
-| *ref* | *Deprecated* Sets the reference of the endpoint to send to. |  | String
 | *pattern* | Sets the optional ExchangePattern used to invoke this endpoint |  | ExchangePattern
 |===
 // eip options: END
diff --git a/camel-core/src/main/docs/eips/unmarshal-eip.adoc b/camel-core/src/main/docs/eips/unmarshal-eip.adoc
index ad387cd..732293c 100644
--- a/camel-core/src/main/docs/eips/unmarshal-eip.adoc
+++ b/camel-core/src/main/docs/eips/unmarshal-eip.adoc
@@ -6,13 +6,12 @@ If you receive a message from one of the Camel link:https://github.com/apache/ca
 == Options
 
 // eip options: START
-The Unmarshal EIP supports 2 options which are listed below:
+The Unmarshal EIP supports 1 options which are listed below:
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *dataFormatType* | *Required* The data format to be used |  | DataFormatDefinition
-| *ref* | *Deprecated* To refer to a custom data format to use as unmarshaller |  | String
 |===
 // eip options: END
 
diff --git a/camel-core/src/main/docs/ref-component.adoc b/camel-core/src/main/docs/ref-component.adoc
index 794fb20..8a7c477 100644
--- a/camel-core/src/main/docs/ref-component.adoc
+++ b/camel-core/src/main/docs/ref-component.adoc
@@ -97,7 +97,7 @@ You could, of course, have used the `ref` attribute instead:
 
 [source,xml]
 ----
-<to ref="endpoint2"/>
+<to uri="ref:endpoint2"/>
 ----
 
 Which is the more common way to write it.
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java b/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
index 1025320..bf967b7 100644
--- a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
@@ -21,7 +21,7 @@ package org.apache.camel;
  * and signal completion by invoking the {@link AsyncCallback}.
  * <p/>
  * Any processor can be coerced to have an {@link AsyncProcessor} interface by using the
- * {@link org.apache.camel.impl.converter.AsyncProcessorTypeConverter#convert AsyncProcessorTypeConverter.covert}
+ * {@link org.apache.camel.util.AsyncProcessorConverterHelper#convert AsyncProcessorConverterHelper.convert}
  * method.
  *
  * @version 
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 6828bb6..f9893cf 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -32,11 +32,9 @@ import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
@@ -604,68 +602,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     Collection<RestConfiguration> getRestConfigurations();
 
     /**
-     * Gets the service call configuration by the given name. If no name is given
-     * the default configuration is returned, see <tt>setServiceCallConfiguration</tt>
-     *
-     * @param serviceName name of service, or <tt>null</tt> to return the default configuration
-     * @return the configuration, or <tt>null</tt> if no configuration has been registered
-     */
-    ServiceCallConfigurationDefinition getServiceCallConfiguration(String serviceName);
-
-    /**
-     * Sets the default service call configuration
-     *
-     * @param configuration the configuration
-     */
-    void setServiceCallConfiguration(ServiceCallConfigurationDefinition configuration);
-
-    /**
-     * Sets the service call configurations
-     *
-     * @param configurations the configuration list
-     */
-    void setServiceCallConfigurations(List<ServiceCallConfigurationDefinition> configurations);
-
-    /**
-     * Adds the service call configuration
-     *
-     * @param serviceName name of the service
-     * @param configuration the configuration
-     */
-    void addServiceCallConfiguration(String serviceName, ServiceCallConfigurationDefinition configuration);
-
-    /**
-     * Gets the Hystrix configuration by the given name. If no name is given
-     * the default configuration is returned, see <tt>setHystrixConfiguration</tt>
-     *
-     * @param id id of the configuration, or <tt>null</tt> to return the default configuration
-     * @return the configuration, or <tt>null</tt> if no configuration has been registered
-     */
-    HystrixConfigurationDefinition getHystrixConfiguration(String id);
-
-    /**
-     * Sets the default Hystrix configuration
-     *
-     * @param configuration the configuration
-     */
-    void setHystrixConfiguration(HystrixConfigurationDefinition configuration);
-
-    /**
-     * Sets the Hystrix configurations
-     *
-     * @param configurations the configuration list
-     */
-    void setHystrixConfigurations(List<HystrixConfigurationDefinition> configurations);
-
-    /**
-     * Adds the Hystrix configuration
-     *
-     * @param id name of the configuration
-     * @param configuration the configuration
-     */
-    void addHystrixConfiguration(String id, HystrixConfigurationDefinition configuration);
-
-    /**
      * Returns the order in which the route inputs was started.
      * <p/>
      * The order may not be according to the startupOrder defined on the route.
@@ -831,13 +767,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void startRoute(RouteDefinition route) throws Exception;
 
     /**
-     * Starts all the routes which currently is not started.
-     *
-     * @throws Exception is thrown if a route could not be started for whatever reason
-     */
-    void startAllRoutes() throws Exception;
-
-    /**
      * Starts the given route if it has been previously stopped
      *
      * @param routeId the route id
@@ -985,16 +914,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     ServiceStatus getRouteStatus(String routeId);
 
     /**
-     * Indicates whether current thread is starting route(s).
-     * <p/>
-     * This can be useful to know by {@link LifecycleStrategy} or the likes, in case
-     * they need to react differently.
-     *
-     * @return <tt>true</tt> if current thread is starting route(s), or <tt>false</tt> if not.
-     */
-    boolean isStartingRoutes();
-
-    /**
      * Indicates whether current thread is setting up route(s) as part of starting Camel from spring/blueprint.
      * <p/>
      * This can be useful to know by {@link LifecycleStrategy} or the likes, in case
@@ -1230,17 +1149,15 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
      * Gets the default error handler builder which is inherited by the routes
      *
      * @return the builder
-     * @deprecated The return type will be switched to {@link ErrorHandlerFactory} in Camel 3.0
      */
-    @Deprecated
-    ErrorHandlerBuilder getErrorHandlerBuilder();
+    ErrorHandlerFactory getErrorHandlerFactory();
 
     /**
      * Sets the default error handler builder which is inherited by the routes
      *
-     * @param errorHandlerBuilder the builder
+     * @param errorHandlerFactory the builder
      */
-    void setErrorHandlerBuilder(ErrorHandlerFactory errorHandlerBuilder);
+    void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
 
     /**
      * Gets the default shared thread pool for error handlers which
@@ -1249,20 +1166,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     ScheduledExecutorService getErrorHandlerExecutorService();
 
     /**
-     * Sets the data formats that can be referenced in the routes.
-     *
-     * @param dataFormats the data formats
-     */
-    void setDataFormats(Map<String, DataFormatDefinition> dataFormats);
-
-    /**
-     * Gets the data formats that can be referenced in the routes.
-     *
-     * @return the data formats available
-     */
-    Map<String, DataFormatDefinition> getDataFormats();
-
-    /**
      * Resolve a data format given its name
      *
      * @param name the data format name or a reference to it in the {@link Registry}
@@ -1366,12 +1269,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     ValidatorRegistry<? extends ValueHolder<String>> getValidatorRegistry();
 
     /**
-     * @deprecated use {@link #setGlobalOptions(Map) setGlobalOptions(Map<String,String>) instead}.
-     */
-    @Deprecated
-    void setProperties(Map<String, String> properties);
-
-    /**
      * Sets global options that can be referenced in the camel context
      * <p/>
      * <b>Important:</b> This has nothing to do with property placeholders, and is just a plain set of key/value pairs
@@ -1384,12 +1281,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setGlobalOptions(Map<String, String> globalOptions);
 
     /**
-     * @deprecated use {@link #getGlobalOptions()} instead.
-     */
-    @Deprecated
-    Map<String, String> getProperties();
-
-    /**
      * Gets global options that can be referenced in the camel context.
      * <p/>
      * <b>Important:</b> This has nothing to do with property placeholders, and is just a plain set of key/value pairs
@@ -1402,12 +1293,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     Map<String, String> getGlobalOptions();
 
     /**
-     * @deprecated use {@link #getGlobalOption(String)} instead.
-     */
-    @Deprecated
-    String getProperty(String key);
-
-    /**
      * Gets the global option value that can be referenced in the camel context
      * <p/>
      * <b>Important:</b> This has nothing to do with property placeholders, and is just a plain set of key/value pairs
@@ -1633,15 +1518,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     ExecutorServiceManager getExecutorServiceManager();
 
     /**
-     * Gets the current {@link org.apache.camel.spi.ExecutorServiceStrategy}
-     *
-     * @return the manager
-     * @deprecated use {@link #getExecutorServiceManager()}
-     */
-    @Deprecated
-    org.apache.camel.spi.ExecutorServiceStrategy getExecutorServiceStrategy();
-
-    /**
      * Sets a custom {@link org.apache.camel.spi.ExecutorServiceManager}
      *
      * @param executorServiceManager the custom manager
@@ -1705,24 +1581,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setUuidGenerator(UuidGenerator uuidGenerator);
 
     /**
-     * Whether or not type converters should be loaded lazy
-     *
-     * @return <tt>true</tt> to load lazy, <tt>false</tt> to load on startup
-     * @deprecated this option is no longer supported, will be removed in a future Camel release.
-     */
-    @Deprecated
-    Boolean isLazyLoadTypeConverters();
-
-    /**
-     * Sets whether type converters should be loaded lazy
-     *
-     * @param lazyLoadTypeConverters <tt>true</tt> to load lazy, <tt>false</tt> to load on startup
-     * @deprecated this option is no longer supported, will be removed in a future Camel release.
-     */
-    @Deprecated
-    void setLazyLoadTypeConverters(Boolean lazyLoadTypeConverters);
-
-    /**
      * Sets whether to load custom type converters by scanning classpath.
      * This can be turned off if you are only using Camel components
      * that does not provide type converters which is needed at runtime.
@@ -1844,15 +1702,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     Map<String, Properties> findEips() throws LoadPropertiesException, IOException;
 
     /**
-     * Returns the HTML documentation for the given Camel component
-     *
-     * @return the HTML or <tt>null</tt> if the component is <b>not</b> built with HTML document included.
-     * @deprecated use camel-catalog instead
-     */
-    @Deprecated
-    String getComponentDocumentation(String componentName) throws IOException;
-
-    /**
      * Returns the JSON schema representation of the component and endpoint parameters for the given component name.
      *
      * @return the json or <tt>null</tt> if the component is <b>not</b> built with JSon schema support
@@ -2067,4 +1916,5 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
      * Sets a {@link HealthCheckRegistry}.
      */
     void setHealthCheckRegistry(HealthCheckRegistry healthCheckRegistry);
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/Component.java b/camel-core/src/main/java/org/apache/camel/Component.java
index b21e7a4..eae7d4d 100644
--- a/camel-core/src/main/java/org/apache/camel/Component.java
+++ b/camel-core/src/main/java/org/apache/camel/Component.java
@@ -57,30 +57,6 @@ public interface Component extends CamelContextAware {
     boolean useRawUri();
 
     /**
-     * Attempt to create a configuration object from the given uri
-     *
-     * @param uri the configuration URI
-     * @return a newly created {@link EndpointConfiguration}
-     * @throws Exception is thrown if the configuration URI is invalid
-     *
-     * @since Camel 2.9.0
-     */
-    @Deprecated
-    EndpointConfiguration createConfiguration(String uri) throws Exception;
-
-    /**
-     * Creates a configuration helper object for a component that lets you configure the various
-     * URI and parameter values; then create the full URI for it, create a new Endpoint from it
-     * or configure an existing Endpoint from the values.
-     *
-     * This method is intended to be used in cases where there is not yet a full URI to
-     * configure an endpoint yet; but rather there are a number of parameters to configure
-     * to then build up a new URI or directly create an Endpoint from the parameter values.
-     */
-    @Deprecated
-    ComponentConfiguration createComponentConfiguration();
-
-    /**
      * Gets a list of supported extensions.
      *
      * @return the list of extensions.
diff --git a/camel-core/src/main/java/org/apache/camel/ComponentConfiguration.java b/camel-core/src/main/java/org/apache/camel/ComponentConfiguration.java
deleted file mode 100644
index 78f8702..0000000
--- a/camel-core/src/main/java/org/apache/camel/ComponentConfiguration.java
+++ /dev/null
@@ -1,158 +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;
-
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-
-import org.apache.camel.impl.ParameterConfiguration;
-
-/**
- * Represents a set of configuration values for an endpoint URI which can be created from a URI string
- * or a base URI string and a set of parameter names and values.
- *
- * The configuration values can then be introspected, modified and converted back into a URI string
- * or Endpoint.
- *
- * For {@link org.apache.camel.impl.UriEndpointComponent} implementations created for Endpoints annotated with {@link org.apache.camel.spi.UriEndpoint} and the
- * associated annotations then all the parameter values can be introspected and the parameter values are converted to their
- * correct type.
- *
- * Other implementations keep all the types as String and there is no validation until you try to create
- * an Endpoint from the values.
- */
-@Deprecated
-public interface ComponentConfiguration {
-
-    /**
-     * Returns the base URI without any query parameters added
-     */
-    String getBaseUri();
-
-    /**
-     * Sets the base URI without any query parameters added
-     */
-    void setBaseUri(String baseUri);
-
-    /**
-     * Returns the current parameters of the configuration (usually encoded as <tt>?foo=bar&whatnot=something</tt> URI query parameters)
-     */
-    Map<String, Object> getParameters();
-
-    /**
-     * Sets the parameter values of this configuration
-     */
-    void setParameters(Map<String, Object> propertyValues);
-
-    /**
-     * Returns the parameter value for the given name
-     *
-     * @param name the name of the URI query parameter to get
-     * @return the value of the parameter
-     */
-    Object getParameter(String name);
-
-    /**
-     * Sets the parameter value of the given name
-     *
-     * @param name  the name of the URI query parameter
-     * @param value the new value of the parameter
-     */
-    void setParameter(String name, Object value);
-
-    /**
-     * Returns the URI string (without schema) with query parameters for the current
-     * configuration which can then be used to create an {@link org.apache.camel.Endpoint}
-     */
-    String getUriString();
-
-    /**
-     * Sets the URI string (without schema but with optional query parameters)
-     * which will update the {@link #getBaseUri()} and the {@link #getParameters()} values
-     *
-     * @param newValue the new URI string with query arguments
-     */
-    void setUriString(String newValue) throws URISyntaxException;
-
-    /**
-     * Returns the URI query parameter configuration for the given parameter name or null if it does not exist
-     */
-    ParameterConfiguration getParameterConfiguration(String name);
-
-    /**
-     * Returns the sorted map of all the parameter names to their {@link ParameterConfiguration} objects
-     */
-    SortedMap<String, ParameterConfiguration> getParameterConfigurationMap();
-
-    /**
-     * Converts the configuration into a URI and then looks up the endpoint in the {@link CamelContext}
-     * which typically results in a new {@link Endpoint} instance being created.
-     */
-    Endpoint createEndpoint() throws Exception;
-
-    /**
-     * Applies the current set of parameters to the given endpoint instance.
-     * <p/>
-     * Note that typically parts of the URI are not injected into the Endpoint; this method purely
-     *
-     * @param endpoint the endpoint instance
-     */
-    void configureEndpoint(Endpoint endpoint);
-
-    /**
-     * Gets the named URI parameter value on the given endpoint
-     *
-     * @param endpoint the endpoint instance
-     * @param name     the name of the URI query parameter
-     * @return the value of the parameter
-     * @throws RuntimeCamelException if the parameter name does not exist on the endpoint
-     */
-    Object getEndpointParameter(Endpoint endpoint, String name) throws RuntimeCamelException;
-
-    /**
-     * Sets the named URI query parameter value on the given endpoint
-     *
-     * @param endpoint the endpoint instance
-     * @param name     the name of the URI query parameter
-     * @param value    the new value of the URI query parameter
-     * @throws RuntimeCamelException
-     */
-    void setEndpointParameter(Endpoint endpoint, String name, Object value) throws RuntimeCamelException;
-
-    /**
-     * A helper method for tools such as CLIs, IDEs or web tools that provides a completion list for Endpoint Paths
-     * rather like bash tab completion or Karaf attribute or option completion handlers.
-     *
-     * So given the current configuration data, return a list of completions given the specified text.
-     * e.g. return the files in a directory, the matching queues in a message broker, the database tables in a database component etc
-     *
-     * @param completionText the prefix text used to complete on (usually a matching bit of text)
-     * @return a list of matches
-     */
-    List<String> completeEndpointPath(String completionText);
-
-    /**
-     * Creates a <a href="http://json-schema.org/">JSON schema</a> representation of the
-     * configuration parameters for this endpoint and the types and validation rules.
-     *
-     * @return a JSON string which represents the JSON schema for this endpoints configuration parameters.
-     */
-    String createParameterJsonSchema();
-}
-
diff --git a/camel-core/src/main/java/org/apache/camel/ComponentVerifier.java b/camel-core/src/main/java/org/apache/camel/ComponentVerifier.java
deleted file mode 100644
index d95a7e7..0000000
--- a/camel-core/src/main/java/org/apache/camel/ComponentVerifier.java
+++ /dev/null
@@ -1,33 +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;
-
-import java.util.Map;
-
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-
-/**
- * Defines the interface used for validating component/endpoint parameters. The central method of this
- * interface is {@link #verify(Scope, Map)} which takes a scope and a set of parameters which should be verified.
- * <p/>
- * The return value is a {@link Result} of the verification
- *
- * @deprecated use {@link ComponentVerifierExtension}
- */
-@Deprecated
-public interface ComponentVerifier extends ComponentVerifierExtension {
-}
diff --git a/camel-core/src/main/java/org/apache/camel/Endpoint.java b/camel-core/src/main/java/org/apache/camel/Endpoint.java
index 2069b8f..603812f 100644
--- a/camel-core/src/main/java/org/apache/camel/Endpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/Endpoint.java
@@ -39,14 +39,6 @@ public interface Endpoint extends IsSingleton, Service {
     String getEndpointUri();
 
     /**
-     * Returns the object representation of the endpoint configuration
-     *
-     * @return the endpoint configuration
-     */
-    @Deprecated
-    EndpointConfiguration getEndpointConfiguration();
-
-    /**
      * Returns a string key of this endpoint.
      * <p/>
      * This key is used by {@link org.apache.camel.spi.LifecycleStrategy} when registering endpoint.
@@ -77,17 +69,6 @@ public interface Endpoint extends IsSingleton, Service {
     Exchange createExchange(ExchangePattern pattern);
 
     /**
-     * Creates a new exchange for communicating with this endpoint using the
-     * given exchange to pre-populate the values of the headers and messages
-     *
-     * @param exchange given exchange to use for pre-populate
-     * @return a new exchange
-     * @deprecated will be removed in Camel 3.0
-     */
-    @Deprecated
-    Exchange createExchange(Exchange exchange);
-
-    /**
      * Returns the context which created the endpoint
      *
      * @return the context which created the endpoint
diff --git a/camel-core/src/main/java/org/apache/camel/EndpointConfiguration.java b/camel-core/src/main/java/org/apache/camel/EndpointConfiguration.java
deleted file mode 100644
index 8fc2563..0000000
--- a/camel-core/src/main/java/org/apache/camel/EndpointConfiguration.java
+++ /dev/null
@@ -1,77 +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;
-
-import java.net.URI;
-
-/**
- * Holds an {@link Endpoint} configuration as a pojo that can be manipulated and validated.
- * Camel endpoint configuration is strongly related to URIs.
- */
-@Deprecated
-public interface EndpointConfiguration {
-
-    String URI_SCHEME               = "scheme";
-    String URI_SCHEME_SPECIFIC_PART = "schemeSpecificPart";
-    String URI_AUTHORITY            = "authority";
-    String URI_USER_INFO            = "userInfo";
-    String URI_HOST                 = "host";
-    String URI_PORT                 = "port";
-    String URI_PATH                 = "path";
-    String URI_QUERY                = "query";
-    String URI_FRAGMENT             = "fragment";
-
-    /**
-     * {@link org.apache.camel.spi.DataFormat} operations.
-     */
-    enum UriFormat {
-        Canonical, Provider, Consumer, Complete
-    }
-
-    /**
-     * Returns the URI configuration of an {@link Endpoint}.
-     *
-     * @return the configuration URI.
-     */
-    URI getURI();
-
-    /**
-     * Gets the value of a particular parameter.
-     *
-     * @param name the parameter name
-     * @return the configuration URI.
-     * @throws RuntimeCamelException is thrown if error getting the parameter
-     */
-    <T> T getParameter(String name) throws RuntimeCamelException;
-
-    /**
-     * Sets the value of a particular parameter.
-     *
-     * @param name  the parameter name
-     * @param value the parameter value
-     * @throws RuntimeCamelException is thrown if error setting the parameter
-     */
-    <T> void setParameter(String name, T value) throws RuntimeCamelException;
-
-    /**
-     * Returns the formatted configuration string of an {@link Endpoint}.
-     *
-     * @param format the format
-     * @return the configuration URI in String format.
-     */
-    String toUriString(UriFormat format);
-}
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java
index 6ca2ac6..500b782 100644
--- a/camel-core/src/main/java/org/apache/camel/Exchange.java
+++ b/camel-core/src/main/java/org/apache/camel/Exchange.java
@@ -522,21 +522,10 @@ public interface Exchange {
     /**
      * Creates a copy of the current message exchange so that it can be
      * forwarded to another destination
-     * <p/>
-     * Notice this operation invokes <tt>copy(false)</tt>
      */
     Exchange copy();
 
     /**
-     * Creates a copy of the current message exchange so that it can be
-     * forwarded to another destination
-     *
-     * @param safeCopy whether to copy exchange properties and message headers safely to a new map instance,
-     *                 or allow sharing the same map instances in the returned copy.
-     */
-    Exchange copy(boolean safeCopy);
-
-    /**
      * Returns the endpoint which originated this message exchange if a consumer on an endpoint
      * created the message exchange, otherwise this property will be <tt>null</tt>
      */
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangePattern.java b/camel-core/src/main/java/org/apache/camel/ExchangePattern.java
index b1bd103..0a04900 100644
--- a/camel-core/src/main/java/org/apache/camel/ExchangePattern.java
+++ b/camel-core/src/main/java/org/apache/camel/ExchangePattern.java
@@ -30,9 +30,7 @@ import javax.xml.bind.annotation.XmlType;
 @XmlType
 @XmlEnum
 public enum ExchangePattern {
-    InOnly, RobustInOnly, InOut, InOptionalOut, OutOnly, RobustOutOnly, OutIn, OutOptionalIn;
-
-    // TODO: We should deprecate and only support InOnly, InOut, and InOptionalOut
+    InOnly, InOut, InOptionalOut;
 
     protected static final Map<String, ExchangePattern> MAP = new HashMap<>();
 
@@ -47,16 +45,6 @@ public enum ExchangePattern {
             return "http://www.w3.org/ns/wsdl/in-opt-out";
         case InOut:
             return "http://www.w3.org/ns/wsdl/in-out";
-        case OutIn:
-            return "http://www.w3.org/ns/wsdl/out-in";
-        case OutOnly:
-            return "http://www.w3.org/ns/wsdl/out-only";
-        case OutOptionalIn:
-            return "http://www.w3.org/ns/wsdl/out-opt-in";
-        case RobustInOnly:
-            return "http://www.w3.org/ns/wsdl/robust-in-only";
-        case RobustOutOnly:
-            return "http://www.w3.org/ns/wsdl/robust-out-only";
         default:
             throw new IllegalArgumentException("Unknown message exchange pattern: " + this);
         }
@@ -66,13 +54,7 @@ public enum ExchangePattern {
      * Return true if there can be an IN message
      */
     public boolean isInCapable() {
-        switch (this) {
-        case OutOnly:
-        case RobustOutOnly:
-            return false;
-        default:
-            return true;
-        }
+        return true;
     }
 
     /**
@@ -81,7 +63,6 @@ public enum ExchangePattern {
     public boolean isOutCapable() {
         switch (this) {
         case InOnly:
-        case RobustInOnly:
             return false;
         default:
             return true;
@@ -94,7 +75,6 @@ public enum ExchangePattern {
     public boolean isFaultCapable() {
         switch (this) {
         case InOnly:
-        case OutOnly:
             return false;
         default:
             return true;
diff --git a/camel-core/src/main/java/org/apache/camel/Main.java b/camel-core/src/main/java/org/apache/camel/Main.java
deleted file mode 100644
index 8e1f58f..0000000
--- a/camel-core/src/main/java/org/apache/camel/Main.java
+++ /dev/null
@@ -1,25 +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;
-
-/**
- * @deprecated use {@link org.apache.camel.main.Main org.apache.camel.main.Main} instead
- */
-@Deprecated
-public class Main extends org.apache.camel.main.Main {
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/Message.java b/camel-core/src/main/java/org/apache/camel/Message.java
index 2dcc161..a0e1d0b 100644
--- a/camel-core/src/main/java/org/apache/camel/Message.java
+++ b/camel-core/src/main/java/org/apache/camel/Message.java
@@ -393,13 +393,4 @@ public interface Message {
      */
     boolean hasAttachments();
 
-    /**
-     * Returns the unique ID for a message exchange if this message is capable
-     * of creating one or <tt>null</tt> if not
-     *
-     * @return the created exchange id, or <tt>null</tt> if not capable of creating
-     * @deprecated will be removed in Camel 3.0. It is discouraged for messages to create exchange ids
-     */
-    @Deprecated
-    String createExchangeId();
 }
diff --git a/camel-core/src/main/java/org/apache/camel/MessageHistory.java b/camel-core/src/main/java/org/apache/camel/MessageHistory.java
index 217b9d2..e3fd0c3 100644
--- a/camel-core/src/main/java/org/apache/camel/MessageHistory.java
+++ b/camel-core/src/main/java/org/apache/camel/MessageHistory.java
@@ -35,14 +35,6 @@ public interface MessageHistory {
 
     /**
      * Gets the timestamp at the point of this history.
-     *
-     * @deprecated use {@link #getTime()}
-     */
-    @Deprecated
-    Date getTimestamp();
-
-    /**
-     * Gets the timestamp at the point of this history.
      */
     long getTime();
 
diff --git a/camel-core/src/main/java/org/apache/camel/Producer.java b/camel-core/src/main/java/org/apache/camel/Producer.java
index f6be6f4..89bdaa3 100644
--- a/camel-core/src/main/java/org/apache/camel/Producer.java
+++ b/camel-core/src/main/java/org/apache/camel/Producer.java
@@ -24,33 +24,4 @@ package org.apache.camel;
  */
 public interface Producer extends Processor, Service, IsSingleton, EndpointAware {
 
-    /**
-     * Creates a new exchange to send to this endpoint
-     * 
-     * @return a newly created exchange
-     * @deprecated use {@link Endpoint#createExchange()} - will be removed in Camel 3.0
-     */
-    @Deprecated
-    Exchange createExchange();
-
-    /**
-     * Creates a new exchange of the given pattern to send to this endpoint
-     *
-     * @param pattern the exchange pattern
-     * @return a newly created exchange
-     * @deprecated use {@link Endpoint#createExchange(ExchangePattern)} - will be removed in Camel 3.0
-     */
-    @Deprecated
-    Exchange createExchange(ExchangePattern pattern);
-
-    /**
-     * Creates a new exchange for communicating with this exchange using the
-     * given exchange to pre-populate the values of the headers and messages
-     *
-     * @param exchange the existing exchange
-     * @return the created exchange
-     * @deprecated will be removed in Camel 3.0
-     */
-    @Deprecated
-    Exchange createExchange(Exchange exchange);
 }
diff --git a/camel-core/src/main/java/org/apache/camel/Properties.java b/camel-core/src/main/java/org/apache/camel/Properties.java
deleted file mode 100644
index fc554ce..0000000
--- a/camel-core/src/main/java/org/apache/camel/Properties.java
+++ /dev/null
@@ -1,37 +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;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marks a parameter as being an injection point of the properties of an {@link Exchange}
- *
- * @deprecated use {@link ExchangeProperties} instead
- * @see Exchange#getProperties()  
- * @version 
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Target({ElementType.PARAMETER })
-@Deprecated
-public @interface Properties {
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/Property.java b/camel-core/src/main/java/org/apache/camel/Property.java
deleted file mode 100644
index a304e6f..0000000
--- a/camel-core/src/main/java/org/apache/camel/Property.java
+++ /dev/null
@@ -1,38 +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;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marks a parameter as being an injection point of a property of an {@link Exchange}
- *
- * @see Exchange#getProperty(String)  
- * @version
- * @deprecated use {@link org.apache.camel.ExchangeProperty} instead
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Target({ElementType.PARAMETER })
-@Deprecated
-public @interface Property {
-    String value();
-}
diff --git a/camel-core/src/main/java/org/apache/camel/Route.java b/camel-core/src/main/java/org/apache/camel/Route.java
index 7dd5af3..53fddce 100644
--- a/camel-core/src/main/java/org/apache/camel/Route.java
+++ b/camel-core/src/main/java/org/apache/camel/Route.java
@@ -27,8 +27,8 @@ import org.apache.camel.spi.RouteContext;
  * from a specific {@link org.apache.camel.Endpoint} within a {@link org.apache.camel.CamelContext}.
  * <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.CamelContext#startRoute(String)}
- * and {@link org.apache.camel.CamelContext#stopRoute(String)} methods.
+ * 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 {
 
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java b/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
index 991e8cc..6124007 100644
--- a/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
@@ -133,7 +133,7 @@ public interface RuntimeConfiguration {
      * <b>Note:</b> When setting auto startup <tt>false</tt> on {@link CamelContext} then that takes precedence
      * and <i>no</i> routes is started. You would need to start {@link CamelContext} explicit using
      * the {@link org.apache.camel.CamelContext#start()} method, to start the context, and then
-     * you would need to start the routes manually using {@link CamelContext#startRoute(String)}.
+     * you would need to start the routes manually using {@link org.apache.camel.spi.RouteController#startRoute(String)}.
      * <p/>
      * Default is <tt>true</tt> to always start up.
      *
diff --git a/camel-core/src/main/java/org/apache/camel/URIField.java b/camel-core/src/main/java/org/apache/camel/URIField.java
deleted file mode 100644
index b54c0cb..0000000
--- a/camel-core/src/main/java/org/apache/camel/URIField.java
+++ /dev/null
@@ -1,37 +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;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Used to indicate the field of an {@link EndpointConfiguration}.
- * A naming convention makes the annotation necessary only for parameters
- *
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Target({ElementType.FIELD})
-@Deprecated
-public @interface URIField {
-    String component() default "";
-    String parameter() default "";
-}
diff --git a/camel-core/src/main/java/org/apache/camel/VerifiableComponent.java b/camel-core/src/main/java/org/apache/camel/VerifiableComponent.java
deleted file mode 100644
index 2e2b6f6..0000000
--- a/camel-core/src/main/java/org/apache/camel/VerifiableComponent.java
+++ /dev/null
@@ -1,32 +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;
-
-/**
- * An interface to represent an object which support validation
- *
- * @deprecated see {@link org.apache.camel.extension.ComponentExtension}
- */
-@Deprecated
-public interface VerifiableComponent {
-    /**
-     * Get the {@link ComponentVerifier}
-     *
-     * @return the Component Verifier
-     */
-    ComponentVerifier getVerifier();
-}
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
index c9623ac..83483a4 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.api.management.mbean;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -50,10 +49,6 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedAttribute(description = "Camel Management StatisticsLevel")
     String getManagementStatisticsLevel();
 
-    @Deprecated
-    @ManagedAttribute(description = "Camel Properties")
-    Map<String, String> getProperties();
-
     @ManagedAttribute(description = "Camel Global Options")
     Map<String, String> getGlobalOptions();
 
@@ -69,10 +64,6 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedAttribute(description = "HeadersMapFactory class name")
     String getHeadersMapFactoryClassName();
 
-    @Deprecated
-    @ManagedOperation(description = "Gets the value of a Camel global option")
-    String getProperty(String key) throws Exception;
-
     /**
      * Gets the value of a CamelContext global option
      *
@@ -83,10 +74,6 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedOperation(description = "Gets the value of a Camel global option")
     String getGlobalOption(String key) throws Exception;
 
-    @Deprecated
-    @ManagedOperation(description = "Sets the value of a Camel global option")
-    void setProperty(String key, String value) throws Exception;
-
     /**
      * Sets the value of a CamelContext property name
      *
@@ -103,13 +90,6 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedAttribute(description = "Tracing")
     void setTracing(Boolean tracing);
 
-    /**
-     * @deprecated use {@link #getExchangesInflight()}
-     */
-    @ManagedAttribute(description = "Current number of inflight Exchanges")
-    @Deprecated
-    Integer getInflightExchanges();
-
     @ManagedAttribute(description = "Total number of routes")
     Integer getTotalRoutes();
 
@@ -373,32 +353,6 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean
     @ManagedOperation(description = "Reset counters")
     void reset(boolean includeRoutes) throws Exception;
 
-    /**
-     * Helper method for tooling which returns the completion list of the endpoint path
-     * from the given endpoint name, properties and current path expression.
-     * <p/>
-     * For example if using the file endpoint, this should complete a list of files (rather like bash completion)
-     * or for an ActiveMQ component this should complete the list of queues or topics.
-     *
-     * @param componentName  the component name
-     * @param endpointParameters  parameters of the endpoint
-     * @param completionText  the entered text which we want to have completion suggestions for
-     * @throws Exception is thrown if error occurred
-     */
-    @ManagedOperation(description = "Returns the list of available endpoint paths for the given component name, endpoint properties and completion text")
-    @Deprecated
-    List<String> completeEndpointPath(String componentName, Map<String, Object> endpointParameters, String completionText) throws Exception;
-
-    /**
-     * Returns the HTML documentation for the given camel component
-     *
-     * @param componentName  the component name
-     * @deprecated use camel-catalog instead
-     */
-    @ManagedOperation(description = "Returns the HTML documentation for the given camel component")
-    @Deprecated
-    String getComponentDocumentation(String componentName) throws IOException;
-
     @ManagedOperation(description = "Returns the JSON representation of all the static and dynamic endpoints defined in all the routes")
     String createRouteStaticEndpointJson();
 
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCircuitBreakerLoadBalancerMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCircuitBreakerLoadBalancerMBean.java
deleted file mode 100644
index 53d2ec9..0000000
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCircuitBreakerLoadBalancerMBean.java
+++ /dev/null
@@ -1,47 +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.api.management.mbean;
-
-import javax.management.openmbean.TabularData;
-
-import org.apache.camel.api.management.ManagedAttribute;
-import org.apache.camel.api.management.ManagedOperation;
-
-public interface ManagedCircuitBreakerLoadBalancerMBean extends ManagedProcessorMBean {
-
-    @ManagedAttribute(description = "Number of processors in the load balancer")
-    Integer getSize();
-
-    @ManagedAttribute(description = "The timeout in millis to use as threshold to move state from closed to half-open or open state")
-    Long getHalfOpenAfter();
-
-    @ManagedAttribute(description = "Number of previous failed messages to use as threshold to move state from closed to half-open or open state")
-    Integer getThreshold();
-
-    @ManagedAttribute(description = "The class names of the exceptions the load balancer uses (separated by comma)")
-    String getExceptions();
-
-    @ManagedAttribute(description = "The current state of the circuit breaker")
-    String getCircuitBreakerState();
-
-    @ManagedOperation(description = "Dumps the state of the load balancer")
-    String dumpState();
-
-    @ManagedOperation(description = "Statistics of the content based router for each exception")
-    TabularData exceptionStatistics();
-
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
index baf70e1..ad4ee9b 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
@@ -20,9 +20,9 @@ import java.util.Map;
 
 import javax.management.openmbean.TabularData;
 
-import org.apache.camel.ComponentVerifier;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
+import org.apache.camel.component.extension.ComponentVerifierExtension;
 
 public interface ManagedComponentMBean {
 
@@ -48,5 +48,5 @@ public interface ManagedComponentMBean {
     boolean isVerifySupported();
 
     @ManagedOperation(description = "Verify options against a given scope")
-    ComponentVerifier.Result verify(String scope, Map<String, String> options);
+    ComponentVerifierExtension.Result verify(String scope, Map<String, String> options);
 }
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
index 544ebab..b17b15e 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
@@ -49,13 +49,6 @@ public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean {
     @ManagedAttribute(description = "Route Uptime [milliseconds]")
     long getUptimeMillis();
 
-    /**
-     * @deprecated use {@link #getExchangesInflight()}
-     */
-    @ManagedAttribute(description = "Current number of inflight Exchanges")
-    @Deprecated
-    Integer getInflightExchanges();
-
     @ManagedAttribute(description = "Camel ID")
     String getCamelId();
 
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
index 7950f6c..ebd484a 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
@@ -26,13 +26,6 @@ public interface ManagedSendProcessorMBean extends ManagedProcessorMBean, Manage
     @ManagedAttribute(description = "Destination as Endpoint URI", mask = true)
     String getDestination();
 
-    /**
-     * @deprecated no longer in use. Will be removed in a future Camel release.
-     */
-    @ManagedAttribute(description = "Destination as Endpoint URI")
-    @Deprecated
-    void setDestination(String uri);
-
     @ManagedAttribute(description = "Message Exchange Pattern")
     String getMessageExchangePattern();
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java b/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
index c87ca73..67605e3 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
@@ -391,9 +391,8 @@ public final class AdviceWithTasks {
         return new AdviceWithTask() {
             public void task() throws Exception {
                 FromDefinition from = route.getInputs().get(0);
-                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getUriOrRef(), uri);
+                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getUri(), uri);
                 from.setEndpoint(null);
-                from.setRef(null);
                 from.setUri(uri);
             }
         };
@@ -403,8 +402,7 @@ public final class AdviceWithTasks {
         return new AdviceWithTask() {
             public void task() throws Exception {
                 FromDefinition from = route.getInputs().get(0);
-                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getUriOrRef(), endpoint.getEndpointUri());
-                from.setRef(null);
+                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getUri(), endpoint.getEndpointUri());
                 from.setUri(null);
                 from.setEndpoint(endpoint);
             }
diff --git a/camel-core/src/main/java/org/apache/camel/builder/Builder.java b/camel-core/src/main/java/org/apache/camel/builder/Builder.java
index 6633f2b..d0d63e5 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/Builder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/Builder.java
@@ -139,16 +139,6 @@ public final class Builder {
 
     /**
      * Returns a predicate and value builder for properties on an exchange
-     *
-     * @deprecated use {@link #exchangeProperty(String)} instead
-     */
-    @Deprecated
-    public static ValueBuilder property(String name) {
-        return exchangeProperty(name);
-    }
-    
-    /**
-     * Returns a predicate and value builder for properties on an exchange
      */
     public static ValueBuilder exchangeProperty(String name) {
         Expression exp = new ExchangePropertyExpression(name);
@@ -174,51 +164,6 @@ public final class Builder {
     }
 
     /**
-     * Returns a predicate and value builder for the outbound body on an
-     * exchange
-     *
-     * @deprecated use {@link #body()}
-     */
-    @Deprecated
-    public static ValueBuilder outBody() {
-        Expression exp = new SimpleExpression("${out.body}");
-        return new ValueBuilder(exp);
-    }
-
-    /**
-     * Returns a predicate and value builder for the outbound message body as a
-     * specific type
-     *
-     * @deprecated use {@link #bodyAs(Class)}
-     */
-    @Deprecated
-    public static <T> ValueBuilder outBodyAs(Class<T> type) {
-        Expression expression = ExpressionBuilder.outBodyExpression(type);
-        return new ValueBuilder(expression);
-    }
-
-    /**
-     * Returns a predicate and value builder for the fault body on an
-     * exchange
-     */
-    public static ValueBuilder faultBody() {
-        Expression expression = ExpressionBuilder.faultBodyExpression();
-        return new ValueBuilder(expression);
-    }
-
-    /**
-     * Returns a predicate and value builder for the fault message body as a
-     * specific type
-     *
-     * @deprecated use {@link #bodyAs(Class)}
-     */
-    @Deprecated
-    public static <T> ValueBuilder faultBodyAs(Class<T> type) {
-        Expression expression = ExpressionBuilder.faultBodyExpression(type);
-        return new ValueBuilder(expression);
-    }
-
-    /**
      * Returns an expression for the given system property
      */
     public static ValueBuilder systemProperty(final String name) {
@@ -267,17 +212,4 @@ public final class Builder {
         return new ValueBuilder(newExp);
     }
 
-    /**
-     * Returns an expression processing the exchange to the given endpoint uri.
-     *
-     * @param uri   endpoint uri
-     * @return the builder
-     * @deprecated not in use, and not available in XML DSL
-     */
-    @Deprecated
-    public static ValueBuilder sendTo(String uri) {
-        Expression expression = ExpressionBuilder.toExpression(uri);
-        return new ValueBuilder(expression);
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
index 23a6012..51d999e 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.builder.xml.XPathBuilder;
 import org.apache.camel.model.ModelCamelContext;
@@ -31,8 +30,6 @@ import org.apache.camel.model.language.ExchangePropertyExpression;
 import org.apache.camel.model.language.HeaderExpression;
 import org.apache.camel.model.language.JsonPathExpression;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Base class for implementation inheritance for different clauses in the <a
@@ -63,17 +60,6 @@ public abstract class BuilderSupport {
     }
 
     /**
-     *
-     * Returns a value builder for the given exchange property
-     * @deprecated use {@link #exchangeProperty(String)} instead
-     */
-    @Deprecated
-    public ValueBuilder property(String name) {
-        Expression exp = new ExchangePropertyExpression(name);
-        return new ValueBuilder(exp);
-    }
-
-    /**
      * Returns a value builder for the given exchange property
      */
     public ValueBuilder exchangeProperty(String name) {
@@ -91,64 +77,12 @@ public abstract class BuilderSupport {
     /**
      * Returns a predicate and value builder for the inbound message body as a
      * specific type
-     *
-     * @deprecated use {@link #bodyAs(Class)}
-     */
-    @Deprecated
-    public <T> ValueBuilder body(Class<T> type) {
-        return bodyAs(type);
-    }
-
-    /**
-     * Returns a predicate and value builder for the inbound message body as a
-     * specific type
      */
     public <T> ValueBuilder bodyAs(Class<T> type) {
         return Builder.bodyAs(type);
     }
 
     /**
-     * Returns a predicate and value builder for the outbound body on an
-     * exchange
-     *
-     * @deprecated use {@link #body()}
-     */
-    @Deprecated
-    public ValueBuilder outBody() {
-        return Builder.outBody();
-    }
-
-    /**
-     * Returns a predicate and value builder for the outbound message body as a
-     * specific type
-     *
-     * @deprecated use {@link #bodyAs(Class)}
-     */
-    @Deprecated
-    public <T> ValueBuilder outBody(Class<T> type) {
-        return Builder.outBodyAs(type);
-    }
-
-    /**
-     * Returns a predicate and value builder for the fault body on an
-     * exchange
-     */
-    public ValueBuilder faultBody() {
-        return Builder.faultBody();
-    }
-
-    /**
-     * Returns a predicate and value builder for the fault message body as a
-     * specific type
-     *
-     * @deprecated use {@link #bodyAs(Class)}
-     */
-    @Deprecated
-    public <T> ValueBuilder faultBodyAs(Class<T> type) {
-        return Builder.faultBodyAs(type);
-    }
-
-    /**
      * Returns a value builder for the given system property
      */
     public ValueBuilder systemProperty(String name) {
@@ -259,64 +193,6 @@ public abstract class BuilderSupport {
      *
      * @param beanOrBeanRef  either an instanceof a bean or a reference to bean to lookup in the Registry
      * @return the builder
-     * @deprecated use {@link #method(Object)} instead
-     */
-    @Deprecated
-    public ValueBuilder bean(Object beanOrBeanRef) {
-        return bean(beanOrBeanRef, null);
-    }
-
-    /**
-     * Returns a <a href="http://camel.apache.org/bean-language.html">method call expression</a>
-     * value builder
-     * <p/>
-     * This method accepts dual parameters. Either an bean instance or a reference to a bean (String).
-     *
-     * @param beanOrBeanRef  either an instanceof a bean or a reference to bean to lookup in the Registry
-     * @param method   name of method to invoke
-     * @return the builder
-     * @deprecated use {@link #method(Object, String)} instead
-     */
-    @Deprecated
-    public ValueBuilder bean(Object beanOrBeanRef, String method) {
-        return Builder.bean(beanOrBeanRef, method);
-    }
-
-    /**
-     * Returns a <a href="http://camel.apache.org/bean-language.html">method call expression</a>
-     * value builder
-     *
-     * @param beanType the Class of the bean which we want to invoke
-     * @return the builder
-     * @deprecated use {@link #method(Class)} instead
-     */
-    @Deprecated
-    public ValueBuilder bean(Class<?> beanType) {
-        return Builder.bean(beanType);
-    }
-
-    /**
-     * Returns a <a href="http://camel.apache.org/bean-language.html">method call expression</a>
-     * value builder
-     *
-     * @param beanType the Class of the bean which we want to invoke
-     * @param method   name of method to invoke
-     * @return the builder
-     * @deprecated use {@link #method(Class, String)} instead
-     */
-    @Deprecated
-    public ValueBuilder bean(Class<?> beanType, String method) {
-        return Builder.bean(beanType, method);
-    }
-
-    /**
-     * Returns a <a href="http://camel.apache.org/bean-language.html">method call expression</a>
-     * value builder
-     * <p/>
-     * This method accepts dual parameters. Either an bean instance or a reference to a bean (String).
-     *
-     * @param beanOrBeanRef  either an instanceof a bean or a reference to bean to lookup in the Registry
-     * @return the builder
      */
     public ValueBuilder method(Object beanOrBeanRef) {
         return method(beanOrBeanRef, null);
@@ -360,18 +236,6 @@ public abstract class BuilderSupport {
     }
 
     /**
-     * Returns an expression processing the exchange to the given endpoint uri
-     *
-     * @param uri endpoint uri to send the exchange to
-     * @return the builder
-     * @deprecated not in use, and not available in XML DSL
-     */
-    @Deprecated
-    public ValueBuilder sendTo(String uri) {
-        return Builder.sendTo(uri);
-    }
-
-    /**
      * Returns an expression value builder that replaces all occurrences of the
      * regular expression with the given replacement
      */
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
index a02a47d..451c4d0 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
@@ -940,7 +940,9 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      * Uses the XML Security data format
      */
     public T secureXML(String secureTag, boolean secureTagContents) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
         return dataFormat(xsdf);
     }
     
@@ -948,7 +950,10 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      * Uses the XML Security data format
      */
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setNamespaces(namespaces);
         return dataFormat(xsdf);
     }
 
@@ -956,7 +961,10 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      * Uses the XML Security data format
      */
     public T secureXML(String secureTag, boolean secureTagContents, String passPhrase) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, passPhrase);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setPassPhrase(passPhrase);
         return dataFormat(xsdf);
     }
     
@@ -964,7 +972,11 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      * Uses the XML Security data format
      */
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String passPhrase) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, passPhrase);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setNamespaces(namespaces);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setPassPhrase(passPhrase);
         return dataFormat(xsdf);
     }
     
@@ -972,7 +984,11 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      * Uses the XML Security data format
      */
     public T secureXML(String secureTag, boolean secureTagContents, String passPhrase, String xmlCipherAlgorithm) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, passPhrase, xmlCipherAlgorithm);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setPassPhrase(passPhrase);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
         return dataFormat(xsdf);
     }
     
@@ -981,7 +997,12 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      * Uses the XML Security data format
      */
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String passPhrase, String xmlCipherAlgorithm) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, passPhrase, xmlCipherAlgorithm);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setNamespaces(namespaces);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setPassPhrase(passPhrase);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
         return dataFormat(xsdf);
     }
     
@@ -1034,25 +1055,19 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
         xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
         return dataFormat(xsdf);
     }
-    
-    /**
-     * @deprecated Use {@link #secureXML(String, Map, boolean, String, String, String, String)} instead.
-     * Uses the XML Security data format
-     */
-    @Deprecated
-    public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm, 
-            String keyCipherAlgorithm) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, keyCipherAlgorithm);
-        return dataFormat(xsdf);
-    }
-    
+
     /**
      * Uses the XML Security data format
      */
     public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm, 
             String keyCipherAlgorithm, String keyOrTrustStoreParametersId) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-            keyCipherAlgorithm, keyOrTrustStoreParametersId);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParametersId(keyOrTrustStoreParametersId);
         return dataFormat(xsdf);
     }
     
@@ -1061,8 +1076,14 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      */
     public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm, 
             String keyCipherAlgorithm, String keyOrTrustStoreParametersId, String keyPassword) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-            keyCipherAlgorithm, keyOrTrustStoreParametersId, keyPassword);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParametersId(keyOrTrustStoreParametersId);
+        xsdf.setKeyPassword(keyPassword);
         return dataFormat(xsdf);
     }    
     
@@ -1071,8 +1092,13 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      */
     public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm, 
             String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-            keyCipherAlgorithm, keyOrTrustStoreParameters);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParameters(keyOrTrustStoreParameters);
         return dataFormat(xsdf);
     }
     
@@ -1081,8 +1107,14 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      */
     public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm, 
             String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters, String keyPassword) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-            keyCipherAlgorithm, keyOrTrustStoreParameters, keyPassword);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParameters(keyOrTrustStoreParameters);
+        xsdf.setKeyPassword(keyPassword);
         return dataFormat(xsdf);
     }    
     
@@ -1091,8 +1123,13 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      */
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias, 
             String xmlCipherAlgorithm, String keyCipherAlgorithm, String keyOrTrustStoreParametersId) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-                keyCipherAlgorithm, keyOrTrustStoreParametersId);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParametersId(keyOrTrustStoreParametersId);
         return dataFormat(xsdf);
     }
     
@@ -1101,8 +1138,14 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      */
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias, 
             String xmlCipherAlgorithm, String keyCipherAlgorithm, String keyOrTrustStoreParametersId, String keyPassword) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-                keyCipherAlgorithm, keyOrTrustStoreParametersId, keyPassword);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParametersId(keyOrTrustStoreParametersId);
+        xsdf.setKeyPassword(keyPassword);
         return dataFormat(xsdf);
     }    
     
@@ -1111,8 +1154,14 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      */
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias, 
             String xmlCipherAlgorithm, String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-                keyCipherAlgorithm, keyOrTrustStoreParameters);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setNamespaces(namespaces);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParameters(keyOrTrustStoreParameters);
         return dataFormat(xsdf);
     }
     
@@ -1121,8 +1170,15 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
      */
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias, 
             String xmlCipherAlgorithm, String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters, String keyPassword) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-                keyCipherAlgorithm, keyOrTrustStoreParameters, keyPassword);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setNamespaces(namespaces);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParameters(keyOrTrustStoreParameters);
+        xsdf.setKeyPassword(keyPassword);
         return dataFormat(xsdf);
     }   
     
@@ -1132,8 +1188,16 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
     public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias, 
             String xmlCipherAlgorithm, String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters, String keyPassword,
             String digestAlgorithm) {
-        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, 
-                keyCipherAlgorithm, keyOrTrustStoreParameters, keyPassword, digestAlgorithm);
+        XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
+        xsdf.setSecureTag(secureTag);
+        xsdf.setNamespaces(namespaces);
+        xsdf.setSecureTagContents(secureTagContents);
+        xsdf.setRecipientKeyAlias(recipientKeyAlias);
+        xsdf.setXmlCipherAlgorithm(xmlCipherAlgorithm);
+        xsdf.setKeyCipherAlgorithm(keyCipherAlgorithm);
+        xsdf.setKeyOrTrustStoreParameters(keyOrTrustStoreParameters);
+        xsdf.setDigestAlgorithm(digestAlgorithm);
+        xsdf.setKeyPassword(keyPassword);
         return dataFormat(xsdf);
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
index 97ef0b9..48bff89 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
@@ -131,15 +131,6 @@ public class DefaultErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
         return this;
     }
 
-    /**
-     * @deprecated will be removed in the near future. Use {@link #redeliveryDelay(long)} instead
-     */
-    @Deprecated
-    public DefaultErrorHandlerBuilder redeliverDelay(long delay) {
-        getRedeliveryPolicy().redeliveryDelay(delay);
-        return this;
-    }
-
     public DefaultErrorHandlerBuilder redeliveryDelay(long delay) {
         getRedeliveryPolicy().redeliveryDelay(delay);
         return this;
@@ -392,15 +383,6 @@ public class DefaultErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
     }
 
     /**
-     * @deprecated use {@link #deadLetterHandleNewException(boolean)}} with value <tt>false</tt>
-     */
-    @Deprecated
-    public DefaultErrorHandlerBuilder checkException() {
-        setDeadLetterHandleNewException(false);
-        return this;
-    }
-
-    /**
      * Sets a custom {@link org.apache.camel.Processor} to prepare the {@link org.apache.camel.Exchange} before
      * handled by the failure processor / dead letter channel. This allows for example to enrich the message
      * before sending to a dead letter queue.
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
index 04e1913..7915647 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
@@ -158,7 +158,7 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
 
     protected static ErrorHandlerFactory lookupErrorHandlerBuilder(ModelCamelContext camelContext) {
         @SuppressWarnings("deprecation")
-        ErrorHandlerFactory answer = camelContext.getErrorHandlerBuilder();
+        ErrorHandlerFactory answer = camelContext.getErrorHandlerFactory();
         if (answer instanceof ErrorHandlerBuilderRef) {
             ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef) answer;
             String otherRef = other.getRef();
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
index 80ad2e6..5c9a34e 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
@@ -590,28 +590,6 @@ public final class ExpressionBuilder {
      *
      * @param propertyName the name of the property the expression will return
      * @return an expression object which will return the property value
-     * @deprecated use {@link #exchangePropertyExpression(String)} instead
-     */
-    @Deprecated
-    public static Expression propertyExpression(final String propertyName) {
-        return new ExpressionAdapter() {
-            public Object evaluate(Exchange exchange) {
-                String text = simpleExpression(propertyName).evaluate(exchange, String.class);
-                return exchange.getProperty(text);
-            }
-
-            @Override
-            public String toString() {
-                return "exchangeProperty(" + propertyName + ")";
-            }
-        };
-    }
-
-    /**
-     * Returns an expression for the property value of exchange with the given name
-     *
-     * @param propertyName the name of the property the expression will return
-     * @return an expression object which will return the property value
      */
     public static Expression exchangePropertyExpression(final String propertyName) {
         return new ExpressionAdapter() {
@@ -644,17 +622,6 @@ public final class ExpressionBuilder {
     }
 
     /**
-     * Returns an expression for the properties of exchange
-     *
-     * @return an expression object which will return the properties
-     * @deprecated use {@link #exchangeExceptionExpression()} instead
-     */
-    @Deprecated
-    public static Expression propertiesExpression() {
-        return exchangeExceptionExpression();
-    }
-
-    /**
      * Returns an expression for the exchange properties of exchange
      *
      * @return an expression object which will return the exchange properties
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
index 1251973..7319bbe 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
@@ -308,16 +308,6 @@ public class ExpressionClause<T> extends ExpressionDefinition {
 
     /**
      * An expression of an exchange property of the given name
-     *
-     * @deprecated use {@link #exchangeProperty(String)} instead
-     */
-    @Deprecated
-    public T property(String name) {
-        return exchangeProperty(name);
-    }
-
-    /**
-     * An expression of an exchange property of the given name
      */
     public T exchangeProperty(String name) {
         return delegate.exchangeProperty(name);
@@ -325,16 +315,6 @@ public class ExpressionClause<T> extends ExpressionDefinition {
 
     /**
      * An expression of the exchange properties
-     *
-     * @deprecated use {@link #exchangeProperties()} instead
-     */
-    @Deprecated
-    public T properties() {
-        return exchangeProperties();
-    }
-
-    /**
-     * An expression of the exchange properties
      */
     public T exchangeProperties() {
         return delegate.exchangeProperties();
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
index d815f2c..b448e4f 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
@@ -180,16 +180,6 @@ public class ExpressionClauseSupport<T> {
 
     /**
      * An expression of an exchange property of the given name
-     *
-     * @deprecated use {@link #exchangeProperty(String)} instead
-     */
-    @Deprecated
-    public T property(String name) {
-        return expression(new ExchangePropertyExpression(name));
-    }
-
-    /**
-     * An expression of an exchange property of the given name
      */
     public T exchangeProperty(String name) {
         return expression(new ExchangePropertyExpression(name));
@@ -197,16 +187,6 @@ public class ExpressionClauseSupport<T> {
 
     /**
      * An expression of the exchange properties
-     *
-     * @deprecated use {@link #exchangeProperties()} instead
-     */
-    @Deprecated
-    public T properties() {
-        return exchangeProperties();
-    }
-
-    /**
-     * An expression of the exchange properties
      */
     public T exchangeProperties() {
         return expression(ExpressionBuilder.exchangePropertiesExpression());
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
index 25a6f9f..90b9043 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
@@ -57,26 +57,6 @@ public final class ProcessorBuilder {
     }
 
     /**
-     * Creates a processor which sets the body of the OUT message to the value of the expression
-     *
-     * @deprecated use {@link #setBody(org.apache.camel.Expression)}
-     */
-    @Deprecated
-    public static Processor setOutBody(final Expression expression) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                Object newBody = expression.evaluate(exchange, Object.class);
-                exchange.getOut().setBody(newBody);
-            }
-
-            @Override
-            public String toString() {
-                return "setOutBody(" + expression + ")";
-            }
-        };
-    }
-
-    /**
      * Creates a processor which sets the body of the FAULT message to the value of the expression
      */
     public static Processor setFaultBody(final Expression expression) {
@@ -121,26 +101,6 @@ public final class ProcessorBuilder {
     }
 
     /**
-     * Sets the header on the OUT message
-     *
-     * @deprecated use {@link #setHeader(String, org.apache.camel.Expression)}
-     */
-    @Deprecated
-    public static Processor setOutHeader(final String name, final Expression expression) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                Object value = expression.evaluate(exchange, Object.class);
-                exchange.getOut().setHeader(name, value);
-            }
-
-            @Override
-            public String toString() {
-                return "setOutHeader(" + name + ", " + expression + ")";
-            }
-        };
-    }
-
-    /**
      * Sets the header on the FAULT message
      */
     public static Processor setFaultHeader(final String name, final Expression expression) {
@@ -241,25 +201,6 @@ public final class ProcessorBuilder {
     }
 
     /**
-     * Removes the header on the FAULT message (FAULT must be OUT)
-     * @deprecated will be removed in the near future. Instead use {@link #removeHeader(String)}
-     */
-    @Deprecated
-    public static Processor removeFaultHeader(final String name) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                exchange.getOut().setFault(true);
-                exchange.getOut().removeHeader(name);
-            }
-
-            @Override
-            public String toString() {
-                return "removeFaultHeader(" + name +  ")";
-            }
-        };
-    }
-
-    /**
      * Removes the property on the exchange
      */
     public static Processor removeProperty(final String name) {
diff --git a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index e4bd4b2..94f6ce9 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -447,7 +447,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
     @Override
     public void setErrorHandlerBuilder(ErrorHandlerBuilder errorHandlerBuilder) {
         super.setErrorHandlerBuilder(errorHandlerBuilder);
-        getRouteCollection().setErrorHandlerBuilder(getErrorHandlerBuilder());
+        getRouteCollection().setErrorHandlerFactory(getErrorHandlerBuilder());
     }
 
     // Implementation methods
@@ -457,8 +457,8 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
         if (initialized.compareAndSet(false, true)) {
             // Set the CamelContext ErrorHandler here
             ModelCamelContext camelContext = getContext();
-            if (camelContext.getErrorHandlerBuilder() != null) {
-                setErrorHandlerBuilder(camelContext.getErrorHandlerBuilder());
+            if (camelContext.getErrorHandlerFactory() instanceof ErrorHandlerBuilder) {
+                setErrorHandlerBuilder((ErrorHandlerBuilder) camelContext.getErrorHandlerFactory());
             }
             configure();
             // mark all route definitions as custom prepared because
@@ -588,16 +588,4 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
         // noop
     }
 
-    /**
-     * Adds a collection of routes to this context
-     *
-     * @param routes the routes
-     * @throws Exception if the routes could not be created for whatever reason
-     * @deprecated will be removed in Camel 3.0. Instead use {@link #includeRoutes(org.apache.camel.RoutesBuilder) includeRoutes} instead.
-     */
-    @Deprecated
-    protected void addRoutes(RoutesBuilder routes) throws Exception {
-        includeRoutes(routes);
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
index 4ce9243..c1f78ad 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/TransformerBuilder.java
@@ -18,6 +18,7 @@ package org.apache.camel.builder;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.transformer.CustomTransformerDefinition;
 import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
 import org.apache.camel.model.transformer.EndpointTransformerDefinition;
@@ -180,6 +181,6 @@ public class TransformerBuilder {
             transformer.setToType(to);
         }
         
-        camelContext.getTransformers().add(transformer);
+        camelContext.adapt(ModelCamelContext.class).getTransformers().add(transformer);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ValidatorBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ValidatorBuilder.java
index 7193c3d..499d492 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ValidatorBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ValidatorBuilder.java
@@ -19,6 +19,7 @@ package org.apache.camel.builder;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
+import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.model.validator.CustomValidatorDefinition;
 import org.apache.camel.model.validator.EndpointValidatorDefinition;
@@ -161,6 +162,6 @@ public class ValidatorBuilder {
         }
         
         validator.setType(type);
-        camelContext.getValidators().add(validator);
+        camelContext.adapt(ModelCamelContext.class).getValidators().add(validator);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java b/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java
index b6fe229..fb67ca3 100644
--- a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java
+++ b/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java
@@ -37,17 +37,6 @@ public interface CamelClusterView extends Service, CamelContextAware {
     String getNamespace();
 
     /**
-     * Provides the master member if elected.
-     *
-     * @return the master member.
-     * @deprecated use {@link #getLeader()}
-     */
-    @Deprecated
-    default Optional<CamelClusterMember> getMaster() {
-        return getLeader();
-    }
-
-    /**
      * Provides the leader member if elected.
      *
      * @return the leader member.
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
index 68f1344..b5546f6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
@@ -289,9 +289,12 @@ public abstract class AbstractCamelInvocationHandler implements InvocationHandle
         // re-create it (its a shared static instance)
         if (executorService == null || executorService.isTerminated() || executorService.isShutdown()) {
             // try to lookup a pool first based on id/profile
-            executorService = context.getExecutorServiceStrategy().lookup(CamelInvocationHandler.class, "CamelInvocationHandler", "CamelInvocationHandler");
+            executorService = context.getRegistry().lookupByNameAndType("CamelInvocationHandler", ExecutorService.class);
             if (executorService == null) {
-                executorService = context.getExecutorServiceStrategy().newDefaultThreadPool(CamelInvocationHandler.class, "CamelInvocationHandler");
+                executorService = context.getExecutorServiceManager().newThreadPool(CamelInvocationHandler.class, "CamelInvocationHandler", "CamelInvocationHandler");
+            }
+            if (executorService == null) {
+                executorService = context.getExecutorServiceManager().newDefaultThreadPool(CamelInvocationHandler.class, "CamelInvocationHandler");
             }
         }
         return executorService;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
index c12320d..f2fda69 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.bean;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.LRUCache;
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
 /**
  * The <a href="http://camel.apache.org/bean.html">Bean Component</a> is for invoking Java beans from Camel.
  */
-public class BeanComponent extends UriEndpointComponent {
+public class BeanComponent extends DefaultComponent {
 
     private static final Logger LOG = LoggerFactory.getLogger(BeanComponent.class);
     // use an internal soft cache for BeanInfo as they are costly to introspect
@@ -43,13 +43,8 @@ public class BeanComponent extends UriEndpointComponent {
     private Boolean cache;
 
     public BeanComponent() {
-        super(BeanEndpoint.class);
     }
     
-    public BeanComponent(Class<? extends Endpoint> endpointClass) {
-        super(endpointClass);
-    }
-
     // Implementation methods
     //-----------------------------------------------------------------------
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
index 4dc9521..3b6a1c3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
@@ -44,8 +44,6 @@ import org.apache.camel.Header;
 import org.apache.camel.Headers;
 import org.apache.camel.Message;
 import org.apache.camel.OutHeaders;
-import org.apache.camel.Properties;
-import org.apache.camel.Property;
 import org.apache.camel.PropertyInject;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.LanguageAnnotation;
@@ -964,14 +962,9 @@ public class BeanInfo {
             return ExpressionBuilder.attachmentObjectsExpression();
         } else if (annotation instanceof Attachments) {
             return ExpressionBuilder.attachmentsExpression();
-        } else if (annotation instanceof Property) {
-            Property propertyAnnotation = (Property)annotation;
-            return ExpressionBuilder.exchangePropertyExpression(propertyAnnotation.value());
         } else if (annotation instanceof ExchangeProperty) {
             ExchangeProperty propertyAnnotation = (ExchangeProperty)annotation;
             return ExpressionBuilder.exchangePropertyExpression(propertyAnnotation.value());
-        } else if (annotation instanceof Properties) {
-            return ExpressionBuilder.exchangePropertiesExpression();
         } else if (annotation instanceof ExchangeProperties) {
             return ExpressionBuilder.exchangePropertiesExpression();
         } else if (annotation instanceof Header) {
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java b/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
index 0b45b3f22..e524b48 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
@@ -33,11 +33,6 @@ public class CamelInvocationHandler extends AbstractCamelInvocationHandler imple
     private final MethodInfoCache methodInfoCache;
     private final boolean binding;
 
-    @Deprecated
-    public CamelInvocationHandler(Endpoint endpoint, Producer producer, MethodInfoCache methodInfoCache) {
-        this(endpoint, false, producer, methodInfoCache);
-    }
-
     public CamelInvocationHandler(Endpoint endpoint, boolean binding, Producer producer, MethodInfoCache methodInfoCache) {
         super(endpoint, producer);
         this.binding = binding;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java b/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
index 0cf61e6..5e761a03 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
@@ -37,16 +37,6 @@ public final class ProxyHelper {
 
     /**
      * Creates a Proxy which sends the exchange to the endpoint.
-     *
-     * @deprecated use the same method name with binding as parameter
-     */
-    @Deprecated
-    public static <T> T createProxyObject(Endpoint endpoint, Producer producer, ClassLoader classLoader, Class<T>[] interfaces, MethodInfoCache methodCache) {
-        return createProxyObject(endpoint, true, producer, classLoader, interfaces, methodCache);
-    }
-
-    /**
-     * Creates a Proxy which sends the exchange to the endpoint.
      */
     @SuppressWarnings("unchecked")
     public static <T> T createProxyObject(Endpoint endpoint, boolean binding, Producer producer, ClassLoader classLoader, Class<T>[] interfaces, MethodInfoCache methodCache) {
@@ -55,16 +45,6 @@ public final class ProxyHelper {
 
     /**
      * Creates a Proxy which sends the exchange to the endpoint.
-     *
-     * @deprecated use the same method name with binding as parameter
-     */
-    @Deprecated
-    public static <T> T createProxy(Endpoint endpoint, ClassLoader cl, Class<T> interfaceClass, MethodInfoCache methodCache) throws Exception {
-        return createProxy(endpoint, true, cl, toArray(interfaceClass), methodCache);
-    }
-
-    /**
-     * Creates a Proxy which sends the exchange to the endpoint.
      */
     public static <T> T createProxy(Endpoint endpoint, boolean binding, ClassLoader cl, Class<T> interfaceClass, MethodInfoCache methodCache) throws Exception {
         return createProxy(endpoint, binding, cl, toArray(interfaceClass), methodCache);
@@ -72,16 +52,6 @@ public final class ProxyHelper {
 
     /**
      * Creates a Proxy which sends the exchange to the endpoint.
-     *
-     * @deprecated use the same method name with binding as parameter
-     */
-    @Deprecated
-    public static <T> T createProxy(Endpoint endpoint, ClassLoader cl, Class<T>[] interfaceClasses, MethodInfoCache methodCache) throws Exception {
-        return createProxy(endpoint, true, cl, interfaceClasses, methodCache);
-    }
-
-    /**
-     * Creates a Proxy which sends the exchange to the endpoint.
      */
     public static <T> T createProxy(Endpoint endpoint, boolean binding, ClassLoader cl, Class<T>[] interfaceClasses, MethodInfoCache methodCache) throws Exception {
         Producer producer = DeferServiceFactory.createProducer(endpoint);
@@ -98,16 +68,6 @@ public final class ProxyHelper {
 
     /**
      * Creates a Proxy which sends the exchange to the endpoint.
-     *
-     * @deprecated use the same method name with binding as parameter
-     */
-    @Deprecated
-    public static <T> T createProxy(Endpoint endpoint, ClassLoader cl, Class<T>... interfaceClasses) throws Exception {
-        return createProxy(endpoint, true, cl, interfaceClasses);
-    }
-
-    /**
-     * Creates a Proxy which sends the exchange to the endpoint.
      */
     public static <T> T createProxy(Endpoint endpoint, boolean binding, ClassLoader cl, Class<T>... interfaceClasses) throws Exception {
         return createProxy(endpoint, binding, cl, interfaceClasses, createMethodInfoCache(endpoint));
@@ -122,16 +82,6 @@ public final class ProxyHelper {
 
     /**
      * Creates a Proxy which sends the exchange to the endpoint.
-     *
-     * @deprecated use the same method name with binding as parameter
-     */
-    @Deprecated
-    public static <T> T createProxy(Endpoint endpoint, Class<T>... interfaceClasses) throws Exception {
-        return createProxy(endpoint, true, interfaceClasses);
-    }
-
-    /**
-     * Creates a Proxy which sends the exchange to the endpoint.
      */
     public static <T> T createProxy(Endpoint endpoint, boolean binding, Class<T>... interfaceClasses) throws Exception {
         return createProxy(endpoint, binding, getClassLoader(interfaceClasses), interfaceClasses);
@@ -146,16 +96,6 @@ public final class ProxyHelper {
 
     /**
      * Creates a Proxy which sends the exchange to the endpoint.
-     *
-     * @deprecated use the same method name with binding as parameter
-     */
-    @Deprecated
-    public static <T> T createProxy(Endpoint endpoint, Producer producer, Class<T>... interfaceClasses) throws Exception {
-        return createProxyObject(endpoint, true, producer, getClassLoader(interfaceClasses), interfaceClasses, createMethodInfoCache(endpoint));
-    }
-
-    /**
-     * Creates a Proxy which sends the exchange to the endpoint.
      */
     public static <T> T createProxy(Endpoint endpoint, boolean binding, Producer producer, Class<T>... interfaceClasses) throws Exception {
         return createProxyObject(endpoint, binding, producer, getClassLoader(interfaceClasses), interfaceClasses, createMethodInfoCache(endpoint));
diff --git a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
index 64c6f03..91db6bc 100644
--- a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
@@ -35,7 +35,6 @@ import org.apache.camel.util.IntrospectionSupport;
 public class ClassComponent extends BeanComponent {
 
     public ClassComponent() {
-        super(ClassEndpoint.class);
     }
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
index e3a6716..767ebe6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.browse;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/browse.html">Browse Component</a> provides a simple
@@ -27,10 +27,9 @@ import org.apache.camel.impl.UriEndpointComponent;
  *
  * @version 
  */
-public class BrowseComponent extends UriEndpointComponent {
+public class BrowseComponent extends DefaultComponent {
 
     public BrowseComponent() {
-        super(BrowseEndpoint.class);
     }
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
index 25bac71..2893bdb 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
@@ -20,17 +20,16 @@ import java.util.Map;
 import java.util.concurrent.ExecutorService;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/controlbus.html">Control Bus component</a> allows sending messages to a control-bus endpoint to control the lifecycle of routes.
  */
-public class ControlBusComponent extends UriEndpointComponent {
+public class ControlBusComponent extends DefaultComponent {
 
     private ExecutorService executorService;
 
     public ControlBusComponent() {
-        super(ControlBusEndpoint.class);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
index 90333fb..f10b094 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
@@ -157,19 +157,19 @@ public class ControlBusProducer extends DefaultAsyncProducer {
             try {
                 if ("start".equals(action)) {
                     log.debug("Starting route: {}", id);
-                    getEndpoint().getCamelContext().startRoute(id);
+                    getEndpoint().getCamelContext().getRouteController().startRoute(id);
                 } else if ("stop".equals(action)) {
                     log.debug("Stopping route: {}", id);
-                    getEndpoint().getCamelContext().stopRoute(id);
+                    getEndpoint().getCamelContext().getRouteController().stopRoute(id);
                 } else if ("suspend".equals(action)) {
                     log.debug("Suspending route: {}", id);
-                    getEndpoint().getCamelContext().suspendRoute(id);
+                    getEndpoint().getCamelContext().getRouteController().suspendRoute(id);
                 } else if ("resume".equals(action)) {
                     log.debug("Resuming route: {}", id);
-                    getEndpoint().getCamelContext().resumeRoute(id);
+                    getEndpoint().getCamelContext().getRouteController().resumeRoute(id);
                 } else if ("restart".equals(action)) {
                     log.debug("Restarting route: {}", id);
-                    getEndpoint().getCamelContext().stopRoute(id);
+                    getEndpoint().getCamelContext().getRouteController().stopRoute(id);
                     int delay = getEndpoint().getRestartDelay();
                     if (delay > 0) {
                         try {
@@ -179,10 +179,10 @@ public class ControlBusProducer extends DefaultAsyncProducer {
                             // ignore
                         }
                     }
-                    getEndpoint().getCamelContext().startRoute(id);
+                    getEndpoint().getCamelContext().getRouteController().startRoute(id);
                 } else if ("status".equals(action)) {
                     log.debug("Route status: {}", id);
-                    ServiceStatus status = getEndpoint().getCamelContext().getRouteStatus(id);
+                    ServiceStatus status = getEndpoint().getCamelContext().getRouteController().getRouteStatus(id);
                     if (status != null) {
                         result = status.name();
                     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
index 01a9961..ace1b2f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.dataformat;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.StringHelper;
@@ -29,10 +29,9 @@ import org.apache.camel.util.StringHelper;
  *
  * @version
  */
-public class DataFormatComponent extends UriEndpointComponent {
+public class DataFormatComponent extends DefaultComponent {
 
     public DataFormatComponent() {
-        super(DataFormatEndpoint.class);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
index 069c21a..c7b4d4c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.dataset;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.util.CamelContextHelper;
 
 /**
@@ -27,10 +27,9 @@ import org.apache.camel.util.CamelContextHelper;
  *
  * @version 
  */
-public class DataSetComponent extends UriEndpointComponent {
+public class DataSetComponent extends DefaultComponent {
 
     public DataSetComponent() {
-        super(DataSetEndpoint.class);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
index a781d4f..ff40053 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
@@ -64,13 +64,6 @@ public class DataSetEndpoint extends MockEndpoint implements Service {
     @UriParam(enums = "strict,lenient,off", defaultValue = "lenient")
     private String dataSetIndex = "lenient";
 
-    @Deprecated
-    public DataSetEndpoint() {
-        this.log = LoggerFactory.getLogger(DataSetEndpoint.class);
-        // optimize as we dont need to copy the exchange
-        setCopyOnExchange(false);
-    }
-
     public DataSetEndpoint(String endpointUri, Component component, DataSet dataSet) {
         super(endpointUri, component);
         this.dataSet = dataSet;
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
index 5b385b1..578dde4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
@@ -20,7 +20,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ServiceHelper;
 
@@ -29,7 +29,7 @@ import org.apache.camel.util.ServiceHelper;
  *
  * @version
  */
-public class DirectComponent extends UriEndpointComponent {
+public class DirectComponent extends DefaultComponent {
 
     // must keep a map of consumers on the component to ensure endpoints can lookup old consumers
     // later in case the DirectEndpoint was re-created due the old was evicted from the endpoints LRUCache
@@ -41,7 +41,6 @@ public class DirectComponent extends UriEndpointComponent {
     private long timeout = 30000L;
 
     public DirectComponent() {
-        super(DirectEndpoint.class);
     }
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
index cacaaa1..2e894ad 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
@@ -24,14 +24,14 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.Metadata;
 
 /**
  * The <a href="http://camel.apache.org/direct-vm.html">Direct VM Component</a> manages {@link DirectVmEndpoint} and holds the list of named direct-vm endpoints.
  */
-public class DirectVmComponent extends UriEndpointComponent {
+public class DirectVmComponent extends DefaultComponent {
 
     private static final AtomicInteger START_COUNTER = new AtomicInteger();
 
@@ -49,7 +49,6 @@ public class DirectVmComponent extends UriEndpointComponent {
     private boolean propagateProperties = true;
 
     public DirectVmComponent() {
-        super(DirectVmEndpoint.class);
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
index 98eb984..f92273e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
@@ -52,7 +52,7 @@ public class DirectVmProducer extends DefaultAsyncProducer {
         final HeaderFilterStrategy headerFilterStrategy = endpoint.getHeaderFilterStrategy();
 
         // Only clone the Exchange if we actually need to filter out properties or headers.
-        final Exchange submitted = (!endpoint.isPropagateProperties() || headerFilterStrategy != null) ? exchange.copy(true) : exchange;
+        final Exchange submitted = (!endpoint.isPropagateProperties() || headerFilterStrategy != null) ? exchange.copy() : exchange;
 
         // Clear properties in the copy if we are not propagating them.
         if (!endpoint.isPropagateProperties()) {
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtensionHelper.java b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtensionHelper.java
deleted file mode 100644
index 2bb93ae..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtensionHelper.java
+++ /dev/null
@@ -1,42 +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.component.extension;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.util.ObjectHelper;
-
-public final class ComponentExtensionHelper {
-    private ComponentExtensionHelper() {
-    }
-
-    /**
-     * @deprecated use {@link ObjectHelper#trySetCamelContext(Object, CamelContext)}
-     */
-    @Deprecated
-    public static <T> T trySetCamelContext(T object, CamelContext camelContext) {
-        return ObjectHelper.trySetCamelContext(object, camelContext);
-    }
-
-    /**
-     * @deprecated use {@link ObjectHelper#trySetComponent(Object, Component)}
-     */
-    @Deprecated
-    public static <T> T trySetComponent(T object, Component component) {
-        return ObjectHelper.trySetComponent(object, component);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
index f9acf0e..d2f9287 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
@@ -22,9 +22,15 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.camel.Component;
-import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper;
+import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.ErrorAttribute;
+import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.ErrorCode;
+import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.ExceptionErrorAttribute;
+import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.GroupErrorAttribute;
+import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.HttpErrorAttribute;
+import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.StandardErrorCode;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
 import org.apache.camel.util.ObjectHelper;
+
 /**
  * Defines the interface used for validating component/endpoint parameters. The central method of this
  * interface is {@link #verify(ComponentVerifierExtension.Scope, Map)} which takes a scope and a set of parameters which should be verified.
@@ -49,7 +55,7 @@ public interface ComponentVerifierExtension extends ComponentExtension {
      * @param parameters the parameters to verify which are interpreted individually by each component verifier
      * @return the verification result
      */
-    ComponentVerifierExtension.Result verify(ComponentVerifierExtension.Scope scope, Map<String, Object> parameters);
+    Result verify(Scope scope, Map<String, Object> parameters);
 
     /**
      * The result of a verification
@@ -75,12 +81,12 @@ public interface ComponentVerifierExtension extends ComponentExtension {
         }
 
         /**
-         * Scope of the verification. This is the scope given to the call to {@link #verify(ComponentVerifierExtension.Scope, Map)}  and
+         * Scope of the verification. This is the scope given to the call to {@link #verify(Scope, Map)}  and
          * can be used for correlation.
          *
          * @return the scope against which the parameters have been validated.
          */
-        ComponentVerifierExtension.Scope getScope();
+        Scope getScope();
 
         /**
          * Result of the validation as status. This should be the first datum to check after a verification
@@ -88,7 +94,7 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          *
          * @return the status
          */
-        ComponentVerifierExtension.Result.Status getStatus();
+        Status getStatus();
 
         /**
          * Collection of errors happened for the verification. This list is empty (but non null) if the verification
@@ -96,7 +102,7 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          *
          * @return a list of errors. Can be empty when verification was successful
          */
-        List<ComponentVerifierExtension.VerificationError> getErrors();
+        List<VerificationError> getErrors();
     }
 
     /**
@@ -123,8 +129,8 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          * @param scope the scope as string, which can be in any case
          * @return the scope enum represented by this string
          */
-        public static ComponentVerifierExtension.Scope fromString(String scope) {
-            for (ComponentVerifierExtension.Scope value : VALUES) {
+        public static Scope fromString(String scope) {
+            for (Scope value : VALUES) {
                 if (ObjectHelper.equal(scope, value.name(), true)) {
                     return value;
                 }
@@ -172,7 +178,7 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          *
          * @return a number of key/value pair with additional information related to the verification.
          */
-        Map<ComponentVerifierExtension.VerificationError.Attribute, Object> getDetails();
+        Map<Attribute, Object> getDetails();
 
         /**
          * Get a single detail for a given attribute
@@ -180,8 +186,8 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          * @param attribute the attribute to lookup
          * @return the detail value or null if no such attribute exists
          */
-        default Object getDetail(ComponentVerifierExtension.VerificationError.Attribute attribute) {
-            Map<ComponentVerifierExtension.VerificationError.Attribute, Object> details = getDetails();
+        default Object getDetail(Attribute attribute) {
+            Map<Attribute, Object> details = getDetails();
             if (details != null) {
                 return details.get(attribute);
             }
@@ -206,7 +212,7 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          * @return error code
          */
         static Code asCode(String code) {
-            return new ComponentVerifierExtensionHelper.ErrorCode(code);
+            return new ErrorCode(code);
         }
 
         /**
@@ -218,7 +224,7 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          * @return generated attribute
          */
         static Attribute asAttribute(String attribute) {
-            return new ComponentVerifierExtensionHelper.ErrorAttribute(attribute);
+            return new ErrorAttribute(attribute);
         }
 
         /**
@@ -253,56 +259,56 @@ public interface ComponentVerifierExtension extends ComponentExtension {
             /**
              * Authentication failed
              */
-            StandardCode AUTHENTICATION = new ComponentVerifierExtensionHelper.StandardErrorCode("AUTHENTICATION");
+            StandardCode AUTHENTICATION = new StandardErrorCode("AUTHENTICATION");
             /**
              * An exception occurred
              */
-            StandardCode EXCEPTION = new ComponentVerifierExtensionHelper.StandardErrorCode("EXCEPTION");
+            StandardCode EXCEPTION = new StandardErrorCode("EXCEPTION");
             /**
              * Internal error while performing the verification
              */
-            StandardCode INTERNAL = new ComponentVerifierExtensionHelper.StandardErrorCode("INTERNAL");
+            StandardCode INTERNAL = new StandardErrorCode("INTERNAL");
             /**
              * A mandatory parameter is missing
              */
-            StandardCode MISSING_PARAMETER = new ComponentVerifierExtensionHelper.StandardErrorCode("MISSING_PARAMETER");
+            StandardCode MISSING_PARAMETER = new StandardErrorCode("MISSING_PARAMETER");
             /**
              * A given parameter is not known to the component
              */
-            StandardCode UNKNOWN_PARAMETER = new ComponentVerifierExtensionHelper.StandardErrorCode("UNKNOWN_PARAMETER");
+            StandardCode UNKNOWN_PARAMETER = new StandardErrorCode("UNKNOWN_PARAMETER");
             /**
              * A given parameter is illegal
              */
-            StandardCode ILLEGAL_PARAMETER = new ComponentVerifierExtensionHelper.StandardErrorCode("ILLEGAL_PARAMETER");
+            StandardCode ILLEGAL_PARAMETER = new StandardErrorCode("ILLEGAL_PARAMETER");
             /**
-             * A combination of parameters is illegal. See {@link ComponentVerifierExtension.VerificationError#getParameterKeys()} for the set
+             * A combination of parameters is illegal. See {@link VerificationError#getParameterKeys()} for the set
              * of affected parameters
              */
-            StandardCode ILLEGAL_PARAMETER_GROUP_COMBINATION = new ComponentVerifierExtensionHelper.StandardErrorCode("ILLEGAL_PARAMETER_GROUP_COMBINATION");
+            StandardCode ILLEGAL_PARAMETER_GROUP_COMBINATION = new StandardErrorCode("ILLEGAL_PARAMETER_GROUP_COMBINATION");
             /**
              * A parameter <em>value</em> is not valid
              */
-            StandardCode ILLEGAL_PARAMETER_VALUE = new ComponentVerifierExtensionHelper.StandardErrorCode("ILLEGAL_PARAMETER_VALUE");
+            StandardCode ILLEGAL_PARAMETER_VALUE = new StandardErrorCode("ILLEGAL_PARAMETER_VALUE");
             /**
              * A group of parameters is not complete in order to be valid
              */
-            StandardCode INCOMPLETE_PARAMETER_GROUP = new ComponentVerifierExtensionHelper.StandardErrorCode("INCOMPLETE_PARAMETER_GROUP");
+            StandardCode INCOMPLETE_PARAMETER_GROUP = new StandardErrorCode("INCOMPLETE_PARAMETER_GROUP");
             /**
              * The verification is not supported
              */
-            StandardCode UNSUPPORTED = new ComponentVerifierExtensionHelper.StandardErrorCode("UNSUPPORTED");
+            StandardCode UNSUPPORTED = new StandardErrorCode("UNSUPPORTED");
             /**
-             * The requested {@link ComponentVerifierExtension.Scope} is not supported
+             * The requested {@link Scope} is not supported
              */
-            StandardCode UNSUPPORTED_SCOPE = new ComponentVerifierExtensionHelper.StandardErrorCode("UNSUPPORTED_SCOPE");
+            StandardCode UNSUPPORTED_SCOPE = new StandardErrorCode("UNSUPPORTED_SCOPE");
             /**
              * The requested {@link Component} is not supported
              */
-            StandardCode UNSUPPORTED_COMPONENT = new ComponentVerifierExtensionHelper.StandardErrorCode("UNSUPPORTED_COMPONENT");
+            StandardCode UNSUPPORTED_COMPONENT = new StandardErrorCode("UNSUPPORTED_COMPONENT");
             /**
-             * Generic error which is explained in more details with {@link ComponentVerifierExtension.VerificationError#getDetails()}
+             * Generic error which is explained in more details with {@link VerificationError#getDetails()}
              */
-            StandardCode GENERIC = new ComponentVerifierExtensionHelper.StandardErrorCode("GENERIC");
+            StandardCode GENERIC = new StandardErrorCode("GENERIC");
         }
 
         /**
@@ -342,11 +348,11 @@ public interface ComponentVerifierExtension extends ComponentExtension {
              * The exception object that has been thrown. Note that this can be a complex
              * object and can cause large content when e.g. serialized as JSON
              */
-            ExceptionAttribute EXCEPTION_INSTANCE = new ComponentVerifierExtensionHelper.ExceptionErrorAttribute("EXCEPTION_INSTANCE");
+            ExceptionAttribute EXCEPTION_INSTANCE = new ExceptionErrorAttribute("EXCEPTION_INSTANCE");
             /**
              * The exception class
              */
-            ExceptionAttribute EXCEPTION_CLASS = new ComponentVerifierExtensionHelper.ExceptionErrorAttribute("EXCEPTION_CLASS");
+            ExceptionAttribute EXCEPTION_CLASS = new ExceptionErrorAttribute("EXCEPTION_CLASS");
         }
 
         /**
@@ -356,16 +362,16 @@ public interface ComponentVerifierExtension extends ComponentExtension {
             /**
              * The erroneous HTTP code that occurred
              */
-            HttpAttribute HTTP_CODE = new ComponentVerifierExtensionHelper.HttpErrorAttribute("HTTP_CODE");
+            HttpAttribute HTTP_CODE = new HttpErrorAttribute("HTTP_CODE");
             /**
              * HTTP response's body
              */
-            HttpAttribute HTTP_TEXT = new ComponentVerifierExtensionHelper.HttpErrorAttribute("HTTP_TEXT");
+            HttpAttribute HTTP_TEXT = new HttpErrorAttribute("HTTP_TEXT");
             /**
              * If given as details, specifies that a redirect happened and the
              * content of this detail is the redirect URL
              */
-            HttpAttribute HTTP_REDIRECT = new ComponentVerifierExtensionHelper.HttpErrorAttribute("HTTP_REDIRECT");
+            HttpAttribute HTTP_REDIRECT = new HttpErrorAttribute("HTTP_REDIRECT");
         }
 
         /**
@@ -375,11 +381,11 @@ public interface ComponentVerifierExtension extends ComponentExtension {
             /**
              * Group name
              */
-            GroupAttribute GROUP_NAME = new ComponentVerifierExtensionHelper.GroupErrorAttribute("GROUP_NAME");
+            GroupAttribute GROUP_NAME = new GroupErrorAttribute("GROUP_NAME");
             /**
              * Options for the group
              */
-            GroupAttribute GROUP_OPTIONS = new ComponentVerifierExtensionHelper.GroupErrorAttribute("GROUP_OPTIONS");
+            GroupAttribute GROUP_OPTIONS = new GroupErrorAttribute("GROUP_OPTIONS");
         }
     }
 }
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
index b123ab2..3de4638 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
@@ -25,7 +25,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Component;
 import org.apache.camel.ComponentAware;
-import org.apache.camel.ComponentVerifier;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.runtimecatalog.EndpointValidationResult;
@@ -36,7 +35,7 @@ import org.apache.camel.util.IntrospectionSupport;
 
 import static org.apache.camel.util.StreamUtils.stream;
 
-public class DefaultComponentVerifierExtension implements ComponentVerifierExtension, ComponentVerifier, CamelContextAware, ComponentAware {
+public class DefaultComponentVerifierExtension implements ComponentVerifierExtension, CamelContextAware, ComponentAware {
     private final String defaultScheme;
     private Component component;
     private CamelContext camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java b/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
index baa86c3..1bd1b6a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
@@ -17,21 +17,16 @@
 package org.apache.camel.component.file;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ComponentConfiguration;
-import org.apache.camel.spi.EndpointCompleter;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 
 /**
  *  * The <a href="http://camel.apache.org/file.html">File Component</a> provides access to file systems.
  */
-public class FileComponent extends GenericFileComponent<File> implements EndpointCompleter {
+public class FileComponent extends GenericFileComponent<File> {
     /**
      * GenericFile property on Camel Exchanges.
      */
@@ -43,12 +38,10 @@ public class FileComponent extends GenericFileComponent<File> implements Endpoin
     public static final String DEFAULT_LOCK_FILE_POSTFIX = ".camelLock";
 
     public FileComponent() {
-        setEndpointClass(FileEndpoint.class);
     }
 
     public FileComponent(CamelContext context) {
         super(context);
-        setEndpointClass(FileEndpoint.class);
     }
 
     protected GenericFileEndpoint<File> buildFileEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
@@ -75,52 +68,4 @@ public class FileComponent extends GenericFileComponent<File> implements Endpoin
         // noop
     }
 
-    public List<String> completeEndpointPath(ComponentConfiguration configuration, String completionText) {
-        boolean empty = ObjectHelper.isEmpty(completionText);
-        String pattern = completionText;
-        File file = new File(completionText);
-        String prefix = completionText;
-        if (file.exists()) {
-            pattern = "";
-        } else {
-            String startPath = ".";
-            if (!empty) {
-                int idx = completionText.lastIndexOf('/');
-                if (idx >= 0) {
-                    startPath = completionText.substring(0, idx);
-                    if (startPath.length() == 0) {
-                        startPath = "/";
-                    }
-                    pattern = completionText.substring(idx + 1);
-                }
-            }
-            file = new File(startPath);
-            prefix = startPath;
-        }
-        if (prefix.length() > 0 && !prefix.endsWith("/")) {
-            prefix += "/";
-        }
-        if (prefix.equals("./")) {
-            prefix = "";
-        }
-        File[] list = file.listFiles();
-        List<String> answer = new ArrayList<>();
-        for (File aFile : list) {
-            String name = aFile.getName();
-            if (pattern.length() == 0 || name.contains(pattern)) {
-                if (isValidEndpointCompletion(configuration, completionText, aFile)) {
-                    answer.add(prefix + name);
-                }
-            }
-        }
-        return answer;
-    }
-
-    /**
-     * Returns true if this is a valid file for completion. By default we should ignore files that start with a "."
-     */
-    protected boolean isValidEndpointCompletion(ComponentConfiguration configuration, String completionText,
-                                           File file) {
-        return !file.getName().startsWith(".");
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java b/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java
index 86cdd97..65aebda 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java
@@ -180,19 +180,6 @@ public class FileConsumer extends GenericFileConsumer<File> {
      *
      * @param endpointPath the starting directory the endpoint was configured with
      * @param file the source file
-     * @return wrapped as a GenericFile
-     * @deprecated use {@link #asGenericFile(String, File, String, boolean)}
-     */
-    @Deprecated
-    public static GenericFile<File> asGenericFile(String endpointPath, File file, String charset) {
-        return asGenericFile(endpointPath, file, charset, false);
-    }
-
-    /**
-     * Creates a new GenericFile<File> based on the given file.
-     *
-     * @param endpointPath the starting directory the endpoint was configured with
-     * @param file the source file
      * @param probeContentType whether to probe the content type of the file or not
      * @return wrapped as a GenericFile
      */
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
index 7ca7dd7..666ae02 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
@@ -130,7 +130,7 @@ public class GenericFile<T> implements WrappedFile<T>  {
         Map<String, Object> headers;
 
         exchange.setProperty(FileComponent.FILE_EXCHANGE_FILE, this);
-        GenericFileMessage<T> msg = new GenericFileMessage<>(this);
+        GenericFileMessage<T> msg = new GenericFileMessage<>(exchange, this);
         if (exchange.hasOut()) {
             headers = exchange.getOut().hasHeaders() ? exchange.getOut().getHeaders() : null;
             exchange.setOut(msg);
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java
index 4fd9849..9e7ce96 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java
@@ -22,7 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -35,16 +35,15 @@ import static org.apache.camel.util.ObjectHelper.isNotEmpty;
 /**
  * Base class file component. To be extended.
  */
-public abstract class GenericFileComponent<T> extends UriEndpointComponent {
+public abstract class GenericFileComponent<T> extends DefaultComponent {
 
     protected Logger log = LoggerFactory.getLogger(getClass());
 
     public GenericFileComponent() {
-        super(GenericFileEndpoint.class);
     }
 
     public GenericFileComponent(CamelContext context) {
-        super(context, GenericFileEndpoint.class);
+        super(context);
     }
 
     protected GenericFileEndpoint<T> createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
index 1cc7d0d..ff01940 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
@@ -681,20 +681,6 @@ public abstract class GenericFileConsumer<T> extends ScheduledBatchPollingConsum
      */
     protected abstract boolean isMatched(GenericFile<T> file, String doneFileName, List<T> files);
 
-    /**
-     * Is the given file already in progress.
-     *
-     * @param file the file
-     * @return <tt>true</tt> if the file is already in progress
-     * @deprecated no longer in use, use {@link org.apache.camel.component.file.GenericFileEndpoint#getInProgressRepository()} instead.
-     */
-    @Deprecated
-    protected boolean isInProgress(GenericFile<T> file) {
-        String key = file.getAbsoluteFilePath();
-        // must use add, to have operation as atomic
-        return !endpoint.getInProgressRepository().add(key);
-    }
-
     protected String evaluateFileExpression() {
         if (fileExpressionResult == null && endpoint.getFileName() != null) {
             // create a dummy exchange as Exchange is needed for expression evaluation
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
index dbdbfd3..bb71009 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.file;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.impl.DefaultMessage;
 
@@ -26,22 +27,12 @@ import org.apache.camel.impl.DefaultMessage;
 public class GenericFileMessage<T> extends DefaultMessage {
     private GenericFile<T> file;
 
-    /**
-     * @deprecated use {@link #GenericFileMessage(CamelContext)}
-     */
-    @Deprecated
-    public GenericFileMessage() {
-    }
-
     public GenericFileMessage(CamelContext camelContext) {
         super(camelContext);
     }
 
-    /**
-     * @deprecated use {@link #GenericFileMessage(CamelContext, GenericFile)}
-     */
-    @Deprecated
-    public GenericFileMessage(GenericFile<T> file) {
+    public GenericFileMessage(Exchange exchange, GenericFile<T> file) {
+        super(exchange);
         this.file = file;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
index a9124fe..ee7806c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
@@ -20,7 +20,7 @@ import java.net.URLDecoder;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Language;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
@@ -32,12 +32,11 @@ import org.apache.camel.util.StringHelper;
  *
  * @version 
  */
-public class LanguageComponent extends UriEndpointComponent {
+public class LanguageComponent extends DefaultComponent {
 
     public static final String RESOURCE = "resource:";
 
     public LanguageComponent() {
-        super(LanguageEndpoint.class);
     }
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 5655c09..fac80e6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -21,7 +21,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.processor.DefaultExchangeFormatter;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.Metadata;
@@ -35,14 +35,13 @@ import org.slf4j.LoggerFactory;
  *
  * @version 
  */
-public class LogComponent extends UriEndpointComponent {
+public class LogComponent extends DefaultComponent {
     private static final Logger LOG = LoggerFactory.getLogger(LogComponent.class);
 
     @Metadata(label = "advanced")
     private ExchangeFormatter exchangeFormatter;
 
     public LogComponent() {
-        super(LogEndpoint.class);
     }
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
index 7f42a89..27ed8d5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
@@ -18,9 +18,10 @@ package org.apache.camel.component.mock;
 
 import java.util.Map;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.processor.ThroughputLogger;
 import org.apache.camel.util.CamelLogger;
 
@@ -29,10 +30,13 @@ import org.apache.camel.util.CamelLogger;
  *
  * @version 
  */
-public class MockComponent extends UriEndpointComponent {
+public class MockComponent extends DefaultComponent {
 
     public MockComponent() {
-        super(MockEndpoint.class);
+    }
+
+    public MockComponent(CamelContext context) {
+        super(context);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index 6bb30e4..9c0663e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -136,21 +136,14 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
     @UriParam(label = "producer,advanced", defaultValue = "true")
     private boolean copyOnExchange = true;
 
-    public MockEndpoint(String endpointUri, Component component) {
-        super(endpointUri, component);
-        init();
+    public MockEndpoint() {
     }
 
-    @Deprecated
-    public MockEndpoint(String endpointUri) {
-        super(endpointUri);
+    public MockEndpoint(String endpointUri, Component component) {
+        super(endpointUri, component);
         init();
     }
 
-    public MockEndpoint() {
-        this(null);
-    }
-
     /**
      * A helper method to resolve the mock endpoint of the given URI on the given context
      *
@@ -1142,14 +1135,6 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
     }
 
     /**
-     * @deprecated use {@link #setResultMinimumWaitTime(long)}
-     */
-    @Deprecated
-    public void setMinimumResultWaitTime(long resultMinimumWaitTime) {
-        setResultMinimumWaitTime(resultMinimumWaitTime);
-    }
-
-    /**
      * Specifies the expected number of message exchanges that should be
      * received by this endpoint.
      * <p/>
diff --git a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index 005d662..690df1c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -28,7 +28,7 @@ import java.util.Properties;
 import java.util.stream.Collectors;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.FilePathResolver;
 import org.apache.camel.util.LRUCacheFactory;
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
 /**
  * The <a href="http://camel.apache.org/properties">Properties Component</a> allows you to use property placeholders when defining Endpoint URIs
  */
-public class PropertiesComponent extends UriEndpointComponent {
+public class PropertiesComponent extends DefaultComponent {
 
     /**
      * The default prefix token.
@@ -50,20 +50,6 @@ public class PropertiesComponent extends UriEndpointComponent {
      * The default suffix token.
      */
     public static final String DEFAULT_SUFFIX_TOKEN = "}}";
-    
-    /**
-     * The default prefix token.
-     * @deprecated Use {@link #DEFAULT_PREFIX_TOKEN} instead.
-     */
-    @Deprecated
-    public static final String PREFIX_TOKEN = DEFAULT_PREFIX_TOKEN;
-    
-    /**
-     * The default suffix token.
-     * @deprecated Use {@link #DEFAULT_SUFFIX_TOKEN} instead.
-     */
-    @Deprecated
-    public static final String SUFFIX_TOKEN = DEFAULT_SUFFIX_TOKEN;
 
     /**
      *  Never check system properties.
@@ -124,7 +110,7 @@ public class PropertiesComponent extends UriEndpointComponent {
     private int systemPropertiesMode = SYSTEM_PROPERTIES_MODE_OVERRIDE;
 
     public PropertiesComponent() {
-        super(PropertiesEndpoint.class);
+        super();
         // include out of the box functions
         addFunction(new EnvPropertiesFunction());
         addFunction(new SysPropertiesFunction());
diff --git a/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java b/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
index 2f6f6c4..dffa4f6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
@@ -19,17 +19,16 @@ package org.apache.camel.component.ref;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/ref.html">Ref Component</a> is for lookup of existing endpoints bound in the {@link org.apache.camel.spi.Registry}.
  * <p/>
  * This component uses the <tt>ref:</tt> notation instead of the mostly common <tt>uri:</tt> notation. 
  */
-public class RefComponent extends UriEndpointComponent {
+public class RefComponent extends DefaultComponent {
 
     public RefComponent() {
-        super(RefEndpoint.class);
     }
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
index a3646fc..e3bcbb1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
@@ -19,15 +19,14 @@ package org.apache.camel.component.rest;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 
 /**
  * Rest API component.
  */
-public class RestApiComponent extends UriEndpointComponent {
+public class RestApiComponent extends DefaultComponent {
 
     public RestApiComponent() {
-        super(RestApiEndpoint.class);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
index 24127c7..d2cb33f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
@@ -24,9 +24,7 @@ import java.util.function.Consumer;
 import java.util.function.Supplier;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ComponentVerifier;
 import org.apache.camel.Endpoint;
-import org.apache.camel.VerifiableComponent;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.model.rest.RestConstants;
@@ -42,7 +40,7 @@ import org.apache.camel.util.URISupport;
  * Rest component.
  */
 @Metadata(label = "verifiers", enums = "parameters,connectivity")
-public class RestComponent extends DefaultComponent implements VerifiableComponent {
+public class RestComponent extends DefaultComponent {
 
     @Metadata(label = "common")
     private String componentName;
@@ -240,8 +238,7 @@ public class RestComponent extends DefaultComponent implements VerifiableCompone
         }
     }
 
-    @Override
-    public ComponentVerifier getVerifier() {
+    public ComponentVerifierExtension getVerifier() {
         return (scope, parameters) -> getExtension(ComponentVerifierExtension.class).orElseThrow(UnsupportedOperationException::new).verify(scope, parameters);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
index 7a7fe76..280e83e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
@@ -21,7 +21,6 @@ import java.util.Map;
 import java.util.Optional;
 
 import org.apache.camel.Component;
-import org.apache.camel.ComponentVerifier;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.CatalogVerifierCustomizer;
 import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
@@ -34,7 +33,7 @@ import org.apache.camel.spi.RestProducerFactory;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.function.Suppliers;
 
-public class RestComponentVerifierExtension extends DefaultComponentVerifierExtension implements ComponentVerifier {
+public class RestComponentVerifierExtension extends DefaultComponentVerifierExtension {
     private static final CatalogVerifierCustomizer CUSTOMIZER = new CatalogVerifierCustomizer().excludeUnknown();
 
     RestComponentVerifierExtension() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
index e00bbea..2c6708f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
@@ -23,10 +23,10 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 
-public class SchedulerComponent extends UriEndpointComponent {
+public class SchedulerComponent extends DefaultComponent {
 
     private final Map<String, ScheduledExecutorService> executors = new HashMap<>();
     private final Map<String, AtomicInteger> refCounts = new HashMap<>();
@@ -35,7 +35,6 @@ public class SchedulerComponent extends UriEndpointComponent {
     private int concurrentTasks = 1;
 
     public SchedulerComponent() {
-        super(SchedulerEndpoint.class);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/CollectionProducer.java b/camel-core/src/main/java/org/apache/camel/component/seda/CollectionProducer.java
deleted file mode 100644
index 5795403..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/seda/CollectionProducer.java
+++ /dev/null
@@ -1,47 +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.component.seda;
-
-import java.util.Collection;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultAsyncProducer;
-
-/**
- * A simple {@link org.apache.camel.Producer} which just appends to a {@link Collection} the {@link Exchange} object.
- *
- * @deprecated will be removed in a future Camel release
- * @version 
- */
-@Deprecated
-public class CollectionProducer extends DefaultAsyncProducer {
-    protected final Collection<Exchange> queue;
-
-    public CollectionProducer(Endpoint endpoint, Collection<Exchange> queue) {
-        super(endpoint);
-        this.queue = queue;
-    }
-
-    public boolean process(Exchange exchange, AsyncCallback callback) {
-        Exchange copy = exchange.copy();
-        queue.add(copy);
-        callback.done(true);
-        return true;
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
index 1337215..da51492 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
@@ -23,7 +23,7 @@ import java.util.concurrent.BlockingQueue;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.SedaConstants;
 import org.slf4j.Logger;
@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
  *
  * @version 
  */
-public class SedaComponent extends UriEndpointComponent {
+public class SedaComponent extends DefaultComponent {
     protected final Logger log = LoggerFactory.getLogger(getClass());
     protected final int maxConcurrentConsumers = SedaConstants.MAX_CONCURRENT_CONSUMERS;
 
@@ -52,11 +52,6 @@ public class SedaComponent extends UriEndpointComponent {
     private final Map<String, QueueReference> queues = new HashMap<>();
 
     public SedaComponent() {
-        super(SedaEndpoint.class);
-    }
-
-    public SedaComponent(Class<? extends Endpoint> endpointClass) {
-        super(endpointClass);
     }
 
     /**
@@ -119,22 +114,6 @@ public class SedaComponent extends UriEndpointComponent {
         this.defaultOfferTimeout = defaultOfferTimeout;
     }
 
-    /**
-     * @deprecated use
-     */
-    @Deprecated
-    public synchronized QueueReference getOrCreateQueue(SedaEndpoint endpoint, Integer size) {
-        return getOrCreateQueue(endpoint, size, null);
-    }
-
-    /**
-     * @deprecated use {@link #getOrCreateQueue(SedaEndpoint, Integer, Boolean, BlockingQueueFactory)}
-     */
-    @Deprecated
-    public synchronized QueueReference getOrCreateQueue(SedaEndpoint endpoint, Integer size, Boolean multipleConsumers) {
-        return getOrCreateQueue(endpoint, size, multipleConsumers, null);
-    }
-
     public synchronized QueueReference getOrCreateQueue(SedaEndpoint endpoint, Integer size, Boolean multipleConsumers, BlockingQueueFactory<Exchange> customQueueFactory) {
         String key = getQueueKey(endpoint.getEndpointUri());
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
index 1201084..8e75292 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
@@ -33,41 +33,21 @@ import org.apache.camel.util.ExchangeHelper;
  */
 public class SedaProducer extends DefaultAsyncProducer {
     
-    /**
-     * @deprecated Better make use of the {@link SedaEndpoint#getQueue()} API which delivers the accurate reference to the queue currently being used.
-     */
-    @Deprecated
-    protected final BlockingQueue<Exchange> queue;
     private final SedaEndpoint endpoint;
     private final WaitForTaskToComplete waitForTaskToComplete;
     private final long timeout;
     private final boolean blockWhenFull;
     private final long offerTimeout;
 
-    /**
-     * @deprecated Use {@link #SedaProducer(SedaEndpoint, WaitForTaskToComplete, long, boolean) the other constructor}.
-     */
-    @Deprecated
-    public SedaProducer(SedaEndpoint endpoint, BlockingQueue<Exchange> queue, WaitForTaskToComplete waitForTaskToComplete, long timeout) {
-        this(endpoint, waitForTaskToComplete, timeout, false, 0);
-    }
-
-    /**
-     * @deprecated Use {@link #SedaProducer(SedaEndpoint, WaitForTaskToComplete, long, boolean) the other constructor}.
-     */
-    @Deprecated
-    public SedaProducer(SedaEndpoint endpoint, BlockingQueue<Exchange> queue, WaitForTaskToComplete waitForTaskToComplete, long timeout, boolean blockWhenFull, long offerTimeout) {
-        this(endpoint, waitForTaskToComplete, timeout, blockWhenFull, offerTimeout);
-    }
-
     public SedaProducer(SedaEndpoint endpoint, WaitForTaskToComplete waitForTaskToComplete, long timeout, boolean blockWhenFull, long offerTimeout) {
         super(endpoint);
-        this.queue = endpoint.getQueue();
         this.endpoint = endpoint;
         this.waitForTaskToComplete = waitForTaskToComplete;
         this.timeout = timeout;
         this.blockWhenFull = blockWhenFull;
         this.offerTimeout = offerTimeout;
+        // Force the creation of the queue
+        endpoint.getQueue();
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java b/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java
index a72a648..05d2d68 100644
--- a/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java
@@ -33,7 +33,6 @@ import org.apache.camel.component.vm.VmComponent;
 public class StubComponent extends VmComponent {
 
     public StubComponent() {
-        super(StubEndpoint.class);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
index fe01672..091da43 100644
--- a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.test;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.URISupport;
 
@@ -31,10 +31,9 @@ import org.apache.camel.util.URISupport;
  *
  * @version 
  */
-public class TestComponent extends UriEndpointComponent {
+public class TestComponent extends DefaultComponent {
 
     public TestComponent() {
-        super(TestEndpoint.class);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
index e51f0a2..44aeb8e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
@@ -25,7 +25,7 @@ import java.util.Timer;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/timer.html">Timer Component</a> is for generating message exchanges when a timer fires.
@@ -35,12 +35,11 @@ import org.apache.camel.impl.UriEndpointComponent;
  *
  * @version 
  */
-public class TimerComponent extends UriEndpointComponent {
+public class TimerComponent extends DefaultComponent {
     private final Map<String, Timer> timers = new HashMap<>();
     private final Map<String, AtomicInteger> refCounts = new HashMap<>();
 
     public TimerComponent() {
-        super(TimerEndpoint.class);
     }
 
     public Timer getTimer(TimerConsumer consumer) {
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
index 2a609bc..89dd8e8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.validator;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 
 /**
@@ -27,17 +27,12 @@ import org.apache.camel.spi.Metadata;
  *
  * @version
  */
-public class ValidatorComponent extends UriEndpointComponent {
+public class ValidatorComponent extends DefaultComponent {
 
     @Metadata(label = "advanced", description = "To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI")
     private ValidatorResourceResolverFactory resourceResolverFactory;
     
     public ValidatorComponent() {
-        this(ValidatorEndpoint.class);
-    }
-
-    public ValidatorComponent(Class<? extends Endpoint> endpointClass) {
-        super(endpointClass);
     }
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
index 44724fb..21c8d08 100644
--- a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
@@ -42,11 +42,6 @@ public class VmComponent extends SedaComponent {
     private static final AtomicInteger START_COUNTER = new AtomicInteger();
 
     public VmComponent() {
-        super(VmEndpoint.class);
-    }
-
-    public VmComponent(Class<? extends Endpoint> endpointClass) {
-        super(endpointClass);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
index cadd990..a2a705b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
@@ -24,7 +24,7 @@ import javax.xml.transform.URIResolver;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.converter.jaxp.XmlConverter;
-import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ResourceHelper;
@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
 /**
  * The <a href="http://camel.apache.org/xslt.html">XSLT Component</a> is for performing XSLT transformations of messages
  */
-public class XsltComponent extends UriEndpointComponent {
+public class XsltComponent extends DefaultComponent {
 
     private static final Logger LOG = LoggerFactory.getLogger(XsltComponent.class);
 
@@ -55,7 +55,6 @@ public class XsltComponent extends UriEndpointComponent {
     private boolean saxon;
 
     public XsltComponent() {
-        super(XsltEndpoint.class);
     }
 
     public XmlConverter getXmlConverter() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltConstants.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltConstants.java
deleted file mode 100644
index 1c76b41..0000000
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltConstants.java
+++ /dev/null
@@ -1,32 +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.component.xslt;
-
-/**
- * XSLT component constants.
- */
-public final class XsltConstants {
-
-    @Deprecated 
-    // XsltComponent don't support this message any more
-    // Please create the XsltEndpoint directly from the URI
-    public static final String XSLT_RESOURCE_URI = "CamelXsltResourceUri";
-
-    private XsltConstants() {
-        // Utility class
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
index 06ba801..96d5ac6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
@@ -102,15 +102,6 @@ public class XsltEndpoint extends ProcessorEndpoint {
     @UriParam(label = "advanced")
     private EntityResolver entityResolver;
 
-    @Deprecated
-    public XsltEndpoint(String endpointUri, Component component, XsltBuilder xslt, String resourceUri,
-            boolean cacheStylesheet) throws Exception {
-        super(endpointUri, component, xslt);
-        this.xslt = xslt;
-        this.resourceUri = resourceUri;
-        this.contentCache = cacheStylesheet;
-    }
-
     public XsltEndpoint(String endpointUri, Component component) {
         super(endpointUri, component);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/converter/HasAnnotation.java b/camel-core/src/main/java/org/apache/camel/converter/HasAnnotation.java
deleted file mode 100644
index edff4e0..0000000
--- a/camel-core/src/main/java/org/apache/camel/converter/HasAnnotation.java
+++ /dev/null
@@ -1,40 +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.converter;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Used to indicate that the actual type of a parameter on a converter method must have the given annotation class
- * to be applicable. e.g. this annotation could be used on a JAXB converter which only applies to objects with a
- * JAXB annotation on them
- *
- * @version
- * @deprecated not in use, will be removed in next Camel release.
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Target({ElementType.PARAMETER })
-@Deprecated
-public @interface HasAnnotation {
-
-    Class<?> value();
-}
diff --git a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
index ae02a2c..06f52f0 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
@@ -96,14 +96,6 @@ public final class IOConverter {
         }
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static BufferedReader toReader(File file) throws IOException {
-        return toReader(file, (String) null);
-    }
-
     @Converter
     public static BufferedReader toReader(File file, Exchange exchange) throws IOException {
         return toReader(file, IOHelper.getCharsetName(exchange));
@@ -124,15 +116,6 @@ public final class IOConverter {
         return IOHelper.buffered(new FileOutputStream(file));
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static BufferedWriter toWriter(File file) throws IOException {
-        FileOutputStream os = new FileOutputStream(file, false);
-        return toWriter(os, IOHelper.getCharsetName(null, true));
-    }
-    
     @Converter
     public static BufferedWriter toWriter(File file, Exchange exchange) throws IOException {
         FileOutputStream os = new FileOutputStream(file, false);
@@ -147,14 +130,6 @@ public final class IOConverter {
         return IOHelper.buffered(new EncodingFileWriter(os, charset));
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static Reader toReader(InputStream in) throws IOException {
-        return toReader(in, null);
-    }
-
     @Converter
     public static Reader toReader(InputStream in, Exchange exchange) throws IOException {
         return IOHelper.buffered(new InputStreamReader(in, IOHelper.getCharsetName(exchange)));
@@ -165,14 +140,6 @@ public final class IOConverter {
         return toReader(new ByteArrayInputStream(data), exchange);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static Writer toWriter(OutputStream out) throws IOException {
-        return toWriter(out, null);
-    }
-    
     @Converter
     public static Writer toWriter(OutputStream out, Exchange exchange) throws IOException {
         return IOHelper.buffered(new OutputStreamWriter(out, IOHelper.getCharsetName(exchange)));
@@ -185,14 +152,6 @@ public final class IOConverter {
         return new StringReader(text);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static InputStream toInputStream(String text) throws IOException {
-        return toInputStream(text, null);
-    }
-    
     @Converter
     public static InputStream toInputStream(String text, Exchange exchange) throws IOException {
         return toInputStream(text.getBytes(IOHelper.getCharsetName(exchange)));
@@ -207,41 +166,17 @@ public final class IOConverter {
     public static InputStream toInputStream(StringBuilder builder, Exchange exchange) throws IOException {
         return toInputStream(builder.toString(), exchange);
     }
-    
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static InputStream toInputStream(BufferedReader buffer) throws IOException {
-        return toInputStream(buffer, null);
-    }
-    
+
     @Converter
     public static InputStream toInputStream(BufferedReader buffer, Exchange exchange) throws IOException {
         return toInputStream(toString(buffer), exchange);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static String toString(byte[] data) throws IOException {
-        return toString(data, null);
-    }
-    
     @Converter
     public static String toString(byte[] data, Exchange exchange) throws IOException {
         return new String(data, IOHelper.getCharsetName(exchange));
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static String toString(File file) throws IOException {
-        return toString(file, null);
-    }
-    
     @Converter
     public static String toString(File file, Exchange exchange) throws IOException {
         return toString(toReader(file, exchange));
@@ -256,28 +191,12 @@ public final class IOConverter {
             IOHelper.close(is, "file", LOG);
         }
     }
-    
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static byte[] toByteArray(Reader reader) throws IOException {
-        return toByteArray(reader, null);
-    }
-    
+
     @Converter
     public static byte[] toByteArray(Reader reader, Exchange exchange) throws IOException {
         return toByteArray(IOHelper.buffered(reader), exchange);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static String toString(URL url) throws IOException {
-        return toString(url, null);
-    }
-
     @Converter
     public static String toString(URL url, Exchange exchange) throws IOException {
         InputStream is = toInputStream(url);
@@ -309,42 +228,18 @@ public final class IOConverter {
 
         return sb.toString();
     }
-    
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static byte[] toByteArray(BufferedReader reader) throws IOException {
-        return toByteArray(reader, null);
-    }
-    
+
     @Converter
     public static byte[] toByteArray(BufferedReader reader, Exchange exchange) throws IOException {
         String s = toString(reader);
         return toByteArray(s, exchange);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static byte[] toByteArray(String value) throws IOException {
-        return toByteArray(value, null);
-    }
-
     @Converter
     public static byte[] toByteArray(String value, Exchange exchange) throws IOException {
         return value.getBytes(IOHelper.getCharsetName(exchange));
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static String toString(InputStream in) throws IOException {
-        return toString(in, null);
-    }
-
     @Converter
     public static String toString(InputStream in, Exchange exchange) throws IOException {
         return toString(toReader(in, exchange));
@@ -414,14 +309,6 @@ public final class IOConverter {
         return ByteBuffer.wrap(os.toByteArray());
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public static String toString(ByteArrayOutputStream os) throws IOException {
-        return toString(os, null);
-    }
-
     @Converter
     public static String toString(ByteArrayOutputStream os, Exchange exchange) throws IOException {
         return os.toString(IOHelper.getCharsetName(exchange));
@@ -462,23 +349,6 @@ public final class IOConverter {
     }
 
     /**
-     * Gets the charset name if set as header or property {@link Exchange#CHARSET_NAME}.
-     *
-     * @param exchange  the exchange
-     * @param useDefault should we fallback and use JVM default charset if no property existed?
-     * @return the charset, or <tt>null</tt> if no found
-     */
-    @Deprecated
-    public static String getCharsetName(Exchange exchange, boolean useDefault) {
-        return IOHelper.getCharsetName(exchange, useDefault);
-    }
-    
-    @Deprecated
-    public static String getCharsetName(Exchange exchange) {
-        return getCharsetName(exchange, true);
-    }
-
-    /**
      * Encoding-aware input stream.
      */
     public static class EncodingInputStream extends InputStream {
@@ -578,18 +448,5 @@ public final class IOConverter {
             }
         }
     }
-    
-    /**
-     * This method will take off the quotes and double quotes of the charset
-     */
-    @Deprecated
-    public static String normalizeCharset(String charset) {
-        return IOHelper.normalizeCharset(charset);
-    }
-    
-    @Deprecated
-    public static void validateCharset(String charset) throws UnsupportedCharsetException {
-        IOHelper.validateCharset(charset);
-    }
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
index 2935480..8eb04ca 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
@@ -40,14 +40,6 @@ public final class ObjectConverter {
     }
 
     /**
-     * @deprecated not in use
-     */
-    @Deprecated
-    public static boolean isCollection(Object value) {
-        return value instanceof Collection || (value != null && value.getClass().isArray());
-    }
-
-    /**
      * Converts the given value to a boolean, handling strings or Boolean
      * objects; otherwise returning false if the value could not be converted to
      * a boolean
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
index bc057ce..7d45089 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
@@ -154,20 +154,7 @@ public class StaxConverter {
             returnXMLOutputFactory(factory);
         }
     }
-    
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public XMLStreamReader createXMLStreamReader(InputStream in) throws XMLStreamException {
-        XMLInputFactory factory = getInputFactory();
-        try {
-            return factory.createXMLStreamReader(IOHelper.buffered(in));
-        } finally {
-            returnXMLInputFactory(factory);
-        }
-    }
-    
+
     @Converter
     public XMLStreamReader createXMLStreamReader(InputStream in, Exchange exchange) throws XMLStreamException {
         XMLInputFactory factory = getInputFactory();
@@ -222,19 +209,6 @@ public class StaxConverter {
             returnXMLInputFactory(factory);
         }
     }
-    
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public XMLEventReader createXMLEventReader(InputStream in) throws XMLStreamException {
-        XMLInputFactory factory = getInputFactory();
-        try {
-            return factory.createXMLEventReader(IOHelper.buffered(in));
-        } finally {
-            returnXMLInputFactory(factory);
-        }
-    }
 
     @Converter
     public XMLEventReader createXMLEventReader(InputStream in, Exchange exchange) throws XMLStreamException {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
index 4f3125f..71b7201 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
@@ -83,9 +83,6 @@ import org.slf4j.LoggerFactory;
  */
 @Converter
 public class XmlConverter {
-    @Deprecated
-    //It will be removed in Camel 3.0, please use the Exchange.DEFAULT_CHARSET
-    public static final String DEFAULT_CHARSET_PROPERTY = "org.apache.camel.default.charset";
 
     public static final String OUTPUT_PROPERTIES_PREFIX = "org.apache.camel.xmlconverter.output.";
     public static final String DOCUMENT_BUILDER_FACTORY_FEATURE = "org.apache.camel.xmlconverter.documentBuilderFactory.feature";
@@ -170,24 +167,6 @@ public class XmlConverter {
     }
 
     /**
-     * Converts the given Document to a Source
-     * @deprecated use toDOMSource instead
-     */
-    @Deprecated
-    public DOMSource toSource(Document document) {
-        return new DOMSource(document);
-    }
-
-    /**
-     * Converts the given Node to a Source
-     * @deprecated  use toDOMSource instead
-     */
-    @Deprecated
-    public Source toSource(Node node) throws ParserConfigurationException, TransformerException {
-        return toDOMSource(node);
-    }
-
-    /**
      * Converts the given Node to a Source
      */
     @Converter
@@ -213,16 +192,6 @@ public class XmlConverter {
     }
 
     /**
-     * Converts the given input Source into text.
-     *
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public String toString(Source source) throws TransformerException {
-        return toString(source, null);
-    }
-
-    /**
      * Converts the given input Source into text
      */
     @Converter
@@ -275,16 +244,6 @@ public class XmlConverter {
 
     /**
      * Converts the given input Node into text
-     *
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public String toString(Node node) throws TransformerException {
-        return toString(node, null);
-    }
-
-    /**
-     * Converts the given input Node into text
      */
     @Converter
     public String toString(Node node, Exchange exchange) throws TransformerException {
@@ -312,16 +271,6 @@ public class XmlConverter {
     /**
      * Converts the source instance to a {@link DOMSource} or returns null if the conversion is not
      * supported (making it easy to derive from this class to add new kinds of conversion).
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public DOMSource toDOMSource(Source source) throws ParserConfigurationException, IOException, SAXException, TransformerException {
-        return toDOMSource(source, null);
-    }
-    
-    /**
-     * Converts the source instance to a {@link DOMSource} or returns null if the conversion is not
-     * supported (making it easy to derive from this class to add new kinds of conversion).
      */
     @Converter
     public DOMSource toDOMSource(Source source, Exchange exchange) throws ParserConfigurationException, IOException, SAXException, TransformerException {
@@ -345,7 +294,7 @@ public class XmlConverter {
     @Converter
     public DOMSource toDOMSource(String text) throws ParserConfigurationException, IOException, SAXException, TransformerException {
         Source source = toSource(text);
-        return toDOMSourceFromStream((StreamSource) source);
+        return toDOMSourceFromStream((StreamSource) source, null);
     }
 
     /**
@@ -356,7 +305,7 @@ public class XmlConverter {
     public DOMSource toDOMSource(byte[] bytes) throws IOException, SAXException, ParserConfigurationException {
         InputStream is = new ByteArrayInputStream(bytes);
         try {
-            return toDOMSource(is);
+            return toDOMSource(is, null);
         } finally {
             IOHelper.close(is);
         }
@@ -366,17 +315,6 @@ public class XmlConverter {
     /**
      * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
      * supported (making it easy to derive from this class to add new kinds of conversion).
-     *
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public SAXSource toSAXSource(String source) throws IOException, SAXException, TransformerException {
-        return toSAXSource(source, null);
-    }
-
-    /**
-     * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
-     * supported (making it easy to derive from this class to add new kinds of conversion).
      */
     @Converter
     public SAXSource toSAXSource(String source, Exchange exchange) throws IOException, SAXException, TransformerException {
@@ -408,17 +346,6 @@ public class XmlConverter {
     /**
      * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
      * supported (making it easy to derive from this class to add new kinds of conversion).
-     *
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public SAXSource toSAXSource(InputStream source) throws IOException, SAXException, TransformerException {
-        return toSAXSource(source, null);
-    }
-
-    /**
-     * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
-     * supported (making it easy to derive from this class to add new kinds of conversion).
      */
     @Converter
     public SAXSource toSAXSource(InputStream source, Exchange exchange) throws IOException, SAXException, TransformerException {
@@ -471,17 +398,6 @@ public class XmlConverter {
     /**
      * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
      * supported (making it easy to derive from this class to add new kinds of conversion).
-     *
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public SAXSource toSAXSource(Source source) throws IOException, SAXException, TransformerException {
-        return toSAXSource(source, null);
-    }
-
-    /**
-     * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
-     * supported (making it easy to derive from this class to add new kinds of conversion).
      */
     @Converter
     public SAXSource toSAXSource(Source source, Exchange exchange) throws IOException, SAXException, TransformerException {
@@ -498,14 +414,6 @@ public class XmlConverter {
         }
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public StreamSource toStreamSource(Source source) throws TransformerException {
-        return toStreamSource(source, null);
-    }
-
     @Converter
     public StreamSource toStreamSource(Source source, Exchange exchange) throws TransformerException {
         if (source instanceof StreamSource) {
@@ -548,14 +456,6 @@ public class XmlConverter {
         return new StreamSource(is);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public StreamSource toStreamSourceFromSAX(SAXSource source) throws TransformerException {
-        return toStreamSourceFromSAX(source, null);
-    }
-
     @Converter
     public StreamSource toStreamSourceFromSAX(SAXSource source, Exchange exchange) throws TransformerException {
         InputSource inputSource = source.getInputSource();
@@ -571,14 +471,6 @@ public class XmlConverter {
         return new StringSource(result);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public StreamSource toStreamSourceFromDOM(DOMSource source) throws TransformerException {
-        return toStreamSourceFromDOM(source, null);
-    }
-
     @Converter
     public StreamSource toStreamSourceFromDOM(DOMSource source, Exchange exchange) throws TransformerException {
         String result = toString(source, exchange);
@@ -590,14 +482,6 @@ public class XmlConverter {
         return new StringSource(result);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public SAXSource toSAXSourceFromStream(StreamSource source) throws SAXException {
-        return toSAXSourceFromStream(source, null);
-    }
-    
     @Converter
     public SAXSource toSAXSourceFromStream(StreamSource source, Exchange exchange) throws SAXException {
         InputSource inputSource;
@@ -633,14 +517,6 @@ public class XmlConverter {
         return new SAXSource(xmlReader, inputSource);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public Reader toReaderFromSource(Source src) throws TransformerException {
-        return toReaderFromSource(src, null);
-    }
-
     @Converter
     public Reader toReaderFromSource(Source src, Exchange exchange) throws TransformerException {
         StreamSource stSrc = toStreamSource(src, exchange);
@@ -651,14 +527,6 @@ public class XmlConverter {
         return r;
     }
 
-    /**
-    * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-    */
-    @Deprecated
-    public DOMSource toDOMSource(InputStream is) throws ParserConfigurationException, IOException, SAXException {
-        return toDOMSource(is, null);
-    }
-    
     @Converter
     public DOMSource toDOMSource(InputStream is, Exchange exchange) throws ParserConfigurationException, IOException, SAXException {
         InputSource source = new InputSource(is);
@@ -668,28 +536,12 @@ public class XmlConverter {
         return new DOMSource(document, systemId);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public DOMSource toDOMSource(File file) throws ParserConfigurationException, IOException, SAXException {
-        return toDOMSource(file, null);
-    }
-    
     @Converter
     public DOMSource toDOMSource(File file, Exchange exchange) throws ParserConfigurationException, IOException, SAXException {
         InputStream is = IOHelper.buffered(new FileInputStream(file));
         return toDOMSource(is, exchange);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public DOMSource toDOMSourceFromStream(StreamSource source) throws ParserConfigurationException, IOException, SAXException {
-        return toDOMSourceFromStream(source, null);
-    }
-    
     @Converter
     public DOMSource toDOMSourceFromStream(StreamSource source, Exchange exchange) throws ParserConfigurationException, IOException, SAXException {
         Document document;
@@ -712,14 +564,6 @@ public class XmlConverter {
         return new DOMSource(document, systemId);
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public SAXSource toSAXSourceFromDOM(DOMSource source) throws TransformerException {
-        return toSAXSourceFromDOM(source, null);
-    }
-
     @Converter
     public SAXSource toSAXSourceFromDOM(DOMSource source, Exchange exchange) throws TransformerException {
         String str = toString(source, exchange);
@@ -792,7 +636,7 @@ public class XmlConverter {
      */
     @Converter(allowNull = true)
     public Node toDOMNode(Source source) throws TransformerException, ParserConfigurationException, IOException, SAXException {
-        DOMSource domSrc = toDOMSource(source);
+        DOMSource domSrc = toDOMSource(source, null);
         return domSrc != null ? domSrc.getNode() : null;
     }
 
@@ -824,18 +668,7 @@ public class XmlConverter {
         }
     }
 
-    
-    /**
-     * Converts the given data to a DOM document
-     *
-     * @param data is the data to be parsed
-     * @return the parsed document
-     */
-    @Deprecated
-    public Document toDOMDocument(byte[] data) throws IOException, SAXException, ParserConfigurationException {
-        return toDOMDocument(data, null);
-    }
-    
+
     /**
      * Converts the given data to a DOM document
      *
@@ -853,18 +686,6 @@ public class XmlConverter {
      * Converts the given {@link InputStream} to a DOM document
      *
      * @param in is the data to be parsed
-     * @return the parsed document
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public Document toDOMDocument(InputStream in) throws IOException, SAXException, ParserConfigurationException {
-        return toDOMDocument(in, null);
-    }
-    
-    /**
-     * Converts the given {@link InputStream} to a DOM document
-     *
-     * @param in is the data to be parsed
      * @param exchange is the exchange to be used when calling the converter
      * @return the parsed document
      */
@@ -885,18 +706,6 @@ public class XmlConverter {
      * Converts the given {@link Reader} to a DOM document
      *
      * @param in is the data to be parsed
-     * @return the parsed document
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public Document toDOMDocument(Reader in) throws IOException, SAXException, ParserConfigurationException {
-        return toDOMDocument(new InputSource(in));
-    }
-    
-    /**
-     * Converts the given {@link Reader} to a DOM document
-     *
-     * @param in is the data to be parsed
      * @param exchange is the exchange to be used when calling the converter
      * @return the parsed document
      */
@@ -909,18 +718,6 @@ public class XmlConverter {
      * Converts the given {@link InputSource} to a DOM document
      *
      * @param in is the data to be parsed
-     * @return the parsed document
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public Document toDOMDocument(InputSource in) throws IOException, SAXException, ParserConfigurationException {
-        return toDOMDocument(in, null);
-    }
-    
-    /**
-     * Converts the given {@link InputSource} to a DOM document
-     *
-     * @param in is the data to be parsed
      * @param exchange is the exchange to be used when calling the converter
      * @return the parsed document
      */
@@ -934,18 +731,6 @@ public class XmlConverter {
      * Converts the given {@link String} to a DOM document
      *
      * @param text is the data to be parsed
-     * @return the parsed document
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public Document toDOMDocument(String text) throws IOException, SAXException, ParserConfigurationException {
-        return toDOMDocument(new StringReader(text));
-    }
-    
-    /**
-     * Converts the given {@link String} to a DOM document
-     *
-     * @param text is the data to be parsed
      * @param exchange is the exchange to be used when calling the converter
      * @return the parsed document
      */
@@ -958,18 +743,6 @@ public class XmlConverter {
      * Converts the given {@link File} to a DOM document
      *
      * @param file is the data to be parsed
-     * @return the parsed document
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public Document toDOMDocument(File file) throws IOException, SAXException, ParserConfigurationException {
-        return toDOMDocument(file, null);
-    }
-    
-    /**
-     * Converts the given {@link File} to a DOM document
-     *
-     * @param file is the data to be parsed
      * @param exchange is the exchange to be used when calling the converter
      * @return the parsed document
      */
@@ -1023,27 +796,11 @@ public class XmlConverter {
         }
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public InputStream toInputStream(DOMSource source) throws TransformerException, IOException {
-        return toInputStream(source, null);
-    }
-
     @Converter
     public InputStream toInputStream(DOMSource source, Exchange exchange) throws TransformerException, IOException {
         return new ByteArrayInputStream(toByteArray(source, exchange));
     }
 
-    /**
-     * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
-     */
-    @Deprecated
-    public InputStream toInputStream(Document dom) throws TransformerException, IOException {
-        return toInputStream(dom, null);
-    }
-
     @Converter
     public InputStream toInputStream(Document dom, Exchange exchange) throws TransformerException, IOException {
         return toInputStream(new DOMSource(dom), exchange);
@@ -1177,14 +934,6 @@ public class XmlConverter {
         return builder.newDocument();
     }
 
-    /**
-     * @deprecated use {@link #createTransformer}, will be removed in Camel 3.0
-     */
-    @Deprecated
-    public Transformer createTransfomer() throws TransformerConfigurationException {
-        return createTransformer();
-    }
-
     public Transformer createTransformer() throws TransformerConfigurationException {
         TransformerFactory factory = getTransformerFactory();
         return factory.newTransformer();
diff --git a/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java b/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java
index d722baf..65066a1 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java
@@ -39,14 +39,6 @@ import org.apache.camel.spi.StreamCachingStrategy;
  * fileInputStream(s) is/are closed after all the exchanges using the temp file are completed.
  */
 public class CachedOutputStream extends OutputStream {
-    @Deprecated
-    public static final String THRESHOLD = "CamelCachedOutputStreamThreshold";
-    @Deprecated
-    public static final String BUFFER_SIZE = "CamelCachedOutputStreamBufferSize";
-    @Deprecated
-    public static final String TEMP_DIR = "CamelCachedOutputStreamOutputDirectory";
-    @Deprecated
-    public static final String CIPHER_TRANSFORMATION = "CamelCachedOutputStreamCipherTransformation";
 
     private final StreamCachingStrategy strategy;
     private OutputStream currentStream;
@@ -130,14 +122,6 @@ public class CachedOutputStream extends OutputStream {
     }
 
     /**
-     * @deprecated  use {@link #newStreamCache()}
-     */
-    @Deprecated
-    public StreamCache getStreamCache() throws IOException {
-        return newStreamCache();
-    }
-
-    /**
      * Creates a new {@link StreamCache} from the data cached in this {@link OutputStream}.
      */
     public StreamCache newStreamCache() throws IOException {
@@ -168,14 +152,6 @@ public class CachedOutputStream extends OutputStream {
         }
     }
 
-    /**
-     * @deprecated  use {@link #getStrategyBufferSize()}
-     */
-    @Deprecated
-    public int getBufferSize() {
-        return getStrategyBufferSize();
-    }
-    
     public int getStrategyBufferSize() {
         return strategy.getBufferSize();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ActiveMQUuidGenerator.java b/camel-core/src/main/java/org/apache/camel/impl/ActiveMQUuidGenerator.java
deleted file mode 100644
index 8be845b..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ActiveMQUuidGenerator.java
+++ /dev/null
@@ -1,191 +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.net.ServerSocket;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.camel.spi.UuidGenerator;
-import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.InetAddressUtil;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * {@link org.apache.camel.spi.UuidGenerator} which is a fast implementation based on
- * how <a href="http://activemq.apache.org/">Apache ActiveMQ</a> generates its UUID.
- * <p/>
- * This implementation is not synchronized but it leverages API which may not be accessible
- * in the cloud (such as Google App Engine).
- * <p/>
- * The JVM system property {@link #PROPERTY_IDGENERATOR_PORT} can be used to set a specific port
- * number to be used as part of the initialization process to generate unique UUID.
- *
- * @deprecated replaced by {@link DefaultUuidGenerator}
- */
-@Deprecated
-public class ActiveMQUuidGenerator implements UuidGenerator {
-
-    // use same JVM property name as ActiveMQ
-    public static final String PROPERTY_IDGENERATOR_HOSTNAME = "activemq.idgenerator.hostname";
-    public static final String PROPERTY_IDGENERATOR_LOCALPORT = "activemq.idgenerator.localport";
-    public static final String PROPERTY_IDGENERATOR_PORT = "activemq.idgenerator.port";
-
-    private static final Logger LOG = LoggerFactory.getLogger(ActiveMQUuidGenerator.class);
-    private static final String UNIQUE_STUB;
-    private static int instanceCount;
-    private static String hostName;
-    private String seed;
-    // must use AtomicLong to ensure atomic get and update operation that is thread-safe
-    private final AtomicLong sequence = new AtomicLong(1);
-    private final int length;
-
-    static {
-        String stub = "";
-        boolean canAccessSystemProps = true;
-        try {
-            SecurityManager sm = System.getSecurityManager();
-            if (sm != null) {
-                sm.checkPropertiesAccess();
-            }
-        } catch (SecurityException se) {
-            canAccessSystemProps = false;
-        }
-
-        if (canAccessSystemProps) {
-            hostName = System.getProperty(PROPERTY_IDGENERATOR_HOSTNAME);
-            int localPort = Integer.parseInt(System.getProperty(PROPERTY_IDGENERATOR_LOCALPORT, "0"));
-
-            int idGeneratorPort = 0;
-            ServerSocket ss = null;
-            try {
-                if (hostName == null) {
-                    hostName = InetAddressUtil.getLocalHostName();
-                }
-                if (localPort == 0) {
-                    idGeneratorPort = Integer.parseInt(System.getProperty(PROPERTY_IDGENERATOR_PORT, "0"));
-                    LOG.trace("Using port {}", idGeneratorPort);
-                    ss = new ServerSocket(idGeneratorPort);
-                    localPort = ss.getLocalPort();
-                    stub = "-" + localPort + "-" + System.currentTimeMillis() + "-";
-                    Thread.sleep(100);
-                } else {
-                    stub = "-" + localPort + "-" + System.currentTimeMillis() + "-";
-                }
-            } catch (Exception e) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Cannot generate unique stub by using DNS and binding to local port: {}", idGeneratorPort, e);
-                } else {
-                    LOG.warn("Cannot generate unique stub by using DNS and binding to local port: {} due {}", idGeneratorPort, e.getMessage());
-                }
-                // Restore interrupted state so higher level code can deal with it.
-                if (e instanceof InterruptedException) {
-                    Thread.currentThread().interrupt();
-                }
-            } finally {
-                IOHelper.close(ss);
-            }
-        }
-
-        // fallback to use localhost
-        if (hostName == null) {
-            hostName = "localhost";
-        }
-        hostName = sanitizeHostName(hostName);
-
-        if (ObjectHelper.isEmpty(stub)) {
-            stub = "-1-" + System.currentTimeMillis() + "-";
-        }
-        UNIQUE_STUB = stub;
-    }
-
-    public ActiveMQUuidGenerator(String prefix) {
-        synchronized (UNIQUE_STUB) {
-            this.seed = prefix + UNIQUE_STUB + (instanceCount++) + "-";
-            // let the ID be friendly for URL and file systems
-            this.seed = generateSanitizedId(this.seed);
-            this.length = seed.length() + ("" + Long.MAX_VALUE).length();
-        }
-    }
-
-    public ActiveMQUuidGenerator() {
-        this("ID-" + hostName);
-    }
-
-    /**
-     * As we have to find the hostname as a side-affect of generating a unique
-     * stub, we allow it's easy retrieval here
-     * 
-     * @return the local host name
-     */
-    public static String getHostName() {
-        return hostName;
-    }
-
-    public static String sanitizeHostName(String hostName) {
-        boolean changed = false;
-
-        StringBuilder sb = new StringBuilder();
-        for (char ch : hostName.toCharArray()) {
-            // only include ASCII chars
-            if (ch < 127) {
-                sb.append(ch);
-            } else {
-                changed = true;
-            }
-        }
-
-        if (changed) {
-            String newHost = sb.toString();
-            LOG.info("Sanitized hostname from: {} to: {}", hostName, newHost);
-            return newHost;
-        } else {
-            return hostName;
-        }
-    }
-
-    public String generateUuid() {
-        StringBuilder sb = new StringBuilder(length);
-        sb.append(seed);
-        sb.append(sequence.getAndIncrement());
-        return sb.toString();
-    }
-
-    /**
-     * Generate a unique ID - that is friendly for a URL or file system
-     * 
-     * @return a unique id
-     */
-    public String generateSanitizedId() {
-        return generateSanitizedId(generateUuid());
-    }
-
-    /**
-     * Ensures that the id is friendly for a URL or file system
-     *
-     * @param id the unique id
-     * @return the id as file friendly id
-     */
-    public static String generateSanitizedId(String id) {
-        id = id.replace(':', '-');
-        id = id.replace('_', '-');
-        id = id.replace('.', '-');
-        id = id.replace('/', '-');
-        return id;
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/AnnotatedParameterConfiguration.java b/camel-core/src/main/java/org/apache/camel/impl/AnnotatedParameterConfiguration.java
deleted file mode 100644
index 4533463..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/AnnotatedParameterConfiguration.java
+++ /dev/null
@@ -1,43 +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.lang.reflect.AccessibleObject;
-
-/**
- * An implementation of {@link ParameterConfiguration} which comes from a field or setter method
- * which has access to its underlying annotations to be able to expose additional validation
- * and conversion metadata for the parameter via annotations
- */
-@Deprecated
-public class AnnotatedParameterConfiguration extends ParameterConfiguration {
-    private final AccessibleObject accessibleObject;
-
-    public AnnotatedParameterConfiguration(String name, Class<?> type, AccessibleObject accessibleObject) {
-        super(name, type);
-        this.accessibleObject = accessibleObject;
-    }
-
-    public AccessibleObject getAccessibleObject() {
-        return accessibleObject;
-    }
-
-    @Override
-    public String toString() {
-        return "AnnotatedParameterConfiguration[" + getName() + " on " + accessibleObject + "]";
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ComponentConfigurationSupport.java b/camel-core/src/main/java/org/apache/camel/impl/ComponentConfigurationSupport.java
deleted file mode 100644
index 6932968..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ComponentConfigurationSupport.java
+++ /dev/null
@@ -1,214 +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 java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-
-import org.apache.camel.Component;
-import org.apache.camel.ComponentConfiguration;
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.EndpointCompleter;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
-import org.apache.camel.util.UnsafeUriCharactersEncoder;
-
-/**
- * Useful base class for implementations of {@link ComponentConfiguration}
- */
-@Deprecated
-public abstract class ComponentConfigurationSupport implements ComponentConfiguration {
-    protected final Component component;
-    private Map<String, Object> propertyValues = new HashMap<>();
-    private String baseUri;
-
-    public ComponentConfigurationSupport(Component component) {
-        this.component = component;
-    }
-
-    @Override
-    public Map<String, Object> getParameters() {
-        return Collections.unmodifiableMap(propertyValues);
-    }
-
-    @Override
-    public void setParameters(Map<String, Object> newValues) {
-        ObjectHelper.notNull(newValues, "propertyValues");
-        this.propertyValues.clear();
-        // lets validate each property as we set it
-        Set<Map.Entry<String, Object>> entries = newValues.entrySet();
-        for (Map.Entry<String, Object> entry : entries) {
-            setParameter(entry.getKey(), entry.getValue());
-        }
-    }
-
-    @Override
-    public Object getParameter(String name) {
-        validatePropertyName(name);
-        return propertyValues.get(name);
-    }
-
-    @Override
-    public void setParameter(String name, Object value) {
-        Object convertedValue = validatePropertyValue(name, value);
-        propertyValues.put(name, convertedValue);
-    }
-
-    /**
-     * Returns the base URI without any scheme or URI query parameters (property values)
-     */
-    @Override
-    public String getBaseUri() {
-        return baseUri;
-    }
-
-    @Override
-    public void setBaseUri(String baseUri) {
-        this.baseUri = baseUri;
-    }
-
-    @Override
-    public Endpoint createEndpoint() throws Exception {
-        String uri = getUriString();
-        return component.createEndpoint(uri);
-    }
-
-    /**
-     * Configures the properties on the given endpoint
-     */
-    @Override
-    public void configureEndpoint(Endpoint endpoint) {
-        Map<String, Object> map = getParameters();
-        if (map != null) {
-            Set<Map.Entry<String, Object>> entries = map.entrySet();
-            for (Map.Entry<String, Object> entry : entries) {
-                setEndpointParameter(endpoint, entry.getKey(), entry.getValue());
-            }
-        }
-        // TODO validate all the values are valid (e.g. mandatory)
-    }
-
-    @Override
-    public String getUriString() {
-        List<String> queryParams = new ArrayList<>();
-        for (Map.Entry<String, Object> entry : getParameters().entrySet()) {
-            String key = entry.getKey();
-            Object value = entry.getValue();
-            // convert to "param=value" format here, order will be preserved
-            if (value instanceof List) {
-                for (Object item : (List<?>)value) {
-                    queryParams.add(key + "=" + UnsafeUriCharactersEncoder.encode(item.toString()));
-                }
-            } else {
-                queryParams.add(key + "=" + UnsafeUriCharactersEncoder.encode(value.toString()));
-            }
-        }
-        queryParams.sort(null);
-        StringBuilder builder = new StringBuilder();
-        String base = getBaseUri();
-        if (base != null) {
-            builder.append(base);
-        }
-        String separator = "?";
-        for (String entry : queryParams) {
-            builder.append(separator);
-            builder.append(entry);
-            separator = "&";
-        }
-        return builder.toString();
-    }
-
-    @Override
-    public void setUriString(String uri) throws URISyntaxException {
-        String path = uri;
-        int idx = path.indexOf('?');
-        Map<String, Object> newParameters = Collections.emptyMap();
-        if (idx >= 0) {
-            path = path.substring(0, idx);
-            String query = uri.substring(idx + 1);
-            newParameters = URISupport.parseQuery(query, true);
-        }
-        setBaseUri(path);
-        setParameters(newParameters);
-    }
-
-    @Override
-    public ParameterConfiguration getParameterConfiguration(String name) {
-        return getParameterConfigurationMap().get(name);
-    }
-
-    public List<String> completeEndpointPath(String completionText) {
-        if (component instanceof EndpointCompleter) {
-            EndpointCompleter completer = (EndpointCompleter) component;
-            return completer.completeEndpointPath(this, completionText);
-        }
-        return new ArrayList<>();
-    }
-
-    public String createParameterJsonSchema() {
-        // favor loading the json schema from the built-time generated file
-        String defaultName = component.getCamelContext().resolveComponentDefaultName(component.getClass().getName());
-        if (defaultName != null) {
-            try {
-                return component.getCamelContext().getComponentParameterJsonSchema(defaultName);
-            } catch (IOException e) {
-                // ignore as we fallback to create the json at runtime
-            }
-        }
-
-        // fallback to resolving at runtime
-        SortedMap<String, ParameterConfiguration> map = getParameterConfigurationMap();
-        StringBuilder buffer = new StringBuilder("{\n  \"properties\": {");
-        boolean first = true;
-        for (Map.Entry<String, ParameterConfiguration> entry :  map.entrySet()) {
-            if (first) {
-                first = false;
-            } else {
-                buffer.append(",");
-            }
-            buffer.append("\n    ");
-            buffer.append(entry.getValue().toJson());
-        }
-        buffer.append("\n  }\n}\n");
-        return buffer.toString();
-    }
-
-    /**
-     * Allow implementations to validate whether a property name is valid
-     * and either throw an exception or log a warning of an unknown property being used
-     */
-    protected void validatePropertyName(String name) {
-    }
-
-    /**
-     * Allow implementations to validate whether a property name is valid
-     * and either throw an exception or log a warning of an unknown property being used
-     * and to convert the given value to the correct type before updating the value.
-     */
-    protected Object validatePropertyValue(String name, Object value) {
-        validatePropertyName(name);
-        return value;
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/CompositeRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/CompositeRegistry.java
index 05b9688..ac2f4a7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/CompositeRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/CompositeRegistry.java
@@ -107,15 +107,4 @@ public class CompositeRegistry implements Registry {
         return answer;
     }
 
-    public Object lookup(String name) {
-        return lookupByName(name);
-    }
-
-    public <T> T lookup(String name, Class<T> type) {
-        return lookupByNameAndType(name, type);
-    }
-
-    public <T> Map<String, T> lookupByType(Class<T> type) {
-        return findByTypeWithName(type);
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConfigurationHelper.java b/camel-core/src/main/java/org/apache/camel/impl/ConfigurationHelper.java
deleted file mode 100644
index 42c856d..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ConfigurationHelper.java
+++ /dev/null
@@ -1,167 +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.lang.reflect.Field;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.EndpointConfiguration;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.URIField;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Some helper methods for working with {@link EndpointConfiguration} instances
- *
- */
-@Deprecated
-public final class ConfigurationHelper {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ConfigurationHelper.class);
-
-    private ConfigurationHelper() {
-        //Utility Class
-    }
-
-    public interface ParameterSetter {
-
-        /**
-         * Sets the parameter on the configuration.
-         *
-         * @param camelContext  the camel context
-         * @param config        the configuration
-         * @param name          the name of the parameter
-         * @param value         the value to set
-         * @throws RuntimeCamelException is thrown if error setting the parameter
-         */
-        <T> void set(CamelContext camelContext, EndpointConfiguration config, String name, T value) throws RuntimeCamelException;
-    }
-
-    public static EndpointConfiguration createConfiguration(String uri, CamelContext context) throws Exception {
-        int schemeSeparator = uri.indexOf(':');
-        if (schemeSeparator == -1) {
-            // not an URIConfiguration
-            return null;
-        }
-        String scheme = uri.substring(0, schemeSeparator);
-        
-        Component component = context.getComponent(scheme);
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Lookup for Component handling \"{}:\" configuration returned {}",
-                new Object[]{scheme, component != null ? component.getClass().getName() : "<null>"});
-        }
-        if (component != null) {
-            EndpointConfiguration config = component.createConfiguration(scheme);
-            if (config instanceof DefaultEndpointConfiguration) {
-                ((DefaultEndpointConfiguration) config).setURI(uri);
-            }
-            return config;
-        } else {
-            // no component to create the configuration
-            return null;
-        }
-    }
-    
-    public static void populateFromURI(CamelContext camelContext, EndpointConfiguration config, ParameterSetter setter) {
-        URI uri = config.getURI();
-        
-        setter.set(camelContext, config, EndpointConfiguration.URI_SCHEME, uri.getScheme());
-        setter.set(camelContext, config, EndpointConfiguration.URI_SCHEME_SPECIFIC_PART, uri.getSchemeSpecificPart());
-        setter.set(camelContext, config, EndpointConfiguration.URI_AUTHORITY, uri.getAuthority());
-        setter.set(camelContext, config, EndpointConfiguration.URI_USER_INFO, uri.getUserInfo());
-        setter.set(camelContext, config, EndpointConfiguration.URI_HOST, uri.getHost());
-        setter.set(camelContext, config, EndpointConfiguration.URI_PORT, Integer.toString(uri.getPort()));
-        setter.set(camelContext, config, EndpointConfiguration.URI_PATH, uri.getPath());
-        setter.set(camelContext, config, EndpointConfiguration.URI_QUERY, uri.getQuery());
-        setter.set(camelContext, config, EndpointConfiguration.URI_FRAGMENT, uri.getFragment());
-        
-        // now parse query and set custom parameters
-        Map<String, Object> parameters;
-        try {
-            parameters = URISupport.parseParameters(uri);
-            for (Map.Entry<String, Object> pair : parameters.entrySet()) {
-                setter.set(camelContext, config, pair.getKey(), pair.getValue());
-            }
-        } catch (URISyntaxException e) {
-            throw new RuntimeCamelException(e);
-        }
-    }
-
-    public static Field findConfigurationField(EndpointConfiguration config, String name) {
-        if (config != null && name != null) {
-            Class<?> clazz = config.getClass();
-            Field[] fields = clazz.getDeclaredFields();
-    
-            Field found;
-            URIField anno;
-            for (final Field field : fields) {
-                anno = field.getAnnotation(URIField.class);
-                if (anno == null ? field.getName().equals(name) : anno.component().equals(name) 
-                    || (anno.component().equals(EndpointConfiguration.URI_QUERY) && anno.parameter().equals(name))) { 
-    
-                    found = field;
-                    LOG.trace("Found field {}.{} as candidate for parameter {}", clazz.getName(), found.getName(), name);
-                    return found;
-                }
-            }
-        }            
-        return null;
-    }
-
-    public static Object getConfigurationParameter(EndpointConfiguration config, String name) {
-        Field field = findConfigurationField(config, name);
-        return getConfigurationParameter(config, field);
-    }
-
-    public static Object getConfigurationParameter(EndpointConfiguration config, Field field) {
-        if (field != null) {
-            try {
-                return IntrospectionSupport.getProperty(config, field.getName());
-            } catch (Exception e) {
-                throw new RuntimeCamelException("Failed to get property '" + field.getName() + "' on " + config + " due " + e.getMessage(), e);
-            }
-        }
-        return null;
-    }
-
-    public static <T> void setConfigurationField(CamelContext camelContext, EndpointConfiguration config, String name, T value) {
-        Field field = findConfigurationField(config, name);
-        if (field == null) {
-            return;
-        }
-
-        try {
-            IntrospectionSupport.setProperty(camelContext.getTypeConverter(), config, name, value);
-        } catch (Exception e) {
-            throw new RuntimeCamelException("Failed to set property '" + name + "' on " + config + " due " + e.getMessage(), e);
-        }
-    }
-    
-    public static class FieldParameterSetter implements ParameterSetter {
-        @Override
-        public <T> void set(CamelContext camelContext, EndpointConfiguration config, String name, T value) {
-            setConfigurationField(camelContext, config, name, value);
-        }
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 39417ac..9271c86 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -93,7 +93,6 @@ import org.apache.camel.component.properties.PropertiesComponent;
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.converter.BaseTypeConverterRegistry;
 import org.apache.camel.impl.converter.DefaultTypeConverter;
-import org.apache.camel.impl.converter.LazyLoadingTypeConverter;
 import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
 import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.impl.validator.ValidatorKey;
@@ -119,16 +118,13 @@ import org.apache.camel.model.validator.ValidatorDefinition;
 import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.Debug;
-import org.apache.camel.processor.interceptor.Delayer;
 import org.apache.camel.processor.interceptor.HandleFault;
-import org.apache.camel.processor.interceptor.StreamCaching;
 import org.apache.camel.runtimecatalog.DefaultRuntimeCamelCatalog;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.ComponentResolver;
-import org.apache.camel.spi.Container;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.DataType;
@@ -255,7 +251,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private Boolean streamCache = Boolean.FALSE;
     private Boolean handleFault = Boolean.FALSE;
     private Boolean disableJMX = Boolean.FALSE;
-    private Boolean lazyLoadTypeConverters = Boolean.FALSE;
     private Boolean loadTypeConverters = Boolean.TRUE;
     private Boolean typeConverterStatisticsEnabled = Boolean.FALSE;
     private Boolean useMDCLogging = Boolean.FALSE;
@@ -618,7 +613,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             strategy.onEndpointAdd(endpoint);
         }
         addEndpointToRegistry(uri, endpoint);
-        if (oldEndpoint != null) {
+        if (oldEndpoint != null && oldEndpoint != endpoint) {
             stopServices(oldEndpoint);
         }
 
@@ -997,11 +992,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return null;
     }
 
-    @Deprecated
-    public void setRoutes(List<Route> routes) {
-        throw new UnsupportedOperationException("Overriding existing routes is not supported yet, use addRouteCollection instead");
-    }
-
     void removeRouteCollection(Collection<Route> routes) {
         synchronized (this.routes) {
             this.routes.removeAll(routes);
@@ -1309,8 +1299,8 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         DefaultRouteError.reset(this, routeId);
 
         // remove the route from ErrorHandlerBuilder if possible
-        if (getErrorHandlerBuilder() instanceof ErrorHandlerBuilderSupport) {
-            ErrorHandlerBuilderSupport builder = (ErrorHandlerBuilderSupport)getErrorHandlerBuilder();
+        if (getErrorHandlerFactory() instanceof ErrorHandlerBuilderSupport) {
+            ErrorHandlerBuilderSupport builder = (ErrorHandlerBuilderSupport) getErrorHandlerFactory();
             builder.removeOnExceptionList(routeId);
         }
 
@@ -1608,10 +1598,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return CamelContextHelper.findEips(this);
     }
 
-    public String getComponentDocumentation(String componentName) throws IOException {
-        return null;
-    }
-
     public String getComponentParameterJsonSchema(String componentName) throws IOException {
         // use the component factory finder to find the package name of the component class, which is the location
         // where the documentation exists as well
@@ -2249,7 +2235,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             Map<String, String[]> uriOptions = new LinkedHashMap<>();
 
             // insert values from uri
-            Map<String, Object> options = EndpointHelper.endpointProperties(this, uri);
+            Map<String, Object> options = new HashMap<>(getRuntimeCamelCatalog().endpointProperties(uri));
 
             // extract consumer. prefix options
             Map<String, Object> consumerOptions = IntrospectionSupport.extractProperties(options, "consumer.");
@@ -2843,10 +2829,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
         if (interceptStrategy instanceof HandleFault) {
             setHandleFault(true);
-        } else if (interceptStrategy instanceof StreamCaching) {
-            setStreamCaching(true);
-        } else if (interceptStrategy instanceof Delayer) {
-            setDelayer(((Delayer)interceptStrategy).getDelay());
         }
     }
 
@@ -2977,12 +2959,12 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return answer;
     }
 
-    public ErrorHandlerBuilder getErrorHandlerBuilder() {
+    public ErrorHandlerBuilder getErrorHandlerFactory() {
         return (ErrorHandlerBuilder)errorHandlerBuilder;
     }
 
-    public void setErrorHandlerBuilder(ErrorHandlerFactory errorHandlerBuilder) {
-        this.errorHandlerBuilder = errorHandlerBuilder;
+    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
+        this.errorHandlerBuilder = errorHandlerFactory;
     }
 
     public ScheduledExecutorService getErrorHandlerExecutorService() {
@@ -3082,7 +3064,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             }
         }
 
-        watch.stop();
+        watch.taken();
         if (log.isInfoEnabled()) {
             log.info("Apache Camel {} (CamelContext: {}) is suspended in {}", getVersion(), getName(), TimeUtils.printDuration(watch.taken()));
         }
@@ -3133,11 +3115,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             stopWatch.restart();
             log.info("Apache Camel {} (CamelContext: {}) is starting", getVersion(), getName());
 
-            // Note: This is done on context start as we want to avoid doing it during object construction
-            // where we could be dealing with CDI proxied camel contexts which may never be started (CAMEL-9657)
-            // [TODO] Remove in 3.0
-            Container.Instance.manage(this);
-
             // Start the route controller
             ServiceHelper.startServices(this.routeController);
 
@@ -3595,9 +3572,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
         // and clear start date
         startDate = null;
-
-        // [TODO] Remove in 3.0
-        Container.Instance.unmanage(this);
     }
 
     /**
@@ -4115,11 +4089,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
      */
     protected TypeConverter createTypeConverter() {
         BaseTypeConverterRegistry answer;
-        if (isLazyLoadTypeConverters()) {
-            answer = new LazyLoadingTypeConverter(packageScanClassResolver, getInjector(), getDefaultFactoryFinder());
-        } else {
-            answer = new DefaultTypeConverter(packageScanClassResolver, getInjector(), getDefaultFactoryFinder(), isLoadTypeConverters());
-        }
+        answer = new DefaultTypeConverter(packageScanClassResolver, getInjector(), getDefaultFactoryFinder(), isLoadTypeConverters());
         answer.setCamelContext(this);
         setTypeConverterRegistry(answer);
         return answer;
@@ -4223,22 +4193,11 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return dataFormats;
     }
 
-    @Deprecated
-    public Map<String, String> getProperties() {
-        return getGlobalOptions();
-    }
-
     @Override
     public Map<String, String> getGlobalOptions() {
         return globalOptions;
     }
 
-    @Deprecated
-    public void setProperties(Map<String, String> properties) {
-        this.setGlobalOptions(properties);
-    }
-
-    @Override
     public void setGlobalOptions(Map<String, String> globalOptions) {
         this.globalOptions = globalOptions;
     }
@@ -4388,16 +4347,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return autoStartup != null && autoStartup;
     }
 
-    @Deprecated
-    public Boolean isLazyLoadTypeConverters() {
-        return lazyLoadTypeConverters != null && lazyLoadTypeConverters;
-    }
-
-    @Deprecated
-    public void setLazyLoadTypeConverters(Boolean lazyLoadTypeConverters) {
-        this.lazyLoadTypeConverters = lazyLoadTypeConverters;
-    }
-
     public Boolean isLoadTypeConverters() {
         return loadTypeConverters != null && loadTypeConverters;
     }
@@ -4498,14 +4447,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         }
     }
 
-    /**
-     * @deprecated use {@link org.apache.camel.util.CamelContextHelper#lookupPropertiesComponent(org.apache.camel.CamelContext, boolean)}
-     */
-    @Deprecated
-    protected Component lookupPropertiesComponent() {
-        return CamelContextHelper.lookupPropertiesComponent(this, false);
-    }
-
     public ShutdownStrategy getShutdownStrategy() {
         return shutdownStrategy;
     }
@@ -4542,13 +4483,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return this.executorServiceManager;
     }
 
-    @Deprecated
-    public org.apache.camel.spi.ExecutorServiceStrategy getExecutorServiceStrategy() {
-        // its okay to create a new instance as its stateless, and just delegate
-        // ExecutorServiceManager which is the new API
-        return new DefaultExecutorServiceStrategy(this);
-    }
-
     public void setExecutorServiceManager(ExecutorServiceManager executorServiceManager) {
         this.executorServiceManager = executorServiceManager;
     }
@@ -4604,12 +4538,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         this.restRegistry = restRegistry;
     }
 
-    @Deprecated
-    @Override
-    public String getProperty(String key) {
-        return getGlobalOption(key);
-    }
-
     @Override
     public String getGlobalOption(String key) {
         String value = getGlobalOptions().get(key);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
index bcdbd95..d059fab 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
@@ -29,12 +29,9 @@ import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
-import org.apache.camel.ComponentConfiguration;
 import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointConfiguration;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.component.extension.ComponentExtension;
-import org.apache.camel.component.extension.ComponentExtensionHelper;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.CamelContextHelper;
@@ -144,18 +141,6 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone
     }
 
     @Override
-    public ComponentConfiguration createComponentConfiguration() {
-        return new DefaultComponentConfiguration(this);
-    }
-
-    @Override
-    public EndpointConfiguration createConfiguration(String uri) throws Exception {
-        MappedEndpointConfiguration config = new MappedEndpointConfiguration(getCamelContext());
-        config.setURI(new URI(uri));
-        return config;
-    }
-
-    @Override
     public boolean useRawUri() {
         // should use encoded uri by default
         return false;
@@ -512,7 +497,7 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone
             .filter(extensionType::isInstance)
             .findFirst()
             .map(extensionType::cast)
-            .map(e -> ComponentExtensionHelper.trySetComponent(e, this))
-            .map(e -> ComponentExtensionHelper.trySetCamelContext(e, getCamelContext()));
+            .map(e -> ObjectHelper.trySetComponent(e, this))
+            .map(e -> ObjectHelper.trySetCamelContext(e, getCamelContext()));
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentConfiguration.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentConfiguration.java
deleted file mode 100644
index 5ea605f..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentConfiguration.java
+++ /dev/null
@@ -1,83 +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 java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.camel.Component;
-import org.apache.camel.Endpoint;
-import org.apache.camel.InvalidPropertyException;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.util.IntrospectionSupport;
-
-/**
- * Default implementation for components which do not inherit from {@link UriEndpointComponent} and
- * do not have Endpoint classes annotated with {@link org.apache.camel.spi.UriEndpoint}
- */
-@Deprecated
-public class DefaultComponentConfiguration extends ComponentConfigurationSupport {
-
-    public DefaultComponentConfiguration(Component component) {
-        super(component);
-    }
-
-    @Override
-    public Object getEndpointParameter(Endpoint endpoint, String name) throws RuntimeCamelException {
-        try {
-            return IntrospectionSupport.getProperty(endpoint, name);
-        } catch (Exception e) {
-            throw new RuntimeCamelException("Failed to get property " + name + " on endpoint " + endpoint + " due to " + e.getMessage(), e);
-        }
-    }
-
-    @Override
-    public void setEndpointParameter(Endpoint endpoint, String name, Object value) throws RuntimeCamelException {
-        boolean answer;
-        try {
-            answer = IntrospectionSupport.setProperty(endpoint, name, value);
-        } catch (Exception e) {
-            throw new RuntimeCamelException(
-                    "Failed to set property " + name + " with value " + value + " on endpoint " + endpoint + " due to " + e.getMessage(), e);
-        }
-        if (!answer) {
-            throw new InvalidPropertyException(endpoint, name);
-        }
-    }
-
-    /**
-     * Since we have no parameter metadata lets just return parameter configurations for each parameter we
-     * have right now.
-     *
-     * @return configurations for each current property value
-     */
-    @Override
-    public SortedMap<String, ParameterConfiguration> getParameterConfigurationMap() {
-        SortedMap<String, ParameterConfiguration> answer = new TreeMap<>();
-        Set<Map.Entry<String, Object>> entries = getParameters().entrySet();
-        for (Map.Entry<String, Object> entry : entries) {
-            String name = entry.getKey();
-            Object value = entry.getValue();
-            Class<?> type = (value != null) ? value.getClass() : String.class;
-            answer.put(name, new ParameterConfiguration(name, type));
-        }
-        return answer;
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
index 25184e5..27556a1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
@@ -71,14 +71,6 @@ public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerT
         }
     }
 
-    /**
-     * @deprecated use {@link #getCamelContext()}
-     */
-    @Deprecated
-    public CamelContext getContext() {
-        return getCamelContext();
-    }
-
     public CamelContext getCamelContext() {
         return camelContext;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
index 4b6b6ad0..c9daa9d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
@@ -24,7 +24,6 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointConfiguration;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.PollingConsumer;
@@ -60,7 +59,6 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint
     private final String id = EndpointHelper.createEndpointId();
     private transient String endpointUriToString;
     private String endpointUri;
-    private EndpointConfiguration endpointConfiguration;
     private CamelContext camelContext;
     private Component component;
     @UriParam(label = "consumer", optionalPrefix = "consumer.", description = "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while"
@@ -104,35 +102,6 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint
     }
 
     /**
-     * Constructs a DefaultEndpoint instance which has <b>not</b> been created
-     * using a {@link Component}.
-     * <p/>
-     * <b>Note:</b> It is preferred to create endpoints using the associated
-     * component.
-     * 
-     * @param endpointUri the full URI used to create this endpoint
-     * @param camelContext the Camel Context in which this endpoint is operating
-     */
-    @Deprecated
-    protected DefaultEndpoint(String endpointUri, CamelContext camelContext) {
-        this(endpointUri);
-        this.camelContext = camelContext;
-    }
-
-    /**
-     * Constructs a partially-initialized DefaultEndpoint instance.
-     * <p/>
-     * <b>Note:</b> It is preferred to create endpoints using the associated
-     * component.
-     * 
-     * @param endpointUri the full URI used to create this endpoint
-     */
-    @Deprecated
-    protected DefaultEndpoint(String endpointUri) {
-        this.setEndpointUri(endpointUri);
-    }
-
-    /**
      * Constructs a partially-initialized DefaultEndpoint instance. Useful when
      * creating endpoints manually (e.g., as beans in Spring).
      * <p/>
@@ -195,23 +164,6 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint
         return endpointUri;
     }
 
-    public EndpointConfiguration getEndpointConfiguration() {
-        if (endpointConfiguration == null) {
-            endpointConfiguration = createEndpointConfiguration(getEndpointUri());
-        }
-        return endpointConfiguration;
-    }
-
-    /**
-     * Sets a custom {@link EndpointConfiguration}
-     *
-     * @param endpointConfiguration a custom endpoint configuration to be used.
-     */
-    @Deprecated
-    public void setEndpointConfiguration(EndpointConfiguration endpointConfiguration) {
-        this.endpointConfiguration = endpointConfiguration;
-    }
-
     public String getEndpointKey() {
         if (isLenientProperties()) {
             // only use the endpoint uri without parameters as the properties are lenient
@@ -257,10 +209,6 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint
         return consumer;
     }
 
-    public Exchange createExchange(Exchange exchange) {
-        return exchange.copy();
-    }
-
     public Exchange createExchange() {
         return createExchange(getExchangePattern());
     }
@@ -428,27 +376,6 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint
     }
 
     /**
-     * A factory method to lazily create the endpoint configuration if none is specified
-     */
-    @Deprecated
-    protected EndpointConfiguration createEndpointConfiguration(String uri) {
-        // using this factory method to be backwards compatible with the old code
-        if (getComponent() != null) {
-            // prefer to use component endpoint configuration
-            try {
-                return getComponent().createConfiguration(uri);
-            } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
-            }
-        } else if (getCamelContext() != null) {
-            // fallback and use a mapped endpoint configuration
-            return new MappedEndpointConfiguration(getCamelContext(), uri);
-        }
-        // not configuration possible
-        return null;
-    }
-
-    /**
      * Sets the endpointUri if it has not been specified yet via some kind of
      * dependency injection mechanism. This allows dependency injection
      * frameworks such as Spring or Guice to set the default endpoint URI in
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointConfiguration.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointConfiguration.java
deleted file mode 100644
index 710cefd..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointConfiguration.java
+++ /dev/null
@@ -1,90 +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.net.URI;
-import java.net.URISyntaxException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.EndpointConfiguration;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.UnsafeUriCharactersEncoder;
-
-/**
- * Default implementation of {@link EndpointConfiguration}.
- *
- * @version 
- */
-@Deprecated
-public abstract class DefaultEndpointConfiguration implements EndpointConfiguration {
-
-    private final CamelContext camelContext;
-    private URI uri;
-
-    public DefaultEndpointConfiguration(CamelContext camelContext) {
-        ObjectHelper.notNull(camelContext, "CamelContext");
-        this.camelContext = camelContext;
-    }
-
-    public DefaultEndpointConfiguration(CamelContext camelContext, String uri) {
-        this(camelContext);
-        try {
-            setURI(new URI(uri));
-        } catch (URISyntaxException e) {
-            throw new RuntimeCamelException(e);
-        }
-    }
-
-    @Override
-    public URI getURI() {
-        return uri;
-    }
-
-    public void setURI(URI uri) {
-        this.uri = uri;
-        parseURI();
-    }
-
-    public void setURI(String uri) {
-        try {
-            String encoded = UnsafeUriCharactersEncoder.encode(uri);
-            setURI(new URI(encoded));
-        } catch (URISyntaxException e) {
-            throw new RuntimeCamelException("Cannot parse uri: " + uri, e);
-        }
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public <T> T getParameter(String name) {
-        return (T)ConfigurationHelper.getConfigurationParameter(this, name);
-    }
-
-    @Override
-    public <T> void setParameter(String name, T value) {
-        ConfigurationHelper.setConfigurationField(camelContext, this, name, value);
-    }
-
-    protected CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    protected void parseURI() {
-        ConfigurationHelper.populateFromURI(camelContext, this, new ConfigurationHelper.FieldParameterSetter());
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
index 683dc5e..b9bc9a3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
@@ -70,7 +70,7 @@ public class DefaultEndpointRegistry extends AbstractMap<EndpointKey, Endpoint>
         Endpoint answer = staticMap.get(o);
         if (answer == null) {
             answer = dynamicMap.get(o);
-            if (answer != null && (context.isSetupRoutes() || context.isStartingRoutes())) {
+            if (answer != null && (context.isSetupRoutes() || context.getRouteController().isStartingRoutes())) {
                 dynamicMap.remove(o);
                 staticMap.put((EndpointKey) o, answer);
             }
@@ -96,7 +96,7 @@ public class DefaultEndpointRegistry extends AbstractMap<EndpointKey, Endpoint>
         }
 
         // we want endpoints to be static if they are part of setting up or starting routes
-        if (context.isSetupRoutes() || context.isStartingRoutes()) {
+        if (context.isSetupRoutes() || context.getRouteController().isStartingRoutes()) {
             answer = staticMap.put(key, endpoint);
         } else {
             answer = dynamicMap.put(key, endpoint);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
index 61230f3..eb85d4a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
@@ -97,38 +97,27 @@ public final class DefaultExchange implements Exchange {
     }
 
     public Exchange copy() {
-        // to be backwards compatible as today
-        return copy(false);
-    }
-
-    public Exchange copy(boolean safeCopy) {
         DefaultExchange exchange = new DefaultExchange(this);
 
-        if (safeCopy) {
-            exchange.getIn().setBody(getIn().getBody());
-            exchange.getIn().setFault(getIn().isFault());
-            if (getIn().hasHeaders()) {
-                exchange.getIn().setHeaders(safeCopyHeaders(getIn().getHeaders()));
-                // just copy the attachments here
-                exchange.getIn().copyAttachments(getIn());
-            }
-            if (hasOut()) {
-                exchange.getOut().setBody(getOut().getBody());
-                exchange.getOut().setFault(getOut().isFault());
-                if (getOut().hasHeaders()) {
-                    exchange.getOut().setHeaders(safeCopyHeaders(getOut().getHeaders()));
-                }
-                // Just copy the attachments here
-                exchange.getOut().copyAttachments(getOut());
-            }
-        } else {
-            // old way of doing copy which is @deprecated
-            // TODO: remove this in Camel 3.0, and always do a safe copy
-            exchange.setIn(getIn().copy());
-            if (hasOut()) {
-                exchange.setOut(getOut().copy());
+        exchange.setIn(getIn().copy());
+        exchange.getIn().setBody(getIn().getBody());
+        exchange.getIn().setFault(getIn().isFault());
+        if (getIn().hasHeaders()) {
+            exchange.getIn().setHeaders(safeCopyHeaders(getIn().getHeaders()));
+            // just copy the attachments here
+            exchange.getIn().copyAttachments(getIn());
+        }
+        if (hasOut()) {
+            exchange.setOut(getOut().copy());
+            exchange.getOut().setBody(getOut().getBody());
+            exchange.getOut().setFault(getOut().isFault());
+            if (getOut().hasHeaders()) {
+                exchange.getOut().setHeaders(safeCopyHeaders(getOut().getHeaders()));
             }
+            // Just copy the attachments here
+            exchange.getOut().copyAttachments(getOut());
         }
+
         exchange.setException(getException());
 
         // copy properties after body as body may trigger lazy init
@@ -547,16 +536,8 @@ public final class DefaultExchange implements Exchange {
         }
     }
 
-    @SuppressWarnings("deprecation")
     protected String createExchangeId() {
-        String answer = null;
-        if (in != null) {
-            answer = in.createExchangeId();
-        }
-        if (answer == null) {
-            answer = context.getUuidGenerator().generateUuid();
-        }
-        return answer;
+        return context.getUuidGenerator().generateUuid();
     }
 
     protected Map<String, Object> createProperties() {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java
deleted file mode 100644
index b2e6eca..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceStrategy.java
+++ /dev/null
@@ -1,176 +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.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExecutorServiceStrategy;
-import org.apache.camel.spi.ThreadPoolProfile;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.concurrent.SynchronousExecutorService;
-
-/**
- * @deprecated use {@link org.apache.camel.spi.ExecutorServiceManager} instead, will be removed in a future Camel release
- */
-@Deprecated
-public class DefaultExecutorServiceStrategy extends ServiceSupport implements ExecutorServiceStrategy {
-
-    // delegate to ExecutorServiceManager
-
-    private final CamelContext camelContext;
-
-    public DefaultExecutorServiceStrategy(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    public void registerThreadPoolProfile(ThreadPoolProfile profile) {
-        camelContext.getExecutorServiceManager().registerThreadPoolProfile(profile);
-    }
-
-    public ThreadPoolProfile getThreadPoolProfile(String id) {
-        return camelContext.getExecutorServiceManager().getThreadPoolProfile(id);
-    }
-
-    public ThreadPoolProfile getDefaultThreadPoolProfile() {
-        return camelContext.getExecutorServiceManager().getDefaultThreadPoolProfile();
-    }
-
-    public void setDefaultThreadPoolProfile(ThreadPoolProfile defaultThreadPoolProfile) {
-        camelContext.getExecutorServiceManager().setDefaultThreadPoolProfile(defaultThreadPoolProfile);
-    }
-
-    public String getThreadName(String name) {
-        return camelContext.getExecutorServiceManager().resolveThreadName(name);
-    }
-
-    public String getThreadNamePattern() {
-        return camelContext.getExecutorServiceManager().getThreadNamePattern();
-    }
-
-    public void setThreadNamePattern(String pattern) throws IllegalArgumentException {
-        camelContext.getExecutorServiceManager().setThreadNamePattern(pattern);
-    }
-
-    public ExecutorService lookup(Object source, String name, String executorServiceRef) {
-        ExecutorService answer = camelContext.getRegistry().lookupByNameAndType(executorServiceRef, ExecutorService.class);
-        if (answer == null) {
-            // try to see if we got a thread pool profile with that id
-            answer = newThreadPool(source, name, executorServiceRef);
-        }
-        return answer;
-    }
-
-    public ScheduledExecutorService lookupScheduled(Object source, String name, String executorServiceRef) {
-        ScheduledExecutorService answer = camelContext.getRegistry().lookupByNameAndType(executorServiceRef, ScheduledExecutorService.class);
-        if (answer == null) {
-            ThreadPoolProfile profile = getThreadPoolProfile(executorServiceRef);
-            if (profile != null) {
-                Integer poolSize = profile.getPoolSize();
-                if (poolSize == null) {
-                    poolSize = getDefaultThreadPoolProfile().getPoolSize();
-                }
-                answer = newScheduledThreadPool(source, name, poolSize);
-            }
-        }
-        return answer;
-    }
-
-    public ExecutorService newDefaultThreadPool(Object source, String name) {
-        return camelContext.getExecutorServiceManager().newDefaultThreadPool(source, name);
-    }
-
-    public ExecutorService newThreadPool(Object source, String name, String threadPoolProfileId) {
-        return camelContext.getExecutorServiceManager().newThreadPool(source, name, threadPoolProfileId);
-    }
-
-    public ExecutorService newCachedThreadPool(Object source, String name) {
-        return camelContext.getExecutorServiceManager().newCachedThreadPool(source, name);
-    }
-
-    public ScheduledExecutorService newScheduledThreadPool(Object source, String name, int poolSize) {
-        return camelContext.getExecutorServiceManager().newScheduledThreadPool(source, name, poolSize);
-    }
-
-    public ScheduledExecutorService newScheduledThreadPool(Object source, String name) {
-        return camelContext.getExecutorServiceManager().newDefaultScheduledThreadPool(source, name);
-    }
-
-    public ExecutorService newFixedThreadPool(Object source, String name, int poolSize) {
-        return camelContext.getExecutorServiceManager().newFixedThreadPool(source, name, poolSize);
-    }
-
-    public ExecutorService newSingleThreadExecutor(Object source, String name) {
-        return camelContext.getExecutorServiceManager().newSingleThreadExecutor(source, name);
-    }
-
-    public ExecutorService newSynchronousThreadPool(Object source, String name) {
-        return new SynchronousExecutorService();
-    }
-
-    public ExecutorService newThreadPool(Object source, String name, int corePoolSize, int maxPoolSize) {
-        return camelContext.getExecutorServiceManager().newThreadPool(source, name, corePoolSize, maxPoolSize);
-    }
-
-    public ExecutorService newThreadPool(Object source, String name, int corePoolSize, int maxPoolSize, int maxQueueSize) {
-        // use a profile with the settings
-        ThreadPoolProfile profile = new ThreadPoolProfile();
-        profile.setPoolSize(corePoolSize);
-        profile.setMaxPoolSize(maxPoolSize);
-        profile.setMaxQueueSize(maxQueueSize);
-
-        return camelContext.getExecutorServiceManager().newThreadPool(source, name, profile);
-    }
-
-    public ExecutorService newThreadPool(Object source, String name, int corePoolSize, int maxPoolSize,
-                                         long keepAliveTime, TimeUnit timeUnit, int maxQueueSize,
-                                         RejectedExecutionHandler rejectedExecutionHandler, boolean daemon) {
-        // use a profile with the settings
-        ThreadPoolProfile profile = new ThreadPoolProfile();
-        profile.setPoolSize(corePoolSize);
-        profile.setMaxPoolSize(maxPoolSize);
-        profile.setMaxQueueSize(maxQueueSize);
-        profile.setKeepAliveTime(keepAliveTime);
-        profile.setTimeUnit(timeUnit);
-
-        // must cast to ThreadPoolExecutor to be able to set the rejected execution handler
-        ThreadPoolExecutor answer = (ThreadPoolExecutor) camelContext.getExecutorServiceManager().newThreadPool(source, name, profile);
-        answer.setRejectedExecutionHandler(rejectedExecutionHandler);
-        return answer;
-    }
-
-    public void shutdown(ExecutorService executorService) {
-        camelContext.getExecutorServiceManager().shutdown(executorService);
-    }
-
-    public List<Runnable> shutdownNow(ExecutorService executorService) {
-        return camelContext.getExecutorServiceManager().shutdownNow(executorService);
-    }
-
-    protected void doStart() throws Exception {
-        // noop
-    }
-
-    protected void doStop() throws Exception {
-        // noop
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
index 7f079ac..f63569d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
@@ -28,7 +28,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.spi.InflightRepository;
@@ -73,11 +72,6 @@ public class DefaultInflightRepository extends ServiceSupport implements Infligh
         return inflight.size();
     }
 
-    @Deprecated
-    public int size(Endpoint endpoint) {
-        return 0;
-    }
-
     @Override
     public void addRoute(String routeId) {
         routeCount.putIfAbsent(routeId, new AtomicInteger(0));
@@ -252,11 +246,6 @@ public class DefaultInflightRepository extends ServiceSupport implements Infligh
         }
 
         @Override
-        public String getRouteId() {
-            return getAtRouteId();
-        }
-
-        @Override
         @SuppressWarnings("unchecked")
         public String getAtRouteId() {
             LinkedList<MessageHistory> list = exchange.getProperty(Exchange.MESSAGE_HISTORY, LinkedList.class);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
index 1103866..70f8b90 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
@@ -50,11 +50,9 @@ public class DefaultMessage extends MessageSupport {
     private Map<String, DataHandler> attachments;
     private Map<String, Attachment> attachmentObjects;
 
-    /**
-     * @deprecated use {@link #DefaultMessage(CamelContext)}
-     */
-    @Deprecated
-    public DefaultMessage() {
+    public DefaultMessage(Exchange exchange) {
+        setExchange(exchange);
+        setCamelContext(exchange != null ? exchange.getContext() : null);
     }
 
     public DefaultMessage(CamelContext camelContext) {
@@ -393,10 +391,6 @@ public class DefaultMessage extends MessageSupport {
         return headers != null;
     }
 
-    public String createExchangeId() {
-        return null;
-    }
-
     private static boolean isExcludePatternMatch(String key, String... excludePatterns) {
         for (String pattern : excludePatterns) {
             if (EndpointHelper.matchPattern(key, pattern)) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java
index 5083794..093cda5 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.impl;
 
-import java.util.Date;
-
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
 
@@ -47,10 +45,6 @@ public class DefaultMessageHistory implements MessageHistory {
         return node;
     }
 
-    public Date getTimestamp() {
-        return new Date(timestamp);
-    }
-
     @Override
     public long getTime() {
         return timestamp;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
index aa97e3c..5c30327 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.impl;
 
-import java.util.Date;
-
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.spi.MessageHistoryFactory;
@@ -25,11 +23,6 @@ import org.apache.camel.spi.MessageHistoryFactory;
 public class DefaultMessageHistoryFactory implements MessageHistoryFactory {
 
     @Override
-    public MessageHistory newMessageHistory(String routeId, NamedNode node, Date timestamp) {
-        return new DefaultMessageHistory(routeId, node, timestamp.getTime());
-    }
-
-    @Override
     public MessageHistory newMessageHistory(String routeId, NamedNode node, long timestamp) {
         return new DefaultMessageHistory(routeId, node, timestamp);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
index 880b92c..245154c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
@@ -117,11 +117,6 @@ public class DefaultPackageScanClassResolver extends ServiceSupport implements P
         return Collections.unmodifiableSet(new LinkedHashSet<>(classLoaders));
     }
 
-    public void setClassLoaders(Set<ClassLoader> classLoaders) {
-        // add all the class loaders
-        this.classLoaders.addAll(classLoaders);
-    }
-
     public Set<Class<?>> findAnnotated(Class<? extends Annotation> annotation, String... packageNames) {
         if (packageNames == null) {
             return Collections.emptySet();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java
index 9c6ab12..a4a1b0b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.impl;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
@@ -35,16 +34,6 @@ public abstract class DefaultPollingEndpoint extends ScheduledPollEndpoint  {
         super(endpointUri, component);
     }
 
-    @Deprecated
-    protected DefaultPollingEndpoint(String endpointUri) {
-        super(endpointUri);
-    }
-
-    @Deprecated
-    protected DefaultPollingEndpoint(String endpointUri, CamelContext context) {
-        super(endpointUri, context);
-    }
-
     public Consumer createConsumer(Processor processor) throws Exception {
         Consumer result = new DefaultScheduledPollConsumer(this, processor);
         configureConsumer(result);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
index c241b33..3885e64 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
@@ -18,7 +18,6 @@ package org.apache.camel.impl;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
 import org.apache.camel.Producer;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.URISupport;
@@ -55,15 +54,6 @@ public abstract class DefaultProducer extends ServiceSupport implements Producer
         return endpoint.createExchange();
     }
 
-    public Exchange createExchange(ExchangePattern pattern) {
-        return endpoint.createExchange(pattern);
-    }
-
-    @Deprecated
-    public Exchange createExchange(Exchange exchange) {
-        return endpoint.createExchange(exchange);
-    }
-
     /**
      * This implementation will delegate to the endpoint {@link org.apache.camel.Endpoint#isSingleton()}
      */
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
index a3dfd51..31a34e6 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
@@ -393,14 +393,6 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
     // Properties
     // -----------------------------------------------------------------------
 
-    /**
-     * @deprecated use {@link #getCamelContext()}
-     */
-    @Deprecated
-    public CamelContext getContext() {
-        return getCamelContext();
-    }
-
     public CamelContext getCamelContext() {
         return camelContext;
     }
@@ -420,14 +412,6 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
         setDefaultEndpoint(getCamelContext().getEndpoint(endpointUri));
     }
 
-    /**
-     * @deprecated use {@link CamelContext#getEndpoint(String, Class)}
-     */
-    @Deprecated
-    public <T extends Endpoint> T getResolvedEndpoint(String endpointUri, Class<T> expectedClass) {
-        return camelContext.getEndpoint(endpointUri, expectedClass);
-    }
-
     // Implementation methods
     // -----------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
index b63093c..b5cd297 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
@@ -33,8 +33,8 @@ import org.apache.camel.util.TimeUtils;
  * Default implementation of {@link Route}.
  * <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.CamelContext#startRoute(String)}
- * and {@link org.apache.camel.CamelContext#stopRoute(String)} methods.
+ * 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.
  *
  * @version 
  */
@@ -122,7 +122,7 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
     }
 
     /**
-     * Do not invoke this method directly, use {@link org.apache.camel.CamelContext#startRoute(String)} to start a route.
+     * Do not invoke this method directly, use {@link org.apache.camel.spi.RouteController#startRoute(String)} to start a route.
      */
     @Override
     public void start() throws Exception {
@@ -130,7 +130,7 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
     }
 
     /**
-     * Do not invoke this method directly, use {@link org.apache.camel.CamelContext#stopRoute(String)} to stop a route.
+     * Do not invoke this method directly, use {@link org.apache.camel.spi.RouteController#stopRoute(String)} to stop a route.
      */
     @Override
     public void stop() throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
index 65dbaee..b39bfbb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Experimental;
 import org.apache.camel.Route;
+import org.apache.camel.ServiceStatus;
 import org.apache.camel.spi.RouteController;
 
 @Experimental
@@ -70,6 +71,21 @@ public class DefaultRouteController extends org.apache.camel.support.ServiceSupp
     // ***************************************************
 
     @Override
+    public void startAllRoutes() throws Exception {
+        ((DefaultCamelContext) camelContext).startAllRoutes();
+    }
+
+    @Override
+    public boolean isStartingRoutes() {
+        return ((DefaultCamelContext) camelContext).isStartingRoutes();
+    }
+
+    @Override
+    public ServiceStatus getRouteStatus(String routeId) {
+        return ((DefaultCamelContext) camelContext).getRouteStatus(routeId);
+    }
+
+    @Override
     public void startRoute(String routeId) throws Exception {
         camelContext.startRoute(routeId);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java
index 4730ab6..247d9b3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java
@@ -75,10 +75,6 @@ public class DefaultRouteNode implements RouteNode {
         if (target instanceof Traceable) {
             Traceable trace = (Traceable) target;
             return trace.getTraceLabel();
-        } else if (target instanceof org.apache.camel.processor.Traceable) {
-            // to be backwards compatible
-            org.apache.camel.processor.Traceable trace = (org.apache.camel.processor.Traceable) target;
-            return trace.getTraceLabel();
         }
 
         // if we are a delegate then drill down
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
index 14f701f..4ee4acb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
@@ -747,7 +747,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
         for (InflightRepository.InflightExchange inflight : filtered) {
             sb.append("\n\tInflightExchange: [exchangeId=").append(inflight.getExchange().getExchangeId())
                     .append(", fromRouteId=").append(inflight.getExchange().getFromRouteId())
-                    .append(", routeId=").append(inflight.getRouteId())
+                    .append(", atRouteId=").append(inflight.getAtRouteId())
                     .append(", nodeId=").append(inflight.getNodeId())
                     .append(", elapsed=").append(inflight.getElapsed())
                     .append(", duration=").append(inflight.getDuration())
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
index fbedac5..e974d74 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
@@ -40,15 +40,6 @@ import org.slf4j.LoggerFactory;
  */
 public class DefaultStreamCachingStrategy extends org.apache.camel.support.ServiceSupport implements CamelContextAware, StreamCachingStrategy {
 
-    @Deprecated
-    public static final String THRESHOLD = "CamelCachedOutputStreamThreshold";
-    @Deprecated
-    public static final String BUFFER_SIZE = "CamelCachedOutputStreamBufferSize";
-    @Deprecated
-    public static final String TEMP_DIR = "CamelCachedOutputStreamOutputDirectory";
-    @Deprecated
-    public static final String CIPHER_TRANSFORMATION = "CamelCachedOutputStreamCipherTransformation";
-
     private static final Logger LOG = LoggerFactory.getLogger(DefaultStreamCachingStrategy.class);
 
     private CamelContext camelContext;
@@ -235,32 +226,6 @@ public class DefaultStreamCachingStrategy extends org.apache.camel.support.Servi
             return;
         }
 
-        String bufferSize = camelContext.getGlobalOption(BUFFER_SIZE);
-        String hold = camelContext.getGlobalOption(THRESHOLD);
-        String chiper = camelContext.getGlobalOption(CIPHER_TRANSFORMATION);
-        String dir = camelContext.getGlobalOption(TEMP_DIR);
-
-        boolean warn = false;
-        if (bufferSize != null) {
-            warn = true;
-            this.bufferSize = camelContext.getTypeConverter().convertTo(Integer.class, bufferSize);
-        }
-        if (hold != null) {
-            warn = true;
-            this.spoolThreshold = camelContext.getTypeConverter().convertTo(Long.class, hold);
-        }
-        if (chiper != null) {
-            warn = true;
-            this.spoolChiper = chiper;
-        }
-        if (dir != null) {
-            warn = true;
-            this.spoolDirectory = camelContext.getTypeConverter().convertTo(File.class, dir);
-        }
-        if (warn) {
-            LOG.warn("Configuring of StreamCaching using CamelContext properties is deprecated - use StreamCachingStrategy instead.");
-        }
-
         if (spoolUsedHeapMemoryThreshold > 99) {
             throw new IllegalArgumentException("SpoolHeapMemoryWatermarkThreshold must not be higher than 99, was: " + spoolUsedHeapMemoryThreshold);
         }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
index 38d43fa..aeb54de 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
@@ -148,7 +148,7 @@ public class DefaultTransformerRegistry extends AbstractMap<TransformerKey, Tran
         }
 
         // we want transformers to be static if they are part of setting up or starting routes
-        if (context.isSetupRoutes() || context.isStartingRoutes()) {
+        if (context.isSetupRoutes() || context.getRouteController().isStartingRoutes()) {
             answer = staticMap.put(key, transformer);
         } else {
             answer = dynamicMap.put(key, transformer);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultUuidGenerator.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultUuidGenerator.java
index e283844..d48551d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultUuidGenerator.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultUuidGenerator.java
@@ -25,8 +25,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Default {@link UuidGenerator} that is based on the {@link ActiveMQUuidGenerator} but
- * is optimized for Camel usage to startup faster and avoid use local network binding to obtain a random number.
+ * Default {@link UuidGenerator} optimized for Camel usage.
  */
 public class DefaultUuidGenerator implements UuidGenerator {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
index e2b577c..06bc5bd 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
@@ -112,7 +112,7 @@ public class DefaultValidatorRegistry extends AbstractMap<ValidatorKey, Validato
         }
 
         // we want validators to be static if they are part of setting up or starting routes
-        if (context.isSetupRoutes() || context.isStartingRoutes()) {
+        if (context.isSetupRoutes() || context.getRouteController().isStartingRoutes()) {
             answer = staticMap.put(key, validator);
         } else {
             answer = dynamicMap.put(key, validator);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DeferProducer.java b/camel-core/src/main/java/org/apache/camel/impl/DeferProducer.java
index 0ddf1bf..aedd1a2 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DeferProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DeferProducer.java
@@ -40,31 +40,6 @@ public class DeferProducer extends org.apache.camel.support.ServiceSupport imple
     }
 
     @Override
-    public Exchange createExchange() {
-        if (delegate == null) {
-            throw new IllegalStateException("Not started");
-        }
-        return delegate.createExchange();
-    }
-
-    @Override
-    public Exchange createExchange(ExchangePattern pattern) {
-        if (delegate == null) {
-            throw new IllegalStateException("Not started");
-        }
-        return delegate.createExchange(pattern);
-    }
-
-    @Override
-    @Deprecated
-    public Exchange createExchange(Exchange exchange) {
-        if (delegate == null) {
-            throw new IllegalStateException("Not started");
-        }
-        return delegate.createExchange(exchange);
-    }
-
-    @Override
     public void process(Exchange exchange) throws Exception {
         if (delegate == null) {
             throw new IllegalStateException("Not started");
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicy.java
index 99019e0..781f4f3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicy.java
@@ -172,10 +172,10 @@ public class DurationRoutePolicy extends org.apache.camel.support.RoutePolicySup
                     camelContext.stop();
                 } else if (action == Action.STOP_ROUTE) {
                     log.info("Stopping route: {}{}", routeId, tail);
-                    camelContext.stopRoute(routeId);
+                    camelContext.getRouteController().stopRoute(routeId);
                 } else if (action == Action.SUSPEND_ROUTE) {
                     log.info("Suspending route: {}{}", routeId, tail);
-                    camelContext.suspendRoute(routeId);
+                    camelContext.getRouteController().suspendRoute(routeId);
                 } else if (action == Action.SUSPEND_ALL_ROUTES) {
                     log.info("Suspending all routes {}", tail);
                     camelContext.suspend();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EmptyConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/EmptyConsumerCache.java
index 219371a..18f2ba1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EmptyConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EmptyConsumerCache.java
@@ -43,7 +43,7 @@ public class EmptyConsumerCache extends ConsumerCache {
             if (answer instanceof IsSingleton) {
                 singleton = ((IsSingleton) answer).isSingleton();
             }
-            if (getCamelContext().isStartingRoutes() && singleton) {
+            if (getCamelContext().getRouteController().isStartingRoutes() && singleton) {
                 // if we are currently starting a route, then add as service and enlist in JMX
                 // - but do not enlist non-singletons in JMX
                 // - note addService will also start the service
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EmptyProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/EmptyProducerCache.java
index 56a7582..fedc2fa 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EmptyProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EmptyProducerCache.java
@@ -37,7 +37,7 @@ public class EmptyProducerCache extends ProducerCache {
         Producer answer;
         try {
             answer = endpoint.createProducer();
-            if (getCamelContext().isStartingRoutes() && answer.isSingleton()) {
+            if (getCamelContext().getRouteController().isStartingRoutes() && answer.isSingleton()) {
                 // if we are currently starting a route, then add as service and enlist in JMX
                 // - but do not enlist non-singletons in JMX
                 // - note addService will also start the service
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java
index d0acf9f..6fca426 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java
@@ -36,8 +36,8 @@ import org.apache.camel.util.EndpointHelper;
  * <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.CamelContext#startRoute(String)}
- * and {@link org.apache.camel.CamelContext#stopRoute(String)} methods.
+ * 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.
  *
  * @version 
  */
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java b/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java
deleted file mode 100644
index 0f906c4..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java
+++ /dev/null
@@ -1,27 +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;
-
-/**
- * 
- * @deprecated
- * @see org.apache.camel.support.ExpressionAdapter
- */
-@Deprecated
-public class ExpressionAdapter extends org.apache.camel.support.ExpressionAdapter {
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java b/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java
deleted file mode 100644
index 3c10ea6..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java
+++ /dev/null
@@ -1,27 +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;
-
-/**
- * 
- * @deprecated
- * @see org.apache.camel.support.ExpressionSupport
- */
-@Deprecated
-public abstract class ExpressionSupport extends org.apache.camel.support.ExpressionSupport {
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/HeaderFilterStrategyComponent.java b/camel-core/src/main/java/org/apache/camel/impl/HeaderFilterStrategyComponent.java
index 903444b..a411ee1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/HeaderFilterStrategyComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/HeaderFilterStrategyComponent.java
@@ -25,17 +25,16 @@ import org.apache.camel.spi.Metadata;
 /**
  * Base class for components to support configuring a {@link org.apache.camel.spi.HeaderFilterStrategy}.
  */
-public abstract class HeaderFilterStrategyComponent extends UriEndpointComponent implements HeaderFilterStrategyAware {
+public abstract class HeaderFilterStrategyComponent extends DefaultComponent implements HeaderFilterStrategyAware {
 
     @Metadata(label = "filter", description = "To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message.")
     private HeaderFilterStrategy headerFilterStrategy;
     
-    public HeaderFilterStrategyComponent(Class<? extends Endpoint> endpointClass) {
-        super(endpointClass);
+    public HeaderFilterStrategyComponent() {
     }
 
-    public HeaderFilterStrategyComponent(CamelContext context, Class<? extends Endpoint> endpointClass) {
-        super(context, endpointClass);
+    public HeaderFilterStrategyComponent(CamelContext context) {
+        super(context);
     }
     
     public HeaderFilterStrategy getHeaderFilterStrategy() {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
index b4d1d90..f168a15 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
@@ -21,7 +21,6 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointConfiguration;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.PollingConsumer;
@@ -73,10 +72,6 @@ public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
         return delegate.getEndpointUri();
     }
 
-    public EndpointConfiguration getEndpointConfiguration() {
-        return delegate.getEndpointConfiguration();
-    }
-
     public String getEndpointKey() {
         return delegate.getEndpointKey();
     }
@@ -89,11 +84,6 @@ public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
         return delegate.createExchange(pattern);
     }
 
-    @Deprecated
-    public Exchange createExchange(Exchange exchange) {
-        return delegate.createExchange(exchange);
-    }
-
     public CamelContext getCamelContext() {
         return delegate.getCamelContext();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
index 76a854b..d8cc101 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
@@ -52,19 +52,6 @@ public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
         return producer.getEndpoint();
     }
 
-    public Exchange createExchange() {
-        return producer.createExchange();
-    }
-
-    public Exchange createExchange(ExchangePattern pattern) {
-        return producer.createExchange(pattern);
-    }
-
-    @Deprecated
-    public Exchange createExchange(Exchange exchange) {
-        return producer.createExchange(exchange);
-    }
-
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
         // process the detour so we do the detour routing
diff --git a/camel-core/src/main/java/org/apache/camel/impl/JndiRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/JndiRegistry.java
index 2fcf73f..7cbb9c3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/JndiRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/JndiRegistry.java
@@ -126,18 +126,6 @@ public class JndiRegistry implements Registry {
         return answer;
     }
 
-    public Object lookup(String name) {
-        return lookupByName(name);
-    }
-
-    public <T> T lookup(String name, Class<T> type) {
-        return lookupByNameAndType(name, type);
-    }
-
-    public <T> Map<String, T> lookupByType(Class<T> type) {
-        return findByTypeWithName(type);
-    }
-
     public void bind(String name, Object object) {
         try {
             getContext().bind(name, object);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java b/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
deleted file mode 100644
index bb75282..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
+++ /dev/null
@@ -1,52 +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.LoggingLevel;
-import org.apache.camel.util.CamelLogger;
-
-/**
- * @deprecated use {@link org.apache.camel.support.LoggingExceptionHandler}
- */
-@Deprecated
-public class LoggingExceptionHandler extends org.apache.camel.support.LoggingExceptionHandler {
-
-    public LoggingExceptionHandler(Class<?> ownerType) {
-        super(ownerType);
-    }
-
-    public LoggingExceptionHandler(CamelContext camelContext, Class<?> ownerType) {
-        super(camelContext, ownerType);
-    }
-
-    public LoggingExceptionHandler(Class<?> ownerType, LoggingLevel level) {
-        super(ownerType, level);
-    }
-
-    public LoggingExceptionHandler(CamelContext camelContext, Class<?> ownerType, LoggingLevel level) {
-        super(camelContext, ownerType, level);
-    }
-
-    public LoggingExceptionHandler(CamelLogger logger) {
-        super(logger);
-    }
-
-    public LoggingExceptionHandler(CamelContext camelContext, CamelLogger logger) {
-        super(camelContext, logger);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/MainSupport.java b/camel-core/src/main/java/org/apache/camel/impl/MainSupport.java
deleted file mode 100644
index ec83351..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/MainSupport.java
+++ /dev/null
@@ -1,25 +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;
-
-/**
- * @deprecated
- * @see org.apache.camel.main.MainSupport
- */
-@Deprecated
-public abstract class MainSupport extends org.apache.camel.main.MainSupport {
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/MappedEndpointConfiguration.java b/camel-core/src/main/java/org/apache/camel/impl/MappedEndpointConfiguration.java
deleted file mode 100644
index 317cc2d..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/MappedEndpointConfiguration.java
+++ /dev/null
@@ -1,165 +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.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.EndpointConfiguration;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.util.UnsafeUriCharactersEncoder;
-
-/**
- * Fallback implementation of {@link EndpointConfiguration} used by {@link Component}s
- * that did not yet define a configuration type.
- */
-@Deprecated
-public final class MappedEndpointConfiguration extends DefaultEndpointConfiguration {
-    // TODO: need 2 sets to differentiate between user keys and fixed keys
-    private Map<String, Object> params = new LinkedHashMap<>();
-
-    MappedEndpointConfiguration(CamelContext camelContext) {
-        super(camelContext);
-    }
-
-    MappedEndpointConfiguration(CamelContext camelContext, String uri) {
-        super(camelContext);
-        setURI(uri);
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> T getParameter(String name) {
-        return (T) params.get(name);
-    }
-
-    @Override
-    public <T> void setParameter(String name, T value) {
-        params.put(name, value);
-    }
-    
-    @Override
-    public boolean equals(Object other) {
-        if (other == null || !(other instanceof MappedEndpointConfiguration)) {
-            return false;
-        }
-        // if all parameters including scheme are the same, the component and uri must be the same too
-        return this == other || (this.getClass() == other.getClass() && params.equals(((MappedEndpointConfiguration)other).params));
-    }
-
-    @Override
-    public int hashCode() {
-        return params.hashCode();
-    }
-
-    @Override
-    protected void parseURI() {
-        ConfigurationHelper.populateFromURI(getCamelContext(), this, new ConfigurationHelper.ParameterSetter() {
-            @Override
-            public <T> void set(CamelContext camelContext, EndpointConfiguration config, String name, T value) {
-                if (name != null && value != null) {
-                    params.put(name, value);
-                }
-            }
-        });
-    }
-
-    @Override
-    public String toUriString(UriFormat format) {
-        Set<Map.Entry<String, Object>> entries = params.entrySet();
-        List<String> queryParams = new ArrayList<>();
-        
-        String scheme = null;
-        String schemeSpecificPart = null;
-        String authority = null;
-        String path = null;
-        String fragment = null;
-
-        TypeConverter converter = getCamelContext().getTypeConverter();
-
-        // Separate URI values from query parameters
-        for (Map.Entry<String, Object> entry : entries) {
-            String key = entry.getKey();
-            Object value = entry.getValue();
-            if (key.equals(EndpointConfiguration.URI_SCHEME)) {
-                scheme = converter.convertTo(String.class, value);
-            } else if (key.equals(EndpointConfiguration.URI_SCHEME_SPECIFIC_PART)) {
-                schemeSpecificPart = converter.convertTo(String.class, value);
-            } else if (key.equals(EndpointConfiguration.URI_AUTHORITY)) {
-                authority = converter.convertTo(String.class, value);
-            } else if (key.equals(EndpointConfiguration.URI_USER_INFO)) {
-                // ignore, part of authority
-            } else if (key.equals(EndpointConfiguration.URI_HOST)) {
-                // ignore, part of authority
-            } else if (key.equals(EndpointConfiguration.URI_PORT)) {
-                // ignore, part of authority
-            } else if (key.equals(EndpointConfiguration.URI_PATH)) {
-                path = converter.convertTo(String.class, value);
-            } else if (key.equals(EndpointConfiguration.URI_QUERY)) {
-                // ignore, but this should not be the case, may be a good idea to log...
-            } else if (key.equals(EndpointConfiguration.URI_FRAGMENT)) {
-                fragment = converter.convertTo(String.class, value);
-            } else {
-                // convert to "param=value" format here, order will be preserved
-                if (value instanceof List) {
-                    for (Object item : (List<?>)value) {
-                        queryParams.add(key + "=" + UnsafeUriCharactersEncoder.encode(item.toString()));
-                    }
-                } else {
-                    queryParams.add(key + "=" + UnsafeUriCharactersEncoder.encode(value.toString()));
-                }
-            }
-        }
-
-        queryParams.sort(null);
-        StringBuilder q = new StringBuilder();
-        for (String entry : queryParams) {
-            q.append(q.length() == 0 ? "" : "&");
-            q.append(entry);
-        }
-
-        StringBuilder u = new StringBuilder(64);
-        if (scheme != null) {
-            u.append(scheme); // SHOULD NOT be null
-            u.append(":");
-        }
-        if (authority != null) {
-            u.append("//");
-            u.append(authority);
-            u.append(path);
-            if (q.length() > 0) {
-                u.append("?");
-                u.append(q);
-            }
-            if (fragment != null) {
-                u.append("#");
-                u.append(fragment);
-            }
-        } else {
-            // add leading // if not provided
-            if (!schemeSpecificPart.startsWith("//")) {
-                u.append("//");
-            }
-            u.append(schemeSpecificPart);
-        }
-        return u.toString();
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ParameterConfiguration.java b/camel-core/src/main/java/org/apache/camel/impl/ParameterConfiguration.java
deleted file mode 100644
index 6fbf867..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ParameterConfiguration.java
+++ /dev/null
@@ -1,90 +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.lang.reflect.Field;
-
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.util.CollectionStringBuffer;
-import org.apache.camel.util.JsonSchemaHelper;
-
-import static org.apache.camel.util.StringQuoteHelper.doubleQuote;
-
-/**
- * Represents the configuration of a URI query parameter value to allow type conversion
- * and better validation of the configuration of URIs and Endpoints
- */
-@Deprecated
-public class ParameterConfiguration {
-    private final String name;
-    private final Class<?> parameterType;
-
-    public ParameterConfiguration(String name, Class<?> parameterType) {
-        this.name = name;
-        this.parameterType = parameterType;
-    }
-
-    @Override
-    public String toString() {
-        return "ParameterConfiguration[" + name + " on " + parameterType + "]";
-    }
-
-    /**
-     * Returns the name of the parameter value
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns the type of the parameter value
-     */
-    public Class<?> getParameterType() {
-        return parameterType;
-    }
-
-    /**
-     * Factory method to create a new ParameterConfiguration from a field
-     */
-    public static ParameterConfiguration newInstance(String name, Field field, UriParam uriParam) {
-        return new AnnotatedParameterConfiguration(name, field.getType(), field);
-    }
-
-    /**
-     * Returns the JSON format of this parameter configuration
-     */
-    public String toJson() {
-        if (parameterType.isEnum()) {
-            String typeName = "string";
-            CollectionStringBuffer sb = new CollectionStringBuffer();
-            for (Object value : parameterType.getEnumConstants()) {
-                sb.append(doubleQuote(value.toString()));
-            }
-            return doubleQuote(name) + ": { \"type\": " + doubleQuote(typeName)
-                    + ", \"javaType\": \"" + parameterType.getCanonicalName() + "\""
-                    + ", \"enum\": [ " + sb.toString() + " ] }";
-        } else if (parameterType.isArray()) {
-            String typeName = "array";
-            return doubleQuote(name) + ": { \"type\": " + doubleQuote(typeName)
-                    + ", \"javaType\": \"" + parameterType.getCanonicalName() + "\" }";
-        } else {
-            String typeName = JsonSchemaHelper.getType(parameterType);
-            return doubleQuote(name) + ": { \"type\": " + doubleQuote(typeName)
-                    + ", \"javaType\": \"" + parameterType.getCanonicalName() + "\" }";
-        }
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java
index cf48b8b..50f2778 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java
@@ -43,9 +43,8 @@ public class ProcessorEndpoint extends DefaultPollingEndpoint {
     protected ProcessorEndpoint() {
     }
 
-    @SuppressWarnings("deprecation")
     public ProcessorEndpoint(String endpointUri, CamelContext context, Processor processor) {
-        super(endpointUri);
+        super(endpointUri, null);
         this.setCamelContext(context);
         this.processor = processor;
     }
@@ -59,12 +58,6 @@ public class ProcessorEndpoint extends DefaultPollingEndpoint {
         super(endpointUri, component);
     }
 
-    @Deprecated
-    public ProcessorEndpoint(String endpointUri, Processor processor) {
-        super(endpointUri);
-        this.processor = processor;
-    }
-
     public Producer createProducer() throws Exception {
         return new DefaultProducer(this) {
             public void process(Exchange exchange) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java
index 46e7b84..c6b9b22 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java
@@ -74,18 +74,6 @@ public class PropertyPlaceholderDelegateRegistry implements Registry {
         return delegate.findByType(type);
     }
 
-    public Object lookup(String name) {
-        return lookupByName(name);
-    }
-
-    public <T> T lookup(String name, Class<T> type) {
-        return lookupByNameAndType(name, type);
-    }
-
-    public <T> Map<String, T> lookupByType(Class<T> type) {
-        return findByTypeWithName(type);
-    }
-
     public Registry getRegistry() {
         return delegate;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java b/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java
deleted file mode 100644
index 30b2e43..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java
+++ /dev/null
@@ -1,24 +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;
-
-/**
- * @deprecated use {@link org.apache.camel.support.RoutePolicySupport}
- */
-@Deprecated
-public class RoutePolicySupport extends org.apache.camel.support.RoutePolicySupport {
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java
index 820af33..e8a3fd3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java
@@ -21,7 +21,6 @@ import java.util.Map;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.PollingConsumer;
@@ -100,16 +99,6 @@ public abstract class ScheduledPollEndpoint extends DefaultEndpoint {
         super(endpointUri, component);
     }
 
-    @Deprecated
-    protected ScheduledPollEndpoint(String endpointUri, CamelContext context) {
-        super(endpointUri, context);
-    }
-
-    @Deprecated
-    protected ScheduledPollEndpoint(String endpointUri) {
-        super(endpointUri);
-    }
-
     protected ScheduledPollEndpoint() {
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java b/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java
deleted file mode 100644
index c172c86..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java
+++ /dev/null
@@ -1,26 +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;
-
-/**
- * @deprecated use org.apache.camel.support.ServiceSupport instead
- *
- */
-@Deprecated
-public abstract class ServiceSupport extends org.apache.camel.support.ServiceSupport {
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SimpleRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/SimpleRegistry.java
index f698ac7..8a6d856 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SimpleRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SimpleRegistry.java
@@ -72,15 +72,4 @@ public class SimpleRegistry extends HashMap<String, Object> implements Registry
         return result;
     }
 
-    public Object lookup(String name) {
-        return lookupByName(name);
-    }
-
-    public <T> T lookup(String name, Class<T> type) {
-        return lookupByNameAndType(name, type);
-    }
-
-    public <T> Map<String, T> lookupByType(Class<T> type) {
-        return findByTypeWithName(type);
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
index 6a329c7..fd52871 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
@@ -545,7 +545,7 @@ public class SupervisingRouteController extends DefaultRouteController {
         }
 
         public ServiceStatus getStatus() {
-            return getContext().getCamelContext().getRouteStatus(getId());
+            return getContext().getCamelContext().getRouteController().getRouteStatus(getId());
         }
 
         public int getInitializationOrder() {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java b/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java
index 4b506d2..d68104e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java
@@ -45,19 +45,6 @@ public class SynchronousDelegateProducer implements Producer {
         return producer.getEndpoint();
     }
 
-    public Exchange createExchange() {
-        return producer.createExchange();
-    }
-
-    public Exchange createExchange(ExchangePattern pattern) {
-        return producer.createExchange(pattern);
-    }
-
-    @Deprecated
-    public Exchange createExchange(Exchange exchange) {
-        return producer.createExchange(exchange);
-    }
-
     public void process(Exchange exchange) throws Exception {
         producer.process(exchange);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
index 5c0eb44..cf9b7d4 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingExceptionRoutePolicy.java
@@ -28,14 +28,13 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.Route;
-import org.apache.camel.processor.loadbalancer.CircuitBreakerLoadBalancer;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.support.RoutePolicySupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Modeled after the {@link CircuitBreakerLoadBalancer} and {@link ThrottlingInflightRoutePolicy}
+ * Modeled after the circuit breaker {@link ThrottlingInflightRoutePolicy}
  * this {@link RoutePolicy} will stop consuming from an endpoint based on the type of exceptions that are
  * thrown and the threshold setting.
  *
@@ -135,7 +134,7 @@ public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implement
     }
 
     /**
-     * uses similar approach as {@link CircuitBreakerLoadBalancer}
+     * uses similar approach as circuit breaker
      * if the exchange has an exception that we are watching
      * then we count that as a failure otherwise we ignore it
      */
diff --git a/camel-core/src/main/java/org/apache/camel/impl/UriComponentConfiguration.java b/camel-core/src/main/java/org/apache/camel/impl/UriComponentConfiguration.java
deleted file mode 100644
index c95faea..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/UriComponentConfiguration.java
+++ /dev/null
@@ -1,156 +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.Collections;
-import java.util.SortedMap;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.Endpoint;
-import org.apache.camel.InvalidPropertyException;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.util.IntrospectionSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Implements {@link org.apache.camel.EndpointConfiguration} for Endpoint implementations
- * which are annotated with {@link org.apache.camel.spi.UriEndpoint}
- * to use the {@link org.apache.camel.spi.UriParam} and {@link org.apache.camel.spi.UriParams} annotations
- * to denote its parameters which can be specified via URI query parameters.
- */
-@Deprecated
-public class UriComponentConfiguration extends ComponentConfigurationSupport {
-    private static final Logger LOG = LoggerFactory.getLogger(UriComponentConfiguration.class);
-
-    private final Class<? extends Endpoint> endpointClass;
-    private final SortedMap<String, ParameterConfiguration> parameterConfigurationMap;
-    private boolean strictOnParameterNames = true;
-
-    public UriComponentConfiguration(Component component, Class<? extends Endpoint> endpointClass,
-                                     SortedMap<String, ParameterConfiguration> parameterConfigurationMap) {
-        super(component);
-        this.endpointClass = endpointClass;
-        this.parameterConfigurationMap = Collections.unmodifiableSortedMap(parameterConfigurationMap);
-    }
-
-    public UriComponentConfiguration(Component component, Class<? extends Endpoint> endpointClass) {
-        this(component, endpointClass, UriEndpointComponent.createParameterConfigurationMap(endpointClass));
-    }
-
-    public UriComponentConfiguration(UriEndpointComponent component) {
-        this(component, component.getEndpointClass(), component.getParameterConfigurationMap());
-    }
-
-    @Override
-    public Object getEndpointParameter(Endpoint endpoint, String name) throws RuntimeCamelException {
-        ParameterConfiguration config = getParameterConfiguration(name);
-
-        // lets try get the property regardless of if this maps to a valid property name
-        // then if the introspection fails we will get a valid error otherwise
-        // lets raise a warning afterwards that we should update the metadata on the endpoint class
-        Object answer = null;
-        try {
-            answer = IntrospectionSupport.getProperty(endpoint, name);
-        } catch (Exception e) {
-            throw new RuntimeCamelException(
-                    "Failed to get property '" + name + "' on " + endpoint + " due " + e.getMessage(), e);
-        }
-        if (config == null) {
-            unknownPropertyName(name);
-        }
-        return answer;
-    }
-
-    @Override
-    public void setEndpointParameter(Endpoint endpoint, String name, Object value) throws RuntimeCamelException {
-        ParameterConfiguration config = getParameterConfiguration(name);
-
-        // lets try set the property regardless of if this maps to a valid property name
-        // then if the injection fails we will get a valid error otherwise
-        // lets raise a warning afterwards that we should update the metadata on the endpoint class
-        try {
-            IntrospectionSupport.setProperty(endpoint, name, value);
-        } catch (Exception e) {
-            throw new RuntimeCamelException("Failed to set property '" + name + "' on " + endpoint + " to value "
-                    + value + " due " + e.getMessage(), e);
-        }
-        if (config == null) {
-            unknownPropertyName(name);
-        }
-    }
-
-    public CamelContext getCamelContext() {
-        return component.getCamelContext();
-    }
-
-    public Class<? extends Endpoint> getEndpointClass() {
-        return endpointClass;
-    }
-
-    public boolean isStrictOnParameterNames() {
-        return strictOnParameterNames;
-    }
-
-    /**
-     * Strict mode is enabled by default but if disabled then invalid parameter names
-     * will not result in exceptions but we will just log warnings about their use
-     *
-     * @param strictOnParameterNames whether to throw exceptions if invalid
-     *                               parameter names are used or not
-     */
-    public void setStrictOnParameterNames(boolean strictOnParameterNames) {
-        this.strictOnParameterNames = strictOnParameterNames;
-    }
-
-    @Override
-    public SortedMap<String, ParameterConfiguration> getParameterConfigurationMap() {
-        return parameterConfigurationMap;
-    }
-
-    @Override
-    protected void validatePropertyName(String name) {
-        ParameterConfiguration parameterConfiguration = getParameterConfiguration(name);
-        if (parameterConfiguration == null) {
-            unknownPropertyName(name);
-        }
-    }
-
-    @Override
-    protected Object validatePropertyValue(String name, Object value) {
-        ParameterConfiguration parameterConfiguration = getParameterConfiguration(name);
-        if (parameterConfiguration == null) {
-            unknownPropertyName(name);
-            return value;
-        } else {
-            Class<?> parameterType = parameterConfiguration.getParameterType();
-            return getCamelContext().getTypeConverter().convertTo(parameterType, value);
-        }
-    }
-
-    protected void unknownPropertyName(String name) {
-        if (isStrictOnParameterNames()) {
-            throw new InvalidPropertyException(this, name, endpointClass);
-        } else {
-            LOG.warn("Using parameter " + name + " on endpoint " + getEndpointClass().getName()
-                    + " which does not have a @UriParam annotation! "
-                    + "Please add the @UriParam annotation to the " + name + " field");
-        }
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/UriEndpointComponent.java b/camel-core/src/main/java/org/apache/camel/impl/UriEndpointComponent.java
deleted file mode 100644
index ec3b40c..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/UriEndpointComponent.java
+++ /dev/null
@@ -1,132 +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.lang.reflect.Field;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.ComponentConfiguration;
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ReflectionHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A component implementation for endpoints which are annotated with UriEndpoint to describe
- * their configurable parameters via annotations
- *
- * @deprecated use {@link DefaultComponent}
- */
-@Deprecated
-public abstract class UriEndpointComponent extends DefaultComponent {
-    private static final Logger LOG = LoggerFactory.getLogger(UriEndpointComponent.class);
-
-    private Class<? extends Endpoint> endpointClass;
-    private SortedMap<String, ParameterConfiguration> parameterConfigurationMap;
-
-    public UriEndpointComponent(Class<? extends Endpoint> endpointClass) {
-        this.endpointClass = endpointClass;
-    }
-
-    public UriEndpointComponent(CamelContext context, Class<? extends Endpoint> endpointClass) {
-        super(context);
-        this.endpointClass = endpointClass;
-    }
-
-    /**
-     * To use a specific endpoint class, instead of what has been provided by the constructors.
-     *
-     * @param endpointClass the endpoint class to use
-     */
-    public void setEndpointClass(Class<? extends Endpoint> endpointClass) {
-        this.endpointClass = endpointClass;
-    }
-
-    @Override
-    public ComponentConfiguration createComponentConfiguration() {
-        return new UriComponentConfiguration(this);
-    }
-
-    /**
-     * Returns a newly created sorted map, indexed by name of all the parameter configurations
-     * of the given endpoint class using introspection for the various annotations like
-     * {@link org.apache.camel.spi.UriEndpoint}, {@link org.apache.camel.spi.UriParam}, {@link org.apache.camel.spi.UriParams}
-     */
-    public static SortedMap<String, ParameterConfiguration> createParameterConfigurationMap(
-            Class<? extends Endpoint> endpointClass) {
-        SortedMap<String, ParameterConfiguration> answer = new TreeMap<>();
-        populateParameterConfigurationMap(answer, endpointClass, "");
-        return answer;
-    }
-
-    protected static void populateParameterConfigurationMap(
-            final SortedMap<String, ParameterConfiguration> parameterMap, Class<?> aClass,
-            final String prefix) {
-        ReflectionHelper.doWithFields(aClass, new ReflectionHelper.FieldCallback() {
-            @Override
-            public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
-                UriParam uriParam = field.getAnnotation(UriParam.class);
-                if (uriParam != null) {
-                    String name = uriParam.name();
-                    if (ObjectHelper.isEmpty(name)) {
-                        name = field.getName();
-                    }
-                    String propertyName = prefix + name;
-
-                    // is the parameter a nested configuration object
-                    Class<?> fieldType = field.getType();
-                    UriParams uriParams = fieldType.getAnnotation(UriParams.class);
-                    if (uriParams != null) {
-                        String nestedPrefix = uriParams.prefix();
-                        if (nestedPrefix == null) {
-                            nestedPrefix = "";
-                        }
-                        nestedPrefix = (prefix + nestedPrefix).trim();
-                        populateParameterConfigurationMap(parameterMap, fieldType, nestedPrefix);
-                    } else {
-                        if (parameterMap.containsKey(propertyName)) {
-                            LOG.warn("Duplicate property name {} defined on field {}", propertyName, field);
-                        } else {
-                            parameterMap.put(propertyName,
-                                    ParameterConfiguration.newInstance(propertyName, field, uriParam));
-                        }
-                    }
-                }
-            }
-        });
-    }
-
-    public Class<? extends Endpoint> getEndpointClass() {
-        return endpointClass;
-    }
-
-    /**
-     * Returns the sorted map of all the URI query parameter names to their {@link ParameterConfiguration} objects
-     */
-    public SortedMap<String, ParameterConfiguration> getParameterConfigurationMap() {
-        if (parameterConfigurationMap == null) {
-            parameterConfigurationMap = createParameterConfigurationMap(getEndpointClass());
-        }
-        return new TreeMap<>(parameterConfigurationMap);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/UriEndpointConfiguration.java b/camel-core/src/main/java/org/apache/camel/impl/UriEndpointConfiguration.java
deleted file mode 100644
index b21cdde..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/UriEndpointConfiguration.java
+++ /dev/null
@@ -1,149 +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.net.URI;
-import java.net.URISyntaxException;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointConfiguration;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.util.IntrospectionSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Implements {@link EndpointConfiguration} for Endpoint implementations
- * which are annotated with {@link org.apache.camel.spi.UriEndpoint} to use the {@link UriParam} and {@link UriParams} annotations
- * to denote its parameters which can be specified via URI query parameters.
- */
-@Deprecated
-public class UriEndpointConfiguration implements EndpointConfiguration {
-    private static final Logger LOG = LoggerFactory.getLogger(UriEndpointConfiguration.class);
-
-    private final CamelContext camelContext;
-    private final Endpoint endpoint;
-    private String uriText;
-    private URI uri;
-    private SortedMap<String, ParameterConfiguration> propertyMap;
-
-    public UriEndpointConfiguration(CamelContext camelContext, Endpoint endpoint, String uriText) {
-        this.camelContext = camelContext;
-        this.endpoint = endpoint;
-        this.uriText = uriText;
-    }
-
-    @Override
-    public URI getURI() {
-        if (uri == null) {
-            // lazily create the URI which may fail as not all camel uriText are valid URI text
-            try {
-                uri = new URI(uriText);
-            } catch (URISyntaxException e) {
-                throw new RuntimeCamelException(e);
-            }
-        }
-        return uri;
-    }
-
-    public void setURI(URI uri) {
-        this.uriText = null;
-        this.uri = uri;
-    }
-
-    @Override
-    public <T> T getParameter(String name) throws RuntimeCamelException {
-        ParameterConfiguration config = getPropertyConfiguration(name);
-
-        // lets try get the property regardless of if this maps to a valid property name
-        // then if the introspection fails we will get a valid error otherwise
-        // lets raise a warning afterwards that we should update the metadata on the endpoint class
-        try {
-            @SuppressWarnings("unchecked")
-            T answer = (T)IntrospectionSupport.getProperty(endpoint, name);
-            if (config == null) {
-                warnMissingUriParamOnProperty(name);
-            }
-            return answer;
-        } catch (Exception e) {
-            throw new RuntimeCamelException(
-                    "Failed to get property '" + name + "' on " + endpoint + " due " + e.getMessage(), e);
-        }
-    }
-
-    protected void warnMissingUriParamOnProperty(String name) {
-        LOG.warn("Using property " + name + " on endpoint " + getEndpointClass().getName()
-                + " which does not have a @UriParam annotation! "
-                + "Please add the @UriParam annotation to the " + name + " field");
-    }
-
-    @Override
-    public <T> void setParameter(String name, T value) throws RuntimeCamelException {
-        ParameterConfiguration config = getPropertyConfiguration(name);
-
-        // lets try set the property regardless of if this maps to a valid property name
-        // then if the injection fails we will get a valid error otherwise
-        // lets raise a warning afterwards that we should update the metadata on the endpoint class
-        try {
-            IntrospectionSupport.setProperty(endpoint, name, value);
-        } catch (Exception e) {
-            throw new RuntimeCamelException(
-                    "Failed to set property '" + name + "' on " + endpoint + " to value " + value + " due "
-                            + e.getMessage(), e);
-        }
-        if (config == null) {
-            warnMissingUriParamOnProperty(name);
-        }
-    }
-
-    @Override
-    public String toUriString(UriFormat format) {
-        // TODO
-        return null;
-    }
-
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    public Class<? extends Endpoint> getEndpointClass() {
-        return endpoint.getClass();
-    }
-
-    /**
-     * Returns the property configuration for the given property name or null if it does not exist
-     */
-    public ParameterConfiguration getPropertyConfiguration(String name) {
-        return getPropertyConfigurationMap().get(name);
-    }
-
-    /**
-     * Returns the sorted map of all the property names to their {@link ParameterConfiguration} objects
-     */
-    public SortedMap<String, ParameterConfiguration> getPropertyConfigurationMap() {
-        if (propertyMap == null) {
-            propertyMap = UriEndpointComponent.createParameterConfigurationMap(getEndpointClass());
-        }
-        return new TreeMap<>(propertyMap);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index 11aba04..4ef7fa0 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -232,7 +232,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
                 ServiceStatus status = route.getRouteContext().getRoute().getStatus(getCamelContext());
                 if (status.isStartable()) {
                     LOGGER.debug("Starting route '{}'", route.getId());
-                    camelContext.startRoute(route.getId());
+                    camelContext.getRouteController().startRoute(route.getId());
 
                     startedRoutes.add(route);
                 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
index 0a08a33..ad011a2 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
@@ -41,11 +41,4 @@ public class AsyncProcessorTypeConverter extends TypeConverterSupport {
         return null;
     }
 
-    /**
-     * @deprecated use {@link AsyncProcessorConverterHelper#convert(org.apache.camel.Processor)} instead
-     */
-    @Deprecated
-    public static AsyncProcessor convert(Processor value) {
-        return AsyncProcessorConverterHelper.convert(value);
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java b/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java
index 1398aec..0ceb81d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/CorePackageScanClassResolver.java
@@ -81,12 +81,6 @@ public class CorePackageScanClassResolver implements PackageScanClassResolver {
     }
 
     @Override
-    public void setClassLoaders(Set<ClassLoader> classLoaders) {
-        // add all the class loaders
-        this.classLoaders.addAll(classLoaders);
-    }
-
-    @Override
     public Set<ClassLoader> getClassLoaders() {
         // return a new set to avoid any concurrency issues in other runtimes such as OSGi
         return Collections.unmodifiableSet(new LinkedHashSet<>(classLoaders));
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java
index cdb6841..2d6f002 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java
@@ -37,11 +37,6 @@ public class InstanceMethodFallbackTypeConverter extends TypeConverterSupport {
     private final TypeConverterRegistry registry;
     private final boolean allowNull;
 
-    @Deprecated
-    public InstanceMethodFallbackTypeConverter(CachingInjector<?> injector, Method method, TypeConverterRegistry registry) {
-        this(injector, method, registry, false);
-    }
-
     public InstanceMethodFallbackTypeConverter(CachingInjector<?> injector, Method method, TypeConverterRegistry registry, boolean allowNull) {
         this.injector = injector;
         this.method = method;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java
index 63a199c..a0b329d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java
@@ -39,11 +39,6 @@ public class InstanceMethodTypeConverter extends TypeConverterSupport {
     private final TypeConverterRegistry registry;
     private final boolean allowNull;
 
-    @Deprecated
-    public InstanceMethodTypeConverter(CachingInjector<?> injector, Method method, TypeConverterRegistry registry) {
-        this(injector, method, registry, false);
-    }
-
     public InstanceMethodTypeConverter(CachingInjector<?> injector, Method method, TypeConverterRegistry registry, boolean allowNull) {
         this.injector = injector;
         this.method = method;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/LazyLoadingTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/LazyLoadingTypeConverter.java
deleted file mode 100644
index bc477de..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/LazyLoadingTypeConverter.java
+++ /dev/null
@@ -1,133 +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.converter;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.spi.Injector;
-import org.apache.camel.spi.PackageScanClassResolver;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * Lazy implementation of a type converter registry used for
- * <a href="http://camel.apache.org/type-converter.html">type converters</a> in Camel.
- * <p/>
- * This implementation will lazy load type converters on-demand.
- *
- * @version
- * @deprecated will be removed in a future Camel release.
- */
-@Deprecated
-public class LazyLoadingTypeConverter extends BaseTypeConverterRegistry {
-    private final AtomicBoolean loaded = new AtomicBoolean();
-
-    public LazyLoadingTypeConverter(PackageScanClassResolver resolver, Injector injector, FactoryFinder factoryFinder) {
-        super(resolver, injector, factoryFinder);
-    }
-
-    @Override
-    public boolean allowNull() {
-        return false;
-    }
-
-    @Override
-    protected Object doConvertTo(final Class<?> type, final Exchange exchange, final Object value, boolean tryConvert) throws Exception {
-        Object answer = super.doConvertTo(type, exchange, value, tryConvert);
-        if (answer == null && !loaded.get()) {
-            // okay we could not convert, so try again, but load the converters up front
-            ensureLoaded();
-            answer = super.doConvertTo(type, exchange, value, tryConvert);
-        }
-        return answer;
-    }
-
-    @Override
-    public TypeConverter getTypeConverter(Class<?> toType, Class<?> fromType) {
-        TypeConverter answer = super.getTypeConverter(toType, fromType);
-        if (answer == null && !loaded.get()) {
-            // okay we could not convert, so try again, but load the converters up front
-            ensureLoaded();
-            answer = super.getTypeConverter(toType, fromType);
-        }
-        return answer;
-    }
-
-    @Override
-    public Set<Class<?>> getFromClassMappings() {
-        if (!loaded.get()) {
-            ensureLoaded();
-        }
-        return super.getFromClassMappings();
-    }
-
-    @Override
-    public Map<Class<?>, TypeConverter> getToClassMappings(Class<?> fromClass) {
-        if (!loaded.get()) {
-            ensureLoaded();
-        }
-        return super.getToClassMappings(fromClass);
-    }
-
-    @Override
-    public Map<TypeMapping, TypeConverter> getTypeMappings() {
-        if (!loaded.get()) {
-            ensureLoaded();
-        }
-        return super.getTypeMappings();
-    }
-
-    @Override
-    protected TypeConverter doLookup(Class<?> toType, Class<?> fromType, boolean isSuper) {
-        TypeConverter answer = super.doLookup(toType, fromType, isSuper);
-        if (answer == null && !loaded.get()) {
-            // okay we could not convert, so try again, but load the converters up front
-            ensureLoaded();
-            answer = super.doLookup(toType, fromType, isSuper);
-        }
-        return answer;
-    }
-
-    private synchronized void ensureLoaded() {
-        if (loaded.compareAndSet(false, true)) {
-            try {
-                super.loadTypeConverters();
-            } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
-            }
-        }
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        // must load core type converters
-        loadCoreTypeConverters();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-        // reset loaded flag
-        loaded.set(false);
-    }
-}
-
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java
index db58d5b..7d07c49 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java
@@ -35,11 +35,6 @@ public class StaticMethodFallbackTypeConverter extends TypeConverterSupport {
     private final TypeConverterRegistry registry;
     private final boolean allowNull;
 
-    @Deprecated
-    public StaticMethodFallbackTypeConverter(Method method, TypeConverterRegistry registry) {
-        this(method, registry, false);
-    }
-
     public StaticMethodFallbackTypeConverter(Method method, TypeConverterRegistry registry, boolean allowNull) {
         this.method = method;
         this.useExchange = method.getParameterCount() == 4;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java
index f247407..371add7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java
@@ -33,11 +33,6 @@ public class StaticMethodTypeConverter extends TypeConverterSupport {
     private final boolean useExchange;
     private final boolean allowNull;
 
-    @Deprecated
-    public StaticMethodTypeConverter(Method method) {
-        this(method,  false);
-    }
-
     public StaticMethodTypeConverter(Method method, boolean allowNull) {
         this.method = method;
         this.useExchange = method.getParameterCount() == 2;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConvertersPackageScanClassResolver.java b/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConvertersPackageScanClassResolver.java
index ad7fe53..1981ed4 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConvertersPackageScanClassResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConvertersPackageScanClassResolver.java
@@ -43,12 +43,6 @@ public class TypeConvertersPackageScanClassResolver implements PackageScanClassR
     }
 
     @Override
-    public void setClassLoaders(Set<ClassLoader> classLoaders) {
-        // add all the class loaders
-        this.classLoaders.addAll(classLoaders);
-    }
-
-    @Override
     public Set<ClassLoader> getClassLoaders() {
         // return a new set to avoid any concurrency issues in other runtimes such as OSGi
         return Collections.unmodifiableSet(new LinkedHashSet<>(classLoaders));
diff --git a/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java b/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
index cc29cd8..6c7d6e5 100644
--- a/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
@@ -28,14 +28,6 @@ import org.apache.camel.util.ExpressionToPredicateAdapter;
  */
 public class ExchangePropertyLanguage implements Language, IsSingleton {
 
-    /**
-     * @deprecated use {@link #exchangeProperty(String)} instead
-     */
-    @Deprecated
-    public static Expression property(String propertyName) {
-        return exchangeProperty(propertyName);
-    }
-
     public static Expression exchangeProperty(String propertyName) {
         return ExpressionBuilder.exchangePropertyExpression(propertyName);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
index 5b866d6..8c0369d 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
@@ -42,16 +42,6 @@ public class SimpleExpressionParser extends BaseSimpleParser {
     // use caches to avoid re-parsing the same expressions over and over again
     private Map<String, Expression> cacheExpression;
 
-    @Deprecated
-    public SimpleExpressionParser(String expression) {
-        super(expression, true);
-    }
-
-    @Deprecated
-    public SimpleExpressionParser(String expression, boolean allowEscape) {
-        super(expression, allowEscape);
-    }
-
     public SimpleExpressionParser(String expression, boolean allowEscape,
                                   Map<String, Expression> cacheExpression) {
         super(expression, allowEscape);
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
index 877cd55..f715309 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
@@ -57,16 +57,6 @@ public class SimplePredicateParser extends BaseSimpleParser {
     // use caches to avoid re-parsing the same expressions over and over again
     private Map<String, Expression> cacheExpression;
 
-    @Deprecated
-    public SimplePredicateParser(String expression) {
-        super(expression, true);
-    }
-
-    @Deprecated
-    public SimplePredicateParser(String expression, boolean allowEscape) {
-        super(expression, allowEscape);
-    }
-
     public SimplePredicateParser(String expression, boolean allowEscape, Map<String, Expression> cacheExpression) {
         super(expression, allowEscape);
         this.cacheExpression = cacheExpression;
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
index f3b426c..f223ca5 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java
@@ -80,10 +80,7 @@ public final class SimpleTokenizer {
         // logical operators
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.logicalOperator, "&&"));
         KNOWN_TOKENS.add(new SimpleTokenType(TokenType.logicalOperator, "||"));
-        // TODO: @deprecated logical operators, to be removed in Camel 3.0
-        KNOWN_TOKENS.add(new SimpleTokenType(TokenType.logicalOperator, "and"));
-        KNOWN_TOKENS.add(new SimpleTokenType(TokenType.logicalOperator, "or"));
-        
+
         //binary operator 
         // it is added as the last item because unary -- has the priority
         // if unary not found it is highly possible - operator is run into.
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index 1f7cde6..a93d8ab 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -35,11 +35,6 @@ public class SimpleFunctionExpression extends LiteralExpression {
     // use caches to avoid re-parsing the same expressions over and over again
     private Map<String, Expression> cacheExpression;
 
-    @Deprecated
-    public SimpleFunctionExpression(SimpleToken token) {
-        super(token);
-    }
-
     public SimpleFunctionExpression(SimpleToken token, Map<String, Expression> cacheExpression) {
         super(token);
         this.cacheExpression = cacheExpression;
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java b/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java
index 876fc16..921c70c 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/types/LogicalOperatorType.java
@@ -21,26 +21,28 @@ package org.apache.camel.language.simple.types;
  */
 public enum LogicalOperatorType {
 
-    // TODO: and|or is @deprecated and to be removed in Camel 3.0
-
     AND, OR;
 
     public static LogicalOperatorType asOperator(String text) {
-        if ("&&".equals(text) || "and".equals(text)) {
-            return AND;
-        } else if ("||".equals(text) || "or".equals(text)) {
-            return OR;
+        switch (text) {
+            case "&&":
+                return AND;
+            case "||":
+                return OR;
+            default:
+                throw new IllegalArgumentException("Operator not supported: " + text);
         }
-        throw new IllegalArgumentException("Operator not supported: " + text);
     }
 
     public String getOperatorText(LogicalOperatorType operator) {
-        if (operator == AND) {
-            return "&&";
-        } else if (operator == OR) {
-            return "||";
+        switch (operator) {
+            case AND:
+                return "&&";
+            case OR:
+                return "||";
+            default:
+                return "";
         }
-        return "";
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
index cc232a6..ef14275 100644
--- a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
@@ -32,6 +32,7 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultModelJAXBContextFactory;
 import org.apache.camel.impl.FileWatcherReloadStrategy;
+import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ModelJAXBContextFactory;
@@ -192,10 +193,7 @@ public abstract class MainSupport extends ServiceSupport {
 
     /**
      * Hangup support is enabled by default.
-     *
-     * @deprecated is enabled by default now, so no longer need to call this method.
      */
-    @Deprecated
     public void enableHangupSupport() {
         hangupInterceptorEnabled = true;
     }
@@ -525,7 +523,7 @@ public abstract class MainSupport extends ServiceSupport {
... 35715 lines suppressed ...


[camel] 12/44: [CAMEL-12818] Remove deprecated stuff from camel-netty4

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d06de7b9c7c36d70f77acb993a49f42a962b5e6d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Sep 24 09:37:54 2018 +0200

    [CAMEL-12818] Remove deprecated stuff from camel-netty4
---
 .../camel/component/netty4/NettyConfiguration.java | 30 ++++++++++++++++------
 .../netty4/NettyServerBootstrapConfiguration.java  |  1 -
 .../component/netty4/NettyCustomCodecTest.java     |  2 +-
 .../NettyCustomPipelineFactoryAsynchTest.java      | 10 ++++----
 .../netty4/NettySSLClientCertHeadersTest.java      |  4 +--
 .../netty4/NettySSLConsumerClientModeTest.java     |  2 +-
 .../camel/component/netty4/NettySSLTest.java       |  4 +--
 .../component/netty4/NettySingleCodecTest.java     |  4 +--
 .../netty4/UnsharableCodecsConflicts2Test.java     |  2 +-
 .../netty4/UnsharableCodecsConflictsTest.java      |  4 +--
 10 files changed, 38 insertions(+), 25 deletions(-)

diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java
index 924e4d5..ad37b05 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.netty4;
 
 import java.io.File;
 import java.net.URI;
+import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
@@ -34,9 +35,11 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
+import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -186,15 +189,9 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem
         passphrase = component.getAndRemoveOrResolveReferenceParameter(parameters, "passphrase", String.class, passphrase);
         keyStoreFormat = component.getAndRemoveOrResolveReferenceParameter(parameters, "keyStoreFormat", String.class, keyStoreFormat == null ? "JKS" : keyStoreFormat);
         securityProvider = component.getAndRemoveOrResolveReferenceParameter(parameters, "securityProvider", String.class, securityProvider == null ? "SunX509" : securityProvider);
-        keyStoreFile = component.getAndRemoveOrResolveReferenceParameter(parameters, "keyStoreFile", File.class, keyStoreFile);
-        trustStoreFile = component.getAndRemoveOrResolveReferenceParameter(parameters, "trustStoreFile", File.class, trustStoreFile);
-        keyStoreResource = component.getAndRemoveOrResolveReferenceParameter(parameters, "keyStoreResource", String.class, keyStoreResource);
-        trustStoreResource = component.getAndRemoveOrResolveReferenceParameter(parameters, "trustStoreResource", String.class, trustStoreResource);
-        // clientPipelineFactory is @deprecated and to be removed
-        clientInitializerFactory = component.getAndRemoveOrResolveReferenceParameter(parameters, "clientPipelineFactory", ClientInitializerFactory.class, clientInitializerFactory);
+        keyStoreResource = uriRef(component, parameters, "keyStoreResource", keyStoreResource);
+        trustStoreResource = uriRef(component, parameters, "trustStoreResource", trustStoreResource);
         clientInitializerFactory = component.getAndRemoveOrResolveReferenceParameter(parameters, "clientInitializerFactory", ClientInitializerFactory.class, clientInitializerFactory);
-        // serverPipelineFactory is @deprecated and to be removed
-        serverInitializerFactory = component.getAndRemoveOrResolveReferenceParameter(parameters, "serverPipelineFactory", ServerInitializerFactory.class, serverInitializerFactory);
         serverInitializerFactory = component.getAndRemoveOrResolveReferenceParameter(parameters, "serverInitializerFactory", ServerInitializerFactory.class, serverInitializerFactory);
 
         // set custom encoders and decoders first
@@ -252,6 +249,23 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem
         }
     }
 
+    private String uriRef(NettyComponent component, Map<String, Object> parameters, String key, String defaultValue) {
+        Object value = parameters.remove(key);
+        if (value == null) {
+            value = defaultValue;
+        } else if (value instanceof String && EndpointHelper.isReferenceParameter((String) value)) {
+            String name = StringHelper.replaceAll((String) value, "#", "");
+            value = CamelContextHelper.mandatoryLookup(component.getCamelContext(), name);
+        }
+        if (value instanceof File) {
+            return "file:" + value.toString();
+        } else if (value != null) {
+            return value.toString();
+        } else {
+            return null;
+        }
+    }
+
     public String getCharsetName() {
         if (encoding == null) {
             return null;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyServerBootstrapConfiguration.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyServerBootstrapConfiguration.java
index 2e9c7af..337aa82 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyServerBootstrapConfiguration.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyServerBootstrapConfiguration.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.netty4;
 
-import java.io.File;
 import java.util.Map;
 
 import io.netty.channel.EventLoopGroup;
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomCodecTest.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomCodecTest.java
index 57722fb..ec25d0f 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomCodecTest.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomCodecTest.java
@@ -24,7 +24,7 @@ import org.junit.Test;
 public class NettyCustomCodecTest extends BaseNettyTest {
 
     private String uri = "netty4:tcp://localhost:{{port}}?disconnect=true&sync=false"
-        + "&allowDefaultCodec=false&decoders=#myCustomDecoder,#myCustomDecoder2&encoder=#myCustomEncoder";
+        + "&allowDefaultCodec=false&decoders=#myCustomDecoder,#myCustomDecoder2&encoders=#myCustomEncoder";
 
     // use reaadble bytes
     private byte[] data = new byte[]{65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 0};
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomPipelineFactoryAsynchTest.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomPipelineFactoryAsynchTest.java
index aeebba5..d9c4e78 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomPipelineFactoryAsynchTest.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettyCustomPipelineFactoryAsynchTest.java
@@ -39,7 +39,7 @@ public class NettyCustomPipelineFactoryAsynchTest extends BaseNettyTest {
     @Override
     protected JndiRegistry createRegistry() throws Exception {
         JndiRegistry registry = super.createRegistry();
-        registry.bind("cpf", new TestClientChannelPipelineFactory(null));
+        registry.bind("cpf", new TestClientChannelInitializerFactory(null));
         registry.bind("spf", new TestServerChannelPipelineFactory(null));
         return registry;
     }
@@ -60,7 +60,7 @@ public class NettyCustomPipelineFactoryAsynchTest extends BaseNettyTest {
     }
 
     @Test
-    public void testCustomClientPipelineFactory() throws Exception {
+    public void testCustomClientInitializerFactory() throws Exception {
         String response = (String) template.requestBody(
                 "netty4:tcp://localhost:{{port}}?clientInitializerFactory=#cpf&textline=true",
                 "Forest Gump describing Vietnam...");
@@ -70,11 +70,11 @@ public class NettyCustomPipelineFactoryAsynchTest extends BaseNettyTest {
         assertEquals(true, serverInvoked);
     }
 
-    public class TestClientChannelPipelineFactory extends ClientInitializerFactory {
+    public class TestClientChannelInitializerFactory extends ClientInitializerFactory {
         private int maxLineSize = 1024;
         private NettyProducer producer;
 
-        public TestClientChannelPipelineFactory(NettyProducer producer) {
+        public TestClientChannelInitializerFactory(NettyProducer producer) {
             this.producer = producer;
         }
 
@@ -91,7 +91,7 @@ public class NettyCustomPipelineFactoryAsynchTest extends BaseNettyTest {
 
         @Override
         public ClientInitializerFactory createPipelineFactory(NettyProducer producer) {
-            return new TestClientChannelPipelineFactory(producer);
+            return new TestClientChannelInitializerFactory(producer);
         }
     }
 
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLClientCertHeadersTest.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLClientCertHeadersTest.java
index 5d4eb34..31bb662 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLClientCertHeadersTest.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLClientCertHeadersTest.java
@@ -55,7 +55,7 @@ public class NettySSLClientCertHeadersTest extends BaseNettyTest {
         context.addRoutes(new RouteBuilder() {
             public void configure() {
                 // needClientAuth=true so we can get the client certificate details
-                from("netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreFile=#ksf&trustStoreFile=#tsf"
+                from("netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreResource=#ksf&trustStoreResource=#tsf"
                         + "&needClientAuth=true&sslClientCertHeaders=true")
                     .to("mock:input")
                     .transform().constant("Bye World");
@@ -64,7 +64,7 @@ public class NettySSLClientCertHeadersTest extends BaseNettyTest {
         context.start();
 
         String response = template.requestBody(
-                "netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreFile=#ksf&trustStoreFile=#tsf",
+                "netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreResource=#ksf&trustStoreResource=#tsf",
                 "Hello World", String.class);
         assertEquals("Bye World", response);
 
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLConsumerClientModeTest.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLConsumerClientModeTest.java
index c8859cd..784b889 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLConsumerClientModeTest.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLConsumerClientModeTest.java
@@ -96,7 +96,7 @@ public class NettySSLConsumerClientModeTest extends BaseNettyTest {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("netty4:tcp://localhost:{{port}}?textline=true&clientMode=true&ssl=true&passphrase=changeit&keyStoreFile=#ksf&trustStoreFile=#tsf").id("sslclient")
+                from("netty4:tcp://localhost:{{port}}?textline=true&clientMode=true&ssl=true&passphrase=changeit&keyStoreResource=#ksf&trustStoreResource=#tsf").id("sslclient")
                 .process(new Processor() {
                     public void process(final Exchange exchange) {
                         String body = exchange.getIn().getBody(String.class);
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLTest.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLTest.java
index 349ca01..b91af6d 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLTest.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySSLTest.java
@@ -52,7 +52,7 @@ public class NettySSLTest extends BaseNettyTest {
         context.addRoutes(new RouteBuilder() {
             public void configure() {
                 // needClientAuth=true so we can get the client certificate details
-                from("netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreFile=#ksf&trustStoreFile=#tsf&needClientAuth=true")
+                from("netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreResource=#ksf&trustStoreResource=#tsf&needClientAuth=true")
                     .process(new Processor() {
                         public void process(Exchange exchange) throws Exception {
                             SSLSession session = exchange.getIn().getHeader(NettyConstants.NETTY_SSL_SESSION, SSLSession.class);
@@ -71,7 +71,7 @@ public class NettySSLTest extends BaseNettyTest {
         context.start();
 
         String response = template.requestBody(
-                "netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreFile=#ksf&trustStoreFile=#tsf",
+                "netty4:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=changeit&keyStoreResource=#ksf&trustStoreResource=#tsf",
                 "Epitaph in Kohima, India marking the WWII Battle of Kohima and Imphal, Burma Campaign - Attributed to John Maxwell Edmonds", String.class);
         assertEquals("When You Go Home, Tell Them Of Us And Say, For Your Tomorrow, We Gave Our Today.", response);
     }
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySingleCodecTest.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySingleCodecTest.java
index 64f55e4..4c5436b 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySingleCodecTest.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/NettySingleCodecTest.java
@@ -53,9 +53,9 @@ public class NettySingleCodecTest extends BaseNettyTest {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                from("direct:single-codec").to("netty4:tcp://localhost:{{port}}?encoder=#encoder&sync=false");
+                from("direct:single-codec").to("netty4:tcp://localhost:{{port}}?encoders=#encoder&sync=false");
 
-                from("netty4:tcp://localhost:{{port}}?decoder=#decoder&sync=false").to("mock:single-codec");
+                from("netty4:tcp://localhost:{{port}}?decoders=#decoder&sync=false").to("mock:single-codec");
             }
         };
     }
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflicts2Test.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflicts2Test.java
index 15fa6c8..05aa655 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflicts2Test.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflicts2Test.java
@@ -85,7 +85,7 @@ public class UnsharableCodecsConflicts2Test extends BaseNettyTest {
             public void configure() throws Exception {
                 port = getPort();
 
-                from("netty4:tcp://localhost:{{port}}?decoder=#length-decoder&sync=false")
+                from("netty4:tcp://localhost:{{port}}?decoders=#length-decoder&sync=false")
                         .process(processor)
                         .to("mock:result");
             }
diff --git a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflictsTest.java b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflictsTest.java
index f054cac..8f1c9d0 100644
--- a/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflictsTest.java
+++ b/components/camel-netty4/src/test/java/org/apache/camel/component/netty4/UnsharableCodecsConflictsTest.java
@@ -89,10 +89,10 @@ public class UnsharableCodecsConflictsTest extends BaseNettyTest {
                 port1 = getPort();
                 port2 = getNextPort();
 
-                from("netty4:tcp://localhost:" + port1 + "?decoder=#length-decoder&sync=false")
+                from("netty4:tcp://localhost:" + port1 + "?decoders=#length-decoder&sync=false")
                         .process(processor);
 
-                from("netty4:tcp://localhost:" + port2 + "?decoder=#length-decoder2&sync=false")
+                from("netty4:tcp://localhost:" + port2 + "?decoders=#length-decoder2&sync=false")
                         .process(processor)
                         .to("mock:result");
             }


[camel] 17/44: [CAMEL-12818] Remove deprecated stuff

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 39c62cc7580448aa2a203493f3bdc2dc39093db2
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Sep 26 20:50:43 2018 +0200

    [CAMEL-12818] Remove deprecated stuff
---
 .../component/avro/AvroHttpSpringProducerTest.java |   2 +-
 .../avro/AvroNettySpringConsumerTest.java          |   2 +-
 .../avro/AvroNettySpringProducerTest.java          |   2 +-
 .../avro/AvroMarshalAndUnmarshalSpringTest.java    |   2 +-
 .../barcode/BarcodeDataFormatSpringTest.java       |   2 +-
 .../org/apache/camel/cdi/CdiCamelExtension.java    |   3 +-
 .../java/org/apache/camel/cdi/CdiCamelFactory.java |  44 +--
 .../src/main/java/org/apache/camel/cdi/Mock.java   |  55 ----
 .../main/java/org/apache/camel/cdi/RoutesXml.java  |  99 ------
 .../src/main/java/org/apache/camel/cdi/Uri.java    |  18 -
 .../apache/camel/cdi/bean/MockAnnotationRoute.java |   3 +-
 .../apache/camel/cdi/test/MockEndpointTest.java    |   3 +-
 .../test/RouteBuildersWithContextNamesTest.java    |   4 +-
 .../cdi/test/UriQualifierWithContextTest.java      |   9 +-
 .../camel/cdi/test/UriWithWrongContextTest.java    |   8 +-
 .../component/consul/policy/ConsulRoutePolicy.java | 362 ---------------------
 .../consul/policy/ConsulRoutePolicyMain.java       |  48 ---
 .../component/crypto/cms/SpringComponentTest.java  |   4 +-
 .../camel/converter/crypto/PGPDataFormatUtil.java  | 150 ---------
 .../component/crypto/SpringSignatureTest.java      |   4 +-
 .../crypto/SpringCryptoDataFormatTest.java         |   4 +-
 .../converter/crypto/SpringPGPDataFormatTest.java  |   4 +-
 .../cxf/AbstractCXFGreeterRouterTest.java          |   2 +-
 .../CxfConsumerPayloadFaultCauseEnabledTest.java   |   2 +-
 .../cxf/CxfPayLoadMessageXmlBindingRouterTest.java |   2 +-
 .../cxf/CxfPayLoadSoapHeaderSpringTest.java        |   2 +-
 .../CxfPayloadConsumerNamespaceOnEnvelopeTest.java |   2 +-
 .../CxfPayloadProducerNamespaceOnEnvelopeTest.java |   2 +-
 .../cxf/CxfPayloadRouterContentLengthTest.java     |   2 +-
 .../cxf/CxfSpringCustomizedExceptionTest.java      |   2 +-
 .../camel/component/cxf/CxfSpringRouterTest.java   |   2 +-
 .../cxf/converter/PayLoadConvertToPOJOTest.java    |   2 +-
 .../cxf/jms/CxfEndpointJMSConsumerTest.java        |   3 +-
 .../component/cxf/multipart/CXFMultiPartTest.java  |   2 +-
 .../cxf/util/CxfEndpointUtilsWithSpringTest.java   |   2 +-
 .../cxf/wssecurity/camel/WSSecurityRouteTest.java  |   2 +-
 .../component/infinispan/InfinispanConstants.java  | 107 ------
 .../component/infinispan/InfinispanProducer.java   |  18 -
 .../InfinispanRemoteQueryProducerIT.java           |   3 +-
 ...melJaxbNoNamespaceSchemaLocationSpringTest.java |   2 +-
 .../org/apache/camel/jaxb/CamelJaxbSpringTest.java |   2 +-
 .../jibx/JibxDataFormatSpringDslTest.java          |   2 +-
 .../camel-jms/src/main/docs/jms-component.adoc     |  10 +-
 .../apache/camel/component/jms/JmsComponent.java   |   1 -
 .../camel/component/jms/JmsConfiguration.java      |  34 +-
 .../apache/camel/component/jms/JmsEndpoint.java    |  12 -
 .../jms/JmsEndpointConfigurationTest.java          |   6 -
 .../jms/JmsHeaderFilteringWithSpringTest.java      |   2 +-
 .../component/jms/JmsRouteUsingSpringTest.java     |   2 +-
 .../jms/JmsSpringLoadBalanceFailoverTest.java      |   4 +-
 .../camel/processor/jpa/AbstractJpaTest.java       |   2 +-
 .../component/mongodb3/AbstractMongoDbTest.java    |   2 +-
 .../mongodb3/MongoDbSpringDslOperationsTest.java   |   2 +-
 .../camel-msv/src/main/docs/msv-component.adoc     |   3 +-
 .../script/example/AnyLanguageFilterTest.java      |   2 +-
 .../script/example/BeanShellFilterTest.java        |   2 +-
 .../builder/script/example/GroovyFilterTest.java   |   2 +-
 .../script/example/JavaScriptFilterTest.java       |   2 +-
 .../slack/SlackComponentVerifierExtension.java     |   5 +-
 .../camel/component/slack/SlackConsumer.java       |  25 +-
 .../camel/spring/CamelContextFactoryBean.java      |  16 -
 .../apache/camel/spring/SpringCamelContext.java    |  29 --
 .../spring/handler/CamelNamespaceHandler.java      |  33 --
 .../camel/component/log/SpringLogMaskTest.java     |   6 +-
 .../org/apache/camel/spring/SpringTestSupport.java |   3 +-
 .../spring/example/SpringXPathFilterTest.java      |   2 +-
 .../spring/processor/SpringLogEipMaskTest.java     |   4 +-
 .../camel/spring/processor/SpringTestHelper.java   |   2 +-
 .../remoting/SpringRemotingBeanConverterTest.java  |   2 +-
 .../spring/remoting/SpringRemotingRouteTest.java   |   2 +-
 .../SpringRemotingTwoCamelContextTest.java         |   2 +-
 .../swagger/servlet/RestSwaggerCorsFilter.java     | 118 -------
 .../camel/swagger/servlet/RestSwaggerServlet.java  | 275 ----------------
 .../servlet/ServletRestApiResponseAdapter.java     |  49 ---
 .../xmlsecurity/SpringXmlSignatureTest.java        |   4 +-
 .../xstream/SpringMarshalDomainObjectJSONTest.java |   2 +-
 .../dataformat/xstream/SpringMarshalListTest.java  |   2 +-
 .../xstream/SpringMarshalOmitFieldsTest.java       |   2 +-
 .../xstream/SpringXStreamConfigurationTest.java    |   2 +-
 .../jms/springboot/JmsComponentConfiguration.java  |  14 -
 80 files changed, 104 insertions(+), 1578 deletions(-)

diff --git a/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java b/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java
index 5067154..aad936c 100644
--- a/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java
+++ b/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java
@@ -39,7 +39,7 @@ public class AvroHttpSpringProducerTest extends AvroHttpProducerTest {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/component/avro/avro-http-producer.xml");
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     @Override
diff --git a/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java b/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java
index 2beabd2..7941c9c0 100644
--- a/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java
+++ b/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java
@@ -51,7 +51,7 @@ public class AvroNettySpringConsumerTest extends AvroNettyConsumerTest {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/component/avro/avro-netty-consumer.xml");
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     @Override
diff --git a/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java b/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java
index 19b03af..073e284 100644
--- a/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java
+++ b/components/camel-avro/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java
@@ -37,7 +37,7 @@ public class AvroNettySpringProducerTest extends AvroNettyProducerTest {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/component/avro/avro-netty-producer.xml");
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     @Override
diff --git a/components/camel-avro/src/test/java/org/apache/camel/dataformat/avro/AvroMarshalAndUnmarshalSpringTest.java b/components/camel-avro/src/test/java/org/apache/camel/dataformat/avro/AvroMarshalAndUnmarshalSpringTest.java
index c80369d..912d433 100644
--- a/components/camel-avro/src/test/java/org/apache/camel/dataformat/avro/AvroMarshalAndUnmarshalSpringTest.java
+++ b/components/camel-avro/src/test/java/org/apache/camel/dataformat/avro/AvroMarshalAndUnmarshalSpringTest.java
@@ -27,7 +27,7 @@ public class AvroMarshalAndUnmarshalSpringTest extends AvroMarshalAndUnmarshallT
 
     protected CamelContext createCamelContext() throws Exception {
         applicationContext =  new ClassPathXmlApplicationContext("org/apache/camel/dataformat/avro/springDataFormat.xml");
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     public boolean isUseRouteBuilder() {
diff --git a/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeDataFormatSpringTest.java b/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeDataFormatSpringTest.java
index 4fe967b..6e19939 100644
--- a/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeDataFormatSpringTest.java
+++ b/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeDataFormatSpringTest.java
@@ -36,7 +36,7 @@ public class BarcodeDataFormatSpringTest extends BarcodeDataFormatCamelTest {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/dataformat/barcode/barcodeDataformatSpring.xml");
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
 }
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
index 92fb721..0818242 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
@@ -22,7 +22,6 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.EventObject;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -368,7 +367,7 @@ public class CdiCamelExtension implements Extension {
             .filter(ip -> getRawType(ip.getType()).getName().startsWith("org.apache.camel"))
             .map(InjectionPoint::getQualifiers)
             .flatMap(Set::stream)
-            .anyMatch(isAnnotationType(Uri.class).or(isAnnotationType(Mock.class)).or(isEqual(DEFAULT)));
+            .anyMatch(isAnnotationType(Uri.class).or(isEqual(DEFAULT)));
     }
 
     private SyntheticBean<?> camelContextBean(BeanManager manager, Class<?> beanClass, Annotation... qualifiers) {
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java
index e5e0ca8..9f05405 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java
@@ -30,7 +30,6 @@ import javax.enterprise.inject.InjectionException;
 import javax.enterprise.inject.Instance;
 import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.Typed;
-import javax.enterprise.inject.UnsatisfiedResolutionException;
 import javax.enterprise.inject.spi.InjectionPoint;
 
 import org.apache.camel.CamelContext;
@@ -69,9 +68,7 @@ final class CdiCamelFactory {
 
     private static ProducerTemplate producerTemplateFromUri(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension, Uri uri) {
         try {
-            CamelContext context = uri.context().isEmpty()
-                ? selectContext(ip, instance, extension)
-                : selectContext(uri.context(), instance);
+            CamelContext context = selectContext(ip, instance, extension);
             ProducerTemplate producerTemplate = context.createProducerTemplate();
             Endpoint endpoint = context.getEndpoint(uri.value(), Endpoint.class);
             producerTemplate.setDefaultEndpoint(endpoint);
@@ -101,9 +98,7 @@ final class CdiCamelFactory {
 
     private static FluentProducerTemplate fluentProducerTemplateFromUri(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension, Uri uri) {
         try {
-            CamelContext context = uri.context().isEmpty()
-                ? selectContext(ip, instance, extension)
-                : selectContext(uri.context(), instance);
+            CamelContext context = selectContext(ip, instance, extension);
             FluentProducerTemplate producerTemplate = context.createFluentProducerTemplate();
             Endpoint endpoint = context.getEndpoint(uri.value(), Endpoint.class);
             producerTemplate.setDefaultEndpoint(endpoint);
@@ -141,9 +136,7 @@ final class CdiCamelFactory {
     private static MockEndpoint mockEndpointFromUri(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension) {
         Uri uri = getQualifierByType(ip, Uri.class).get();
         try {
-            CamelContext context = uri.context().isEmpty()
-                ? selectContext(ip, instance, extension)
-                : selectContext(uri.context(), instance);
+            CamelContext context = selectContext(ip, instance, extension);
             return context.getEndpoint(uri.value(), MockEndpoint.class);
         } catch (Exception cause) {
             throw new InjectionException("Error injecting mock endpoint annotated with " + uri
@@ -151,33 +144,13 @@ final class CdiCamelFactory {
         }
     }
 
-    // Maintained for backward compatibility reason though this is redundant with @Uri
-    // see https://issues.apache.org/jira/browse/CAMEL-5553?focusedCommentId=13445936&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13445936
-    @Mock
-    @Produces
-    @Typed(MockEndpoint.class)
-    // Qualifiers are dynamically added in CdiCamelExtension
-    private static MockEndpoint createMockEndpoint(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension) {
-        Mock mock = getQualifierByType(ip, Mock.class).get();
-        try {
-            CamelContext context = mock.context().isEmpty()
-                ? selectContext(ip, instance, extension)
-                : selectContext(mock.context(), instance);
-            return context.getEndpoint(mock.value(), MockEndpoint.class);
-        } catch (Exception cause) {
-            throw new InjectionException("Error injecting mock endpoint annotated with " + mock + " into " + ip, cause);
-        }
-    }
-
     @Uri("")
     @Produces
     // Qualifiers are dynamically added in CdiCamelExtension
     private static Endpoint endpoint(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension) {
         Uri uri = getQualifierByType(ip, Uri.class).get();
         try {
-            CamelContext context = uri.context().isEmpty()
-                ? selectContext(ip, instance, extension)
-                : selectContext(uri.context(), instance);
+            CamelContext context = selectContext(ip, instance, extension);
             return context.getEndpoint(uri.value(), Endpoint.class);
         } catch (Exception cause) {
             throw new InjectionException("Error injecting endpoint annotated with " + uri + " into " + ip, cause);
@@ -200,15 +173,6 @@ final class CdiCamelFactory {
         return context.getEndpoint(uri, CdiEventEndpoint.class);
     }
 
-    private static <T extends CamelContext> T selectContext(String name, Instance<T> instance) {
-        for (T context : instance) {
-            if (name.equals(context.getName())) {
-                return context;
-            }
-        }
-        throw new UnsatisfiedResolutionException("No Camel context with name [" + name + "] is deployed!");
-    }
-
     private static <T extends CamelContext> T selectContext(InjectionPoint ip, Instance<T> instance, CdiCamelExtension extension) {
         Collection<Annotation> qualifiers = new HashSet<>(ip.getQualifiers());
         qualifiers.retainAll(extension.getContextQualifiers());
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Mock.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Mock.java
deleted file mode 100644
index bcc4500..0000000
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Mock.java
+++ /dev/null
@@ -1,55 +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.cdi;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import javax.enterprise.util.Nonbinding;
-import javax.inject.Qualifier;
-
-/**
- * A qualifier for injecting instances of {@link org.apache.camel.component.mock.MockEndpoint} into a bean.
- *
- * @deprecated Use {@link org.apache.camel.cdi.Uri} instead:
- *
- * <pre><code>
- * {@literal @}Inject
- * {@literal @}Uri("mock:outbound")
- * MockEndpoint mock;
- * </code></pre>
- */
-@Deprecated
-@Qualifier
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
-public @interface Mock {
-
-    /**
-     * Returns an optional URI used to create the {@code MockEndpoint}.
-     */
-    @Nonbinding
-    String value() default "";
-
-    /**
-     * Returns the name of the Camel context to use to resolve the {@code MockEndpoint}.
-     */
-    @Nonbinding
-    String context() default "";
-
-}
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java
deleted file mode 100644
index 6edc7cc..0000000
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java
+++ /dev/null
@@ -1,99 +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.cdi;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import javax.xml.bind.JAXBException;
-
-import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.model.ModelHelper;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * A helper class for loading route definitions from a file, URL or the classpath.
- *
- * @deprecated Use {@link org.apache.camel.cdi.ImportResource} instead:
- *
- * <pre><code>
- * {@literal @}ImportResource("foo-camel-context.xml")
- *  class BarBean {
- *
- *  };
- * </code></pre>
- */
-@Vetoed
-@Deprecated
-public final class RoutesXml {
-
-    private RoutesXml() {
-        //The helper class
-    }
-
-    /**
-     * Loads the routes from the given XML content
-     */
-    public static RoutesDefinition loadRoutesFromXML(ModelCamelContext camelContext, String xml) throws JAXBException {
-        return ModelHelper.createModelFromXml(camelContext, xml, RoutesDefinition.class);
-    }
-
-    /**
-     * Loads the routes from the classpath
-     */
-    public static RoutesDefinition loadRoutesFromClasspath(ModelCamelContext camelContext, String uri) throws JAXBException {
-        InputStream stream = ObjectHelper.loadResourceAsStream(uri);
-        ObjectHelper.notNull(stream, "Could not find resource '" + uri + "' on the ClassLoader");
-        return ModelHelper.createModelFromXml(camelContext, stream, RoutesDefinition.class);
-    }
-
-    /**
-     * Loads the routes from a {@link URL}
-     */
-    public static RoutesDefinition loadRoutesFromURL(ModelCamelContext camelContext, URL url) throws JAXBException, IOException {
-        ObjectHelper.notNull(url, "url");
-        return ModelHelper.createModelFromXml(camelContext, url.openStream(), RoutesDefinition.class);
-    }
-
-    /**
-     * Loads the routes from a {@link URL}
-     */
-    public static RoutesDefinition loadRoutesFromURL(ModelCamelContext camelContext, String url) throws IOException, JAXBException {
-        return loadRoutesFromURL(camelContext, new URL(url));
-    }
-
-    /**
-     * Loads the routes from a {@link File}
-     */
-    public static RoutesDefinition loadRoutesFromFile(ModelCamelContext camelContext, File file) throws JAXBException, FileNotFoundException {
-        ObjectHelper.notNull(file, "file");
-        return ModelHelper.createModelFromXml(camelContext, new FileInputStream(file), RoutesDefinition.class);
-    }
-
-    /**
-     * Loads the routes from a {@link File}
-     */
-    public static RoutesDefinition loadRoutesFromFile(ModelCamelContext camelContext, String fileName)
-        throws JAXBException, FileNotFoundException {
-        return loadRoutesFromFile(camelContext, new File(fileName));
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Uri.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Uri.java
index 538f882..b32babc 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Uri.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Uri.java
@@ -48,20 +48,6 @@ public @interface Uri {
      */
     @Nonbinding String value();
 
-    /**
-     * Returns the name of the {@code CamelContext} to use to resolve the Camel resource for this URI.
-     *
-     * @deprecated Use the {@link ContextName} qualifier to specify the name of the {@code CamelContext} instead:
-     * <pre><code>
-     * {@literal @}Inject
-     * {@literal @}ContextName("foo")
-     * {@literal @}Uri("seda:bar")
-     * Endpoint endpoint;
-     * </code></pre>
-     */
-    @Deprecated
-    @Nonbinding String context() default "";
-
     final class Literal extends AnnotationLiteral<Uri> implements Uri {
 
         private static final long serialVersionUID = 1L;
@@ -81,9 +67,5 @@ public @interface Uri {
             return uri;
         }
 
-        @Override
-        public String context() {
-            return "";
-        }
     }
 }
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/MockAnnotationRoute.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/MockAnnotationRoute.java
index 78aff0c..88333d7 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/MockAnnotationRoute.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/MockAnnotationRoute.java
@@ -20,7 +20,6 @@ import javax.inject.Inject;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.cdi.Mock;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.component.mock.MockEndpoint;
 
@@ -31,7 +30,7 @@ public class MockAnnotationRoute extends RouteBuilder {
     private Endpoint directEP;
 
     @Inject
-    @Mock("mock:result")
+    @Uri("mock:result")
     private MockEndpoint mockEP;
 
     @Override
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MockEndpointTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MockEndpointTest.java
index 7bf0ba7..3f86516 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MockEndpointTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MockEndpointTest.java
@@ -21,7 +21,6 @@ import javax.inject.Inject;
 
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.cdi.CdiCamelExtension;
-import org.apache.camel.cdi.Mock;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.cdi.bean.DefaultCamelContextBean;
 import org.apache.camel.cdi.bean.MockAnnotationRoute;
@@ -51,7 +50,7 @@ public class MockEndpointTest {
     private ProducerTemplate defaultInbound;
 
     @Inject
-    @Mock("mock:result")
+    @Uri("mock:result")
     private MockEndpoint defaultOutbound;
 
     @Deployment
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuildersWithContextNamesTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuildersWithContextNamesTest.java
index 045f80e..c7ec13f 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuildersWithContextNamesTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuildersWithContextNamesTest.java
@@ -84,9 +84,9 @@ public class RouteBuildersWithContextNamesTest {
     }
 
     @Test
-    public void sendMessageToFirstInbound(@Uri(value = "direct:inbound", context = "first")
+    public void sendMessageToFirstInbound(@Uri(value = "direct:inbound") @ContextName("first")
                                           ProducerTemplate inbound,
-                                          @Uri(value = "mock:outbound", context = "first")
+                                          @Uri(value = "mock:outbound") @ContextName("first")
                                           MockEndpoint outbound) throws InterruptedException {
         outbound.expectedMessageCount(1);
         outbound.expectedBodiesReceived("test");
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriQualifierWithContextTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriQualifierWithContextTest.java
index 5e17b1d..d21e0fc 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriQualifierWithContextTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriQualifierWithContextTest.java
@@ -24,7 +24,6 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cdi.CdiCamelExtension;
 import org.apache.camel.cdi.ContextName;
-import org.apache.camel.cdi.Mock;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.cdi.bean.FirstCamelContextBean;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -43,11 +42,11 @@ import static org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied;
 public class UriQualifierWithContextTest {
 
     @Inject
-    @Uri(value = "mock:outbound", context = "first")
+    @Uri(value = "mock:outbound") @ContextName("first")
     private MockEndpoint outbound;
 
     @Inject
-    @Uri(value = "direct:inbound", context = "first")
+    @Uri(value = "direct:inbound") @ContextName("first")
     private ProducerTemplate inbound;
 
     @Deployment
@@ -76,11 +75,11 @@ public class UriQualifierWithContextTest {
 class UriWithContextRoute extends RouteBuilder {
 
     @Inject
-    @Uri(value = "direct:inbound", context = "first")
+    @Uri(value = "direct:inbound") @ContextName("first")
     Endpoint inbound;
 
     @Inject
-    @Mock(value = "mock:outbound", context = "first")
+    @Uri(value = "mock:outbound") @ContextName("first")
     MockEndpoint outbound;
 
     @Override
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriWithWrongContextTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriWithWrongContextTest.java
index e6297ab..f7ddf79 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriWithWrongContextTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UriWithWrongContextTest.java
@@ -44,9 +44,9 @@ public class UriWithWrongContextTest {
     @ClassRule
     public static TestRule exception = ExpectedDeploymentException.none()
         .expect(RuntimeException.class)
-        .expectMessage(containsString("Error adding routes of type [" + UriWithWrongContextRoute.class.getName() + "] to Camel context [first]"))
-        .expectMessage(containsString("Error injecting endpoint annotated with @org.apache.camel.cdi.Uri"))
-        .expectMessage(containsString("No Camel context with name [second] is deployed!"));
+//        .expectMessage(containsString("Error adding routes of type [" + UriWithWrongContextRoute.class.getName() + "] to Camel context [first]"))
+//        .expectMessage(containsString("Error injecting endpoint annotated with @org.apache.camel.cdi.Uri"))
+        .expectMessage(containsString("WELD-001408 Unsatisfied dependencies for type [Endpoint] with qualifiers [@Uri @ContextName] at injection point [[field] @Uri @ContextName @Inject org.apache.camel.cdi.test.UriWithWrongContextRoute.inbound]"));
 
     @Deployment
     public static Archive<?> deployment() {
@@ -68,7 +68,7 @@ public class UriWithWrongContextTest {
 class UriWithWrongContextRoute extends RouteBuilder {
 
     @Inject
-    @Uri(value = "direct:inbound", context = "second")
+    @Uri(value = "direct:inbound") @ContextName("second")
     Endpoint inbound;
 
     @Override
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java
deleted file mode 100644
index ee6e3bb..0000000
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java
+++ /dev/null
@@ -1,362 +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.component.consul.policy;
-
-import java.math.BigInteger;
-import java.util.HashSet;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-
-import com.orbitz.consul.Consul;
-import com.orbitz.consul.KeyValueClient;
-import com.orbitz.consul.SessionClient;
-import com.orbitz.consul.async.ConsulResponseCallback;
-import com.orbitz.consul.model.ConsulResponse;
-import com.orbitz.consul.model.kv.Value;
-import com.orbitz.consul.model.session.ImmutableSession;
-import com.orbitz.consul.option.QueryOptions;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Route;
-import org.apache.camel.api.management.ManagedAttribute;
-import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.component.consul.ConsulConfiguration;
-import org.apache.camel.component.consul.ConsulConstants;
-import org.apache.camel.support.RoutePolicySupport;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @deprecated use {@link org.apache.camel.component.consul.cluster.ConsulClusterService} and {@link org.apache.camel.impl.cluster.ClusteredRoutePolicy} instead.
- */
-@Deprecated
-@ManagedResource(description = "Route policy using Consul as clustered lock")
-public final class ConsulRoutePolicy extends RoutePolicySupport implements CamelContextAware {
-    private static final Logger LOGGER = LoggerFactory.getLogger(ConsulRoutePolicy.class);
-
-    private final Object lock = new Object();
-    private final AtomicBoolean leader = new AtomicBoolean(false);
-    private final Set<Route> suspendedRoutes = new HashSet<>();
-    private final AtomicReference<BigInteger> index = new AtomicReference<>(BigInteger.valueOf(0));
-
-    private Route route;
-    private CamelContext camelContext;
-    private String serviceName;
-    private String servicePath;
-    private ExecutorService executorService;
-
-    private int ttl = 60;
-    private int lockDelay = 10;
-    private boolean shouldStopConsumer = true;
-    private String consulUrl = ConsulConstants.CONSUL_DEFAULT_URL;
-
-    private Consul consul;
-    private SessionClient sessionClient;
-    private KeyValueClient keyValueClient;
-
-    private String sessionId;
-
-    public ConsulRoutePolicy() {
-    }
-
-    public ConsulRoutePolicy(String consulUrl) {
-        this.consulUrl = consulUrl;
-    }
-
-    public ConsulRoutePolicy(ConsulConfiguration configuration) throws Exception {
-        this.consulUrl = configuration.getUrl();
-        this.consul = configuration.createConsulClient(camelContext);
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    public String getConsulUrl() {
-        return consulUrl;
-    }
-
-    public void setConsulUrl(String consulUrl) {
-        this.consulUrl = consulUrl;
-    }
-
-    @Override
-    public void onInit(Route route) {
-        super.onInit(route);
-        this.route = route;
-    }
-
-    @Override
-    public void onStart(Route route)  {
-        if (!leader.get() && shouldStopConsumer) {
-            stopConsumer(route);
-        }
-    }
-
-    @Override
-    public void onStop(Route route) {
-        synchronized (lock) {
-            suspendedRoutes.remove(route);
-        }
-    }
-
-    @Override
-    public synchronized void onSuspend(Route route) {
-        synchronized (lock) {
-            suspendedRoutes.remove(route);
-        }
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        ObjectHelper.notNull(camelContext, "camelContext");
-        ObjectHelper.notNull(serviceName, "serviceName");
-        ObjectHelper.notNull(servicePath, "servicePath");
-
-        if (consul == null) {
-            Consul.Builder builder = Consul.builder();
-            if (consulUrl != null) {
-                builder.withUrl(consulUrl);
-            }
-
-            consul = builder.build();
-        }
-
-        if (sessionClient == null) {
-            sessionClient = consul.sessionClient();
-        }
-        if (keyValueClient == null) {
-            keyValueClient = consul.keyValueClient();
-        }
-
-        if (sessionId == null) {
-            sessionId = sessionClient.createSession(
-                ImmutableSession.builder()
-                    .name(serviceName)
-                    .ttl(ttl + "s")
-                    .lockDelay(lockDelay + "s")
-                    .build()
-                ).getId();
-
-            LOGGER.debug("SessionID = {}", sessionId);
-            if (executorService == null) {
-                executorService = getCamelContext().getExecutorServiceManager().newSingleThreadExecutor(this, "ConsulRoutePolicy");
-            }
-
-            setLeader(keyValueClient.acquireLock(servicePath, sessionId));
-
-            executorService.submit(new Watcher());
-        }
-
-        super.doStart();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-
-        if (sessionId != null) {
-            sessionClient.destroySession(sessionId);
-            sessionId = null;
-        }
-
-        if (executorService != null) {
-            getCamelContext().getExecutorServiceManager().shutdownGraceful(executorService);
-        }
-    }
-
-    // *************************************************************************
-    //
-    // *************************************************************************
-
-    protected void setLeader(boolean isLeader) {
-        if (isLeader && leader.compareAndSet(false, isLeader)) {
-            LOGGER.debug("Leadership taken ({}, {})", serviceName, sessionId);
-            startAllStoppedConsumers();
-        } else {
-            if (!leader.getAndSet(isLeader) && isLeader) {
-                LOGGER.debug("Leadership lost ({}, {})", serviceName, sessionId);
-            }
-        }
-    }
-
-    private void startConsumer(Route route) {
-        synchronized (lock) {
-            try {
-                if (suspendedRoutes.contains(route)) {
-                    startConsumer(route.getConsumer());
-                    suspendedRoutes.remove(route);
-                }
-            } catch (Exception e) {
-                handleException(e);
-            }
-        }
-    }
-
-    private void stopConsumer(Route route) {
-        synchronized (lock) {
-            try {
-                if (!suspendedRoutes.contains(route)) {
-                    LOGGER.debug("Stopping consumer for {} ({})", route.getId(), route.getConsumer());
-                    stopConsumer(route.getConsumer());
-                    suspendedRoutes.add(route);
-                }
-            } catch (Exception e) {
-                handleException(e);
-            }
-        }
-    }
-
-    private void startAllStoppedConsumers() {
-        synchronized (lock) {
-            try {
-                for (Route route : suspendedRoutes) {
-                    LOGGER.debug("Starting consumer for {} ({})", route.getId(), route.getConsumer());
-                    startConsumer(route.getConsumer());
-                }
-
-                suspendedRoutes.clear();
-            } catch (Exception e) {
-                handleException(e);
-            }
-        }
-    }
-
-    // *************************************************************************
-    // Getter/Setters
-    // *************************************************************************
-
-    @ManagedAttribute(description = "The route id")
-    public String getRouteId() {
-        if (route != null) {
-            return route.getId();
-        }
-        return null;
-    }
-
-    @ManagedAttribute(description = "The consumer endpoint", mask = true)
-    public String getEndpointUrl() {
-        if (route != null && route.getConsumer() != null && route.getConsumer().getEndpoint() != null) {
-            return route.getConsumer().getEndpoint().toString();
-        }
-        return null;
-    }
-
-    public Consul getConsul() {
-        return consul;
-    }
-
-    @ManagedAttribute(description = "The consul service name")
-    public String getServiceName() {
-        return serviceName;
-    }
-
-    public void setServiceName(String serviceName) {
-        this.serviceName = serviceName;
-        this.servicePath = String.format("/service/%s/leader", serviceName);
-    }
-
-    @ManagedAttribute(description = "The time to live (seconds)")
-    public int getTtl() {
-        return ttl;
-    }
-
-    public void setTtl(int ttl) {
-        this.ttl = ttl > 10 ? ttl : 10;
-    }
-
-    @ManagedAttribute(description = "The lock delay (seconds)")
-    public int getLockDelay() {
-        return lockDelay;
-    }
-
-    public void setLockDelay(int lockDelay) {
-        this.lockDelay = lockDelay > 10 ? lockDelay : 10;
-    }
-
-    @ManagedAttribute(description = "Whether to stop consumer when starting up and failed to become master")
-    public boolean isShouldStopConsumer() {
-        return shouldStopConsumer;
-    }
-
-    public void setShouldStopConsumer(boolean shouldStopConsumer) {
-        this.shouldStopConsumer = shouldStopConsumer;
-    }
-
-    @ManagedAttribute(description = "Is this route the master or a slave")
-    public boolean isLeader() {
-        return leader.get();
-    }
-
-    // *************************************************************************
-    // Watch
-    // *************************************************************************
-
-    private class Watcher implements Runnable, ConsulResponseCallback<Optional<Value>> {
-
-        @Override
-        public void onComplete(ConsulResponse<Optional<Value>> consulResponse) {
-            if (isRunAllowed()) {
-                Optional<Value> value = consulResponse.getResponse();
-                if (value.isPresent()) {
-                    Optional<String> sid = value.get().getSession();
-                    if (sid.isPresent() && ObjectHelper.isNotEmpty(sid.get())) {
-                        // If the key is not held by any session, try acquire a
-                        // lock (become leader)
-                        LOGGER.debug("Try to take leadership ...");
-                        setLeader(keyValueClient.acquireLock(servicePath, sessionId));
-                    } else if (!sessionId.equals(sid) && leader.get()) {
-                        // Looks like I've lost leadership
-                        setLeader(false);
-                    }
-                }
-
-                index.set(consulResponse.getIndex());
-                run();
-            }
-        }
-
-        @Override
-        public void onFailure(Throwable throwable) {
-            handleException(throwable);
-        }
-
-        @Override
-        public void run() {
-            if (isRunAllowed()) {
-                // Refresh session
-                sessionClient.renewSession(sessionId);
-
-                keyValueClient.getValue(
-                    servicePath,
-                    QueryOptions.blockSeconds(ttl / 3, index.get()).build(),
-                    this
-                );
-            }
-        }
-    }
-}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/policy/ConsulRoutePolicyMain.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/policy/ConsulRoutePolicyMain.java
deleted file mode 100644
index b93181b..0000000
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/policy/ConsulRoutePolicyMain.java
+++ /dev/null
@@ -1,48 +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.component.consul.policy;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.consul.ConsulConstants;
-import org.apache.camel.main.Main;
-
-public final class ConsulRoutePolicyMain {
-
-    private ConsulRoutePolicyMain() {
-    }
-
-    public static void main(final String[] args) throws Exception {
-        Main main = new Main();
-        main.addRouteBuilder(new RouteBuilder() {
-            public void configure() {
-                ConsulRoutePolicy policy = new ConsulRoutePolicy();
-                policy.setConsulUrl(ConsulConstants.CONSUL_DEFAULT_URL);
-                policy.setServiceName(args[0]);
-                policy.setTtl(15);
-
-                from("file:///tmp/camel?delete=true")
-                    .routeId(args[1])
-                    .routePolicy(policy)
-                    .setHeader("ConsulRouteID", simple("${routeId}"))
-                    .setHeader("ConsulServiceName", constant(args[0]))
-                    .to("log:org.apache.camel.component.consul?level=INFO&showAll=true");
-            }
-        });
-
-        main.run();
-    }
-}
diff --git a/components/camel-crypto-cms/src/test/java/org/apache/camel/component/crypto/cms/SpringComponentTest.java b/components/camel-crypto-cms/src/test/java/org/apache/camel/component/crypto/cms/SpringComponentTest.java
index e5b9414..f1664a9 100644
--- a/components/camel-crypto-cms/src/test/java/org/apache/camel/component/crypto/cms/SpringComponentTest.java
+++ b/components/camel-crypto-cms/src/test/java/org/apache/camel/component/crypto/cms/SpringComponentTest.java
@@ -20,12 +20,14 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spring.SpringCamelContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class SpringComponentTest extends ComponentTest {
 
     protected CamelContext createCamelContext() throws Exception {
 
-        return SpringCamelContext.springCamelContext("SpringCryptoCmsTests.xml");
+        return SpringCamelContext.springCamelContext(
+                new ClassPathXmlApplicationContext("SpringCryptoCmsTests.xml"), true);
     }
 
     @Override
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java
index 1fa1727..533efd0 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.security.NoSuchProviderException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -31,12 +30,9 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ResourceHelper;
 import org.bouncycastle.bcpg.sig.KeyFlags;
-import org.bouncycastle.openpgp.PGPEncryptedDataList;
 import org.bouncycastle.openpgp.PGPException;
-import org.bouncycastle.openpgp.PGPObjectFactory;
 import org.bouncycastle.openpgp.PGPPrivateKey;
 import org.bouncycastle.openpgp.PGPPublicKey;
-import org.bouncycastle.openpgp.PGPPublicKeyEncryptedData;
 import org.bouncycastle.openpgp.PGPPublicKeyRing;
 import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
 import org.bouncycastle.openpgp.PGPSecretKey;
@@ -64,31 +60,6 @@ public final class PGPDataFormatUtil {
     private PGPDataFormatUtil() {
     }
 
-    @Deprecated
-    public static PGPPublicKey findPublicKey(CamelContext context, String filename, String userid, boolean forEncryption)
-        throws IOException, PGPException, NoSuchProviderException {
-        return findPublicKey(context, filename, null, userid, forEncryption);
-    }
-
-    @Deprecated
-    public static PGPPublicKey findPublicKey(CamelContext context, String filename, byte[] keyRing, String userid, boolean forEncryption)
-        throws IOException, PGPException, NoSuchProviderException {
-
-        InputStream is = determineKeyRingInputStream(context, filename, keyRing, forEncryption);
-
-        try {
-            List<PGPPublicKey> result = findPublicKeys(is, Collections.singletonList(userid), forEncryption);
-            if (result.isEmpty()) {
-                return null;
-            } else {
-                return result.get(0);
-            }
-        } finally {
-            IOHelper.close(is);
-        }
-
-    }
-
     public static List<PGPPublicKey> findPublicKeys(CamelContext context, String filename, byte[] keyRing, List<String> userids,
             boolean forEncryption) throws IOException, PGPException, NoSuchProviderException {
         InputStream is = determineKeyRingInputStream(context, filename, keyRing, forEncryption);
@@ -99,19 +70,6 @@ public final class PGPDataFormatUtil {
         }
     }
 
-    @Deprecated
-    public static PGPPublicKey findPublicKeyWithKeyId(CamelContext context, String filename, byte[] keyRing, long keyid,
-            boolean forEncryption) throws IOException, PGPException, NoSuchProviderException {
-        InputStream is = determineKeyRingInputStream(context, filename, keyRing, forEncryption);
-        PGPPublicKey pubKey;
-        try {
-            pubKey = findPublicKeyWithKeyId(is, keyid);
-        } finally {
-            IOHelper.close(is);
-        }
-        return pubKey;
-    }
-
     public static PGPPublicKeyRingCollection getPublicKeyRingCollection(CamelContext context, String filename, byte[] keyRing, boolean forEncryption) throws IOException, PGPException {
         InputStream is = determineKeyRingInputStream(context, filename, keyRing, forEncryption);
         try {
@@ -190,14 +148,6 @@ public final class PGPDataFormatUtil {
         return is;
     }
 
-    private static PGPPublicKey findPublicKeyWithKeyId(InputStream input, long keyid) throws IOException, PGPException,
-            NoSuchProviderException {
-        PGPPublicKeyRingCollection pgpSec = 
-            new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(input),
-                                           new BcKeyFingerprintCalculator());
-        return pgpSec.getPublicKey(keyid);
-    }
-
     private static List<PGPPublicKey> findPublicKeys(InputStream input, List<String> userids, boolean forEncryption) throws IOException,
             PGPException, NoSuchProviderException {
 
@@ -284,99 +234,6 @@ public final class PGPDataFormatUtil {
         return algorithm == RSA_GENERAL || algorithm == RSA_SIGN || algorithm == DSA || algorithm == ECDSA || algorithm == ELGAMAL_GENERAL;
     }
 
-    @Deprecated
-    public static PGPPrivateKey findPrivateKey(CamelContext context, String keychainFilename, InputStream encryptedInput, String passphrase)
-        throws IOException, PGPException, NoSuchProviderException {
-        return findPrivateKey(context, keychainFilename, null, encryptedInput, passphrase, "BC");
-    }
-
-    @Deprecated
-    public static PGPPrivateKey findPrivateKey(CamelContext context, String keychainFilename, byte[] secKeyRing,
-            InputStream encryptedInput, String passphrase, String provider) throws IOException, PGPException, NoSuchProviderException {
-        return findPrivateKey(context, keychainFilename, secKeyRing, encryptedInput, passphrase, null, provider);
-    }
-
-    @Deprecated
-    public static PGPPrivateKey findPrivateKey(CamelContext context, String keychainFilename, byte[] secKeyRing,
-            InputStream encryptedInput, String passphrase, PGPPassphraseAccessor passphraseAccessor, String provider) throws IOException,
-            PGPException, NoSuchProviderException {
-
-        InputStream keyChainInputStream = determineKeyRingInputStream(context, keychainFilename, secKeyRing, true);
-        PGPPrivateKey privKey = null;
-        try {
-            privKey = findPrivateKey(keyChainInputStream, encryptedInput, passphrase, passphraseAccessor, provider);
-        } finally {
-            IOHelper.close(keyChainInputStream);
-        }
-        return privKey;
-    }
-
-    @Deprecated
-    private static PGPPrivateKey findPrivateKey(InputStream keyringInput, InputStream encryptedInput, String passphrase,
-            PGPPassphraseAccessor passphraseAccessor, String provider) throws IOException, PGPException, NoSuchProviderException {
-        PGPSecretKeyRingCollection pgpSec = 
-            new PGPSecretKeyRingCollection(PGPUtil.getDecoderStream(keyringInput),
-                                           new BcKeyFingerprintCalculator());
-        PGPObjectFactory factory = new PGPObjectFactory(PGPUtil.getDecoderStream(encryptedInput),
-                                                        new BcKeyFingerprintCalculator());
-        PGPEncryptedDataList enc;
-        Object o = factory.nextObject();
-        if (o == null) {
-            throw new PGPException("Provided input is not encrypted.");
-        }
-        if (o instanceof PGPEncryptedDataList) {
-            enc = (PGPEncryptedDataList) o;
-        } else {
-            enc = (PGPEncryptedDataList) factory.nextObject();
-        }
-        encryptedInput.reset(); // nextObject() method reads from the InputStream, so rewind it!
-        Iterator<?> encryptedDataObjects = enc.getEncryptedDataObjects();
-        PGPPrivateKey privateKey = null;
-        PGPPublicKeyEncryptedData encryptedData = null;
-        while (privateKey == null && encryptedDataObjects.hasNext()) {
-            encryptedData = (PGPPublicKeyEncryptedData) encryptedDataObjects.next();
-            PGPSecretKey pgpSecKey = pgpSec.getSecretKey(encryptedData.getKeyID());
-            if (pgpSecKey != null) {
-                if (passphrase == null && passphraseAccessor != null) {
-                    // get passphrase from accessor
-                    @SuppressWarnings("unchecked")
-                    Iterator<String> userIDs = pgpSecKey.getUserIDs();
-                    while (passphrase == null && userIDs.hasNext()) {
-                        passphrase = passphraseAccessor.getPassphrase(userIDs.next());
-                    }
-                }
-                privateKey = pgpSecKey.extractPrivateKey(new JcePBESecretKeyDecryptorBuilder().setProvider(provider).build(
-                        passphrase.toCharArray()));
-            }
-        }
-        if (privateKey == null && pgpSec.size() > 0 && encryptedData != null) {
-            throw new PGPException("Provided input is encrypted with unknown pair of keys.");
-        }
-        return privateKey;
-    }
-
-    @Deprecated
-    public static PGPSecretKey findSecretKey(CamelContext context, String keychainFilename, String passphrase) throws IOException,
-            PGPException, NoSuchProviderException {
-        return findSecretKey(context, keychainFilename, null, passphrase, "BC");
-    }
-
-    @Deprecated
-    public static PGPSecretKey findSecretKey(CamelContext context, String keychainFilename, byte[] secKeyRing, String passphrase,
-            String userId, String provider) throws IOException, PGPException, NoSuchProviderException {
-        InputStream keyChainInputStream = determineKeyRingInputStream(context, keychainFilename, secKeyRing, false);
-        try {
-            List<PGPSecretKeyAndPrivateKeyAndUserId> secKeys = findSecretKeysWithPrivateKeyAndUserId(keyChainInputStream,
-                    Collections.singletonMap(userId, passphrase), provider);
-            if (!secKeys.isEmpty()) {
-                return secKeys.get(0).getSecretKey();
-            }
-            return null;
-        } finally {
-            IOHelper.close(keyChainInputStream);
-        }
-    }
-
     public static List<PGPSecretKeyAndPrivateKeyAndUserId> findSecretKeysWithPrivateKeyAndUserId(CamelContext context,
             String keychainFilename, byte[] secKeyRing, Map<String, String> sigKeyUserId2Password, String provider) throws IOException,
             PGPException, NoSuchProviderException {
@@ -388,13 +245,6 @@ public final class PGPDataFormatUtil {
         }
     }
 
-    @Deprecated
-    public static PGPSecretKey findSecretKey(CamelContext context, String keychainFilename, byte[] secKeyRing, String passphrase,
-            String provider) throws IOException, PGPException, NoSuchProviderException {
-
-        return findSecretKey(context, keychainFilename, secKeyRing, passphrase, null, provider);
-    }
-
     private static List<PGPSecretKeyAndPrivateKeyAndUserId> findSecretKeysWithPrivateKeyAndUserId(InputStream keyringInput,
             Map<String, String> sigKeyUserId2Password, String provider) throws IOException, PGPException, NoSuchProviderException {
         PGPSecretKeyRingCollection pgpSec = 
diff --git a/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SpringSignatureTest.java b/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SpringSignatureTest.java
index d668224..66a34a4 100644
--- a/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SpringSignatureTest.java
+++ b/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SpringSignatureTest.java
@@ -27,6 +27,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spring.SpringCamelContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 
 public class SpringSignatureTest extends SignatureTests {
@@ -35,7 +36,8 @@ public class SpringSignatureTest extends SignatureTests {
 
     protected CamelContext createCamelContext() throws Exception {
         rsaPair = getKeyPair("RSA");
-        return SpringCamelContext.springCamelContext("org/apache/camel/component/crypto/SpringSignatureTests.xml");
+        return SpringCamelContext.springCamelContext(
+                new ClassPathXmlApplicationContext("org/apache/camel/component/crypto/SpringSignatureTests.xml"), true);
     }
 
     public static KeyStore keystore() throws Exception {
diff --git a/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringCryptoDataFormatTest.java b/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringCryptoDataFormatTest.java
index f472690..4139508 100644
--- a/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringCryptoDataFormatTest.java
+++ b/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringCryptoDataFormatTest.java
@@ -23,6 +23,7 @@ import javax.crypto.KeyGenerator;
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spring.SpringCamelContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class SpringCryptoDataFormatTest extends CryptoDataFormatTest {
 
@@ -42,7 +43,8 @@ public class SpringCryptoDataFormatTest extends CryptoDataFormatTest {
         desEdekey = generator.generateKey();
         generator = KeyGenerator.getInstance("AES");
         aeskey = generator.generateKey();
-        return SpringCamelContext.springCamelContext("/org/apache/camel/component/crypto/SpringCryptoDataFormatTest.xml");
+        return SpringCamelContext.springCamelContext(
+                new ClassPathXmlApplicationContext("/org/apache/camel/component/crypto/SpringCryptoDataFormatTest.xml"), true);
     }
 
     public static Key getDesKey() {
diff --git a/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringPGPDataFormatTest.java b/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringPGPDataFormatTest.java
index 1c8d6fa..8deb21f 100644
--- a/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringPGPDataFormatTest.java
+++ b/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/SpringPGPDataFormatTest.java
@@ -19,11 +19,13 @@ package org.apache.camel.converter.crypto;
 import org.apache.camel.CamelContext;
 import org.apache.camel.spring.SpringCamelContext;
 import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class SpringPGPDataFormatTest extends AbstractPGPDataFormatTest {
 
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext("/org/apache/camel/component/crypto/SpringPGPDataFormatTest.xml");
+        return SpringCamelContext.springCamelContext(
+                new ClassPathXmlApplicationContext("/org/apache/camel/component/crypto/SpringPGPDataFormatTest.xml"), true);
     }
 
     @Test
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/AbstractCXFGreeterRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/AbstractCXFGreeterRouterTest.java
index 457e9fb..ff959a8 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/AbstractCXFGreeterRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/AbstractCXFGreeterRouterTest.java
@@ -125,7 +125,7 @@ public abstract class AbstractCXFGreeterRouterTest extends CamelTestSupport {
     
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
    
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadFaultCauseEnabledTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadFaultCauseEnabledTest.java
index 2da5b86..6412435 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadFaultCauseEnabledTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadFaultCauseEnabledTest.java
@@ -110,6 +110,6 @@ public class CxfConsumerPayloadFaultCauseEnabledTest extends CamelTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 }
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadMessageXmlBindingRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadMessageXmlBindingRouterTest.java
index be5d4bf..6a2aacf 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadMessageXmlBindingRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadMessageXmlBindingRouterTest.java
@@ -85,7 +85,7 @@ public class CxfPayLoadMessageXmlBindingRouterTest extends CamelTestSupport {
     
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
 
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
index a647fd8..e04d05b 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayLoadSoapHeaderSpringTest.java
@@ -49,7 +49,7 @@ public class CxfPayLoadSoapHeaderSpringTest extends CxfPayLoadSoapHeaderTest {
       
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     protected ClassPathXmlApplicationContext createApplicationContext() {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java
index c28e79b..595e833 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java
@@ -59,7 +59,7 @@ public class CxfPayloadConsumerNamespaceOnEnvelopeTest extends CamelTestSupport
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     @Before
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java
index 3129dca..b6efacd 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java
@@ -58,7 +58,7 @@ public class CxfPayloadProducerNamespaceOnEnvelopeTest extends CamelTestSupport
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     @Before
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadRouterContentLengthTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadRouterContentLengthTest.java
index c894e7d..6c133d4 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadRouterContentLengthTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadRouterContentLengthTest.java
@@ -82,7 +82,7 @@ public class CxfPayloadRouterContentLengthTest extends CamelTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     @Before
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringCustomizedExceptionTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringCustomizedExceptionTest.java
index 3f5dc09..dcc1068 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringCustomizedExceptionTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringCustomizedExceptionTest.java
@@ -86,7 +86,7 @@ public class CxfSpringCustomizedExceptionTest extends CamelTestSupport  {
     
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
 
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java
index 740556b..568e54c 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfSpringRouterTest.java
@@ -56,7 +56,7 @@ public class CxfSpringRouterTest extends CxfSimpleRouterTest {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
 
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/PayLoadConvertToPOJOTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/PayLoadConvertToPOJOTest.java
index d7b1b08..407cbbc 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/PayLoadConvertToPOJOTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/PayLoadConvertToPOJOTest.java
@@ -62,7 +62,7 @@ public class PayLoadConvertToPOJOTest extends CamelTestSupport {
     
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jms/CxfEndpointJMSConsumerTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jms/CxfEndpointJMSConsumerTest.java
index 71e70ca..4d58e56 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jms/CxfEndpointJMSConsumerTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jms/CxfEndpointJMSConsumerTest.java
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 package org.apache.camel.component.cxf.jms;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -49,7 +50,7 @@ public class CxfEndpointJMSConsumerTest extends CamelTestSupport {
     
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
     
     protected ClassPathXmlApplicationContext createApplicationContext() {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/multipart/CXFMultiPartTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/multipart/CXFMultiPartTest.java
index 17b7635..74302f7 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/multipart/CXFMultiPartTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/multipart/CXFMultiPartTest.java
@@ -105,7 +105,7 @@ public class CXFMultiPartTest extends CamelTestSupport {
    
 
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     protected ClassPathXmlApplicationContext createApplicationContext() {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java
index 4e48268..195a64c 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java
@@ -48,7 +48,7 @@ public class CxfEndpointUtilsWithSpringTest extends CxfEndpointUtilsTest {
 
     @Override
     protected CamelContext getCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     protected ClassPathXmlApplicationContext createApplicationContext() {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/wssecurity/camel/WSSecurityRouteTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/wssecurity/camel/WSSecurityRouteTest.java
index 3d02965..18cd34f 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/wssecurity/camel/WSSecurityRouteTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/wssecurity/camel/WSSecurityRouteTest.java
@@ -56,7 +56,7 @@ public class WSSecurityRouteTest extends CamelTestSupport {
     
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     private static ClassPathXmlApplicationContext createApplicationContext() {
diff --git a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
index eef8f6a..083240a 100644
--- a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
+++ b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
@@ -41,111 +41,4 @@ public interface InfinispanConstants {
     String CACHE_ENTRY_LEAVING = "CacheEntryLeaving";
     String CACHE_ENTRY_UPDATED = "CacheEntryUpdated";
 
-    /**
-     * @deprecated use {@link InfinispanOperation#PUT} instead.
-     */
-    @Deprecated
-    String PUT = "CamelInfinispanOperationPut";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#PUTASYNC} instead.
-     */
-    @Deprecated
-    String PUT_ASYNC = "CamelInfinispanOperationPutAsync";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#PUTIFABSENT} instead.
-     */
-    @Deprecated
-    String PUT_IF_ABSENT = "CamelInfinispanOperationPutIfAbsent";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#PUTIFABSENTASYNC} instead.
-     */
-    @Deprecated
-    String PUT_IF_ABSENT_ASYNC = "CamelInfinispanOperationPutIfAbsentAsync";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#GET} instead.
-     */
-    @Deprecated
-    String GET = "CamelInfinispanOperationGet";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#CONTAINSKEY} instead.
-     */
-    @Deprecated
-    String CONTAINS_KEY = "CamelInfinispanOperationContainsKey";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#CONTAINSVALUE} instead.
-     */
-    @Deprecated
-    String CONTAINS_VALUE = "CamelInfinispanOperationContainsValue";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#PUTALL} instead.
-     */
-    @Deprecated
-    String PUT_ALL =  "CamelInfinispanOperationPutAll";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#PUTALLASYNC} instead.
-     */
-    @Deprecated
-    String PUT_ALL_ASYNC = "CamelInfinispanOperationPutAllAsync";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#REMOVE} instead.
-     */
-    @Deprecated
-    String REMOVE = "CamelInfinispanOperationRemove";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#REMOVEASYNC} instead.
-     */
-    @Deprecated
-    String REMOVE_ASYNC = "CamelInfinispanOperationRemoveAsync";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#REPLACE} instead.
-     */
-    @Deprecated
-    String REPLACE = "CamelInfinispanOperationReplace";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#REPLACEASYNC} instead.
-     */
-    @Deprecated
-    String REPLACE_ASYNC = "CamelInfinispanOperationReplaceAsync";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#CLEAR} instead.
-     */
-    @Deprecated
-    String CLEAR = "CamelInfinispanOperationClear";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#CLEARASYNC} instead.
-     */
-    @Deprecated
-    String CLEAR_ASYNC =  "CamelInfinispanOperationClearAsync";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#SIZE} instead.
-     */
-    @Deprecated
-    String SIZE = "CamelInfinispanOperationSize";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#QUERY} instead.
-     */
-    @Deprecated
-    String QUERY = "CamelInfinispanOperationQuery";
-
-    /**
-     * @deprecated use {@link InfinispanOperation#STATS} instead.
-     */
-    @Deprecated
-    String STATS = "CamelInfinispanOperationStats";
 }
diff --git a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
index 45dba0b..6cd38d0 100644
--- a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
+++ b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
@@ -58,7 +58,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     // ************************************
 
     @InvokeOnHeader("PUT")
-    @InvokeOnHeader(InfinispanConstants.PUT)
     void onPut(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -85,7 +84,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("PUTASYNC")
-    @InvokeOnHeader(InfinispanConstants.PUT_ASYNC)
     void onPutAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -112,7 +110,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("PUTALL")
-    @InvokeOnHeader(InfinispanConstants.PUT_ALL)
     void onPutAll(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Map<Object, Object> map = message.getHeader(InfinispanConstants.MAP, Map.class);
@@ -135,7 +132,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("PUTALLASYNC")
-    @InvokeOnHeader(InfinispanConstants.PUT_ALL_ASYNC)
     void onPutAllAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Map<Object, Object> map = message.getHeader(InfinispanConstants.MAP, Map.class);
@@ -161,7 +157,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("PUTIFABSENT")
-    @InvokeOnHeader(InfinispanConstants.PUT_IF_ABSENT)
     void onPutIfAbsent(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -188,7 +183,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("PUTIFABSENTASYNC")
-    @InvokeOnHeader(InfinispanConstants.PUT_IF_ABSENT_ASYNC)
     void onPutIfAbsentAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -215,7 +209,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("GET")
-    @InvokeOnHeader(InfinispanConstants.GET)
     void onGet(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -236,7 +229,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
 
 
     @InvokeOnHeader("CONTAINSKEY")
-    @InvokeOnHeader(InfinispanConstants.CONTAINS_KEY)
     void onContainsKey(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -246,7 +238,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("CONTAINSVALUE")
-    @InvokeOnHeader(InfinispanConstants.CONTAINS_VALUE)
     void onContainsValue(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object value = message.getHeader(InfinispanConstants.VALUE);
@@ -256,7 +247,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("REMOVE")
-    @InvokeOnHeader(InfinispanConstants.REMOVE)
     void onRemove(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -273,7 +263,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("REMOVEASYNC")
-    @InvokeOnHeader(InfinispanConstants.REMOVE_ASYNC)
     void onRemoveAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -291,7 +280,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("REPLACE")
-    @InvokeOnHeader(InfinispanConstants.REPLACE)
     void onReplace(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -331,7 +319,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("REPLACEASYNC")
-    @InvokeOnHeader(InfinispanConstants.REPLACE_ASYNC)
     void onReplaceAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object key = message.getHeader(InfinispanConstants.KEY);
@@ -377,7 +364,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
    
     @InvokeOnHeader("SIZE")
-    @InvokeOnHeader(InfinispanConstants.SIZE)
     void onSize(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object result = cache.size();
@@ -385,7 +371,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("CLEAR")
-    @InvokeOnHeader(InfinispanConstants.CLEAR)
     void onClear(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
 
@@ -393,7 +378,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("CLEARASYNC")
-    @InvokeOnHeader(InfinispanConstants.CLEAR_ASYNC)
     void onCLearAsync(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final CompletableFuture<Void> result = cache.clearAsync();
@@ -402,7 +386,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("QUERY")
-    @InvokeOnHeader(InfinispanConstants.QUERY)
     void onQuery(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
 
@@ -418,7 +401,6 @@ public class InfinispanProducer extends HeaderSelectorProducer {
     }
 
     @InvokeOnHeader("STATS")
-    @InvokeOnHeader(InfinispanConstants.STATS)
     void onStats(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, this.cacheName);
         final Object result = InfinispanUtil.asAdvanced(cache).getStats();
diff --git a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java
index 1239c61..c3f6b21 100644
--- a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java
+++ b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanRemoteQueryProducerIT.java
@@ -41,7 +41,6 @@ import org.infinispan.query.remote.client.ProtobufMetadataManagerConstants;
 import org.junit.Test;
 
 import static org.apache.camel.component.infinispan.InfinispanConstants.OPERATION;
-import static org.apache.camel.component.infinispan.InfinispanConstants.QUERY;
 import static org.apache.camel.component.infinispan.InfinispanConstants.QUERY_BUILDER;
 import static org.apache.camel.component.infinispan.util.UserUtils.USERS;
 import static org.apache.camel.component.infinispan.util.UserUtils.createKey;
@@ -193,7 +192,7 @@ public class InfinispanRemoteQueryProducerIT extends CamelTestSupport {
         return new Processor() {
             @Override
             public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(OPERATION, QUERY);
+                exchange.getIn().setHeader(OPERATION, InfinispanOperation.QUERY);
                 if (builder != null) {
                     exchange.getIn().setHeader(QUERY_BUILDER, builder);
                 }
diff --git a/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbNoNamespaceSchemaLocationSpringTest.java b/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbNoNamespaceSchemaLocationSpringTest.java
index 2e43cea..15168d4 100644
--- a/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbNoNamespaceSchemaLocationSpringTest.java
+++ b/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbNoNamespaceSchemaLocationSpringTest.java
@@ -38,7 +38,7 @@ public class CamelJaxbNoNamespaceSchemaLocationSpringTest extends CamelJaxbNoNam
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
         
     }
     
diff --git a/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbSpringTest.java b/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbSpringTest.java
index f6e0f9d..c549fab 100644
--- a/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbSpringTest.java
+++ b/components/camel-jaxb/src/test/java/org/apache/camel/jaxb/CamelJaxbSpringTest.java
@@ -38,7 +38,7 @@ public class CamelJaxbSpringTest extends CamelJaxbTest {
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
         
     }
     
diff --git a/components/camel-jibx/src/test/java/org/apache/camel/dataformat/jibx/JibxDataFormatSpringDslTest.java b/components/camel-jibx/src/test/java/org/apache/camel/dataformat/jibx/JibxDataFormatSpringDslTest.java
index 9ce8c25..0f6e2c0 100644
--- a/components/camel-jibx/src/test/java/org/apache/camel/dataformat/jibx/JibxDataFormatSpringDslTest.java
+++ b/components/camel-jibx/src/test/java/org/apache/camel/dataformat/jibx/JibxDataFormatSpringDslTest.java
@@ -100,6 +100,6 @@ public class JibxDataFormatSpringDslTest extends CamelTestSupport {
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 }
diff --git a/components/camel-jms/src/main/docs/jms-component.adoc b/components/camel-jms/src/main/docs/jms-component.adoc
index babc0e8..afc4525 100644
--- a/components/camel-jms/src/main/docs/jms-component.adoc
+++ b/components/camel-jms/src/main/docs/jms-component.adoc
@@ -426,7 +426,7 @@ with the following path and query parameters:
 === Spring Boot Auto-Configuration
 
 
-The component supports 172 options, which are listed below.
+The component supports 171 options, which are listed below.
 
 
 
@@ -529,7 +529,6 @@ The component supports 172 options, which are listed below.
 | *camel.component.jms.configuration.test-connection-on-startup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | Boolean
 | *camel.component.jms.configuration.time-to-live* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1 | Long
 | *camel.component.jms.configuration.transacted* | Specifies whether to use transacted mode | false | Boolean
-| *camel.component.jms.configuration.transacted-in-out* |  |  | Boolean
 | *camel.component.jms.configuration.transaction-manager* | The Spring transaction manager to use. |  | PlatformTransaction Manager
 | *camel.component.jms.configuration.transaction-name* | The name of the transaction to use. |  | String
 | *camel.component.jms.configuration.transaction-timeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | Integer
@@ -1418,13 +1417,6 @@ messaging:
 The `transacted` property applies *only* to the InOnly message
 Exchange Pattern (MEP).
 
-The `transactedInOut` property applies to the
-InOut(Request Reply) message
-Exchange Pattern (MEP).
-
-If you want to use transactions for link:request-reply.html[Request
-Reply](InOut MEP), you *must* set `transactedInOut=true`.
-
 *Available as of Camel 2.10*
 
 You can leverage the
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
index 12d6875..d455567 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
@@ -131,7 +131,6 @@ public class JmsComponent extends HeaderFilterStrategyComponent implements Appli
         JmsConfiguration template = new JmsConfiguration(connectionFactory);
         template.setTransactionManager(transactionManager);
         template.setTransacted(true);
-        template.setTransactedInOut(true);
         return jmsComponent(template);
     }
 
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
index 8a471b9..16cf424 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
@@ -252,8 +252,6 @@ public class JmsConfiguration implements Cloneable {
     @UriParam(label = "transaction",
             description = "Specifies whether to use transacted mode")
     private boolean transacted;
-    @Deprecated
-    private boolean transactedInOut;
     @UriParam(defaultValue = "true", label = "transaction,advanced",
             description = "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true.")
     private boolean lazyCreateTransactionManager = true;
@@ -655,18 +653,13 @@ public class JmsConfiguration implements Cloneable {
                 jmsTemplate.setTimeToLive(ttl);
             }
 
-            jmsTemplate.setSessionTransacted(isTransactedInOut());
-            if (isTransactedInOut()) {
-                jmsTemplate.setSessionAcknowledgeMode(Session.SESSION_TRANSACTED);
+            if (acknowledgementMode >= 0) {
+                jmsTemplate.setSessionAcknowledgeMode(acknowledgementMode);
+            } else if (acknowledgementModeName != null) {
+                jmsTemplate.setSessionAcknowledgeModeName(acknowledgementModeName);
             } else {
-                if (acknowledgementMode >= 0) {
-                    jmsTemplate.setSessionAcknowledgeMode(acknowledgementMode);
-                } else if (acknowledgementModeName != null) {
-                    jmsTemplate.setSessionAcknowledgeModeName(acknowledgementModeName);
-                } else {
-                    // default to AUTO
-                    jmsTemplate.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
-                }
+                // default to AUTO
+                jmsTemplate.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
             }
         }
         return answer;
@@ -1359,21 +1352,6 @@ public class JmsConfiguration implements Cloneable {
         this.transacted = consumerTransacted;
     }
 
-    /**
-     * Should InOut operations (request reply) default to using transacted mode?
-     * <p>
-     * By default this is false as you need to commit the outgoing request before you can consume the input
-     */
-    @Deprecated
-    public boolean isTransactedInOut() {
-        return transactedInOut;
-    }
-
-    @Deprecated
-    public void setTransactedInOut(boolean transactedInOut) {
-        this.transactedInOut = transactedInOut;
-    }
-
     public boolean isLazyCreateTransactionManager() {
         return lazyCreateTransactionManager;
     }
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
index 05fb265..83c14b2 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
@@ -792,12 +792,6 @@ public class JmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
     }
 
     @ManagedAttribute
-    @Deprecated
-    public boolean isTransactedInOut() {
-        return getConfiguration().isTransactedInOut();
-    }
-
-    @ManagedAttribute
     public boolean isUseMessageIDAsCorrelationID() {
         return getConfiguration().isUseMessageIDAsCorrelationID();
     }
@@ -1042,12 +1036,6 @@ public class JmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
     }
 
     @ManagedAttribute
-    @Deprecated
-    public void setTransactedInOut(boolean transactedInOut) {
-        getConfiguration().setTransactedInOut(transactedInOut);
-    }
-
-    @ManagedAttribute
     public void setLazyCreateTransactionManager(boolean lazyCreating) {
         getConfiguration().setLazyCreateTransactionManager(lazyCreating);
     }
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java
index 4ea9ebb..6ffbd28 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java
@@ -254,7 +254,6 @@ public class JmsEndpointConfigurationTest extends CamelTestSupport {
         assertTrue(endpoint.getConfiguration().isLazyCreateTransactionManager());
     }
 
-    @SuppressWarnings("deprecation")
     @Test
     public void testDefaultEndpointOptions() throws Exception {
         JmsEndpoint endpoint = resolveMandatoryEndpoint("jms:queue:Foo", JmsEndpoint.class);
@@ -349,12 +348,10 @@ public class JmsEndpointConfigurationTest extends CamelTestSupport {
         assertFalse(endpoint.isTransacted());
         assertFalse(endpoint.isTransferExchange());
         assertFalse(endpoint.isTransferException());
-        assertFalse(endpoint.isTransactedInOut());
         assertFalse(endpoint.isTransferException());
         assertFalse(endpoint.isFormatDateHeadersToIso8601());
     }
 
-    @SuppressWarnings("deprecation")
     @Test
     public void testSettingEndpointOptions() throws Exception {
         JmsEndpoint endpoint = resolveMandatoryEndpoint("jms:queue:Foo", JmsEndpoint.class);
@@ -478,9 +475,6 @@ public class JmsEndpointConfigurationTest extends CamelTestSupport {
         endpoint.setTransacted(true);
         assertTrue(endpoint.isTransacted());
 
-        endpoint.setTransactedInOut(true);
-        assertTrue(endpoint.isTransactedInOut());
-
         endpoint.setTransferExchange(true);
         assertTrue(endpoint.isTransferExchange());
 
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringWithSpringTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringWithSpringTest.java
index 9825ad1..789901b 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringWithSpringTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringWithSpringTest.java
@@ -33,7 +33,7 @@ public class JmsHeaderFilteringWithSpringTest extends JmsHeaderFilteringTest {
     @Override
     protected CamelContext createCamelContext() throws Exception {   
         applicationContext = createApplicationContext();
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }    
     
     private ClassPathXmlApplicationContext createApplicationContext() {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingSpringTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingSpringTest.java
index 960d8a2..7cba576 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingSpringTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteUsingSpringTest.java
@@ -31,7 +31,7 @@ public class JmsRouteUsingSpringTest extends JmsRouteTest {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = createApplicationContext();
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
     
     protected ClassPathXmlApplicationContext createApplicationContext() {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSpringLoadBalanceFailoverTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSpringLoadBalanceFailoverTest.java
index 2213d20..a50f5f2 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSpringLoadBalanceFailoverTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSpringLoadBalanceFailoverTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.jms;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spring.SpringCamelContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
  * Unit test for Camel loadbalancer failover with JMS
@@ -30,7 +31,8 @@ public class JmsSpringLoadBalanceFailoverTest extends JmsLoadBalanceFailoverTest
     }
 
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext("org/apache/camel/component/jms/JmsSpringLoadBalanceFailoverTest.xml");
+        return SpringCamelContext.springCamelContext(
+                new ClassPathXmlApplicationContext("org/apache/camel/component/jms/JmsSpringLoadBalanceFailoverTest.xml"), true);
     }
 
 }
\ No newline at end of file
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/AbstractJpaTest.java b/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/AbstractJpaTest.java
index 733785d..a0ae850 100644
--- a/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/AbstractJpaTest.java
+++ b/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/AbstractJpaTest.java
@@ -62,7 +62,7 @@ public abstract class AbstractJpaTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = new ClassPathXmlApplicationContext(routeXml());
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
     protected void cleanupRepository() {
diff --git a/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/AbstractMongoDbTest.java b/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/AbstractMongoDbTest.java
index 320a465..afbedb7 100644
--- a/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/AbstractMongoDbTest.java
+++ b/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/AbstractMongoDbTest.java
@@ -78,7 +78,7 @@ public abstract class AbstractMongoDbTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = new AnnotationConfigApplicationContext(EmbedMongoConfiguration.class);
         @SuppressWarnings("deprecation")
-        CamelContext ctx = SpringCamelContext.springCamelContext(applicationContext);
+        CamelContext ctx = SpringCamelContext.springCamelContext(applicationContext, true);
         PropertiesComponent pc = new PropertiesComponent("classpath:mongodb.test.properties");
         ctx.addComponent("properties", pc);
         return ctx;
diff --git a/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbSpringDslOperationsTest.java b/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbSpringDslOperationsTest.java
index b0e7edc..3d39440 100644
--- a/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbSpringDslOperationsTest.java
+++ b/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbSpringDslOperationsTest.java
@@ -27,7 +27,7 @@ public class MongoDbSpringDslOperationsTest extends MongoDbOperationsTest {
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = new AnnotationConfigApplicationContext(MongoBasicOperationsConfiguration.class);
         @SuppressWarnings("deprecation")
-        CamelContext ctx = SpringCamelContext.springCamelContext(applicationContext);
+        CamelContext ctx = SpringCamelContext.springCamelContext(applicationContext, true);
         return ctx;
     }
 
diff --git a/components/camel-msv/src/main/docs/msv-component.adoc b/components/camel-msv/src/main/docs/msv-component.adoc
index 1527da0..9b62eb1 100644
--- a/components/camel-msv/src/main/docs/msv-component.adoc
+++ b/components/camel-msv/src/main/docs/msv-component.adoc
@@ -89,7 +89,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (11 parameters):
+==== Query Parameters (10 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -104,7 +104,6 @@ with the following path and query parameters:
 | *schemaFactory* (advanced) | To use a custom javax.xml.validation.SchemaFactory |  | SchemaFactory
 | *schemaLanguage* (advanced) | Configures the W3C XML Schema Namespace URI. | http://www.w3.org/2001/XMLSchema | String
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *useDom* (advanced) | Whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator. | false | boolean
 | *useSharedSchema* (advanced) | Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue. | true | boolean
 |===
 // endpoint options: END
diff --git a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/AnyLanguageFilterTest.java b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/AnyLanguageFilterTest.java
index 992d96c..6904163 100644
--- a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/AnyLanguageFilterTest.java
+++ b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/AnyLanguageFilterTest.java
@@ -40,7 +40,7 @@ public class AnyLanguageFilterTest extends XPathFilterTest {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/anyLanguageFilter.xml"));
+        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/anyLanguageFilter.xml"), true);
     }
 
 }
\ No newline at end of file
diff --git a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/BeanShellFilterTest.java b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/BeanShellFilterTest.java
index d49284a..dbc1853 100644
--- a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/BeanShellFilterTest.java
+++ b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/BeanShellFilterTest.java
@@ -40,7 +40,7 @@ public class BeanShellFilterTest extends XPathFilterTest {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/beanShellFilter.xml"));
+        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/beanShellFilter.xml"), true);
     }
 
 }
\ No newline at end of file
diff --git a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/GroovyFilterTest.java b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/GroovyFilterTest.java
index b24babd..f191c7e 100644
--- a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/GroovyFilterTest.java
+++ b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/GroovyFilterTest.java
@@ -40,6 +40,6 @@ public class GroovyFilterTest extends XPathFilterTest {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/groovyFilter.xml"));
+        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/groovyFilter.xml"), true);
     }
 }
diff --git a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/JavaScriptFilterTest.java b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/JavaScriptFilterTest.java
index 07ca921..0b3a30a 100644
--- a/components/camel-script/src/test/java/org/apache/camel/builder/script/example/JavaScriptFilterTest.java
+++ b/components/camel-script/src/test/java/org/apache/camel/builder/script/example/JavaScriptFilterTest.java
@@ -40,7 +40,7 @@ public class JavaScriptFilterTest extends XPathFilterTest {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/javaScriptFilter.xml"));
+        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/builder/script/example/javaScriptFilter.xml"), true);
     }
 
 }
\ No newline at end of file
diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
index 7eb6650..b4b0d5f 100644
--- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
+++ b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
@@ -34,7 +34,7 @@ import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.message.BasicNameValuePair;
 import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
+import org.json.simple.Jsoner;
 
 import static org.apache.camel.component.slack.utils.SlackUtils.readResponse;
 
@@ -123,8 +123,7 @@ public class SlackComponentVerifierExtension extends DefaultComponentVerifierExt
                 if (response.getStatusLine().getStatusCode() < 200 || response.getStatusLine().getStatusCode() > 299) {
                     builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid token").parameterKey("token").build());
                 }
-                JSONParser parser = new JSONParser();
-                JSONObject obj = (JSONObject)parser.parse(jsonString);
+                JSONObject obj = (JSONObject) Jsoner.deserialize(jsonString);
                 if (obj.get("ok") != null && obj.get("ok").equals(false)) {
                     builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid token").parameterKey("token").build());
                 }
diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackConsumer.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackConsumer.java
index 5c665d5..7e6bb12 100644
--- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackConsumer.java
+++ b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackConsumer.java
@@ -35,9 +35,12 @@ import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.message.BasicNameValuePair;
+import org.json.simple.DeserializationException;
 import org.json.simple.JSONObject;
+import org.json.simple.JsonArray;
+import org.json.simple.JsonObject;
+import org.json.simple.Jsoner;
 import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,7 +54,7 @@ public class SlackConsumer extends ScheduledBatchPollingConsumer {
     private String timestamp;
     private String channelId;
 
-    public SlackConsumer(SlackEndpoint endpoint, Processor processor) throws IOException, ParseException {
+    public SlackConsumer(SlackEndpoint endpoint, Processor processor) throws IOException, DeserializationException {
         super(endpoint, processor);
         this.slackEndpoint = endpoint;
         this.channelId = getChannelId(slackEndpoint.getChannel());
@@ -128,7 +131,7 @@ public class SlackConsumer extends ScheduledBatchPollingConsumer {
         return total;
     }
 
-    private String getChannelId(String channel) throws IOException, ParseException {
+    private String getChannelId(String channel) throws IOException, DeserializationException {
         HttpClient client = HttpClientBuilder.create().useSystemProperties().build();
         HttpPost httpPost = new HttpPost("https://slack.com/api/channels.list");
 
@@ -139,24 +142,18 @@ public class SlackConsumer extends ScheduledBatchPollingConsumer {
         HttpResponse response = client.execute(httpPost);
 
         String jsonString = readResponse(response);
-        JSONParser parser = new JSONParser();
-
-        JSONObject c = (JSONObject)parser.parse(jsonString);
-        List list = (List)c.get("channels");
-        Iterator it = list.iterator();
-        int i = 0;
-        while (it.hasNext()) {
-            Object object = (Object)it.next();
-            JSONObject singleChannel = (JSONObject)object;
+        JsonObject c = (JsonObject) Jsoner.deserialize(jsonString);
+        JsonArray list = (JsonArray) c.getCollection("channels");
+        for (JsonObject singleChannel : (List<JsonObject>)(List) list) {
             if (singleChannel.get("name") != null) {
                 if (singleChannel.get("name").equals(channel)) {
                     if (singleChannel.get("id") != null) {
-                        return (String)singleChannel.get("id");
+                        return (String) singleChannel.get("id");
                     }
                 }
             }
-
         }
+
         return jsonString;
     }
 
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
index e1f299f..b089318 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
@@ -122,9 +122,6 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
     private String autoStartup;
     @XmlAttribute @Metadata(defaultValue = "true")
     private String shutdownEager;
-    @XmlAttribute @Metadata(defaultValue = "false")
-    @Deprecated
-    private String registerEndpointIdsFromRoute;
     @XmlAttribute
     private String useMDCLogging;
     @XmlAttribute
@@ -761,19 +758,6 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
         this.shutdownEager = shutdownEager;
     }
 
-    public String getRegisterEndpointIdsFromRoute() {
-        return registerEndpointIdsFromRoute;
-    }
-
-    /**
-     * Sets whether to register endpoints that has id attribute assigned in the Spring registry.
-     * <p/>
-     * This mode is by default false, but can be turned on for backwards compatibility.
-     */
-    public void setRegisterEndpointIdsFromRoute(String registerEndpointIdsFromRoute) {
-        this.registerEndpointIdsFromRoute = registerEndpointIdsFromRoute;
-    }
-
     public String getUseMDCLogging() {
         return useMDCLogging;
     }
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
index 68d23b1..0c14573 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
@@ -41,7 +41,6 @@ import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.Lifecycle;
 import org.springframework.context.Phased;
 import org.springframework.context.event.ContextRefreshedEvent;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.springframework.core.Ordered;
 
 import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
@@ -85,15 +84,6 @@ public class SpringCamelContext extends DefaultCamelContext implements Lifecycle
      * using the Spring API.
      */
     @Deprecated
-    public static SpringCamelContext springCamelContext(ApplicationContext applicationContext) throws Exception {
-        return springCamelContext(applicationContext, true);
-    }
-
-    /**
-     * @deprecated its better to create and boot Spring the standard Spring way and to get hold of CamelContext
-     * using the Spring API.
-     */
-    @Deprecated
     public static SpringCamelContext springCamelContext(ApplicationContext applicationContext, boolean maybeStart) throws Exception {
         if (applicationContext != null) {
             // lets try and look up a configured camel context in the context
@@ -110,15 +100,6 @@ public class SpringCamelContext extends DefaultCamelContext implements Lifecycle
         return answer;
     }
 
-    /**
-     * @deprecated its better to create and boot Spring the standard Spring way and to get hold of CamelContext
-     * using the Spring API.
-     */
-    @Deprecated
-    public static SpringCamelContext springCamelContext(String configLocations) throws Exception {
-        return springCamelContext(new ClassPathXmlApplicationContext(configLocations));
-    }
-
     @Override
     public void start() {
         // for example from unit testing we want to start Camel later (manually)
@@ -221,16 +202,6 @@ public class SpringCamelContext extends DefaultCamelContext implements Lifecycle
         }
     }
 
-    @Deprecated
-    public EventEndpoint getEventEndpoint() {
-        return null;
-    }
-
-    @Deprecated
-    public void setEventEndpoint(EventEndpoint eventEndpoint) {
-        // noop
-    }
-
     /**
      * Whether to shutdown this {@link org.apache.camel.spring.SpringCamelContext} eager (first)
      * when Spring {@link org.springframework.context.ApplicationContext} is being stopped.
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java b/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
index 7903818..62f1c22 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
@@ -37,8 +37,6 @@ import org.apache.camel.core.xml.CamelJMXAgentDefinition;
 import org.apache.camel.core.xml.CamelPropertyPlaceholderDefinition;
 import org.apache.camel.core.xml.CamelStreamCachingStrategyDefinition;
 import org.apache.camel.impl.DefaultCamelContextNameStrategy;
-import org.apache.camel.model.FromDefinition;
-import org.apache.camel.model.SendDefinition;
 import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.spring.CamelBeanPostProcessor;
@@ -352,7 +350,6 @@ public class CamelNamespaceHandler extends NamespaceHandlerSupport {
 
             String contextId = element.getAttribute("id");
             boolean implicitId = false;
-            boolean registerEndpointIdsFromRoute = false;
 
             // lets avoid folks having to explicitly give an ID to a camel context
             if (ObjectHelper.isEmpty(contextId)) {
@@ -409,8 +406,6 @@ public class CamelNamespaceHandler extends NamespaceHandlerSupport {
                 builder.addPropertyValue("hystrixConfigurations", factoryBean.getHystrixConfigurations());
                 // add any depends-on
                 addDependsOn(factoryBean, builder);
-
-                registerEndpointIdsFromRoute = "true".equalsIgnoreCase(factoryBean.getRegisterEndpointIdsFromRoute());
             }
 
             NodeList list = element.getChildNodes();
@@ -443,12 +438,6 @@ public class CamelNamespaceHandler extends NamespaceHandlerSupport {
                 }
             }
 
-            if (registerEndpointIdsFromRoute) {
-                // register as endpoint defined indirectly in the routes by from/to types having id explicit set
-                LOG.debug("Registering endpoint with ids defined in Camel routes");
-                registerEndpointsWithIdsDefinedInFromOrToTypes(element, parserContext, contextId, binder);
-            }
-
             // register templates if not already defined
             registerTemplates(element, parserContext, contextId);
 
@@ -539,28 +528,6 @@ public class CamelNamespaceHandler extends NamespaceHandlerSupport {
     }
 
     /**
-     * Used for auto registering endpoints from the <tt>from</tt> or <tt>to</tt> DSL if they have an id attribute set
-     */
-    @Deprecated
-    protected void registerEndpointsWithIdsDefinedInFromOrToTypes(Element element, ParserContext parserContext, String contextId, Binder<Node> binder) {
-        NodeList list = element.getChildNodes();
-        int size = list.getLength();
-        for (int i = 0; i < size; i++) {
-            Node child = list.item(i);
-            if (child instanceof Element) {
-                Element childElement = (Element) child;
-                Object object = binder.getJAXBNode(child);
-                // we only want from/to types to be registered as endpoints
-                if (object instanceof FromDefinition || object instanceof SendDefinition) {
-                    registerEndpoint(childElement, parserContext, contextId);
-                }
-                // recursive
-                registerEndpointsWithIdsDefinedInFromOrToTypes(childElement, parserContext, contextId, binder);
-            }
-        }
-    }
-
-    /**
      * Used for auto registering producer, fluent producer and consumer templates if not already defined in XML.
      */
     protected void registerTemplates(Element element, ParserContext parserContext, String contextId) {
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMaskTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMaskTest.java
index c224b5e..ca533b0 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMaskTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMaskTest.java
@@ -34,7 +34,7 @@ public class SpringLogMaskTest {
     @Test
     public void testLogMask() throws Exception {
         final AbstractXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/component/log/SpringLogMaskTest-context.xml");
-        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext);
+        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext, true);
         context.start();
         MockEndpoint mock = context.getEndpoint("mock:mask", MockEndpoint.class);
         ProducerTemplate template = context.createProducerTemplate();
@@ -47,7 +47,7 @@ public class SpringLogMaskTest {
     @Test
     public void testLogMaskDisabled() throws Exception {
         final AbstractXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/component/log/SpringLogMaskTest-context.xml");
-        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext);
+        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext, true);
         context.start();
         MockEndpoint mock = context.getEndpoint("mock:no-mask", MockEndpoint.class);
         ProducerTemplate template = context.createProducerTemplate();
@@ -60,7 +60,7 @@ public class SpringLogMaskTest {
     @Test
     public void testCustomLogMask() throws Exception {
         final AbstractXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/component/log/SpringCustomLogMaskTest-context.xml");
-        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext);
+        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext, true);
         MockMaskingFormatter customFormatter = applicationContext.getBean(Constants.CUSTOM_LOG_MASK_REF, MockMaskingFormatter.class);
         context.start();
         ProducerTemplate template = context.createProducerTemplate();
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
index 6de29ec..d27d3dd 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
@@ -24,7 +24,6 @@ import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.core.xml.AbstractCamelContextFactoryBean;
 import org.apache.camel.impl.DefaultPackageScanClassResolver;
 import org.apache.camel.impl.scan.AssignableToPackageScanFilter;
 import org.apache.camel.impl.scan.InvertingPackageScanFilter;
@@ -143,7 +142,7 @@ public abstract class SpringTestSupport extends ContextTestSupport {
     @SuppressWarnings("deprecation")
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = SpringCamelContext.springCamelContext(applicationContext);
+        CamelContext context = SpringCamelContext.springCamelContext(applicationContext, true);
         return context;
     }
 
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java
index 311dadd..f2c7721 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java
@@ -33,7 +33,7 @@ public class SpringXPathFilterTest extends XPathFilterTest {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/spring/example/xpathFilter.xml"));
+        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/spring/example/xpathFilter.xml"), true);
     }
 
 }
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringLogEipMaskTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringLogEipMaskTest.java
index 4127ad0..6614980 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringLogEipMaskTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringLogEipMaskTest.java
@@ -30,7 +30,7 @@ public class SpringLogEipMaskTest {
     @Test
     public void testLogEipMask() throws Exception {
         final AbstractXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/spring/processor/logEipMaskTest.xml");
-        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext);
+        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext, true);
         MockEndpoint mock = context.getEndpoint("mock:foo", MockEndpoint.class);
         mock.expectedMessageCount(1);
         context.start();
@@ -43,7 +43,7 @@ public class SpringLogEipMaskTest {
     @Test
     public void testCustomFormatter() throws Exception {
         final AbstractXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/spring/processor/logEipCustomFormatterTest.xml");
-        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext);
+        SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext, true);
         context.start();
         MockMaskingFormatter customFormatter = applicationContext.getBean(Constants.CUSTOM_LOG_MASK_REF, MockMaskingFormatter.class);
         context.createProducerTemplate().sendBody("direct:foo", "mock password=\"my passw0rd!\"");
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java
index 81c8699..a9131ec 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java
@@ -45,6 +45,6 @@ public final class SpringTestHelper {
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 }
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingBeanConverterTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingBeanConverterTest.java
index 5a5806e..6d9ec49 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingBeanConverterTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingBeanConverterTest.java
@@ -33,7 +33,7 @@ public class SpringRemotingBeanConverterTest extends Assert {
     public void testBeanRoutes() throws Exception {
         AbstractXmlApplicationContext applicationContext = createApplicationContext();
 
-        CamelContext camelContext = SpringCamelContext.springCamelContext(applicationContext);
+        CamelContext camelContext = SpringCamelContext.springCamelContext(applicationContext, true);
         
         Invoker invoker = applicationContext.getBean("invokerProxy", Invoker.class);
         String response = invoker.invoke(new Bean.SubClass());
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingRouteTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingRouteTest.java
index 1729832..a7d0df7 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingRouteTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingRouteTest.java
@@ -32,7 +32,7 @@ public class SpringRemotingRouteTest extends Assert {
     @Test
     public void testBeanRoutes() throws Exception {
         AbstractXmlApplicationContext applicationContext = createApplicationContext();
-        CamelContext camelContext = SpringCamelContext.springCamelContext(applicationContext);
+        CamelContext camelContext = SpringCamelContext.springCamelContext(applicationContext, true);
 
         // START SNIPPET: invoke
         ISay proxy = applicationContext.getBean("sayProxy", ISay.class);
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingTwoCamelContextTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingTwoCamelContextTest.java
index c0dbefd..9629e7b 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingTwoCamelContextTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/remoting/SpringRemotingTwoCamelContextTest.java
@@ -29,7 +29,7 @@ public class SpringRemotingTwoCamelContextTest extends Assert {
     @Test
     public void testProxyWithTwoCamelContext() throws Exception {
         AbstractXmlApplicationContext applicationContext = createApplicationContext();
-        CamelContext camelContext = SpringCamelContext.springCamelContext(applicationContext);
+        CamelContext camelContext = SpringCamelContext.springCamelContext(applicationContext, true);
         
         ISay proxy = applicationContext.getBean("sayProxy1", ISay.class);
         String rc = proxy.say();
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerCorsFilter.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerCorsFilter.java
deleted file mode 100644
index 49a4605..0000000
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerCorsFilter.java
+++ /dev/null
@@ -1,118 +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.swagger.servlet;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.camel.spi.RestConfiguration;
-
-/**
- * A simple CORS filter that can used to allow the swagger ui or other API browsers from remote origins to access the
- * Rest services exposes by this Camel swagger component.
- * <p/>
- * You can configure CORS headers in the init parameters to the Servlet Filter using the names:
- * <ul>
- *     <li>Access-Control-Allow-Origin</li>
- *     <li>Access-Control-Allow-Methods</li>
- *     <li>Access-Control-Allow-Headers</li>
- *     <li>Access-Control-Max-Age</li>
- * </ul>
- * If a parameter is not configured then the default value is used.
- * The default values are defined as:
- * <ul>
- *     <li>{@link RestConfiguration#CORS_ACCESS_CONTROL_ALLOW_ORIGIN}</li>
- *     <li>{@link RestConfiguration#CORS_ACCESS_CONTROL_ALLOW_METHODS}</li>
- *     <li>{@link RestConfiguration#CORS_ACCESS_CONTROL_ALLOW_HEADERS}</li>
- *     <li>{@link RestConfiguration#CORS_ACCESS_CONTROL_MAX_AGE}</li>
- * </ul>
- *
- * @deprecated do not use this directly but use rest-dsl the regular way with rest-dsl configuration.
- */
-@Deprecated
-public class RestSwaggerCorsFilter implements Filter {
-
-    private final Map<String, String> corsHeaders = new HashMap<>();
-
-    @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
-        String s = filterConfig.getInitParameter("Access-Control-Allow-Origin");
-        if (s != null) {
-            corsHeaders.put("Access-Control-Allow-Origin", s);
-        }
-        s = filterConfig.getInitParameter("Access-Control-Allow-Methods");
-        if (s != null) {
-            corsHeaders.put("Access-Control-Allow-Methods", s);
-        }
-        s = filterConfig.getInitParameter("Access-Control-Allow-Headers");
-        if (s != null) {
-            corsHeaders.put("Access-Control-Allow-Headers", s);
-        }
-        s = filterConfig.getInitParameter("Access-Control-Max-Age");
-        if (s != null) {
-            corsHeaders.put("Access-Control-Max-Age", s);
-        }
-    }
-
-    @Override
-    public void destroy() {
-        // noop
-    }
-
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
-        HttpServletResponse res = (HttpServletResponse) response;
-
-        setupCorsHeaders(res, corsHeaders);
-
-        chain.doFilter(request, response);
-    }
-
-    private static void setupCorsHeaders(HttpServletResponse response, Map<String, String> corsHeaders) {
-        // use default value if none has been configured
-        String allowOrigin = corsHeaders != null ? corsHeaders.get("Access-Control-Allow-Origin") : null;
-        if (allowOrigin == null) {
-            allowOrigin = RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_ORIGIN;
-        }
-        String allowMethods = corsHeaders != null ? corsHeaders.get("Access-Control-Allow-Methods") : null;
-        if (allowMethods == null) {
-            allowMethods = RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS;
-        }
-        String allowHeaders = corsHeaders != null ? corsHeaders.get("Access-Control-Allow-Headers") : null;
-        if (allowHeaders == null) {
-            allowHeaders = RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS;
-        }
-        String maxAge = corsHeaders != null ? corsHeaders.get("Access-Control-Max-Age") : null;
-        if (maxAge == null) {
-            maxAge = RestConfiguration.CORS_ACCESS_CONTROL_MAX_AGE;
-        }
-
-        response.setHeader("Access-Control-Allow-Origin", allowOrigin);
-        response.setHeader("Access-Control-Allow-Methods", allowMethods);
-        response.setHeader("Access-Control-Allow-Headers", allowHeaders);
-        response.setHeader("Access-Control-Max-Age", maxAge);
-    }
-
-}
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java
deleted file mode 100644
index cf56047..0000000
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/RestSwaggerServlet.java
+++ /dev/null
@@ -1,275 +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.swagger.servlet;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import io.swagger.jaxrs.config.BeanConfig;
-import org.apache.camel.impl.DefaultClassResolver;
-import org.apache.camel.spi.ClassResolver;
-import org.apache.camel.spi.RestConfiguration;
-import org.apache.camel.swagger.RestApiResponseAdapter;
-import org.apache.camel.swagger.RestSwaggerSupport;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.camel.swagger.SwaggerHelper.buildUrl;
-
-/**
- * The default Camel swagger servlet to use when exposing the APIs of the rest-dsl using swagger.
- * <p/>
- * This requires Camel version 2.15 or better at runtime (and JMX to be enabled).
- *
- * @deprecated do not use this directly but use rest-dsl the regular way with rest-dsl configuration.
- */
-@Deprecated
-public class RestSwaggerServlet extends HttpServlet {
-
-    private static final Logger LOG = LoggerFactory.getLogger(RestSwaggerServlet.class);
-    private final BeanConfig swaggerConfig = new BeanConfig();
-    private final RestSwaggerSupport support = new RestSwaggerSupport();
-    private final ClassResolver classResolver = new DefaultClassResolver();
-    private volatile boolean initDone;
-
-    private String apiContextIdPattern;
-    private boolean apiContextIdListing;
-    private boolean translateContextPath = true;
-
-    public String getApiContextIdPattern() {
-        return apiContextIdPattern;
-    }
-
-    /**
-     * Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern.
-     * <p/>
-     * The pattern uses the rules from {@link org.apache.camel.util.EndpointHelper#matchPattern(String, String)}
-     *
-     * @param apiContextIdPattern  the pattern
-     */
-    public void setApiContextIdPattern(String apiContextIdPattern) {
-        this.apiContextIdPattern = apiContextIdPattern;
-    }
-
-    public boolean isApiContextIdListing() {
-        return apiContextIdListing;
-    }
-
-    /**
-     * Sets whether listing of all available CamelContext's with REST services in the JVM is enabled. If enabled it allows to discover
-     * these contexts, if <tt>false</tt> then only if there is exactly one CamelContext then its used.
-     */
-    public void setApiContextIdListing(boolean apiContextIdListing) {
-        this.apiContextIdListing = apiContextIdListing;
-    }
-
-    public boolean isTranslateContextPath() {
-        return translateContextPath;
-    }
-
-    /**
-     * Sets whether the context path of the request should be translated (true) or used as-is (false)
-     * Optional, Defaults to true
-     */
-    public void setTranslateContextPath(boolean translateContextPath) {
-        this.translateContextPath = translateContextPath;
-    }
-
-    @Override
-    public void init(final ServletConfig config) throws ServletException {
-        super.init(config);
-        Map<String, Object> parameters = new HashMap<>();
-        Enumeration en = config.getInitParameterNames();
-        while (en.hasMoreElements()) {
-            String name = (String) en.nextElement();
-            Object value = config.getInitParameter(name);
-            parameters.put(name, value);
-        }
-        // when using servlet then use the cors filter to enable cors
-        if (parameters.get("cors") != null) {
-            LOG.warn("Use RestSwaggerCorsFilter when uisng this Servlet to enable CORS");
-            parameters.remove("cors");
-        }
-        support.initSwagger(swaggerConfig, parameters);
-
-        // allow to configure these options from the servlet config as well
-        Object pattern = parameters.remove("apiContextIdPattern");
-        if (pattern != null) {
-            apiContextIdPattern = pattern.toString();
-        }
-        Object listing = parameters.remove("apiContextIdListing");
-        if (listing != null) {
-            apiContextIdListing = Boolean.valueOf(listing.toString());
-        }
-        Object translate = parameters.remove("translateContextPath");
-        if (translate != null) {
-            translateContextPath = Boolean.valueOf(translate.toString());
-        }
-    }
-
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
-        if (!initDone) {
-            initBaseAndApiPaths(request);
-        }
-
-        String contextId = null;
-        String route = request.getPathInfo();
-        String accept = request.getHeader("Accept");
-
-        // whether to use json or yaml
-        boolean json = false;
-        boolean yaml = false;
-        if (route != null && route.endsWith("/swagger.json")) {
-            json = true;
-            route = route.substring(0, route.length() - 13);
-        } else if (route != null && route.endsWith("/swagger.yaml")) {
-            yaml = true;
-            route = route.substring(0, route.length() - 13);
-        }
-        if (accept != null && !json && !yaml) {
-            json = accept.toLowerCase(Locale.US).contains("json");
-            yaml = accept.toLowerCase(Locale.US).contains("yaml");
-        }
-        if (!json && !yaml) {
-            // json is default
-            json = true;
-        }
-
-        RestApiResponseAdapter adapter = new ServletRestApiResponseAdapter(response);
-
-        try {
-            // render list of camel contexts as root
-            if (apiContextIdListing && (ObjectHelper.isEmpty(route) || route.equals("/"))) {
-                support.renderCamelContexts(adapter, contextId, apiContextIdPattern, json, yaml, null);
-            } else {
-                String name = null;
-                if (ObjectHelper.isNotEmpty(route)) {
-                    // first part is the camel context
-                    if (route.startsWith("/")) {
-                        route = route.substring(1);
-                    }
-                    // the remainder is the route part
-                    name = route.split("/")[0];
-                    if (ObjectHelper.isNotEmpty(name)) {
-                        route = route.substring(name.length());
-                    }
-                } else {
-                    // listing not enabled then see if there is only one CamelContext and use that as the name
-                    List<String> contexts = support.findCamelContexts();
-                    if (contexts.size() == 1) {
-                        name = contexts.get(0);
-                    }
-                }
-
-                boolean match = false;
-                if (name != null) {
-                    match = true;
-                    if (apiContextIdPattern != null) {
-                        if ("#name#".equals(apiContextIdPattern)) {
-                            // always match as we do not know what is the current CamelContext in a plain servlet
-                            match = true;
-                        } else {
-                            match = EndpointHelper.matchPattern(name, apiContextIdPattern);
-                        }
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("Match contextId: {} with pattern: {} -> {}", name, apiContextIdPattern, match);
-                        }
-                    }
-                }
-
-                if (!match) {
-                    adapter.noContent();
-                } else {
-                    support.renderResourceListing(adapter, swaggerConfig, name, route, json, yaml, getHeaders(request), classResolver, new RestConfiguration());
-                }
-            }
-        } catch (Exception e) {
-            LOG.warn("Error rendering Swagger API due " + e.getMessage(), e);
-        }
-    }
-
-    private void initBaseAndApiPaths(HttpServletRequest request) throws MalformedURLException {
-        String base = swaggerConfig.getBasePath();
-        if (base == null || !base.startsWith("http")) {
-            // base path is configured using relative, so lets calculate the absolute url now we have the http request
-            URL url = new URL(request.getRequestURL().toString());
-            if (base == null) {
-                base = "";
-            }
-            String path = translateContextPath(request);
-
-            // setup host if not configured
-            if (swaggerConfig.getHost() == null) {
-                swaggerConfig.setHost(url.getHost());
-                if (url.getPort() != 80 && url.getPort() != -1) {
-                    swaggerConfig.setHost(url.getHost() + ":" + url.getPort());
-                } else {
-                    swaggerConfig.setHost(url.getHost());
-                }
-            }
-            swaggerConfig.setBasePath(buildUrl(path, base));
-        }
-        initDone = true;
-    }
-
-    /**
-     * We do only want the base context-path and not sub paths
-     */
-    private String translateContextPath(HttpServletRequest request) {
-        String path = request.getContextPath();
-        if (!translateContextPath) {
-            return path;
-        }
-        if (path.isEmpty() || path.equals("/")) {
-            return "";
-        } else {
-            int idx = path.lastIndexOf("/");
-            if (idx > 0) {
-                return path.substring(0, idx);
-            }
-        }
-        return path;
-    }
-
-    private Map<String, Object> getHeaders(HttpServletRequest request) {
-        Map<String, Object> headers = new HashMap<>();
-        @SuppressWarnings("unchecked")
-        Enumeration<String> headerNames = request.getHeaderNames();
-        if (headerNames != null) {
-            while (headerNames.hasMoreElements()) {
-                headers.put(headerNames.nextElement(), request.getHeader(headerNames.nextElement()));
-            }
-        }
-        return headers;
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/ServletRestApiResponseAdapter.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/ServletRestApiResponseAdapter.java
deleted file mode 100644
index e5507df..0000000
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/servlet/ServletRestApiResponseAdapter.java
+++ /dev/null
@@ -1,49 +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.swagger.servlet;
-
-import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.camel.swagger.RestApiResponseAdapter;
-
-@Deprecated
-public class ServletRestApiResponseAdapter implements RestApiResponseAdapter {
-
-    private final HttpServletResponse response;
-
-    public ServletRestApiResponseAdapter(HttpServletResponse response) {
-        this.response = response;
-    }
-
-    @Override
-    public void setHeader(String name, String value) {
-        // use set header to avoid adding the same value multiple times (the method should have been named setHeader really)
-        response.setHeader(name, value);
-    }
-
-    @Override
-    public void writeBytes(byte[] bytes) throws IOException {
-        response.getOutputStream().write(bytes);
-    }
-
-    @Override
-    public void noContent() {
-        response.setStatus(HttpServletResponse.SC_NO_CONTENT);
-    }
-
-}
diff --git a/components/camel-xmlsecurity/src/test/java/org/apache/camel/component/xmlsecurity/SpringXmlSignatureTest.java b/components/camel-xmlsecurity/src/test/java/org/apache/camel/component/xmlsecurity/SpringXmlSignatureTest.java
index 4ab53ca..4af9742 100644
--- a/components/camel-xmlsecurity/src/test/java/org/apache/camel/component/xmlsecurity/SpringXmlSignatureTest.java
+++ b/components/camel-xmlsecurity/src/test/java/org/apache/camel/component/xmlsecurity/SpringXmlSignatureTest.java
@@ -33,6 +33,7 @@ import org.apache.camel.component.xmlsecurity.api.XmlSignatureHelper;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spring.SpringCamelContext;
 import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 
 public class SpringXmlSignatureTest extends XmlSignatureTest {
@@ -41,7 +42,8 @@ public class SpringXmlSignatureTest extends XmlSignatureTest {
 
     protected CamelContext createCamelContext() throws Exception {
         rsaPair = getKeyPair("RSA", 1024);
-        return SpringCamelContext.springCamelContext("/org/apache/camel/component/xmlsecurity/SpringXmlSignatureTests.xml");
+        return SpringCamelContext.springCamelContext(
+                new ClassPathXmlApplicationContext("/org/apache/camel/component/xmlsecurity/SpringXmlSignatureTests.xml"), true);
     }
 
     public static KeyAccessor getDsaKeyAccessor() {
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.java
index 290c183..6d8d831 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.java
@@ -42,7 +42,7 @@ public class SpringMarshalDomainObjectJSONTest extends MarshalDomainObjectJSONTe
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);        
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
 }
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalListTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalListTest.java
index c7d7201..c8c808d 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalListTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalListTest.java
@@ -39,7 +39,7 @@ public class SpringMarshalListTest extends MarshalListTest {
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);        
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 
 }
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.java
index a9be81a..095bc4a 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.java
@@ -43,7 +43,7 @@ public class SpringMarshalOmitFieldsTest extends XStreamDataFormatOmitFieldsTest
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
    
 }
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.java
index 3f54de3..c492a6f 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.java
@@ -40,6 +40,6 @@ public class SpringXStreamConfigurationTest extends XStreamConfigurationTest {
             }
         });
 
-        return SpringCamelContext.springCamelContext(applicationContext);
+        return SpringCamelContext.springCamelContext(applicationContext, true);
     }
 }
diff --git a/platforms/spring-boot/components-starter/camel-jms-starter/src/main/java/org/apache/camel/component/jms/springboot/JmsComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-jms-starter/src/main/java/org/apache/camel/component/jms/springboot/JmsComponentConfiguration.java
index 3235cc0..e008893 100644
--- a/platforms/spring-boot/components-starter/camel-jms-starter/src/main/java/org/apache/camel/component/jms/springboot/JmsComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-jms-starter/src/main/java/org/apache/camel/component/jms/springboot/JmsComponentConfiguration.java
@@ -31,7 +31,6 @@ import org.apache.camel.component.jms.MessageListenerContainerFactory;
 import org.apache.camel.component.jms.ReplyToType;
 import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
 import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.jms.core.JmsOperations;
 import org.springframework.jms.support.converter.MessageConverter;
@@ -1573,8 +1572,6 @@ public class JmsComponentConfiguration
          * Specifies whether to use transacted mode
          */
         private Boolean transacted = false;
-        @Deprecated
-        private Boolean transactedInOut;
         /**
          * If true, Camel will create a JmsTransactionManager, if there is no
          * transactionManager injected when option transacted=true.
@@ -2345,17 +2342,6 @@ public class JmsComponentConfiguration
             this.transacted = transacted;
         }
 
-        @Deprecated
-        @DeprecatedConfigurationProperty
-        public Boolean getTransactedInOut() {
-            return transactedInOut;
-        }
-
-        @Deprecated
-        public void setTransactedInOut(Boolean transactedInOut) {
-            this.transactedInOut = transactedInOut;
-        }
-
         public Boolean getLazyCreateTransactionManager() {
             return lazyCreateTransactionManager;
         }


[camel] 30/44: Extract camel-util and camel-api modules from camel-core

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 9a9f6233c5f6a5550d56531456ec8afa6c051bd9
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Oct 3 16:38:35 2018 +0200

    Extract camel-util and camel-api modules from camel-core
---
 bom/camel-bom/pom.xml                              |   10 +
 camel-api/pom.xml                                  |  327 +++++
 .../apache/camel/AfterPropertiesConfigured.java    |    0
 .../org/apache/camel/AlreadyStoppedException.java  |    0
 .../main/java/org/apache/camel/AsyncCallback.java  |    0
 .../main/java/org/apache/camel/AsyncEndpoint.java  |    0
 .../main/java/org/apache/camel/AsyncProcessor.java |    0
 .../main/java/org/apache/camel/AsyncProducer.java  |    0
 .../src/main/java/org/apache/camel/Attachment.java |    0
 .../java/org/apache/camel/AttachmentObjects.java   |    0
 .../main/java/org/apache/camel/Attachments.java    |    0
 .../main/java/org/apache/camel/BatchConsumer.java  |    0
 .../src/main/java/org/apache/camel/BeanInject.java |    0
 .../java/org/apache/camel/BinaryPredicate.java     |    0
 .../src/main/java/org/apache/camel/Body.java       |    0
 .../src/main/java/org/apache/camel/Builder.java    |    0
 .../main/java/org/apache/camel/BytesSource.java    |    0
 .../apache/camel/CamelAuthorizationException.java  |    0
 .../main/java/org/apache/camel/CamelContext.java   |    0
 .../java/org/apache/camel/CamelContextAware.java   |    0
 .../main/java/org/apache/camel/CamelException.java |    0
 .../org/apache/camel/CamelExchangeException.java   |    0
 .../org/apache/camel/CamelExecutionException.java  |    0
 .../org/apache/camel/CamelUnitOfWorkException.java |    0
 .../src/main/java/org/apache/camel/Channel.java    |    0
 .../src/main/java/org/apache/camel/Component.java  |    0
 .../main/java/org/apache/camel/ComponentAware.java |    0
 .../src/main/java/org/apache/camel/Consume.java    |    0
 .../src/main/java/org/apache/camel/Consumer.java   |    0
 .../java/org/apache/camel/ConsumerTemplate.java    |    0
 .../src/main/java/org/apache/camel/Converter.java  |    0
 .../java/org/apache/camel/DelegateEndpoint.java    |    0
 .../java/org/apache/camel/DelegateProcessor.java   |    0
 .../main/java/org/apache/camel/DynamicRouter.java  |    0
 .../src/main/java/org/apache/camel/Endpoint.java   |    0
 .../main/java/org/apache/camel/EndpointAware.java  |    0
 .../main/java/org/apache/camel/EndpointInject.java |    0
 .../java/org/apache/camel/ErrorHandlerFactory.java |    0
 .../src/main/java/org/apache/camel/Exchange.java   |    0
 .../java/org/apache/camel/ExchangeException.java   |    0
 .../java/org/apache/camel/ExchangePattern.java     |    0
 .../java/org/apache/camel/ExchangeProperties.java  |    0
 .../java/org/apache/camel/ExchangeProperty.java    |    0
 .../apache/camel/ExchangeTimedOutException.java    |    0
 .../org/apache/camel/ExecutorServiceAware.java     |    0
 .../apache/camel/ExpectedBodyTypeException.java    |    0
 .../main/java/org/apache/camel/Experimental.java   |    0
 .../src/main/java/org/apache/camel/Expression.java |    0
 .../camel/ExpressionEvaluationException.java       |    0
 .../camel/ExpressionIllegalSyntaxException.java    |    0
 .../org/apache/camel/ExtendedStartupListener.java  |    0
 .../camel/FailedToCreateConsumerException.java     |    0
 .../camel/FailedToCreateProducerException.java     |    0
 .../apache/camel/FailedToCreateRouteException.java |    0
 .../apache/camel/FailedToStartRouteException.java  |    0
 .../java/org/apache/camel/FallbackConverter.java   |    0
 .../org/apache/camel/FluentProducerTemplate.java   |    0
 .../src/main/java/org/apache/camel/Handler.java    |    0
 .../src/main/java/org/apache/camel/Header.java     |    0
 .../src/main/java/org/apache/camel/Headers.java    |    0
 .../src/main/java/org/apache/camel/InOnly.java     |    0
 .../src/main/java/org/apache/camel/InOut.java      |    0
 .../org/apache/camel/InvalidPayloadException.java  |    0
 .../camel/InvalidPayloadRuntimeException.java      |    0
 .../org/apache/camel/InvalidPropertyException.java |    0
 .../main/java/org/apache/camel/InvokeOnHeader.java |    0
 .../java/org/apache/camel/InvokeOnHeaders.java     |    0
 .../main/java/org/apache/camel/IsSingleton.java    |    0
 .../org/apache/camel/LoadPropertiesException.java  |    0
 .../main/java/org/apache/camel/LoggingLevel.java   |    0
 .../apache/camel/ManagementStatisticsLevel.java    |    0
 .../src/main/java/org/apache/camel/Message.java    |    0
 .../main/java/org/apache/camel/MessageHistory.java |    0
 .../org/apache/camel/MultipleConsumersSupport.java |    0
 .../src/main/java/org/apache/camel/NamedNode.java  |    0
 .../src/main/java/org/apache/camel/Navigate.java   |    0
 .../apache/camel/NoFactoryAvailableException.java  |    0
 .../java/org/apache/camel/NoSuchBeanException.java |    0
 .../org/apache/camel/NoSuchEndpointException.java  |    0
 .../org/apache/camel/NoSuchHeaderException.java    |    0
 .../org/apache/camel/NoSuchLanguageException.java  |    0
 .../org/apache/camel/NoSuchPropertyException.java  |    0
 .../camel/NoTypeConversionAvailableException.java  |    0
 .../java/org/apache/camel/NonManagedService.java   |    0
 .../src/main/java/org/apache/camel/Ordered.java    |    0
 .../src/main/java/org/apache/camel/OutHeaders.java |    0
 .../src/main/java/org/apache/camel/Pattern.java    |    0
 .../java/org/apache/camel/PollingConsumer.java     |    0
 .../camel/PollingConsumerPollingStrategy.java      |    0
 .../src/main/java/org/apache/camel/Predicate.java  |    0
 .../src/main/java/org/apache/camel/Processor.java  |    0
 .../src/main/java/org/apache/camel/Produce.java    |    0
 .../src/main/java/org/apache/camel/Producer.java   |    0
 .../java/org/apache/camel/ProducerTemplate.java    |    0
 .../main/java/org/apache/camel/PropertyInject.java |    0
 .../apache/camel/ProxyInstantiationException.java  |    0
 .../main/java/org/apache/camel/RecipientList.java  |    0
 .../camel/ResolveEndpointFailedException.java      |    0
 .../apache/camel/RollbackExchangeException.java    |    0
 .../src/main/java/org/apache/camel/Route.java      |    0
 .../src/main/java/org/apache/camel/RouteAware.java |    0
 .../main/java/org/apache/camel/RoutesBuilder.java  |    0
 .../main/java/org/apache/camel/RoutingSlip.java    |    0
 .../org/apache/camel/RuntimeCamelException.java    |    0
 .../org/apache/camel/RuntimeConfiguration.java     |    0
 .../org/apache/camel/RuntimeExchangeException.java |    0
 .../apache/camel/RuntimeExpressionException.java   |    0
 .../apache/camel/RuntimeTransformException.java    |    0
 .../apache/camel/SSLContextParametersAware.java    |    0
 .../src/main/java/org/apache/camel/Service.java    |    0
 .../main/java/org/apache/camel/ServiceStatus.java  |    0
 .../main/java/org/apache/camel/ShutdownRoute.java  |    0
 .../java/org/apache/camel/ShutdownRunningTask.java |    0
 .../java/org/apache/camel/ShutdownableService.java |    0
 .../java/org/apache/camel/StartupListener.java     |    0
 .../java/org/apache/camel/StatefulService.java     |    0
 .../main/java/org/apache/camel/StaticService.java  |    0
 .../main/java/org/apache/camel/StreamCache.java    |    0
 .../main/java/org/apache/camel/StringSource.java   |    0
 .../main/java/org/apache/camel/Suspendable.java    |    0
 .../java/org/apache/camel/SuspendableService.java  |    0
 .../src/main/java/org/apache/camel/TimeoutMap.java |    0
 .../main/java/org/apache/camel/TimerListener.java  |    0
 .../src/main/java/org/apache/camel/Traceable.java  |    0
 .../org/apache/camel/TypeConversionException.java  |    0
 .../main/java/org/apache/camel/TypeConverter.java  |    0
 .../java/org/apache/camel/TypeConverterExists.java |    0
 .../apache/camel/TypeConverterExistsException.java |    0
 .../apache/camel/TypeConverterLoaderException.java |    0
 .../main/java/org/apache/camel/TypeConverters.java |    0
 .../java/org/apache/camel/ValidationException.java |    0
 .../main/java/org/apache/camel/ValueHolder.java    |    0
 .../camel/VetoCamelContextStartException.java      |    0
 .../org/apache/camel/WaitForTaskToComplete.java    |    0
 .../main/java/org/apache/camel/WrappedFile.java    |    0
 .../camel/cluster/CamelClusterEventListener.java   |    0
 .../apache/camel/cluster/CamelClusterMember.java   |    0
 .../apache/camel/cluster/CamelClusterService.java  |    0
 .../org/apache/camel/cluster/CamelClusterView.java |    0
 .../java/org/apache/camel/cluster/package.html     |    0
 .../component/extension/ComponentExtension.java    |    0
 .../extension/ComponentVerifierExtension.java      |    0
 .../ComponentVerifierExtensionHelper.java          |    0
 .../component/extension/MetaDataExtension.java     |    0
 .../apache/camel/component/extension/package.html  |    0
 .../java/org/apache/camel/health/HealthCheck.java  |    0
 .../camel/health/HealthCheckConfiguration.java     |    0
 .../org/apache/camel/health/HealthCheckFilter.java |    0
 .../org/apache/camel/health/HealthCheckHelper.java |    0
 .../apache/camel/health/HealthCheckRegistry.java   |    0
 .../apache/camel/health/HealthCheckRepository.java |    0
 .../camel/health/HealthCheckResultBuilder.java     |    0
 .../apache/camel/health/HealthCheckService.java    |    0
 .../main/java/org/apache/camel/health/package.html |    0
 .../main/java/org/apache/camel/package-info.java   |    0
 .../runtimecatalog/EndpointValidationResult.java   |    6 +-
 .../camel/runtimecatalog/JSonSchemaResolver.java   |    0
 .../runtimecatalog/LanguageValidationResult.java   |    0
 .../camel/runtimecatalog/RuntimeCamelCatalog.java  |    0
 .../org/apache/camel/runtimecatalog/package.html   |    0
 .../apache/camel/spi/AggregationRepository.java    |    0
 .../camel/spi/AsyncProcessorAwaitManager.java      |    0
 .../org/apache/camel/spi/AuthorizationPolicy.java  |    0
 .../main/java/org/apache/camel/spi/Breakpoint.java |    0
 .../org/apache/camel/spi/BrowsableEndpoint.java    |    0
 .../apache/camel/spi/CamelContextNameStrategy.java |    0
 .../org/apache/camel/spi/CamelContextTracker.java  |    0
 .../java/org/apache/camel/spi}/CamelLogger.java    |    2 +-
 .../org/apache/camel/spi/ClaimCheckRepository.java |    0
 .../java/org/apache/camel/spi/ClassResolver.java   |    0
 .../org/apache/camel/spi/ComponentCustomizer.java  |    0
 .../org/apache/camel/spi/ComponentResolver.java    |    0
 .../main/java/org/apache/camel/spi/Condition.java  |    0
 .../main/java/org/apache/camel/spi/Contract.java   |    0
 .../main/java/org/apache/camel/spi/DataFormat.java |    0
 .../org/apache/camel/spi/DataFormatCustomizer.java |    0
 .../org/apache/camel/spi/DataFormatFactory.java    |    0
 .../java/org/apache/camel/spi/DataFormatName.java  |    0
 .../org/apache/camel/spi/DataFormatResolver.java   |    0
 .../main/java/org/apache/camel/spi/DataType.java   |    0
 .../java/org/apache/camel/spi/DataTypeAware.java   |    0
 .../main/java/org/apache/camel/spi/Debugger.java   |    0
 .../org/apache/camel/spi/EndpointRegistry.java     |    3 +-
 .../org/apache/camel/spi/EndpointStrategy.java     |    0
 .../camel/spi/EndpointUtilizationStatistics.java   |    0
 .../java/org/apache/camel/spi/EventFactory.java    |    0
 .../java/org/apache/camel/spi/EventNotifier.java   |    0
 .../org/apache/camel/spi/ExceptionHandler.java     |    0
 .../org/apache/camel/spi/ExchangeFormatter.java    |    0
 .../camel/spi/ExchangeIdempotentRepository.java    |    0
 .../apache/camel/spi/ExecutorServiceManager.java   |    0
 .../java/org/apache/camel/spi/FactoryFinder.java   |    0
 .../apache/camel/spi/FactoryFinderResolver.java    |    0
 .../main/java/org/apache/camel/spi/GroupAware.java |    0
 .../java/org/apache/camel/spi/HasCamelContext.java |    0
 .../main/java/org/apache/camel/spi/HasGroup.java   |    0
 .../src/main/java/org/apache/camel/spi/HasId.java  |    0
 .../org/apache/camel/spi/HeaderFilterStrategy.java |    0
 .../camel/spi/HeaderFilterStrategyAware.java       |    0
 .../org/apache/camel/spi/HeadersMapFactory.java    |    0
 .../main/java/org/apache/camel/spi/IdAware.java    |    0
 .../org/apache/camel/spi/IdempotentRepository.java |    0
 .../org/apache/camel/spi/InflightRepository.java   |    0
 .../main/java/org/apache/camel/spi/Injector.java   |    0
 .../org/apache/camel/spi/InterceptStrategy.java    |    0
 .../main/java/org/apache/camel/spi/Language.java   |    0
 .../org/apache/camel/spi/LanguageCustomizer.java   |    0
 .../org/apache/camel/spi/LanguageResolver.java     |    0
 .../org/apache/camel/spi/LifecycleStrategy.java    |    0
 .../java/org/apache/camel/spi/LogListener.java     |    1 -
 .../java/org/apache/camel/spi/ManagementAgent.java |    0
 .../apache/camel/spi/ManagementMBeanAssembler.java |    0
 .../apache/camel/spi/ManagementNameStrategy.java   |    0
 .../apache/camel/spi/ManagementNamingStrategy.java |    0
 .../apache/camel/spi/ManagementObjectStrategy.java |    0
 .../org/apache/camel/spi/ManagementStrategy.java   |    0
 .../org/apache/camel/spi/MaskingFormatter.java     |    0
 .../apache/camel/spi/MessageHistoryFactory.java    |    0
 .../apache/camel/spi/ModelJAXBContextFactory.java  |    0
 .../java/org/apache/camel/spi/NamespaceAware.java  |    0
 .../java/org/apache/camel/spi/NodeIdFactory.java   |    0
 .../OptimisticLockingAggregationRepository.java    |    0
 .../apache/camel/spi/PackageScanClassResolver.java |    0
 .../org/apache/camel/spi/PackageScanFilter.java    |    0
 .../src/main/java/org/apache/camel/spi/Policy.java |    0
 .../camel/spi/PollingConsumerPollStrategy.java     |    0
 .../org/apache/camel/spi/ProcessorFactory.java     |    0
 .../spi/RecoverableAggregationRepository.java      |    0
 .../main/java/org/apache/camel/spi/Registry.java   |    0
 .../java/org/apache/camel/spi/ReloadStrategy.java  |    0
 .../apache/camel/spi/RestApiConsumerFactory.java   |    0
 .../apache/camel/spi/RestApiProcessorFactory.java  |    0
 .../org/apache/camel/spi/RestConfiguration.java    |    4 +-
 .../org/apache/camel/spi/RestConsumerFactory.java  |    0
 .../org/apache/camel/spi/RestProducerFactory.java  |    0
 .../java/org/apache/camel/spi/RestRegistry.java    |    0
 .../java/org/apache/camel/spi/RouteContext.java    |    0
 .../java/org/apache/camel/spi/RouteController.java |    0
 .../main/java/org/apache/camel/spi/RouteError.java |    0
 .../java/org/apache/camel/spi/RoutePolicy.java     |    0
 .../org/apache/camel/spi/RoutePolicyFactory.java   |    0
 .../org/apache/camel/spi/RouteStartupOrder.java    |    0
 .../apache/camel/spi/RuntimeEndpointRegistry.java  |    0
 .../camel/spi/ScheduledPollConsumerScheduler.java  |    6 +-
 .../org/apache/camel/spi/SendDynamicAware.java     |    0
 .../java/org/apache/camel/spi/ShutdownAware.java   |    0
 .../org/apache/camel/spi/ShutdownPrepared.java     |    0
 .../org/apache/camel/spi/ShutdownStrategy.java     |    0
 .../java/org/apache/camel/spi/StateRepository.java |    0
 .../apache/camel/spi/StreamCachingStrategy.java    |    0
 .../java/org/apache/camel/spi/SubUnitOfWork.java   |    0
 .../apache/camel/spi/SubUnitOfWorkCallback.java    |    0
 .../java/org/apache/camel/spi/Synchronization.java |    0
 .../camel/spi/SynchronizationRouteAware.java       |    0
 .../apache/camel/spi/SynchronizationVetoable.java  |    0
 .../org/apache/camel/spi/ThreadPoolFactory.java    |    0
 .../org/apache/camel/spi/ThreadPoolProfile.java    |    0
 .../org/apache/camel/spi/TransactedPolicy.java     |    0
 .../java/org/apache/camel/spi/Transformer.java     |    0
 .../org/apache/camel/spi/TransformerRegistry.java  |    3 +-
 .../org/apache/camel/spi/TypeConverterAware.java   |    0
 .../org/apache/camel/spi/TypeConverterLoader.java  |    0
 .../apache/camel/spi/TypeConverterRegistry.java    |    0
 .../main/java/org/apache/camel/spi/UnitOfWork.java |    0
 .../org/apache/camel/spi/UnitOfWorkFactory.java    |    0
 .../java/org/apache/camel/spi/UuidGenerator.java   |    0
 .../main/java/org/apache/camel/spi/Validator.java  |    0
 .../org/apache/camel/spi/ValidatorRegistry.java    |    3 +-
 .../main/java/org/apache/camel/spi/package.html    |    0
 .../org/apache/camel/support/ServiceHelper.java    |    0
 .../org/apache/camel/support/ServiceSupport.java   |    0
 .../jsse/AliasedX509ExtendedKeyManager.java        |    0
 .../support/jsse/BaseSSLContextParameters.java     |    0
 .../camel/support/jsse/CipherSuitesParameters.java |    0
 .../camel/support/jsse/ClientAuthentication.java   |    0
 .../camel/support/jsse/FilterParameters.java       |    0
 .../jsse/GlobalSSLContextParametersSupplier.java   |    0
 .../apache/camel/support/jsse/JsseParameters.java  |    0
 .../camel/support/jsse/KeyManagersParameters.java  |    0
 .../camel/support/jsse/KeyStoreParameters.java     |    0
 .../support/jsse/SSLContextClientParameters.java   |    0
 .../camel/support/jsse/SSLContextParameters.java   |    0
 .../support/jsse/SSLContextServerParameters.java   |    0
 .../camel/support/jsse/SecureRandomParameters.java |    0
 .../jsse/SecureSocketProtocolsParameters.java      |    0
 .../support/jsse/TrustManagersParameters.java      |    0
 .../org/apache/camel/support/jsse/package.html     |    0
 camel-core/pom.xml                                 |   16 +
 .../camel/builder/DeadLetterChannelBuilder.java    |    2 +-
 .../camel/builder/DefaultErrorHandlerBuilder.java  |    2 +-
 .../component/controlbus/ControlBusEndpoint.java   |    2 +-
 .../component/controlbus/ControlBusProducer.java   |    2 +-
 .../camel/component/dataset/DataSetConsumer.java   |    2 +-
 .../camel/component/dataset/DataSetEndpoint.java   |    2 +-
 .../FileChangedExclusiveReadLockStrategy.java      |    2 +-
 ...dempotentChangedRepositoryReadLockStrategy.java |    2 +-
 ...IdempotentRenameRepositoryReadLockStrategy.java |    2 +-
 .../FileIdempotentRepositoryReadLockStrategy.java  |    2 +-
 .../FileLockExclusiveReadLockStrategy.java         |    2 +-
 ...GenericFileRenameExclusiveReadLockStrategy.java |    2 +-
 .../apache/camel/component/log/LogComponent.java   |    2 +-
 .../apache/camel/component/log/LogEndpoint.java    |    2 +-
 .../apache/camel/component/mock/MockComponent.java |    2 +-
 .../rest/RestComponentVerifierExtension.java       |    2 +-
 .../apache/camel/component/rest/RestEndpoint.java  |    2 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |    2 +-
 .../camel/impl/ThrottlingInflightRoutePolicy.java  |    2 +-
 .../impl/converter/BaseTypeConverterRegistry.java  |    2 +-
 .../java/org/apache/camel/model/LogDefinition.java |    2 +-
 .../apache/camel/processor/CamelLogProcessor.java  |    2 +-
 .../apache/camel/processor/DeadLetterChannel.java  |    2 +-
 .../camel/processor/DefaultErrorHandler.java       |    2 +-
 .../org/apache/camel/processor/LogProcessor.java   |    2 +-
 .../camel/processor/RedeliveryErrorHandler.java    |    2 +-
 .../apache/camel/processor/ThroughputLogger.java   |    2 +-
 .../processor/interceptor/BacklogDebugger.java     |    2 +-
 .../camel/runtimecatalog/AbstractCamelCatalog.java | 1284 --------------------
 .../apache/camel/runtimecatalog/CatalogHelper.java |  179 ---
 .../runtimecatalog/CollectionStringBuffer.java     |   57 -
 .../camel/runtimecatalog/JSonSchemaHelper.java     |  428 -------
 .../camel/runtimecatalog/TimePatternConverter.java |  120 --
 .../runtimecatalog/impl}/AbstractCamelCatalog.java |   72 +-
 .../{ => impl}/CamelContextJSonSchemaResolver.java |    3 +-
 .../camel/runtimecatalog/impl}/CatalogHelper.java  |    2 +-
 .../{ => impl}/DefaultRuntimeCamelCatalog.java     |    3 +-
 .../runtimecatalog/impl}/JSonSchemaHelper.java     |   12 +-
 .../{ => impl}/SuggestionStrategy.java             |    2 +-
 .../runtimecatalog/impl}/TimePatternConverter.java |    2 +-
 .../runtimecatalog/{ => impl}/URISupport.java      |    2 +-
 .../{ => impl}/UnsafeUriCharactersEncoder.java     |    2 +-
 .../camel/support/LoggingExceptionHandler.java     |    1 +
 .../RestProducerFactoryHelper.java                 |    5 +-
 .../dump}/CamelContextStatDump.java                |    2 +-
 .../{util => support/dump}/ProcessorStatDump.java  |    2 +-
 .../{util => support/dump}/RouteStatDump.java      |    2 +-
 .../src/main/resources/org/apache/camel/jaxb.index |    1 -
 .../apache/camel/{util => support/dump}/jaxb.index |    0
 .../apache/camel/util/{ => concurrent}/jaxb.index  |    4 +-
 .../camel/{util => component/mock}/TimeTest.java   |    3 +-
 .../camel/processor/ThroughPutLoggerTest.java      |    2 +-
 .../{ => impl}/AbstractCamelCatalogTest.java       |    4 +-
 .../{ => impl}/JSonSchemaHelperTest.java           |    3 +-
 .../{ => impl}/RuntimeCamelCatalogTest.java        |    5 +-
 camel-util/pom.xml                                 |  361 ++++++
 .../java/org/apache/camel/util/AntPathMatcher.java |    0
 .../org/apache/camel/util/CamelVersionHelper.java  |    0
 .../org/apache/camel/util/CaseInsensitiveMap.java  |    0
 .../main/java/org/apache/camel/util/CastUtils.java |    0
 .../org/apache/camel/util/CollectionHelper.java    |    0
 .../apache/camel/util/CollectionStringBuffer.java  |    0
 .../org/apache/camel/util/FilePathResolver.java    |    0
 .../main/java/org/apache/camel/util/FileUtil.java  |    0
 .../main/java/org/apache/camel/util/HostUtils.java |    0
 .../main/java/org/apache/camel/util/IOHelper.java  |    0
 .../org/apache/camel/util/InetAddressUtil.java     |    0
 .../org/apache/camel/util/JsonSchemaHelper.java    |    0
 .../java/org/apache/camel/util/KeyValueHolder.java |    0
 .../java/org/apache/camel/util/ObjectHelper.java   |    0
 .../java/org/apache/camel/util/OgnlHelper.java     |    0
 .../java/org/apache/camel/util/PackageHelper.java  |    0
 .../java/org/apache/camel/util/ReferenceCount.java |    0
 .../org/apache/camel/util/ReflectionHelper.java    |    0
 .../main/java/org/apache/camel/util/Scanner.java   |    0
 .../java/org/apache/camel/util/SedaConstants.java  |    0
 .../java/org/apache/camel/util/SkipIterator.java   |    0
 .../main/java/org/apache/camel/util/StopWatch.java |    0
 .../java/org/apache/camel/util/StreamUtils.java    |    0
 .../java/org/apache/camel/util/StringHelper.java   |    0
 .../org/apache/camel/util/StringQuoteHelper.java   |    0
 .../main/java/org/apache/camel/util/TimeUtils.java |    0
 .../java/org/apache/camel/util/URISupport.java     |    0
 .../main/java/org/apache/camel/util/UnitUtils.java |    0
 .../camel/util/UnsafeUriCharactersEncoder.java     |    0
 .../org/apache/camel/util/XmlLineNumberParser.java |    0
 .../org/apache/camel/util/backoff/BackOff.java     |    0
 .../apache/camel/util/backoff/BackOffTimer.java    |    0
 .../camel/util/backoff/BackOffTimerTask.java       |    0
 .../org/apache/camel/util/backoff/package.html     |    0
 .../camel/util/concurrent/CamelThreadFactory.java  |    0
 .../apache/camel/util/concurrent/LockHelper.java   |    0
 .../apache/camel/util/concurrent/Rejectable.java   |    0
 .../util/concurrent/RejectableFutureTask.java      |    0
 .../RejectableScheduledThreadPoolExecutor.java     |    0
 .../concurrent/RejectableThreadPoolExecutor.java   |    0
 .../concurrent/SizedScheduledExecutorService.java  |    0
 .../concurrent/SubmitOrderedCompletionService.java |    0
 .../concurrent/SynchronousExecutorService.java     |    0
 .../apache/camel/util/concurrent/ThreadHelper.java |    0
 .../util/concurrent/ThreadPoolRejectedPolicy.java  |    0
 .../org/apache/camel/util/concurrent/package.html  |    0
 .../org/apache/camel/util/function/Bindings.java   |    0
 .../org/apache/camel/util/function/Predicates.java |    0
 .../org/apache/camel/util/function/Suppliers.java  |    0
 .../camel/util/function/ThrowingBiConsumer.java    |    0
 .../camel/util/function/ThrowingBiFunction.java    |    0
 .../camel/util/function/ThrowingConsumer.java      |    0
 .../camel/util/function/ThrowingFunction.java      |    0
 .../apache/camel/util/function/ThrowingHelper.java |    0
 .../camel/util/function/ThrowingRunnable.java      |    0
 .../camel/util/function/ThrowingSupplier.java      |    0
 .../util/function/ThrowingToLongFunction.java      |    0
 .../camel/util/function/ThrowingTriConsumer.java   |    0
 .../apache/camel/util/function/TriConsumer.java    |    0
 .../org/apache/camel/util/function/package.html    |    0
 .../main/java/org/apache/camel/util/package.html   |    0
 .../org/apache/camel/util/AntPathMatcherTest.java  |    0
 .../apache/camel/util/CamelVersionHelperTest.java  |    0
 .../apache/camel/util/CollectionHelperTest.java    |    0
 .../camel/util/CollectionStringBufferTest.java     |    0
 .../java/org/apache/camel/util/UnitUtilsTest.java  |    0
 .../org/apache/camel/util/backoff/BackOffTest.java |    0
 .../camel/util/backoff/BackOffTimerTest.java       |    0
 .../SizedScheduledExecutorServiceTest.java         |    0
 .../SubmitOrderedCompletionServiceTest.java        |    0
 .../concurrent/SynchronousExecutorServiceTest.java |    0
 .../apache/camel/util/function/PredicatesTest.java |    0
 .../transaction/JtaTransactionErrorHandler.java    |    2 +-
 .../JtaTransactionErrorHandlerBuilder.java         |    2 +-
 .../remote/DefaultFtpClientActivityListener.java   |    2 +-
 .../FtpChangedExclusiveReadLockStrategy.java       |    2 +-
 .../SftpChangedExclusiveReadLockStrategy.java      |    2 +-
 .../camel/component/http4/HttpComponent.java       |    9 +-
 .../camel/component/jetty/JettyHttpComponent.java  |    2 +-
 .../camel/component/mina2/Mina2Producer.java       |    2 +-
 .../component/netty4/http/NettyHttpComponent.java  |    6 +-
 .../http/handlers/HttpServerChannelHandler.java    |    3 +-
 .../netty4/NettyConsumerExceptionHandler.java      |    2 +-
 .../camel/component/netty4/NettyProducer.java      |    6 +-
 .../netty4/TimeoutCorrelationManagerSupport.java   |    4 +-
 .../netty4/handlers/ServerChannelHandler.java      |    2 +-
 .../camel/opentracing/OpenTracingTracer.java       |    6 +-
 .../camel/component/restlet/RestletComponent.java  |    8 +-
 .../spring/boot/LogListenerDiscoveryTest.java      |    2 +-
 .../camel/spring/spi/TransactionErrorHandler.java  |    2 +-
 .../spring/spi/TransactionErrorHandlerBuilder.java |    2 +-
 .../component/undertow/UndertowComponent.java      |   10 +-
 parent/pom.xml                                     |   10 +
 .../maven/DefaultMavenArtifactProvider.java        |   15 +-
 .../nexus/ConnectorCatalogNexusRepository.java     |   15 +-
 platforms/camel-catalog/pom.xml                    |   55 +-
 .../camel/catalog/CamelCatalogMBeanExporter.java   |   86 --
 .../camel/catalog/CollectionStringBuffer.java      |   57 -
 .../camel/catalog/EndpointValidationResult.java    |  488 --------
 .../apache/camel/catalog/JSonSchemaResolver.java   |   64 -
 .../camel/catalog/LanguageValidationResult.java    |   65 -
 .../apache/camel/catalog/SuggestionStrategy.java   |   34 -
 .../java/org/apache/camel/catalog/URISupport.java  |  392 ------
 .../camel/catalog/UnsafeUriCharactersEncoder.java  |  206 ----
 .../apache/camel/commands/ContextInfoCommand.java  |    2 +-
 .../apache/camel/commands/RouteInfoCommand.java    |    2 +-
 .../apache/camel/commands/RouteProfileCommand.java |    4 +-
 .../camel-spring-boot-dependencies/pom.xml         |   10 +
 pom.xml                                            |    2 +
 453 files changed, 933 insertions(+), 3650 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 254b4a6..612af60 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -68,6 +68,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-apns</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -2680,6 +2685,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-util</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-velocity</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/camel-api/pom.xml b/camel-api/pom.xml
new file mode 100644
index 0000000..87d6aa0
--- /dev/null
+++ b/camel-api/pom.xml
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-parent</artifactId>
+    <version>3.0.0-SNAPSHOT</version>
+    <relativePath>../parent</relativePath>
+  </parent>
+
+  <artifactId>camel-api</artifactId>
+  <packaging>jar</packaging>
+  <name>Camel :: API</name>
+  <description>The Camel API</description>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>spi-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-util</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>json-simple-ordered</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+  </dependencies>
+
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <links>
+            <link>http://download.oracle.com/javase/7/docs/api/</link>
+            <link>http://download.oracle.com/javaee/7/api/</link>
+          </links>
+          <linksource>true</linksource>
+          <maxmemory>256m</maxmemory>
+          <groups>
+            <group>
+              <title>Camel API</title>
+              <packages>org.apache.camel</packages>
+            </group>
+            <group>
+              <title>Fluent API (DSL) for building EIP rules</title>
+              <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+            </group>
+            <group>
+              <title>EIP model</title>
+              <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+            </group>
+            <group>
+              <title>Camel Components</title>
+              <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+            </group>
+            <group>
+              <title>Language APIs and plugins for Expressions and Predicates</title>
+              <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+            </group>
+            <group>
+              <title>Processors to implement the Enterprise Integration Patterns</title>
+              <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+            </group>
+            <group>
+              <title>Strategy APIs for implementors extending Camel</title>
+              <packages>org.apache.camel.spi</packages>
+            </group>
+            <group>
+              <title>Support APIs for implementors</title>
+              <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+            </group>
+            <group>
+              <title>Management (JMX) API</title>
+              <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+            </group>
+            <group>
+              <title>Camel Runtime</title>
+              <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+            </group>
+            <group>
+              <title>Camel Main to run Camel standalone</title>
+              <packages>org.apache.camel.main</packages>
+            </group>
+            <group>
+              <title>Type conversion helper classes</title>
+              <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+            </group>
+            <group>
+              <title>Utility classes</title>
+              <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+            </group>
+          </groups>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+
+  <profiles>
+    <profile>
+      <id>release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-javadoc-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>package</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>jar</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <links>
+                <link>http://download.oracle.com/javase/7/docs/api/</link>
+                <link>http://download.oracle.com/javaee/7/api/</link>
+              </links>
+              <linksource>true</linksource>
+              <maxmemory>256m</maxmemory>
+              <groups>
+                <group>
+                  <title>Camel API</title>
+                  <packages>org.apache.camel</packages>
+                </group>
+                <group>
+                  <title>Fluent API (DSL) for building EIP rules</title>
+                  <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+                </group>
+                <group>
+                  <title>EIP model</title>
+                  <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+                </group>
+                <group>
+                  <title>Camel Components</title>
+                  <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+                </group>
+                <group>
+                  <title>Language APIs and plugins for Expressions and Predicates</title>
+                  <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+                </group>
+                <group>
+                  <title>Processors to implement the Enterprise Integration Patterns</title>
+                  <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+                </group>
+                <group>
+                  <title>Strategy APIs for implementors extending Camel</title>
+                  <packages>org.apache.camel.spi</packages>
+                </group>
+                <group>
+                  <title>Support APIs for implementors</title>
+                  <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+                </group>
+                <group>
+                  <title>Management (JMX) API</title>
+                  <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+                </group>
+                <group>
+                  <title>Camel Runtime</title>
+                  <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+                </group>
+                <group>
+                  <title>Camel Main to run Camel standalone</title>
+                  <packages>org.apache.camel.main</packages>
+                </group>
+                <group>
+                  <title>Type conversion helper classes</title>
+                  <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+                </group>
+                <group>
+                  <title>Utility classes</title>
+                  <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+                </group>
+              </groups>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <!-- skip management tests on AIX as it hangs CI servers -->
+    <profile>
+      <id>aix</id>
+      <activation>
+        <os>
+          <name>aix</name>
+        </os>
+      </activation>
+      <properties>
+        <platform.skip.tests>org/apache/camel/management/**/*.java</platform.skip.tests>
+      </properties>
+    </profile>
+    <profile>
+      <id>xalan</id>
+      <dependencies>
+        <!-- enable the Xalan processor -->
+        <dependency>
+          <groupId>xalan</groupId>
+          <artifactId>xalan</artifactId>
+          <version>${xalan-version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>xerces</id>
+      <dependencies>
+        <!-- enable the xerces processor -->
+        <dependency>
+          <groupId>xerces</groupId>
+          <artifactId>xercesImpl</artifactId>
+          <version>${xerces-version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>woodstox</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      <dependencies>
+        <!-- xmltokenizer using woodstox -->
+        <dependency>
+          <groupId>org.codehaus.woodstox</groupId>
+          <artifactId>woodstox-core-asl</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+
+    <profile>
+      <id>jdk9+-build</id>
+      <activation>
+        <jdk>[9,)</jdk>
+      </activation>
+      <dependencies>
+
+        <!-- enable the APT processor -->
+        <dependency>
+          <groupId>org.apache.camel</groupId>
+          <artifactId>apt</artifactId>
+          <scope>provided</scope>
+        </dependency>
+        <!-- xmltokenizer using woodstox -->
+        <dependency>
+          <groupId>org.codehaus.woodstox</groupId>
+          <artifactId>woodstox-core-asl</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <!-- skip file stress tests as they are intended to run manually -->
+              <excludes>
+                <exclude>org/apache/camel/component/file/stress/**.java</exclude>
+                <exclude>**/DistributedCompletionIntervalTest.java</exclude>
+                <exclude>**/DistributedConcurrentPerCorrelationKeyTest.java</exclude>
+                <exclude>${platform.skip.tests}</exclude>
+              </excludes>
+              <forkedProcessTimeoutInSeconds>3000</forkedProcessTimeoutInSeconds>
+              <!-- needed for testing the properties component -->
+              <environmentVariables>
+              <FOO_SERVICE_HOST>myserver</FOO_SERVICE_HOST>
+              <FOO_SERVICE_PORT>8081</FOO_SERVICE_PORT>
+              </environmentVariables>
+              <argLine>--add-modules java.xml.bind,java.xml.ws --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED</argLine>
+            </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>com.sun.xml.bind</groupId>
+                <artifactId>jaxb-core</artifactId>
+                <version>${jaxb-version}</version>
+              </dependency>
+              <dependency>
+                <groupId>com.sun.xml.bind</groupId>
+                <artifactId>jaxb-impl</artifactId>
+                <version>${jaxb-version}</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+</project>
diff --git a/camel-core/src/main/java/org/apache/camel/AfterPropertiesConfigured.java b/camel-api/src/main/java/org/apache/camel/AfterPropertiesConfigured.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AfterPropertiesConfigured.java
rename to camel-api/src/main/java/org/apache/camel/AfterPropertiesConfigured.java
diff --git a/camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java b/camel-api/src/main/java/org/apache/camel/AlreadyStoppedException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java
rename to camel-api/src/main/java/org/apache/camel/AlreadyStoppedException.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncCallback.java b/camel-api/src/main/java/org/apache/camel/AsyncCallback.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncCallback.java
rename to camel-api/src/main/java/org/apache/camel/AsyncCallback.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncEndpoint.java b/camel-api/src/main/java/org/apache/camel/AsyncEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncEndpoint.java
rename to camel-api/src/main/java/org/apache/camel/AsyncEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java b/camel-api/src/main/java/org/apache/camel/AsyncProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
rename to camel-api/src/main/java/org/apache/camel/AsyncProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProducer.java b/camel-api/src/main/java/org/apache/camel/AsyncProducer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncProducer.java
rename to camel-api/src/main/java/org/apache/camel/AsyncProducer.java
diff --git a/camel-core/src/main/java/org/apache/camel/Attachment.java b/camel-api/src/main/java/org/apache/camel/Attachment.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Attachment.java
rename to camel-api/src/main/java/org/apache/camel/Attachment.java
diff --git a/camel-core/src/main/java/org/apache/camel/AttachmentObjects.java b/camel-api/src/main/java/org/apache/camel/AttachmentObjects.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AttachmentObjects.java
rename to camel-api/src/main/java/org/apache/camel/AttachmentObjects.java
diff --git a/camel-core/src/main/java/org/apache/camel/Attachments.java b/camel-api/src/main/java/org/apache/camel/Attachments.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Attachments.java
rename to camel-api/src/main/java/org/apache/camel/Attachments.java
diff --git a/camel-core/src/main/java/org/apache/camel/BatchConsumer.java b/camel-api/src/main/java/org/apache/camel/BatchConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BatchConsumer.java
rename to camel-api/src/main/java/org/apache/camel/BatchConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/BeanInject.java b/camel-api/src/main/java/org/apache/camel/BeanInject.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BeanInject.java
rename to camel-api/src/main/java/org/apache/camel/BeanInject.java
diff --git a/camel-core/src/main/java/org/apache/camel/BinaryPredicate.java b/camel-api/src/main/java/org/apache/camel/BinaryPredicate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BinaryPredicate.java
rename to camel-api/src/main/java/org/apache/camel/BinaryPredicate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Body.java b/camel-api/src/main/java/org/apache/camel/Body.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Body.java
rename to camel-api/src/main/java/org/apache/camel/Body.java
diff --git a/camel-core/src/main/java/org/apache/camel/Builder.java b/camel-api/src/main/java/org/apache/camel/Builder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Builder.java
rename to camel-api/src/main/java/org/apache/camel/Builder.java
diff --git a/camel-core/src/main/java/org/apache/camel/BytesSource.java b/camel-api/src/main/java/org/apache/camel/BytesSource.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BytesSource.java
rename to camel-api/src/main/java/org/apache/camel/BytesSource.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java b/camel-api/src/main/java/org/apache/camel/CamelAuthorizationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java
rename to camel-api/src/main/java/org/apache/camel/CamelAuthorizationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-api/src/main/java/org/apache/camel/CamelContext.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelContext.java
rename to camel-api/src/main/java/org/apache/camel/CamelContext.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContextAware.java b/camel-api/src/main/java/org/apache/camel/CamelContextAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelContextAware.java
rename to camel-api/src/main/java/org/apache/camel/CamelContextAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelException.java b/camel-api/src/main/java/org/apache/camel/CamelException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelException.java
rename to camel-api/src/main/java/org/apache/camel/CamelException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelExchangeException.java b/camel-api/src/main/java/org/apache/camel/CamelExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/CamelExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java b/camel-api/src/main/java/org/apache/camel/CamelExecutionException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
rename to camel-api/src/main/java/org/apache/camel/CamelExecutionException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelUnitOfWorkException.java b/camel-api/src/main/java/org/apache/camel/CamelUnitOfWorkException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelUnitOfWorkException.java
rename to camel-api/src/main/java/org/apache/camel/CamelUnitOfWorkException.java
diff --git a/camel-core/src/main/java/org/apache/camel/Channel.java b/camel-api/src/main/java/org/apache/camel/Channel.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Channel.java
rename to camel-api/src/main/java/org/apache/camel/Channel.java
diff --git a/camel-core/src/main/java/org/apache/camel/Component.java b/camel-api/src/main/java/org/apache/camel/Component.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Component.java
rename to camel-api/src/main/java/org/apache/camel/Component.java
diff --git a/camel-core/src/main/java/org/apache/camel/ComponentAware.java b/camel-api/src/main/java/org/apache/camel/ComponentAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ComponentAware.java
rename to camel-api/src/main/java/org/apache/camel/ComponentAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/Consume.java b/camel-api/src/main/java/org/apache/camel/Consume.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Consume.java
rename to camel-api/src/main/java/org/apache/camel/Consume.java
diff --git a/camel-core/src/main/java/org/apache/camel/Consumer.java b/camel-api/src/main/java/org/apache/camel/Consumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Consumer.java
rename to camel-api/src/main/java/org/apache/camel/Consumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/ConsumerTemplate.java b/camel-api/src/main/java/org/apache/camel/ConsumerTemplate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ConsumerTemplate.java
rename to camel-api/src/main/java/org/apache/camel/ConsumerTemplate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Converter.java b/camel-api/src/main/java/org/apache/camel/Converter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Converter.java
rename to camel-api/src/main/java/org/apache/camel/Converter.java
diff --git a/camel-core/src/main/java/org/apache/camel/DelegateEndpoint.java b/camel-api/src/main/java/org/apache/camel/DelegateEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/DelegateEndpoint.java
rename to camel-api/src/main/java/org/apache/camel/DelegateEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/DelegateProcessor.java b/camel-api/src/main/java/org/apache/camel/DelegateProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/DelegateProcessor.java
rename to camel-api/src/main/java/org/apache/camel/DelegateProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/DynamicRouter.java b/camel-api/src/main/java/org/apache/camel/DynamicRouter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/DynamicRouter.java
rename to camel-api/src/main/java/org/apache/camel/DynamicRouter.java
diff --git a/camel-core/src/main/java/org/apache/camel/Endpoint.java b/camel-api/src/main/java/org/apache/camel/Endpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Endpoint.java
rename to camel-api/src/main/java/org/apache/camel/Endpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/EndpointAware.java b/camel-api/src/main/java/org/apache/camel/EndpointAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/EndpointAware.java
rename to camel-api/src/main/java/org/apache/camel/EndpointAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/EndpointInject.java b/camel-api/src/main/java/org/apache/camel/EndpointInject.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/EndpointInject.java
rename to camel-api/src/main/java/org/apache/camel/EndpointInject.java
diff --git a/camel-core/src/main/java/org/apache/camel/ErrorHandlerFactory.java b/camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ErrorHandlerFactory.java
rename to camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-api/src/main/java/org/apache/camel/Exchange.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Exchange.java
rename to camel-api/src/main/java/org/apache/camel/Exchange.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeException.java b/camel-api/src/main/java/org/apache/camel/ExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangePattern.java b/camel-api/src/main/java/org/apache/camel/ExchangePattern.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangePattern.java
rename to camel-api/src/main/java/org/apache/camel/ExchangePattern.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeProperties.java b/camel-api/src/main/java/org/apache/camel/ExchangeProperties.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeProperties.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeProperties.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeProperty.java b/camel-api/src/main/java/org/apache/camel/ExchangeProperty.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeProperty.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeProperty.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java b/camel-api/src/main/java/org/apache/camel/ExchangeTimedOutException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeTimedOutException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java b/camel-api/src/main/java/org/apache/camel/ExecutorServiceAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java
rename to camel-api/src/main/java/org/apache/camel/ExecutorServiceAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java b/camel-api/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
rename to camel-api/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/Experimental.java b/camel-api/src/main/java/org/apache/camel/Experimental.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Experimental.java
rename to camel-api/src/main/java/org/apache/camel/Experimental.java
diff --git a/camel-core/src/main/java/org/apache/camel/Expression.java b/camel-api/src/main/java/org/apache/camel/Expression.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Expression.java
rename to camel-api/src/main/java/org/apache/camel/Expression.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java b/camel-api/src/main/java/org/apache/camel/ExpressionEvaluationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java
rename to camel-api/src/main/java/org/apache/camel/ExpressionEvaluationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java b/camel-api/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
rename to camel-api/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExtendedStartupListener.java b/camel-api/src/main/java/org/apache/camel/ExtendedStartupListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExtendedStartupListener.java
rename to camel-api/src/main/java/org/apache/camel/ExtendedStartupListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java b/camel-api/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java b/camel-api/src/main/java/org/apache/camel/FailedToCreateProducerException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToCreateProducerException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java b/camel-api/src/main/java/org/apache/camel/FailedToCreateRouteException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToCreateRouteException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java b/camel-api/src/main/java/org/apache/camel/FailedToStartRouteException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToStartRouteException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FallbackConverter.java b/camel-api/src/main/java/org/apache/camel/FallbackConverter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FallbackConverter.java
rename to camel-api/src/main/java/org/apache/camel/FallbackConverter.java
diff --git a/camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java b/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java
rename to camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Handler.java b/camel-api/src/main/java/org/apache/camel/Handler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Handler.java
rename to camel-api/src/main/java/org/apache/camel/Handler.java
diff --git a/camel-core/src/main/java/org/apache/camel/Header.java b/camel-api/src/main/java/org/apache/camel/Header.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Header.java
rename to camel-api/src/main/java/org/apache/camel/Header.java
diff --git a/camel-core/src/main/java/org/apache/camel/Headers.java b/camel-api/src/main/java/org/apache/camel/Headers.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Headers.java
rename to camel-api/src/main/java/org/apache/camel/Headers.java
diff --git a/camel-core/src/main/java/org/apache/camel/InOnly.java b/camel-api/src/main/java/org/apache/camel/InOnly.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InOnly.java
rename to camel-api/src/main/java/org/apache/camel/InOnly.java
diff --git a/camel-core/src/main/java/org/apache/camel/InOut.java b/camel-api/src/main/java/org/apache/camel/InOut.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InOut.java
rename to camel-api/src/main/java/org/apache/camel/InOut.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java b/camel-api/src/main/java/org/apache/camel/InvalidPayloadException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java
rename to camel-api/src/main/java/org/apache/camel/InvalidPayloadException.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java b/camel-api/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
rename to camel-api/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPropertyException.java b/camel-api/src/main/java/org/apache/camel/InvalidPropertyException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvalidPropertyException.java
rename to camel-api/src/main/java/org/apache/camel/InvalidPropertyException.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java b/camel-api/src/main/java/org/apache/camel/InvokeOnHeader.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java
rename to camel-api/src/main/java/org/apache/camel/InvokeOnHeader.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java b/camel-api/src/main/java/org/apache/camel/InvokeOnHeaders.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java
rename to camel-api/src/main/java/org/apache/camel/InvokeOnHeaders.java
diff --git a/camel-core/src/main/java/org/apache/camel/IsSingleton.java b/camel-api/src/main/java/org/apache/camel/IsSingleton.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/IsSingleton.java
rename to camel-api/src/main/java/org/apache/camel/IsSingleton.java
diff --git a/camel-core/src/main/java/org/apache/camel/LoadPropertiesException.java b/camel-api/src/main/java/org/apache/camel/LoadPropertiesException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/LoadPropertiesException.java
rename to camel-api/src/main/java/org/apache/camel/LoadPropertiesException.java
diff --git a/camel-core/src/main/java/org/apache/camel/LoggingLevel.java b/camel-api/src/main/java/org/apache/camel/LoggingLevel.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/LoggingLevel.java
rename to camel-api/src/main/java/org/apache/camel/LoggingLevel.java
diff --git a/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java b/camel-api/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
rename to camel-api/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
diff --git a/camel-core/src/main/java/org/apache/camel/Message.java b/camel-api/src/main/java/org/apache/camel/Message.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Message.java
rename to camel-api/src/main/java/org/apache/camel/Message.java
diff --git a/camel-core/src/main/java/org/apache/camel/MessageHistory.java b/camel-api/src/main/java/org/apache/camel/MessageHistory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/MessageHistory.java
rename to camel-api/src/main/java/org/apache/camel/MessageHistory.java
diff --git a/camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java b/camel-api/src/main/java/org/apache/camel/MultipleConsumersSupport.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java
rename to camel-api/src/main/java/org/apache/camel/MultipleConsumersSupport.java
diff --git a/camel-core/src/main/java/org/apache/camel/NamedNode.java b/camel-api/src/main/java/org/apache/camel/NamedNode.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NamedNode.java
rename to camel-api/src/main/java/org/apache/camel/NamedNode.java
diff --git a/camel-core/src/main/java/org/apache/camel/Navigate.java b/camel-api/src/main/java/org/apache/camel/Navigate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Navigate.java
rename to camel-api/src/main/java/org/apache/camel/Navigate.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java b/camel-api/src/main/java/org/apache/camel/NoFactoryAvailableException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java
rename to camel-api/src/main/java/org/apache/camel/NoFactoryAvailableException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java b/camel-api/src/main/java/org/apache/camel/NoSuchBeanException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchBeanException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java b/camel-api/src/main/java/org/apache/camel/NoSuchEndpointException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchEndpointException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java b/camel-api/src/main/java/org/apache/camel/NoSuchHeaderException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchHeaderException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java b/camel-api/src/main/java/org/apache/camel/NoSuchLanguageException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchLanguageException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java b/camel-api/src/main/java/org/apache/camel/NoSuchPropertyException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchPropertyException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java b/camel-api/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
rename to camel-api/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NonManagedService.java b/camel-api/src/main/java/org/apache/camel/NonManagedService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NonManagedService.java
rename to camel-api/src/main/java/org/apache/camel/NonManagedService.java
diff --git a/camel-core/src/main/java/org/apache/camel/Ordered.java b/camel-api/src/main/java/org/apache/camel/Ordered.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Ordered.java
rename to camel-api/src/main/java/org/apache/camel/Ordered.java
diff --git a/camel-core/src/main/java/org/apache/camel/OutHeaders.java b/camel-api/src/main/java/org/apache/camel/OutHeaders.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/OutHeaders.java
rename to camel-api/src/main/java/org/apache/camel/OutHeaders.java
diff --git a/camel-core/src/main/java/org/apache/camel/Pattern.java b/camel-api/src/main/java/org/apache/camel/Pattern.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Pattern.java
rename to camel-api/src/main/java/org/apache/camel/Pattern.java
diff --git a/camel-core/src/main/java/org/apache/camel/PollingConsumer.java b/camel-api/src/main/java/org/apache/camel/PollingConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/PollingConsumer.java
rename to camel-api/src/main/java/org/apache/camel/PollingConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java b/camel-api/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
rename to camel-api/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/Predicate.java b/camel-api/src/main/java/org/apache/camel/Predicate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Predicate.java
rename to camel-api/src/main/java/org/apache/camel/Predicate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Processor.java b/camel-api/src/main/java/org/apache/camel/Processor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Processor.java
rename to camel-api/src/main/java/org/apache/camel/Processor.java
diff --git a/camel-core/src/main/java/org/apache/camel/Produce.java b/camel-api/src/main/java/org/apache/camel/Produce.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Produce.java
rename to camel-api/src/main/java/org/apache/camel/Produce.java
diff --git a/camel-core/src/main/java/org/apache/camel/Producer.java b/camel-api/src/main/java/org/apache/camel/Producer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Producer.java
rename to camel-api/src/main/java/org/apache/camel/Producer.java
diff --git a/camel-core/src/main/java/org/apache/camel/ProducerTemplate.java b/camel-api/src/main/java/org/apache/camel/ProducerTemplate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ProducerTemplate.java
rename to camel-api/src/main/java/org/apache/camel/ProducerTemplate.java
diff --git a/camel-core/src/main/java/org/apache/camel/PropertyInject.java b/camel-api/src/main/java/org/apache/camel/PropertyInject.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/PropertyInject.java
rename to camel-api/src/main/java/org/apache/camel/PropertyInject.java
diff --git a/camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java b/camel-api/src/main/java/org/apache/camel/ProxyInstantiationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java
rename to camel-api/src/main/java/org/apache/camel/ProxyInstantiationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RecipientList.java b/camel-api/src/main/java/org/apache/camel/RecipientList.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RecipientList.java
rename to camel-api/src/main/java/org/apache/camel/RecipientList.java
diff --git a/camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java b/camel-api/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
rename to camel-api/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java b/camel-api/src/main/java/org/apache/camel/RollbackExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/RollbackExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/Route.java b/camel-api/src/main/java/org/apache/camel/Route.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Route.java
rename to camel-api/src/main/java/org/apache/camel/Route.java
diff --git a/camel-core/src/main/java/org/apache/camel/RouteAware.java b/camel-api/src/main/java/org/apache/camel/RouteAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RouteAware.java
rename to camel-api/src/main/java/org/apache/camel/RouteAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/RoutesBuilder.java b/camel-api/src/main/java/org/apache/camel/RoutesBuilder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RoutesBuilder.java
rename to camel-api/src/main/java/org/apache/camel/RoutesBuilder.java
diff --git a/camel-core/src/main/java/org/apache/camel/RoutingSlip.java b/camel-api/src/main/java/org/apache/camel/RoutingSlip.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RoutingSlip.java
rename to camel-api/src/main/java/org/apache/camel/RoutingSlip.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java b/camel-api/src/main/java/org/apache/camel/RuntimeCamelException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeCamelException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java b/camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java b/camel-api/src/main/java/org/apache/camel/RuntimeExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java b/camel-api/src/main/java/org/apache/camel/RuntimeExpressionException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeExpressionException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java b/camel-api/src/main/java/org/apache/camel/RuntimeTransformException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeTransformException.java
diff --git a/camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java b/camel-api/src/main/java/org/apache/camel/SSLContextParametersAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java
rename to camel-api/src/main/java/org/apache/camel/SSLContextParametersAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/Service.java b/camel-api/src/main/java/org/apache/camel/Service.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Service.java
rename to camel-api/src/main/java/org/apache/camel/Service.java
diff --git a/camel-core/src/main/java/org/apache/camel/ServiceStatus.java b/camel-api/src/main/java/org/apache/camel/ServiceStatus.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ServiceStatus.java
rename to camel-api/src/main/java/org/apache/camel/ServiceStatus.java
diff --git a/camel-core/src/main/java/org/apache/camel/ShutdownRoute.java b/camel-api/src/main/java/org/apache/camel/ShutdownRoute.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ShutdownRoute.java
rename to camel-api/src/main/java/org/apache/camel/ShutdownRoute.java
diff --git a/camel-core/src/main/java/org/apache/camel/ShutdownRunningTask.java b/camel-api/src/main/java/org/apache/camel/ShutdownRunningTask.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ShutdownRunningTask.java
rename to camel-api/src/main/java/org/apache/camel/ShutdownRunningTask.java
diff --git a/camel-core/src/main/java/org/apache/camel/ShutdownableService.java b/camel-api/src/main/java/org/apache/camel/ShutdownableService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ShutdownableService.java
rename to camel-api/src/main/java/org/apache/camel/ShutdownableService.java
diff --git a/camel-core/src/main/java/org/apache/camel/StartupListener.java b/camel-api/src/main/java/org/apache/camel/StartupListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StartupListener.java
rename to camel-api/src/main/java/org/apache/camel/StartupListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/StatefulService.java b/camel-api/src/main/java/org/apache/camel/StatefulService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StatefulService.java
rename to camel-api/src/main/java/org/apache/camel/StatefulService.java
diff --git a/camel-core/src/main/java/org/apache/camel/StaticService.java b/camel-api/src/main/java/org/apache/camel/StaticService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StaticService.java
rename to camel-api/src/main/java/org/apache/camel/StaticService.java
diff --git a/camel-core/src/main/java/org/apache/camel/StreamCache.java b/camel-api/src/main/java/org/apache/camel/StreamCache.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StreamCache.java
rename to camel-api/src/main/java/org/apache/camel/StreamCache.java
diff --git a/camel-core/src/main/java/org/apache/camel/StringSource.java b/camel-api/src/main/java/org/apache/camel/StringSource.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StringSource.java
rename to camel-api/src/main/java/org/apache/camel/StringSource.java
diff --git a/camel-core/src/main/java/org/apache/camel/Suspendable.java b/camel-api/src/main/java/org/apache/camel/Suspendable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Suspendable.java
rename to camel-api/src/main/java/org/apache/camel/Suspendable.java
diff --git a/camel-core/src/main/java/org/apache/camel/SuspendableService.java b/camel-api/src/main/java/org/apache/camel/SuspendableService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/SuspendableService.java
rename to camel-api/src/main/java/org/apache/camel/SuspendableService.java
diff --git a/camel-core/src/main/java/org/apache/camel/TimeoutMap.java b/camel-api/src/main/java/org/apache/camel/TimeoutMap.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TimeoutMap.java
rename to camel-api/src/main/java/org/apache/camel/TimeoutMap.java
diff --git a/camel-core/src/main/java/org/apache/camel/TimerListener.java b/camel-api/src/main/java/org/apache/camel/TimerListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TimerListener.java
rename to camel-api/src/main/java/org/apache/camel/TimerListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/Traceable.java b/camel-api/src/main/java/org/apache/camel/Traceable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Traceable.java
rename to camel-api/src/main/java/org/apache/camel/Traceable.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConversionException.java b/camel-api/src/main/java/org/apache/camel/TypeConversionException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConversionException.java
rename to camel-api/src/main/java/org/apache/camel/TypeConversionException.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverter.java b/camel-api/src/main/java/org/apache/camel/TypeConverter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverter.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverter.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterExists.java b/camel-api/src/main/java/org/apache/camel/TypeConverterExists.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverterExists.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverterExists.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterExistsException.java b/camel-api/src/main/java/org/apache/camel/TypeConverterExistsException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverterExistsException.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverterExistsException.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java b/camel-api/src/main/java/org/apache/camel/TypeConverterLoaderException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverterLoaderException.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverters.java b/camel-api/src/main/java/org/apache/camel/TypeConverters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverters.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverters.java
diff --git a/camel-core/src/main/java/org/apache/camel/ValidationException.java b/camel-api/src/main/java/org/apache/camel/ValidationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ValidationException.java
rename to camel-api/src/main/java/org/apache/camel/ValidationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ValueHolder.java b/camel-api/src/main/java/org/apache/camel/ValueHolder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ValueHolder.java
rename to camel-api/src/main/java/org/apache/camel/ValueHolder.java
diff --git a/camel-core/src/main/java/org/apache/camel/VetoCamelContextStartException.java b/camel-api/src/main/java/org/apache/camel/VetoCamelContextStartException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/VetoCamelContextStartException.java
rename to camel-api/src/main/java/org/apache/camel/VetoCamelContextStartException.java
diff --git a/camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java b/camel-api/src/main/java/org/apache/camel/WaitForTaskToComplete.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java
rename to camel-api/src/main/java/org/apache/camel/WaitForTaskToComplete.java
diff --git a/camel-core/src/main/java/org/apache/camel/WrappedFile.java b/camel-api/src/main/java/org/apache/camel/WrappedFile.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/WrappedFile.java
rename to camel-api/src/main/java/org/apache/camel/WrappedFile.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterMember.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterMember.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterMember.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterMember.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterService.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterService.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterService.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterView.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterView.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/package.html b/camel-api/src/main/java/org/apache/camel/cluster/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/package.html
rename to camel-api/src/main/java/org/apache/camel/cluster/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java b/camel-api/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java b/camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java b/camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java b/camel-api/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/package.html b/camel-api/src/main/java/org/apache/camel/component/extension/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/package.html
rename to camel-api/src/main/java/org/apache/camel/component/extension/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheck.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheck.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheck.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheck.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckFilter.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckFilter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckFilter.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckFilter.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckHelper.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckHelper.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckRegistry.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckRepository.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckRepository.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckService.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckService.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckService.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/package.html b/camel-api/src/main/java/org/apache/camel/health/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/package.html
rename to camel-api/src/main/java/org/apache/camel/health/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/package-info.java b/camel-api/src/main/java/org/apache/camel/package-info.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/package-info.java
rename to camel-api/src/main/java/org/apache/camel/package-info.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
index 891c3cf..d2dce49 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
+++ b/camel-api/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
@@ -25,8 +25,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import static org.apache.camel.runtimecatalog.URISupport.isEmpty;
-
 /**
  * Details result of validating endpoint uri.
  */
@@ -485,4 +483,8 @@ public class EndpointValidationResult implements Serializable {
 
         return sb.toString();
     }
+
+    private static boolean isEmpty(String value) {
+        return value == null || value.isEmpty() || value.trim().isEmpty();
+    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html b/camel-api/src/main/java/org/apache/camel/runtimecatalog/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/spi/AggregationRepository.java b/camel-api/src/main/java/org/apache/camel/spi/AggregationRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/AggregationRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/AggregationRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java b/camel-api/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java
rename to camel-api/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java b/camel-api/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java
rename to camel-api/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java b/camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java
rename to camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java b/camel-api/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java
rename to camel-api/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java b/camel-api/src/main/java/org/apache/camel/spi/CamelContextTracker.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java
rename to camel-api/src/main/java/org/apache/camel/spi/CamelContextTracker.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/CamelLogger.java b/camel-api/src/main/java/org/apache/camel/spi/CamelLogger.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/support/CamelLogger.java
rename to camel-api/src/main/java/org/apache/camel/spi/CamelLogger.java
index 6994eab..0b9214a 100644
--- a/camel-core/src/main/java/org/apache/camel/support/CamelLogger.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/CamelLogger.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.support;
+package org.apache.camel.spi;
 
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java b/camel-api/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ClassResolver.java b/camel-api/src/main/java/org/apache/camel/spi/ClassResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ClassResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/ClassResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java b/camel-api/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
rename to camel-api/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ComponentResolver.java b/camel-api/src/main/java/org/apache/camel/spi/ComponentResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ComponentResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/ComponentResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Condition.java b/camel-api/src/main/java/org/apache/camel/spi/Condition.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Condition.java
rename to camel-api/src/main/java/org/apache/camel/spi/Condition.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Contract.java b/camel-api/src/main/java/org/apache/camel/spi/Contract.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Contract.java
rename to camel-api/src/main/java/org/apache/camel/spi/Contract.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormat.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormat.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatFactory.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatName.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatName.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatName.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatName.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatResolver.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataType.java b/camel-api/src/main/java/org/apache/camel/spi/DataType.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataType.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataType.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataTypeAware.java b/camel-api/src/main/java/org/apache/camel/spi/DataTypeAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataTypeAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataTypeAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Debugger.java b/camel-api/src/main/java/org/apache/camel/spi/Debugger.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Debugger.java
rename to camel-api/src/main/java/org/apache/camel/spi/Debugger.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EndpointRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/EndpointRegistry.java
similarity index 93%
rename from camel-core/src/main/java/org/apache/camel/spi/EndpointRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/EndpointRegistry.java
index f56d241..14f906c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/EndpointRegistry.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/EndpointRegistry.java
@@ -20,7 +20,6 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.StaticService;
-import org.apache.camel.support.LRUCache;
 
 /**
  * Registry to cache endpoints in memory.
@@ -28,7 +27,7 @@ import org.apache.camel.support.LRUCache;
  * The registry contains two caches:
  * <ul>
  *     <li>static - which keeps all the endpoints in the cache for the entire lifecycle</li>
- *     <li>dynamic - which keeps the endpoints in a {@link LRUCache} and may evict endpoints which hasn't been requested recently</li>
+ *     <li>dynamic - which keeps the endpoints in a {@link org.apache.camel.support.LRUCache} and may evict endpoints which hasn't been requested recently</li>
  * </ul>
  * The static cache stores all the endpoints that are created as part of setting up and starting routes.
  * The static cache has no upper limit.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EndpointStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/EndpointStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EndpointStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/EndpointStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java b/camel-api/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java
rename to camel-api/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java b/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java b/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java
rename to camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExceptionHandler.java b/camel-api/src/main/java/org/apache/camel/spi/ExceptionHandler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExceptionHandler.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExceptionHandler.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExchangeFormatter.java b/camel-api/src/main/java/org/apache/camel/spi/ExchangeFormatter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExchangeFormatter.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExchangeFormatter.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java b/camel-api/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java b/camel-api/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/FactoryFinder.java b/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/FactoryFinder.java
rename to camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java b/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/GroupAware.java b/camel-api/src/main/java/org/apache/camel/spi/GroupAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/GroupAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/GroupAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HasCamelContext.java b/camel-api/src/main/java/org/apache/camel/spi/HasCamelContext.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HasCamelContext.java
rename to camel-api/src/main/java/org/apache/camel/spi/HasCamelContext.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HasGroup.java b/camel-api/src/main/java/org/apache/camel/spi/HasGroup.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HasGroup.java
rename to camel-api/src/main/java/org/apache/camel/spi/HasGroup.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HasId.java b/camel-api/src/main/java/org/apache/camel/spi/HasId.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HasId.java
rename to camel-api/src/main/java/org/apache/camel/spi/HasId.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java b/camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java b/camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/IdAware.java b/camel-api/src/main/java/org/apache/camel/spi/IdAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/IdAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/IdAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/IdempotentRepository.java b/camel-api/src/main/java/org/apache/camel/spi/IdempotentRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/IdempotentRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/IdempotentRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java b/camel-api/src/main/java/org/apache/camel/spi/InflightRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/InflightRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Injector.java b/camel-api/src/main/java/org/apache/camel/spi/Injector.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Injector.java
rename to camel-api/src/main/java/org/apache/camel/spi/Injector.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/InterceptStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/InterceptStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Language.java b/camel-api/src/main/java/org/apache/camel/spi/Language.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Language.java
rename to camel-api/src/main/java/org/apache/camel/spi/Language.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java b/camel-api/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
rename to camel-api/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LanguageResolver.java b/camel-api/src/main/java/org/apache/camel/spi/LanguageResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/LanguageResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/LanguageResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LogListener.java b/camel-api/src/main/java/org/apache/camel/spi/LogListener.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/spi/LogListener.java
rename to camel-api/src/main/java/org/apache/camel/spi/LogListener.java
index 03536e4..7c0bfb2 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/LogListener.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/LogListener.java
@@ -18,7 +18,6 @@ package org.apache.camel.spi;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.support.CamelLogger;
 
 /**
  * An event listener SPI for logging. Listeners are registered into {@link org.apache.camel.processor.LogProcessor} and
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/MaskingFormatter.java b/camel-api/src/main/java/org/apache/camel/spi/MaskingFormatter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/MaskingFormatter.java
rename to camel-api/src/main/java/org/apache/camel/spi/MaskingFormatter.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java b/camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java b/camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/NamespaceAware.java b/camel-api/src/main/java/org/apache/camel/spi/NamespaceAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/NamespaceAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/NamespaceAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/NodeIdFactory.java b/camel-api/src/main/java/org/apache/camel/spi/NodeIdFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/NodeIdFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/NodeIdFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java b/camel-api/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java b/camel-api/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/PackageScanFilter.java b/camel-api/src/main/java/org/apache/camel/spi/PackageScanFilter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/PackageScanFilter.java
rename to camel-api/src/main/java/org/apache/camel/spi/PackageScanFilter.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Policy.java b/camel-api/src/main/java/org/apache/camel/spi/Policy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Policy.java
rename to camel-api/src/main/java/org/apache/camel/spi/Policy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java b/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java b/camel-api/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Registry.java b/camel-api/src/main/java/org/apache/camel/spi/Registry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Registry.java
rename to camel-api/src/main/java/org/apache/camel/spi/Registry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ReloadStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ReloadStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ReloadStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ReloadStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java b/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
index c4cec57..7a7c600 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
@@ -18,8 +18,6 @@ package org.apache.camel.spi;
 
 import java.util.Map;
 
-import org.apache.camel.support.EndpointHelper;
-
 /**
  * Configuration use by {@link org.apache.camel.spi.RestConsumerFactory} and {@link org.apache.camel.spi.RestApiConsumerFactory}
  * for Camel components to support the Camel {@link org.apache.camel.model.rest.RestDefinition rest} DSL.
@@ -270,7 +268,7 @@ public class RestConfiguration {
      * Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern.
      * <p/>
      * The pattern <tt>#name#</tt> refers to the CamelContext name, to match on the current CamelContext only.
-     * For any other value, the pattern uses the rules from {@link EndpointHelper#matchPattern(String, String)}
+     * For any other value, the pattern uses the rules from {@link org.apache.camel.support.EndpointHelper#matchPattern(String, String)}
      *
      * @param apiContextIdPattern  the pattern
      */
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestConsumerFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestConsumerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestConsumerFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestConsumerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestProducerFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestProducerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestProducerFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestProducerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteController.java b/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteController.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteController.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteError.java b/camel-api/src/main/java/org/apache/camel/spi/RouteError.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteError.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteError.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RoutePolicy.java b/camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RoutePolicy.java
rename to camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteStartupOrder.java b/camel-api/src/main/java/org/apache/camel/spi/RouteStartupOrder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteStartupOrder.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteStartupOrder.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java b/camel-api/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
similarity index 88%
rename from camel-core/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
rename to camel-api/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
index db7b5c7..709544c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
@@ -19,13 +19,11 @@ package org.apache.camel.spi;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Consumer;
 import org.apache.camel.ShutdownableService;
-import org.apache.camel.support.DefaultScheduledPollConsumerScheduler;
-import org.apache.camel.support.ScheduledPollConsumer;
 
 /**
- * A pluggable scheduler for {@link ScheduledPollConsumer} consumers.
+ * A pluggable scheduler for {@link org.apache.camel.support.ScheduledPollConsumer} consumers.
  * <p/>
- * The default implementation {@link DefaultScheduledPollConsumerScheduler} is
+ * The default implementation {@link org.apache.camel.support.DefaultScheduledPollConsumerScheduler} is
  * using the {@link java.util.concurrent.ScheduledExecutorService} from the JDK to schedule and run the poll task.
  * <p/>
  * An alternative implementation is in <tt>camel-quartz2</tt> component that allows to use CRON expression
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SendDynamicAware.java b/camel-api/src/main/java/org/apache/camel/spi/SendDynamicAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SendDynamicAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/SendDynamicAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ShutdownAware.java b/camel-api/src/main/java/org/apache/camel/spi/ShutdownAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ShutdownAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/ShutdownAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ShutdownPrepared.java b/camel-api/src/main/java/org/apache/camel/spi/ShutdownPrepared.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ShutdownPrepared.java
rename to camel-api/src/main/java/org/apache/camel/spi/ShutdownPrepared.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/StateRepository.java b/camel-api/src/main/java/org/apache/camel/spi/StateRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/StateRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/StateRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWork.java b/camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWork.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWork.java
rename to camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWork.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java b/camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java
rename to camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Synchronization.java b/camel-api/src/main/java/org/apache/camel/spi/Synchronization.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Synchronization.java
rename to camel-api/src/main/java/org/apache/camel/spi/Synchronization.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java b/camel-api/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java b/camel-api/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java
rename to camel-api/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java b/camel-api/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java b/camel-api/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
rename to camel-api/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TransactedPolicy.java b/camel-api/src/main/java/org/apache/camel/spi/TransactedPolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TransactedPolicy.java
rename to camel-api/src/main/java/org/apache/camel/spi/TransactedPolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Transformer.java b/camel-api/src/main/java/org/apache/camel/spi/Transformer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Transformer.java
rename to camel-api/src/main/java/org/apache/camel/spi/Transformer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/TransformerRegistry.java
similarity index 95%
rename from camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/TransformerRegistry.java
index d65d221..48536a2 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/TransformerRegistry.java
@@ -19,7 +19,6 @@ package org.apache.camel.spi;
 import java.util.Map;
 
 import org.apache.camel.StaticService;
-import org.apache.camel.support.LRUCache;
 
 /**
  * Registry to cache transformers in memory.
@@ -27,7 +26,7 @@ import org.apache.camel.support.LRUCache;
  * The registry contains two caches:
  * <ul>
  *     <li>static - which keeps all the transformers in the cache for the entire lifecycle</li>
- *     <li>dynamic - which keeps the transformers in a {@link LRUCache} and may evict transformers which hasn't been requested recently</li>
+ *     <li>dynamic - which keeps the transformers in a {@link org.apache.camel.support.LRUCache} and may evict transformers which hasn't been requested recently</li>
  * </ul>
  * The static cache stores all the transformers that are created as part of setting up and starting routes.
  * The static cache has no upper limit.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterAware.java b/camel-api/src/main/java/org/apache/camel/spi/TypeConverterAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TypeConverterAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/TypeConverterAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterLoader.java b/camel-api/src/main/java/org/apache/camel/spi/TypeConverterLoader.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TypeConverterLoader.java
rename to camel-api/src/main/java/org/apache/camel/spi/TypeConverterLoader.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java b/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
rename to camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java b/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/UuidGenerator.java b/camel-api/src/main/java/org/apache/camel/spi/UuidGenerator.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/UuidGenerator.java
rename to camel-api/src/main/java/org/apache/camel/spi/UuidGenerator.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Validator.java b/camel-api/src/main/java/org/apache/camel/spi/Validator.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Validator.java
rename to camel-api/src/main/java/org/apache/camel/spi/Validator.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ValidatorRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
similarity index 94%
rename from camel-core/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
index 8153886..acecc0b 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
@@ -19,7 +19,6 @@ package org.apache.camel.spi;
 import java.util.Map;
 
 import org.apache.camel.StaticService;
-import org.apache.camel.support.LRUCache;
 
 /**
  * Registry to cache validators in memory.
@@ -27,7 +26,7 @@ import org.apache.camel.support.LRUCache;
  * The registry contains two caches:
  * <ul>
  *     <li>static - which keeps all the validators in the cache for the entire lifecycle</li>
- *     <li>dynamic - which keeps the validators in a {@link LRUCache} and may evict validators which hasn't been requested recently</li>
+ *     <li>dynamic - which keeps the validators in a {@link org.apache.camel.support.LRUCache} and may evict validators which hasn't been requested recently</li>
  * </ul>
  * The static cache stores all the validators that are created as part of setting up and starting routes.
  * The static cache has no upper limit.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/package.html b/camel-api/src/main/java/org/apache/camel/spi/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/package.html
rename to camel-api/src/main/java/org/apache/camel/spi/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/support/ServiceHelper.java b/camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/ServiceHelper.java
rename to camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java b/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
rename to camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java b/camel-api/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java b/camel-api/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/FilterParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/FilterParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/FilterParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/FilterParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java b/camel-api/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/JsseParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/package.html b/camel-api/src/main/java/org/apache/camel/support/jsse/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/package.html
rename to camel-api/src/main/java/org/apache/camel/support/jsse/package.html
diff --git a/camel-core/pom.xml b/camel-core/pom.xml
index 0d11356..936dd22 100644
--- a/camel-core/pom.xml
+++ b/camel-core/pom.xml
@@ -131,6 +131,22 @@
     </dependency>
 
     <!-- required dependencies by camel-core -->
+    <!-- it will be shade into camel-core by bnd plugin -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-util</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- required dependencies by camel-core -->
+    <!-- it will be shade into camel-core by bnd plugin -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- required dependencies by camel-core -->
     <!-- which we shade into camel-core so its available for everybody out of the box -->
     <dependency>
       <groupId>com.github.ben-manes.caffeine</groupId>
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
index 583d6cb..b64b3dc 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
@@ -25,7 +25,7 @@ import org.apache.camel.processor.DeadLetterChannel;
 import org.apache.camel.processor.FatalFallbackErrorHandler;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
index ea8ea1a..dceef02 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
@@ -30,7 +30,7 @@ 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.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
index 78c81f4..b3b9d28 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultEndpoint;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
index 326c6af..127af96 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
@@ -28,7 +28,7 @@ import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.spi.Language;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultAsyncProducer;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
index 81e341f..d66dde5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.ThroughputLogger;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultConsumer;
 import org.apache.camel.util.URISupport;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
index ecdae8f..95ac1b3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
@@ -31,7 +31,7 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
index 7b10782..ab2f552 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
@@ -23,7 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
index 5ad7fec..a541c47 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
@@ -29,7 +29,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.spi.IdempotentRepository;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
index 6df72ee..50fa191 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
@@ -27,7 +27,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.spi.IdempotentRepository;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
index 2619505..59e5785 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
@@ -29,7 +29,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.spi.IdempotentRepository;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
index 64ac1b0..fbc5dd9 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
@@ -28,7 +28,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
index 2bba3ff..ff43d5f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
@@ -25,7 +25,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperationFailedException;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 1dc443a..ad25661 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -24,7 +24,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.processor.DefaultExchangeFormatter;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultComponent;
 import org.slf4j.Logger;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
index 728b9b4..1a3c823 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
@@ -31,7 +31,7 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ProcessorEndpoint;
 import org.apache.camel.support.ServiceHelper;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
index 99d294a..aa146e1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.ThroughputLogger;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultComponent;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
index 280e83e..649692d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
@@ -26,7 +26,7 @@ import org.apache.camel.component.extension.verifier.CatalogVerifierCustomizer;
 import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
-import org.apache.camel.runtimecatalog.JSonSchemaHelper;
+import org.apache.camel.runtimecatalog.impl.JSonSchemaHelper;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
index 8d3bfd4..078e14c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
@@ -39,7 +39,7 @@ import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.HostUtils;
 import org.apache.camel.util.ObjectHelper;
 
-import static org.apache.camel.spi.RestProducerFactoryHelper.setupComponent;
+import static org.apache.camel.support.RestProducerFactoryHelper.setupComponent;
 
 /**
  * The rest component is used for either hosting REST services (consumer) or calling external REST services (producer).
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 3662b62..5b8774e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -120,7 +120,7 @@ import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.Debug;
 import org.apache.camel.processor.interceptor.HandleFault;
-import org.apache.camel.runtimecatalog.DefaultRuntimeCamelCatalog;
+import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelContextNameStrategy;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
index e1c2a4b..4947c47 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
@@ -29,7 +29,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Route;
 import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.support.ServiceHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index b26d898..27d90dc 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -49,7 +49,7 @@ import org.apache.camel.spi.PackageScanClassResolver;
 import org.apache.camel.spi.TypeConverterAware;
 import org.apache.camel.spi.TypeConverterLoader;
 import org.apache.camel.spi.TypeConverterRegistry;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.ServiceSupport;
diff --git a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
index 24ffd94..e6b28d5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.MaskingFormatter;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
index 7422391..d2e1549 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
@@ -28,7 +28,7 @@ import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.MaskingFormatter;
 import org.apache.camel.support.AsyncProcessorHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java b/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
index 2aa15aa..1068c38 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 
 /**
  * Implements a <a
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
index 2471094..3140183 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 
 /**
  * Default error handler
diff --git a/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
index aec68d1..fc0fa99 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.MaskingFormatter;
 import org.apache.camel.support.AsyncProcessorHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
index 766d2b2..963fa5a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
@@ -44,7 +44,7 @@ import org.apache.camel.spi.SubUnitOfWorkCallback;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.EventHelper;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.MessageHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java b/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
index dc7beba..37dd7ee 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
@@ -27,7 +27,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.support.AsyncProcessorHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index 92cc156..0e72013 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -45,7 +45,7 @@ import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.spi.Condition;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
deleted file mode 100644
index 5ce0e34..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
+++ /dev/null
@@ -1,1284 +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.runtimecatalog;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static org.apache.camel.runtimecatalog.CatalogHelper.after;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getNames;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyDefaultValue;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyEnum;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyKind;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyNameFromNameWithPrefix;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyPrefix;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getRow;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isComponentConsumerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isComponentLenientProperties;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isComponentProducerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyBoolean;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyConsumerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyDeprecated;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyInteger;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyMultiValue;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyNumber;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyObject;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyProducerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyRequired;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.stripOptionalPrefixFromName;
-import static org.apache.camel.runtimecatalog.URISupport.createQueryString;
-import static org.apache.camel.runtimecatalog.URISupport.isEmpty;
-import static org.apache.camel.runtimecatalog.URISupport.normalizeUri;
-import static org.apache.camel.runtimecatalog.URISupport.stripQuery;
-
-/**
- * Base class for both the runtime RuntimeCamelCatalog from camel-core and the complete CamelCatalog from camel-catalog.
- */
-public abstract class AbstractCamelCatalog {
-
-    // CHECKSTYLE:OFF
-
-    private static final Pattern SYNTAX_PATTERN = Pattern.compile("([\\w.]+)");
-    private static final Pattern COMPONENT_SYNTAX_PARSER = Pattern.compile("([^\\w-]*)([\\w-]+)");
-
-    private SuggestionStrategy suggestionStrategy;
-    private JSonSchemaResolver jsonSchemaResolver;
-
-    public SuggestionStrategy getSuggestionStrategy() {
-        return suggestionStrategy;
-    }
-
-    public void setSuggestionStrategy(SuggestionStrategy suggestionStrategy) {
-        this.suggestionStrategy = suggestionStrategy;
-    }
-
-    public JSonSchemaResolver getJSonSchemaResolver() {
-        return jsonSchemaResolver;
-    }
-
-    public void setJSonSchemaResolver(JSonSchemaResolver resolver) {
-        this.jsonSchemaResolver = resolver;
-    }
-
-    public boolean validateTimePattern(String pattern) {
-        return validateInteger(pattern);
-    }
-
-    public EndpointValidationResult validateEndpointProperties(String uri) {
-        return validateEndpointProperties(uri, false, false, false);
-    }
-
-    public EndpointValidationResult validateEndpointProperties(String uri, boolean ignoreLenientProperties) {
-        return validateEndpointProperties(uri, ignoreLenientProperties, false, false);
-    }
-
-    public EndpointValidationResult validateProperties(String scheme, Map<String, String> properties) {
-        EndpointValidationResult result = new EndpointValidationResult(scheme);
-
-        String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
-        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-        List<Map<String, String>> componentProps = JSonSchemaHelper.parseJsonSchema("componentProperties", json, true);
-
-        // endpoint options have higher priority so remove those from component
-        // that may clash
-        componentProps.stream()
-            .filter(c -> rows.stream().noneMatch(e -> Objects.equals(e.get("name"), c.get("name"))))
-            .forEach(rows::add);
-
-        boolean lenient = Boolean.getBoolean(properties.getOrDefault("lenient", "false"));
-
-        // the dataformat component refers to a data format so lets add the properties for the selected
-        // data format to the list of rows
-        if ("dataformat".equals(scheme)) {
-            String dfName = properties.get("name");
-            if (dfName != null) {
-                String dfJson = jsonSchemaResolver.getDataFormatJSonSchema(dfName);
-                List<Map<String, String>> dfRows = JSonSchemaHelper.parseJsonSchema("properties", dfJson, true);
-                if (dfRows != null && !dfRows.isEmpty()) {
-                    rows.addAll(dfRows);
-                }
-            }
-        }
-
-        for (Map.Entry<String, String> property : properties.entrySet()) {
-            String value = property.getValue();
-            String originalName = property.getKey();
-            String name = property.getKey();
-            // the name may be using an optional prefix, so lets strip that because the options
-            // in the schema are listed without the prefix
-            name = stripOptionalPrefixFromName(rows, name);
-            // the name may be using a prefix, so lets see if we can find the real property name
-            String propertyName = getPropertyNameFromNameWithPrefix(rows, name);
-            if (propertyName != null) {
-                name = propertyName;
-            }
-
-            String prefix = getPropertyPrefix(rows, name);
-            String kind = getPropertyKind(rows, name);
-            boolean namePlaceholder = name.startsWith("{{") && name.endsWith("}}");
-            boolean valuePlaceholder = value.startsWith("{{") || value.startsWith("${") || value.startsWith("$simple{");
-            boolean lookup = value.startsWith("#") && value.length() > 1;
-            // we cannot evaluate multi values as strict as the others, as we don't know their expected types
-            boolean multiValue = prefix != null && originalName.startsWith(prefix) && isPropertyMultiValue(rows, name);
-
-            Map<String, String> row = getRow(rows, name);
-            if (row == null) {
-                // unknown option
-
-                // only add as error if the component is not lenient properties, or not stub component
-                // and the name is not a property placeholder for one or more values
-                if (!namePlaceholder && !"stub".equals(scheme)) {
-                    if (lenient) {
-                        // as if we are lenient then the option is a dynamic extra option which we cannot validate
-                        result.addLenient(name);
-                    } else {
-                        // its unknown
-                        result.addUnknown(name);
-                        if (suggestionStrategy != null) {
-                            String[] suggestions = suggestionStrategy.suggestEndpointOptions(getNames(rows), name);
-                            if (suggestions != null) {
-                                result.addUnknownSuggestions(name, suggestions);
-                            }
-                        }
-                    }
-                }
-            } else {
-                /* TODO: we may need to add something in the properties to know if they are related to a producer or consumer
-                if ("parameter".equals(kind)) {
-                    // consumer only or producer only mode for parameters
-                    if (consumerOnly) {
-                        boolean producer = isPropertyProducerOnly(rows, name);
-                        if (producer) {
-                            // the option is only for producer so you cannot use it in consumer mode
-                            result.addNotConsumerOnly(name);
-                        }
-                    } else if (producerOnly) {
-                        boolean consumer = isPropertyConsumerOnly(rows, name);
-                        if (consumer) {
-                            // the option is only for consumer so you cannot use it in producer mode
-                            result.addNotProducerOnly(name);
-                        }
-                    }
-                }
-                */
-
-                // default value
-                String defaultValue = getPropertyDefaultValue(rows, name);
-                if (defaultValue != null) {
-                    result.addDefaultValue(name, defaultValue);
-                }
-
-                // is required but the value is empty
-                boolean required = isPropertyRequired(rows, name);
-                if (required && isEmpty(value)) {
-                    result.addRequired(name);
-                }
-
-                // is the option deprecated
-                boolean deprecated = isPropertyDeprecated(rows, name);
-                if (deprecated) {
-                    result.addDeprecated(name);
-                }
-
-                // is enum but the value is not within the enum range
-                // but we can only check if the value is not a placeholder
-                String enums = getPropertyEnum(rows, name);
-                if (!multiValue && !valuePlaceholder && !lookup && enums != null) {
-                    String[] choices = enums.split(",");
-                    boolean found = false;
-                    for (String s : choices) {
-                        if (value.equalsIgnoreCase(s)) {
-                            found = true;
-                            break;
-                        }
-                    }
-                    if (!found) {
-                        result.addInvalidEnum(name, value);
-                        result.addInvalidEnumChoices(name, choices);
-                        if (suggestionStrategy != null) {
-                            Set<String> names = new LinkedHashSet<>();
-                            names.addAll(Arrays.asList(choices));
-                            String[] suggestions = suggestionStrategy.suggestEndpointOptions(names, value);
-                            if (suggestions != null) {
-                                result.addInvalidEnumSuggestions(name, suggestions);
-                            }
-                        }
-
-                    }
-                }
-
-                // is reference lookup of bean (not applicable for @UriPath, enums, or multi-valued)
-                if (!multiValue && enums == null && !"path".equals(kind) && isPropertyObject(rows, name)) {
-                    // must start with # and be at least 2 characters
-                    if (!value.startsWith("#") || value.length() <= 1) {
-                        result.addInvalidReference(name, value);
-                    }
-                }
-
-                // is boolean
-                if (!multiValue && !valuePlaceholder && !lookup && isPropertyBoolean(rows, name)) {
-                    // value must be a boolean
-                    boolean bool = "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
-                    if (!bool) {
-                        result.addInvalidBoolean(name, value);
-                    }
-                }
-
-                // is integer
-                if (!multiValue && !valuePlaceholder && !lookup && isPropertyInteger(rows, name)) {
-                    // value must be an integer
-                    boolean valid = validateInteger(value);
-                    if (!valid) {
-                        result.addInvalidInteger(name, value);
-                    }
-                }
-
-                // is number
-                if (!multiValue && !valuePlaceholder && !lookup && isPropertyNumber(rows, name)) {
-                    // value must be an number
-                    boolean valid = false;
-                    try {
-                        valid = !Double.valueOf(value).isNaN() || !Float.valueOf(value).isNaN();
-                    } catch (Exception e) {
-                        // ignore
-                    }
-                    if (!valid) {
-                        result.addInvalidNumber(name, value);
-                    }
-                }
-            }
-        }
-
-        // now check if all required values are there, and that a default value does not exists
-        for (Map<String, String> row : rows) {
-            String name = row.get("name");
-            boolean required = isPropertyRequired(rows, name);
-            if (required) {
-                String value = properties.get(name);
-                if (isEmpty(value)) {
-                    value = getPropertyDefaultValue(rows, name);
-                }
-                if (isEmpty(value)) {
-                    result.addRequired(name);
-                }
-            }
-        }
-
-        return result;
-    }
-
-    public EndpointValidationResult validateEndpointProperties(String uri, boolean ignoreLenientProperties, boolean consumerOnly, boolean producerOnly) {
-        EndpointValidationResult result = new EndpointValidationResult(uri);
-
-        Map<String, String> properties;
-        List<Map<String, String>> rows;
-        boolean lenientProperties;
-        String scheme;
-
-        try {
-            String json = null;
-
-            // parse the uri
-            URI u = normalizeUri(uri);
-            scheme = u.getScheme();
-
-            if (scheme != null) {
-                json = jsonSchemaResolver.getComponentJSonSchema(scheme);
-            }
-            if (json == null) {
-                // if the uri starts with a placeholder then we are also incapable of parsing it as we wasn't able to resolve the component name
-                if (uri.startsWith("{{")) {
-                    result.addIncapable(uri);
-                } else if (scheme != null) {
-                    result.addUnknownComponent(scheme);
-                } else {
-                    result.addUnknownComponent(uri);
-                }
-                return result;
-            }
-
-            rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
-
-            // is the component capable of both consumer and producer?
-            boolean canConsumeAndProduce = false;
-            if (!isComponentConsumerOnly(rows) && !isComponentProducerOnly(rows)) {
-                canConsumeAndProduce = true;
-            }
-
-            if (canConsumeAndProduce && consumerOnly) {
-                // lenient properties is not support in consumer only mode if the component can do both of them
-                lenientProperties = false;
-            } else {
-                // only enable lenient properties if we should not ignore
-                lenientProperties = !ignoreLenientProperties && isComponentLenientProperties(rows);
-            }
-            rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-            properties = endpointProperties(uri);
-        } catch (URISyntaxException e) {
-            if (uri.startsWith("{{")) {
-                // if the uri starts with a placeholder then we are also incapable of parsing it as we wasn't able to resolve the component name
-                result.addIncapable(uri);
-            } else {
-                result.addSyntaxError(e.getMessage());
-            }
-
-            return result;
-        }
-
-        // the dataformat component refers to a data format so lets add the properties for the selected
-        // data format to the list of rows
-        if ("dataformat".equals(scheme)) {
-            String dfName = properties.get("name");
-            if (dfName != null) {
-                String dfJson = jsonSchemaResolver.getDataFormatJSonSchema(dfName);
-                List<Map<String, String>> dfRows = JSonSchemaHelper.parseJsonSchema("properties", dfJson, true);
-                if (dfRows != null && !dfRows.isEmpty()) {
-                    rows.addAll(dfRows);
-                }
-            }
-        }
-
-        for (Map.Entry<String, String> property : properties.entrySet()) {
-            String value = property.getValue();
-            String originalName = property.getKey();
-            String name = property.getKey();
-            // the name may be using an optional prefix, so lets strip that because the options
-            // in the schema are listed without the prefix
-            name = stripOptionalPrefixFromName(rows, name);
-            // the name may be using a prefix, so lets see if we can find the real property name
-            String propertyName = getPropertyNameFromNameWithPrefix(rows, name);
-            if (propertyName != null) {
-                name = propertyName;
-            }
-
-            String prefix = getPropertyPrefix(rows, name);
-            String kind = getPropertyKind(rows, name);
-            boolean namePlaceholder = name.startsWith("{{") && name.endsWith("}}");
-            boolean valuePlaceholder = value.startsWith("{{") || value.startsWith("${") || value.startsWith("$simple{");
-            boolean lookup = value.startsWith("#") && value.length() > 1;
-            // we cannot evaluate multi values as strict as the others, as we don't know their expected types
-            boolean mulitValue = prefix != null && originalName.startsWith(prefix) && isPropertyMultiValue(rows, name);
-
-            Map<String, String> row = getRow(rows, name);
-            if (row == null) {
-                // unknown option
-
-                // only add as error if the component is not lenient properties, or not stub component
-                // and the name is not a property placeholder for one or more values
-                if (!namePlaceholder && !"stub".equals(scheme)) {
-                    if (lenientProperties) {
-                        // as if we are lenient then the option is a dynamic extra option which we cannot validate
-                        result.addLenient(name);
-                    } else {
-                        // its unknown
-                        result.addUnknown(name);
-                        if (suggestionStrategy != null) {
-                            String[] suggestions = suggestionStrategy.suggestEndpointOptions(getNames(rows), name);
-                            if (suggestions != null) {
-                                result.addUnknownSuggestions(name, suggestions);
-                            }
-                        }
-                    }
-                }
-            } else {
-                if ("parameter".equals(kind)) {
-                    // consumer only or producer only mode for parameters
-                    if (consumerOnly) {
-                        boolean producer = isPropertyProducerOnly(rows, name);
-                        if (producer) {
-                            // the option is only for producer so you cannot use it in consumer mode
-                            result.addNotConsumerOnly(name);
-                        }
-                    } else if (producerOnly) {
-                        boolean consumer = isPropertyConsumerOnly(rows, name);
-                        if (consumer) {
-                            // the option is only for consumer so you cannot use it in producer mode
-                            result.addNotProducerOnly(name);
-                        }
-                    }
-                }
-
-                // default value
-                String defaultValue = getPropertyDefaultValue(rows, name);
-                if (defaultValue != null) {
-                    result.addDefaultValue(name, defaultValue);
-                }
-
-                // is required but the value is empty
-                boolean required = isPropertyRequired(rows, name);
-                if (required && isEmpty(value)) {
-                    result.addRequired(name);
-                }
-
-                // is the option deprecated
-                boolean deprecated = isPropertyDeprecated(rows, name);
-                if (deprecated) {
-                    result.addDeprecated(name);
-                }
-
-                // is enum but the value is not within the enum range
-                // but we can only check if the value is not a placeholder
-                String enums = getPropertyEnum(rows, name);
-                if (!mulitValue && !valuePlaceholder && !lookup && enums != null) {
-                    String[] choices = enums.split(",");
-                    boolean found = false;
-                    for (String s : choices) {
-                        if (value.equalsIgnoreCase(s)) {
-                            found = true;
-                            break;
-                        }
-                    }
-                    if (!found) {
-                        result.addInvalidEnum(name, value);
-                        result.addInvalidEnumChoices(name, choices);
-                        if (suggestionStrategy != null) {
-                            Set<String> names = new LinkedHashSet<>();
-                            names.addAll(Arrays.asList(choices));
-                            String[] suggestions = suggestionStrategy.suggestEndpointOptions(names, value);
-                            if (suggestions != null) {
-                                result.addInvalidEnumSuggestions(name, suggestions);
-                            }
-                        }
-
-                    }
-                }
-
-                // is reference lookup of bean (not applicable for @UriPath, enums, or multi-valued)
-                if (!mulitValue && enums == null && !"path".equals(kind) && isPropertyObject(rows, name)) {
-                    // must start with # and be at least 2 characters
-                    if (!value.startsWith("#") || value.length() <= 1) {
-                        result.addInvalidReference(name, value);
-                    }
-                }
-
-                // is boolean
-                if (!mulitValue && !valuePlaceholder && !lookup && isPropertyBoolean(rows, name)) {
-                    // value must be a boolean
-                    boolean bool = "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
-                    if (!bool) {
-                        result.addInvalidBoolean(name, value);
-                    }
-                }
-
-                // is integer
-                if (!mulitValue && !valuePlaceholder && !lookup && isPropertyInteger(rows, name)) {
-                    // value must be an integer
-                    boolean valid = validateInteger(value);
-                    if (!valid) {
-                        result.addInvalidInteger(name, value);
-                    }
-                }
-
-                // is number
-                if (!mulitValue && !valuePlaceholder && !lookup && isPropertyNumber(rows, name)) {
-                    // value must be an number
-                    boolean valid = false;
-                    try {
-                        valid = !Double.valueOf(value).isNaN() || !Float.valueOf(value).isNaN();
-                    } catch (Exception e) {
-                        // ignore
-                    }
-                    if (!valid) {
-                        result.addInvalidNumber(name, value);
-                    }
-                }
-            }
-        }
-
-        // now check if all required values are there, and that a default value does not exists
-        for (Map<String, String> row : rows) {
-            String name = row.get("name");
-            boolean required = isPropertyRequired(rows, name);
-            if (required) {
-                String value = properties.get(name);
-                if (isEmpty(value)) {
-                    value = getPropertyDefaultValue(rows, name);
-                }
-                if (isEmpty(value)) {
-                    result.addRequired(name);
-                }
-            }
-        }
-
-        return result;
-    }
-
-    public Map<String, String> endpointProperties(String uri) throws URISyntaxException {
-        // need to normalize uri first
-        URI u = normalizeUri(uri);
-        String scheme = u.getScheme();
-
-        String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
-        if (json == null) {
-            throw new IllegalArgumentException("Cannot find endpoint with scheme " + scheme);
-        }
-
-        // grab the syntax
-        String syntax = null;
-        String alternativeSyntax = null;
-        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
-        for (Map<String, String> row : rows) {
-            if (row.containsKey("syntax")) {
-                syntax = row.get("syntax");
-            }
-            if (row.containsKey("alternativeSyntax")) {
-                alternativeSyntax = row.get("alternativeSyntax");
-            }
-        }
-        if (syntax == null) {
-            throw new IllegalArgumentException("Endpoint with scheme " + scheme + " has no syntax defined in the json schema");
-        }
-
-        // only if we support alternative syntax, and the uri contains the username and password in the authority
-        // part of the uri, then we would need some special logic to capture that information and strip those
-        // details from the uri, so we can continue parsing the uri using the normal syntax
-        Map<String, String> userInfoOptions = new LinkedHashMap<>();
-        if (alternativeSyntax != null && alternativeSyntax.contains("@")) {
-            // clip the scheme from the syntax
-            alternativeSyntax = after(alternativeSyntax, ":");
-            // trim so only userinfo
-            int idx = alternativeSyntax.indexOf("@");
-            String fields = alternativeSyntax.substring(0, idx);
-            String[] names = fields.split(":");
-
-            // grab authority part and grab username and/or password
-            String authority = u.getAuthority();
-            if (authority != null && authority.contains("@")) {
-                String username = null;
-                String password = null;
-
-                // grab unserinfo part before @
-                String userInfo = authority.substring(0, authority.indexOf("@"));
-                String[] parts = userInfo.split(":");
-                if (parts.length == 2) {
-                    username = parts[0];
-                    password = parts[1];
-                } else {
-                    // only username
-                    username = userInfo;
-                }
-
-                // remember the username and/or password which we add later to the options
-                if (names.length == 2) {
-                    userInfoOptions.put(names[0], username);
-                    if (password != null) {
-                        // password is optional
-                        userInfoOptions.put(names[1], password);
-                    }
-                }
-            }
-        }
-
-        // clip the scheme from the syntax
-        syntax = after(syntax, ":");
-        // clip the scheme from the uri
-        uri = after(uri, ":");
-        String uriPath = stripQuery(uri);
-
-        // strip user info from uri path
-        if (!userInfoOptions.isEmpty()) {
-            int idx = uriPath.indexOf('@');
-            if (idx > -1) {
-                uriPath = uriPath.substring(idx + 1);
-            }
-        }
-
-        // strip double slash in the start
-        if (uriPath != null && uriPath.startsWith("//")) {
-            uriPath = uriPath.substring(2);
-        }
-
-        // parse the syntax and find the names of each option
-        Matcher matcher = SYNTAX_PATTERN.matcher(syntax);
-        List<String> word = new ArrayList<>();
-        while (matcher.find()) {
-            String s = matcher.group(1);
-            if (!scheme.equals(s)) {
-                word.add(s);
-            }
-        }
-        // parse the syntax and find each token between each option
-        String[] tokens = SYNTAX_PATTERN.split(syntax);
-
-        // find the position where each option start/end
-        List<String> word2 = new ArrayList<>();
-        int prev = 0;
-        int prevPath = 0;
-
-        // special for activemq/jms where the enum for destinationType causes a token issue as it includes a colon
-        // for 'temp:queue' and 'temp:topic' values
-        if ("activemq".equals(scheme) || "jms".equals(scheme)) {
-            if (uriPath.startsWith("temp:")) {
-                prevPath = 5;
-            }
-        }
-
-        for (String token : tokens) {
-            if (token.isEmpty()) {
-                continue;
-            }
-
-            // special for some tokens where :// can be used also, eg http://foo
-            int idx = -1;
-            int len = 0;
-            if (":".equals(token)) {
-                idx = uriPath.indexOf("://", prevPath);
-                len = 3;
-            }
-            if (idx == -1) {
-                idx = uriPath.indexOf(token, prevPath);
-                len = token.length();
-            }
-
-            if (idx > 0) {
-                String option = uriPath.substring(prev, idx);
-                word2.add(option);
-                prev = idx + len;
-                prevPath = prev;
-            }
-        }
-        // special for last or if we did not add anyone
-        if (prev > 0 || word2.isEmpty()) {
-            String option = uriPath.substring(prev);
-            word2.add(option);
-        }
-
-        rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
-        boolean defaultValueAdded = false;
-
-        // now parse the uri to know which part isw what
-        Map<String, String> options = new LinkedHashMap<>();
-
-        // include the username and password from the userinfo section
-        if (!userInfoOptions.isEmpty()) {
-            options.putAll(userInfoOptions);
-        }
-
-        // word contains the syntax path elements
-        Iterator<String> it = word2.iterator();
-        for (int i = 0; i < word.size(); i++) {
-            String key = word.get(i);
-
-            boolean allOptions = word.size() == word2.size();
-            boolean required = isPropertyRequired(rows, key);
-            String defaultValue = getPropertyDefaultValue(rows, key);
-
-            // we have all options so no problem
-            if (allOptions) {
-                String value = it.next();
-                options.put(key, value);
-            } else {
-                // we have a little problem as we do not not have all options
-                if (!required) {
-                    String value = null;
-
-                    boolean last = i == word.size() - 1;
-                    if (last) {
-                        // if its the last value then use it instead of the default value
-                        value = it.hasNext() ? it.next() : null;
-                        if (value != null) {
-                            options.put(key, value);
-                        } else {
-                            value = defaultValue;
-                        }
-                    }
-                    if (value != null) {
-                        options.put(key, value);
-                        defaultValueAdded = true;
-                    }
-                } else {
-                    String value = it.hasNext() ? it.next() : null;
-                    if (value != null) {
-                        options.put(key, value);
-                    }
-                }
-            }
-        }
-
-        Map<String, String> answer = new LinkedHashMap<>();
-
-        // remove all options which are using default values and are not required
-        for (Map.Entry<String, String> entry : options.entrySet()) {
-            String key = entry.getKey();
-            String value = entry.getValue();
-
-            if (defaultValueAdded) {
-                boolean required = isPropertyRequired(rows, key);
-                String defaultValue = getPropertyDefaultValue(rows, key);
-
-                if (!required && defaultValue != null) {
-                    if (defaultValue.equals(value)) {
-                        continue;
-                    }
-                }
-            }
-
-            // we should keep this in the answer
-            answer.put(key, value);
-        }
-
-        // now parse the uri parameters
-        Map<String, Object> parameters = URISupport.parseParameters(u);
-
-        // and covert the values to String so its JMX friendly
-        while (!parameters.isEmpty()) {
-            Map.Entry<String, Object> entry = parameters.entrySet().iterator().next();
-            String key = entry.getKey();
-            String value = entry.getValue() != null ? entry.getValue().toString() : "";
-
-            boolean multiValued = isPropertyMultiValue(rows, key);
-            if (multiValued) {
-                String prefix = getPropertyPrefix(rows, key);
-                // extra all the multi valued options
-                Map<String, Object> values = URISupport.extractProperties(parameters, prefix);
-                // build a string with the extra multi valued options with the prefix and & as separator
-                CollectionStringBuffer csb = new CollectionStringBuffer("&");
-                for (Map.Entry<String, Object> multi : values.entrySet()) {
-                    String line = prefix + multi.getKey() + "=" + (multi.getValue() != null ? multi.getValue().toString() : "");
-                    csb.append(line);
-                }
-                // append the extra multi-values to the existing (which contains the first multi value)
-                if (!csb.isEmpty()) {
-                    value = value + "&" + csb.toString();
-                }
-            }
-
-            answer.put(key, value);
-            // remove the parameter as we run in a while loop until no more parameters
-            parameters.remove(key);
-        }
-
-        return answer;
-    }
-
-    public Map<String, String> endpointLenientProperties(String uri) throws URISyntaxException {
-        // need to normalize uri first
-
-        // parse the uri
-        URI u = normalizeUri(uri);
-        String scheme = u.getScheme();
-
-        String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
-        if (json == null) {
-            throw new IllegalArgumentException("Cannot find endpoint with scheme " + scheme);
-        }
-
-        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
-        // now parse the uri parameters
-        Map<String, Object> parameters = URISupport.parseParameters(u);
-
-        // all the known options
-        Set<String> names = getNames(rows);
-
-        Map<String, String> answer = new LinkedHashMap<>();
-
-        // and covert the values to String so its JMX friendly
-        parameters.forEach((k, v) -> {
-            String key = k;
-            String value = v != null ? v.toString() : "";
-
-            // is the key a prefix property
-            int dot = key.indexOf('.');
-            if (dot != -1) {
-                String prefix = key.substring(0, dot + 1); // include dot in prefix
-                String option = getPropertyNameFromNameWithPrefix(rows, prefix);
-                if (option == null || !isPropertyMultiValue(rows, option)) {
-                    answer.put(key, value);
-                }
-            } else if (!names.contains(key)) {
-                answer.put(key, value);
-            }
-        });
-
-        return answer;
-    }
-
-    public String endpointComponentName(String uri) {
-        if (uri != null) {
-            int idx = uri.indexOf(":");
-            if (idx > 0) {
-                return uri.substring(0, idx);
-            }
-        }
-        return null;
-    }
-
-    public String asEndpointUri(String scheme, String json, boolean encode) throws URISyntaxException {
-        return doAsEndpointUri(scheme, json, "&", encode);
-    }
-
-    public String asEndpointUriXml(String scheme, String json, boolean encode) throws URISyntaxException {
-        return doAsEndpointUri(scheme, json, "&amp;", encode);
-    }
-
-    private String doAsEndpointUri(String scheme, String json, String ampersand, boolean encode) throws URISyntaxException {
-        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
-        Map<String, String> copy = new HashMap<>();
-        for (Map<String, String> row : rows) {
-            String name = row.get("name");
-            String required = row.get("required");
-            String value = row.get("value");
-            String defaultValue = row.get("defaultValue");
-
-            // only add if either required, or the value is != default value
-            String valueToAdd = null;
-            if ("true".equals(required)) {
-                valueToAdd = value != null ? value : defaultValue;
-                if (valueToAdd == null) {
-                    valueToAdd = "";
-                }
-            } else {
-                // if we have a value and no default then add it
-                if (value != null && defaultValue == null) {
-                    valueToAdd = value;
-                }
-                // otherwise only add if the value is != default value
-                if (value != null && defaultValue != null && !value.equals(defaultValue)) {
-                    valueToAdd = value;
-                }
-            }
-
-            if (valueToAdd != null) {
-                copy.put(name, valueToAdd);
-            }
-        }
-
-        return doAsEndpointUri(scheme, copy, ampersand, encode);
-    }
-
-    public String asEndpointUri(String scheme, Map<String, String> properties, boolean encode) throws URISyntaxException {
-        return doAsEndpointUri(scheme, properties, "&", encode);
-    }
-
-    public String asEndpointUriXml(String scheme, Map<String, String> properties, boolean encode) throws URISyntaxException {
-        return doAsEndpointUri(scheme, properties, "&amp;", encode);
-    }
-
-    String doAsEndpointUri(String scheme, Map<String, String> properties, String ampersand, boolean encode) throws URISyntaxException {
-        String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
-        if (json == null) {
-            throw new IllegalArgumentException("Cannot find endpoint with scheme " + scheme);
-        }
-
-        // grab the syntax
-        String originalSyntax = null;
-        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
-        for (Map<String, String> row : rows) {
-            if (row.containsKey("syntax")) {
-                originalSyntax = row.get("syntax");
-                break;
-            }
-        }
-        if (originalSyntax == null) {
-            throw new IllegalArgumentException("Endpoint with scheme " + scheme + " has no syntax defined in the json schema");
-        }
-
-        // do any properties filtering which can be needed for some special components
-        properties = filterProperties(scheme, properties);
-
-        rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
-        // clip the scheme from the syntax
-        String syntax = "";
-        if (originalSyntax.contains(":")) {
-            originalSyntax = after(originalSyntax, ":");
-        }
-
-        // build at first according to syntax (use a tree map as we want the uri options sorted)
-        Map<String, String> copy = new TreeMap<>(properties);
-        Matcher syntaxMatcher = COMPONENT_SYNTAX_PARSER.matcher(originalSyntax);
-        while (syntaxMatcher.find()) {
-            syntax += syntaxMatcher.group(1);
-            String propertyName = syntaxMatcher.group(2);
-            String propertyValue = copy.remove(propertyName);
-            syntax += propertyValue != null ? propertyValue : propertyName;
-        }
-
-        // do we have all the options the original syntax needs (easy way)
-        String[] keys = syntaxKeys(originalSyntax);
-        boolean hasAllKeys = properties.keySet().containsAll(Arrays.asList(keys));
-
-        // build endpoint uri
-        StringBuilder sb = new StringBuilder();
-        // add scheme later as we need to take care if there is any context-path or query parameters which
-        // affect how the URI should be constructed
-
-        if (hasAllKeys) {
-            // we have all the keys for the syntax so we can build the uri the easy way
-            sb.append(syntax);
-
-            if (!copy.isEmpty()) {
-                boolean hasQuestionmark = sb.toString().contains("?");
-                // the last option may already contain a ? char, if so we should use & instead of ?
-                sb.append(hasQuestionmark ? ampersand : '?');
-                String query = createQueryString(copy, ampersand, encode);
-                sb.append(query);
-            }
-        } else {
-            // TODO: revisit this and see if we can do this in another way
-            // oh darn some options is missing, so we need a complex way of building the uri
-
-            // the tokens between the options in the path
-            String[] tokens = syntax.split("[\\w.]+");
-
-            // parse the syntax into each options
-            Matcher matcher = SYNTAX_PATTERN.matcher(originalSyntax);
-            List<String> options = new ArrayList<>();
-            while (matcher.find()) {
-                String s = matcher.group(1);
-                options.add(s);
-            }
-
-            // need to preserve {{ and }} from the syntax
-            // (we need to use words only as its provisional placeholders)
-            syntax = syntax.replaceAll("\\{\\{", "BEGINCAMELPLACEHOLDER");
-            syntax = syntax.replaceAll("\\}\\}", "ENDCAMELPLACEHOLDER");
-
-            // parse the syntax into each options
-            Matcher matcher2 = SYNTAX_PATTERN.matcher(syntax);
-            List<String> options2 = new ArrayList<>();
-            while (matcher2.find()) {
-                String s = matcher2.group(1);
-                s = s.replaceAll("BEGINCAMELPLACEHOLDER", "\\{\\{");
-                s = s.replaceAll("ENDCAMELPLACEHOLDER", "\\}\\}");
-                options2.add(s);
-            }
-
-            // build the endpoint
-            int range = 0;
-            boolean first = true;
-            boolean hasQuestionmark = false;
-            for (int i = 0; i < options.size(); i++) {
-                String key = options.get(i);
-                String key2 = options2.get(i);
-                String token = null;
-                if (tokens.length > i) {
-                    token = tokens[i];
-                }
-
-                boolean contains = properties.containsKey(key);
-                if (!contains) {
-                    // if the key are similar we have no explicit value and can try to find a default value if the option is required
-                    if (isPropertyRequired(rows, key)) {
-                        String value = getPropertyDefaultValue(rows, key);
-                        if (value != null) {
-                            properties.put(key, value);
-                            key2 = value;
-                        }
-                    }
-                }
-
-                // was the option provided?
-                if (properties.containsKey(key)) {
-                    if (!first && token != null) {
-                        sb.append(token);
-                    }
-                    hasQuestionmark |= key.contains("?") || (token != null && token.contains("?"));
-                    sb.append(key2);
-                    first = false;
-                }
-                range++;
-            }
-            // append any extra options that was in surplus for the last
-            while (range < options2.size()) {
-                String token = null;
-                if (tokens.length > range) {
-                    token = tokens[range];
-                }
-                String key2 = options2.get(range);
-                sb.append(token);
-                sb.append(key2);
-                hasQuestionmark |= key2.contains("?") || (token != null && token.contains("?"));
-                range++;
-            }
-
-
-            if (!copy.isEmpty()) {
-                // the last option may already contain a ? char, if so we should use & instead of ?
-                sb.append(hasQuestionmark ? ampersand : '?');
-                String query = createQueryString(copy, ampersand, encode);
-                sb.append(query);
-            }
-        }
-
-        String remainder = sb.toString();
-        boolean queryOnly = remainder.startsWith("?");
-        if (queryOnly) {
-            // it has only query parameters
-            return scheme + remainder;
-        } else if (!remainder.isEmpty()) {
-            // it has context path and possible query parameters
-            return scheme + ":" + remainder;
-        } else {
-            // its empty without anything
-            return scheme;
-        }
-    }
-
-    private static String[] syntaxKeys(String syntax) {
-        // build tokens between the separators
-        List<String> tokens = new ArrayList<>();
-
-        if (syntax != null) {
-            String current = "";
-            for (int i = 0; i < syntax.length(); i++) {
-                char ch = syntax.charAt(i);
-                if (Character.isLetterOrDigit(ch)) {
-                    current += ch;
-                } else {
-                    // reset for new current tokens
-                    if (current.length() > 0) {
-                        tokens.add(current);
-                        current = "";
-                    }
-                }
-            }
-            // anything left over?
-            if (current.length() > 0) {
-                tokens.add(current);
-            }
-        }
-
-        return tokens.toArray(new String[tokens.size()]);
-    }
-
-    private LanguageValidationResult doValidateSimple(ClassLoader classLoader, String simple, boolean predicate) {
-        if (classLoader == null) {
-            classLoader = getClass().getClassLoader();
-        }
-
-        // if there are {{ }}} property placeholders then we need to resolve them to something else
-        // as the simple parse cannot resolve them before parsing as we dont run the actual Camel application
-        // with property placeholders setup so we need to dummy this by replace the {{ }} to something else
-        // therefore we use an more unlikely character: {{XXX}} to ~^XXX^~
-        String resolved = simple.replaceAll("\\{\\{(.+)\\}\\}", "~^$1^~");
-
-        LanguageValidationResult answer = new LanguageValidationResult(simple);
-
-        Object instance = null;
-        Class<?> clazz = null;
-        try {
-            clazz = classLoader.loadClass("org.apache.camel.language.simple.SimpleLanguage");
-            instance = clazz.newInstance();
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (clazz != null && instance != null) {
-            Throwable cause = null;
-            try {
-                if (predicate) {
-                    instance.getClass().getMethod("createPredicate", String.class).invoke(instance, resolved);
-                } else {
-                    instance.getClass().getMethod("createExpression", String.class).invoke(instance, resolved);
-                }
-            } catch (InvocationTargetException e) {
-                cause = e.getTargetException();
-            } catch (Exception e) {
-                cause = e;
-            }
-
-            if (cause != null) {
-
-                // reverse ~^XXX^~ back to {{XXX}}
-                String errMsg = cause.getMessage();
-                errMsg = errMsg.replaceAll("\\~\\^(.+)\\^\\~", "{{$1}}");
-
-                answer.setError(errMsg);
-
-                // is it simple parser exception then we can grab the index where the problem is
-                if (cause.getClass().getName().equals("org.apache.camel.language.simple.types.SimpleIllegalSyntaxException")
-                        || cause.getClass().getName().equals("org.apache.camel.language.simple.types.SimpleParserException")) {
-                    try {
-                        // we need to grab the index field from those simple parser exceptions
-                        Method method = cause.getClass().getMethod("getIndex");
-                        Object result = method.invoke(cause);
-                        if (result != null) {
-                            int index = (int) result;
-                            answer.setIndex(index);
-                        }
-                    } catch (Throwable i) {
-                        // ignore
-                    }
-                }
-
-                // we need to grab the short message field from this simple syntax exception
-                if (cause.getClass().getName().equals("org.apache.camel.language.simple.types.SimpleIllegalSyntaxException")) {
-                    try {
-                        Method method = cause.getClass().getMethod("getShortMessage");
-                        Object result = method.invoke(cause);
-                        if (result != null) {
-                            String msg = (String) result;
-                            answer.setShortError(msg);
-                        }
-                    } catch (Throwable i) {
-                        // ignore
-                    }
-
-                    if (answer.getShortError() == null) {
-                        // fallback and try to make existing message short instead
-                        String msg = answer.getError();
-                        // grab everything before " at location " which would be regarded as the short message
-                        int idx = msg.indexOf(" at location ");
-                        if (idx > 0) {
-                            msg = msg.substring(0, idx);
-                            answer.setShortError(msg);
-                        }
-                    }
-                }
-            }
-        }
-
-        return answer;
-    }
-
-    public LanguageValidationResult validateLanguagePredicate(ClassLoader classLoader, String language, String text) {
-        if ("simple".equals(language)) {
-            return doValidateSimple(classLoader, text, true);
-        } else {
-            return doValidateLanguage(classLoader, language, text, true);
-        }
-    }
-
-    public LanguageValidationResult validateLanguageExpression(ClassLoader classLoader, String language, String text) {
-        if ("simple".equals(language)) {
-            return doValidateSimple(classLoader, text, false);
-        } else {
-            return doValidateLanguage(classLoader, language, text, false);
-        }
-    }
-
-    private LanguageValidationResult doValidateLanguage(ClassLoader classLoader, String language, String text, boolean predicate) {
-        if (classLoader == null) {
-            classLoader = getClass().getClassLoader();
-        }
-
-        LanguageValidationResult answer = new LanguageValidationResult(text);
-
-        String json = jsonSchemaResolver.getLanguageJSonSchema(language);
-        if (json == null) {
-            answer.setError("Unknown language " + language);
-            return answer;
-        }
-
-        List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("language", json, false);
-        String className = null;
-        for (Map<String, String> row : rows) {
-            if (row.containsKey("javaType")) {
-                className = row.get("javaType");
-            }
-        }
-
-        if (className == null) {
-            answer.setError("Cannot find javaType for language " + language);
-            return answer;
-        }
-
-        Object instance = null;
-        Class clazz = null;
-        try {
-            clazz = classLoader.loadClass(className);
-            instance = clazz.newInstance();
-        } catch (Exception e) {
-            // ignore
-        }
-
-        if (clazz != null && instance != null) {
-            Throwable cause = null;
-            try {
-                if (predicate) {
-                    instance.getClass().getMethod("createPredicate", String.class).invoke(instance, text);
-                } else {
-                    instance.getClass().getMethod("createExpression", String.class).invoke(instance, text);
-                }
-            } catch (InvocationTargetException e) {
-                cause = e.getTargetException();
-            } catch (Exception e) {
-                cause = e;
-            }
-
-            if (cause != null) {
-                answer.setError(cause.getMessage());
-            }
-        }
-
-        return answer;
-    }
-
-    /**
-     * Special logic for log endpoints to deal when showAll=true
-     */
-    private Map<String, String> filterProperties(String scheme, Map<String, String> options) {
-        if ("log".equals(scheme)) {
-            String showAll = options.get("showAll");
-            if ("true".equals(showAll)) {
-                Map<String, String> filtered = new LinkedHashMap<>();
-                // remove all the other showXXX options when showAll=true
-                for (Map.Entry<String, String> entry : options.entrySet()) {
-                    String key = entry.getKey();
-                    boolean skip = key.startsWith("show") && !key.equals("showAll");
-                    if (!skip) {
-                        filtered.put(key, entry.getValue());
-                    }
-                }
-                return filtered;
-            }
-        }
-        // use as-is
-        return options;
-    }
-
-    private static boolean validateInteger(String value) {
-        boolean valid = false;
-        try {
-            valid = Integer.valueOf(value) != null;
-        } catch (Exception e) {
-            // ignore
-        }
-        if (!valid) {
-            // it may be a time pattern, such as 5s for 5 seconds = 5000
-            try {
-                TimePatternConverter.toMilliSeconds(value);
-                valid = true;
-            } catch (Exception e) {
-                // ignore
-            }
-        }
-        return valid;
-    }
-
-    // CHECKSTYLE:ON
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CatalogHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/CatalogHelper.java
deleted file mode 100644
index 1b224df..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CatalogHelper.java
+++ /dev/null
@@ -1,179 +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.runtimecatalog;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.List;
-
-public final class CatalogHelper {
-
-    private CatalogHelper() {
-    }
-
-    /**
-     * Loads the entire stream into memory as a String and returns it.
-     * <p/>
-     * <b>Notice:</b> This implementation appends a <tt>\n</tt> as line
-     * terminator at the of the text.
-     * <p/>
-     * Warning, don't use for crazy big streams :)
-     */
-    public static void loadLines(InputStream in, List<String> lines) throws IOException {
-        try (final InputStreamReader isr = new InputStreamReader(in);
-            final BufferedReader reader = new LineNumberReader(isr)) {
-            String line;
-            while ((line = reader.readLine()) != null) {
-                lines.add(line);
-            }
-        }
-    }
-
-    /**
-     * Loads the entire stream into memory as a String and returns it.
-     * <p/>
-     * <b>Notice:</b> This implementation appends a <tt>\n</tt> as line
-     * terminator at the of the text.
-     * <p/>
-     * Warning, don't use for crazy big streams :)
-     */
-    public static String loadText(InputStream in) throws IOException {
-        StringBuilder builder = new StringBuilder();
-        try (final InputStreamReader isr = new InputStreamReader(in);
-            final BufferedReader reader = new LineNumberReader(isr)) {
-            String line;
-            while ((line = reader.readLine()) != null) {
-                builder.append(line);
-                builder.append("\n");
-            }
-            return builder.toString();
-        }
-    }
-
-    /**
-     * Matches the name with the pattern.
-     *
-     * @param name  the name
-     * @param pattern the pattern
-     * @return <tt>true</tt> if matched, or <tt>false</tt> if not
-     */
-    public static boolean matchWildcard(String name, String pattern) {
-        // we have wildcard support in that hence you can match with: file* to match any file endpoints
-        if (pattern.endsWith("*") && name.startsWith(pattern.substring(0, pattern.length() - 1))) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Returns the string after the given token
-     *
-     * @param text  the text
-     * @param after the token
-     * @return the text after the token, or <tt>null</tt> if text does not contain the token
-     */
-    public static String after(String text, String after) {
-        if (!text.contains(after)) {
-            return null;
-        }
-        return text.substring(text.indexOf(after) + after.length());
-    }
-
-    /**
-     * Returns the string before the given token
-     *
-     * @param text  the text
-     * @param before the token
-     * @return the text before the token, or <tt>null</tt> if text does not contain the token
-     */
-    public static String before(String text, String before) {
-        if (!text.contains(before)) {
-            return null;
-        }
-        return text.substring(0, text.indexOf(before));
-    }
-
-    /**
-     * Returns the string between the given tokens
-     *
-     * @param text  the text
-     * @param after the before token
-     * @param before the after token
-     * @return the text between the tokens, or <tt>null</tt> if text does not contain the tokens
-     */
-    public static String between(String text, String after, String before) {
-        text = after(text, after);
-        if (text == null) {
-            return null;
-        }
-        return before(text, before);
-    }
-
-    /**
-     * Tests whether the value is <tt>null</tt> or an empty string.
-     *
-     * @param value  the value, if its a String it will be tested for text length as well
-     * @return true if empty
-     */
-    public static boolean isEmpty(Object value) {
-        return !isNotEmpty(value);
-    }
-
-    /**
-     * Tests whether the value is <b>not</b> <tt>null</tt> or an empty string.
-     *
-     * @param value  the value, if its a String it will be tested for text length as well
-     * @return true if <b>not</b> empty
-     */
-    public static boolean isNotEmpty(Object value) {
-        if (value == null) {
-            return false;
-        } else if (value instanceof String) {
-            String text = (String) value;
-            return text.trim().length() > 0;
-        } else {
-            return true;
-        }
-    }
-
-    /**
-     * Removes all leading and ending quotes (single and double) from the string
-     *
-     * @param s  the string
-     * @return the string without leading and ending quotes (single and double)
-     */
-    public static String removeLeadingAndEndingQuotes(String s) {
-        if (isEmpty(s)) {
-            return s;
-        }
-
-        String copy = s.trim();
-        if (copy.startsWith("'") && copy.endsWith("'")) {
-            return copy.substring(1, copy.length() - 1);
-        }
-        if (copy.startsWith("\"") && copy.endsWith("\"")) {
-            return copy.substring(1, copy.length() - 1);
-        }
-
-        // no quotes, so return as-is
-        return s;
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CollectionStringBuffer.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/CollectionStringBuffer.java
deleted file mode 100644
index f6484b8..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CollectionStringBuffer.java
+++ /dev/null
@@ -1,57 +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.runtimecatalog;
-
-public class CollectionStringBuffer {
-    private final StringBuilder buffer = new StringBuilder();
-    private String separator;
-    private boolean first = true;
-
-    public CollectionStringBuffer() {
-        this(", ");
-    }
-
-    public CollectionStringBuffer(String separator) {
-        this.separator = separator;
-    }
-
-    @Override
-    public String toString() {
-        return buffer.toString();
-    }
-
-    public void append(Object value) {
-        if (first) {
-            first = false;
-        } else {
-            buffer.append(separator);
-        }
-        buffer.append(value);
-    }
-
-    public String getSeparator() {
-        return separator;
-    }
-
-    public void setSeparator(String separator) {
-        this.separator = separator;
-    }
-
-    public boolean isEmpty() {
-        return first;
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaHelper.java
deleted file mode 100644
index 1becdf9..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaHelper.java
+++ /dev/null
@@ -1,428 +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.runtimecatalog;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.json.simple.JsonObject;
-import org.json.simple.Jsoner;
-
-public final class JSonSchemaHelper {
-
-    private JSonSchemaHelper() {
-    }
-
-    /**
-     * Parses the json schema to split it into a list or rows, where each row contains key value pairs with the metadata
-     *
-     * @param group the group to parse from such as <tt>component</tt>, <tt>componentProperties</tt>, or <tt>properties</tt>.
-     * @param json the json
-     * @return a list of all the rows, where each row is a set of key value pairs with metadata
-     * @throws RuntimeException is thrown if error parsing the json data
-     */
-    @SuppressWarnings("unchecked")
-    public static List<Map<String, String>> parseJsonSchema(String group, String json, boolean parseProperties) {
-        List<Map<String, String>> answer = new ArrayList<>();
-        if (json == null) {
-            return answer;
-        }
-
-        // convert into a List<Map<String, String>> structure which is expected as output from this parser
-        try {
-            JsonObject output = (JsonObject) Jsoner.deserialize(json);
-            for (String key : output.keySet()) {
-                Map row = output.getMap(key);
-                if (key.equals(group)) {
-                    if (parseProperties) {
-                        // flattern each entry in the row with name as they key, and its value as the content (its a map also)
-                        for (Object obj : row.entrySet()) {
-                            Map.Entry entry = (Map.Entry) obj;
-                            Map<String, String> newRow = new LinkedHashMap();
-                            newRow.put("name", entry.getKey().toString());
-
-                            Map newData = transformMap((Map) entry.getValue());
-                            newRow.putAll(newData);
-                            answer.add(newRow);
-                        }
-                    } else {
-                        // flattern each entry in the row as a list of single Map<key, value> elements
-                        Map newData = transformMap(row);
-                        for (Object obj : newData.entrySet()) {
-                            Map.Entry entry = (Map.Entry) obj;
-                            Map<String, String> newRow = new LinkedHashMap<>();
-                            newRow.put(entry.getKey().toString(), entry.getValue().toString());
-                            answer.add(newRow);
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            // wrap parsing exceptions as runtime
-            throw new RuntimeException("Cannot parse json", e);
-        }
-
-        return answer;
-    }
-
-    private static Map<String, String> transformMap(Map jsonMap) {
-        Map<String, String> answer = new LinkedHashMap<>();
-
-        for (Object rowObj : jsonMap.entrySet()) {
-            Map.Entry rowEntry = (Map.Entry) rowObj;
-            // if its a list type then its an enum, and we need to parse it as a single line separated with comma
-            // to be backwards compatible
-            Object newValue = rowEntry.getValue();
-            if (newValue instanceof List) {
-                List list = (List) newValue;
-                CollectionStringBuffer csb = new CollectionStringBuffer(",");
-                for (Object line : list) {
-                    csb.append(line);
-                }
-                newValue = csb.toString();
-            }
-            // ensure value is escaped
-            String value = escapeJson(newValue.toString());
-            answer.put(rowEntry.getKey().toString(), value);
-        }
-
-        return answer;
-    }
-
-    private static String escapeJson(String value) {
-        // need to safe encode \r as \\r so its escaped
-        // need to safe encode \n as \\n so its escaped
-        // need to safe encode \t as \\t so its escaped
-        return value
-            .replaceAll("\\\\r", "\\\\\\r")
-            .replaceAll("\\\\n", "\\\\\\n")
-            .replaceAll("\\\\t", "\\\\\\t");
-    }
-
-    public static boolean isComponentLenientProperties(List<Map<String, String>> rows) {
-        for (Map<String, String> row : rows) {
-            if (row.containsKey("lenientProperties")) {
-                return "true".equals(row.get("lenientProperties"));
-            }
-        }
-        return false;
-    }
-
-    public static boolean isComponentConsumerOnly(List<Map<String, String>> rows) {
-        for (Map<String, String> row : rows) {
-            if (row.containsKey("consumerOnly")) {
-                return "true".equals(row.get("consumerOnly"));
-            }
-        }
-        return false;
-    }
-
-    public static boolean isComponentProducerOnly(List<Map<String, String>> rows) {
-        for (Map<String, String> row : rows) {
-            if (row.containsKey("producerOnly")) {
-                return "true".equals(row.get("producerOnly"));
-            }
-        }
-        return false;
-    }
-
-    public static boolean isPropertyConsumerOnly(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String labels = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("label")) {
-                labels = row.get("label");
-            }
-            if (found) {
-                return labels != null && labels.contains("consumer");
-            }
-        }
-        return false;
-    }
-
-    public static boolean isPropertyProducerOnly(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String labels = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("label")) {
-                labels = row.get("label");
-            }
-            if (found) {
-                return labels != null && labels.contains("producer");
-            }
-        }
-        return false;
-    }
-
-    public static boolean isPropertyRequired(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            boolean required = false;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("required")) {
-                required = "true".equals(row.get("required"));
-            }
-            if (found) {
-                return required;
-            }
-        }
-        return false;
-    }
-
-    public static boolean isPropertyDeprecated(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            boolean deprecated = false;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("deprecated")) {
-                deprecated = "true".equals(row.get("deprecated"));
-            }
-            if (found) {
-                return deprecated;
-            }
-        }
-        return false;
-    }
-
-    public static String getPropertyKind(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String kind = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("kind")) {
-                kind = row.get("kind");
-            }
-            if (found) {
-                return kind;
-            }
-        }
-        return null;
-    }
-
-    public static boolean isPropertyBoolean(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String type = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("type")) {
-                type = row.get("type");
-            }
-            if (found) {
-                return "boolean".equals(type);
-            }
-        }
-        return false;
-    }
-
-    public static boolean isPropertyInteger(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String type = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("type")) {
-                type = row.get("type");
-            }
-            if (found) {
-                return "integer".equals(type);
-            }
-        }
-        return false;
-    }
-
-    public static boolean isPropertyNumber(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String type = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("type")) {
-                type = row.get("type");
-            }
-            if (found) {
-                return "number".equals(type);
-            }
-        }
-        return false;
-    }
-
-    public static boolean isPropertyObject(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String type = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("type")) {
-                type = row.get("type");
-            }
-            if (found) {
-                return "object".equals(type);
-            }
-        }
-        return false;
-    }
-
-    public static String getPropertyDefaultValue(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String defaultValue = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("defaultValue")) {
-                defaultValue = row.get("defaultValue");
-            }
-            if (found) {
-                return defaultValue;
-            }
-        }
-        return null;
-    }
-
-    public static String stripOptionalPrefixFromName(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String optionalPrefix = null;
-            boolean found = false;
-            if (row.containsKey("optionalPrefix")) {
-                optionalPrefix = row.get("optionalPrefix");
-            }
-            if (row.containsKey("name")) {
-                if (optionalPrefix != null && name.startsWith(optionalPrefix)) {
-                    name = name.substring(optionalPrefix.length());
-                    // try again
-                    return stripOptionalPrefixFromName(rows, name);
-                } else {
-                    found = name.equals(row.get("name"));
-                }
-            }
-            if (found) {
-                return name;
-            }
-        }
-        return name;
-    }
-
-    public static String getPropertyEnum(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String enums = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("enum")) {
-                enums = row.get("enum");
-            }
-            if (found) {
-                return enums;
-            }
-        }
-        return null;
-    }
-
-    public static String getPropertyPrefix(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String prefix = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("prefix")) {
-                prefix = row.get("prefix");
-            }
-            if (found) {
-                return prefix;
-            }
-        }
-        return null;
-    }
-
-    public static boolean isPropertyMultiValue(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            boolean multiValue = false;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                found = name.equals(row.get("name"));
-            }
-            if (row.containsKey("multiValue")) {
-                multiValue = "true".equals(row.get("multiValue"));
-            }
-            if (found) {
-                return multiValue;
-            }
-        }
-        return false;
-    }
-
-    public static String getPropertyNameFromNameWithPrefix(List<Map<String, String>> rows, String name) {
-        for (Map<String, String> row : rows) {
-            String propertyName = null;
-            boolean found = false;
-            if (row.containsKey("name")) {
-                propertyName = row.get("name");
-            }
-            if (row.containsKey("prefix")) {
-                String preifx = row.get("prefix");
-                found = name.startsWith(preifx);
-            }
-            if (found) {
-                return propertyName;
-            }
-        }
-        return null;
-    }
-
-    public static Map<String, String> getRow(List<Map<String, String>> rows, String key) {
-        for (Map<String, String> row : rows) {
-            if (key.equals(row.get("name"))) {
-                return row;
-            }
-        }
-        return null;
-    }
-
-    public static Set<String> getNames(List<Map<String, String>> rows) {
-        Set<String> answer = new LinkedHashSet<>();
-        for (Map<String, String> row : rows) {
-            if (row.containsKey("name")) {
-                answer.add(row.get("name"));
-            }
-        }
-        return answer;
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/TimePatternConverter.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/TimePatternConverter.java
deleted file mode 100644
index ed5585c..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/TimePatternConverter.java
+++ /dev/null
@@ -1,120 +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.runtimecatalog;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * This class is a copy from camel-core so we can use it independent to validate uris with time patterns
- */
-public final class TimePatternConverter {
-    private static final Pattern NUMBERS_ONLY_STRING_PATTERN = Pattern.compile("^[-]?(\\d)+$", Pattern.CASE_INSENSITIVE);
-    private static final Pattern HOUR_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))h(our(s)?)?", Pattern.CASE_INSENSITIVE);
-    private static final Pattern MINUTES_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))m(in(ute(s)?)?)?", Pattern.CASE_INSENSITIVE);
-    private static final Pattern SECONDS_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))s(ec(ond)?(s)?)?", Pattern.CASE_INSENSITIVE);
-
-    /**
-     * Utility classes should not have a public constructor.
-     */
-    private TimePatternConverter() {
-    }
-
-    public static long toMilliSeconds(String source) throws IllegalArgumentException {
-        long milliseconds = 0;
-        boolean foundFlag = false;
-
-        checkCorrectnessOfPattern(source);
-        Matcher matcher;
-
-        matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
-        if (matcher.find()) {
-            // Note: This will also be used for regular numeric strings.
-            //       This String -> long converter will be used for all strings.
-            milliseconds = Long.valueOf(source);
-        } else {
-            matcher = createMatcher(HOUR_REGEX_PATTERN, source);
-            if (matcher.find()) {
-                milliseconds = milliseconds + (3600000 * Long.valueOf(matcher.group(1)));
-                foundFlag = true;
-            }
-
-            matcher = createMatcher(MINUTES_REGEX_PATTERN, source);
-            if (matcher.find()) {
-                long minutes = Long.valueOf(matcher.group(1));
-                if ((minutes > 59) && foundFlag) {
-                    throw new IllegalArgumentException("Minutes should contain a valid value between 0 and 59: " + source);
-                }
-                foundFlag = true;
-                milliseconds = milliseconds + (60000 * minutes);
-            }
-
-            matcher = createMatcher(SECONDS_REGEX_PATTERN, source);
-            if (matcher.find()) {
-                long seconds = Long.valueOf(matcher.group(1));
-                if ((seconds > 59) && foundFlag) {
-                    throw new IllegalArgumentException("Seconds should contain a valid value between 0 and 59: " + source);
-                }
-                foundFlag = true;
-                milliseconds = milliseconds + (1000 * seconds);
-            }
-
-            // No pattern matched... initiating fallback check and conversion (if required).
-            // The source at this point may contain illegal values or special characters
-            if (!foundFlag) {
-                milliseconds = Long.valueOf(source);
-            }
-        }
-
-        return milliseconds;
-    }
-
-    private static void checkCorrectnessOfPattern(String source) {
-        //replace only numbers once
-        Matcher matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
-        String replaceSource = matcher.replaceFirst("");
-
-        //replace hour string once
-        matcher = createMatcher(HOUR_REGEX_PATTERN, replaceSource);
-        if (matcher.find() && matcher.find()) {
-            throw new IllegalArgumentException("Hours should not be specified more then once: " + source);
-        }
-        replaceSource = matcher.replaceFirst("");
-
-        //replace minutes once
-        matcher = createMatcher(MINUTES_REGEX_PATTERN, replaceSource);
-        if (matcher.find() && matcher.find()) {
-            throw new IllegalArgumentException("Minutes should not be specified more then once: " + source);
-        }
-        replaceSource = matcher.replaceFirst("");
-
-        //replace seconds once
-        matcher = createMatcher(SECONDS_REGEX_PATTERN, replaceSource);
-        if (matcher.find() && matcher.find()) {
-            throw new IllegalArgumentException("Seconds should not be specified more then once: " + source);
-        }
-        replaceSource = matcher.replaceFirst("");
-
-        if (replaceSource.length() > 0) {
-            throw new IllegalArgumentException("Illegal characters: " + source);
-        }
-    }
-
-    private static Matcher createMatcher(Pattern pattern, String source) {
-        return pattern.matcher(source);
-    }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
similarity index 95%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
index 8426ac6..db829ca 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -33,32 +33,37 @@ import java.util.Set;
 import java.util.TreeMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
-import static org.apache.camel.catalog.CatalogHelper.after;
-import static org.apache.camel.catalog.JSonSchemaHelper.getNames;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyDefaultValue;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyEnum;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyKind;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyNameFromNameWithPrefix;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyPrefix;
-import static org.apache.camel.catalog.JSonSchemaHelper.getRow;
-import static org.apache.camel.catalog.JSonSchemaHelper.isComponentConsumerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isComponentLenientProperties;
-import static org.apache.camel.catalog.JSonSchemaHelper.isComponentProducerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyBoolean;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyConsumerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyDeprecated;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyInteger;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyMultiValue;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyNumber;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyObject;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyProducerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyRequired;
-import static org.apache.camel.catalog.JSonSchemaHelper.stripOptionalPrefixFromName;
-import static org.apache.camel.catalog.URISupport.createQueryString;
-import static org.apache.camel.catalog.URISupport.isEmpty;
-import static org.apache.camel.catalog.URISupport.normalizeUri;
-import static org.apache.camel.catalog.URISupport.stripQuery;
+import java.util.stream.Collectors;
+
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
+import org.apache.camel.runtimecatalog.LanguageValidationResult;
+
+import static org.apache.camel.runtimecatalog.impl.CatalogHelper.after;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getNames;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyDefaultValue;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyEnum;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyKind;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyNameFromNameWithPrefix;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyPrefix;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getRow;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isComponentConsumerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isComponentLenientProperties;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isComponentProducerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyBoolean;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyConsumerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyDeprecated;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyInteger;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyMultiValue;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyNumber;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyObject;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyProducerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyRequired;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.stripOptionalPrefixFromName;
+import static org.apache.camel.runtimecatalog.impl.URISupport.createQueryString;
+import static org.apache.camel.runtimecatalog.impl.URISupport.isEmpty;
+import static org.apache.camel.runtimecatalog.impl.URISupport.normalizeUri;
+import static org.apache.camel.runtimecatalog.impl.URISupport.stripQuery;
 
 /**
  * Base class for both the runtime RuntimeCamelCatalog from camel-core and the complete CamelCatalog from camel-catalog.
@@ -762,14 +767,12 @@ public abstract class AbstractCamelCatalog {
                 // extra all the multi valued options
                 Map<String, Object> values = URISupport.extractProperties(parameters, prefix);
                 // build a string with the extra multi valued options with the prefix and & as separator
-                CollectionStringBuffer csb = new CollectionStringBuffer("&");
-                for (Map.Entry<String, Object> multi : values.entrySet()) {
-                    String line = prefix + multi.getKey() + "=" + (multi.getValue() != null ? multi.getValue().toString() : "");
-                    csb.append(line);
-                }
+                String csb = values.entrySet().stream()
+                        .map(multi -> prefix + multi.getKey() + "=" + (multi.getValue() != null ? multi.getValue().toString() : ""))
+                        .collect(Collectors.joining("&"));
                 // append the extra multi-values to the existing (which contains the first multi value)
                 if (!csb.isEmpty()) {
-                    value = value + "&" + csb.toString();
+                    value = value + "&" + csb;
                 }
             }
 
@@ -1074,7 +1077,6 @@ public abstract class AbstractCamelCatalog {
         return tokens.toArray(new String[tokens.size()]);
     }
 
-<<<<<<< HEAD
     private LanguageValidationResult doValidateSimple(ClassLoader classLoader, String simple, boolean predicate) {
         if (classLoader == null) {
             classLoader = getClass().getClassLoader();
@@ -1165,8 +1167,6 @@ public abstract class AbstractCamelCatalog {
         return answer;
     }
 
-=======
->>>>>>> 79866dfb308... [CAMEL-12818] Remove deprecated stuff
     public LanguageValidationResult validateLanguagePredicate(ClassLoader classLoader, String language, String text) {
         if ("simple".equals(language)) {
             return doValidateSimple(classLoader, text, true);
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CamelContextJSonSchemaResolver.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
similarity index 95%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/CamelContextJSonSchemaResolver.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
index d3a448c..65aa34d 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CamelContextJSonSchemaResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
@@ -14,11 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.io.IOException;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
 
 /**
  * Uses runtime {@link CamelContext} to resolve the JSon schema files.
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
similarity index 99%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
index caba4a3..eaf70d9 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.io.BufferedReader;
 import java.io.IOException;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/DefaultRuntimeCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/DefaultRuntimeCamelCatalog.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
index 041eeb0..439b00c 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/DefaultRuntimeCamelCatalog.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 
 /**
  * Default {@link RuntimeCamelCatalog}.
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelper.java
similarity index 98%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelper.java
index f8ce950..d923579 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
@@ -22,6 +22,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.json.simple.JsonObject;
 import org.json.simple.Jsoner;
@@ -92,12 +93,9 @@ public final class JSonSchemaHelper {
             // to be backwards compatible
             Object newValue = rowEntry.getValue();
             if (newValue instanceof List) {
-                List list = (List) newValue;
-                CollectionStringBuffer csb = new CollectionStringBuffer(",");
-                for (Object line : list) {
-                    csb.append(line);
-                }
-                newValue = csb.toString();
+                List<?> list = (List) newValue;
+                newValue = list.stream().map(Object::toString)
+                        .collect(Collectors.joining(","));
             }
             // ensure value is escaped
             String value = escapeJson(newValue.toString());
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/SuggestionStrategy.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/SuggestionStrategy.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
index e29afc6..95875dd 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/SuggestionStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.util.Set;
 
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
similarity index 99%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
index 4ed843a..bb269ee 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/URISupport.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/URISupport.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
index 8bd0814..73f05a2 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/URISupport.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/UnsafeUriCharactersEncoder.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/UnsafeUriCharactersEncoder.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
index 2aee59f..9dbe30c 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/UnsafeUriCharactersEncoder.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.util.ArrayList;
 import java.util.BitSet;
diff --git a/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java b/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java
index 53bb87b..474c2f7 100644
--- a/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java
@@ -21,6 +21,7 @@ import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.RollbackExchangeException;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.ExceptionHandler;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestProducerFactoryHelper.java b/camel-core/src/main/java/org/apache/camel/support/RestProducerFactoryHelper.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/spi/RestProducerFactoryHelper.java
rename to camel-core/src/main/java/org/apache/camel/support/RestProducerFactoryHelper.java
index 743d7f4..bac6032 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RestProducerFactoryHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/support/RestProducerFactoryHelper.java
@@ -14,15 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spi;
+package org.apache.camel.support;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
-import org.apache.camel.support.IntrospectionSupport;
-import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.spi.RestProducerFactory;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/util/CamelContextStatDump.java b/camel-core/src/main/java/org/apache/camel/support/dump/CamelContextStatDump.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/util/CamelContextStatDump.java
rename to camel-core/src/main/java/org/apache/camel/support/dump/CamelContextStatDump.java
index c054835..59ba6aa 100644
--- a/camel-core/src/main/java/org/apache/camel/util/CamelContextStatDump.java
+++ b/camel-core/src/main/java/org/apache/camel/support/dump/CamelContextStatDump.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.util;
+package org.apache.camel.support.dump;
 
 import java.util.List;
 
diff --git a/camel-core/src/main/java/org/apache/camel/util/ProcessorStatDump.java b/camel-core/src/main/java/org/apache/camel/support/dump/ProcessorStatDump.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/util/ProcessorStatDump.java
rename to camel-core/src/main/java/org/apache/camel/support/dump/ProcessorStatDump.java
index 396f4f0..56ab22e 100644
--- a/camel-core/src/main/java/org/apache/camel/util/ProcessorStatDump.java
+++ b/camel-core/src/main/java/org/apache/camel/support/dump/ProcessorStatDump.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.util;
+package org.apache.camel.support.dump;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
diff --git a/camel-core/src/main/java/org/apache/camel/util/RouteStatDump.java b/camel-core/src/main/java/org/apache/camel/support/dump/RouteStatDump.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/util/RouteStatDump.java
rename to camel-core/src/main/java/org/apache/camel/support/dump/RouteStatDump.java
index 63afc60..9b385e6 100644
--- a/camel-core/src/main/java/org/apache/camel/util/RouteStatDump.java
+++ b/camel-core/src/main/java/org/apache/camel/support/dump/RouteStatDump.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.util;
+package org.apache.camel.support.dump;
 
 import java.util.List;
 
diff --git a/camel-core/src/main/resources/org/apache/camel/jaxb.index b/camel-core/src/main/resources/org/apache/camel/jaxb.index
index c4c326b..a589449 100644
--- a/camel-core/src/main/resources/org/apache/camel/jaxb.index
+++ b/camel-core/src/main/resources/org/apache/camel/jaxb.index
@@ -17,7 +17,6 @@
 ExchangePattern
 LoggingLevel
 ManagementStatisticsLevel
-ThreadPoolRejectedPolicy
 TypeConverterExists
 ShutdownRoute
 ShutdownRunningTask
\ No newline at end of file
diff --git a/camel-core/src/main/resources/org/apache/camel/util/jaxb.index b/camel-core/src/main/resources/org/apache/camel/support/dump/jaxb.index
similarity index 100%
copy from camel-core/src/main/resources/org/apache/camel/util/jaxb.index
copy to camel-core/src/main/resources/org/apache/camel/support/dump/jaxb.index
diff --git a/camel-core/src/main/resources/org/apache/camel/util/jaxb.index b/camel-core/src/main/resources/org/apache/camel/util/concurrent/jaxb.index
similarity index 95%
rename from camel-core/src/main/resources/org/apache/camel/util/jaxb.index
rename to camel-core/src/main/resources/org/apache/camel/util/concurrent/jaxb.index
index 5738681..341b476 100644
--- a/camel-core/src/main/resources/org/apache/camel/util/jaxb.index
+++ b/camel-core/src/main/resources/org/apache/camel/util/concurrent/jaxb.index
@@ -14,6 +14,4 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ------------------------------------------------------------------------
-MessageDump
-ProcessorStatDump
-RouteStatDump
+ThreadPoolRejectedPolicy
diff --git a/camel-core/src/test/java/org/apache/camel/util/TimeTest.java b/camel-core/src/test/java/org/apache/camel/component/mock/TimeTest.java
similarity index 96%
rename from camel-core/src/test/java/org/apache/camel/util/TimeTest.java
rename to camel-core/src/test/java/org/apache/camel/component/mock/TimeTest.java
index 891254e..2bae95b 100644
--- a/camel-core/src/test/java/org/apache/camel/util/TimeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/mock/TimeTest.java
@@ -14,11 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.util;
+package org.apache.camel.component.mock;
 
 import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.component.mock.Time;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
index b5de97f..37f796f 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.processor;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultExchange;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
similarity index 96%
rename from camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
rename to camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
index cdd9cf7..5fc47c5 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
@@ -14,12 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
+import org.apache.camel.runtimecatalog.impl.AbstractCamelCatalog;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
similarity index 96%
rename from camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java
rename to camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
index 7be832c..4e42f02 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.runtimecatalog.impl.JSonSchemaHelper;
 import org.junit.Test;
 
 public class JSonSchemaHelperTest extends ContextTestSupport {
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalogTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
similarity index 98%
rename from camel-core/src/test/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalogTest.java
rename to camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
index 49a39f1..8444a7c 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalogTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
@@ -14,12 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.LanguageValidationResult;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/camel-util/pom.xml b/camel-util/pom.xml
new file mode 100644
index 0000000..a05e56e
--- /dev/null
+++ b/camel-util/pom.xml
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-parent</artifactId>
+    <version>3.0.0-SNAPSHOT</version>
+    <relativePath>../parent</relativePath>
+  </parent>
+
+  <artifactId>camel-util</artifactId>
+  <packaging>jar</packaging>
+  <name>Camel :: Util</name>
+  <description>The Camel Utilities</description>
+
+  <dependencies>
+
+    <!-- required dependencies by camel-core -->
+    <!-- it will be shade into camel-core by bnd plugin -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>spi-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <!-- we shade our patched ordered json-simple parser -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>json-simple-ordered</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- required dependencies by camel-core -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+    <!-- testing -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <artifactId>hamcrest-core</artifactId>
+          <groupId>org.hamcrest</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>java-hamcrest</artifactId>
+      <version>${hamcrest-version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <artifactId>hamcrest-core</artifactId>
+          <groupId>org.hamcrest</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>${assertj-version}</version>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <links>
+            <link>http://download.oracle.com/javase/7/docs/api/</link>
+            <link>http://download.oracle.com/javaee/7/api/</link>
+          </links>
+          <linksource>true</linksource>
+          <maxmemory>256m</maxmemory>
+          <groups>
+            <group>
+              <title>Camel API</title>
+              <packages>org.apache.camel</packages>
+            </group>
+            <group>
+              <title>Fluent API (DSL) for building EIP rules</title>
+              <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+            </group>
+            <group>
+              <title>EIP model</title>
+              <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+            </group>
+            <group>
+              <title>Camel Components</title>
+              <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+            </group>
+            <group>
+              <title>Language APIs and plugins for Expressions and Predicates</title>
+              <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+            </group>
+            <group>
+              <title>Processors to implement the Enterprise Integration Patterns</title>
+              <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+            </group>
+            <group>
+              <title>Strategy APIs for implementors extending Camel</title>
+              <packages>org.apache.camel.spi</packages>
+            </group>
+            <group>
+              <title>Support APIs for implementors</title>
+              <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+            </group>
+            <group>
+              <title>Management (JMX) API</title>
+              <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+            </group>
+            <group>
+              <title>Camel Runtime</title>
+              <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+            </group>
+            <group>
+              <title>Camel Main to run Camel standalone</title>
+              <packages>org.apache.camel.main</packages>
+            </group>
+            <group>
+              <title>Type conversion helper classes</title>
+              <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+            </group>
+            <group>
+              <title>Utility classes</title>
+              <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+            </group>
+          </groups>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+
+  <profiles>
+    <profile>
+      <id>release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-javadoc-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>package</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>jar</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <links>
+                <link>http://download.oracle.com/javase/7/docs/api/</link>
+                <link>http://download.oracle.com/javaee/7/api/</link>
+              </links>
+              <linksource>true</linksource>
+              <maxmemory>256m</maxmemory>
+              <groups>
+                <group>
+                  <title>Camel API</title>
+                  <packages>org.apache.camel</packages>
+                </group>
+                <group>
+                  <title>Fluent API (DSL) for building EIP rules</title>
+                  <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+                </group>
+                <group>
+                  <title>EIP model</title>
+                  <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+                </group>
+                <group>
+                  <title>Camel Components</title>
+                  <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+                </group>
+                <group>
+                  <title>Language APIs and plugins for Expressions and Predicates</title>
+                  <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+                </group>
+                <group>
+                  <title>Processors to implement the Enterprise Integration Patterns</title>
+                  <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+                </group>
+                <group>
+                  <title>Strategy APIs for implementors extending Camel</title>
+                  <packages>org.apache.camel.spi</packages>
+                </group>
+                <group>
+                  <title>Support APIs for implementors</title>
+                  <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+                </group>
+                <group>
+                  <title>Management (JMX) API</title>
+                  <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+                </group>
+                <group>
+                  <title>Camel Runtime</title>
+                  <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+                </group>
+                <group>
+                  <title>Camel Main to run Camel standalone</title>
+                  <packages>org.apache.camel.main</packages>
+                </group>
+                <group>
+                  <title>Type conversion helper classes</title>
+                  <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+                </group>
+                <group>
+                  <title>Utility classes</title>
+                  <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+                </group>
+              </groups>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <!-- skip management tests on AIX as it hangs CI servers -->
+    <profile>
+      <id>aix</id>
+      <activation>
+        <os>
+          <name>aix</name>
+        </os>
+      </activation>
+      <properties>
+        <platform.skip.tests>org/apache/camel/management/**/*.java</platform.skip.tests>
+      </properties>
+    </profile>
+    <profile>
+      <id>xalan</id>
+      <dependencies>
+        <!-- enable the Xalan processor -->
+        <dependency>
+          <groupId>xalan</groupId>
+          <artifactId>xalan</artifactId>
+          <version>${xalan-version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>xerces</id>
+      <dependencies>
+        <!-- enable the xerces processor -->
+        <dependency>
+          <groupId>xerces</groupId>
+          <artifactId>xercesImpl</artifactId>
+          <version>${xerces-version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>woodstox</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      <dependencies>
+        <!-- xmltokenizer using woodstox -->
+        <dependency>
+          <groupId>org.codehaus.woodstox</groupId>
+          <artifactId>woodstox-core-asl</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+
+    <profile>
+      <id>jdk9+-build</id>
+      <activation>
+        <jdk>[9,)</jdk>
+      </activation>
+      <dependencies>
+
+        <!-- enable the APT processor -->
+        <dependency>
+          <groupId>org.apache.camel</groupId>
+          <artifactId>apt</artifactId>
+          <scope>provided</scope>
+        </dependency>
+        <!-- xmltokenizer using woodstox -->
+        <dependency>
+          <groupId>org.codehaus.woodstox</groupId>
+          <artifactId>woodstox-core-asl</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <!-- skip file stress tests as they are intended to run manually -->
+              <excludes>
+                <exclude>org/apache/camel/component/file/stress/**.java</exclude>
+                <exclude>**/DistributedCompletionIntervalTest.java</exclude>
+                <exclude>**/DistributedConcurrentPerCorrelationKeyTest.java</exclude>
+                <exclude>${platform.skip.tests}</exclude>
+              </excludes>
+              <forkedProcessTimeoutInSeconds>3000</forkedProcessTimeoutInSeconds>
+              <!-- needed for testing the properties component -->
+              <environmentVariables>
+              <FOO_SERVICE_HOST>myserver</FOO_SERVICE_HOST>
+              <FOO_SERVICE_PORT>8081</FOO_SERVICE_PORT>
+              </environmentVariables>
+              <argLine>--add-modules java.xml.bind,java.xml.ws --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED</argLine>
+            </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>com.sun.xml.bind</groupId>
+                <artifactId>jaxb-core</artifactId>
+                <version>${jaxb-version}</version>
+              </dependency>
+              <dependency>
+                <groupId>com.sun.xml.bind</groupId>
+                <artifactId>jaxb-impl</artifactId>
+                <version>${jaxb-version}</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+</project>
diff --git a/camel-core/src/main/java/org/apache/camel/util/AntPathMatcher.java b/camel-util/src/main/java/org/apache/camel/util/AntPathMatcher.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/AntPathMatcher.java
rename to camel-util/src/main/java/org/apache/camel/util/AntPathMatcher.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CamelVersionHelper.java b/camel-util/src/main/java/org/apache/camel/util/CamelVersionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CamelVersionHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/CamelVersionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java b/camel-util/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java
rename to camel-util/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CastUtils.java b/camel-util/src/main/java/org/apache/camel/util/CastUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CastUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/CastUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CollectionHelper.java b/camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CollectionHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CollectionStringBuffer.java b/camel-util/src/main/java/org/apache/camel/util/CollectionStringBuffer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CollectionStringBuffer.java
rename to camel-util/src/main/java/org/apache/camel/util/CollectionStringBuffer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/FilePathResolver.java b/camel-util/src/main/java/org/apache/camel/util/FilePathResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/FilePathResolver.java
rename to camel-util/src/main/java/org/apache/camel/util/FilePathResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/FileUtil.java b/camel-util/src/main/java/org/apache/camel/util/FileUtil.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/FileUtil.java
rename to camel-util/src/main/java/org/apache/camel/util/FileUtil.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/HostUtils.java b/camel-util/src/main/java/org/apache/camel/util/HostUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/HostUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/HostUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/IOHelper.java b/camel-util/src/main/java/org/apache/camel/util/IOHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/IOHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/IOHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/InetAddressUtil.java b/camel-util/src/main/java/org/apache/camel/util/InetAddressUtil.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/InetAddressUtil.java
rename to camel-util/src/main/java/org/apache/camel/util/InetAddressUtil.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/JsonSchemaHelper.java b/camel-util/src/main/java/org/apache/camel/util/JsonSchemaHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/JsonSchemaHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/JsonSchemaHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/KeyValueHolder.java b/camel-util/src/main/java/org/apache/camel/util/KeyValueHolder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/KeyValueHolder.java
rename to camel-util/src/main/java/org/apache/camel/util/KeyValueHolder.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java b/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/OgnlHelper.java b/camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/OgnlHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/PackageHelper.java b/camel-util/src/main/java/org/apache/camel/util/PackageHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/PackageHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/PackageHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/ReferenceCount.java b/camel-util/src/main/java/org/apache/camel/util/ReferenceCount.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/ReferenceCount.java
rename to camel-util/src/main/java/org/apache/camel/util/ReferenceCount.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/ReflectionHelper.java b/camel-util/src/main/java/org/apache/camel/util/ReflectionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/ReflectionHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/ReflectionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/Scanner.java b/camel-util/src/main/java/org/apache/camel/util/Scanner.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/Scanner.java
rename to camel-util/src/main/java/org/apache/camel/util/Scanner.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/SedaConstants.java b/camel-util/src/main/java/org/apache/camel/util/SedaConstants.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/SedaConstants.java
rename to camel-util/src/main/java/org/apache/camel/util/SedaConstants.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/SkipIterator.java b/camel-util/src/main/java/org/apache/camel/util/SkipIterator.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/SkipIterator.java
rename to camel-util/src/main/java/org/apache/camel/util/SkipIterator.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StopWatch.java b/camel-util/src/main/java/org/apache/camel/util/StopWatch.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StopWatch.java
rename to camel-util/src/main/java/org/apache/camel/util/StopWatch.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StreamUtils.java b/camel-util/src/main/java/org/apache/camel/util/StreamUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StreamUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/StreamUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StringHelper.java b/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StringHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/StringHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StringQuoteHelper.java b/camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StringQuoteHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/TimeUtils.java b/camel-util/src/main/java/org/apache/camel/util/TimeUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/TimeUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/TimeUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/URISupport.java b/camel-util/src/main/java/org/apache/camel/util/URISupport.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/URISupport.java
rename to camel-util/src/main/java/org/apache/camel/util/URISupport.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/UnitUtils.java b/camel-util/src/main/java/org/apache/camel/util/UnitUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/UnitUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/UnitUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java b/camel-util/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
rename to camel-util/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/XmlLineNumberParser.java b/camel-util/src/main/java/org/apache/camel/util/XmlLineNumberParser.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/XmlLineNumberParser.java
rename to camel-util/src/main/java/org/apache/camel/util/XmlLineNumberParser.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/BackOff.java b/camel-util/src/main/java/org/apache/camel/util/backoff/BackOff.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/BackOff.java
rename to camel-util/src/main/java/org/apache/camel/util/backoff/BackOff.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java b/camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java
rename to camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java b/camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java
rename to camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/package.html b/camel-util/src/main/java/org/apache/camel/util/backoff/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/package.html
rename to camel-util/src/main/java/org/apache/camel/util/backoff/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/LockHelper.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/LockHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/LockHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/LockHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/Rejectable.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/Rejectable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/Rejectable.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/Rejectable.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/package.html b/camel-util/src/main/java/org/apache/camel/util/concurrent/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/package.html
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/Bindings.java b/camel-util/src/main/java/org/apache/camel/util/function/Bindings.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/Bindings.java
rename to camel-util/src/main/java/org/apache/camel/util/function/Bindings.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/Predicates.java b/camel-util/src/main/java/org/apache/camel/util/function/Predicates.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/Predicates.java
rename to camel-util/src/main/java/org/apache/camel/util/function/Predicates.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/Suppliers.java b/camel-util/src/main/java/org/apache/camel/util/function/Suppliers.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/Suppliers.java
rename to camel-util/src/main/java/org/apache/camel/util/function/Suppliers.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingFunction.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingFunction.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingFunction.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingFunction.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/TriConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/TriConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/TriConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/TriConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/package.html b/camel-util/src/main/java/org/apache/camel/util/function/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/package.html
rename to camel-util/src/main/java/org/apache/camel/util/function/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/util/package.html b/camel-util/src/main/java/org/apache/camel/util/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/package.html
rename to camel-util/src/main/java/org/apache/camel/util/package.html
diff --git a/camel-core/src/test/java/org/apache/camel/util/AntPathMatcherTest.java b/camel-util/src/test/java/org/apache/camel/util/AntPathMatcherTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/AntPathMatcherTest.java
rename to camel-util/src/test/java/org/apache/camel/util/AntPathMatcherTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java b/camel-util/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java
rename to camel-util/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/CollectionHelperTest.java b/camel-util/src/test/java/org/apache/camel/util/CollectionHelperTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/CollectionHelperTest.java
rename to camel-util/src/test/java/org/apache/camel/util/CollectionHelperTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java b/camel-util/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java
rename to camel-util/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java b/camel-util/src/test/java/org/apache/camel/util/UnitUtilsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java
rename to camel-util/src/test/java/org/apache/camel/util/UnitUtilsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTest.java b/camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTest.java
rename to camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java b/camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java
rename to camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java b/camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
rename to camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java b/camel-util/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java
rename to camel-util/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java b/camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
rename to camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/function/PredicatesTest.java b/camel-util/src/test/java/org/apache/camel/util/function/PredicatesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/function/PredicatesTest.java
rename to camel-util/src/test/java/org/apache/camel/util/function/PredicatesTest.java
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java
index 328ab7a..8eb12d5 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java
@@ -25,7 +25,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.processor.RedeliveryErrorHandler;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 
 /**
  * This error handler does redelivering. If the transaction fails it can be
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 0ef1cdd..4aa81a8 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
@@ -24,10 +24,10 @@ 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.spi.CamelLogger;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java
index 7ff0fb1..4422f60 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.component.file.remote;
 
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java
index bc3f651..c71abab 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java
@@ -25,7 +25,7 @@ import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.StopWatch;
 import org.apache.commons.net.ftp.FTPFile;
 import org.slf4j.Logger;
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java
index 1c00f4a..847cf6c 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java
@@ -27,7 +27,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.component.file.remote.SftpRemoteFile;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
index 2c0ab5c..964b0c5 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
+
 import javax.net.ssl.HostnameVerifier;
 
 import org.apache.camel.CamelContext;
@@ -40,15 +41,15 @@ import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
-import org.apache.camel.util.FileUtil;
 import org.apache.camel.support.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.RestProducerFactoryHelper;
 import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
+import org.apache.camel.util.FileUtil;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
-import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.http.client.CookieStore;
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.config.Registry;
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
index fb2775f..ccfac03 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
@@ -60,10 +60,10 @@ import org.apache.camel.spi.RestApiConsumerFactory;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.HostUtils;
 import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.RestProducerFactoryHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.StringHelper;
diff --git a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
index 291be82..8e00d27 100644
--- a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
+++ b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
@@ -28,8 +28,8 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeTimedOutException;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultProducer;
-import org.apache.camel.support.CamelLogger;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
index b302907..777849d 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
@@ -38,12 +38,12 @@ import org.apache.camel.spi.RestApiConsumerFactory;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.RestProducerFactoryHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.HostUtils;
-import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
 
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java
index f2acb4d..1c19749 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.netty4.http.handlers;
 import java.net.URI;
 import java.nio.channels.ClosedChannelException;
 import java.nio.charset.Charset;
-import java.util.Iterator;
 import java.util.Locale;
 
 import javax.security.auth.Subject;
@@ -43,7 +42,7 @@ import org.apache.camel.component.netty4.http.HttpPrincipal;
 import org.apache.camel.component.netty4.http.NettyHttpConsumer;
 import org.apache.camel.component.netty4.http.NettyHttpSecurityConfiguration;
 import org.apache.camel.component.netty4.http.SecurityAuthenticator;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java
index 5805a96..c70ab01 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java
@@ -21,8 +21,8 @@ import java.nio.channels.ClosedChannelException;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java
index e1f3425..96ccdd4 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java
@@ -43,12 +43,12 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultAsyncProducer;
-import org.apache.camel.support.SynchronizationAdapter;
-import org.apache.camel.support.CamelLogger;
 import org.apache.camel.support.ExchangeHelper;
-import org.apache.camel.util.IOHelper;
 import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.SynchronizationAdapter;
+import org.apache.camel.util.IOHelper;
 import org.apache.commons.pool.ObjectPool;
 import org.apache.commons.pool.PoolableObjectFactory;
 import org.apache.commons.pool.impl.GenericObjectPool;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java
index b1a683f..30d1b52 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java
@@ -28,11 +28,11 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeTimedOutException;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.TimeoutMap;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.DefaultTimeoutMap;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java
index 7922130..5363bd8 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java
@@ -28,7 +28,7 @@ import org.apache.camel.component.netty4.NettyConstants;
 import org.apache.camel.component.netty4.NettyConsumer;
 import org.apache.camel.component.netty4.NettyHelper;
 import org.apache.camel.component.netty4.NettyPayloadHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index 08aaaea..9b6f00d 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -41,16 +41,16 @@ import org.apache.camel.StaticService;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
+import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.support.CamelLogger;
-import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.StringHelper;
 
 /**
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
index 4c4b1e5..b15a59b 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
@@ -32,7 +32,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.SSLContextParametersAware;
 import org.apache.camel.component.restlet.converter.RestletConverter;
-import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategyAware;
 import org.apache.camel.spi.Metadata;
@@ -40,13 +39,14 @@ import org.apache.camel.spi.RestApiConsumerFactory;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.RestProducerFactoryHelper;
+import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.HostUtils;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.URISupport;
-import org.apache.camel.support.jsse.SSLContextParameters;
 import org.restlet.Component;
 import org.restlet.Restlet;
 import org.restlet.data.ChallengeScheme;
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java
index 3c09812..5a56a33 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java
@@ -18,8 +18,8 @@ package org.apache.camel.spring.boot;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.LogListener;
-import org.apache.camel.support.CamelLogger;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
index 430a2f0..f4acca7 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
@@ -29,7 +29,7 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.processor.RedeliveryErrorHandler;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.springframework.transaction.TransactionDefinition;
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 9e60a53..e4bab18 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
@@ -21,9 +21,9 @@ import java.util.Map;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
index 5796e94..ac0d7f6 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
@@ -35,21 +35,21 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.SSLContextParametersAware;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RestApiConsumerFactory;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.RestProducerFactoryHelper;
+import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.HostUtils;
-import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
-import org.apache.camel.support.jsse.SSLContextParameters;
 
 /**
  * Represents the component that manages {@link UndertowEndpoint}.
diff --git a/parent/pom.xml b/parent/pom.xml
index 3581c92..f231348 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -817,6 +817,16 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-util</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-core</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
index 2cd95a1..8d68a82 100644
--- a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
+++ b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
@@ -17,18 +17,18 @@
 package org.apache.camel.catalog.maven;
 
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import groovy.grape.Grape;
 import groovy.lang.GroovyClassLoader;
 import org.apache.camel.catalog.CamelCatalog;
-import org.apache.camel.catalog.CollectionStringBuffer;
 import org.apache.camel.catalog.connector.CamelConnectorCatalog;
 
 import static org.apache.camel.catalog.maven.ComponentArtifactHelper.extractComponentJavaType;
@@ -154,19 +154,16 @@ public class DefaultMavenArtifactProvider implements MavenArtifactProvider {
                     String scheme = tree.get("scheme").textValue();
                     String javaType = tree.get("javaType").textValue();
                     String description = tree.get("description").textValue();
-                    Iterator<JsonNode> it = tree.withArray("labels").iterator();
 
-                    CollectionStringBuffer csb = new CollectionStringBuffer(",");
-                    while (it.hasNext()) {
-                        String text = it.next().textValue();
-                        csb.append(text);
-                    }
+                    String csb = StreamSupport.stream(tree.withArray("labels").spliterator(), false)
+                            .map(JsonNode::textValue)
+                            .collect(Collectors.joining(","));
 
                     if (log) {
                         System.out.println("Adding connector: " + name + " with scheme: " + scheme);
                     }
                     camelConnectorCatalog.addConnector(groupId, artifactId, version,
-                        name, scheme, javaType, description, csb.toString(), json[0], json[1], json[2]);
+                        name, scheme, javaType, description, csb, json[0], json[1], json[2]);
 
                     names.add(name);
                 } catch (Throwable e) {
diff --git a/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java b/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java
index 98630d4..4f00641 100644
--- a/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java
+++ b/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java
@@ -20,12 +20,12 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.Iterator;
 import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.camel.catalog.CollectionStringBuffer;
 import org.apache.camel.catalog.connector.CamelConnectorCatalog;
 
 import static org.apache.camel.catalog.CatalogHelper.loadText;
@@ -114,15 +114,12 @@ public class ConnectorCatalogNexusRepository extends BaseNexusRepository {
                 String scheme = tree.get("scheme").textValue();
                 String javaType = tree.get("javaType").textValue();
                 String description = tree.get("description").textValue();
-                Iterator<JsonNode> it = tree.withArray("labels").iterator();
 
-                CollectionStringBuffer csb = new CollectionStringBuffer(",");
-                while (it.hasNext()) {
-                    String text = it.next().textValue();
-                    csb.append(text);
-                }
+                String csb = StreamSupport.stream(tree.withArray("labels").spliterator(), false)
+                        .map(JsonNode::textValue)
+                        .collect(Collectors.joining(","));
 
-                addConnector(dto, name, scheme, javaType, description, csb.toString(), json[0], json[1], json[2]);
+                addConnector(dto, name, scheme, javaType, description, csb, json[0], json[1], json[2]);
             }
         } catch (IOException e) {
             logger.warn("Error scanning JAR for custom Camel connectors", e);
diff --git a/platforms/camel-catalog/pom.xml b/platforms/camel-catalog/pom.xml
index 73c9786..5b4068e 100644
--- a/platforms/camel-catalog/pom.xml
+++ b/platforms/camel-catalog/pom.xml
@@ -118,21 +118,26 @@
               <goal>copy-resources</goal>
             </goals>
             <configuration>
-              <outputDirectory>src/main/java/org/apache/camel/catalog</outputDirectory>
+              <outputDirectory>target/generated-sources/java/org/apache/camel/catalog</outputDirectory>
               <overwrite>true</overwrite>
               <resources>
                 <resource>
-                  <directory>../../camel-core/src/main/java/org/apache/camel/runtimecatalog</directory>
+                  <directory>../../camel-api/src/main/java/org/apache/camel/runtimecatalog</directory>
                   <!-- the following files are maintained in camel-core and not here, so they are copied over -->
                   <includes>
-                    <include>AbstractCamelCatalog.java</include>
-                    <include>CatalogHelper.java</include>
-                    <include>CollectionStringBuffer.java</include>
                     <include>EndpointValidationResult.java</include>
-                    <include>JSonSchemaHelper.java</include>
                     <include>JSonSchemaResolver.java</include>
                     <include>LanguageValidationResult.java</include>
-                    <include>SimpleValidationResult.java</include>
+                  </includes>
+                </resource>
+                <resource>
+                  <directory>../../camel-core/src/main/java/org/apache/camel/runtimecatalog/impl</directory>
+                  <!-- the following files are maintained in camel-core and not here, so they are copied over -->
+                  <includes>
+                    <include>AbstractCamelCatalog.java</include>
+                    <include>CamelContextJsonSchemaResolver.java</include>
+                    <include>CatalogHelper.java</include>
+                    <include>JSonSchemaHelper.java</include>
                     <include>SuggestionStrategy.java</include>
                     <include>TimePatternConverter.java</include>
                     <include>UnsafeUriCharactersEncoder.java</include>
@@ -159,27 +164,39 @@
         </executions>
         <configuration>
           <includes>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/CatalogHelper.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/SimpleValidationResult.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/TimePatternConverter.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java</include>
-            <include>${basedir}/src/main/java/org/apache/camel/catalog/URISupport.java</include>
+            <include>${basedir}/target/generated-sources/java/org/apache/camel/catalog/**.java</include>
           </includes>
           <replacements>
             <replacement>
+              <token>org.apache.camel.runtimecatalog.impl</token>
+              <value>org.apache.camel.catalog</value>
+            </replacement>
+            <replacement>
               <token>org.apache.camel.runtimecatalog</token>
               <value>org.apache.camel.catalog</value>
             </replacement>
           </replacements>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.7</version>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${basedir}/target/generated-sources/java</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
 
       <!-- shade caffeine cache for faster Camel and spi-annotations as needed by everybody -->
       <!-- shade json-simple for parsing Camel component JSon schema files -->
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogMBeanExporter.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogMBeanExporter.java
deleted file mode 100644
index c7a69df..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogMBeanExporter.java
+++ /dev/null
@@ -1,86 +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.catalog;
-
-import java.lang.management.ManagementFactory;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.MBeanServer;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-
-/**
- * MBean exporter to register the {@link CamelCatalog} in JMX.
- */
-@Deprecated
-public class CamelCatalogMBeanExporter {
-
-    public static final String MBEAN_NAME = "org.apache.camel.catalog:type=catalog,name=catalog";
-
-    private CamelCatalog catalog;
-    private ObjectName objectName;
-    private MBeanServer mBeanServer;
-
-    /**
-     * Initializes and exports the {@link CamelCatalog} in JMX using the domain name,
-     * which can be obtained using {@link #getObjectName()}.
-     *
-     * @throws Exception is thrown if error during registration
-     */
-    public void init() throws Exception {
-        catalog = new DefaultCamelCatalog();
-
-        if (objectName == null) {
-            objectName = getObjectName();
-        }
-
-        if (mBeanServer == null) {
-            mBeanServer = ManagementFactory.getPlatformMBeanServer();
-        }
-
-        if (mBeanServer != null) {
-            try {
-                // notice some mbean servers may register using a changed object name
-                ObjectInstance oi = mBeanServer.registerMBean(catalog, objectName);
-                if (oi != null && oi.getObjectName() != null) {
-                    objectName = oi.getObjectName();
-                }
-            } catch (InstanceAlreadyExistsException iaee) {
-                // Try to remove and re-register
-                mBeanServer.unregisterMBean(objectName);
-                mBeanServer.registerMBean(catalog, objectName);
-            }
-        }
-    }
-
-    /**
-     * Destroys and un-registers the {@link CamelCatalog} from JMX.
-     *
-     * @throws Exception is thrown if error during un-registration
-     */
-    public void destroy() throws Exception {
-        if (mBeanServer != null) {
-            if (objectName != null) {
-                mBeanServer.unregisterMBean(objectName);
-            }
-        }
-    }
-
-    protected ObjectName getObjectName() throws Exception {
-        return new ObjectName(MBEAN_NAME);
-    }
-
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java
deleted file mode 100644
index 2844ca9..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java
+++ /dev/null
@@ -1,57 +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.catalog;
-
-public class CollectionStringBuffer {
-    private final StringBuilder buffer = new StringBuilder();
-    private String separator;
-    private boolean first = true;
-
-    public CollectionStringBuffer() {
-        this(", ");
-    }
-
-    public CollectionStringBuffer(String separator) {
-        this.separator = separator;
-    }
-
-    @Override
-    public String toString() {
-        return buffer.toString();
-    }
-
-    public void append(Object value) {
-        if (first) {
-            first = false;
-        } else {
-            buffer.append(separator);
-        }
-        buffer.append(value);
-    }
-
-    public String getSeparator() {
-        return separator;
-    }
-
-    public void setSeparator(String separator) {
-        this.separator = separator;
-    }
-
-    public boolean isEmpty() {
-        return first;
-    }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
deleted file mode 100644
index 718b9a3..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
+++ /dev/null
@@ -1,488 +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.catalog;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.apache.camel.catalog.URISupport.isEmpty;
-
-/**
- * Details result of validating endpoint uri.
- */
-public class EndpointValidationResult implements Serializable {
-
-    private final String uri;
-    private int errors;
-
-    // general
-    private String syntaxError;
-    private String unknownComponent;
-    private String incapable;
-
-    // options
-    private Set<String> unknown;
-    private Map<String, String[]> unknownSuggestions;
-    private Set<String> lenient;
-    private Set<String> notConsumerOnly;
-    private Set<String> notProducerOnly;
-    private Set<String> required;
-    private Set<String> deprecated;
-    private Map<String, String> invalidEnum;
-    private Map<String, String[]> invalidEnumChoices;
-    private Map<String, String[]> invalidEnumSuggestions;
-    private Map<String, String> invalidReference;
-    private Map<String, String> invalidBoolean;
-    private Map<String, String> invalidInteger;
-    private Map<String, String> invalidNumber;
-    private Map<String, String> defaultValues;
-
-    public EndpointValidationResult() {
-        this(null);
-    }
-
-    public EndpointValidationResult(String uri) {
-        this.uri = uri;
-    }
-
-    public String getUri() {
-        return uri;
-    }
-
-    public boolean hasErrors() {
-        return errors > 0;
-    }
-
-    public int getNumberOfErrors() {
-        return errors;
-    }
-
-    public boolean isSuccess() {
-        boolean ok = syntaxError == null && unknownComponent == null && incapable == null
-                && unknown == null && required == null;
-        if (ok) {
-            ok = notConsumerOnly == null && notProducerOnly == null;
-        }
-        if (ok) {
-            ok = invalidEnum == null && invalidEnumChoices == null && invalidReference == null
-                && invalidBoolean == null && invalidInteger == null && invalidNumber == null;
-        }
-        return ok;
-    }
-
-    public void addSyntaxError(String syntaxError) {
-        this.syntaxError = syntaxError;
-        errors++;
-    }
-
-    public void addIncapable(String uri) {
-        this.incapable = uri;
-        errors++;
-    }
-
-    public void addUnknownComponent(String name) {
-        this.unknownComponent = name;
-        errors++;
-    }
-
-    public void addUnknown(String name) {
-        if (unknown == null) {
-            unknown = new LinkedHashSet<>();
-        }
-        if (!unknown.contains(name)) {
-            unknown.add(name);
-            errors++;
-        }
-    }
-
-    public void addUnknownSuggestions(String name, String[] suggestions) {
-        if (unknownSuggestions == null) {
-            unknownSuggestions = new LinkedHashMap<>();
-        }
-        unknownSuggestions.put(name, suggestions);
-    }
-
-    public void addLenient(String name) {
-        if (lenient == null) {
-            lenient = new LinkedHashSet<>();
-        }
-        if (!lenient.contains(name)) {
-            lenient.add(name);
-        }
-    }
-
-    public void addRequired(String name) {
-        if (required == null) {
-            required = new LinkedHashSet<>();
-        }
-        if (!required.contains(name)) {
-            required.add(name);
-            errors++;
-        }
-    }
-
-    public void addDeprecated(String name) {
-        if (deprecated == null) {
-            deprecated = new LinkedHashSet<>();
-        }
-        if (!deprecated.contains(name)) {
-            deprecated.add(name);
-        }
-    }
-
-    public void addInvalidEnum(String name, String value) {
-        if (invalidEnum == null) {
-            invalidEnum = new LinkedHashMap<>();
-        }
-        if (!invalidEnum.containsKey(name)) {
-            invalidEnum.put(name, value);
-            errors++;
-        }
-    }
-
-    public void addInvalidEnumChoices(String name, String[] choices) {
-        if (invalidEnumChoices == null) {
-            invalidEnumChoices = new LinkedHashMap<>();
-        }
-        invalidEnumChoices.put(name, choices);
-    }
-
-    public void addInvalidEnumSuggestions(String name, String[] suggestions) {
-        if (invalidEnumSuggestions == null) {
-            invalidEnumSuggestions = new LinkedHashMap<>();
-        }
-        invalidEnumSuggestions.put(name, suggestions);
-    }
-
-    public void addInvalidReference(String name, String value) {
-        if (invalidReference == null) {
-            invalidReference = new LinkedHashMap<>();
-        }
-        if (!invalidReference.containsKey(name)) {
-            invalidReference.put(name, value);
-            errors++;
-        }
-    }
-
-    public void addInvalidBoolean(String name, String value) {
-        if (invalidBoolean == null) {
-            invalidBoolean = new LinkedHashMap<>();
-        }
-        if (!invalidBoolean.containsKey(name)) {
-            invalidBoolean.put(name, value);
-            errors++;
-        }
-    }
-
-    public void addInvalidInteger(String name, String value) {
-        if (invalidInteger == null) {
-            invalidInteger = new LinkedHashMap<>();
-        }
-        if (!invalidInteger.containsKey(name)) {
-            invalidInteger.put(name, value);
-            errors++;
-        }
-    }
-
-    public void addInvalidNumber(String name, String value) {
-        if (invalidNumber == null) {
-            invalidNumber = new LinkedHashMap<>();
-        }
-        if (!invalidNumber.containsKey(name)) {
-            invalidNumber.put(name, value);
-            errors++;
-        }
-    }
-
-    public void addDefaultValue(String name, String value)  {
-        if (defaultValues == null) {
-            defaultValues = new LinkedHashMap<>();
-        }
-        defaultValues.put(name, value);
-    }
-
-    public void addNotConsumerOnly(String name) {
-        if (notConsumerOnly == null) {
-            notConsumerOnly = new LinkedHashSet<>();
-        }
-        if (!notConsumerOnly.contains(name)) {
-            notConsumerOnly.add(name);
-            errors++;
-        }
-    }
-
-    public void addNotProducerOnly(String name) {
-        if (notProducerOnly == null) {
-            notProducerOnly = new LinkedHashSet<>();
-        }
-        if (!notProducerOnly.contains(name)) {
-            notProducerOnly.add(name);
-            errors++;
-        }
-    }
-
-    public String getSyntaxError() {
-        return syntaxError;
-    }
-
-    public String getIncapable() {
-        return incapable;
-    }
-
-    public Set<String> getUnknown() {
-        return unknown;
-    }
-
-    public Set<String> getLenient() {
-        return lenient;
-    }
-
-    public Map<String, String[]> getUnknownSuggestions() {
-        return unknownSuggestions;
-    }
-
-    public String getUnknownComponent() {
-        return unknownComponent;
-    }
-
-    public Set<String> getRequired() {
-        return required;
-    }
-
-    public Set<String> getDeprecated() {
-        return deprecated;
-    }
-
-    public Map<String, String> getInvalidEnum() {
-        return invalidEnum;
-    }
-
-    public Map<String, String[]> getInvalidEnumChoices() {
-        return invalidEnumChoices;
-    }
-
-    public List<String> getEnumChoices(String optionName) {
-        if (invalidEnumChoices != null) {
-            String[] enums = invalidEnumChoices.get(optionName);
-            if (enums != null) {
-                return Arrays.asList(enums);
-            }
-        }
-
-        return Collections.emptyList();
-    }
-
-    public Map<String, String> getInvalidReference() {
-        return invalidReference;
-    }
-
-    public Map<String, String> getInvalidBoolean() {
-        return invalidBoolean;
-    }
-
-    public Map<String, String> getInvalidInteger() {
-        return invalidInteger;
-    }
-
-    public Map<String, String> getInvalidNumber() {
-        return invalidNumber;
-    }
-
-    public Map<String, String> getDefaultValues() {
-        return defaultValues;
-    }
-
-    public Set<String> getNotConsumerOnly() {
-        return notConsumerOnly;
-    }
-
-    public Set<String> getNotProducerOnly() {
-        return notProducerOnly;
-    }
-
-    /**
-     * A human readable summary of the validation errors.
-     *
-     * @param includeHeader    whether to include a header
-     * @return the summary, or <tt>null</tt> if no validation errors
-     */
-    public String summaryErrorMessage(boolean includeHeader) {
-        return summaryErrorMessage(includeHeader, true);
-    }
-
-    /**
-     * A human readable summary of the validation errors.
-     *
-     * @param includeHeader    whether to include a header
-     * @param ignoreDeprecated whether to ignore deprecated options in use as an error or not
-     * @return the summary, or <tt>null</tt> if no validation errors
-     */
-    public String summaryErrorMessage(boolean includeHeader, boolean ignoreDeprecated) {
-        boolean ok = isSuccess();
-
-        // special check if we should ignore deprecated options being used
-        if (ok && !ignoreDeprecated) {
-            ok = deprecated == null;
-        }
-
-        if (ok) {
-            return null;
-        }
-
-        if (incapable != null) {
-            return "\tIncapable of parsing uri: " + incapable;
-        } else if (syntaxError != null) {
-            return "\tSyntax error: " + syntaxError;
-        } else if (unknownComponent != null) {
-            return "\tUnknown component: " + unknownComponent;
-        }
-
-        // for each invalid option build a reason message
-        Map<String, String> options = new LinkedHashMap<>();
-        if (unknown != null) {
-            for (String name : unknown) {
-                if (unknownSuggestions != null && unknownSuggestions.containsKey(name)) {
-                    String[] suggestions = unknownSuggestions.get(name);
-                    if (suggestions != null && suggestions.length > 0) {
-                        String str = Arrays.asList(suggestions).toString();
-                        options.put(name, "Unknown option. Did you mean: " + str);
-                    } else {
-                        options.put(name, "Unknown option");
-                    }
-                } else {
-                    options.put(name, "Unknown option");
-                }
-            }
-        }
-        if (notConsumerOnly != null) {
-            for (String name : notConsumerOnly) {
-                options.put(name, "Option not applicable in consumer only mode");
-            }
-        }
-        if (notProducerOnly != null) {
-            for (String name : notProducerOnly) {
-                options.put(name, "Option not applicable in producer only mode");
-            }
-        }
-        if (required != null) {
-            for (String name : required) {
-                options.put(name, "Missing required option");
-            }
-        }
-        if (deprecated != null) {
-            for (String name : deprecated) {
-                options.put(name, "Deprecated option");
-            }
-        }
-        if (invalidEnum != null) {
-            for (Map.Entry<String, String> entry : invalidEnum.entrySet()) {
-                String name = entry.getKey();
-                String[] choices = invalidEnumChoices.get(name);
-                String defaultValue = defaultValues != null ? defaultValues.get(entry.getKey()) : null;
-                String str = Arrays.asList(choices).toString();
-                String msg = "Invalid enum value: " + entry.getValue() + ". Possible values: " + str;
-                if (invalidEnumSuggestions != null) {
-                    String[] suggestions = invalidEnumSuggestions.get(name);
-                    if (suggestions != null && suggestions.length > 0) {
-                        str = Arrays.asList(suggestions).toString();
-                        msg += ". Did you mean: " + str;
-                    }
-                }
-                if (defaultValue != null) {
-                    msg += ". Default value: " + defaultValue;
-                }
-
-                options.put(entry.getKey(), msg);
-            }
-        }
-        if (invalidReference != null) {
-            for (Map.Entry<String, String> entry : invalidReference.entrySet()) {
-                boolean empty = isEmpty(entry.getValue());
-                if (empty) {
-                    options.put(entry.getKey(), "Empty reference value");
-                } else if (!entry.getValue().startsWith("#")) {
-                    options.put(entry.getKey(), "Invalid reference value: " + entry.getValue() + " must start with #");
-                } else {
-                    options.put(entry.getKey(), "Invalid reference value: " + entry.getValue());
-                }
-            }
-        }
-        if (invalidBoolean != null) {
-            for (Map.Entry<String, String> entry : invalidBoolean.entrySet()) {
-                boolean empty = isEmpty(entry.getValue());
-                if (empty) {
-                    options.put(entry.getKey(), "Empty boolean value");
-                } else {
-                    options.put(entry.getKey(), "Invalid boolean value: " + entry.getValue());
-                }
-            }
-        }
-        if (invalidInteger != null) {
-            for (Map.Entry<String, String> entry : invalidInteger.entrySet()) {
-                boolean empty = isEmpty(entry.getValue());
-                if (empty) {
-                    options.put(entry.getKey(), "Empty integer value");
-                } else {
-                    options.put(entry.getKey(), "Invalid integer value: " + entry.getValue());
-                }
-            }
-        }
-        if (invalidNumber != null) {
-            for (Map.Entry<String, String> entry : invalidNumber.entrySet()) {
-                boolean empty = isEmpty(entry.getValue());
-                if (empty) {
-                    options.put(entry.getKey(), "Empty number value");
-                } else {
-                    options.put(entry.getKey(), "Invalid number value: " + entry.getValue());
-                }
-            }
-        }
-
-        // build a table with the error summary nicely formatted
-        // lets use 24 as min length
-        int maxLen = 24;
-        for (String key : options.keySet()) {
-            maxLen = Math.max(maxLen, key.length());
-        }
-        String format = "%" + maxLen + "s    %s";
-
-        // build the human error summary
-        StringBuilder sb = new StringBuilder();
-        if (includeHeader) {
-            sb.append("Endpoint validator error\n");
-            sb.append("---------------------------------------------------------------------------------------------------------------------------------------\n");
-            sb.append("\n");
-        }
-        if (uri != null) {
-            sb.append("\t").append(uri).append("\n");
-        } else {
-            sb.append("\n");
-        }
-        for (Map.Entry<String, String> option : options.entrySet()) {
-            String out = String.format(format, option.getKey(), option.getValue());
-            sb.append("\n\t").append(out);
-        }
-
-        return sb.toString();
-    }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
deleted file mode 100644
index 9bf09cc..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
+++ /dev/null
@@ -1,64 +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.catalog;
-
-/**
- * Pluggable resolver to load JSon schema files for components, data formats, languages etc.
- */
-public interface JSonSchemaResolver {
-
-    /**
-     * Returns the component information as JSon format.
-     *
-     * @param name the component name
-     * @return component details in JSon
-     */
-    String getComponentJSonSchema(String name);
-
-    /**
-     * Returns the data format information as JSon format.
-     *
-     * @param name the data format name
-     * @return data format details in JSon
-     */
-    String getDataFormatJSonSchema(String name);
-
-    /**
-     * Returns the language information as JSon format.
-     *
-     * @param name the language name
-     * @return language details in JSon
-     */
-    String getLanguageJSonSchema(String name);
-
-    /**
-     * Returns the other (miscellaneous) information as JSon format.
-     *
-     * @param name the other (miscellaneous) name
-     * @return other (miscellaneous) details in JSon
-     */
-    String getOtherJSonSchema(String name);
-
-    /**
-     * Returns the model information as JSon format.
-     *
-     * @param name the model name
-     * @return model details in JSon
-     */
-    String getModelJSonSchema(String name);
-
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java
deleted file mode 100644
index 4a977eb..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java
+++ /dev/null
@@ -1,65 +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.catalog;
-
-import java.io.Serializable;
-
-/**
- * Validation result of parsing a language expression or predicate
- */
-public class LanguageValidationResult implements Serializable {
-    private final String text;
-    private String error;
-    private String shortError;
-    private int index;
-
-    public LanguageValidationResult(String text) {
-        this.text = text;
-    }
-
-    public String getText() {
-        return text;
-    }
-
-    public boolean isSuccess() {
-        return error == null;
-    }
-
-    public void setError(String error) {
-        this.error = error;
-    }
-
-    public String getError() {
-        return error;
-    }
-
-    public String getShortError() {
-        return shortError;
-    }
-
-    public void setShortError(String shortError) {
-        this.shortError = shortError;
-    }
-
-    public int getIndex() {
-        return index;
-    }
-
-    public void setIndex(int index) {
-        this.index = index;
-    }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
deleted file mode 100644
index 057d372..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
+++ /dev/null
@@ -1,34 +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.catalog;
-
-import java.util.Set;
-
-/**
- * Strategy to provide suggestions for unknown endpoint options
- */
-public interface SuggestionStrategy {
-
-    /**
-     * Provides a list of valid option names for a did you mean function.
-     *
-     * @param names         valid names
-     * @param unknownOption unknown option name
-     * @return a list of suggested names (did you mean)
-     */
-    String[] suggestEndpointOptions(Set<String> names, String unknownOption);
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/URISupport.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
deleted file mode 100644
index f2079c1..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
+++ /dev/null
@@ -1,392 +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.catalog;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Copied from org.apache.camel.util.URISupport
- */
-public final class URISupport {
-
-    public static final String RAW_TOKEN_START = "RAW(";
-    public static final String RAW_TOKEN_END = ")";
-
-    private static final String CHARSET = "UTF-8";
-
-    private URISupport() {
-        // Helper class
-    }
-
-    /**
-     * Normalizes the URI so unsafe characters is encoded
-     *
-     * @param uri the input uri
-     * @return as URI instance
-     * @throws URISyntaxException is thrown if syntax error in the input uri
-     */
-    public static URI normalizeUri(String uri) throws URISyntaxException {
-        return new URI(UnsafeUriCharactersEncoder.encode(uri, true));
-    }
-
-    public static Map<String, Object> extractProperties(Map<String, Object> properties, String optionPrefix) {
-        Map<String, Object> rc = new LinkedHashMap<>(properties.size());
-
-        for (Iterator<Map.Entry<String, Object>> it = properties.entrySet().iterator(); it.hasNext();) {
-            Map.Entry<String, Object> entry = it.next();
-            String name = entry.getKey();
-            if (name.startsWith(optionPrefix)) {
-                Object value = properties.get(name);
-                name = name.substring(optionPrefix.length());
-                rc.put(name, value);
-                it.remove();
-            }
-        }
-
-        return rc;
-    }
-
-    /**
-     * Strips the query parameters from the uri
-     *
-     * @param uri  the uri
-     * @return the uri without the query parameter
-     */
-    public static String stripQuery(String uri) {
-        int idx = uri.indexOf('?');
-        if (idx > -1) {
-            uri = uri.substring(0, idx);
-        }
-        return uri;
-    }
-
-    /**
-     * Parses the query parameters of the uri (eg the query part).
-     *
-     * @param uri the uri
-     * @return the parameters, or an empty map if no parameters (eg never null)
-     * @throws URISyntaxException is thrown if uri has invalid syntax.
-     */
-    public static Map<String, Object> parseParameters(URI uri) throws URISyntaxException {
-        String query = uri.getQuery();
-        if (query == null) {
-            String schemeSpecificPart = uri.getSchemeSpecificPart();
-            int idx = schemeSpecificPart.indexOf('?');
-            if (idx < 0) {
-                // return an empty map
-                return new LinkedHashMap<>(0);
-            } else {
-                query = schemeSpecificPart.substring(idx + 1);
-            }
-        } else {
-            query = stripPrefix(query, "?");
-        }
-        return parseQuery(query);
-    }
-
-    /**
-     * Strips the prefix from the value.
-     * <p/>
-     * Returns the value as-is if not starting with the prefix.
-     *
-     * @param value  the value
-     * @param prefix the prefix to remove from value
-     * @return the value without the prefix
-     */
-    public static String stripPrefix(String value, String prefix) {
-        if (value != null && value.startsWith(prefix)) {
-            return value.substring(prefix.length());
-        }
-        return value;
-    }
-
-    /**
-     * Parses the query part of the uri (eg the parameters).
-     * <p/>
-     * The URI parameters will by default be URI encoded. However you can define a parameter
-     * values with the syntax: <tt>key=RAW(value)</tt> which tells Camel to not encode the value,
-     * and use the value as is (eg key=value) and the value has <b>not</b> been encoded.
-     *
-     * @param uri the uri
-     * @return the parameters, or an empty map if no parameters (eg never null)
-     * @throws URISyntaxException is thrown if uri has invalid syntax.
-     * @see #RAW_TOKEN_START
-     * @see #RAW_TOKEN_END
-     */
-    public static Map<String, Object> parseQuery(String uri) throws URISyntaxException {
-        return parseQuery(uri, false);
-    }
-
-    /**
-     * Parses the query part of the uri (eg the parameters).
-     * <p/>
-     * The URI parameters will by default be URI encoded. However you can define a parameter
-     * values with the syntax: <tt>key=RAW(value)</tt> which tells Camel to not encode the value,
-     * and use the value as is (eg key=value) and the value has <b>not</b> been encoded.
-     *
-     * @param uri the uri
-     * @param useRaw whether to force using raw values
-     * @return the parameters, or an empty map if no parameters (eg never null)
-     * @throws URISyntaxException is thrown if uri has invalid syntax.
-     * @see #RAW_TOKEN_START
-     * @see #RAW_TOKEN_END
-     */
-    public static Map<String, Object> parseQuery(String uri, boolean useRaw) throws URISyntaxException {
-        // must check for trailing & as the uri.split("&") will ignore those
-        if (uri != null && uri.endsWith("&")) {
-            throw new URISyntaxException(uri, "Invalid uri syntax: Trailing & marker found. "
-                    + "Check the uri and remove the trailing & marker.");
-        }
-
-        if (isEmpty(uri)) {
-            // return an empty map
-            return new LinkedHashMap<>(0);
-        }
-
-        // need to parse the uri query parameters manually as we cannot rely on splitting by &,
-        // as & can be used in a parameter value as well.
-
-        try {
-            // use a linked map so the parameters is in the same order
-            Map<String, Object> rc = new LinkedHashMap<>();
-
-            boolean isKey = true;
-            boolean isValue = false;
-            boolean isRaw = false;
-            StringBuilder key = new StringBuilder();
-            StringBuilder value = new StringBuilder();
-
-            // parse the uri parameters char by char
-            for (int i = 0; i < uri.length(); i++) {
-                // current char
-                char ch = uri.charAt(i);
-                // look ahead of the next char
-                char next;
-                if (i <= uri.length() - 2) {
-                    next = uri.charAt(i + 1);
-                } else {
-                    next = '\u0000';
-                }
-
-                // are we a raw value
-                isRaw = value.toString().startsWith(RAW_TOKEN_START);
-
-                // if we are in raw mode, then we keep adding until we hit the end marker
-                if (isRaw) {
-                    if (isKey) {
-                        key.append(ch);
-                    } else if (isValue) {
-                        value.append(ch);
-                    }
-
-                    // we only end the raw marker if its )& or at the end of the value
-
-                    boolean end = ch == RAW_TOKEN_END.charAt(0) && (next == '&' || next == '\u0000');
-                    if (end) {
-                        // raw value end, so add that as a parameter, and reset flags
-                        addParameter(key.toString(), value.toString(), rc, useRaw || isRaw);
-                        key.setLength(0);
-                        value.setLength(0);
-                        isKey = true;
-                        isValue = false;
-                        isRaw = false;
-                        // skip to next as we are in raw mode and have already added the value
-                        i++;
-                    }
-                    continue;
-                }
-
-                // if its a key and there is a = sign then the key ends and we are in value mode
-                if (isKey && ch == '=') {
-                    isKey = false;
-                    isValue = true;
-                    isRaw = false;
-                    continue;
-                }
-
-                // the & denote parameter is ended
-                if (ch == '&') {
-                    // parameter is ended, as we hit & separator
-                    String aKey = key.toString();
-                    // the key may be a placeholder of options which we then do not know what is
-                    boolean validKey = !aKey.startsWith("{{") && !aKey.endsWith("}}");
-                    if (validKey) {
-                        addParameter(aKey, value.toString(), rc, useRaw || isRaw);
-                    }
-                    key.setLength(0);
-                    value.setLength(0);
-                    isKey = true;
-                    isValue = false;
-                    isRaw = false;
-                    continue;
-                }
-
-                // regular char so add it to the key or value
-                if (isKey) {
-                    key.append(ch);
-                } else if (isValue) {
-                    value.append(ch);
-                }
-            }
-
-            // any left over parameters, then add that
-            if (key.length() > 0) {
-                String aKey = key.toString();
-                // the key may be a placeholder of options which we then do not know what is
-                boolean validKey = !aKey.startsWith("{{") && !aKey.endsWith("}}");
-                if (validKey) {
-                    addParameter(aKey, value.toString(), rc, useRaw || isRaw);
-                }
-            }
-
-            return rc;
-
-        } catch (UnsupportedEncodingException e) {
-            URISyntaxException se = new URISyntaxException(e.toString(), "Invalid encoding");
-            se.initCause(e);
-            throw se;
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private static void addParameter(String name, String value, Map<String, Object> map, boolean isRaw) throws UnsupportedEncodingException {
-        name = URLDecoder.decode(name, CHARSET);
-        if (!isRaw) {
-            // need to replace % with %25
-            value = URLDecoder.decode(value.replaceAll("%", "%25"), CHARSET);
-        }
-
-        // does the key already exist?
-        if (map.containsKey(name)) {
-            // yes it does, so make sure we can support multiple values, but using a list
-            // to hold the multiple values
-            Object existing = map.get(name);
-            List<String> list;
-            if (existing instanceof List) {
-                list = (List<String>) existing;
-            } else {
-                // create a new list to hold the multiple values
-                list = new ArrayList<>();
-                String s = existing != null ? existing.toString() : null;
-                if (s != null) {
-                    list.add(s);
-                }
-            }
-            list.add(value);
-            map.put(name, list);
-        } else {
-            map.put(name, value);
-        }
-    }
-
-    /**
-     * Assembles a query from the given map.
-     *
-     * @param options  the map with the options (eg key/value pairs)
-     * @param ampersand to use & for Java code, and &amp; for XML
-     * @return a query string with <tt>key1=value&key2=value2&...</tt>, or an empty string if there is no options.
-     * @throws URISyntaxException is thrown if uri has invalid syntax.
-     */
-    public static String createQueryString(Map<String, String> options, String ampersand, boolean encode) throws URISyntaxException {
-        try {
-            if (options.size() > 0) {
-                StringBuilder rc = new StringBuilder();
-                boolean first = true;
-                for (Object o : options.keySet()) {
-                    if (first) {
-                        first = false;
-                    } else {
-                        rc.append(ampersand);
-                    }
-
-                    String key = (String) o;
-                    Object value = options.get(key);
-
-                    // use the value as a String
-                    String s = value != null ? value.toString() : null;
-                    appendQueryStringParameter(key, s, rc, encode);
-                }
-                return rc.toString();
-            } else {
-                return "";
-            }
-        } catch (UnsupportedEncodingException e) {
-            URISyntaxException se = new URISyntaxException(e.toString(), "Invalid encoding");
-            se.initCause(e);
-            throw se;
-        }
-    }
-
-    private static void appendQueryStringParameter(String key, String value, StringBuilder rc, boolean encode) throws UnsupportedEncodingException {
-        if (encode) {
-            rc.append(URLEncoder.encode(key, CHARSET));
-        } else {
-            rc.append(key);
-        }
-        // only append if value is not null
-        if (value != null) {
-            rc.append("=");
-            if (value.startsWith(RAW_TOKEN_START) && value.endsWith(RAW_TOKEN_END)) {
-                // do not encode RAW parameters
-                rc.append(value);
-            } else {
-                if (encode) {
-                    rc.append(URLEncoder.encode(value, CHARSET));
-                } else {
-                    rc.append(value);
-                }
-            }
-        }
-    }
-
-    /**
-     * Tests whether the value is <tt>null</tt> or an empty string.
-     *
-     * @param value  the value, if its a String it will be tested for text length as well
-     * @return true if empty
-     */
-    public static boolean isEmpty(Object value) {
-        return !isNotEmpty(value);
-    }
-
-    /**
-     * Tests whether the value is <b>not</b> <tt>null</tt> or an empty string.
-     *
-     * @param value  the value, if its a String it will be tested for text length as well
-     * @return true if <b>not</b> empty
-     */
-    public static boolean isNotEmpty(Object value) {
-        if (value == null) {
-            return false;
-        } else if (value instanceof String) {
-            String text = (String) value;
-            return text.trim().length() > 0;
-        } else {
-            return true;
-        }
-    }
-
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
deleted file mode 100644
index 04d7753..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
+++ /dev/null
@@ -1,206 +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.catalog;
-
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Encoder for unsafe URI characters.
- * <p/>
- * A good source for details is <a href="http://en.wikipedia.org/wiki/Url_encode">wikipedia url encode</a> article.
- */
-public final class UnsafeUriCharactersEncoder {
-    private static BitSet unsafeCharactersRfc1738;
-    private static BitSet unsafeCharactersHttp;
-    private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C',
-        'D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f'};
-    private static final Pattern RAW_PATTERN = Pattern.compile("RAW\\([^\\)]+\\)");
-
-    static {
-        unsafeCharactersRfc1738 = new BitSet(256);
-        unsafeCharactersRfc1738.set(' ');
-        unsafeCharactersRfc1738.set('"');
-        unsafeCharactersRfc1738.set('<');
-        unsafeCharactersRfc1738.set('>');
-        unsafeCharactersRfc1738.set('#');
-        unsafeCharactersRfc1738.set('%');
-        unsafeCharactersRfc1738.set('{');
-        unsafeCharactersRfc1738.set('}');
-        unsafeCharactersRfc1738.set('|');
-        unsafeCharactersRfc1738.set('\\');
-        unsafeCharactersRfc1738.set('^');
-        unsafeCharactersRfc1738.set('~');
-        unsafeCharactersRfc1738.set('[');
-        unsafeCharactersRfc1738.set(']');
-        unsafeCharactersRfc1738.set('`');
-    }
-
-    static {
-        unsafeCharactersHttp = new BitSet(256);
-        unsafeCharactersHttp.set(' ');
-        unsafeCharactersHttp.set('"');
-        unsafeCharactersHttp.set('<');
-        unsafeCharactersHttp.set('>');
-        unsafeCharactersHttp.set('#');
-        unsafeCharactersHttp.set('%');
-        unsafeCharactersHttp.set('{');
-        unsafeCharactersHttp.set('}');
-        unsafeCharactersHttp.set('|');
-        unsafeCharactersHttp.set('\\');
-        unsafeCharactersHttp.set('^');
-        unsafeCharactersHttp.set('~');
-        unsafeCharactersHttp.set('`');
-    }
-
-    private UnsafeUriCharactersEncoder() {
-        // util class
-    }
-
-    public static String encode(String s) {
-        return encode(s, unsafeCharactersRfc1738);
-    }
-
-    public static String encodeHttpURI(String s) {
-        return encode(s, unsafeCharactersHttp);
-    }
-
-    public static String encode(String s, BitSet unsafeCharacters) {
-        return encode(s, unsafeCharacters, false);
-    }
-
-    public static String encode(String s, boolean checkRaw) {
-        return encode(s, unsafeCharactersRfc1738, checkRaw);
-    }
-
-    public static String encodeHttpURI(String s, boolean checkRaw) {
-        return encode(s, unsafeCharactersHttp, checkRaw);
-    }
-
-    private static List<Pair> checkRAW(String s) {
-        Matcher matcher = RAW_PATTERN.matcher(s);
-        List<Pair> answer = new ArrayList<>();
-        // Check all occurrences
-        while (matcher.find()) {
-            answer.add(new Pair(matcher.start(), matcher.end()));
-        }
-        return answer;
-    }
-
-    private static boolean isRaw(int index, List<Pair> pairs) {
-        for (Pair pair : pairs) {
-            if (index < pair.left) {
-                return false;
-            } else {
-                if (index >= pair.left) {
-                    if (index <= pair.right) {
-                        return true;
-                    } else {
-                        continue;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private static class Pair {
-        int left;
-        int right;
-
-        Pair(int left, int right) {
-            this.left = left;
-            this.right = right;
-        }
-    }
-
-    // Just skip the encode for isRAW part
-    public static String encode(String s, BitSet unsafeCharacters, boolean checkRaw) {
-        List<Pair> rawPairs;
-        if (checkRaw) {
-            rawPairs = checkRAW(s);
-        } else {
-            rawPairs = new ArrayList<>();
-        }
-
-        int n = s == null ? 0 : s.length();
-        if (n == 0) {
-            return s;
-        }
-
-        // First check whether we actually need to encode
-        char chars[] = s.toCharArray();
-        for (int i = 0;;) {
-            // just deal with the ascii character
-            if (chars[i] > 0 && chars[i] < 128) {
-                if (unsafeCharacters.get(chars[i])) {
-                    break;
-                }
-            }
-            if (++i >= chars.length) {
-                return s;
-            }
-        }
-
-        // okay there are some unsafe characters so we do need to encode
-        // see details at: http://en.wikipedia.org/wiki/Url_encode
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < chars.length; i++) {
-            char ch = chars[i];
-            if (ch > 0 && ch < 128 && unsafeCharacters.get(ch)) {
-                // special for % sign as it may be a decimal encoded value
-                if (ch == '%') {
-                    char next = i + 1 < chars.length ? chars[i + 1] : ' ';
-                    char next2 = i + 2 < chars.length ? chars[i + 2] : ' ';
-
-                    if (isHexDigit(next) && isHexDigit(next2) && !isRaw(i, rawPairs)) {
-                        // its already encoded (decimal encoded) so just append as is
-                        sb.append(ch);
-                    } else {
-                        // must escape then, as its an unsafe character
-                        appendEscape(sb, (byte) ch);
-                    }
-                } else {
-                    // must escape then, as its an unsafe character
-                    appendEscape(sb, (byte) ch);
-                }
-            } else {
-                sb.append(ch);
-            }
-        }
-        return sb.toString();
-    }
-
-    private static void appendEscape(StringBuilder sb, byte b) {
-        sb.append('%');
-        sb.append(HEX_DIGITS[(b >> 4) & 0x0f]);
-        sb.append(HEX_DIGITS[(b >> 0) & 0x0f]);
-    }
-
-    private static boolean isHexDigit(char ch) {
-        for (char hex : HEX_DIGITS) {
-            if (hex == ch) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java
index 419bad8..8833557 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java
@@ -24,7 +24,7 @@ import java.util.Map;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
 
-import org.apache.camel.util.CamelContextStatDump;
+import org.apache.camel.support.dump.CamelContextStatDump;
 
 import static org.apache.camel.util.ObjectHelper.isEmpty;
 
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java
index 49bc4c1..0a06288 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java
@@ -23,7 +23,7 @@ import java.util.Date;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
 
-import org.apache.camel.util.RouteStatDump;
+import org.apache.camel.support.dump.RouteStatDump;
 
 import static org.apache.camel.util.ObjectHelper.isEmpty;
 
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java
index 6cafc2c..3b388d4 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java
@@ -21,8 +21,8 @@ import java.io.StringReader;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
 
-import org.apache.camel.util.ProcessorStatDump;
-import org.apache.camel.util.RouteStatDump;
+import org.apache.camel.support.dump.ProcessorStatDump;
+import org.apache.camel.support.dump.RouteStatDump;
 
 /**
  * Command to display profile information about a Camel route.
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index 91748ec..dadf55a 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -269,6 +269,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-apns</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -2881,6 +2886,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-util</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-velocity</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/pom.xml b/pom.xml
index ae11fdf..3b6723c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -145,6 +145,8 @@
     <module>etc</module>
     <module>bom</module>
     <module>buildingtools</module>
+    <module>camel-util</module>
+    <module>camel-api</module>
     <module>camel-core</module>
     <module>components</module>
     <module>archetypes</module>


[camel] 21/44: [api] Improve api cohesiveness

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 5ad8fe84f7c93216dc7b034ae61f4e966fd42c2d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Sep 27 20:32:55 2018 +0200

    [api] Improve api cohesiveness
---
 .../main/java/org/apache/camel/CamelContext.java   | 307 ---------------------
 .../camel/builder/ErrorHandlerBuilderRef.java      |   8 +-
 .../camel/builder/ErrorHandlerBuilderSupport.java  |   4 +-
 .../extension/ComponentVerifierExtension.java      |  12 +-
 .../ComponentVerifierExtensionHelper.java          |  29 +-
 .../camel/converter/TimePatternConverter.java      | 113 +-------
 .../camel/health/HealthCheckConfiguration.java     |   6 +-
 .../org/apache/camel/impl/BreakpointSupport.java   |   8 +-
 .../org/apache/camel/impl/ConditionSupport.java    |   4 +-
 .../org/apache/camel/impl/DefaultCamelContext.java | 160 ++---------
 .../org/apache/camel/impl/DefaultDebugger.java     |  16 +-
 .../apache/camel/impl/DefaultProcessorFactory.java |   6 +-
 .../org/apache/camel/impl/DefaultRouteContext.java |   5 +-
 .../apache/camel/impl/DefaultRouteController.java  |  12 +-
 .../camel/impl/DefaultRouteStartupOrder.java       |   6 +-
 .../apache/camel/impl/DefaultShutdownStrategy.java |  18 +-
 .../camel/impl/DurationRoutePolicyFactory.java     |   4 +-
 .../java/org/apache/camel/impl/RouteService.java   |   6 +-
 .../camel/impl/SupervisingRouteController.java     |   7 +-
 .../apache/camel/impl/TypedProcessorFactory.java   |   5 +-
 .../impl/cloud/ServiceRegistrationRoutePolicy.java |   4 +-
 .../ServiceRegistrationRoutePolicyFactory.java     |   4 +-
 .../impl/cluster/ClusteredRouteController.java     |   4 +-
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |  10 +-
 .../impl/cluster/ClusteredRoutePolicyFactory.java  |   4 +-
 .../impl/health/DefaultHealthCheckRegistry.java    |   2 -
 .../apache/camel/impl/health/RouteHealthCheck.java |   5 +-
 .../DefaultManagementLifecycleStrategy.java        |   2 +-
 .../DefaultManagementObjectStrategy.java           |   5 +-
 .../management/DefaultManagementStrategy.java      |   3 +-
 .../InstrumentationInterceptStrategy.java          |   3 +-
 .../camel/management/ManagedCamelContext.java      |  50 ++++
 .../management/ManagedManagementStrategy.java      |   3 +-
 .../management/mbean/RouteCoverageXmlParser.java   |   7 +-
 .../camel/model/DynamicRouterDefinition.java       |   3 +-
 .../apache/camel/model/InterceptDefinition.java    |   5 +-
 .../model/InterceptSendToEndpointDefinition.java   |   2 +-
 .../apache/camel/model/OnCompletionDefinition.java |   3 +-
 .../apache/camel/model/OnExceptionDefinition.java  |   3 +-
 .../apache/camel/model/ProcessorDefinition.java    |   3 +-
 .../camel/model/ProcessorDefinitionHelper.java     |   7 +-
 .../org/apache/camel/model/RouteDefinition.java    |  16 +-
 .../apache/camel/model/RoutingSlipDefinition.java  |   3 +-
 .../org/apache/camel/model/SortDefinition.java     |   6 +-
 .../camel/model/cloud/ServiceCallDefinition.java   |   5 +-
 .../camel/processor/CamelInternalProcessor.java    |   7 +-
 .../apache/camel/processor/MulticastProcessor.java |   4 +-
 .../org/apache/camel/processor/Resequencer.java    |  23 +-
 .../DefaultExceptionPolicyStrategy.java            |   2 +-
 .../processor/interceptor/BacklogDebugger.java     |  13 +-
 .../camel/processor/interceptor/BacklogTracer.java |   3 +-
 .../apache/camel/processor/interceptor/Debug.java  |   4 +-
 .../camel/processor/interceptor/HandleFault.java   |   6 +-
 .../main/java/org/apache/camel/spi/Breakpoint.java |  20 +-
 .../org/apache/camel/spi/CamelContextTracker.java  |  33 ++-
 .../main/java/org/apache/camel/spi/Condition.java  |   4 +-
 .../main/java/org/apache/camel/spi/Debugger.java   |   6 +-
 .../org/apache/camel/spi/InterceptStrategy.java    |   6 +-
 .../java/org/apache/camel/spi/LogListener.java     |   9 +-
 .../apache/camel/spi/ManagementObjectStrategy.java |   4 +-
 .../org/apache/camel/spi/ManagementStrategy.java   |   5 +-
 .../src/main/java/org/apache/camel/spi/Policy.java |   6 +-
 .../org/apache/camel/spi/ProcessorFactory.java     |   6 +-
 .../java/org/apache/camel/spi/RouteContext.java    |  12 +-
 .../java/org/apache/camel/spi/RouteController.java |  81 +++++-
 .../org/apache/camel/spi/RoutePolicyFactory.java   |   4 +-
 .../java/org/apache/camel/spi/Transformer.java     |   9 +-
 .../main/java/org/apache/camel/spi/Validator.java  |   9 +-
 .../java/org/apache/camel/util/ObjectHelper.java   |  32 ---
 .../main/java/org/apache/camel/util/TimeUtils.java | 117 +++++++-
 .../apache/camel/util/function/ThrowingHelper.java |  32 +++
 .../component/rest/FromRestGetPolicyTest.java      |   4 +-
 .../org/apache/camel/impl/CustomIdFactoryTest.java |   7 +-
 .../impl/DefaultCamelContextAutoStartupTest.java   |  16 +-
 .../apache/camel/impl/RoutePolicyFactoryTest.java  |   4 +-
 .../apache/camel/impl/StartAndStopRoutesTest.java  |   5 +-
 .../apache/camel/issues/AdviceWithPolicyTest.java  |   4 +-
 .../issues/AdviceWithStartTargetIssueTest.java     |   4 +-
 .../camel/issues/AdviceWithTransactedTest.java     |   4 +-
 .../issues/DynamicRouterWithInterceptorTest.java   |   4 +-
 .../issues/RecipientListWithInterceptorTest.java   |   4 +-
 .../issues/RoutingSlipWithInterceptorTest.java     |   4 +-
 .../camel/issues/SplitWithInterceptorTest.java     |   4 +-
 .../TransactedPropertyPlaceholderIssueTest.java    |   4 +-
 .../apache/camel/issues/TwoTimerWithJMXIssue.java  |   4 +-
 .../management/ManagedAggregateControllerTest.java |   2 +-
 .../camel/management/ManagedCamelContextTest.java  |   2 +-
 .../camel/management/ManagedCustomPolicyTest.java  |   4 +-
 .../management/ManagedInlinedProcessorTest.java    |   2 +-
 .../ManagedRouteSuspendAndResumeTest.java          |   2 +-
 .../management/RemoveRouteDefinitionTest.java      |   8 +-
 .../model/LoadRouteFromXmlWithPolicyTest.java      |   3 +-
 .../processor/CustomProcessorFactoryTest.java      |   6 +-
 .../DefinitionPolicyPerProcessorTest.java          |   6 +-
 .../camel/processor/PipelineStepWithEventTest.java |   4 +-
 .../camel/processor/PolicyPerProcessorTest.java    |   4 +-
 .../apache/camel/processor/PolicyPerRouteTest.java |   4 +-
 .../AsyncEndpointCustomAsyncInterceptorTest.java   |   4 +-
 .../async/AsyncEndpointCustomInterceptorTest.java  |   4 +-
 .../processor/async/AsyncEndpointPolicyTest.java   |   4 +-
 .../ParentChildInterceptStrategyTest.java          |   5 +-
 .../AuditInterceptorAsyncDelegateIssueTest.java    |   4 +-
 .../AuditInterceptorDelegateIssueTest.java         |   4 +-
 .../CustomInterceptorRouteWithChildOutputTest.java |   6 +-
 .../interceptor/DebugExceptionBreakpointTest.java  |   6 +-
 .../DebugExceptionEventBreakpointTest.java         |   4 +-
 .../interceptor/DebugSingleStepConditionTest.java  |   6 +-
 .../processor/interceptor/DebugSingleStepTest.java |   4 +-
 .../camel/processor/interceptor/DebugTest.java     |  10 +-
 .../InterceptorStrategyNotOrderedTest.java         |   6 +-
 .../InterceptorStrategyOrderedTest.java            |   6 +-
 .../component/aws/xray/EIPTracingStrategy.java     |   4 +-
 .../component/aws/xray/NoopTracingStrategy.java    |   4 +-
 .../aws/xray/TraceAnnotatedTracingStrategy.java    |   6 +-
 .../camel/component/aws/xray/XRayTracer.java       |   4 +-
 .../org/apache/camel/cdi/CdiCamelExtension.java    |   2 +-
 .../cdi/transaction/JtaTransactionPolicy.java      |  11 +-
 .../component/ehcache/EhcacheConfiguration.java    |   3 +-
 .../infinispan/policy/InfinispanRoutePolicy.java   |   4 +-
 ...sumerObserveAttributeMatchStringDifferTest.java |   8 +-
 ...JmxConsumerObserveAttributeMatchStringTest.java |   8 +-
 .../jmx/CamelJmxConsumerObserveAttributeTest.java  |   4 +-
 .../camel/component/jmx/CamelJmxConsumerTest.java  |   2 +-
 .../routepolicy/MetricsRoutePolicyFactory.java     |   4 +-
 .../routepolicy/MicrometerRoutePolicyFactory.java  |   4 +-
 .../camel/opentracing/OpenTracingTracer.java       |   3 +-
 .../apache/camel/opentracing/SpanDecorator.java    |   8 +-
 .../component/quartz2/QuartzNameCollisionTest.java |   2 +-
 .../shiro/security/ShiroSecurityPolicy.java        |   4 +-
 .../boot/actuate/endpoint/CamelRoutesEndpoint.java |   5 +-
 .../camel/spring/boot/model/RouteDetailsInfo.java  |   2 +-
 .../SpringSecurityAuthorizationPolicy.java         |   4 +-
 .../camel/spring/spi/SpringTransactionPolicy.java  |  10 +-
 .../camel/spring/CamelLoadRoutesFromXMLTest.java   |  20 +-
 .../spring/config/CamelContextAutoStartupTest.java |   4 +-
 .../config/RouteAutoStartupPropertiesTest.java     |   6 +-
 .../interceptor/ContainerWideInterceptor.java      |   4 +-
 .../camel/test/spring/RouteCoverageDumper.java     |   3 +-
 .../CamelSpringRunnerProvidesBreakpointTest.java   |   4 +-
 .../apache/camel/test/junit4/CamelTestSupport.java |  17 +-
 .../java/org/apache/camel/zipkin/ZipkinTracer.java |   4 +-
 .../zookeeper/policy/CuratorLeaderRoutePolicy.java |   4 +-
 .../CuratorMultiMasterLeaderRoutePolicy.java       |   4 +-
 .../commands/AbstractLocalCamelController.java     |   3 +-
 .../commands/internal/CamelControllerImpl.java     |   8 +-
 .../HystrixHierarchicalConfigurationTest.java      |   3 +-
 .../camel/itest/issues/DummyInterceptor.java       |   4 +-
 147 files changed, 755 insertions(+), 986 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index dd31ddf..2ebcb1e 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -17,27 +17,14 @@
 package org.apache.camel;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
-import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
-import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.health.HealthCheckRegistry;
-import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
-import org.apache.camel.model.transformer.TransformerDefinition;
-import org.apache.camel.model.validator.ValidatorDefinition;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelContextNameStrategy;
@@ -535,35 +522,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setupRoutes(boolean done);
 
     /**
-     * Returns a list of the current route definitions
-     *
-     * @return list of the current route definitions
-     */
-    List<RouteDefinition> getRouteDefinitions();
-
-    /**
-     * Gets the route definition with the given id
-     *
-     * @param id id of the route
-     * @return the route definition or <tt>null</tt> if not found
-     */
-    RouteDefinition getRouteDefinition(String id);
-
-    /**
-     * Returns a list of the current REST definitions
-     *
-     * @return list of the current REST definitions
-     */
-    List<RestDefinition> getRestDefinitions();
-
-    /**
-     * Adds a collection of rest definitions to the context
-     *
-     * @param restDefinitions the rest(s) definition to add
-     */
-    void addRestDefinitions(Collection<RestDefinition> restDefinitions) throws Exception;
-
-    /**
      * Sets a custom {@link org.apache.camel.spi.RestConfiguration}
      *
      * @param restConfiguration the REST configuration
@@ -643,49 +601,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     <T extends Processor> T getProcessor(String id, Class<T> type);
 
     /**
-     * Gets the managed processor client api from any of the routes which with the given id
-     *
-     * @param id id of the processor
-     * @param type the managed processor type from the {@link org.apache.camel.api.management.mbean} package.
-     * @return the processor or <tt>null</tt> if not found
-     * @throws IllegalArgumentException if the type is not compliant
-     */
-    <T extends ManagedProcessorMBean> T getManagedProcessor(String id, Class<T> type);
-
-    /**
-     * Gets the managed route client api with the given route id
-     *
-     * @param routeId id of the route
-     * @param type the managed route type from the {@link org.apache.camel.api.management.mbean} package.
-     * @return the route or <tt>null</tt> if not found
-     * @throws IllegalArgumentException if the type is not compliant
-     */
-    <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type);
-
-    /**
-     * Gets the managed Camel CamelContext client api
-     */
-    ManagedCamelContextMBean getManagedCamelContext();
-
-    /**
-     * Gets the processor definition from any of the routes which with the given id
-     *
-     * @param id id of the processor definition
-     * @return the processor definition or <tt>null</tt> if not found
-     */
-    ProcessorDefinition getProcessorDefinition(String id);
-
-    /**
-     * Gets the processor definition from any of the routes which with the given id
-     *
-     * @param id id of the processor definition
-     * @param type the processor definition type
-     * @return the processor definition or <tt>null</tt> if not found
-     * @throws java.lang.ClassCastException is thrown if the type is not correct type
-     */
-    <T extends ProcessorDefinition> T getProcessorDefinition(String id, Class<T> type);
-
-    /**
      * Adds a collection of routes to this CamelContext using the given builder
      * to build them.
      * <p/>
@@ -703,142 +618,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void addRoutes(RoutesBuilder builder) throws Exception;
 
     /**
-     * Loads a collection of route definitions from the given {@link java.io.InputStream}.
-     *
-     * @param is input stream with the route(s) definition to add
-     * @throws Exception if the route definitions could not be loaded for whatever reason
-     * @return the route definitions
-     */
-    RoutesDefinition loadRoutesDefinition(InputStream is) throws Exception;
-
-    /**
-     * Loads a collection of rest definitions from the given {@link java.io.InputStream}.
-     *
-     * @param is input stream with the rest(s) definition to add
-     * @throws Exception if the rest definitions could not be loaded for whatever reason
-     * @return the rest definitions
-     */
-    RestsDefinition loadRestsDefinition(InputStream is) throws Exception;
-    
-    /**
-     * Adds a collection of route definitions to the context
-     *
-     * @param routeDefinitions the route(s) definition to add
-     * @throws Exception if the route definitions could not be created for whatever reason
-     */
-    void addRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception;
-
-    /**
-     * Add a route definition to the context
-     *
-     * @param routeDefinition the route definition to add
-     * @throws Exception if the route definition could not be created for whatever reason
-     */
-    void addRouteDefinition(RouteDefinition routeDefinition) throws Exception;
-
-    /**
-     * Removes a collection of route definitions from the CamelContext - stopping any previously running
-     * routes if any of them are actively running
-     *
-     * @param routeDefinitions route(s) definitions to remove
-     * @throws Exception if the route definitions could not be removed for whatever reason
-     */
-    void removeRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception;
-
-    /**
-     * Removes a route definition from the CamelContext - stopping any previously running
-     * routes if any of them are actively running
-     *
-     * @param routeDefinition route definition to remove
-     * @throws Exception if the route definition could not be removed for whatever reason
-     */
-    void removeRouteDefinition(RouteDefinition routeDefinition) throws Exception;
-
-    /**
-     * Starts the given route if it has been previously stopped
-     *
-     * @param route the route to start
-     * @throws Exception is thrown if the route could not be started for whatever reason
-     * @deprecated favor using {@link CamelContext#startRoute(String)}
-     */
-    @Deprecated
-    void startRoute(RouteDefinition route) throws Exception;
-
-    /**
-     * Starts the given route if it has been previously stopped
-     *
-     * @param routeId the route id
-     * @throws Exception is thrown if the route could not be started for whatever reason
-     */
-    void startRoute(String routeId) throws Exception;
-
-    /**
-     * Stops the given route.
-     *
-     * @param route the route to stop
-     * @throws Exception is thrown if the route could not be stopped for whatever reason
-     * @deprecated favor using {@link CamelContext#stopRoute(String)}
-     */
-    @Deprecated
-    void stopRoute(RouteDefinition route) throws Exception;
-
-    /**
-     * Stops the given route using {@link org.apache.camel.spi.ShutdownStrategy}.
-     *
-     * @param routeId the route id
-     * @throws Exception is thrown if the route could not be stopped for whatever reason
-     * @see #suspendRoute(String)
-     */
-    void stopRoute(String routeId) throws Exception;
-
-    /**
-     * Stops the given route using {@link org.apache.camel.spi.ShutdownStrategy} with a specified timeout.
-     *
-     * @param routeId the route id
-     * @param timeout  timeout
-     * @param timeUnit the unit to use
-     * @throws Exception is thrown if the route could not be stopped for whatever reason
-     * @see #suspendRoute(String, long, java.util.concurrent.TimeUnit)
-     */
-    void stopRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception;
-
-    /**
-     * Stops the given route using {@link org.apache.camel.spi.ShutdownStrategy} with a specified timeout 
-     * and optional abortAfterTimeout mode.
-     *
-     * @param routeId the route id
-     * @param timeout  timeout
-     * @param timeUnit the unit to use
-     * @param abortAfterTimeout should abort shutdown after timeout
-     * @return <tt>true</tt> if the route is stopped before the timeout
-     * @throws Exception is thrown if the route could not be stopped for whatever reason
-     * @see #suspendRoute(String, long, java.util.concurrent.TimeUnit)
-     */
-    boolean stopRoute(String routeId, long timeout, TimeUnit timeUnit, boolean abortAfterTimeout) throws Exception;
-    
-    /**
-     * Shutdown and <b>removes</b> the given route using {@link org.apache.camel.spi.ShutdownStrategy}.
-     *
-     * @param routeId the route id
-     * @throws Exception is thrown if the route could not be shutdown for whatever reason
-     * @deprecated use {@link #stopRoute(String)} and {@link #removeRoute(String)}
-     */
-    @Deprecated
-    void shutdownRoute(String routeId) throws Exception;
-
-    /**
-     * Shutdown and <b>removes</b> the given route using {@link org.apache.camel.spi.ShutdownStrategy} with a specified timeout.
-     *
-     * @param routeId  the route id
-     * @param timeout  timeout
-     * @param timeUnit the unit to use
-     * @throws Exception is thrown if the route could not be shutdown for whatever reason
-     * @deprecated use {@link #stopRoute(String, long, java.util.concurrent.TimeUnit)} and {@link #removeRoute(String)}
-     */
-    @Deprecated
-    void shutdownRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception;
-
-    /**
      * Removes the given route (the route <b>must</b> be stopped before it can be removed).
      * <p/>
      * A route which is removed will be unregistered from JMX, have its services stopped/shutdown and the route
@@ -862,56 +641,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     boolean removeRoute(String routeId) throws Exception;
 
     /**
-     * Resumes the given route if it has been previously suspended
-     * <p/>
-     * If the route does <b>not</b> support suspension the route will be started instead
-     *
-     * @param routeId the route id
-     * @throws Exception is thrown if the route could not be resumed for whatever reason
-     */
-    void resumeRoute(String routeId) throws Exception;
-
-    /**
-     * Suspends the given route using {@link org.apache.camel.spi.ShutdownStrategy}.
-     * <p/>
-     * Suspending a route is more gently than stopping, as the route consumers will be suspended (if they support)
-     * otherwise the consumers will be stopped.
-     * <p/>
-     * By suspending the route services will be kept running (if possible) and therefore its faster to resume the route.
-     * <p/>
-     * If the route does <b>not</b> support suspension the route will be stopped instead
-     *
-     * @param routeId the route id
-     * @throws Exception is thrown if the route could not be suspended for whatever reason
-     */
-    void suspendRoute(String routeId) throws Exception;
-
-    /**
-     * Suspends the given route using {@link org.apache.camel.spi.ShutdownStrategy} with a specified timeout.
-     * <p/>
-     * Suspending a route is more gently than stopping, as the route consumers will be suspended (if they support)
-     * otherwise the consumers will be stopped.
-     * <p/>
-     * By suspending the route services will be kept running (if possible) and therefore its faster to resume the route.
-     * <p/>
-     * If the route does <b>not</b> support suspension the route will be stopped instead
-     *
-     * @param routeId  the route id
-     * @param timeout  timeout
-     * @param timeUnit the unit to use
-     * @throws Exception is thrown if the route could not be suspended for whatever reason
-     */
-    void suspendRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception;
-
-    /**
-     * Returns the current status of the given route
-     *
-     * @param routeId the route id
-     * @return the status for the route
-     */
-    ServiceStatus getRouteStatus(String routeId);
-
-    /**
      * Indicates whether current thread is setting up route(s) as part of starting Camel from spring/blueprint.
      * <p/>
      * This can be useful to know by {@link LifecycleStrategy} or the likes, in case
@@ -1180,14 +909,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     DataFormat createDataFormat(String name);
 
     /**
-     * Resolve a data format definition given its name
-     *
-     * @param name the data format definition name or a reference to it in the {@link Registry}
-     * @return the resolved data format definition, or <tt>null</tt> if not found
-     */
-    DataFormatDefinition resolveDataFormatDefinition(String name);
-
-    /**
      * Gets the current data format resolver
      *
      * @return the resolver
@@ -1202,20 +923,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setDataFormatResolver(DataFormatResolver dataFormatResolver);
 
     /**
-     * Sets the transformers that can be referenced in the routes.
-     *
-     * @param transformers the transformers
-     */
-    void setTransformers(List<TransformerDefinition> transformers);
-
-    /**
-     * Gets the transformers that can be referenced in the routes.
-     *
-     * @return the transformers available
-     */
-    List<TransformerDefinition> getTransformers();
-
-    /**
      * Resolve a transformer given a scheme
      *
      * @param model data model name.
@@ -1239,20 +946,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     TransformerRegistry<? extends ValueHolder<String>> getTransformerRegistry();
 
     /**
-     * Sets the validators that can be referenced in the routes.
-     *
-     * @param validators the validators
-     */
-    void setValidators(List<ValidatorDefinition> validators);
-
-    /**
-     * Gets the validators that can be referenced in the routes.
-     *
-     * @return the validators available
-     */
-    List<ValidatorDefinition> getValidators();
-
-    /**
      * Resolve a validator given from/to data type.
      *
      * @param type the data type
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
index 7915647..fa997f3 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
@@ -24,6 +24,7 @@ import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
@@ -118,9 +119,10 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
         // the transacted error handler could have been configured on the route so we should use that one
         if (!isErrorHandlerBuilderConfigured(ref)) {
             // see if there has been configured a route builder on the route
-            answer = routeContext.getRoute().getErrorHandlerBuilder();
-            if (answer == null && routeContext.getRoute().getErrorHandlerRef() != null) {
-                answer = routeContext.lookup(routeContext.getRoute().getErrorHandlerRef(), ErrorHandlerBuilder.class);
+            RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+            answer = route.getErrorHandlerBuilder();
+            if (answer == null && route.getErrorHandlerRef() != null) {
+                answer = routeContext.lookup(route.getErrorHandlerRef(), ErrorHandlerBuilder.class);
             }
             if (answer == null) {
                 // fallback to the default error handler if none configured on the route
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
index 44feecf..fbc41b3 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
@@ -23,6 +23,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.ErrorHandler;
 import org.apache.camel.processor.ErrorHandlerSupport;
 import org.apache.camel.processor.RedeliveryErrorHandler;
@@ -122,7 +123,8 @@ public abstract class ErrorHandlerBuilderSupport implements ErrorHandlerBuilder
     protected String getRouteId(RouteContext routeContext) {
         CamelContext context = routeContext.getCamelContext();
         if (context != null) {
-            return routeContext.getRoute().idOrCreate(context.getNodeIdFactory());
+            RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+            return route.idOrCreate(context.getNodeIdFactory());
         } else {
             return routeContext.getRoute().getId();
         }
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
index d2f9287..ddc2865 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
@@ -22,12 +22,12 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.camel.Component;
-import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.ErrorAttribute;
-import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.ErrorCode;
-import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.ExceptionErrorAttribute;
-import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.GroupErrorAttribute;
-import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.HttpErrorAttribute;
-import org.apache.camel.component.extension.verifier.ComponentVerifierExtensionHelper.StandardErrorCode;
+import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.ErrorAttribute;
+import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.ErrorCode;
+import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.ExceptionErrorAttribute;
+import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.GroupErrorAttribute;
+import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.HttpErrorAttribute;
+import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.StandardErrorCode;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
 import org.apache.camel.util.ObjectHelper;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/ComponentVerifierExtensionHelper.java b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
similarity index 79%
rename from camel-core/src/main/java/org/apache/camel/component/extension/verifier/ComponentVerifierExtensionHelper.java
rename to camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
index 583ccf7..bbe4780 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/ComponentVerifierExtensionHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
@@ -14,9 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.component.extension.verifier;
+package org.apache.camel.component.extension;
 
-import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Attribute;
 import org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Code;
 import org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.ExceptionAttribute;
@@ -28,16 +27,16 @@ import org.apache.camel.component.extension.ComponentVerifierExtension.Verificat
  * Package visible helper class holding implementation classes for
  * constant like error code and attributes in {@link  ComponentVerifierExtension.VerificationError}
  */
-public final class ComponentVerifierExtensionHelper {
+final class ComponentVerifierExtensionHelper {
 
     /**
      * Custom class for error codes
      */
-    public static class ErrorCode implements Code {
+    static class ErrorCode implements Code {
 
         private final String name;
 
-        public ErrorCode(String name) {
+        ErrorCode(String name) {
             if (name == null) {
                 throw new IllegalArgumentException("Name of an error code must not be null");
             }
@@ -74,11 +73,11 @@ public final class ComponentVerifierExtensionHelper {
         }
     }
 
-    public static class ErrorAttribute implements Attribute {
+    static class ErrorAttribute implements Attribute {
 
         private final String name;
 
-        public ErrorAttribute(String name) {
+        ErrorAttribute(String name) {
             if (name == null) {
                 throw new IllegalArgumentException("Name of an error attribute must not be null");
             }
@@ -119,26 +118,26 @@ public final class ComponentVerifierExtensionHelper {
     // ===========================================================================================================
     // Helper classes for implementing the constants in ComponentVerifier:
 
-    public static class StandardErrorCode extends ErrorCode implements StandardCode {
-        public StandardErrorCode(String name) {
+    static class StandardErrorCode extends ErrorCode implements StandardCode {
+        StandardErrorCode(String name) {
             super(name);
         }
     }
 
-    public static class ExceptionErrorAttribute extends ErrorAttribute implements ExceptionAttribute {
-        public ExceptionErrorAttribute(String name) {
+    static class ExceptionErrorAttribute extends ErrorAttribute implements ExceptionAttribute {
+        ExceptionErrorAttribute(String name) {
             super(name);
         }
     }
 
-    public static class HttpErrorAttribute extends ErrorAttribute implements HttpAttribute {
-        public HttpErrorAttribute(String name) {
+    static class HttpErrorAttribute extends ErrorAttribute implements HttpAttribute {
+        HttpErrorAttribute(String name) {
             super(name);
         }
     }
 
-    public static class GroupErrorAttribute extends ErrorAttribute implements GroupAttribute {
-        public GroupErrorAttribute(String name) {
+    static class GroupErrorAttribute extends ErrorAttribute implements GroupAttribute {
+        GroupErrorAttribute(String name) {
             super(name);
         }
     }
diff --git a/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java b/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java
index f257a44..f40b447 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java
@@ -16,12 +16,8 @@
  */
 package org.apache.camel.converter;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 import org.apache.camel.Converter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.util.TimeUtils;
 
 /**
  * Converter from String syntax to milli seconds.
@@ -29,11 +25,6 @@ import org.slf4j.LoggerFactory;
  */
 @Converter
 public final class TimePatternConverter {   
-    private static final Logger LOG = LoggerFactory.getLogger(TimePatternConverter.class);
-    private static final Pattern NUMBERS_ONLY_STRING_PATTERN = Pattern.compile("^[-]?(\\d)+$", Pattern.CASE_INSENSITIVE);
-    private static final Pattern HOUR_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))h(our(s)?)?", Pattern.CASE_INSENSITIVE);
-    private static final Pattern MINUTES_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))m(in(ute(s)?)?)?", Pattern.CASE_INSENSITIVE);
-    private static final Pattern SECONDS_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))s(ec(ond)?(s)?)?", Pattern.CASE_INSENSITIVE);
 
     /**
      * Utility classes should not have a public constructor.
@@ -43,106 +34,6 @@ public final class TimePatternConverter {
     
     @Converter
     public static long toMilliSeconds(String source) throws IllegalArgumentException {
-        // quick conversion if its only digits
-        boolean digit = true;
-        for (int i = 0; i < source.length(); i++) {
-            char ch = source.charAt(i);
-            // special for fist as it can be negative number
-            if (i == 0 && ch == '-') {
-                continue;
-            }
-            // quick check if its 0..9
-            if (ch < '0' || ch > '9') {
-                digit = false;
-                break;
-            }
-        }
-        if (digit) {
-            return Long.valueOf(source);
-        }
-
-        long milliseconds = 0;
-        boolean foundFlag = false;
-
-        checkCorrectnessOfPattern(source);
-        Matcher matcher;
-
-        matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
-        if (matcher.find()) {
-            // Note: This will also be used for regular numeric strings. 
-            //       This String -> long converter will be used for all strings.
-            milliseconds = Long.valueOf(source);
-        } else {            
-            matcher = createMatcher(HOUR_REGEX_PATTERN, source);
-            if (matcher.find()) {
-                milliseconds = milliseconds + (3600000 * Long.valueOf(matcher.group(1)));
-                foundFlag = true;
-            }
-            
-            matcher = createMatcher(MINUTES_REGEX_PATTERN, source);
-            if (matcher.find()) {
-                long minutes = Long.valueOf(matcher.group(1));
-                if ((minutes > 59) && foundFlag) {
-                    throw new IllegalArgumentException("Minutes should contain a valid value between 0 and 59: " + source);
-                }
-                foundFlag = true;
-                milliseconds = milliseconds + (60000 * minutes);
-            }
-               
-            matcher = createMatcher(SECONDS_REGEX_PATTERN, source);
-            if (matcher.find()) {
-                long seconds = Long.valueOf(matcher.group(1));
-                if ((seconds > 59) && foundFlag) {
-                    throw new IllegalArgumentException("Seconds should contain a valid value between 0 and 59: " + source);
-                }
-                foundFlag = true;
-                milliseconds = milliseconds + (1000 * seconds);
-            }      
-            
-            // No pattern matched... initiating fallback check and conversion (if required). 
-            // The source at this point may contain illegal values or special characters 
-            if (!foundFlag) {
-                milliseconds = Long.valueOf(source);
-            }
-        }       
-        
-        LOG.trace("source: {} milliseconds: ", source, milliseconds);
-        
-        return milliseconds;
+        return TimeUtils.toMilliSeconds(source);
     }
-
-    private static void checkCorrectnessOfPattern(String source) {
-        //replace only numbers once
-        Matcher matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
-        String replaceSource = matcher.replaceFirst("");
-
-        //replace hour string once
-        matcher = createMatcher(HOUR_REGEX_PATTERN, replaceSource);
-        if (matcher.find() && matcher.find()) {
-            throw new IllegalArgumentException("Hours should not be specified more then once: " + source);
-        }
-        replaceSource = matcher.replaceFirst("");
-
-        //replace minutes once
-        matcher = createMatcher(MINUTES_REGEX_PATTERN, replaceSource);
-        if (matcher.find() && matcher.find()) {
-            throw new IllegalArgumentException("Minutes should not be specified more then once: " + source);
-        }
-        replaceSource = matcher.replaceFirst("");
-
-        //replace seconds once
-        matcher = createMatcher(SECONDS_REGEX_PATTERN, replaceSource);
-        if (matcher.find() && matcher.find()) {
-            throw new IllegalArgumentException("Seconds should not be specified more then once: " + source);
-        }
-        replaceSource = matcher.replaceFirst("");
-
-        if (replaceSource.length() > 0) {
-            throw new IllegalArgumentException("Illegal characters: " + source);
-        }
-    }
-
-    private static Matcher createMatcher(Pattern pattern, String source) {
-        return pattern.matcher(source);        
-    }    
 }
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java b/camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
index 2621e1b..9f2cdf6 100644
--- a/camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
@@ -19,8 +19,8 @@ package org.apache.camel.health;
 import java.time.Duration;
 
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.converter.TimePatternConverter;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.TimeUtils;
 
 public class HealthCheckConfiguration implements Cloneable {
     public static final Boolean DEFAULT_VALUE_ENABLED = Boolean.FALSE;
@@ -80,7 +80,7 @@ public class HealthCheckConfiguration implements Cloneable {
      */
     public void setInterval(String interval) {
         if (ObjectHelper.isNotEmpty(interval)) {
-            this.interval = Duration.ofMillis(TimePatternConverter.toMilliSeconds(interval));
+            this.interval = Duration.ofMillis(TimeUtils.toMilliSeconds(interval));
         } else {
             this.interval = null;
         }
@@ -173,7 +173,7 @@ public class HealthCheckConfiguration implements Cloneable {
 
         public Builder interval(String interval) {
             return ObjectHelper.isNotEmpty(interval)
-                ? interval(TimePatternConverter.toMilliSeconds(interval))
+                ? interval(TimeUtils.toMilliSeconds(interval))
                 : this;
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java b/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
index c41fa79..808b098 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
@@ -19,8 +19,8 @@ package org.apache.camel.impl;
 import java.util.EventObject;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Breakpoint;
 
 /**
@@ -46,15 +46,15 @@ public abstract class BreakpointSupport implements Breakpoint {
         state = State.Active;
     }
 
-    public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+    public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
         // noop
     }
 
-    public void afterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken) {
+    public void afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken) {
         // noop
     }
 
-    public void onEvent(Exchange exchange, EventObject event, ProcessorDefinition<?> definition) {
+    public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
         // noop
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java b/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
index 9d32662..5a966fd 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
@@ -19,8 +19,8 @@ package org.apache.camel.impl;
 import java.util.EventObject;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Condition;
 
 /**
@@ -30,7 +30,7 @@ import org.apache.camel.spi.Condition;
  */
 public class ConditionSupport implements Condition {
 
-    public boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+    public boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition) {
         return false;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 739622f..9224f40 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -35,7 +35,6 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.TreeMap;
-import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledExecutorService;
@@ -99,6 +98,7 @@ import org.apache.camel.impl.validator.ValidatorKey;
 import org.apache.camel.management.DefaultManagementMBeanAssembler;
 import org.apache.camel.management.DefaultManagementStrategy;
 import org.apache.camel.management.JmxSystemPropertyKeys;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.management.ManagementStrategyFactory;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.FromDefinition;
@@ -123,6 +123,7 @@ import org.apache.camel.runtimecatalog.DefaultRuntimeCamelCatalog;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelContextNameStrategy;
+import org.apache.camel.spi.CamelContextTracker;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.DataFormat;
@@ -158,6 +159,7 @@ import org.apache.camel.spi.RestRegistry;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RouteError;
+import org.apache.camel.spi.RouteError.Phase;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.RuntimeEndpointRegistry;
@@ -187,6 +189,7 @@ import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.StringQuoteHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.URISupport;
+import org.apache.camel.util.function.ThrowingRunnable;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -200,7 +203,7 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
  * @version
  */
 @SuppressWarnings("deprecation")
-public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, Suspendable {
+public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, ManagedCamelContext, Suspendable {
     private final Logger log = LoggerFactory.getLogger(getClass());
     private final AtomicBoolean vetoStated = new AtomicBoolean();
     private JAXBContext jaxbContext;
@@ -339,7 +342,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
         // Call all registered trackers with this context
         // Note, this may use a partially constructed object
-        CamelContextTrackerRegistry.INSTANCE.contextCreated(this);
+        CamelContextTracker.notifyContextCreated(this);
     }
 
     /**
@@ -1005,13 +1008,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
     public void addRoutes(final RoutesBuilder builder) throws Exception {
         log.debug("Adding routes from builder: {}", builder);
-        doWithDefinedClassLoader(new Callable<Void>() {
-            @Override
-            public Void call() throws Exception {
-                builder.addRoutesToCamelContext(DefaultCamelContext.this);
-                return null;
-            }
-        });
+        doWithDefinedClassLoader(() -> builder.addRoutesToCamelContext(DefaultCamelContext.this));
     }
 
     public synchronized RoutesDefinition loadRoutesDefinition(InputStream is) throws Exception {
@@ -1061,7 +1058,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     public void addRouteDefinition(RouteDefinition routeDefinition) throws Exception {
-        addRouteDefinitions(Arrays.asList(routeDefinition));
+        addRouteDefinitions(Collections.singletonList(routeDefinition));
     }
 
     /**
@@ -1143,10 +1140,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return answer != null && answer;
     }
 
-    public void stopRoute(RouteDefinition route) throws Exception {
-        stopRoute(route.idOrCreate(nodeIdFactory));
-    }
-
     public void startAllRoutes() throws Exception {
         doStartOrResumeRoutes(routeServices, true, true, false, false);
     }
@@ -1214,67 +1207,15 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return false;
     }
 
-    public synchronized void stopRoute(String routeId) throws Exception {
-        DefaultRouteError.reset(this, routeId);
-
-        RouteService routeService = routeServices.get(routeId);
-        if (routeService != null) {
-            try {
-                List<RouteStartupOrder> routes = new ArrayList<>(1);
-                RouteStartupOrder order = new DefaultRouteStartupOrder(1, routeService.getRoutes().iterator().next(), routeService);
-                routes.add(order);
-
-                getShutdownStrategy().shutdown(this, routes);
-                // must stop route service as well
-                stopRouteService(routeService, false);
-            } catch (Exception e) {
-                DefaultRouteError.set(this, routeId, RouteError.Phase.STOP, e);
-                throw e;
-            }
-        }
+    public void stopRoute(String routeId) throws Exception {
+        doShutdownRoute(routeId, getShutdownStrategy().getTimeout(), getShutdownStrategy().getTimeUnit(), false);
     }
 
-    public synchronized void stopRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception {
-        DefaultRouteError.reset(this, routeId);
-
-        RouteService routeService = routeServices.get(routeId);
-        if (routeService != null) {
-            try {
-                List<RouteStartupOrder> routes = new ArrayList<>(1);
-                RouteStartupOrder order = new DefaultRouteStartupOrder(1, routeService.getRoutes().iterator().next(), routeService);
-                routes.add(order);
-
-                getShutdownStrategy().shutdown(this, routes, timeout, timeUnit);
-                // must stop route service as well
-                stopRouteService(routeService, false);
-            } catch (Exception e) {
-                DefaultRouteError.set(this, routeId, RouteError.Phase.STOP, e);
-                throw e;
-            }
-        }
-    }
-
-    public synchronized void shutdownRoute(String routeId) throws Exception {
-        DefaultRouteError.reset(this, routeId);
-
-        RouteService routeService = routeServices.get(routeId);
-        if (routeService != null) {
-            try {
-                List<RouteStartupOrder> routes = new ArrayList<>(1);
-                RouteStartupOrder order = new DefaultRouteStartupOrder(1, routeService.getRoutes().iterator().next(), routeService);
-                routes.add(order);
-
-                getShutdownStrategy().shutdown(this, routes);
-                // must stop route service as well (and remove the routes from management)
-                stopRouteService(routeService, true);
-            } catch (Exception e) {
-                DefaultRouteError.set(this, routeId, RouteError.Phase.SHUTDOWN, e);
-                throw e;
-            }
-        }
+    public void stopRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception {
+        doShutdownRoute(routeId, timeout, timeUnit, false);
     }
 
-    public synchronized void shutdownRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception {
+    protected synchronized void doShutdownRoute(String routeId, long timeout, TimeUnit timeUnit, boolean removingRoutes) throws Exception {
         DefaultRouteError.reset(this, routeId);
 
         RouteService routeService = routeServices.get(routeId);
@@ -1286,9 +1227,9 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
                 getShutdownStrategy().shutdown(this, routes, timeout, timeUnit);
                 // must stop route service as well (and remove the routes from management)
-                stopRouteService(routeService, true);
+                stopRouteService(routeService, removingRoutes);
             } catch (Exception e) {
-                DefaultRouteError.set(this, routeId, RouteError.Phase.SHUTDOWN, e);
+                DefaultRouteError.set(this, routeId, removingRoutes ? Phase.SHUTDOWN : Phase.STOP, e);
                 throw e;
             }
         }
@@ -1319,13 +1260,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
                     removeRouteDefinition(routeId);
                     routeServices.remove(routeId);
                     // remove route from startup order as well, as it was removed
-                    Iterator<RouteStartupOrder> it = routeStartupOrder.iterator();
-                    while (it.hasNext()) {
-                        RouteStartupOrder order = it.next();
-                        if (order.getRoute().getId().equals(routeId)) {
-                            it.remove();
-                        }
-                    }
+                    routeStartupOrder.removeIf(order -> order.getRoute().getId().equals(routeId));
 
                     // from the route which we have removed, then remove all its private endpoints
                     // (eg the endpoints which are not in use by other routes)
@@ -1360,35 +1295,8 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return false;
     }
 
-    public synchronized void suspendRoute(String routeId) throws Exception {
-        try {
-            DefaultRouteError.reset(this, routeId);
-
-            if (!routeSupportsSuspension(routeId)) {
-                // stop if we suspend is not supported
-                stopRoute(routeId);
-                return;
-            }
-
-            RouteService routeService = routeServices.get(routeId);
-            if (routeService != null) {
-                List<RouteStartupOrder> routes = new ArrayList<>(1);
-                Route route = routeService.getRoutes().iterator().next();
-                RouteStartupOrder order = new DefaultRouteStartupOrder(1, route, routeService);
-                routes.add(order);
-
-                getShutdownStrategy().suspend(this, routes);
-                // must suspend route service as well
-                suspendRouteService(routeService);
-                // must suspend the route as well
-                if (route instanceof SuspendableService) {
-                    ((SuspendableService) route).suspend();
-                }
-            }
-        } catch (Exception e) {
-            DefaultRouteError.set(this, routeId, RouteError.Phase.SUSPEND, e);
-            throw e;
-        }
+    public void suspendRoute(String routeId) throws Exception {
+        suspendRoute(routeId, getShutdownStrategy().getTimeout(), getShutdownStrategy().getTimeUnit());
     }
 
     public synchronized void suspendRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception {
@@ -3210,30 +3118,26 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     // -----------------------------------------------------------------------
 
     protected synchronized void doStart() throws Exception {
-        doWithDefinedClassLoader(new Callable<Void>() {
-            @Override
-            public Void call() throws Exception {
-                try {
-                    doStartCamel();
-                    return null;
-                } catch (Exception e) {
-                    // fire event that we failed to start
-                    EventHelper.notifyCamelContextStartupFailed(DefaultCamelContext.this, e);
-                    // rethrow cause
-                    throw e;
-                }
+        doWithDefinedClassLoader(() -> {
+            try {
+                doStartCamel();
+            } catch (Exception e) {
+                // fire event that we failed to start
+                EventHelper.notifyCamelContextStartupFailed(DefaultCamelContext.this, e);
+                // rethrow cause
+                throw e;
             }
         });
     }
 
-    private <T> T doWithDefinedClassLoader(Callable<T> callable) throws Exception {
+    private <T extends Throwable> void doWithDefinedClassLoader(ThrowingRunnable<T> callable) throws T {
         ClassLoader tccl = Thread.currentThread().getContextClassLoader();
         try {
             // Using the ApplicationClassLoader as the default for TCCL
             if (applicationContextClassLoader != null) {
                 Thread.currentThread().setContextClassLoader(applicationContextClassLoader);
             }
-            return callable.call();
+            callable.run();
         } finally {
             Thread.currentThread().setContextClassLoader(tccl);
         }
@@ -3479,13 +3383,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         // shutdown await manager to trigger interrupt of blocked threads to attempt to free these threads graceful
         shutdownServices(asyncProcessorAwaitManager);
 
-        routeStartupOrder.sort(new Comparator<RouteStartupOrder>() {
-            @Override
-            public int compare(RouteStartupOrder o1, RouteStartupOrder o2) {
-                // Reversed order
-                return Integer.compare(o2.getStartupOrder(), o1.getStartupOrder());
-            }
-        });
+        routeStartupOrder.sort(Comparator.comparingInt(RouteStartupOrder::getStartupOrder).reversed());
         List<RouteService> list = new ArrayList<>();
         for (RouteStartupOrder startupOrder : routeStartupOrder) {
             DefaultRouteStartupOrder order = (DefaultRouteStartupOrder) startupOrder;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
index 1ef52b8..9d19fa1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
@@ -136,17 +136,17 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
             }
 
             @Override
-            public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 breakpoint.beforeProcess(exchange, processor, definition);
             }
 
             @Override
-            public void afterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken) {
+            public void afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken) {
                 breakpoint.afterProcess(exchange, processor, definition, timeTaken);
             }
 
             @Override
-            public void onEvent(Exchange exchange, EventObject event, ProcessorDefinition<?> definition) {
+            public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
                 if (event instanceof ExchangeCreatedEvent) {
                     exchange.getContext().getDebugger().startSingleStepExchange(exchange.getExchangeId(), this);
                 } else if (event instanceof ExchangeCompletedEvent) {
@@ -213,7 +213,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
     }
 
     @Override
-    public boolean beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+    public boolean beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
         // is the exchange in single step mode?
         Breakpoint singleStep = singleSteps.get(exchange.getExchangeId());
         if (singleStep != null) {
@@ -237,7 +237,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
     }
 
     @Override
-    public boolean afterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken) {
+    public boolean afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken) {
         // is the exchange in single step mode?
         Breakpoint singleStep = singleSteps.get(exchange.getExchangeId());
         if (singleStep != null) {
@@ -284,7 +284,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         return match;
     }
 
-    protected void onBeforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, Breakpoint breakpoint) {
+    protected void onBeforeProcess(Exchange exchange, Processor processor, NamedNode definition, Breakpoint breakpoint) {
         try {
             breakpoint.beforeProcess(exchange, processor, definition);
         } catch (Throwable e) {
@@ -292,7 +292,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         }
     }
 
-    protected void onAfterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken, Breakpoint breakpoint) {
+    protected void onAfterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken, Breakpoint breakpoint) {
         try {
             breakpoint.afterProcess(exchange, processor, definition, timeTaken);
         } catch (Throwable e) {
@@ -320,7 +320,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         }
     }
 
-    private boolean matchConditions(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, BreakpointConditions breakpoint) {
+    private boolean matchConditions(Exchange exchange, Processor processor, NamedNode definition, BreakpointConditions breakpoint) {
         for (Condition condition : breakpoint.getConditions()) {
             if (!condition.matchProcess(exchange, processor, definition)) {
                 return false;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProcessorFactory.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProcessorFactory.java
index 3519e3e..9eb7403 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProcessorFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProcessorFactory.java
@@ -16,9 +16,9 @@
  */
 package org.apache.camel.impl;
 
+import org.apache.camel.NamedNode;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.ProcessorFactory;
 import org.apache.camel.spi.RouteContext;
@@ -39,7 +39,7 @@ public class DefaultProcessorFactory implements ProcessorFactory {
     public static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/model/";
 
     @Override
-    public Processor createChildProcessor(RouteContext routeContext, ProcessorDefinition<?> definition, boolean mandatory) throws Exception {
+    public Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception {
         String name = definition.getClass().getSimpleName();
         FactoryFinder finder = routeContext.getCamelContext().getFactoryFinder(RESOURCE_PATH);
         try {
@@ -58,7 +58,7 @@ public class DefaultProcessorFactory implements ProcessorFactory {
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext, ProcessorDefinition<?> definition) throws Exception {
+    public Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception {
         String name = definition.getClass().getSimpleName();
         FactoryFinder finder = routeContext.getCamelContext().getFactoryFinder(RESOURCE_PATH);
         try {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index 1eadc24..247890c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.NamedNode;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -53,7 +54,7 @@ import org.apache.camel.util.ObjectHelper;
  * @version 
  */
 public class DefaultRouteContext implements RouteContext {
-    private final Map<ProcessorDefinition<?>, AtomicInteger> nodeIndex = new HashMap<>();
+    private final Map<NamedNode, AtomicInteger> nodeIndex = new HashMap<>();
     private final RouteDefinition route;
     private FromDefinition from;
     private final Collection<Route> routes;
@@ -458,7 +459,7 @@ public class DefaultRouteContext implements RouteContext {
         }
     }
     
-    public int getAndIncrement(ProcessorDefinition<?> node) {
+    public int getAndIncrement(NamedNode node) {
         AtomicInteger count = nodeIndex.get(node);
         if (count == null) {
             count = new AtomicInteger();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
index b39bfbb..9d8956f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
@@ -28,13 +28,13 @@ import org.apache.camel.spi.RouteController;
 
 @Experimental
 public class DefaultRouteController extends org.apache.camel.support.ServiceSupport implements RouteController  {
-    private CamelContext camelContext;
+    private DefaultCamelContext camelContext;
 
     public DefaultRouteController() {
         this(null);
     }
 
-    public DefaultRouteController(CamelContext camelContext) {
+    public DefaultRouteController(DefaultCamelContext camelContext) {
         this.camelContext = camelContext;
     }
 
@@ -44,7 +44,7 @@ public class DefaultRouteController extends org.apache.camel.support.ServiceSupp
 
     @Override
     public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
+        this.camelContext = (DefaultCamelContext) camelContext;
     }
 
     @Override
@@ -72,17 +72,17 @@ public class DefaultRouteController extends org.apache.camel.support.ServiceSupp
 
     @Override
     public void startAllRoutes() throws Exception {
-        ((DefaultCamelContext) camelContext).startAllRoutes();
+        camelContext.startAllRoutes();
     }
 
     @Override
     public boolean isStartingRoutes() {
-        return ((DefaultCamelContext) camelContext).isStartingRoutes();
+        return camelContext.isStartingRoutes();
     }
 
     @Override
     public ServiceStatus getRouteStatus(String routeId) {
-        return ((DefaultCamelContext) camelContext).getRouteStatus(routeId);
+        return camelContext.getRouteStatus(routeId);
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java
index 0c73112..d6b81b6 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java
@@ -52,12 +52,8 @@ public class DefaultRouteStartupOrder implements RouteStartupOrder {
     }
 
     public List<Consumer> getInputs() {
-        List<Consumer> answer = new ArrayList<>();
         Map<Route, Consumer> inputs = routeService.getInputs();
-        for (Consumer consumer : inputs.values()) {
-            answer.add(consumer);
-        }
-        return answer;
+        return new ArrayList<>(inputs.values());
     }
 
     public List<Service> getServices() {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
index 4ee4acb..91a7b73 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
@@ -154,8 +154,7 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
     }
 
     public boolean shutdown(CamelContext context, RouteStartupOrder route, long timeout, TimeUnit timeUnit, boolean abortAfterTimeout) throws Exception {
-        List<RouteStartupOrder> routes = new ArrayList<>(1);
-        routes.add(route);
+        List<RouteStartupOrder> routes = Collections.singletonList(route);
         return doShutdown(context, routes, timeout, timeUnit, false, abortAfterTimeout, false);
     }
 
@@ -179,15 +178,12 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
         StopWatch watch = new StopWatch();
 
         // at first sort according to route startup order
-        List<RouteStartupOrder> routesOrdered = new ArrayList<>(routes);
-        routesOrdered.sort(new Comparator<RouteStartupOrder>() {
-            public int compare(RouteStartupOrder o1, RouteStartupOrder o2) {
-                return o1.getStartupOrder() - o2.getStartupOrder();
-            }
-        });
+        Comparator<RouteStartupOrder> comparator = Comparator.comparingInt(RouteStartupOrder::getStartupOrder);
         if (shutdownRoutesInReverseOrder) {
-            Collections.reverse(routesOrdered);
+            comparator = comparator.reversed();
         }
+        List<RouteStartupOrder> routesOrdered = new ArrayList<>(routes);
+        routesOrdered.sort(comparator);
 
         if (suspendOnly) {
             LOG.info("Starting to graceful suspend {} routes (timeout {} {})", routesOrdered.size(), timeout, timeUnit.toString().toLowerCase(Locale.ENGLISH));
@@ -540,8 +536,8 @@ public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownS
 
                 if (LOG.isTraceEnabled()) {
                     LOG.trace("{}{} with options [{},{}]",
-                            new Object[]{suspendOnly ? "Suspending route: " : "Shutting down route: ",
-                                order.getRoute().getId(), shutdownRoute, shutdownRunningTask});
+                            suspendOnly ? "Suspending route: " : "Shutting down route: ",
+                            order.getRoute().getId(), shutdownRoute, shutdownRunningTask);
                 }
 
                 for (Consumer consumer : order.getInputs()) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicyFactory.java b/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicyFactory.java
index 849e00c..e2d36a5 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DurationRoutePolicyFactory.java
@@ -17,7 +17,7 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.NamedNode;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.util.EndpointHelper;
@@ -35,7 +35,7 @@ public class DurationRoutePolicyFactory implements RoutePolicyFactory {
     private DurationRoutePolicy.Action action = DurationRoutePolicy.Action.STOP_ROUTE;
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
         DurationRoutePolicy policy = null;
 
         if (fromRouteId == null || EndpointHelper.matchPattern(routeId, fromRouteId)) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
index 94e4b4f..014554f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
@@ -378,7 +378,8 @@ public class RouteService extends ChildServiceSupport {
             if (service instanceof ErrorHandler) {
                 // special for error handlers
                 for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
-                    strategy.onErrorHandlerRemove(route.getRouteContext(), (Processor) service, route.getRouteContext().getRoute().getErrorHandlerBuilder());
+                    RouteDefinition definition = (RouteDefinition) route.getRouteContext().getRoute();
+                    strategy.onErrorHandlerRemove(route.getRouteContext(), (Processor) service, definition.getErrorHandlerBuilder());
                 }
             } else {
                 for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
@@ -442,7 +443,8 @@ public class RouteService extends ChildServiceSupport {
      * Gather all other kind of route scoped services from the given route, except error handler
      */
     private void doGetRouteScopedServices(List<Service> services, Route route) {
-        for (ProcessorDefinition<?> output : route.getRouteContext().getRoute().getOutputs()) {
+        RouteDefinition definition = (RouteDefinition) route.getRouteContext().getRoute();
+        for (ProcessorDefinition<?> output : definition.getOutputs()) {
             if (output instanceof OnExceptionDefinition) {
                 OnExceptionDefinition onExceptionDefinition = (OnExceptionDefinition) output;
                 if (onExceptionDefinition.isRouteScoped()) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
index fd52871..b832239 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
@@ -39,6 +39,7 @@ import java.util.stream.Collectors;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Experimental;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ServiceStatus;
@@ -541,7 +542,7 @@ public class SupervisingRouteController extends DefaultRouteController {
         }
 
         public RouteDefinition getDefinition() {
-            return this.route.getRouteContext().getRoute();
+            return (RouteDefinition) this.route.getRouteContext().getRoute();
         }
 
         public ServiceStatus getStatus() {
@@ -597,7 +598,7 @@ public class SupervisingRouteController extends DefaultRouteController {
         private final RoutePolicy policy = new ManagedRoutePolicy();
 
         @Override
-        public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+        public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
             return policy;
         }
     }
@@ -618,7 +619,7 @@ public class SupervisingRouteController extends DefaultRouteController {
 
         @Override
         public void onInit(Route route) {
-            final String autoStartup = route.getRouteContext().getRoute().getAutoStartup();
+            final String autoStartup = ((RouteDefinition) route.getRouteContext().getRoute()).getAutoStartup();
             if (ObjectHelper.equalIgnoreCase("false", autoStartup)) {
                 LOGGER.info("Route {} won't be supervised (reason: has explicit auto-startup flag set to false)", route.getId());
                 return;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/TypedProcessorFactory.java b/camel-core/src/main/java/org/apache/camel/impl/TypedProcessorFactory.java
index f0aa1b8..2e3497e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/TypedProcessorFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/TypedProcessorFactory.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.impl;
 
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.ProcessorFactory;
@@ -29,7 +30,7 @@ public class TypedProcessorFactory<T extends ProcessorDefinition<T>> implements
     }
 
     @Override
-    public Processor createChildProcessor(RouteContext routeContext, ProcessorDefinition<?> definition, boolean mandatory) throws Exception {
+    public Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception {
         if (definition != null && type.isInstance(definition)) {
             return doCreateChildProcessor(routeContext, type.cast(definition), mandatory);
         }
@@ -38,7 +39,7 @@ public class TypedProcessorFactory<T extends ProcessorDefinition<T>> implements
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext, ProcessorDefinition<?> definition) throws Exception {
+    public Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception {
         if (definition != null && type.isInstance(definition)) {
             return doCreateProcessor(routeContext, type.cast(definition));
         }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java
index 4b641db..15e7f4a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java
@@ -28,6 +28,7 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.cloud.DiscoverableService;
 import org.apache.camel.cloud.ServiceDefinition;
 import org.apache.camel.cloud.ServiceRegistry;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -166,7 +167,8 @@ public class ServiceRegistrationRoutePolicy extends RoutePolicySupport implement
         String serviceId = properties.get(ServiceDefinition.SERVICE_META_ID);
         if (serviceId == null) {
             // if not check if the route id is custom and use it
-            if (route.getRouteContext().getRoute().hasCustomIdAssigned()) {
+            RouteDefinition definition = (RouteDefinition) route.getRouteContext().getRoute();
+            if (definition.hasCustomIdAssigned()) {
                 serviceId = route.getId();
             }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicyFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicyFactory.java
index 54825fc..1586a8b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicyFactory.java
@@ -17,8 +17,8 @@
 package org.apache.camel.impl.cloud;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.cloud.ServiceRegistry;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.slf4j.Logger;
@@ -44,7 +44,7 @@ public class ServiceRegistrationRoutePolicyFactory implements RoutePolicyFactory
     }
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
         return new ServiceRegistrationRoutePolicy(serviceRegistry, serviceRegistrySelector);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
index cd42954..1d5feff 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
@@ -32,6 +32,7 @@ import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Experimental;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.impl.DefaultRouteController;
@@ -292,7 +293,8 @@ public class ClusteredRouteController extends DefaultRouteController {
 
     private final class PolicyFactory implements RoutePolicyFactory {
         @Override
-        public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+        public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode node) {
+            RouteDefinition route = (RouteDefinition) node;
             // All the filter have to be match to include the route in the
             // clustering set-up
             if (filters.stream().allMatch(filter -> filter.test(camelContext, routeId, route))) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index 4ef7fa0..b35972b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -38,6 +38,7 @@ import org.apache.camel.cluster.CamelClusterMember;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.cluster.CamelClusterView;
 import org.apache.camel.management.event.CamelContextStartedEvent;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.util.ObjectHelper;
@@ -153,12 +154,15 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
     // life-cycle
     // ****************************************************
 
+    private RouteDefinition definition(Route route) {
+        return (RouteDefinition) route.getRouteContext().getRoute();
+    }
     @Override
     public void onInit(Route route) {
         super.onInit(route);
 
         LOGGER.info("Route managed by {}. Setting route {} AutoStartup flag to false.", getClass(), route.getId());
-        route.getRouteContext().getRoute().setAutoStartup("false");
+        definition(route).setAutoStartup("false");
 
         this.refCount.retain();
         this.stoppedRoutes.add(route);
@@ -229,7 +233,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
 
         try {
             for (Route route : stoppedRoutes) {
-                ServiceStatus status = route.getRouteContext().getRoute().getStatus(getCamelContext());
+                ServiceStatus status = definition(route).getStatus(getCamelContext());
                 if (status.isStartable()) {
                     LOGGER.debug("Starting route '{}'", route.getId());
                     camelContext.getRouteController().startRoute(route.getId());
@@ -261,7 +265,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
 
         try {
             for (Route route : startedRoutes) {
-                ServiceStatus status = route.getRouteContext().getRoute().getStatus(getCamelContext());
+                ServiceStatus status = definition(route).getStatus(getCamelContext());
                 if (status.isStoppable()) {
                     LOGGER.debug("Stopping route '{}'", route.getId());
                     stopRoute(route);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
index c1b97e1..9ff0e2f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicyFactory.java
@@ -17,9 +17,9 @@
 package org.apache.camel.impl.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.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.util.ObjectHelper;
@@ -56,7 +56,7 @@ public class ClusteredRoutePolicyFactory implements RoutePolicyFactory {
     }
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
         try {
             return clusterService != null
                 ? ClusteredRoutePolicy.forNamespace(clusterService, namespace)
diff --git a/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java
index 58e63e0..f9ea05c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckRegistry.java
@@ -43,10 +43,8 @@ public class DefaultHealthCheckRegistry implements HealthCheckRegistry {
 
     public DefaultHealthCheckRegistry(CamelContext camelContext) {
         this.checks = new CopyOnWriteArraySet<>();
-
         this.repositories = new CopyOnWriteArraySet<>();
         this.repositories.add(new RegistryRepository());
-        this.repositories.addAll(repositories);
 
         setCamelContext(camelContext);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java b/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
index 8d7a198..a25e1a1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
@@ -28,6 +28,7 @@ import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.health.HealthCheckResultBuilder;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,7 +59,7 @@ public class RouteHealthCheck extends AbstractHealthCheck {
     protected void doCall(HealthCheckResultBuilder builder, Map<String, Object> options) {
         if (route.getId() != null) {
             final CamelContext context = route.getRouteContext().getCamelContext();
-            final ServiceStatus status = context.getRouteStatus(route.getId());
+            final ServiceStatus status = context.getRouteController().getRouteStatus(route.getId());
 
             builder.detail("route.id", route.getId());
             builder.detail("route.status", status.name());
@@ -87,7 +88,7 @@ public class RouteHealthCheck extends AbstractHealthCheck {
             if (builder.state() != State.DOWN) {
                 // If JMX is enabled, use the Managed MBeans to determine route
                 // health based on performance counters.
-                ManagedRouteMBean managedRoute = context.getManagedRoute(route.getId(), ManagedRouteMBean.class);
+                ManagedRouteMBean managedRoute = context.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class);
 
                 if (managedRoute != null && !evaluators.isEmpty()) {
                     Map<String, Object> details = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 3fbe3c8..5ff6da4 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -756,7 +756,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         // 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 = routeContext.getRoute();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
 
         // register performance counters for all processors and its children
         for (ProcessorDefinition<?> processor : route.getOutputs()) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
index 0b0a3c8..351766a 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
@@ -25,6 +25,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.DelegateProcessor;
 import org.apache.camel.Endpoint;
 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;
@@ -281,9 +282,11 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
 
     @SuppressWarnings({"deprecation", "unchecked"})
     public Object getManagedObjectForProcessor(CamelContext context, Processor processor,
-                                               ProcessorDefinition<?> definition, Route route) {
+                                               NamedNode node, Route route) {
         ManagedProcessor answer = null;
 
+        ProcessorDefinition<?> definition = (ProcessorDefinition<?>) node;
+
         if (definition instanceof RecipientListDefinition) {
             // special for RecipientListDefinition, as the processor is wrapped in a pipeline as last
             Pipeline pipeline = (Pipeline) processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
index 9dddbc8..e92703f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
@@ -22,6 +22,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.NamedNode;
 import org.apache.camel.management.event.DefaultEventFactory;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.EventFactory;
@@ -120,7 +121,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         this.managementAgent = managementAgent;
     }
 
-    public boolean manageProcessor(ProcessorDefinition<?> definition) {
+    public boolean manageProcessor(NamedNode definition) {
         return false;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
index 8dcc7d1..a1712a1 100644
--- a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
@@ -19,6 +19,7 @@ package org.apache.camel.management;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.api.management.PerformanceCounter;
 import org.apache.camel.management.mbean.ManagedPerformanceCounter;
@@ -58,7 +59,7 @@ public class InstrumentationInterceptStrategy implements InterceptStrategy {
         return counter;
     }
 
-    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition,
+    public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
                                                  Processor target, Processor nextTarget) throws Exception {
         // no longer in use as we have optimised to avoid wrapping unless needed
         return target;
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContext.java b/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContext.java
new file mode 100644
index 0000000..4de1dd8
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContext.java
@@ -0,0 +1,50 @@
+/**
+ * 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.management;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
+import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
+import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+
+public interface ManagedCamelContext extends CamelContext {
+    /**
+     * Gets the managed processor client api from any of the routes which with the given id
+     *
+     * @param id id of the processor
+     * @param type the managed processor type from the {@link org.apache.camel.api.management.mbean} package.
+     * @return the processor or <tt>null</tt> if not found
+     * @throws IllegalArgumentException if the type is not compliant
+     */
+    <T extends ManagedProcessorMBean> T getManagedProcessor(String id, Class<T> type);
+
+    /**
+     * Gets the managed route client api with the given route id
+     *
+     * @param routeId id of the route
+     * @param type the managed route type from the {@link org.apache.camel.api.management.mbean} package.
+     * @return the route or <tt>null</tt> if not found
+     * @throws IllegalArgumentException if the type is not compliant
+     */
+    <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type);
+
+    /**
+     * Gets the managed Camel CamelContext client api
+     */
+    ManagedCamelContextMBean getManagedCamelContext();
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index e1c7f79..97686df 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -20,6 +20,7 @@ import javax.management.ObjectName;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.NamedNode;
 import org.apache.camel.management.mbean.ManagedBacklogDebugger;
 import org.apache.camel.management.mbean.ManagedBacklogTracer;
 import org.apache.camel.management.mbean.ManagedCamelContext;
@@ -173,7 +174,7 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
     }
 
     @Override
-    public boolean manageProcessor(ProcessorDefinition<?> definition) {
+    public boolean manageProcessor(NamedNode definition) {
         return true;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java b/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
index 62bc649..654b063 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
@@ -36,6 +36,7 @@ import org.xml.sax.helpers.DefaultHandler;
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.management.ManagedCamelContext;
 
 /**
  * An XML parser that uses SAX to enrich route stats in the route dump.
@@ -90,7 +91,7 @@ public final class RouteCoverageXmlParser {
                 if (id != null) {
                     try {
                         if ("route".equals(qName)) {
-                            ManagedRouteMBean route = camelContext.getManagedRoute(id, ManagedRouteMBean.class);
+                            ManagedRouteMBean route = camelContext.adapt(ManagedCamelContext.class).getManagedRoute(id, ManagedRouteMBean.class);
                             if (route != null) {
                                 long total = route.getExchangesTotal();
                                 el.setAttribute("exchangesTotal", "" + total);
@@ -102,7 +103,7 @@ public final class RouteCoverageXmlParser {
                             Element parent = elementStack.peek();
                             if (parent != null) {
                                 String routeId = parent.getAttribute("id");
-                                ManagedRouteMBean route = camelContext.getManagedRoute(routeId, ManagedRouteMBean.class);
+                                ManagedRouteMBean route = camelContext.adapt(ManagedCamelContext.class).getManagedRoute(routeId, ManagedRouteMBean.class);
                                 if (route != null) {
                                     long total = route.getExchangesTotal();
                                     el.setAttribute("exchangesTotal", "" + total);
@@ -113,7 +114,7 @@ public final class RouteCoverageXmlParser {
                                 }
                             }
                         } else {
-                            ManagedProcessorMBean processor = camelContext.getManagedProcessor(id, ManagedProcessorMBean.class);
+                            ManagedProcessorMBean processor = camelContext.adapt(ManagedCamelContext.class).getManagedProcessor(id, ManagedProcessorMBean.class);
                             if (processor != null) {
                                 long total = processor.getExchangesTotal();
                                 el.setAttribute("exchangesTotal", "" + total);
diff --git a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
index 11d8090..05a29fa 100644
--- a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
@@ -91,7 +91,8 @@ public class DynamicRouterDefinition<Type extends ProcessorDefinition<Type>> ext
         }
 
         // and wrap this in an error handler
-        ErrorHandlerFactory builder = routeContext.getRoute().getErrorHandlerBuilder();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
         // create error handler (create error handler directly to keep it light weight,
         // instead of using ProcessorDefinition.wrapInErrorHandler)
         AsyncProcessor errorHandler = (AsyncProcessor) builder.createErrorHandler(routeContext, dynamicRouter.newRoutingSlipProcessorForErrorHandler());
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
index 475b9c9..4f1b786 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.Pipeline;
@@ -84,7 +85,7 @@ public class InterceptDefinition extends OutputDefinition<InterceptDefinition> {
         routeContext.getInterceptStrategies().add(new InterceptStrategy() {
             private Processor interceptedTarget;
 
-            public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition,
+            public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
                                                          Processor target, Processor nextTarget) throws Exception {
                 // store the target we are intercepting
                 this.interceptedTarget = target;
@@ -107,7 +108,7 @@ public class InterceptDefinition extends OutputDefinition<InterceptDefinition> {
         });
 
         // remove me from the route so I am not invoked in a regular route path
-        routeContext.getRoute().getOutputs().remove(this);
+        ((RouteDefinition) routeContext.getRoute()).getOutputs().remove(this);
         // and return no processor to invoke next from me
         return null;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
index aa3c113..efe90cb 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
@@ -120,7 +120,7 @@ public class InterceptSendToEndpointDefinition extends OutputDefinition<Intercep
         // remove the original intercepted route from the outputs as we do not intercept as the regular interceptor
         // 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 = routeContext.getRoute();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
         List<ProcessorDefinition<?>> outputs = route.getOutputs();
         outputs.remove(this);
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
index 123a6cd..906765d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
@@ -138,7 +138,8 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi
             routeContext.setAllowUseOriginalMessage(true);
         }
 
-        String routeId = routeContext.getRoute().idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        String routeId = route.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
 
         Processor childProcessor = this.createChildProcessor(routeContext, true);
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
index e19b642..21939e1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
@@ -215,7 +215,8 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
             errorHandlers.put(id, errorHandler);
         }
         // lookup the error handler builder
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder)routeContext.getRoute().getErrorHandlerBuilder();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerBuilder();
         // and add this as error handlers
         builder.addErrorHandlers(routeContext, this);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index bf1f76e..a102dbd 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -370,7 +370,8 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @throws Exception can be thrown if failed to create error handler builder
      */
     protected Processor wrapInErrorHandler(RouteContext routeContext, Processor output) throws Exception {
-        ErrorHandlerFactory builder = routeContext.getRoute().getErrorHandlerBuilder();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
         // create error handler
         Processor errorHandler = builder.createErrorHandler(routeContext, output);
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
index 7c9b1c4..6e01845 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinitionHelper.java
@@ -30,6 +30,7 @@ import javax.xml.namespace.QName;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CamelContextHelper;
@@ -145,12 +146,12 @@ public final class ProcessorDefinitionHelper {
      * @param node the node
      * @return the route, or <tt>null</tt> if not possible to find
      */
-    public static RouteDefinition getRoute(ProcessorDefinition<?> node) {
+    public static RouteDefinition getRoute(NamedNode node) {
         if (node == null) {
             return null;
         }
 
-        ProcessorDefinition<?> def = node;
+        ProcessorDefinition<?> def = (ProcessorDefinition) node;
         // drill to the top
         while (def != null && def.getParent() != null) {
             def = def.getParent();
@@ -170,7 +171,7 @@ public final class ProcessorDefinitionHelper {
      * @param node the node
      * @return the route id, or <tt>null</tt> if not possible to find
      */
-    public static String getRouteId(ProcessorDefinition<?> node) {
+    public static String getRouteId(NamedNode node) {
         RouteDefinition route = getRoute(node);
         return route != null ? route.getId() : null;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index 079d24a..c74e264 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -228,7 +228,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     }
 
     public RouteDefinition adviceWith(CamelContext camelContext, RouteBuilder builder) throws Exception {
-        return adviceWith((ModelCamelContext)camelContext, builder);
+        return adviceWith(camelContext.adapt(ModelCamelContext.class), builder);
     }
 
     /**
@@ -255,7 +255,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
      * @throws Exception can be thrown from the route builder
      * @see AdviceWithRouteBuilder
      */
-    @SuppressWarnings("deprecation")
     public RouteDefinition adviceWith(ModelCamelContext camelContext, RouteBuilder builder) throws Exception {
         ObjectHelper.notNull(camelContext, "CamelContext");
         ObjectHelper.notNull(builder, "RouteBuilder");
@@ -303,7 +302,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         RouteDefinition merged = routes.route(this);
 
         // add the new merged route
-        camelContext.getRouteDefinitions().add(0, merged);
+        camelContext.addRouteDefinition(merged);
 
         // log the merged route at info level to make it easier to end users to spot any mistakes they may have made
         log.info("AdviceWith route after: {}", merged);
@@ -311,13 +310,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         String afterAsXml = ModelHelper.dumpModelAsXml(camelContext, merged);
         log.info("Adviced route before/after as XML:\n{}\n{}", beforeAsXml, afterAsXml);
 
-        // If the camel context is started then we start the route
-        if (camelContext instanceof StatefulService) {
-            StatefulService service = (StatefulService) camelContext;
-            if (service.isStarted()) {
-                camelContext.startRoute(merged);
-            }
-        }
         return merged;
     }
 
@@ -1336,7 +1328,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
 
         // validate route has output processors
         if (!ProcessorDefinitionHelper.hasOutputs(outputs, true)) {
-            RouteDefinition route = routeContext.getRoute();
+            RouteDefinition route = (RouteDefinition) routeContext.getRoute();
             String at = fromType.toString();
             Exception cause = new IllegalArgumentException("Route " + route.getId() + " has no output processors."
                     + " You need to add outputs to the route such as to(\"log:foo\").");
@@ -1348,7 +1340,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
             try {
                 output.addRoutes(routeContext, routes);
             } catch (Exception e) {
-                RouteDefinition route = routeContext.getRoute();
+                RouteDefinition route = (RouteDefinition) routeContext.getRoute();
                 throw new FailedToCreateRouteException(route.getId(), route.toString(), output.toString(), e);
             }
         }
diff --git a/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
index 4779360..d5caaef 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
@@ -101,7 +101,8 @@ public class RoutingSlipDefinition<Type extends ProcessorDefinition<Type>> exten
         }
 
         // and wrap this in an error handler
-        ErrorHandlerFactory builder = routeContext.getRoute().getErrorHandlerBuilder();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
         // create error handler (create error handler directly to keep it light weight,
         // instead of using ProcessorDefinition.wrapInErrorHandler)
         AsyncProcessor errorHandler = (AsyncProcessor) builder.createErrorHandler(routeContext, routingSlip.newRoutingSlipProcessorForErrorHandler());
diff --git a/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
index 4e4c352..4351609 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
@@ -83,11 +83,7 @@ public class SortDefinition<T> extends NoOutputExpressionNode {
 
         // if no comparator then default on to string representation
         if (comparator == null) {
-            comparator = new Comparator<T>() {
-                public int compare(T o1, T o2) {
-                    return ObjectHelper.compare(o1, o2);
-                }
-            };
+            comparator = (Comparator<T>) ObjectHelper::compare;
         }
 
         // if no expression provided then default to body expression
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java
index 34790a3..d4ea3a7 100644
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java
@@ -55,6 +55,7 @@ import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.function.Suppliers;
+import org.apache.camel.util.function.ThrowingHelper;
 
 import static org.apache.camel.util.CamelContextHelper.findByType;
 import static org.apache.camel.util.CamelContextHelper.lookup;
@@ -814,8 +815,8 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
         // Service name is mandatory
         ObjectHelper.notNull(name, "Service name");
 
-        endpointScheme = ObjectHelper.applyIfNotEmpty(endpointScheme, camelContext::resolvePropertyPlaceholders, () -> ServiceCallDefinitionConstants.DEFAULT_COMPONENT);
-        endpointUri = ObjectHelper.applyIfNotEmpty(endpointUri, camelContext::resolvePropertyPlaceholders, () -> null);
+        endpointScheme = ThrowingHelper.applyIfNotEmpty(endpointScheme, camelContext::resolvePropertyPlaceholders, () -> ServiceCallDefinitionConstants.DEFAULT_COMPONENT);
+        endpointUri = ThrowingHelper.applyIfNotEmpty(endpointUri, camelContext::resolvePropertyPlaceholders, () -> null);
 
         return new DefaultServiceCallProcessor(
             camelContext,
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index 3746d4f..b1da7ef 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -36,6 +36,7 @@ import org.apache.camel.management.DelegatePerformanceCounter;
 import org.apache.camel.management.mbean.ManagedPerformanceCounter;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.DefaultBacklogTracerEventMessage;
@@ -607,7 +608,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
         public UnitOfWorkProcessorAdvice(RouteContext routeContext) {
             this.routeContext = routeContext;
             if (routeContext != null) {
-                this.routeId = routeContext.getRoute().idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
+                RouteDefinition definition = (RouteDefinition) routeContext.getRoute();
+                this.routeId = definition.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
             }
         }
 
@@ -617,7 +619,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
             // from this unit of work
             if (routeContext != null && exchange.getFromRouteId() == null) {
                 if (routeId == null) {
-                    routeId = routeContext.getRoute().idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
+                    RouteDefinition definition = (RouteDefinition) routeContext.getRoute();
+                    routeId = definition.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
                 }
                 exchange.setFromRouteId(routeId);
             }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index 0f9a2d2..c3f5dd0 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -48,6 +48,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.StreamCache;
 import org.apache.camel.Traceable;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
 import org.apache.camel.processor.aggregate.CompletionAwareAggregationStrategy;
 import org.apache.camel.processor.aggregate.DelegateAggregationStrategy;
@@ -1068,7 +1069,8 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
             }
 
             LOG.trace("Creating error handler for: {}", processor);
-            ErrorHandlerFactory builder = routeContext.getRoute().getErrorHandlerBuilder();
+            RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+            ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
             // create error handler (create error handler directly to keep it light weight,
             // instead of using ProcessorDefinition.wrapInErrorHandler)
             try {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java b/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
index 2188777..f8d10aa 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Resequencer.java
@@ -258,29 +258,14 @@ public class Resequencer extends ServiceSupport implements AsyncProcessor, Navig
         Comparator<? super Exchange> answer = comparator;
 
         if (reverse) {
-            answer = new Comparator<Exchange>() {
-                public int compare(Exchange o1, Exchange o2) {
-                    int answer = comparator.compare(o1, o2);
-                    // reverse it
-                    return answer * -1;
-                }
-            };
+            answer = comparator.reversed();
         }
 
         // if we allow duplicates then we need to cater for that in the comparator
-        final Comparator<? super Exchange> forAllowDuplicates = answer;
         if (allowDuplicates) {
-            answer = new Comparator<Exchange>() {
-                public int compare(Exchange o1, Exchange o2) {
-                    int answer = forAllowDuplicates.compare(o1, o2);
-                    if (answer == 0) {
-                        // they are equal but we should allow duplicates so say that o2 is higher
-                        // so it will come next
-                        return 1;
-                    }
-                    return answer;
-                }
-            };
+            // they are equal but we should allow duplicates so say that o2 is higher
+            // so it will come next
+            answer = answer.thenComparing((o1, o2) -> 1);
         }
 
         return new TreeSet<>(answer);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java b/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
index c9d8781..5d923e3 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
@@ -135,7 +135,7 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy {
             // if OnException is route scoped then the current route (Exchange) must match
             // so we will not pick an OnException from another route
             if (exchange != null && exchange.getUnitOfWork() != null && type.isRouteScoped()) {
-                RouteDefinition route = exchange.getUnitOfWork().getRouteContext() != null ? exchange.getUnitOfWork().getRouteContext().getRoute() : null;
+                RouteDefinition route = exchange.getUnitOfWork().getRouteContext() != null ? (RouteDefinition) exchange.getUnitOfWork().getRouteContext().getRoute() : null;
                 RouteDefinition typeRoute = ProcessorDefinitionHelper.getRoute(type);
                 if (route != null && typeRoute != null && route != typeRoute) {
                     if (LOG.isTraceEnabled()) {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index 7cafc39..5fb2efa 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicLong;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
+import org.apache.camel.NamedNode;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
@@ -116,7 +117,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
 
     @Override
     @Deprecated
-    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+    public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
         throw new UnsupportedOperationException("Deprecated");
     }
 
@@ -544,7 +545,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
         }
 
         @Override
-        public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+        public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
             // store a copy of the message so we can see that from the debugger
             Date timestamp = new Date();
             String toNode = definition.getId();
@@ -575,7 +576,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
         }
 
         @Override
-        public boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+        public boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition) {
             // must match node
             if (!nodeId.equals(definition.getId())) {
                 return false;
@@ -604,7 +605,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
     private final class StepBreakpoint extends BreakpointSupport implements Condition {
 
         @Override
-        public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+        public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
             // store a copy of the message so we can see that from the debugger
             Date timestamp = new Date();
             String toNode = definition.getId();
@@ -635,7 +636,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
         }
 
         @Override
-        public boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+        public boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition) {
             return true;
         }
 
@@ -645,7 +646,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
         }
 
         @Override
-        public void onEvent(Exchange exchange, EventObject event, ProcessorDefinition<?> definition) {
+        public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
             // when the exchange is complete, we need to turn off single step mode if we were debug stepping the exchange
             if (event instanceof ExchangeCompletedEvent) {
                 String completedId = ((ExchangeCompletedEvent) event).getExchange().getExchangeId();
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
index 72d3964..a308493 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
@@ -24,6 +24,7 @@ import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.api.management.mbean.BacklogTracerEventMessage;
@@ -71,7 +72,7 @@ public final class BacklogTracer extends ServiceSupport implements InterceptStra
 
     @Override
     @Deprecated
-    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+    public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
         throw new UnsupportedOperationException("Deprecated");
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/Debug.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/Debug.java
index c4750b2..dae546d 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/Debug.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/Debug.java
@@ -19,8 +19,8 @@ package org.apache.camel.processor.interceptor;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.InterceptStrategy;
@@ -39,7 +39,7 @@ public class Debug implements InterceptStrategy {
         this.debugger = debugger;
     }
 
-    public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+    public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                  final Processor target, final Processor nextTarget) throws Exception {
         return new DelegateAsyncProcessor(target) {
             @Override
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/HandleFault.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/HandleFault.java
index 19ee9a1..a07bb8e 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/HandleFault.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/HandleFault.java
@@ -19,8 +19,8 @@ package org.apache.camel.processor.interceptor;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 
 /**
@@ -28,8 +28,8 @@ import org.apache.camel.spi.InterceptStrategy;
  */
 public final class HandleFault implements InterceptStrategy {
 
-    public Processor wrapProcessorInInterceptors(CamelContext context, 
-            ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+    public Processor wrapProcessorInInterceptors(CamelContext context,
+                                                 NamedNode definition, Processor target, Processor nextTarget) throws Exception {
 
         return new HandleFaultInterceptor(target);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java b/camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java
index 0fdac64..d39efbd 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java
@@ -19,8 +19,8 @@ package org.apache.camel.spi;
 import java.util.EventObject;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 
 /**
  * {@link org.apache.camel.spi.Breakpoint} are used by the {@link org.apache.camel.spi.Debugger} API.
@@ -64,32 +64,30 @@ public interface Breakpoint {
 
     /**
      * Callback invoked when the breakpoint was hit and the {@link Exchange} is about to be processed (before).
-     *
-     * @param exchange   the {@link Exchange}
+     *  @param exchange   the {@link Exchange}
      * @param processor  the {@link Processor} about to be processed
-     * @param definition the {@link org.apache.camel.model.ProcessorDefinition} definition of the processor
+     * @param definition the {@link NamedNode} definition of the processor
      */
-    void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition);
+    void beforeProcess(Exchange exchange, Processor processor, NamedNode definition);
 
     /**
      * Callback invoked when the breakpoint was hit and the {@link Exchange} has been processed (after).
-     *
-     * @param exchange   the {@link Exchange}
+     *  @param exchange   the {@link Exchange}
      * @param processor  the {@link Processor} which was processed
-     * @param definition the {@link org.apache.camel.model.ProcessorDefinition} definition of the processor
+     * @param definition the {@link NamedNode} definition of the processor
      * @param timeTaken  time in millis it took to process the {@link Exchange} - time spend in breakpoint callbacks may affect this time
      */
-    void afterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken);
+    void afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken);
 
     /**
      * Callback invoked when the breakpoint was hit and any of the {@link Exchange} {@link EventObject event}s occurred.
      *
      * @param exchange   the {@link Exchange}
      * @param event      the event (instance of {@link org.apache.camel.management.event.AbstractExchangeEvent}
-     * @param definition the {@link org.apache.camel.model.ProcessorDefinition} definition of the last processor executed,
+     * @param definition the {@link NamedNode} definition of the last processor executed,
      *                   may be <tt>null</tt> if not possible to resolve from tracing
      * @see org.apache.camel.management.event.AbstractExchangeEvent
      */
-    void onEvent(Exchange exchange, EventObject event, ProcessorDefinition<?> definition);
+    void onEvent(Exchange exchange, EventObject event, NamedNode definition);
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java b/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java
index 70ae227..429b155 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java
@@ -17,19 +17,32 @@
 package org.apache.camel.spi;
 
 import java.io.Closeable;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.function.Predicate;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.impl.CamelContextTrackerRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A {@link CamelContext} creation tracker.
  */
 public class CamelContextTracker implements Closeable {
 
-    public interface Filter {
+    private static final Logger LOG = LoggerFactory.getLogger(CamelContextTracker.class);
+
+    private static final List<CamelContextTracker> TRACKERS = new CopyOnWriteArrayList<>();
+
+    @FunctionalInterface
+    public interface Filter extends Predicate<CamelContext> {
 
         boolean accept(CamelContext camelContext);
 
+        @Override
+        default boolean test(CamelContext camelContext) {
+            return accept(camelContext);
+        }
     }
 
     private final Filter filter;
@@ -61,10 +74,22 @@ public class CamelContextTracker implements Closeable {
     }
 
     public final void open() {
-        CamelContextTrackerRegistry.INSTANCE.addTracker(this);
+        TRACKERS.add(this);
     }
 
     public final void close() {
-        CamelContextTrackerRegistry.INSTANCE.removeTracker(this);
+        TRACKERS.remove(this);
+    }
+
+    public static synchronized void notifyContextCreated(CamelContext camelContext) {
+        for (CamelContextTracker tracker : TRACKERS) {
+            try {
+                if (tracker.accept(camelContext)) {
+                    tracker.contextCreated(camelContext);
+                }
+            } catch (Exception e) {
+                LOG.warn("Error calling CamelContext tracker. This exception is ignored.", e);
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Condition.java b/camel-core/src/main/java/org/apache/camel/spi/Condition.java
index 7564b81..9d29f5c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/Condition.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/Condition.java
@@ -19,8 +19,8 @@ package org.apache.camel.spi;
 import java.util.EventObject;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 
 /**
  * A condition to define when a given {@link Exchange} matches when is being routed.
@@ -40,7 +40,7 @@ public interface Condition {
      * @param definition the present location in the route where the {@link Exchange} is located at
      * @return <tt>true</tt> to match, <tt>false</tt> otherwise
      */
-    boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition);
+    boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition);
 
     /**
      * Does the condition match
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Debugger.java b/camel-core/src/main/java/org/apache/camel/spi/Debugger.java
index 6c8f1eb..79b523d 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/Debugger.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/Debugger.java
@@ -21,9 +21,9 @@ import java.util.List;
 
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.Service;
-import org.apache.camel.model.ProcessorDefinition;
 
 /**
  * A debugger which allows tooling to attach breakpoints which is is being invoked
@@ -119,7 +119,7 @@ public interface Debugger extends Service, CamelContextAware {
      * @param definition the definition of the processor
      * @return <tt>true</tt> if any breakpoint was hit, <tt>false</tt> if not breakpoint was hit
      */
-    boolean beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition);
+    boolean beforeProcess(Exchange exchange, Processor processor, NamedNode definition);
 
     /**
      * Callback invoked when an {@link Exchange} has been processed which allows implementators
@@ -131,7 +131,7 @@ public interface Debugger extends Service, CamelContextAware {
      * @param timeTaken  time in millis it took to process the {@link Exchange} - time spend in breakpoint callbacks may affect this time
      * @return <tt>true</tt> if any breakpoint was hit, <tt>false</tt> if not breakpoint was hit
      */
-    boolean afterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken);
+    boolean afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken);
 
     /**
      * Callback invoked when an {@link Exchange} is being processed which allows implementators
diff --git a/camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java
index b8fdffe..0b8e2f2 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java
@@ -17,8 +17,8 @@
 package org.apache.camel.spi;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 
 /**
  * The purpose of this interface is to allow an implementation to wrap
@@ -42,7 +42,7 @@ public interface InterceptStrategy {
 
     /**
      * This method is invoked by
-     * {@link ProcessorDefinition#wrapProcessor(RouteContext, Processor)}
+     * {@link org.apache.camel.model.ProcessorDefinition#wrapProcessor(RouteContext, Processor)}
      * to give the implementor an opportunity to wrap the target processor
      * in a route.
      * <p/>
@@ -56,6 +56,6 @@ public interface InterceptStrategy {
      * @return processor    wrapped with an interceptor or not wrapped.
      * @throws Exception can be thrown
      */
-    Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, 
+    Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
                                           Processor target, Processor nextTarget) throws Exception;
 }
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LogListener.java b/camel-core/src/main/java/org/apache/camel/spi/LogListener.java
index 4d8bf9e..620276b 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/LogListener.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/LogListener.java
@@ -18,21 +18,18 @@ package org.apache.camel.spi;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.processor.CamelLogProcessor;
-import org.apache.camel.processor.LogProcessor;
 import org.apache.camel.util.CamelLogger;
-import org.slf4j.Marker;
 
 /**
- * An event listener SPI for logging. Listeners are registered into {@link LogProcessor} and
- * {@link CamelLogProcessor} so that the logging events are delivered for both of Log Component and Log EIP.
+ * An event listener SPI for logging. Listeners are registered into {@link org.apache.camel.processor.LogProcessor} and
+ * {@link org.apache.camel.processor.CamelLogProcessor} so that the logging events are delivered for both of Log Component and Log EIP.
  * 
  */
 public interface LogListener {
 
     /**
      * Invoked right before Log component or Log EIP logs.
-     * Note that {@link CamelLogger} holds the {@link LoggingLevel} and {@link Marker}.
+     * Note that {@link CamelLogger} holds the {@link LoggingLevel} and {@link org.slf4j.Marker}.
      * The listener can check {@link CamelLogger#getLevel()} to see in which log level
      * this is going to be logged.
      * 
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
index 1c6eb6b..4868818 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
@@ -23,12 +23,12 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
 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.model.ProcessorDefinition;
 
 /**
  * Strategy for creating the managed object for the various beans Camel register for management.
@@ -57,7 +57,7 @@ public interface ManagementObjectStrategy {
     Object getManagedObjectForProducer(CamelContext context, Producer producer);
 
     Object getManagedObjectForProcessor(CamelContext context, Processor processor,
-                                        ProcessorDefinition<?> definition, Route route);
+                                        NamedNode definition, Route route);
 
     Object getManagedObjectForService(CamelContext context, Service service);
 
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
index 8028531..d723de8 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
@@ -19,9 +19,8 @@ package org.apache.camel.spi;
 import java.util.EventObject;
 import java.util.List;
 
-import org.apache.camel.ManagementStatisticsLevel;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Service;
-import org.apache.camel.model.ProcessorDefinition;
 
 /**
  * Strategy for management.
@@ -199,6 +198,6 @@ public interface ManagementStrategy extends Service {
      * @param definition definition of the processor
      * @return <tt>true</tt> to manage it
      */
-    boolean manageProcessor(ProcessorDefinition<?> definition);
+    boolean manageProcessor(NamedNode definition);
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Policy.java b/camel-core/src/main/java/org/apache/camel/spi/Policy.java
index aa806f6..b2fcd0c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/Policy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/Policy.java
@@ -16,8 +16,8 @@
  */
 package org.apache.camel.spi;
 
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 
 /**
  * A strategy capable of applying interceptors to a processor.
@@ -41,12 +41,12 @@ public interface Policy {
      * Hook invoked before the wrap.
      * <p/>
      * 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}
+     * manipulate the {@link org.apache.camel.model.ProcessorDefinition definiton}.
      *
      * @param routeContext   the route context
      * @param definition     the processor definition
      */
-    void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition);
+    void beforeWrap(RouteContext routeContext, NamedNode definition);
 
     /**
      * Wraps any applicable interceptors around the given processor.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java b/camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java
index 2639e3e..d32f03f 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java
@@ -16,8 +16,8 @@
  */
 package org.apache.camel.spi;
 
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 
 /**
  * A factory to create {@link Processor} based on the {@link org.apache.camel.model.ProcessorDefinition definition}.
@@ -46,7 +46,7 @@ public interface ProcessorFactory {
      * @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, ProcessorDefinition<?> definition, boolean mandatory) throws Exception;
+    Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception;
 
     /**
      * Creates the processor.
@@ -56,6 +56,6 @@ public interface ProcessorFactory {
      * @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, ProcessorDefinition<?> definition) throws Exception;
+    Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception;
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java b/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
index a8cad9c..119cd48 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -23,11 +23,9 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointAware;
 import org.apache.camel.Experimental;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeConfiguration;
-import org.apache.camel.model.FromDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.RouteDefinition;
 
 /**
  * The context used to activate new routing rules
@@ -41,14 +39,14 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
      *
      * @return the from type
      */
-    FromDefinition getFrom();
+    NamedNode getFrom();
 
     /**
      * Get the route type
      *
      * @return the route type
      */
-    RouteDefinition getRoute();
+    NamedNode getRoute();
 
     /**
      * Gets the camel context
@@ -152,7 +150,7 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
     InterceptStrategy getManagedInterceptStrategy();
 
     /**
-     * If this flag is true, {@link ProcessorDefinition#addRoutes(RouteContext, java.util.Collection)}
+     * If this flag is true, {@link org.apache.camel.model.ProcessorDefinition#addRoutes(RouteContext, java.util.Collection)}
      * will not add processor to addEventDrivenProcessor to the RouteContext and it
      * will prevent from adding an EventDrivenRoute.
      *
@@ -191,7 +189,7 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
      * @param node the current node
      * @return the current count
      */
-    int getAndIncrement(ProcessorDefinition<?> node);
+    int getAndIncrement(NamedNode node);
 
     /**
      * Gets the last error.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteController.java b/camel-core/src/main/java/org/apache/camel/spi/RouteController.java
index f6f03e7..5cb8600 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/RouteController.java
@@ -19,16 +19,17 @@ package org.apache.camel.spi;
 import java.util.Collection;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Experimental;
 import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
+import org.apache.camel.StaticService;
 
 // TODO: Add javadoc
 
-@Experimental
-public interface RouteController extends CamelContextAware, Service {
+public interface RouteController extends CamelContextAware, StaticService {
 
     /**
      * Return the list of routes controlled by this controller.
@@ -54,20 +55,96 @@ public interface RouteController extends CamelContextAware, Service {
      */
     boolean isStartingRoutes();
 
+    /**
+     * Returns the current status of the given route
+     *
+     * @param routeId the route id
+     * @return the status for the route
+     */
     ServiceStatus getRouteStatus(String routeId);
 
+    /**
+     * Starts the given route if it has been previously stopped
+     *
+     * @param routeId the route id
+     * @throws Exception is thrown if the route could not be started for whatever reason
+     */
     void startRoute(String routeId) throws Exception;
 
+    /**
+     * Stops the given route using {@link org.apache.camel.spi.ShutdownStrategy}.
+     *
+     * @param routeId the route id
+     * @throws Exception is thrown if the route could not be stopped for whatever reason
+     * @see #suspendRoute(String)
+     */
     void stopRoute(String routeId) throws Exception;
 
+    /**
+     * Stops the given route using {@link org.apache.camel.spi.ShutdownStrategy} with a specified timeout.
+     *
+     * @param routeId the route id
+     * @param timeout  timeout
+     * @param timeUnit the unit to use
+     * @throws Exception is thrown if the route could not be stopped for whatever reason
+     * @see #suspendRoute(String, long, java.util.concurrent.TimeUnit)
+     */
     void stopRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception;
 
+    /**
+     * Stops the given route using {@link org.apache.camel.spi.ShutdownStrategy} with a specified timeout
+     * and optional abortAfterTimeout mode.
+     *
+     * @param routeId the route id
+     * @param timeout  timeout
+     * @param timeUnit the unit to use
+     * @param abortAfterTimeout should abort shutdown after timeout
+     * @return <tt>true</tt> if the route is stopped before the timeout
+     * @throws Exception is thrown if the route could not be stopped for whatever reason
+     * @see #suspendRoute(String, long, java.util.concurrent.TimeUnit)
+     */
     boolean stopRoute(String routeId, long timeout, TimeUnit timeUnit, boolean abortAfterTimeout) throws Exception;
 
+    /**
+     * Suspends the given route using {@link org.apache.camel.spi.ShutdownStrategy}.
+     * <p/>
+     * Suspending a route is more gently than stopping, as the route consumers will be suspended (if they support)
+     * otherwise the consumers will be stopped.
+     * <p/>
+     * By suspending the route services will be kept running (if possible) and therefore its faster to resume the route.
+     * <p/>
+     * If the route does <b>not</b> support suspension the route will be stopped instead
+     *
+     * @param routeId the route id
+     * @throws Exception is thrown if the route could not be suspended for whatever reason
+     */
     void suspendRoute(String routeId) throws Exception;
 
+    /**
+     * Suspends the given route using {@link org.apache.camel.spi.ShutdownStrategy} with a specified timeout.
+     * <p/>
+     * Suspending a route is more gently than stopping, as the route consumers will be suspended (if they support)
+     * otherwise the consumers will be stopped.
+     * <p/>
+     * By suspending the route services will be kept running (if possible) and therefore its faster to resume the route.
+     * <p/>
+     * If the route does <b>not</b> support suspension the route will be stopped instead
+     *
+     * @param routeId  the route id
+     * @param timeout  timeout
+     * @param timeUnit the unit to use
+     * @throws Exception is thrown if the route could not be suspended for whatever reason
+     */
     void suspendRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception;
 
+    /**
+     * Resumes the given route if it has been previously suspended
+     * <p/>
+     * If the route does <b>not</b> support suspension the route will be started instead
+     *
+     * @param routeId the route id
+     * @throws Exception is thrown if the route could not be resumed for whatever reason
+     */
     void resumeRoute(String routeId) throws Exception;
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java b/camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
index 2632388..216d150 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
@@ -17,7 +17,7 @@
 package org.apache.camel.spi;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.NamedNode;
 
 /**
  * A factory to create {@link org.apache.camel.spi.RoutePolicy} and assign to routes automatic.
@@ -32,5 +32,5 @@ public interface RoutePolicyFactory {
      * @param route        the route definition
      * @return the created {@link org.apache.camel.spi.RoutePolicy}, or <tt>null</tt> to not use a policy for this route
      */
-    RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route);
+    RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route);
 }
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Transformer.java b/camel-core/src/main/java/org/apache/camel/spi/Transformer.java
index f282c6f..ff398e0 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/Transformer.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/Transformer.java
@@ -19,19 +19,16 @@ package org.apache.camel.spi;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Message;
-import org.apache.camel.model.InputTypeDefinition;
-import org.apache.camel.model.OutputTypeDefinition;
-import org.apache.camel.processor.ContractAdvice;
 import org.apache.camel.support.ServiceSupport;
 
 /**
  * <a href="http://camel.apache.org/transformer.html">Transformer</a>
  * performs message transformation according to the declared data type.
- * {@link ContractAdvice} looks for a required Transformer and apply if
+ * {@link org.apache.camel.processor.ContractAdvice} looks for a required Transformer and apply if
  * input/output type declared on a route is different from current message type.
  *  
- * @see {@link ContractAdvice}
- * {@link DataType} {@link InputTypeDefinition} {@link OutputTypeDefinition}
+ * @see {@link org.apache.camel.processor.ContractAdvice}
+ * {@link DataType} {@link org.apache.camel.model.InputTypeDefinition} {@link org.apache.camel.model.OutputTypeDefinition}
  */
 public abstract class Transformer extends ServiceSupport implements CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Validator.java b/camel-core/src/main/java/org/apache/camel/spi/Validator.java
index 50b2d86..67125bb 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/Validator.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/Validator.java
@@ -20,19 +20,16 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Message;
 import org.apache.camel.ValidationException;
-import org.apache.camel.model.InputTypeDefinition;
-import org.apache.camel.model.OutputTypeDefinition;
-import org.apache.camel.processor.ContractAdvice;
 import org.apache.camel.support.ServiceSupport;
 
 /**
  * <a href="http://camel.apache.org/validator.html">Validator</a>
  * performs message content validation according to the declared data type.
- * {@link ContractAdvice} applies Validator if input/output type is declared on
+ * {@link org.apache.camel.processor.ContractAdvice} applies Validator if input/output type is declared on
  * a route with validation enabled.
  *  
- * @see {@link ContractAdvice}
- * {@link InputTypeDefinition} {@link OutputTypeDefinition}
+ * @see {@link org.apache.camel.processor.ContractAdvice}
+ * {@link org.apache.camel.model.InputTypeDefinition} {@link org.apache.camel.model.OutputTypeDefinition}
  */
 public abstract class Validator extends ServiceSupport implements CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java b/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
index bfa56ae..7d90d33 100644
--- a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.util;
 
-import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -45,7 +44,6 @@ import java.util.Optional;
 import java.util.Properties;
 import java.util.concurrent.Callable;
 import java.util.function.Consumer;
-import java.util.function.Function;
 import java.util.function.Supplier;
 
 import org.w3c.dom.Node;
@@ -62,7 +60,6 @@ import org.apache.camel.Ordered;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.WrappedFile;
-import org.apache.camel.util.function.ThrowingFunction;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -419,35 +416,6 @@ public final class ObjectHelper {
     }
 
     /**
-     * Tests whether the value is <b>not</b> <tt>null</tt>, an empty string, an empty collection or a map  and transform it using the given function.
-     *
-     * @param value  the value, if its a String it will be tested for text length as well
-     * @param function  the function to be executed against value if not empty
-     */
-    public static <I, R, T extends Throwable> Optional<R> applyIfNotEmpty(I value, ThrowingFunction<I, R, T> function) throws T {
-        if (isNotEmpty(value)) {
-            return Optional.ofNullable(function.apply(value));
-        }
-
-        return Optional.empty();
-    }
-
-    /**
-     * Tests whether the value is <b>not</b> <tt>null</tt>, an empty string, an empty collection or a map and transform it using the given function.
-     *
-     * @param value  the value, if its a String it will be tested for text length as well
-     * @param consumer  the function to be executed against value if not empty
-     * @param orElse  the supplier to use to retrieve a result if the given value is empty
-     */
-    public static <I, R, T extends Throwable> R applyIfNotEmpty(I value, ThrowingFunction<I, R, T> consumer, Supplier<R> orElse) throws T {
-        if (isNotEmpty(value)) {
-            return consumer.apply(value);
-        }
-
-        return orElse.get();
-    }
-
-    /**
      * Returns true if the collection contains the specified value
      */
     public static boolean contains(Object collectionOrArray, Object value) {
diff --git a/camel-core/src/main/java/org/apache/camel/util/TimeUtils.java b/camel-core/src/main/java/org/apache/camel/util/TimeUtils.java
index 49f8f3b..4fc42c0 100644
--- a/camel-core/src/main/java/org/apache/camel/util/TimeUtils.java
+++ b/camel-core/src/main/java/org/apache/camel/util/TimeUtils.java
@@ -20,14 +20,25 @@ import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 import java.text.NumberFormat;
 import java.util.Locale;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Time utils.
  *
- * @version 
+ * @version
  */
 public final class TimeUtils {
 
+    private static final Logger LOG = LoggerFactory.getLogger(TimeUtils.class);
+    private static final Pattern NUMBERS_ONLY_STRING_PATTERN = Pattern.compile("^[-]?(\\d)+$", Pattern.CASE_INSENSITIVE);
+    private static final Pattern HOUR_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))h(our(s)?)?", Pattern.CASE_INSENSITIVE);
+    private static final Pattern MINUTES_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))m(in(ute(s)?)?)?", Pattern.CASE_INSENSITIVE);
+    private static final Pattern SECONDS_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))s(ec(ond)?(s)?)?", Pattern.CASE_INSENSITIVE);
+
     private TimeUtils() {
     }
 
@@ -74,4 +85,108 @@ public final class TimeUtils {
         return s;
     }
 
+    public static long toMilliSeconds(String source) throws IllegalArgumentException {
+        // quick conversion if its only digits
+        boolean digit = true;
+        for (int i = 0; i < source.length(); i++) {
+            char ch = source.charAt(i);
+            // special for fist as it can be negative number
+            if (i == 0 && ch == '-') {
+                continue;
+            }
+            // quick check if its 0..9
+            if (ch < '0' || ch > '9') {
+                digit = false;
+                break;
+            }
+        }
+        if (digit) {
+            return Long.valueOf(source);
+        }
+
+        long milliseconds = 0;
+        boolean foundFlag = false;
+
+        checkCorrectnessOfPattern(source);
+        Matcher matcher;
+
+        matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
+        if (matcher.find()) {
+            // Note: This will also be used for regular numeric strings.
+            //       This String -> long converter will be used for all strings.
+            milliseconds = Long.valueOf(source);
+        } else {
+            matcher = createMatcher(HOUR_REGEX_PATTERN, source);
+            if (matcher.find()) {
+                milliseconds = milliseconds + (3600000 * Long.valueOf(matcher.group(1)));
+                foundFlag = true;
+            }
+
+            matcher = createMatcher(MINUTES_REGEX_PATTERN, source);
+            if (matcher.find()) {
+                long minutes = Long.valueOf(matcher.group(1));
+                if ((minutes > 59) && foundFlag) {
+                    throw new IllegalArgumentException("Minutes should contain a valid value between 0 and 59: " + source);
+                }
+                foundFlag = true;
+                milliseconds = milliseconds + (60000 * minutes);
+            }
+
+            matcher = createMatcher(SECONDS_REGEX_PATTERN, source);
+            if (matcher.find()) {
+                long seconds = Long.valueOf(matcher.group(1));
+                if ((seconds > 59) && foundFlag) {
+                    throw new IllegalArgumentException("Seconds should contain a valid value between 0 and 59: " + source);
+                }
+                foundFlag = true;
+                milliseconds = milliseconds + (1000 * seconds);
+            }
+
+            // No pattern matched... initiating fallback check and conversion (if required).
+            // The source at this point may contain illegal values or special characters
+            if (!foundFlag) {
+                milliseconds = Long.valueOf(source);
+            }
+        }
+
+        LOG.trace("source: {} milliseconds: ", source, milliseconds);
+
+        return milliseconds;
+    }
+
+    private static void checkCorrectnessOfPattern(String source) {
+        //replace only numbers once
+        Matcher matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
+        String replaceSource = matcher.replaceFirst("");
+
+        //replace hour string once
+        matcher = createMatcher(HOUR_REGEX_PATTERN, replaceSource);
+        if (matcher.find() && matcher.find()) {
+            throw new IllegalArgumentException("Hours should not be specified more then once: " + source);
+        }
+        replaceSource = matcher.replaceFirst("");
+
+        //replace minutes once
+        matcher = createMatcher(MINUTES_REGEX_PATTERN, replaceSource);
+        if (matcher.find() && matcher.find()) {
+            throw new IllegalArgumentException("Minutes should not be specified more then once: " + source);
+        }
+        replaceSource = matcher.replaceFirst("");
+
+        //replace seconds once
+        matcher = createMatcher(SECONDS_REGEX_PATTERN, replaceSource);
+        if (matcher.find() && matcher.find()) {
+            throw new IllegalArgumentException("Seconds should not be specified more then once: " + source);
+        }
+        replaceSource = matcher.replaceFirst("");
+
+        if (replaceSource.length() > 0) {
+            throw new IllegalArgumentException("Illegal characters: " + source);
+        }
+    }
+
+    private static Matcher createMatcher(Pattern pattern, String source) {
+        return pattern.matcher(source);
+    }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java b/camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
index 75a3246..4d75466 100644
--- a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
@@ -16,11 +16,14 @@
  */
 package org.apache.camel.util.function;
 
+import java.util.Optional;
 import java.util.function.BiConsumer;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Supplier;
 
+import org.apache.camel.util.ObjectHelper;
+
 public final class ThrowingHelper {
     private ThrowingHelper() {
     }
@@ -65,4 +68,33 @@ public final class ThrowingHelper {
             }
         };
     }
+
+    /**
+     * Tests whether the value is <b>not</b> <tt>null</tt>, an empty string, an empty collection or a map  and transform it using the given function.
+     *
+     * @param value  the value, if its a String it will be tested for text length as well
+     * @param function  the function to be executed against value if not empty
+     */
+    public static <I, R, T extends Throwable> Optional<R> applyIfNotEmpty(I value, ThrowingFunction<I, R, T> function) throws T {
+        if (ObjectHelper.isNotEmpty(value)) {
+            return Optional.ofNullable(function.apply(value));
+        }
+
+        return Optional.empty();
+    }
+
+    /**
+     * Tests whether the value is <b>not</b> <tt>null</tt>, an empty string, an empty collection or a map and transform it using the given function.
+     *
+     * @param value  the value, if its a String it will be tested for text length as well
+     * @param consumer  the function to be executed against value if not empty
+     * @param orElse  the supplier to use to retrieve a result if the given value is empty
+     */
+    public static <I, R, T extends Throwable> R applyIfNotEmpty(I value, ThrowingFunction<I, R, T> consumer, Supplier<R> orElse) throws T {
+        if (ObjectHelper.isNotEmpty(value)) {
+            return consumer.apply(value);
+        }
+
+        return orElse.get();
+    }
 }
diff --git a/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java b/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
index 97a63aa..17edec6 100644
--- a/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetPolicyTest.java
@@ -17,10 +17,10 @@
 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.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
@@ -61,7 +61,7 @@ public class FromRestGetPolicyTest extends ContextTestSupport {
     private class MyDummyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
             // noop
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java b/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
index 569f516..d7f6c87 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.OptionalIdentifiedDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateProcessor;
 import org.apache.camel.spi.InterceptStrategy;
@@ -114,12 +115,12 @@ public class CustomIdFactoryTest extends ContextTestSupport {
 
     private static class MyDebuggerCheckingId implements InterceptStrategy {
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, 
-                final ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(final CamelContext context,
+                                                     final NamedNode definition, Processor target, Processor nextTarget) throws Exception {
 
             // MUST DO THIS
             // force id creation as sub nodes have lazy assigned ids
-            definition.idOrCreate(context.getNodeIdFactory());
+            ((OptionalIdentifiedDefinition<?>) definition).idOrCreate(context.getNodeIdFactory());
 
             return new DelegateProcessor(target) {
                 @Override
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java
index 748dc68..f99b252 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java
@@ -44,12 +44,12 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
         assertEquals(true, camel.isStarted());
         assertEquals(1, camel.getRoutes().size());
-        assertEquals(true, camel.getRouteStatus("foo").isStopped());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStopped());
 
         // now start all routes
         camel.getRouteController().startAllRoutes();
 
-        assertEquals(true, camel.getRouteStatus("foo").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         // and now its started we can test that it works by sending in a message to the route
         MockEndpoint mock = camel.getEndpoint("mock:result", MockEndpoint.class);
@@ -78,12 +78,12 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
         assertEquals(true, camel.isStarted());
         assertEquals(1, camel.getRoutes().size());
-        assertEquals(true, camel.getRouteStatus("foo").isStopped());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStopped());
 
         // now start the routes
         camel.startRoute("foo");
 
-        assertEquals(true, camel.getRouteStatus("foo").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         // and now its started we can test that it works by sending in a message to the route
         MockEndpoint mock = camel.getEndpoint("mock:result", MockEndpoint.class);
@@ -112,7 +112,7 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
         assertEquals(true, camel.isStarted());
         assertEquals(1, camel.getRoutes().size());
-        assertEquals(true, camel.getRouteStatus("foo").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         MockEndpoint mock = camel.getEndpoint("mock:result", MockEndpoint.class);
         mock.expectedMessageCount(1);
@@ -142,13 +142,13 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
         assertEquals(true, camel.isStarted());
         assertEquals(1, camel.getRoutes().size());
-        assertEquals(true, camel.getRouteStatus("foo").isStopped());
-        assertEquals(false, camel.getRouteStatus("foo").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStopped());
+        assertEquals(false, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         // now start all the routes
         camel.getRouteController().startAllRoutes();
 
-        assertEquals(true, camel.getRouteStatus("foo").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         MockEndpoint mock = camel.getEndpoint("mock:result", MockEndpoint.class);
         mock.expectedMessageCount(1);
diff --git a/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyFactoryTest.java b/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyFactoryTest.java
index 52c1b3a..a4cb99f 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyFactoryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/RoutePolicyFactoryTest.java
@@ -19,9 +19,9 @@ package org.apache.camel.impl;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.support.RoutePolicySupport;
@@ -48,7 +48,7 @@ public class RoutePolicyFactoryTest extends ContextTestSupport {
         }
 
         @Override
-        public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+        public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
             return new MyRoutePolicy(routeId);
         }
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/StartAndStopRoutesTest.java b/camel-core/src/test/java/org/apache/camel/impl/StartAndStopRoutesTest.java
index 3227192..91f033a 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/StartAndStopRoutesTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/StartAndStopRoutesTest.java
@@ -23,6 +23,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.FromDefinition;
+import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteDefinition;
 import org.junit.Test;
 
@@ -56,12 +57,12 @@ public class StartAndStopRoutesTest extends ContextTestSupport {
         assertMockEndpointsSatisfied();
 
         // stop the route
-        context.stopRoute(route);
+        context.getRouteController().stopRoute(route.getId());
 
         // lets mutate the route...
         FromDefinition fromType = assertOneElement(route.getInputs());
         fromType.setUri("direct:test.C");
-        context.startRoute(route);
+        context.adapt(ModelCamelContext.class).addRouteDefinition(route);
 
         // now lets check it works
         // send from C over B to results
diff --git a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java
index 55fd710..e9899eb 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithPolicyTest.java
@@ -17,10 +17,10 @@
 package org.apache.camel.issues;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
@@ -67,7 +67,7 @@ public class AdviceWithPolicyTest extends ContextTestSupport {
     private static final class MyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
             // noop
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithStartTargetIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithStartTargetIssueTest.java
index c0654e8..6a322be 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithStartTargetIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithStartTargetIssueTest.java
@@ -19,9 +19,9 @@ package org.apache.camel.issues;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Test;
@@ -71,7 +71,7 @@ public class AdviceWithStartTargetIssueTest extends ContextTestSupport {
         private static final Logger LOG = LoggerFactory.getLogger(ContainerWideInterceptor.class);
         private static int count;
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                      final Processor target, final Processor nextTarget) throws Exception {
 
             return new DelegateAsyncProcessor(new Processor() {
diff --git a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java
index ef9db1d..7fe3835 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithTransactedTest.java
@@ -17,10 +17,10 @@
 package org.apache.camel.issues;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
@@ -64,7 +64,7 @@ public class AdviceWithTransactedTest extends ContextTestSupport {
     private static final class MyDummyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
             // noop
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/issues/DynamicRouterWithInterceptorTest.java b/camel-core/src/test/java/org/apache/camel/issues/DynamicRouterWithInterceptorTest.java
index 74e75a52..ccf56ff 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/DynamicRouterWithInterceptorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/DynamicRouterWithInterceptorTest.java
@@ -22,10 +22,10 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Header;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.DynamicRouterDefinition;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Test;
@@ -40,7 +40,7 @@ public class DynamicRouterWithInterceptorTest extends ContextTestSupport {
         private static final Logger LOGGER = LoggerFactory.getLogger(MyInterceptStrategy.class);
         private static int doneCount;
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                      final Processor target, final Processor nextTarget) throws Exception {
             if (definition instanceof DynamicRouterDefinition<?>) {
                 final DelegateAsyncProcessor delegateAsyncProcessor = new DelegateAsyncProcessor() {
diff --git a/camel-core/src/test/java/org/apache/camel/issues/RecipientListWithInterceptorTest.java b/camel-core/src/test/java/org/apache/camel/issues/RecipientListWithInterceptorTest.java
index 1fd3194..a1fe383 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/RecipientListWithInterceptorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/RecipientListWithInterceptorTest.java
@@ -20,9 +20,9 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RecipientListDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
@@ -38,7 +38,7 @@ public class RecipientListWithInterceptorTest extends ContextTestSupport {
         private static final Logger LOGGER = LoggerFactory.getLogger(MyInterceptStrategy.class);
         private static int doneCount;
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                      final Processor target, final Processor nextTarget) throws Exception {
             if (definition instanceof RecipientListDefinition<?>) {
                 final DelegateAsyncProcessor delegateAsyncProcessor = new DelegateAsyncProcessor() {
diff --git a/camel-core/src/test/java/org/apache/camel/issues/RoutingSlipWithInterceptorTest.java b/camel-core/src/test/java/org/apache/camel/issues/RoutingSlipWithInterceptorTest.java
index c2d3eaf..b872daf 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/RoutingSlipWithInterceptorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/RoutingSlipWithInterceptorTest.java
@@ -20,9 +20,9 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RoutingSlipDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
@@ -38,7 +38,7 @@ public class RoutingSlipWithInterceptorTest extends ContextTestSupport {
         private static final Logger LOGGER = LoggerFactory.getLogger(MyInterceptStrategy.class);
         private static int doneCount;
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                      final Processor target, final Processor nextTarget) throws Exception {
             if (definition instanceof RoutingSlipDefinition<?>) {
                 final DelegateAsyncProcessor delegateAsyncProcessor = new DelegateAsyncProcessor() {
diff --git a/camel-core/src/test/java/org/apache/camel/issues/SplitWithInterceptorTest.java b/camel-core/src/test/java/org/apache/camel/issues/SplitWithInterceptorTest.java
index 05d8643..88eeb21 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/SplitWithInterceptorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/SplitWithInterceptorTest.java
@@ -20,9 +20,9 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SplitDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
@@ -38,7 +38,7 @@ public class SplitWithInterceptorTest extends ContextTestSupport {
         private static final Logger LOGGER = LoggerFactory.getLogger(MyInterceptStrategy.class);
         private static int doneCount;
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                      final Processor target, final Processor nextTarget) throws Exception {
             if (definition instanceof SplitDefinition) {
                 final DelegateAsyncProcessor delegateAsyncProcessor = new DelegateAsyncProcessor() {
diff --git a/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java
index ac2d12c..f3e442f 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/TransactedPropertyPlaceholderIssueTest.java
@@ -18,10 +18,10 @@ package org.apache.camel.issues;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.properties.PropertiesComponent;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
@@ -66,7 +66,7 @@ public class TransactedPropertyPlaceholderIssueTest extends ContextTestSupport {
     private static final class MyDummyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
             // noop
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java b/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java
index 3be1ed7..210eb48 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/TwoTimerWithJMXIssue.java
@@ -18,10 +18,10 @@ package org.apache.camel.issues;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 
 /**
@@ -59,7 +59,7 @@ public class TwoTimerWithJMXIssue extends ContextTestSupport {
 
     private static class MyTracer implements InterceptStrategy {
 
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
                                                      Processor target, Processor nextTarget) throws Exception {
             assertNotNull(target);
             counter++;
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
index 238fb47..2d5f331 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
@@ -160,7 +160,7 @@ public class ManagedAggregateControllerTest extends ManagementTestSupport {
         assertEquals(1, pending.intValue());
 
         // we can also use the client mbean
-        ManagedAggregateProcessorMBean client = context.getManagedProcessor("myAggregator", ManagedAggregateProcessorMBean.class);
+        ManagedAggregateProcessorMBean client = context.adapt(ManagedCamelContext.class).getManagedProcessor("myAggregator", ManagedAggregateProcessorMBean.class);
         assertNotNull(client);
 
         assertEquals(1, client.getCompletedByForce());
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
index 9257138..7e5a06d 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
@@ -51,7 +51,7 @@ public class ManagedCamelContextTest extends ManagementTestSupport {
             return;
         }
 
-        ManagedCamelContextMBean client = context.getManagedCamelContext();
+        ManagedCamelContextMBean client = context.adapt(ManagedCamelContext.class).getManagedCamelContext();
         assertNotNull(client);
 
         assertEquals("camel-1", client.getCamelId());
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
index 6b2221f..18b8e41 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCustomPolicyTest.java
@@ -23,9 +23,9 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
@@ -85,7 +85,7 @@ public class ManagedCustomPolicyTest extends ManagementTestSupport {
     private final class MyPolicy implements Policy {
 
         @Override
-        public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
             // noop
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
index a3bd0d5..5cd26b2 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
@@ -47,7 +47,7 @@ public class ManagedInlinedProcessorTest extends ManagementTestSupport {
         Long counter = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
         assertEquals(1L, counter.longValue());
 
-        ManagedProcessorMBean mb = context.getManagedProcessor("custom", ManagedProcessorMBean.class);
+        ManagedProcessorMBean mb = context.adapt(ManagedCamelContext.class).getManagedProcessor("custom", ManagedProcessorMBean.class);
         assertNotNull(mb);
         assertEquals(1L, mb.getExchangesCompleted());
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
index ce72f80..04b2925 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
@@ -91,7 +91,7 @@ public class ManagedRouteSuspendAndResumeTest extends ManagementTestSupport {
         // this time the file is consumed
         mock.assertIsSatisfied();
 
-        ManagedSuspendableRouteMBean route = context.getManagedRoute("foo", ManagedSuspendableRouteMBean.class);
+        ManagedSuspendableRouteMBean route = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedSuspendableRouteMBean.class);
         assertNotNull(route);
 
         assertEquals(2, route.getExchangesCompleted());
diff --git a/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java b/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
index 32b24f6..f10a302 100644
--- a/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
@@ -24,6 +24,7 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteDefinition;
 import org.junit.Test;
 
@@ -53,7 +54,8 @@ public class RemoveRouteDefinitionTest extends ManagementTestSupport {
         RouteDefinition definition = context.getRouteDefinition("route1");
         List<RouteDefinition> routeDefinitions = new ArrayList<>();
         routeDefinitions.add(definition);
-        context.shutdownRoute("route1");
+        context.getRouteController().stopRoute("route1");
+        context.adapt(ModelCamelContext.class).removeRoute("route1");
 
         // route is shutdown (= also removed), so its not longer in JMX
         set = mbeanServer.queryNames(new ObjectName("*:type=routes,*"), null);
@@ -81,7 +83,7 @@ public class RemoveRouteDefinitionTest extends ManagementTestSupport {
         List<RouteDefinition> routeDefinitions = new ArrayList<>();
         routeDefinitions.add(definition);
         // must stop before we can remove
-        context.stopRoute("route1");
+        context.getRouteController().stopRoute("route1");
         context.removeRoute("route1");
 
         // route is removed, so its not longer in JMX
@@ -109,7 +111,7 @@ public class RemoveRouteDefinitionTest extends ManagementTestSupport {
         RouteDefinition definition = context.getRouteDefinition("route1");
         List<RouteDefinition> routeDefinitions = new ArrayList<>();
         routeDefinitions.add(definition);
-        context.stopRoute("route1");
+        context.getRouteController().stopRoute("route1");
 
         // route is only stopped so its still in JMX
         set = mbeanServer.queryNames(new ObjectName("*:type=routes,*"), null);
diff --git a/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java b/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
index 1d19143..39ae478 100644
--- a/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java
@@ -20,6 +20,7 @@ import java.io.InputStream;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Policy;
@@ -83,7 +84,7 @@ public class LoadRouteFromXmlWithPolicyTest extends ContextTestSupport {
         }
 
         public void beforeWrap(RouteContext routeContext,
-                               ProcessorDefinition<?> definition) {
+                               NamedNode definition) {
             // no need to modify the route
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java b/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java
index a5b30b6..e827776 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/CustomProcessorFactoryTest.java
@@ -18,9 +18,9 @@ package org.apache.camel.processor;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.model.SplitDefinition;
 import org.apache.camel.model.ToDefinition;
@@ -86,11 +86,11 @@ public class CustomProcessorFactoryTest extends ContextTestSupport {
     // START SNIPPET: e3
     public static class MyFactory implements ProcessorFactory {
 
-        public Processor createChildProcessor(RouteContext routeContext, ProcessorDefinition<?> definition, boolean mandatory) throws Exception {
+        public Processor createChildProcessor(RouteContext routeContext, NamedNode definition, boolean mandatory) throws Exception {
             return null;
         }
 
-        public Processor createProcessor(RouteContext routeContext, ProcessorDefinition<?> definition) throws Exception {
+        public Processor createProcessor(RouteContext routeContext, NamedNode definition) throws Exception {
             if (definition instanceof SplitDefinition) {
                 // add additional output to the splitter
                 SplitDefinition split = (SplitDefinition) definition;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java b/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
index 55083fc..2ee8640 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/DefinitionPolicyPerProcessorTest.java
@@ -18,10 +18,12 @@ package org.apache.camel.processor;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.spi.Policy;
@@ -80,8 +82,8 @@ public class DefinitionPolicyPerProcessorTest extends ContextTestSupport {
             return invoked;
         }
 
-        public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
-            SetBodyDefinition bodyDef = (SetBodyDefinition) definition.getOutputs().get(0);
+        public void beforeWrap(RouteContext routeContext, NamedNode definition) {
+            SetBodyDefinition bodyDef = (SetBodyDefinition) ((ProcessorDefinition<?>) definition).getOutputs().get(0);
             bodyDef.setExpression(new ConstantExpression("body was altered"));
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java b/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
index bfeb0b2..d93e482 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
@@ -24,11 +24,11 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.management.event.AbstractExchangeEvent;
 import org.apache.camel.model.PipelineDefinition;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.StopWatch;
@@ -137,7 +137,7 @@ public class PipelineStepWithEventTest extends ContextTestSupport {
     private class MyInterceptStrategy implements InterceptStrategy {
 
         @Override
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
             // grab the listener
             StepEventListener listener = context.hasService(StepEventListener.class);
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java b/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
index 5ef2731..d700aa5 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/PolicyPerProcessorTest.java
@@ -18,10 +18,10 @@ package org.apache.camel.processor;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
@@ -89,7 +89,7 @@ public class PolicyPerProcessorTest extends ContextTestSupport {
         }
 
         public void beforeWrap(RouteContext routeContext,
-                ProcessorDefinition<?> definition) {
+                               NamedNode definition) {
             // no need to modify the route
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java b/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
index 6a80a64..75ada89 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/PolicyPerRouteTest.java
@@ -18,10 +18,10 @@ package org.apache.camel.processor;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.junit.Test;
@@ -89,7 +89,7 @@ public class PolicyPerRouteTest extends ContextTestSupport {
         }
 
         public void beforeWrap(RouteContext routeContext,
-                ProcessorDefinition<?> definition) {
+                               NamedNode definition) {
             // no need to modify the route
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomAsyncInterceptorTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomAsyncInterceptorTest.java
index c2434af..746b565 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomAsyncInterceptorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomAsyncInterceptorTest.java
@@ -22,9 +22,9 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Test;
@@ -87,7 +87,7 @@ public class AsyncEndpointCustomAsyncInterceptorTest extends ContextTestSupport
     private static class MyInterceptor implements InterceptStrategy {
         private AtomicInteger counter = new AtomicInteger();
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                      final Processor target, final Processor nextTarget) throws Exception {
 
             // use DelegateAsyncProcessor to ensure the interceptor works well with the asynchronous routing
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomInterceptorTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomInterceptorTest.java
index fcb2791..51e8b3f 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomInterceptorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointCustomInterceptorTest.java
@@ -21,9 +21,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Test;
 
@@ -90,7 +90,7 @@ public class AsyncEndpointCustomInterceptorTest extends ContextTestSupport {
     private static class MyInterceptor implements InterceptStrategy {
         private AtomicInteger counter = new AtomicInteger();
 
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                      final Processor target, final Processor nextTarget) throws Exception {
 
             return new Processor() {
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
index f7076c9..9ce8153 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
@@ -20,10 +20,10 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.AsyncProcessorConverterHelper;
@@ -113,7 +113,7 @@ public class AsyncEndpointPolicyTest extends ContextTestSupport {
         }
 
         public void beforeWrap(RouteContext routeContext,
-                ProcessorDefinition<?> definition) {
+                               NamedNode definition) {
             // no need to modify the route
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/intercept/ParentChildInterceptStrategyTest.java b/camel-core/src/test/java/org/apache/camel/processor/intercept/ParentChildInterceptStrategyTest.java
index d6cdd32..82e34ac 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/intercept/ParentChildInterceptStrategyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/intercept/ParentChildInterceptStrategyTest.java
@@ -21,9 +21,11 @@ import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Test;
 
@@ -84,8 +86,9 @@ public class ParentChildInterceptStrategyTest extends ContextTestSupport {
     public static final class MyParentChildInterceptStrategy implements InterceptStrategy {
 
         @Override
-        public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode node,
                                                      final Processor target, final Processor nextTarget) throws Exception {
+            ProcessorDefinition<?> definition = (ProcessorDefinition<?>) node;
             String targetId = definition.hasCustomIdAssigned() ? definition.getId() : definition.getLabel();
             ProcessorDefinition<?> parent = definition.getParent();
             String parentId = "";
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorAsyncDelegateIssueTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorAsyncDelegateIssueTest.java
index fa8404f..1068572 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorAsyncDelegateIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorAsyncDelegateIssueTest.java
@@ -19,9 +19,9 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Before;
@@ -92,7 +92,7 @@ public class AuditInterceptorAsyncDelegateIssueTest extends ContextTestSupport {
     private static final class MyIntercepStrategy implements InterceptStrategy {
         private volatile boolean invoked;
 
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
             return new DelegateAsyncProcessor(target) {
                 public boolean process(Exchange exchange, AsyncCallback callback) {
                     invoked = true;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorDelegateIssueTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorDelegateIssueTest.java
index 9806598..ec75d79 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorDelegateIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/AuditInterceptorDelegateIssueTest.java
@@ -18,9 +18,9 @@ package org.apache.camel.processor.interceptor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Before;
@@ -91,7 +91,7 @@ public class AuditInterceptorDelegateIssueTest extends ContextTestSupport {
     private static final class MyIntercepStrategy implements InterceptStrategy {
         private volatile boolean invoked;
 
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
             return new DelegateProcessor(target) {
                 protected void processNext(Exchange exchange) throws Exception {
                     invoked = true;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/CustomInterceptorRouteWithChildOutputTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/CustomInterceptorRouteWithChildOutputTest.java
index db173db..0da42f0 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/CustomInterceptorRouteWithChildOutputTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/CustomInterceptorRouteWithChildOutputTest.java
@@ -21,10 +21,12 @@ import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.LogDefinition;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.SplitDefinition;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.spi.InterceptStrategy;
@@ -79,9 +81,9 @@ public class CustomInterceptorRouteWithChildOutputTest extends ContextTestSuppor
         private final List<ProcessorDefinition> defs = new ArrayList<>();
 
         @Override
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition,
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
                                                      Processor target, Processor nextTarget) throws Exception {
-            defs.add(definition);
+            defs.add((ProcessorDefinition<?>) definition);
             return target;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionBreakpointTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionBreakpointTest.java
index 57d8041..5e4f03b 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionBreakpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionBreakpointTest.java
@@ -21,12 +21,12 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.ConditionSupport;
 import org.apache.camel.impl.DefaultDebugger;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Breakpoint;
 import org.apache.camel.spi.Condition;
 import org.junit.Before;
@@ -49,7 +49,7 @@ public class DebugExceptionBreakpointTest extends ContextTestSupport {
 
         breakpoint = new BreakpointSupport() {
             @Override
-            public void afterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken) {
+            public void afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken) {
                 Exception e = exchange.getException();
                 logs.add("Breakpoint at " + definition.getShortName() + " caused by: " + e.getClass().getSimpleName() + "[" + e.getMessage() + "]");
             }
@@ -57,7 +57,7 @@ public class DebugExceptionBreakpointTest extends ContextTestSupport {
 
         exceptionCondition = new ConditionSupport() {
             @Override
-            public boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 return exchange.getException() != null;
             }
         };
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
index ba84119..18f11f7 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
@@ -22,13 +22,13 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.ConditionSupport;
 import org.apache.camel.impl.DefaultDebugger;
 import org.apache.camel.management.event.AbstractExchangeEvent;
 import org.apache.camel.management.event.ExchangeFailedEvent;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Breakpoint;
 import org.apache.camel.spi.Condition;
 import org.junit.Before;
@@ -50,7 +50,7 @@ public class DebugExceptionEventBreakpointTest extends ContextTestSupport {
         super.setUp();
 
         breakpoint = new BreakpointSupport() {
-            public void onEvent(Exchange exchange, EventObject event, ProcessorDefinition<?> definition) {
+            public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
                 AbstractExchangeEvent aee = (AbstractExchangeEvent) event;
                 Exception e = aee.getExchange().getException();
                 logs.add("Breakpoint at " + definition + " caused by: " + e.getClass().getSimpleName() + "[" + e.getMessage() + "]");
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepConditionTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepConditionTest.java
index 471580a..c3cd51e 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepConditionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepConditionTest.java
@@ -21,12 +21,12 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.ConditionSupport;
 import org.apache.camel.impl.DefaultDebugger;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Breakpoint;
 import org.apache.camel.spi.Condition;
 import org.junit.Before;
@@ -48,14 +48,14 @@ public class DebugSingleStepConditionTest extends ContextTestSupport {
         super.setUp();
 
         breakpoint = new BreakpointSupport() {
-            public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 String body = exchange.getIn().getBody(String.class);
                 logs.add("Single stepping at " + definition.getLabel() + " with body: " + body);
             }
         };
 
         beerCondition = new ConditionSupport() {
-            public boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 return "beer".equals(exchange.getFromRouteId());
             }
         };
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepTest.java
index 4603d96..ebd6147 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugSingleStepTest.java
@@ -21,11 +21,11 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.DefaultDebugger;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Breakpoint;
 import org.junit.Before;
 import org.junit.Test;
@@ -45,7 +45,7 @@ public class DebugSingleStepTest extends ContextTestSupport {
         super.setUp();
 
         breakpoint = new BreakpointSupport() {
-            public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 String body = exchange.getIn().getBody(String.class);
                 logs.add("Single stepping at " + definition.getLabel() + " with body: " + body);
             }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
index f305181..ce13f37 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
@@ -22,13 +22,13 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.ConditionSupport;
 import org.apache.camel.impl.DefaultDebugger;
 import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.spi.Breakpoint;
 import org.apache.camel.spi.Condition;
@@ -53,25 +53,25 @@ public class DebugTest extends ContextTestSupport {
         super.setUp();
 
         breakpoint = new BreakpointSupport() {
-            public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 String body = exchange.getIn().getBody(String.class);
                 logs.add("Breakpoint at " + definition + " with body: " + body);
             }
 
-            public void onEvent(Exchange exchange, EventObject event, ProcessorDefinition<?> definition) {
+            public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
                 String body = exchange.getIn().getBody(String.class);
                 logs.add("Breakpoint event " + event.getClass().getSimpleName() + " with body: " + body);
             }
         };
 
         camelCondition = new ConditionSupport() {
-            public boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 return body().contains("Camel").matches(exchange);
             }
         };
 
         mockCondition = new ConditionSupport() {
-            public boolean matchProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+            public boolean matchProcess(Exchange exchange, Processor processor, NamedNode definition) {
                 // match when sending to mocks
                 if (definition instanceof ToDefinition) {
                     ToDefinition to = (ToDefinition) definition;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyNotOrderedTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyNotOrderedTest.java
index f1bf522..5460cc6 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyNotOrderedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyNotOrderedTest.java
@@ -19,9 +19,9 @@ package org.apache.camel.processor.interceptor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Test;
 
@@ -56,7 +56,7 @@ public class InterceptorStrategyNotOrderedTest extends ContextTestSupport {
 
     private static class FooInterceptStrategy implements InterceptStrategy {
 
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, final Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, final Processor target, Processor nextTarget) throws Exception {
             Processor answer = new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     String order = exchange.getIn().getHeader("order", "", String.class);
@@ -73,7 +73,7 @@ public class InterceptorStrategyNotOrderedTest extends ContextTestSupport {
 
     private static class BarInterceptStrategy implements InterceptStrategy {
 
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, final Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, final Processor target, Processor nextTarget) throws Exception {
             Processor answer = new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     String order = exchange.getIn().getHeader("order", "", String.class);
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyOrderedTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyOrderedTest.java
index d581a07..d48a205 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyOrderedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/InterceptorStrategyOrderedTest.java
@@ -19,10 +19,10 @@ package org.apache.camel.processor.interceptor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Ordered;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.junit.Test;
 
@@ -57,7 +57,7 @@ public class InterceptorStrategyOrderedTest extends ContextTestSupport {
 
     public static class FooInterceptStrategy implements InterceptStrategy, Ordered {
 
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, final Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, final Processor target, Processor nextTarget) throws Exception {
             Processor answer = new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     String order = exchange.getIn().getHeader("order", "", String.class);
@@ -77,7 +77,7 @@ public class InterceptorStrategyOrderedTest extends ContextTestSupport {
 
     public static class BarInterceptStrategy implements InterceptStrategy, Ordered {
 
-        public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, final Processor target, Processor nextTarget) throws Exception {
+        public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, final Processor target, Processor nextTarget) throws Exception {
             Processor answer = new Processor() {
                 public void process(Exchange exchange) throws Exception {
                     String order = exchange.getIn().getHeader("order", "", String.class);
diff --git a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/EIPTracingStrategy.java b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/EIPTracingStrategy.java
index d019fea..419e53b 100644
--- a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/EIPTracingStrategy.java
+++ b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/EIPTracingStrategy.java
@@ -21,8 +21,8 @@ import com.amazonaws.xray.AWSXRay;
 import com.amazonaws.xray.entities.Subsegment;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 import org.slf4j.Logger;
@@ -36,7 +36,7 @@ public class EIPTracingStrategy implements InterceptStrategy {
 
     @Override
     public Processor wrapProcessorInInterceptors(CamelContext camelContext,
-        ProcessorDefinition<?> processorDefinition, Processor target, Processor nextTarget)
+                                                 NamedNode processorDefinition, Processor target, Processor nextTarget)
         throws Exception {
 
         String defName = processorDefinition.getShortName();
diff --git a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/NoopTracingStrategy.java b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/NoopTracingStrategy.java
index 90f5b9c..060e499 100644
--- a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/NoopTracingStrategy.java
+++ b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/NoopTracingStrategy.java
@@ -17,15 +17,15 @@
 package org.apache.camel.component.aws.xray;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
 
 public class NoopTracingStrategy implements InterceptStrategy {
 
     @Override
-    public Processor wrapProcessorInInterceptors(CamelContext camelContext, ProcessorDefinition<?> processorDefinition,
+    public Processor wrapProcessorInInterceptors(CamelContext camelContext, NamedNode processorDefinition,
                                                  Processor target, Processor nextTarget) throws Exception {
         return new DelegateAsyncProcessor(target);
     }
diff --git a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/TraceAnnotatedTracingStrategy.java b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/TraceAnnotatedTracingStrategy.java
index 679c394..32538e6 100644
--- a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/TraceAnnotatedTracingStrategy.java
+++ b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/TraceAnnotatedTracingStrategy.java
@@ -22,11 +22,11 @@ import com.amazonaws.xray.AWSXRay;
 import com.amazonaws.xray.entities.Subsegment;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.component.bean.BeanProcessor;
 import org.apache.camel.model.BeanDefinition;
 import org.apache.camel.model.ProcessDefinition;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.processor.DelegateSyncProcessor;
 import org.apache.camel.spi.InterceptStrategy;
@@ -41,8 +41,8 @@ public class TraceAnnotatedTracingStrategy implements InterceptStrategy {
 
     @Override
     public Processor wrapProcessorInInterceptors(CamelContext camelContext,
-        ProcessorDefinition<?> processorDefinition,
-        Processor target, Processor nextTarget)
+                                                 NamedNode processorDefinition,
+                                                 Processor target, Processor nextTarget)
         throws Exception {
 
         Class<?> processorClass = processorDefinition.getClass();
diff --git a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
index 9915778..1f3d3a2 100644
--- a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
+++ b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
@@ -37,11 +37,11 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.StaticService;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
@@ -113,7 +113,7 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
     }
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
         init(camelContext);
         return new XRayRoutePolicy(routeId);
     }
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
index 0818242..8830514 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
@@ -453,7 +453,7 @@ public class CdiCamelExtension implements Extension {
                 if (route instanceof RoutesBuilder) {
                     context.addRoutes((RoutesBuilder) route);
                 } else if (route instanceof RouteContainer) {
-                    context.addRouteDefinitions(((RouteContainer) route).getRoutes());
+                    context.adapt(ModelCamelContext.class).addRouteDefinitions(((RouteContainer) route).getRoutes());
                 } else {
                     throw new IllegalArgumentException(
                         "Invalid routes type [" + routeBean.getBeanClass().getName() + "], "
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 f65c4be..9fbd0a4 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionPolicy.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionPolicy.java
@@ -19,11 +19,13 @@ package org.apache.camel.cdi.transaction;
 import javax.annotation.Resource;
 import javax.transaction.TransactionManager;
 
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
 import org.apache.camel.util.ObjectHelper;
@@ -49,12 +51,12 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
     protected TransactionManager transactionManager;
 
     @Override
-    public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+    public void beforeWrap(RouteContext routeContext, 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
         // non-transactional error handler)
-        definition.setInheritErrorHandler(false);
+        ((ProcessorDefinition<?>) definition).setInheritErrorHandler(false);
     }
 
     public abstract void run(Runnable runnable) throws Throwable;
@@ -74,7 +76,8 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
         // we only need one transacted error handler
 
         // find the existing error handler builder
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) routeContext.getRoute().getErrorHandlerBuilder();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerBuilder();
 
         // check if its a ref if so then do a lookup
         if (builder instanceof ErrorHandlerBuilderRef) {
@@ -118,7 +121,7 @@ public abstract class JtaTransactionPolicy implements TransactedPolicy {
         txBuilder.configure(routeContext, answer);
 
         // set the route to use our transacted error handler builder
-        routeContext.getRoute().setErrorHandlerBuilder(txBuilder);
+        route.setErrorHandlerBuilder(txBuilder);
 
         // return with wrapped transacted error handler
         return answer;
diff --git a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java
index 4cc043c..fb71bf0 100644
--- a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java
+++ b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java
@@ -26,6 +26,7 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.function.ThrowingHelper;
 import org.ehcache.CacheManager;
 import org.ehcache.config.CacheConfiguration;
 import org.ehcache.config.Configuration;
@@ -235,7 +236,7 @@ public class EhcacheConfiguration implements Cloneable {
     }
 
     public boolean hasConfiguration(String name) {
-        return ObjectHelper.applyIfNotEmpty(configurations, c -> c.containsKey(name), () -> false);
+        return ThrowingHelper.applyIfNotEmpty(configurations, c -> c.containsKey(name), () -> false);
     }
 
     /**
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 a4963cd..331b1bd 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
@@ -33,6 +33,7 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.component.infinispan.InfinispanConfiguration;
 import org.apache.camel.component.infinispan.InfinispanManager;
 import org.apache.camel.component.infinispan.InfinispanUtil;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -112,7 +113,8 @@ 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().getRoute().setAutoStartup("false");
+        RouteDefinition definition = (RouteDefinition) route.getRouteContext().getRoute();
+        definition.setAutoStartup("false");
 
         stoppeddRoutes.add(route);
 
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
index f9de30a..712d383 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
@@ -37,19 +37,19 @@ public class CamelJmxConsumerObserveAttributeMatchStringDifferTest extends Camel
         getMockEndpoint("mock:result").message(0).body().contains("<attributeName>Tracing</attributeName>");
 
         // change the attribute so JMX triggers but should be filtered
-        ManagedRouteMBean mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setStatisticsEnabled(true);
 
         // change the attribute so JMX triggers
-        mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(true);
 
         // change the attribute so JMX triggers
-        mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(false);
 
         // change the attribute so JMX triggers
-        mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
index 2449ef7..b25ba88 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
@@ -37,19 +37,19 @@ public class CamelJmxConsumerObserveAttributeMatchStringTest extends CamelTestSu
         getMockEndpoint("mock:result").message(0).body().contains("<attributeName>Tracing</attributeName>");
 
         // change the attribute so JMX triggers but should be filtered
-        ManagedRouteMBean mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setStatisticsEnabled(true);
 
         // change the attribute so JMX triggers
-        mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(true);
 
         // change the attribute so JMX triggers
-        mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(false);
 
         // change the attribute so JMX triggers
-        mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
index b922d73..2d39942 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
@@ -37,11 +37,11 @@ public class CamelJmxConsumerObserveAttributeTest extends CamelTestSupport {
         getMockEndpoint("mock:result").message(0).body().contains("<attributeName>Tracing</attributeName>");
 
         // change the attribute so JMX triggers but should be filtered
-        ManagedRouteMBean mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setStatisticsEnabled(true);
 
         // change the attribute so JMX triggers
-        mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
index 252c86d..da283a6 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
@@ -36,7 +36,7 @@ public class CamelJmxConsumerTest extends CamelTestSupport {
         getMockEndpoint("mock:result").message(0).body().contains("<newValue>true</newValue>");
 
         // change the attribute so JMX triggers
-        ManagedRouteMBean mr = context.getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicyFactory.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicyFactory.java
index d4ad80d..56a199e 100644
--- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicyFactory.java
+++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRoutePolicyFactory.java
@@ -20,7 +20,7 @@ import java.util.concurrent.TimeUnit;
 
 import com.codahale.metrics.MetricRegistry;
 import org.apache.camel.CamelContext;
-import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.NamedNode;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 
@@ -105,7 +105,7 @@ public class MetricsRoutePolicyFactory implements RoutePolicyFactory {
     }
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition routeDefinition) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode routeDefinition) {
         MetricsRoutePolicy answer = new MetricsRoutePolicy();
         answer.setMetricsRegistry(getMetricsRegistry());
         answer.setUseJmx(isUseJmx());
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyFactory.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyFactory.java
index ae3cb4e..646f1c7 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyFactory.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/routepolicy/MicrometerRoutePolicyFactory.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.micrometer.routepolicy;
 import java.util.concurrent.TimeUnit;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.apache.camel.CamelContext;
-import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.NamedNode;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 
@@ -80,7 +80,7 @@ public class MicrometerRoutePolicyFactory implements RoutePolicyFactory {
     }
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition routeDefinition) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode routeDefinition) {
         MicrometerRoutePolicy answer = new MicrometerRoutePolicy();
         answer.setMeterRegistry(getMeterRegistry());
         answer.setPrettyPrint(isPrettyPrint());
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index 3706377..9c1454c 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -34,6 +34,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.StaticService;
 import org.apache.camel.api.management.ManagedResource;
@@ -96,7 +97,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     }
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
         // ensure this opentracing tracer gets initialized when Camel starts
         init(camelContext);
         return new OpenTracingRoutePolicy(routeId);
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
index e94e318..cb14eb7 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/SpanDecorator.java
@@ -107,8 +107,8 @@ public interface SpanDecorator {
      * This method returns the map to be used for headers extraction
      * when the component is receiving a communication.
      *
-     * @param a map containing the objects
-     * @param whether the headers are encoded
+     * @param map a map containing the objects
+     * @param encoding whether the headers are encoded
      * @return The extraction map
      */
     TextMap getExtractAdapter(Map<String, Object> map, boolean encoding);
@@ -117,8 +117,8 @@ public interface SpanDecorator {
      * This method returns the map to be used for headers injection
      *  when the component is receiving a communication.
      *
-     * @param a map containing the objects
-     * @param whether the headers are encoded
+     * @param map a map containing the objects
+     * @param encoding whether the headers are encoded
      * @return The injection map
      */
     TextMap getInjectAdapter(Map<String, Object> map, boolean encoding);
diff --git a/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java b/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java
index 7444b2b..d260a57 100644
--- a/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java
+++ b/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java
@@ -167,7 +167,7 @@ public class QuartzNameCollisionTest {
         Trigger trigger = scheduler.getTrigger(triggerKey);
         Assert.assertNotNull(trigger);
 
-        camel1.stopRoute("route-1");
+        camel1.getRouteController().stopRoute("route-1");
 
         Trigger.TriggerState triggerState = component.getScheduler().getTriggerState(triggerKey);
         Assert.assertNotNull(trigger);
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 284a73d..3bfde0f 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
@@ -19,8 +19,8 @@ package org.apache.camel.component.shiro.security;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.AuthorizationPolicy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.shiro.SecurityUtils;
@@ -104,7 +104,7 @@ public class ShiroSecurityPolicy implements AuthorizationPolicy {
         this.setPermissionsList(permissionsList);
     }
 
-    public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {  
+    public void beforeWrap(RouteContext routeContext, NamedNode definition) {
         // noop
     }
     
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
index d20e53c..8f08d3b 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
@@ -33,6 +33,7 @@ import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.RouteDefinition;
@@ -160,7 +161,7 @@ public class CamelRoutesEndpoint {
 
     private void resetRoute(String id) {
         try {
-            ManagedRouteMBean managedRouteMBean = camelContext.getManagedRoute(id, ManagedRouteMBean.class);
+            ManagedRouteMBean managedRouteMBean = camelContext.adapt(ManagedCamelContext.class).getManagedRoute(id, ManagedRouteMBean.class);
             if (managedRouteMBean != null) {
                 managedRouteMBean.reset(true);
             }
@@ -284,7 +285,7 @@ public class CamelRoutesEndpoint {
             super(route);
 
             if (camelContext.getManagementStrategy().getManagementAgent() != null) {
-                this.routeDetails = new RouteDetails(camelContext.getManagedRoute(route.getId(), ManagedRouteMBean.class));
+                this.routeDetails = new RouteDetails(camelContext.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class));
             }
         }
 
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
index 9f668c0..a7a51fe 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
@@ -35,7 +35,7 @@ public class RouteDetailsInfo extends RouteInfo {
         super(route);
 
         if (camelContext.getManagementStrategy().getManagementAgent() != null) {
-            this.routeDetails = new RouteDetails(camelContext.getManagedRoute(route.getId(), ManagedRouteMBean.class));
+            this.routeDetails = new RouteDetails(camelContext.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class));
         }
     }
 
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 20cd09f..81c1f97 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
@@ -23,9 +23,9 @@ import javax.security.auth.Subject;
 import org.apache.camel.CamelAuthorizationException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.model.IdentifiedType;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DelegateProcessor;
 import org.apache.camel.spi.AuthorizationPolicy;
 import org.apache.camel.spi.RouteContext;
@@ -55,7 +55,7 @@ public class SpringSecurityAuthorizationPolicy extends IdentifiedType implements
     private boolean alwaysReauthenticate;
     private boolean useThreadSecurityContext = true;
 
-    public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+    public void beforeWrap(RouteContext routeContext, NamedNode definition) {
     }
 
     public Processor wrap(RouteContext routeContext, Processor 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 a776c68..1fe5815 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
@@ -16,10 +16,11 @@
  */
 package org.apache.camel.spring.spi;
 
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
-import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
 import org.apache.camel.util.ObjectHelper;
@@ -53,7 +54,7 @@ public class SpringTransactionPolicy implements TransactedPolicy {
         this.transactionManager = transactionManager;
     }
 
-    public void beforeWrap(RouteContext routeContext, ProcessorDefinition<?> definition) {
+    public void beforeWrap(RouteContext routeContext, NamedNode definition) {
     }
 
     public Processor wrap(RouteContext routeContext, Processor processor) {
@@ -66,7 +67,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
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder)routeContext.getRoute().getErrorHandlerBuilder();
+        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerBuilder();
 
         // check if its a ref if so then do a lookup
         if (builder instanceof ErrorHandlerBuilderRef) {
@@ -111,7 +113,7 @@ public class SpringTransactionPolicy implements TransactedPolicy {
             txBuilder.configure(routeContext, answer);
 
             // set the route to use our transacted error handler builder
-            routeContext.getRoute().setErrorHandlerBuilder(txBuilder);
+            route.setErrorHandlerBuilder(txBuilder);
         }
 
         // return with wrapped transacted error handler
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/CamelLoadRoutesFromXMLTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/CamelLoadRoutesFromXMLTest.java
index 702b378..d91d1f6 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/CamelLoadRoutesFromXMLTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/CamelLoadRoutesFromXMLTest.java
@@ -45,8 +45,8 @@ public class CamelLoadRoutesFromXMLTest extends SpringTestSupport {
         assertEquals(2, camel.getRoutes().size());
 
         // they should be started
-        assertTrue(camel.getRouteStatus("foo").isStarted());
-        assertTrue(camel.getRouteStatus("bar").isStarted());
+        assertTrue(camel.getRouteController().getRouteStatus("foo").isStarted());
+        assertTrue(camel.getRouteController().getRouteStatus("bar").isStarted());
 
         // and they should work
         MockEndpoint foo = camel.getEndpoint("mock:foo", MockEndpoint.class);
@@ -65,14 +65,14 @@ public class CamelLoadRoutesFromXMLTest extends SpringTestSupport {
         camel.removeRouteDefinitions(routes.getRoutes());
 
         // they should be removed
-        assertNull(camel.getRouteStatus("foo"));
-        assertNull(camel.getRouteStatus("bar"));
+        assertNull(camel.getRouteController().getRouteStatus("foo"));
+        assertNull(camel.getRouteController().getRouteStatus("bar"));
 
         // you can also do this manually via their route ids
-        //camel.stopRoute("foo");
-        //camel.removeRoute("foo");
-        //camel.stopRoute("bar");
-        //camel.removeRoute("bar");
+        //camel.getRouteController().stopRoute("foo");
+        //camel.getRouteController().removeRoute("foo");
+        //camel.getRouteController().stopRoute("bar");
+        //camel.getRouteController().removeRoute("bar");
 
         // load updated xml
         is = this.getClass().getResourceAsStream("myUpdatedRoutes.xml");
@@ -82,8 +82,8 @@ public class CamelLoadRoutesFromXMLTest extends SpringTestSupport {
         assertEquals(2, camel.getRoutes().size());
 
         // they should be started
-        assertTrue(camel.getRouteStatus("foo").isStarted());
-        assertTrue(camel.getRouteStatus("bar").isStarted());
+        assertTrue(camel.getRouteController().getRouteStatus("foo").isStarted());
+        assertTrue(camel.getRouteController().getRouteStatus("bar").isStarted());
 
         // and they should work again (need to get new mock endpoint as the old is gone)
         foo = camel.getEndpoint("mock:foo", MockEndpoint.class);
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextAutoStartupTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextAutoStartupTest.java
index 19bdb04..c3847bf 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextAutoStartupTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/CamelContextAutoStartupTest.java
@@ -42,14 +42,14 @@ public class CamelContextAutoStartupTest extends Assert {
         assertEquals(Boolean.FALSE, camel.isAutoStartup());
         assertEquals(1, camel.getRoutes().size());
 
-        assertEquals(false, camel.getRouteStatus("foo").isStarted());
+        assertEquals(false, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         // now starting route manually
         camel.startRoute("foo");
 
         assertEquals(Boolean.FALSE, camel.isAutoStartup());
         assertEquals(1, camel.getRoutes().size());
-        assertEquals(true, camel.getRouteStatus("foo").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         // and now we can send a message to the route and see that it works
         MockEndpoint mock = camel.getEndpoint("mock:result", MockEndpoint.class);
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/config/RouteAutoStartupPropertiesTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/config/RouteAutoStartupPropertiesTest.java
index 8b0a34b..6a675ce 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/config/RouteAutoStartupPropertiesTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/config/RouteAutoStartupPropertiesTest.java
@@ -38,11 +38,11 @@ public class RouteAutoStartupPropertiesTest extends Assert {
 
         SpringCamelContext camel = ac.getBeansOfType(SpringCamelContext.class).values().iterator().next();
 
-        assertEquals(false, camel.getRouteStatus("foo").isStarted());
+        assertEquals(false, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         // now starting route manually
         camel.startRoute("foo");
-        assertEquals(true, camel.getRouteStatus("foo").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("foo").isStarted());
 
         // and now we can send a message to the route and see that it works
         MockEndpoint mock = camel.getEndpoint("mock:result", MockEndpoint.class);
@@ -62,7 +62,7 @@ public class RouteAutoStartupPropertiesTest extends Assert {
 
         SpringCamelContext camel = ac.getBeansOfType(SpringCamelContext.class).values().iterator().next();
 
-        assertEquals(true, camel.getRouteStatus("bar").isStarted());
+        assertEquals(true, camel.getRouteController().getRouteStatus("bar").isStarted());
 
         // and now we can send a message to the route and see that it works
         MockEndpoint mock = camel.getEndpoint("mock:result", MockEndpoint.class);
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/ContainerWideInterceptor.java b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/ContainerWideInterceptor.java
index 664c8d9..ed0c963 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/ContainerWideInterceptor.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/ContainerWideInterceptor.java
@@ -18,8 +18,8 @@ package org.apache.camel.spring.interceptor;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,7 +33,7 @@ public class ContainerWideInterceptor implements InterceptStrategy {
     private static final Logger LOG = LoggerFactory.getLogger(ContainerWideInterceptor.class);
     private static int count;
 
-    public Processor wrapProcessorInInterceptors(final CamelContext context, final ProcessorDefinition<?> definition,
+    public Processor wrapProcessorInInterceptors(final CamelContext context, final NamedNode definition,
                                                  final Processor target, final Processor nextTarget) throws Exception {
 
         // as this is based on an unit test we are a bit lazy and just create an inlined processor
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java
index 8aefbff..b4ba2fb 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java
@@ -24,6 +24,7 @@ import java.io.OutputStream;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,7 +44,7 @@ public final class RouteCoverageDumper {
             String dir = "target/camel-route-coverage";
             String name = testClassName + "-" + testName + ".xml";
 
-            ManagedCamelContextMBean managedCamelContext = context.getManagedCamelContext();
+            ManagedCamelContextMBean managedCamelContext = context.adapt(ManagedCamelContext.class).getManagedCamelContext();
             if (managedCamelContext == null) {
                 LOG.warn("Cannot dump route coverage to file as JMX is not enabled. Override useJmx() method to enable JMX in the unit test classes.");
             } else {
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerProvidesBreakpointTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerProvidesBreakpointTest.java
index 5bd8bc3..e57f74a 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerProvidesBreakpointTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerProvidesBreakpointTest.java
@@ -17,9 +17,9 @@
 package org.apache.camel.test.spring;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.BreakpointSupport;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Breakpoint;
 
 import org.junit.Test;
@@ -56,7 +56,7 @@ public class CamelSpringRunnerProvidesBreakpointTest
         private boolean breakpointHit;
 
         @Override
-        public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
+        public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
             breakpointHit = true;
         }
 
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 293f666..581a7c6 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
@@ -52,6 +52,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.FluentProducerTemplate;
 import org.apache.camel.Message;
+import org.apache.camel.NamedNode;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
@@ -74,8 +75,10 @@ import org.apache.camel.impl.DefaultDebugger;
 import org.apache.camel.impl.InterceptSendToMockEndpointStrategy;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.management.JmxSystemPropertyKeys;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.Language;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StopWatch;
@@ -429,7 +432,7 @@ public abstract class CamelTestSupport extends TestSupport {
             String dir = "target/camel-route-coverage";
             String name = className + "-" + getTestMethodName() + ".xml";
 
-            ManagedCamelContextMBean managedCamelContext = context != null ? context.getManagedCamelContext() : null;
+            ManagedCamelContextMBean managedCamelContext = context != null ? context.adapt(ManagedCamelContext.class).getManagedCamelContext() : null;
             if (managedCamelContext == null) {
                 log.warn("Cannot dump route coverage to file as JMX is not enabled. Override useJmx() method to enable JMX in the unit test classes.");
             } else {
@@ -525,7 +528,7 @@ public abstract class CamelTestSupport extends TestSupport {
 
         // log processor coverage for each route
         for (Route route : context.getRoutes()) {
-            ManagedRouteMBean managedRoute = context.getManagedRoute(route.getId(), ManagedRouteMBean.class);
+            ManagedRouteMBean managedRoute = context.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class);
             if (managedRoute.getExchangesTotal() == 0) {
                 uncoveredRoutes.add(route.getId());
             }
@@ -577,7 +580,7 @@ public abstract class CamelTestSupport extends TestSupport {
             String name = objectName.getKeyProperty("name");
             name = ObjectName.unquote(name);
 
-            ManagedProcessorMBean managedProcessor = context.getManagedProcessor(name, ManagedProcessorMBean.class);
+            ManagedProcessorMBean managedProcessor = context.adapt(ManagedCamelContext.class).getManagedProcessor(name, ManagedProcessorMBean.class);
 
             if (managedProcessor != null) {
                 if (processorsForRoute.get(routeId) == null) {
@@ -1022,13 +1025,13 @@ public abstract class CamelTestSupport extends TestSupport {
     private class DebugBreakpoint extends BreakpointSupport {
 
         @Override
-        public void beforeProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition) {
-            CamelTestSupport.this.debugBefore(exchange, processor, definition, definition.getId(), definition.getLabel());
+        public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
+            CamelTestSupport.this.debugBefore(exchange, processor, (RouteDefinition) definition, definition.getId(), definition.getLabel());
         }
 
         @Override
-        public void afterProcess(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, long timeTaken) {
-            CamelTestSupport.this.debugAfter(exchange, processor, definition, definition.getId(), definition.getLabel(), timeTaken);
+        public void afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken) {
+            CamelTestSupport.this.debugAfter(exchange, processor, (RouteDefinition) definition, definition.getId(), definition.getLabel(), timeTaken);
         }
     }
 
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 7d995f8..abad90e 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
@@ -40,6 +40,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.StaticService;
 import org.apache.camel.api.management.ManagedAttribute;
@@ -51,7 +52,6 @@ import org.apache.camel.management.event.ExchangeCreatedEvent;
 import org.apache.camel.management.event.ExchangeFailedEvent;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.support.EventNotifierSupport;
@@ -152,7 +152,7 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
     }
 
     @Override
-    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, RouteDefinition route) {
+    public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) {
         // ensure this zipkin tracer gets initialized when Camel starts
         init(camelContext);
         return new ZipkinRoutePolicy();
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java
index ef9f9e2..9b50624 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorLeaderRoutePolicy.java
@@ -24,6 +24,7 @@ import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.camel.NonManagedService;
 import org.apache.camel.Route;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.support.RoutePolicySupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -77,7 +78,8 @@ public class CuratorLeaderRoutePolicy extends RoutePolicySupport implements Elec
     public void onInit(Route route) {
         ensureElectionIsCreated(route);
         LOG.info("Route managed by {}. Setting route {} AutoStartup flag to false.", this.getClass(), route.getId());
-        route.getRouteContext().getRoute().setAutoStartup("false");
+        RouteDefinition definition = (RouteDefinition) route.getRouteContext().getRoute();
+        definition.setAutoStartup("false");
         ensureElectionIsCreated(route);
 
         if (election.isMaster()) {
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java
index cfacc45..ceb24cf 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/policy/CuratorMultiMasterLeaderRoutePolicy.java
@@ -25,6 +25,7 @@ import java.util.concurrent.locks.ReentrantLock;
 import org.apache.camel.NonManagedService;
 import org.apache.camel.Route;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.support.RoutePolicySupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -79,7 +80,8 @@ public class CuratorMultiMasterLeaderRoutePolicy extends RoutePolicySupport impl
     public void onInit(Route route) {
         ensureElectionIsCreated();
         LOG.info("Route managed by {}. Setting route [{}] AutoStartup flag to false.", this.getClass(), route.getId());
-        route.getRouteContext().getRoute().setAutoStartup("false");
+        RouteDefinition definition = (RouteDefinition) route.getRouteContext().getRoute();
+        definition.setAutoStartup("false");
 
 
         if (election.isMaster()) {
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
index fb7cbde..58b746a 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
@@ -38,6 +38,7 @@ import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.RouteDefinition;
@@ -277,7 +278,7 @@ public abstract class AbstractLocalCamelController extends AbstractCamelControll
                         row.put("routeId", route.getId());
                         row.put("state", getRouteState(route));
                         row.put("uptime", route.getUptime());
-                        ManagedRouteMBean mr = context.getManagedRoute(route.getId(), ManagedRouteMBean.class);
+                        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class);
                         if (mr != null) {
                             row.put("exchangesTotal", "" + mr.getExchangesTotal());
                             row.put("exchangesInflight", "" + mr.getExchangesInflight());
diff --git a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
index adf0f81..0c6bd1f 100644
--- a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
+++ b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
@@ -86,10 +86,10 @@ public class CamelControllerImpl extends AbstractLocalCamelController {
             row.put("name", camelContext.getName());
             row.put("state", camelContext.getStatus().name());
             row.put("uptime", camelContext.getUptime());
-            if (camelContext.getManagedCamelContext() != null) {
-                row.put("exchangesTotal", "" + camelContext.getManagedCamelContext().getExchangesTotal());
-                row.put("exchangesInflight", "" + camelContext.getManagedCamelContext().getExchangesInflight());
-                row.put("exchangesFailed", "" + camelContext.getManagedCamelContext().getExchangesFailed());
+            if (camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext() != null) {
+                row.put("exchangesTotal", "" + camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext().getExchangesTotal());
+                row.put("exchangesInflight", "" + camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext().getExchangesInflight());
+                row.put("exchangesFailed", "" + camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext().getExchangesFailed());
             } else {
                 row.put("exchangesTotal", "0");
                 row.put("exchangesInflight", "0");
diff --git a/platforms/spring-boot/components-starter/camel-hystrix-starter/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigurationTest.java b/platforms/spring-boot/components-starter/camel-hystrix-starter/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigurationTest.java
index 948b6f7..0d8145d 100644
--- a/platforms/spring-boot/components-starter/camel-hystrix-starter/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigurationTest.java
+++ b/platforms/spring-boot/components-starter/camel-hystrix-starter/src/test/java/org/apache/camel/component/hystrix/processor/HystrixHierarchicalConfigurationTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.hystrix.processor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.HystrixDefinition;
+import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteDefinition;
 import org.junit.Assert;
 import org.junit.Test;
@@ -50,7 +51,7 @@ public class HystrixHierarchicalConfigurationTest {
 
     @Test
     public void testConfiguration() throws Exception {
-        RouteDefinition routeDefinition = camelContext.getRouteDefinition("hystrix-route");
+        RouteDefinition routeDefinition = camelContext.adapt(ModelCamelContext.class).getRouteDefinition("hystrix-route");
         HystrixDefinition hystrixDefinition = findHystrixDefinition(routeDefinition);
 
         Assert.assertNotNull(hystrixDefinition);
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/issues/DummyInterceptor.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/issues/DummyInterceptor.java
index df15e01..60354fc 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/issues/DummyInterceptor.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/issues/DummyInterceptor.java
@@ -17,14 +17,14 @@
 package org.apache.camel.itest.issues;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 
 public class DummyInterceptor implements InterceptStrategy {
     
     // Just simply return the target processor 
-    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
+    public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
         return target;
     }
 }


[camel] 25/44: Harden tests a bit

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 9c6a2bf165b513007a75ff16f6d4f15caa155eb8
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 1 17:13:10 2018 +0200

    Harden tests a bit
---
 .../src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java   | 2 ++
 .../apache/camel/issues/ThreadsRejectedExecutionWithDeadLetterTest.java | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
index 4da4ad3..1771563 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
@@ -56,6 +56,7 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
 
         // the eviction is async so force cleanup
         cache.cleanUp();
+        Thread.sleep(50);
 
         assertEquals("Size should be 1000", 1000, cache.size());
         cache.stop();
@@ -77,6 +78,7 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
 
         // the eviction is async so force cleanup
         cache.cleanUp();
+        Thread.sleep(50);
 
         assertEquals("Size should be 5", 5, cache.size());
 
diff --git a/camel-core/src/test/java/org/apache/camel/issues/ThreadsRejectedExecutionWithDeadLetterTest.java b/camel-core/src/test/java/org/apache/camel/issues/ThreadsRejectedExecutionWithDeadLetterTest.java
index d5f2bda..7a2fc41 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/ThreadsRejectedExecutionWithDeadLetterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/ThreadsRejectedExecutionWithDeadLetterTest.java
@@ -70,6 +70,8 @@ public class ThreadsRejectedExecutionWithDeadLetterTest extends ContextTestSuppo
         template.sendBody("seda:start", "Hi World");    // will be queued
         template.sendBody("seda:start", "Bye World");   // will be rejected
 
+        Thread.sleep(100);
+
         latch.countDown();
         latch.countDown();
         latch.countDown();


[camel] 04/44: [CAMEL-12814] Replace old components with their new counterpart

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a80623ed4cf07e972fc7f092df6f9bdc6dde26b7
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Sep 20 08:39:18 2018 +0200

    [CAMEL-12814] Replace old components with their new counterpart
---
 .../META-INF/services/org/apache/camel/component/hdfs  | 18 ++++++++++++++++++
 .../META-INF/services/org/apache/camel/component/http  | 18 ++++++++++++++++++
 .../META-INF/services/org/apache/camel/component/https | 18 ++++++++++++++++++
 .../META-INF/services/org/apache/camel/component/mina  | 18 ++++++++++++++++++
 .../services/org/apache/camel/component/mongodb        | 18 ++++++++++++++++++
 .../META-INF/services/org/apache/camel/component/netty | 17 +++++++++++++++++
 .../services/org/apache/camel/component/quartz         | 18 ++++++++++++++++++
 7 files changed, 125 insertions(+)

diff --git a/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs b/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs
new file mode 100644
index 0000000..acde85a
--- /dev/null
+++ b/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs
@@ -0,0 +1,18 @@
+#
+# 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.hdfs2.HdfsComponent
diff --git a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http
new file mode 100644
index 0000000..12005c6
--- /dev/null
+++ b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http
@@ -0,0 +1,18 @@
+#
+# 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.http4.HttpComponent
diff --git a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https
new file mode 100644
index 0000000..12005c6
--- /dev/null
+++ b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https
@@ -0,0 +1,18 @@
+#
+# 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.http4.HttpComponent
diff --git a/components/camel-mina2/src/main/resources/META-INF/services/org/apache/camel/component/mina b/components/camel-mina2/src/main/resources/META-INF/services/org/apache/camel/component/mina
new file mode 100644
index 0000000..17c99f3
--- /dev/null
+++ b/components/camel-mina2/src/main/resources/META-INF/services/org/apache/camel/component/mina
@@ -0,0 +1,18 @@
+#
+# 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.mina2.Mina2Component
diff --git a/components/camel-mongodb3/src/main/resources/META-INF/services/org/apache/camel/component/mongodb b/components/camel-mongodb3/src/main/resources/META-INF/services/org/apache/camel/component/mongodb
new file mode 100644
index 0000000..ba9679f
--- /dev/null
+++ b/components/camel-mongodb3/src/main/resources/META-INF/services/org/apache/camel/component/mongodb
@@ -0,0 +1,18 @@
+#
+# 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.mongodb3.MongoDbComponent
diff --git a/components/camel-netty4/src/main/resources/META-INF/services/org/apache/camel/component/netty b/components/camel-netty4/src/main/resources/META-INF/services/org/apache/camel/component/netty
new file mode 100644
index 0000000..140b453
--- /dev/null
+++ b/components/camel-netty4/src/main/resources/META-INF/services/org/apache/camel/component/netty
@@ -0,0 +1,17 @@
+# 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.netty4.NettyComponent
diff --git a/components/camel-quartz2/src/main/resources/META-INF/services/org/apache/camel/component/quartz b/components/camel-quartz2/src/main/resources/META-INF/services/org/apache/camel/component/quartz
new file mode 100644
index 0000000..c1ffd5c
--- /dev/null
+++ b/components/camel-quartz2/src/main/resources/META-INF/services/org/apache/camel/component/quartz
@@ -0,0 +1,18 @@
+#
+# 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.quartz2.QuartzComponent


[camel] 11/44: [CAMEL-12818] Remove deprecated stuff from camel-rabbitmq

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4df0d7a3a8868243059dd513f93d77cc873c0d69
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Sep 24 08:42:04 2018 +0200

    [CAMEL-12818] Remove deprecated stuff from camel-rabbitmq
---
 .../src/main/docs/rabbitmq-component.adoc          |   7 +-
 .../camel/component/rabbitmq/ArgsConfigurer.java   |  40 ----
 .../component/rabbitmq/RabbitMQComponent.java      |   6 -
 .../component/rabbitmq/RabbitMQDeclareSupport.java |  14 +-
 .../camel/component/rabbitmq/RabbitMQEndpoint.java |  88 +--------
 .../rabbitmq/RabbitMQConsumerIntTest.java          |   4 +-
 .../component/rabbitmq/RabbitMQEndpointTest.java   |  76 +------
 .../component/rabbitmq/RabbitMQInOutIntTest.java   |   8 +-
 .../camel/component/restlet/RestletComponent.java  |  15 --
 .../camel/component/restlet/RestletEndpoint.java   |  18 --
 .../org/apache/camel/test/junit4/TestSupport.java  |  34 ----
 .../xmlsecurity/XMLSecurityDataFormat.java         | 218 +--------------------
 .../xmlsecurity/XMLSecurityDataFormatTest.java     |  30 +--
 13 files changed, 24 insertions(+), 534 deletions(-)

diff --git a/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc b/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc
index a529c1d..afbbec1 100644
--- a/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc
+++ b/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc
@@ -127,7 +127,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (62 parameters):
+==== Query Parameters (57 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -175,14 +175,9 @@ with the following path and query parameters:
 | *publisherAcknowledgements Timeout* (producer) | The amount of time in milliseconds to wait for a basic.ack response from RabbitMQ server |  | long
 | *args* (advanced) | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 |  | Map
 | *automaticRecoveryEnabled* (advanced) | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when connection shutdown is not initiated by the application) |  | Boolean
-| *bindingArgs* (advanced) | *Deprecated* Key/value args for configuring the queue binding parameters when declare=true |  | Map
 | *clientProperties* (advanced) | Connection client properties (client info used in negotiating with the server) |  | Map
 | *connectionTimeout* (advanced) | Connection timeout | 60000 | int
-| *exchangeArgs* (advanced) | *Deprecated* Key/value args for configuring the exchange parameters when declare=true |  | Map
-| *exchangeArgsConfigurer* (advanced) | *Deprecated* Set the configurer for setting the exchange args in Channel.exchangeDeclare |  | ArgsConfigurer
 | *networkRecoveryInterval* (advanced) | Network recovery interval in milliseconds (interval used when recovering from network failure) | 5000 | Integer
-| *queueArgs* (advanced) | *Deprecated* Key/value args for configuring the queue parameters when declare=true |  | Map
-| *queueArgsConfigurer* (advanced) | *Deprecated* Set the configurer for setting the queue args in Channel.queueDeclare |  | ArgsConfigurer
 | *requestedChannelMax* (advanced) | Connection requested channel max (max number of channels offered) | 2047 | int
 | *requestedFrameMax* (advanced) | Connection requested frame max (max size of frame offered) | 0 | int
 | *requestedHeartbeat* (advanced) | Connection requested heartbeat (heart-beat in seconds offered) | 60 | int
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/ArgsConfigurer.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/ArgsConfigurer.java
deleted file mode 100644
index 0ed1bbb..0000000
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/ArgsConfigurer.java
+++ /dev/null
@@ -1,40 +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.component.rabbitmq;
-
-import java.util.Map;
-
-/**
- * @deprecated The endpoint uri properties
- * <ul>
- *     <li>{@link RabbitMQEndpoint#setExchangeArgs(Map)}</li>
- *     <li>{@link RabbitMQEndpoint#setQueueArgs(Map)}</li>
- *     <li>{@link RabbitMQEndpoint#setBindingArgs(Map)}</li>
- * </ul>
- *
- * are favoured over their configurer counterparts.
- */
-@Deprecated
-public interface ArgsConfigurer {
-    
-    /**
-     * Configure the args maps for RabbitMQ to use
-     * @param args the map need to be configured
-     */
-    void configurArgs(Map<String, Object> args);
-
-}
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java
index f50fb5c..fe9b7ff 100644
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java
+++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java
@@ -259,12 +259,6 @@ public class RabbitMQComponent extends DefaultComponent {
         localArgs.putAll(IntrospectionSupport.extractProperties(params, ARG_PREFIX));
         endpoint.setArgs(localArgs);
 
-        Map<String, Object> argsCopy = new HashMap<>(localArgs);
-        
-        // Combine the three types of rabbit arguments with their individual endpoint properties
-        endpoint.getExchangeArgs().putAll(IntrospectionSupport.extractProperties(argsCopy, EXCHANGE_ARG_PREFIX));
-        endpoint.getQueueArgs().putAll(IntrospectionSupport.extractProperties(argsCopy, QUEUE_ARG_PREFIX));
-        endpoint.getBindingArgs().putAll(IntrospectionSupport.extractProperties(argsCopy, BINDING_ARG_PREFIX));
         // Change null headers processing for message converter
         endpoint.getMessageConverter().setAllowNullHeaders(endpoint.isAllowNullHeaders());
 
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java
index 766cf41..0dafc46 100644
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java
+++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java
@@ -59,7 +59,6 @@ public class RabbitMQDeclareSupport {
     private Map<String, Object> resolvedQueueArguments() {
         Map<String, Object> queueArgs = new HashMap<>();
         populateQueueArgumentsFromDeadLetterExchange(queueArgs);
-        populateQueueArgumentsFromConfigurer(queueArgs);
         queueArgs.putAll(endpoint.getQueueArgs());
         formatSpecialQueueArguments(queueArgs);
         return queueArgs;
@@ -91,12 +90,7 @@ public class RabbitMQDeclareSupport {
     }
 
     private Map<String, Object> resolvedExchangeArguments() {
-        Map<String, Object> exchangeArgs = new HashMap<>();
-        if (endpoint.getExchangeArgsConfigurer() != null) {
-            endpoint.getExchangeArgsConfigurer().configurArgs(exchangeArgs);
-        }
-        exchangeArgs.putAll(endpoint.getExchangeArgs());
-        return exchangeArgs;
+        return endpoint.getExchangeArgs();
     }
 
     private boolean shouldDeclareQueue() {
@@ -111,12 +105,6 @@ public class RabbitMQDeclareSupport {
         return !endpoint.isSkipQueueBind();
     }
 
-    private void populateQueueArgumentsFromConfigurer(final Map<String, Object> queueArgs) {
-        if (endpoint.getQueueArgsConfigurer() != null) {
-            endpoint.getQueueArgsConfigurer().configurArgs(queueArgs);
-        }
-    }
-
     private void declareExchange(final Channel channel, final String exchange, final String exchangeType, final Map<String, Object> exchangeArgs) throws IOException {
         if (endpoint.isPassive()) {
             channel.exchangeDeclarePassive(exchange);
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java
index c715514..4e3eb71 100644
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java
+++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java
@@ -42,6 +42,11 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.util.IntrospectionSupport;
+
+import static org.apache.camel.component.rabbitmq.RabbitMQComponent.BINDING_ARG_PREFIX;
+import static org.apache.camel.component.rabbitmq.RabbitMQComponent.EXCHANGE_ARG_PREFIX;
+import static org.apache.camel.component.rabbitmq.RabbitMQComponent.QUEUE_ARG_PREFIX;
 
 /**
  * The rabbitmq component allows you produce and consume messages from
@@ -147,21 +152,6 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint {
     private boolean immediate;
     @UriParam(label = "advanced", prefix = "arg.", multiValue = true)
     private Map<String, Object> args;
-    @UriParam(label = "advanced")
-    @Deprecated
-    private Map<String, Object> exchangeArgs = new HashMap<>();
-    @UriParam(label = "advanced")
-    @Deprecated
-    private Map<String, Object> queueArgs = new HashMap<>();
-    @UriParam(label = "advanced")
-    @Deprecated
-    private Map<String, Object> bindingArgs = new HashMap<>();
-    @UriParam(label = "advanced")
-    @Deprecated
-    private ArgsConfigurer queueArgsConfigurer;
-    @UriParam(label = "advanced")
-    @Deprecated
-    private ArgsConfigurer exchangeArgsConfigurer;
     @UriParam(label = "advanced", defaultValue = "20000")
     private long requestTimeout = 20000;
     @UriParam(label = "advanced", defaultValue = "1000")
@@ -809,79 +799,19 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint {
         return args;
     }
 
-    /**
-     * Key/value args for configuring the exchange parameters when declare=true
-     *
-     * @Deprecated Use args instead e.g arg.exchange.x-message-ttl=1000
-     */
-    @Deprecated
-    public void setExchangeArgs(Map<String, Object> exchangeArgs) {
-        this.exchangeArgs = exchangeArgs;
-    }
-
     public Map<String, Object> getExchangeArgs() {
-        return exchangeArgs;
-    }
-
-    /**
-     * Key/value args for configuring the queue parameters when declare=true
-     *
-     * @Deprecated Use args instead e.g arg.queue.x-message-ttl=1000
-     */
-    public void setQueueArgs(Map<String, Object> queueArgs) {
-        this.queueArgs = queueArgs;
+        return IntrospectionSupport.extractProperties(args, EXCHANGE_ARG_PREFIX);
     }
 
     public Map<String, Object> getQueueArgs() {
-        return queueArgs;
-    }
-
-    /**
-     * Key/value args for configuring the queue binding parameters when
-     * declare=true
-     *
-     * @Deprecated Use args instead e.g arg.binding.foo=bar
-     */
-    public void setBindingArgs(Map<String, Object> bindingArgs) {
-        this.bindingArgs = bindingArgs;
+        return IntrospectionSupport.extractProperties(args, QUEUE_ARG_PREFIX);
     }
 
     public Map<String, Object> getBindingArgs() {
-        return bindingArgs;
-    }
-
-    @Deprecated
-    public ArgsConfigurer getQueueArgsConfigurer() {
-        return queueArgsConfigurer;
-    }
-
-    /**
-     * Set the configurer for setting the queue args in Channel.queueDeclare
-     *
-     * @deprecated Use args instead e.g arg.queue.x-message-ttl=1000
-     */
-    @Deprecated
-    public void setQueueArgsConfigurer(ArgsConfigurer queueArgsConfigurer) {
-        this.queueArgsConfigurer = queueArgsConfigurer;
+        return IntrospectionSupport.extractProperties(args, BINDING_ARG_PREFIX);
     }
 
-    @Deprecated
-    public ArgsConfigurer getExchangeArgsConfigurer() {
-        return exchangeArgsConfigurer;
-    }
-
-    /**
-     * Set the configurer for setting the exchange args in
-     * Channel.exchangeDeclare
-     *
-     * @deprecated Use args instead e.g arg.exchange.x-message-ttl=1000
-     */
-    @Deprecated
-    public void setExchangeArgsConfigurer(ArgsConfigurer exchangeArgsConfigurer) {
-        this.exchangeArgsConfigurer = exchangeArgsConfigurer;
-    }
-
-    /**
+     /**
      * Set timeout for waiting for a reply when using the InOut Exchange Pattern
      * (in milliseconds)
      */
diff --git a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
index 1b3826b..18aa700 100644
--- a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
+++ b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
@@ -46,7 +46,7 @@ public class RabbitMQConsumerIntTest extends AbstractRabbitMQIntTest {
     @EndpointInject(uri = "mock:result")
     private MockEndpoint to;
 
-    @EndpointInject(uri = "rabbitmq:localhost:5672/" + HEADERS_EXCHANGE + "?username=cameltest&password=cameltest&exchangeType=headers&queue=" + QUEUE + "&bindingArgs=#bindArgs")
+    @EndpointInject(uri = "rabbitmq:localhost:5672/" + HEADERS_EXCHANGE + "?username=cameltest&password=cameltest&exchangeType=headers&queue=" + QUEUE + "&args=#args")
     private Endpoint headersExchangeWithQueue;
 
     @EndpointInject(uri = "rabbitmq:localhost:5672/" + "ex7" + "?username=cameltest&password=cameltest&exchangeType=headers&autoDelete=false&durable=true&queue=q7&arg.binding.fizz=buzz")
@@ -70,7 +70,7 @@ public class RabbitMQConsumerIntTest extends AbstractRabbitMQIntTest {
         JndiRegistry jndi = super.createRegistry();
 
         Map<String, Object> bindingArgs = new HashMap<>();
-        jndi.bind("bindArgs", bindingArgs);
+        jndi.bind("args", bindingArgs);
 
         return jndi;
     }
diff --git a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java
index 9308460..198a923 100644
--- a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java
+++ b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java
@@ -46,13 +46,6 @@ public class RabbitMQEndpointTest extends CamelTestSupport {
 
     protected JndiRegistry createRegistry() throws Exception {
         JndiRegistry registry = super.createRegistry();
-        registry.bind("argsConfigurer", new ArgsConfigurer() {
-            @Override
-            public void configurArgs(Map<String, Object> args) {
-                // do nothing here
-            }
-
-        });
 
         HashMap<String, Object> args = new HashMap<>();
         args.put("foo", "bar");
@@ -161,53 +154,16 @@ public class RabbitMQEndpointTest extends CamelTestSupport {
     @Test
     public void createEndpointWithAutoAckDisabled() throws Exception {
         RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?autoAck=false", RabbitMQEndpoint.class);
-        assertEquals(false, endpoint.isAutoAck());
+        assertFalse(endpoint.isAutoAck());
     }
 
     @Test
     public void assertSingleton() throws Exception {
         RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange", RabbitMQEndpoint.class);
-
         assertTrue(endpoint.isSingleton());
     }
 
     @Test
-    public void testQueueArgsConfigurer() throws Exception {
-        RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?queueArgsConfigurer=#argsConfigurer", RabbitMQEndpoint.class);
-        assertNotNull("We should get the queueArgsConfigurer here.", endpoint.getQueueArgsConfigurer());
-        assertNull("We should not get the exchangeArgsConfigurer here.", endpoint.getExchangeArgsConfigurer());
-        assertTrue("We should not get the bindingArgsConfigurer here.", endpoint.getBindingArgs().isEmpty());
-    }
-
-    @Test
-    public void testBindingArgs() throws Exception {
-        RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?bindingArgs=#args", RabbitMQEndpoint.class);
-        assertEquals("We should get the bindingArgsConfigurer here.", 1, endpoint.getBindingArgs().size());
-        assertNull("We should not get the queueArgsConfigurer here.", endpoint.getQueueArgsConfigurer());
-        assertNull("We should not get the exchangeArgsConfigurer here.", endpoint.getExchangeArgsConfigurer());
-    }
-
-    @Test
-    public void testQueueArgs() throws Exception {
-        RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?queueArgs=#args", RabbitMQEndpoint.class);
-        assertEquals("We should get the queueArgs here.", 1, endpoint.getQueueArgs().size());
-        assertTrue("We should not get the binding args here.", endpoint.getBindingArgs().isEmpty());
-        assertTrue("We should not get the exchange args here.", endpoint.getExchangeArgs().isEmpty());
-        assertNull("We should not get the exchangeArgsConfigurer here.", endpoint.getExchangeArgsConfigurer());
-        assertNull("We should not get the queueArgsConfigurer here.", endpoint.getQueueArgsConfigurer());
-    }
-
-    @Test
-    public void testExchangeArgs() throws Exception {
-        RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?exchangeArgs=#args", RabbitMQEndpoint.class);
-        assertEquals("We should get the exchangeArgs here.", 1, endpoint.getExchangeArgs().size());
-        assertTrue("We should not get the binding args here.", endpoint.getBindingArgs().isEmpty());
-        assertTrue("We should not get the queue args here.", endpoint.getQueueArgs().isEmpty());
-        assertNull("We should not get the exchangeArgsConfigurer here.", endpoint.getExchangeArgsConfigurer());
-        assertNull("We should not get the queueArgsConfigurer here.", endpoint.getQueueArgsConfigurer());
-    }
-
-    @Test
     public void testMultiArgsPopulateCorrectEndpointProperties() throws Exception {
         RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?arg.exchange.e1=v1&arg.exchange.e2=v2&arg.queue.q1=v3&arg.binding.b1=v4",
                                                         RabbitMQEndpoint.class);
@@ -218,36 +174,6 @@ public class RabbitMQEndpointTest extends CamelTestSupport {
     }
 
     @Test
-    public void testMultiArgsCombinedWithIndividuallySpecified() throws Exception {
-        // setup two arguments for each rabbit fundamental.
-        // Configured inline and via named map in the camel registry
-        RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange" + "?arg.exchange.e1=v1&exchangeArgs=#args" + "&arg.queue.q1=v2&queueArgs=#moreArgs"
-                                                        + "&arg.binding.b1=v3&bindingArgs=#evenMoreArgs", RabbitMQEndpoint.class);
-
-        // The multi-value inline has 3
-        Map<String, Object> inlineArgs = endpoint.getArgs();
-        assertEquals("Wrong number of args", 3, inlineArgs.size());
-        assertTrue(inlineArgs.containsKey("exchange.e1"));
-        assertTrue(inlineArgs.containsKey("queue.q1"));
-        assertTrue(inlineArgs.containsKey("binding.b1"));
-
-        Map<String, Object> exchangeArgs = endpoint.getExchangeArgs();
-        assertEquals("Wrong number of exchange args", 2, exchangeArgs.size());
-        assertTrue("Should contain the individually specified exchange args", exchangeArgs.containsKey("foo"));
-        assertTrue("Should contain the args in the multi-value map", exchangeArgs.containsKey("e1"));
-
-        Map<String, Object> queueArgs = endpoint.getQueueArgs();
-        assertEquals("Wrong number of queue args", 2, queueArgs.size());
-        assertTrue("Should contain the individually specified queue args", queueArgs.containsKey("fizz"));
-        assertTrue("Should contain the args in the multi-value map", queueArgs.containsKey("q1"));
-
-        Map<String, Object> bindingArgs = endpoint.getBindingArgs();
-        assertEquals("Wrong number of binding args", 2, bindingArgs.size());
-        assertTrue("Should contain the individually specified binding args", bindingArgs.containsKey("ping"));
-        assertTrue("Should contain the args in the multi-value map", bindingArgs.containsKey("b1"));
-    }
-
-    @Test
     public void brokerEndpointAddressesSettings() throws Exception {
         RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?addresses=server1:12345,server2:12345", RabbitMQEndpoint.class);
         assertEquals("Wrong size of endpoint addresses.", 2, endpoint.getAddresses().length);
diff --git a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQInOutIntTest.java b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQInOutIntTest.java
index 61a7e53..105d2d6 100644
--- a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQInOutIntTest.java
+++ b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQInOutIntTest.java
@@ -63,7 +63,7 @@ public class RabbitMQInOutIntTest extends AbstractRabbitMQIntTest {
     @EndpointInject(uri = "rabbitmq:localhost:5672/" + EXCHANGE_NO_ACK + "?threadPoolSize=1&exchangeType=direct&username=cameltest&password=cameltest"
             + "&autoAck=false&autoDelete=false&durable=false&queue=q5&routingKey=" + ROUTING_KEY
             + "&transferException=true&requestTimeout=" + TIMEOUT_MS
-            + "&queueArgs=#queueArgs")
+            + "&args=#args")
     private Endpoint noAutoAckEndpoint;
 
     @EndpointInject(uri = "mock:result")
@@ -73,9 +73,9 @@ public class RabbitMQInOutIntTest extends AbstractRabbitMQIntTest {
     protected JndiRegistry createRegistry() throws Exception {
         JndiRegistry jndi = super.createRegistry();
 
-        HashMap<String, Object> queueArgs = new HashMap<>();
-        queueArgs.put("x-expires", 60000);
-        jndi.bind("queueArgs", queueArgs);
+        HashMap<String, Object> args = new HashMap<>();
+        args.put("queue.x-expires", 60000);
+        jndi.bind("args", args);
 
         return jndi;
     }
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
index b73e874..5512e21 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
@@ -255,12 +255,6 @@ public class RestletComponent extends DefaultComponent implements RestConsumerFa
         if (endpoint.getUriPattern() != null && endpoint.getUriPattern().length() > 0) {
             attachUriPatternToRestlet(offsetPath, endpoint.getUriPattern(), endpoint, consumer.getRestlet());
         }
-
-        if (endpoint.getRestletUriPatterns() != null) {
-            for (String uriPattern : endpoint.getRestletUriPatterns()) {
-                attachUriPatternToRestlet(offsetPath, uriPattern, endpoint, consumer.getRestlet());
-            }
-        }
     }
 
     public void disconnect(RestletConsumer consumer) throws Exception {
@@ -276,15 +270,6 @@ public class RestletComponent extends DefaultComponent implements RestConsumerFa
             }
         }
 
-        if (endpoint.getRestletUriPatterns() != null) {
-            for (String uriPattern : endpoint.getRestletUriPatterns()) {
-                MethodBasedRouter methodRouter = getMethodRouter(uriPattern, false);
-                if (methodRouter != null) {
-                    routesToRemove.add(methodRouter);
-                }
-            }
-        }
-
         for (MethodBasedRouter router : routesToRemove) {
 
             List<Method> methods = new ArrayList<>();
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java
index 5c23846..4e7515a 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java
@@ -66,9 +66,6 @@ public class RestletEndpoint extends DefaultEndpoint implements AsyncEndpoint, H
     private Method restletMethod = Method.GET;
     @UriParam(label = "consumer", javaType = "java.lang.String")
     private Method[] restletMethods;
-    @UriParam(label = "consumer,advanced")
-    @Deprecated
-    private List<String> restletUriPatterns;
     @UriParam(label = "security")
     private Map<String, String> restletRealm;
     @UriParam(label = "advanced")
@@ -268,21 +265,6 @@ public class RestletEndpoint extends DefaultEndpoint implements AsyncEndpoint, H
         return restletMethods;
     }
 
-    /**
-     * Specify one ore more URI templates to be serviced by a restlet consumer endpoint, using the # notation to
-     * reference a List<String> in the Camel Registry.
-     * If a URI pattern has been defined in the endpoint URI, both the URI pattern defined in the endpoint and the restletUriPatterns option will be honored.
-     */
-    @Deprecated
-    public void setRestletUriPatterns(List<String> restletUriPatterns) {
-        this.restletUriPatterns = restletUriPatterns;
-    }
-
-    @Deprecated
-    public List<String> getRestletUriPatterns() {
-        return restletUriPatterns;
-    }
-
     public boolean isThrowExceptionOnFailure() {
         return throwExceptionOnFailure;
     }
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit4/TestSupport.java b/components/camel-test/src/main/java/org/apache/camel/test/junit4/TestSupport.java
index 3d753a9..b01e7c9 100644
--- a/components/camel-test/src/main/java/org/apache/camel/test/junit4/TestSupport.java
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit4/TestSupport.java
@@ -338,40 +338,6 @@ public abstract class TestSupport extends Assert {
     }
 
     /**
-     * If a processor is wrapped with a bunch of DelegateProcessor or DelegateAsyncProcessor objects
-     * this call will drill through them and return the wrapped Processor.
-     */
-    @Deprecated
-    public static Processor unwrap(Processor processor) {
-        while (true) {
-            if (processor instanceof DelegateProcessor) {
-                processor = ((DelegateProcessor)processor).getProcessor();
-            } else {
-                return processor;
-            }
-        }
-    }
-
-    /**
-     * If a processor is wrapped with a bunch of DelegateProcessor or DelegateAsyncProcessor objects
-     * this call will drill through them and return the Channel.
-     * <p/>
-     * Returns null if no channel is found.
-     */
-    @Deprecated
-    public static Channel unwrapChannel(Processor processor) {
-        while (true) {
-            if (processor instanceof Channel) {
-                return (Channel) processor;
-            } else if (processor instanceof DelegateProcessor) {
-                processor = ((DelegateProcessor)processor).getProcessor();
-            } else {
-                return null;
-            }
-        }
-    }
-
-    /**
      * Recursively delete a directory, useful to zapping test data
      *
      * @param file the directory to be deleted
diff --git a/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java b/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java
index 9417b4f..24e7e01 100644
--- a/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java
+++ b/components/camel-xmlsecurity/src/main/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormat.java
@@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.reflect.Field;
-import java.net.URL;
 import java.security.AccessController;
 import java.security.InvalidKeyException;
 import java.security.Key;
@@ -70,42 +69,6 @@ import org.slf4j.LoggerFactory;
 
 public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware {
 
-    /**
-     * @deprecated  Use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.
-     */
-    @Deprecated
-    public static final String XML_ENC_RECIPIENT_ALIAS = "CamelXmlEncryptionRecipientAlias";
-    
-    /**
-     * @deprecated  Use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.
-     */
-    @Deprecated
-    public static final String XML_ENC_TRUST_STORE_URL = "CamelXmlEncryptionTrustStoreUrl";
-    
-    /**
-     * @deprecated  Use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.
-     */
-    @Deprecated
-    public static final String XML_ENC_TRUST_STORE_PASSWORD = "CamelXmlEncryptionTrustStorePassword";
-    
-    /**
-     * @deprecated  Use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.
-     */                 
-    @Deprecated
-    public static final String XML_ENC_KEY_STORE_URL = "CamelXmlEncryptionKeyStoreUrl";
-    
-    /**
-     * @deprecated  Use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.
-     */
-    @Deprecated
-    public static final String XML_ENC_KEY_STORE_PASSWORD = "CamelXmlEncryptionKeyStorePassword";
-    
-    /**
-     * @deprecated  Use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.
-     */
-    @Deprecated
-    public static final String XML_ENC_KEY_STORE_ALIAS = "CamelXmlEncryptionKeyAlias";
-    
     private static final Logger LOG = LoggerFactory.getLogger(XMLSecurityDataFormat.class);
     private static final String DEFAULT_KEY = "Just another 24 Byte key";
 
@@ -221,37 +184,8 @@ public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat,
         this.setPassPhrase(passPhrase);
         this.setXmlCipherAlgorithm(xmlCipherAlgorithm);
     }
-    
-    /**
-     * @deprecated  use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, String)} or
-     *                  {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead. 
-     */
-    @Deprecated
-    public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String xmlCipherAlgorithm, 
-            String keyCipherAlgorithm) {
-        this();
-        this.setSecureTag(secureTag);
-        this.setSecureTagContents(secureTagContents);
-        this.setXmlCipherAlgorithm(xmlCipherAlgorithm);
-        this.setKeyCipherAlgorithm(keyCipherAlgorithm);
-    }
-            
-    /**
-     * @deprecated  use {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, String)} or
-     *                  {@link #XMLSecurityDataFormat(String, Map, boolean, String, String, String, KeyStoreParameters)} instead.  
-     */
-    @Deprecated
-    public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String recipientKeyAlias, 
-            String xmlCipherAlgorithm, String keyCipherAlgorithm) {
-        this();
-        this.setSecureTag(secureTag);
-        this.setSecureTagContents(secureTagContents);
-        this.setXmlCipherAlgorithm(xmlCipherAlgorithm);
-        this.setRecipientKeyAlias(recipientKeyAlias);
-        this.setKeyCipherAlgorithm(keyCipherAlgorithm);
-    }
-      
-    public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String recipientKeyAlias, 
+
+    public XMLSecurityDataFormat(String secureTag, boolean secureTagContents, String recipientKeyAlias,
                                  String xmlCipherAlgorithm, String keyCipherAlgorithm, String keyOrTrustStoreParametersId) {
         this();
         this.setSecureTag(secureTag);
@@ -374,11 +308,6 @@ public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat,
     @Override
     public void setCamelContext(CamelContext camelContext) {
         this.camelContext = camelContext;
-        try {
-            setDefaultsFromContext(camelContext);
-        } catch (Exception e) {
-            throw new IllegalStateException("Could not initialize XMLSecurityDataFormat with camelContext. ", e);
-        }
     }
 
     @Override
@@ -396,44 +325,7 @@ public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat,
         // noop
     }
 
-    /**
-     * Sets missing properties that are defined in the Camel context.
-     * @deprecated  this operation populates the data format using depreciated properties and will be
-     *              removed at the end of the deprecation period
-     */
-    @Deprecated
-    private void setDefaultsFromContext(CamelContext context) throws Exception {
 
-        Map<String, String> contextProps = context.getGlobalOptions();
-               
-        if (this.recipientKeyAlias == null) {
-            recipientKeyAlias = context.getGlobalOption(XML_ENC_RECIPIENT_ALIAS);
-        }
-
-        if (this.trustStore == null && contextProps.containsKey(XML_ENC_TRUST_STORE_URL)) {
-            trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
-            URL trustStoreUrl = new URL(context.getGlobalOption(XML_ENC_TRUST_STORE_URL));
-            if (trustStorePassword == null) {
-                trustStorePassword = context.getGlobalOption(XML_ENC_TRUST_STORE_PASSWORD);
-            }
-            trustStore.load(trustStoreUrl.openStream(), trustStorePassword.toCharArray());
-        }
-        
-        if (this.keyStore == null && contextProps.containsKey(XML_ENC_KEY_STORE_URL)) {
-            keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
-            URL keyStoreUrl = new URL(context.getGlobalOption(XML_ENC_KEY_STORE_URL));
-            if (keyStorePassword == null) {
-                keyStorePassword = context.getGlobalOption(XML_ENC_KEY_STORE_PASSWORD);
-            }
-            keyStore.load(keyStoreUrl.openStream(), keyStorePassword.toCharArray());    
-        }
-        
-        if (context.getGlobalOptions().containsKey(XML_ENC_KEY_STORE_ALIAS) && this.recipientKeyAlias == null) {
-            recipientKeyAlias = context.getGlobalOption(XML_ENC_KEY_STORE_ALIAS);
-        }
-    }
-    
-    
     public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
         // Retrieve the message body as input stream
         InputStream is = exchange.getContext().getTypeConverter().mandatoryConvertTo(InputStream.class, graph);
@@ -461,7 +353,7 @@ public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat,
      * or recipient list.
      */
     private void encryptAsymmetric(Exchange exchange, Document document, OutputStream stream) throws Exception {       
-        String exchangeRecipientAlias = getRecipientKeyAlias(exchange);
+        String exchangeRecipientAlias = getRecipientKeyAlias();
         
         if (null == exchangeRecipientAlias) {
             throw new IllegalStateException("The  recipient's key alias must be defined for asymmetric key encryption.");
@@ -810,16 +702,6 @@ public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat,
         return algorithmKeyWrap;
     }
     
-    private String getRecipientKeyAlias(Exchange exchange) {
-        String alias = exchange.getIn().getHeader(XML_ENC_RECIPIENT_ALIAS, String.class);
-        if (alias != null) {
-            exchange.getIn().setHeader(XML_ENC_RECIPIENT_ALIAS, null);
-        } else {
-            alias = recipientKeyAlias;
-        }
-        return alias;
-    }
-    
     // Check to see if the asymmetric key transport algorithm is allowed
     private void checkEncryptionAlgorithm(Key keyEncryptionKey, Element parentElement) throws Exception {
         if (XMLCipher.RSA_v1dot5.equals(keyCipherAlgorithm)
@@ -917,12 +799,7 @@ public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat,
     public void setXmlCipherAlgorithm(String xmlCipherAlgorithm) {
         this.xmlCipherAlgorithm = xmlCipherAlgorithm;
     }
-    
-    @Deprecated
-    public String getKeyCyperAlgorithm() {
-        return keyCipherAlgorithm;
-    }
-    
+
     public String getKeyCipherAlgorithm() {
         return keyCipherAlgorithm;
     }
@@ -966,92 +843,7 @@ public class XMLSecurityDataFormat extends ServiceSupport implements DataFormat,
     public void setSecureTagContents(boolean secureTagContents) {
         this.secureTagContents = secureTagContents;
     }
-    
-    /**
-     * Gets the KeyStore configured for this data format.
-     * @deprecated  Will change to private access in the future.
-     */
-    @Deprecated
-    public KeyStore getKeyStore() {
-        if (keyStore == null && this.keyOrTrustStoreParameters != null) {
-            try {
-                keyStore = keyOrTrustStoreParameters.createKeyStore();
-            } catch (Exception e) {
-                throw new RuntimeException("Unable to create KeyStore with configured KeyStoreParameters. " + e.getMessage(), e);
-            }
-        }
-        return this.keyStore;
-    }
-    
-    /**
-     * @deprecated  Use {@link #getKeyOrTrustStoreParameters()} instead.
-     */
-    @Deprecated  
-    public void setKeyStore(KeyStore keyStore) {
-        this.keyStore = keyStore;
-    }
-         
-    /**
-     * @deprecated  Will change to private access in the future. Use {@link #getKeyOrTrustStoreParameters()} instead.
-     */
-    @Deprecated
-    public KeyStore getTrustStore() {
-        if (trustStore == null && this.keyOrTrustStoreParameters != null) {
-            try {
-                trustStore = keyOrTrustStoreParameters.createKeyStore();
-            } catch (Exception e) {
-                throw new RuntimeException("Unable to create KeyStore with configured KeyStoreParameters. " + e.getMessage(), e);
-            }
-        }
-        return this.trustStore;
-    }
-    
-    /**
-     * @deprecated  Use {@link #setKeyOrTrustStoreParameters()} instead.
-     */
-    @Deprecated  
-    public void setTrustStore(KeyStore trustStore) {
-        this.trustStore = trustStore;
-    }
-      
-    /**
-     * @deprecated  Will change to private access in the future. Use {@link #getKeyOrTrustStoreParameters()} instead.
-     */
-    @Deprecated
-    public String getKeyStorePassword() {
-        if (this.keyOrTrustStoreParameters != null) {
-            return keyOrTrustStoreParameters.getPassword();
-        }
-        return this.keyStorePassword;
-    }
-    
-    /**
-     * @deprecated  Use {@link #setKeyOrTrustStoreParameters()} instead.
-     */
-    @Deprecated
-    public void setKeyStorePassword(String keyStorePassword) {
-        this.keyStorePassword = keyStorePassword;
-    }
-    
-    /**
-     * @deprecated  Will change to private access in the future.  Use {@link #setKeyOrTrustStoreParameters()} instead.
-     */
-    @Deprecated
-    public String getTrustStorePassword() {
-        if (this.keyOrTrustStoreParameters != null) {
-            return keyOrTrustStoreParameters.getPassword();
-        }
-        return this.trustStorePassword;
-    }
-    
-    /**
-     * @deprecated  Use {@link #setKeyOrTrustStoreParameters()} instead.
-     */
-    @Deprecated
-    public void setTrustStorePassword(String trustStorePassword) {
-        this.trustStorePassword = trustStorePassword;
-    }
-    
+
     public void setKeyOrTrustStoreParameters(KeyStoreParameters parameters) {
         this.keyOrTrustStoreParameters = parameters;
     }
diff --git a/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java b/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java
index 1125ae9..4c75171 100644
--- a/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java
+++ b/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java
@@ -198,9 +198,6 @@ public class XMLSecurityDataFormatTest extends CamelTestSupport {
         tsParameters.setPassword("password");
         tsParameters.setResource("sender.ts");
         
-        Map<String, String> contextProps = context.getGlobalOptions();
-        contextProps.put(XMLSecurityDataFormat.XML_ENC_TRUST_STORE_PASSWORD, "password");
- 
         context.addRoutes(new RouteBuilder() {
             public void configure() {
                 from("direct:start")
@@ -210,32 +207,7 @@ public class XMLSecurityDataFormatTest extends CamelTestSupport {
         });
         xmlsecTestHelper.testEncryption(context);
     }
- 
-    @Test
-    @SuppressWarnings("deprecation")
-    public void testPartialPayloadAsymmetricKeyEncryptionWithExchangeRecipientAlias() throws Exception {
-        MockEndpoint resultEndpoint = context.getEndpoint("mock:foo", MockEndpoint.class);
-        resultEndpoint.setExpectedMessageCount(1);
- 
-        final KeyStoreParameters tsParameters = new KeyStoreParameters();
-        tsParameters.setPassword("password");
-        tsParameters.setResource("sender.ts");
- 
-        context.addRoutes(new RouteBuilder() {
-            public void configure() {
-                from("direct:start")
-                    .process(new Processor() {
-                        public void process(Exchange exchange) throws Exception {
-                            exchange.getIn().setHeader(XMLSecurityDataFormat.XML_ENC_RECIPIENT_ALIAS, "recipient");
-                        }
-                    })
-                    .marshal().secureXML("//cheesesites/italy/cheese", true, null, testCypherAlgorithm, XMLCipher.RSA_v1dot5, tsParameters)
-                    .to("mock:encrypted");
-            }
-        });
-        xmlsecTestHelper.testEncryption(context);
-    }
-    
+
     @Test
     public void testAsymmetricEncryptionAddKeyValue() throws Exception {
         KeyStoreParameters tsParameters = new KeyStoreParameters();


[camel] 31/44: Extract org.apache.camel.api.management packages

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ad66a723b082879d76f2fbe4e71f75986b6b11c7
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Oct 4 16:02:12 2018 +0200

    Extract org.apache.camel.api.management packages
---
 bom/camel-bom/pom.xml                              |   5 +
 camel-api/pom.xml                                  |   7 +
 .../java/org/apache/camel/spi/RouteContext.java    |   2 +-
 .../java/org/apache/camel/spi/RouteController.java |   3 -
 camel-core/pom.xml                                 |  17 +
 .../apache/camel/impl/DefaultRouteController.java  |   2 +-
 .../camel/impl/SupervisingRouteController.java     |   2 +-
 .../impl/cluster/ClusteredRouteController.java     |   2 +-
 .../camel/management/mbean/ManagedComponent.java   | 174 +++++++-
 .../camel/management/mbean/ManagedRoute.java       |  30 +-
 .../mbean/ManagedStreamCachingStrategy.java        |  39 +-
 .../camel/management/ManagedComponentTest.java     |  14 +-
 .../camel/management/ManagementTestSupport.java    |  11 +-
 {camel-api => camel-management-api}/pom.xml        |  13 +-
 .../JmxNotificationBroadcasterAware.java           |   0
 .../camel/api/management/ManagedAttribute.java     |   0
 .../camel/api/management/ManagedInstance.java      |   0
 .../camel/api/management/ManagedNotification.java  |   0
 .../camel/api/management/ManagedNotifications.java |   0
 .../camel/api/management/ManagedOperation.java     |   0
 .../camel/api/management/ManagedResource.java      |   0
 .../camel/api/management/NotificationSender.java   |   0
 .../api/management/NotificationSenderAware.java    |   0
 .../mbean/BacklogTracerEventMessage.java           |   0
 .../api/management/mbean/CamelOpenMBeanTypes.java  |   0
 .../mbean/ComponentVerifierExtension.java          | 471 +++++++++++++++++++++
 .../mbean/ManagedAggregateProcessorMBean.java      |   0
 .../ManagedAsyncProcessorAwaitManagerMBean.java    |   0
 .../mbean/ManagedBacklogDebuggerMBean.java         |   0
 .../mbean/ManagedBacklogTracerMBean.java           |   0
 .../api/management/mbean/ManagedBeanMBean.java     |   0
 .../mbean/ManagedBrowsableEndpointMBean.java       |   0
 .../management/mbean/ManagedCamelContextMBean.java |   0
 .../management/mbean/ManagedCamelHealthMBean.java  |   0
 .../api/management/mbean/ManagedChoiceMBean.java   |   0
 .../management/mbean/ManagedClaimCheckMBean.java   |   0
 .../mbean/ManagedClusterServiceMBean.java          |   0
 .../management/mbean/ManagedComponentMBean.java    |   1 -
 .../mbean/ManagedConsumerCacheMBean.java           |   0
 .../api/management/mbean/ManagedConsumerMBean.java |   0
 .../management/mbean/ManagedConvertBodyMBean.java  |   0
 .../api/management/mbean/ManagedCounterMBean.java  |   0
 .../mbean/ManagedCustomLoadBalancerMBean.java      |   0
 .../management/mbean/ManagedDataFormatMBean.java   |   0
 .../api/management/mbean/ManagedDelayerMBean.java  |   0
 .../mbean/ManagedDynamicRouterMBean.java           |   0
 .../api/management/mbean/ManagedEndpointMBean.java |   0
 .../mbean/ManagedEndpointRegistryMBean.java        |   0
 .../api/management/mbean/ManagedEnricherMBean.java |   0
 .../management/mbean/ManagedErrorHandlerMBean.java |   0
 .../mbean/ManagedExtendedInformation.java          |   0
 .../mbean/ManagedFailoverLoadBalancerMBean.java    |   0
 .../api/management/mbean/ManagedFilterMBean.java   |   0
 .../mbean/ManagedIdempotentConsumerMBean.java      |   0
 .../mbean/ManagedInflightRepositoryMBean.java      |   0
 .../api/management/mbean/ManagedLogMBean.java      |   0
 .../api/management/mbean/ManagedLoopMBean.java     |   0
 .../api/management/mbean/ManagedMarshalMBean.java  |   0
 .../management/mbean/ManagedMulticastMBean.java    |   0
 .../mbean/ManagedPerformanceCounterMBean.java      |   0
 .../management/mbean/ManagedPollEnricherMBean.java |   0
 .../api/management/mbean/ManagedProcessMBean.java  |   0
 .../management/mbean/ManagedProcessorMBean.java    |   0
 .../mbean/ManagedProducerCacheMBean.java           |   0
 .../api/management/mbean/ManagedProducerMBean.java |   0
 .../mbean/ManagedRandomLoadBalancerMBean.java      |   0
 .../mbean/ManagedRecipientListMBean.java           |   0
 .../management/mbean/ManagedRemoveHeaderMBean.java |   0
 .../mbean/ManagedRemoveHeadersMBean.java           |   0
 .../mbean/ManagedRemovePropertiesMBean.java        |   0
 .../mbean/ManagedRemovePropertyMBean.java          |   0
 .../management/mbean/ManagedResequencerMBean.java  |   0
 .../mbean/ManagedResourceEndpointMBean.java        |   0
 .../management/mbean/ManagedRestRegistryMBean.java |   0
 .../api/management/mbean/ManagedRollbackMBean.java |   0
 .../mbean/ManagedRoundRobinLoadBalancerMBean.java  |   0
 .../mbean/ManagedRouteControllerMBean.java         |   0
 .../api/management/mbean/ManagedRouteMBean.java    |   3 +-
 .../management/mbean/ManagedRoutingSlipMBean.java  |   0
 .../mbean/ManagedRuntimeCamelCatalogMBean.java     |   0
 .../mbean/ManagedRuntimeEndpointRegistryMBean.java |   0
 .../mbean/ManagedSamplingThrottlerMBean.java       |   0
 .../mbean/ManagedSchedulePollConsumerMBean.java    |   0
 .../api/management/mbean/ManagedScriptMBean.java   |   0
 .../mbean/ManagedSendDynamicProcessorMBean.java    |   0
 .../mbean/ManagedSendProcessorMBean.java           |   0
 .../api/management/mbean/ManagedServiceMBean.java  |   0
 .../api/management/mbean/ManagedSetBodyMBean.java  |   0
 .../mbean/ManagedSetExchangePatternMBean.java      |   0
 .../management/mbean/ManagedSetHeaderMBean.java    |   0
 .../management/mbean/ManagedSetPropertyMBean.java  |   0
 .../api/management/mbean/ManagedSplitterMBean.java |   0
 .../mbean/ManagedStickyLoadBalancerMBean.java      |   0
 .../api/management/mbean/ManagedStopMBean.java     |   0
 .../mbean/ManagedStreamCachingStrategyMBean.java   |  12 +-
 .../mbean/ManagedSuspendableRouteMBean.java        |   0
 .../management/mbean/ManagedThreadPoolMBean.java   |   0
 .../api/management/mbean/ManagedThreadsMBean.java  |   0
 .../management/mbean/ManagedThrottlerMBean.java    |   0
 ...ManagedThrottlingExceptionRoutePolicyMBean.java |   0
 .../ManagedThrottlingInflightRoutePolicyMBean.java |   0
 .../mbean/ManagedThroughputLoggerMBean.java        |   0
 .../mbean/ManagedThrowExceptionMBean.java          |   0
 .../mbean/ManagedTopicLoadBalancerMBean.java       |   0
 .../management/mbean/ManagedTransformMBean.java    |   0
 .../mbean/ManagedTransformerRegistryMBean.java     |   0
 .../mbean/ManagedTypeConverterRegistryMBean.java   |   0
 .../management/mbean/ManagedUnmarshalMBean.java    |   0
 .../api/management/mbean/ManagedValidateMBean.java |   0
 .../mbean/ManagedValidatorRegistryMBean.java       |   0
 .../mbean/ManagedWeightedBalancerMBean.java        |   0
 .../api/management/mbean/ManagedWireTapMBean.java  |   0
 .../camel/api/management/mbean/RouteError.java     |  30 +-
 .../apache/camel/api/management/mbean/package.html |   0
 .../org/apache/camel/api/management/package.html   |   0
 parent/pom.xml                                     |   5 +
 .../camel-spring-boot-dependencies/pom.xml         |   5 +
 pom.xml                                            |   1 +
 .../meta-annotations/pom.xml                       |  30 +-
 .../java/org/apache/camel/meta}/Experimental.java  |   2 +-
 tooling/pom.xml                                    |   1 +
 121 files changed, 824 insertions(+), 58 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 612af60..f8ea547 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1610,6 +1610,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-manual</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/camel-api/pom.xml b/camel-api/pom.xml
index 87d6aa0..6875740 100644
--- a/camel-api/pom.xml
+++ b/camel-api/pom.xml
@@ -45,6 +45,13 @@
 
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>meta-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-util</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git a/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
index 7124450..10b7eac 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -22,7 +22,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointAware;
-import org.apache.camel.Experimental;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeConfiguration;
diff --git a/camel-api/src/main/java/org/apache/camel/spi/RouteController.java b/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
index 5cb8600..b6f39b5 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
@@ -19,11 +19,8 @@ package org.apache.camel.spi;
 import java.util.Collection;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.Experimental;
 import org.apache.camel.Route;
-import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StaticService;
 
diff --git a/camel-core/pom.xml b/camel-core/pom.xml
index 936dd22..8864537 100644
--- a/camel-core/pom.xml
+++ b/camel-core/pom.xml
@@ -134,6 +134,15 @@
     <!-- it will be shade into camel-core by bnd plugin -->
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>meta-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <!-- required dependencies by camel-core -->
+    <!-- it will be shade into camel-core by bnd plugin -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-util</artifactId>
       <version>${project.version}</version>
     </dependency>
@@ -147,6 +156,14 @@
     </dependency>
 
     <!-- required dependencies by camel-core -->
+    <!-- it will be shade into camel-core by bnd plugin -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-management-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- required dependencies by camel-core -->
     <!-- which we shade into camel-core so its available for everybody out of the box -->
     <dependency>
       <groupId>com.github.ben-manes.caffeine</groupId>
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
index 766423a..e98d019 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
@@ -21,9 +21,9 @@ import java.util.Collections;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Experimental;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.support.ServiceSupport;
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
index b832239..a607c0a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
@@ -38,13 +38,13 @@ import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.Experimental;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StartupListener;
 import org.apache.camel.management.event.CamelContextStartedEvent;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.HasId;
 import org.apache.camel.spi.RouteContext;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
index cc8921f..aae4459 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
@@ -31,12 +31,12 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
-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.DefaultRouteController;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
index fe12abb..770f9b7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
@@ -17,9 +17,19 @@
 package org.apache.camel.management.mbean;
 
 import java.io.IOException;
+import java.util.AbstractList;
+import java.util.AbstractMap;
+import java.util.AbstractSet;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Optional;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeDataSupport;
@@ -34,8 +44,17 @@ import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.ManagedInstance;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Result;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Result.Status;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Scope;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.ExceptionAttribute;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.GroupAttribute;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.HttpAttribute;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.StandardCode;
 import org.apache.camel.api.management.mbean.ManagedComponentMBean;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension;
+import org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Attribute;
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
 import org.apache.camel.spi.ManagementStrategy;
@@ -139,23 +158,160 @@ public class ManagedComponent implements ManagedInstance, ManagedComponentMBean
 
     @Override
     public boolean isVerifySupported() {
-        return component.getExtension(ComponentVerifierExtension.class).isPresent();
+        return component.getExtension(org.apache.camel.component.extension.ComponentVerifierExtension.class).isPresent();
     }
 
     @Override
     public ComponentVerifierExtension.Result verify(String scope, Map<String, String> options) {
         try {
-            ComponentVerifierExtension.Scope scopeEnum = ComponentVerifierExtension.Scope.fromString(scope);
-            Optional<ComponentVerifierExtension> verifier = component.getExtension(ComponentVerifierExtension.class);
+            org.apache.camel.component.extension.ComponentVerifierExtension.Scope scopeEnum = org.apache.camel.component.extension.ComponentVerifierExtension.Scope.fromString(scope);
+            Optional<org.apache.camel.component.extension.ComponentVerifierExtension> verifier = component.getExtension(org.apache.camel.component.extension.ComponentVerifierExtension.class);
             if (verifier.isPresent()) {
-                return verifier.get().verify(scopeEnum, CastUtils.cast(options));
+                org.apache.camel.component.extension.ComponentVerifierExtension.Result result = verifier.get().verify(scopeEnum, CastUtils.cast(options));
+                String rstatus = result.getStatus().toString();
+                String rscope = result.getScope().toString();
+                return new ResultImpl(Scope.valueOf(rscope), Status.valueOf(rstatus),
+                        result.getErrors().stream().map(this::translate).collect(Collectors.toList()));
+
             } else {
-                return ResultBuilder.unsupported().build();
+                return new ResultImpl(Scope.PARAMETERS, Status.UNSUPPORTED, Collections.emptyList());
             }
         } catch (IllegalArgumentException e) {
-            return ResultBuilder.withStatus(ComponentVerifierExtension.Result.Status.UNSUPPORTED)
-                .error(ResultErrorBuilder.withUnsupportedScope(scope).build())
-                .build();
+            return new ResultImpl(Scope.PARAMETERS, Status.UNSUPPORTED, Collections.singletonList(
+                    new VerificationErrorImpl(StandardCode.UNSUPPORTED_SCOPE, "Unsupported scope: " + scope)));
+        }
+    }
+
+    private VerificationError translate(org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError error) {
+        return new VerificationErrorImpl(translate(error.getCode()), error.getDescription(),
+                error.getParameterKeys(), translate(error.getDetails()));
+    }
+
+    private Map<VerificationError.Attribute, Object> translate(Map<org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Attribute, Object> details) {
+        return details.entrySet().stream().collect(Collectors.toMap(e -> translate(e.getKey()), Entry::getValue));
+    }
+
+    private VerificationError.Attribute translate(org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Attribute attribute) {
+        if (attribute == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.GroupAttribute.GROUP_NAME) {
+            return GroupAttribute.GROUP_NAME;
+        } else if (attribute == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.GroupAttribute.GROUP_OPTIONS) {
+            return GroupAttribute.GROUP_OPTIONS;
+        } else if (attribute == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.HttpAttribute.HTTP_CODE) {
+            return HttpAttribute.HTTP_CODE;
+        } else if (attribute == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.HttpAttribute.HTTP_REDIRECT) {
+            return HttpAttribute.HTTP_REDIRECT;
+        } else if (attribute == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.HttpAttribute.HTTP_TEXT) {
+            return HttpAttribute.HTTP_TEXT;
+        } else if (attribute == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_CLASS) {
+            return ExceptionAttribute.EXCEPTION_CLASS;
+        } else if (attribute == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE) {
+            return ExceptionAttribute.EXCEPTION_INSTANCE;
+        }  else if (attribute != null) {
+            return VerificationError.asAttribute(attribute.getName());
+        } else {
+            return null;
+        }
+    }
+
+    private VerificationError.Code translate(org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Code code) {
+        if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.AUTHENTICATION) {
+            return StandardCode.AUTHENTICATION;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.EXCEPTION) {
+            return StandardCode.EXCEPTION;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.INTERNAL) {
+            return StandardCode.INTERNAL;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.MISSING_PARAMETER) {
+            return StandardCode.MISSING_PARAMETER;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNKNOWN_PARAMETER) {
+            return StandardCode.UNKNOWN_PARAMETER;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.ILLEGAL_PARAMETER) {
+            return StandardCode.ILLEGAL_PARAMETER;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.ILLEGAL_PARAMETER_GROUP_COMBINATION) {
+            return StandardCode.ILLEGAL_PARAMETER_GROUP_COMBINATION;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.ILLEGAL_PARAMETER_VALUE) {
+            return StandardCode.ILLEGAL_PARAMETER_VALUE;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.INCOMPLETE_PARAMETER_GROUP) {
+            return StandardCode.ILLEGAL_PARAMETER_GROUP_COMBINATION;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNSUPPORTED) {
+            return StandardCode.UNSUPPORTED;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNSUPPORTED_SCOPE) {
+            return StandardCode.UNSUPPORTED_SCOPE;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNSUPPORTED_COMPONENT) {
+            return StandardCode.UNSUPPORTED_COMPONENT;
+        } else if (code == org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.GENERIC) {
+            return StandardCode.GENERIC;
+        } else if (code != null) {
+            return VerificationError.asCode(code.getName());
+        } else {
+            return null;
+        }
+    }
+
+    public static class VerificationErrorImpl implements VerificationError {
+        private final Code code;
+        private final String description;
+        private final Set<String> parameterKeys;
+        private final Map<Attribute, Object> details;
+
+        public VerificationErrorImpl(Code code, String description) {
+            this.code = code;
+            this.description = description;
+            this.parameterKeys = Collections.emptySet();
+            this.details = Collections.emptyMap();
+        }
+
+        public VerificationErrorImpl(Code code, String description, Set<String> parameterKeys, Map<Attribute, Object> details) {
+            this.code = code;
+            this.description = description;
+            this.parameterKeys = parameterKeys;
+            this.details = details;
+        }
+
+        @Override
+        public Code getCode() {
+            return code;
+        }
+
+        @Override
+        public String getDescription() {
+            return description;
+        }
+
+        @Override
+        public Set<String> getParameterKeys() {
+            return parameterKeys;
+        }
+
+        @Override
+        public Map<Attribute, Object> getDetails() {
+            return details;
+        }
+    }
+
+    public static class ResultImpl implements Result {
+        private final Scope scope;
+        private final Status status;
+        private final List<VerificationError> errors;
+
+        public ResultImpl(Scope scope, Status status, List<VerificationError> errors) {
+            this.scope = scope;
+            this.status = status;
+            this.errors = errors;
+        }
+
+        @Override
+        public Scope getScope() {
+            return scope;
+        }
+
+        @Override
+        public Status getStatus() {
+            return status;
+        }
+
+        @Override
+        public List<VerificationError> getErrors() {
+            return errors;
         }
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
index 322f524..c124945 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
@@ -52,12 +52,12 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.api.management.mbean.RouteError;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.ManagementStrategy;
-import org.apache.camel.spi.RouteError;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.XmlLineNumberParser;
@@ -546,7 +546,33 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList
 
     @Override
     public RouteError getLastError() {
-        return route.getRouteContext().getLastError();
+        org.apache.camel.spi.RouteError error = route.getRouteContext().getLastError();
+        if (error == null) {
+            return null;
+        } else {
+            return new RouteError() {
+                @Override
+                public Phase getPhase() {
+                    if (error.getPhase() != null) {
+                        switch (error.getPhase()) {
+                            case START: return Phase.START;
+                            case STOP: return Phase.STOP;
+                            case SUSPEND: return Phase.SUSPEND;
+                            case RESUME: return Phase.RESUME;
+                            case SHUTDOWN: return Phase.SHUTDOWN;
+                            case REMOVE: return Phase.REMOVE;
+                            default: throw new IllegalStateException();
+                        }
+                    }
+                    return null;
+                }
+
+                @Override
+                public Throwable getException() {
+                    return error.getException();
+                }
+            };
+        }
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
index cf8c371..4cb5efc 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
@@ -69,12 +69,39 @@ public class ManagedStreamCachingStrategy extends ManagedService implements Mana
         return streamCachingStrategy.getSpoolUsedHeapMemoryThreshold();
     }
 
-    public void setSpoolUsedHeapMemoryLimit(StreamCachingStrategy.SpoolUsedHeapMemoryLimit limit) {
-        streamCachingStrategy.setSpoolUsedHeapMemoryLimit(limit);
-    }
-
-    public StreamCachingStrategy.SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit() {
-        return streamCachingStrategy.getSpoolUsedHeapMemoryLimit();
+    public void setSpoolUsedHeapMemoryLimit(SpoolUsedHeapMemoryLimit limit) {
+        StreamCachingStrategy.SpoolUsedHeapMemoryLimit l;
+        if (limit == null) {
+            l = null;
+        } else {
+            switch (limit) {
+                case Committed:
+                    l = StreamCachingStrategy.SpoolUsedHeapMemoryLimit.Committed;
+                    break;
+                case Max:
+                    l = StreamCachingStrategy.SpoolUsedHeapMemoryLimit.Max;
+                    break;
+                default:
+                    throw new IllegalStateException();
+            }
+        }
+        streamCachingStrategy.setSpoolUsedHeapMemoryLimit(l);
+    }
+
+    public SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit() {
+        StreamCachingStrategy.SpoolUsedHeapMemoryLimit l = streamCachingStrategy.getSpoolUsedHeapMemoryLimit();
+        if (l == null) {
+            return null;
+        } else {
+            switch (l) {
+                case Committed:
+                    return SpoolUsedHeapMemoryLimit.Committed;
+                case Max:
+                    return SpoolUsedHeapMemoryLimit.Max;
+                default:
+                    throw new IllegalStateException();
+            }
+        }
     }
 
     public void setBufferSize(int bufferSize) {
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
index 45d611a..a4c4523 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
@@ -20,14 +20,18 @@ import java.util.Collections;
 import java.util.Map;
 
 import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
 import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.direct.DirectComponent;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.component.extension.ComponentVerifierExtension.Result;
-import org.apache.camel.component.extension.ComponentVerifierExtension.Scope;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Result;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Scope;
 import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.support.DefaultComponent;
@@ -41,6 +45,7 @@ public class ManagedComponentTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.getManagementStrategy().getManagementAgent().setCreateConnector(true);
         context.addComponent("my-verifiable-component", new MyVerifiableComponent());
         context.addComponent("direct", new DirectComponent());
 
@@ -74,7 +79,8 @@ public class ManagedComponentTest extends ManagementTestSupport {
             return;
         }
 
-        MBeanServer mbeanServer = getMBeanServer();
+        JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel"));
+        MBeanServerConnection mbeanServer = connector.getMBeanServerConnection();
 
         ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=components,name=\"my-verifiable-component\"");
         assertTrue(mbeanServer.isRegistered(on));
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java b/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
index 6bae86d..e61f41a 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
@@ -16,9 +16,12 @@
  */
 package org.apache.camel.management;
 
+import java.io.IOException;
+
 import javax.management.InstanceNotFoundException;
 import javax.management.MBeanException;
 import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
 
@@ -39,14 +42,14 @@ public abstract class ManagementTestSupport extends ContextTestSupport {
     }
 
     @SuppressWarnings("unchecked")
-    protected <T> T invoke(MBeanServer server, ObjectName name, String operationName)
-        throws InstanceNotFoundException, MBeanException, ReflectionException {
+    protected <T> T invoke(MBeanServerConnection server, ObjectName name, String operationName)
+            throws InstanceNotFoundException, MBeanException, ReflectionException, IOException {
         return (T)server.invoke(name, operationName, null, null);
     }
 
     @SuppressWarnings("unchecked")
-    protected <T> T invoke(MBeanServer server, ObjectName name, String operationName, Object params[], String signature[])
-            throws InstanceNotFoundException, MBeanException, ReflectionException {
+    protected <T> T invoke(MBeanServerConnection server, ObjectName name, String operationName, Object params[], String signature[])
+            throws InstanceNotFoundException, MBeanException, ReflectionException, IOException {
         return (T)server.invoke(name, operationName, params, signature);
     }
 }
diff --git a/camel-api/pom.xml b/camel-management-api/pom.xml
similarity index 97%
copy from camel-api/pom.xml
copy to camel-management-api/pom.xml
index 87d6aa0..67f61c3 100644
--- a/camel-api/pom.xml
+++ b/camel-management-api/pom.xml
@@ -29,10 +29,10 @@
     <relativePath>../parent</relativePath>
   </parent>
 
-  <artifactId>camel-api</artifactId>
+  <artifactId>camel-management-api</artifactId>
   <packaging>jar</packaging>
-  <name>Camel :: API</name>
-  <description>The Camel API</description>
+  <name>Camel :: Management API</name>
+  <description>The Camel Management API</description>
 
   <dependencies>
 
@@ -45,6 +45,13 @@
 
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>meta-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-util</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java b/camel-management-api/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/ManagedAttribute.java b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedAttribute.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/ManagedAttribute.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/ManagedAttribute.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedInstance.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/ManagedInstance.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/ManagedNotification.java b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotification.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/ManagedNotification.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotification.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/ManagedNotifications.java b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotifications.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/ManagedNotifications.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotifications.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/ManagedOperation.java b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedOperation.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/ManagedOperation.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/ManagedOperation.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/ManagedResource.java b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedResource.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/ManagedResource.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/ManagedResource.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/NotificationSender.java b/camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSender.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/NotificationSender.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSender.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java b/camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
diff --git a/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ComponentVerifierExtension.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ComponentVerifierExtension.java
new file mode 100644
index 0000000..e65f2ca
--- /dev/null
+++ b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ComponentVerifierExtension.java
@@ -0,0 +1,471 @@
+/**
+ * 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.api.management.mbean;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.Attribute;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.Code;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.ExceptionAttribute;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.GroupAttribute;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.HttpAttribute;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.StandardCode;
+
+/**
+ * Defines the interface used for validating component/endpoint parameters. The central method of this
+ * interface is {@link ManagedComponentMBean#verify(String, Map)} which takes a scope and a set of parameters which should be verified.
+ * <p/>
+ * The return value is a {@link ComponentVerifierExtension.Result} of the verification
+ *
+ */
+public final class ComponentVerifierExtension {
+
+    /**
+     * The result of a verification
+     */
+    public interface Result extends Serializable {
+
+        /**
+         * Status of the verification
+         */
+        enum Status {
+            /**
+             * Verification succeeded
+             */
+            OK,
+            /**
+             * Error occurred during the verification
+             */
+            ERROR,
+            /**
+             * Verification is not supported. This can depend on the given scope.
+             */
+            UNSUPPORTED
+        }
+
+        /**
+         * Scope of the verification. This is the scope given to the call to {@link ManagedComponentMBean#verify(String, Map)}  and
+         * can be used for correlation.
+         *
+         * @return the scope against which the parameters have been validated.
+         */
+        Scope getScope();
+
+        /**
+         * Result of the validation as status. This should be the first datum to check after a verification
+         * happened.
+         *
+         * @return the status
+         */
+        Status getStatus();
+
+        /**
+         * Collection of errors happened for the verification. This list is empty (but non null) if the verification
+         * succeeded.
+         *
+         * @return a list of errors. Can be empty when verification was successful
+         */
+        List<VerificationError> getErrors();
+    }
+
+    /**
+     * The scope defines how the parameters should be verified.
+     */
+    public enum Scope {
+        /**
+         * Only validate the parameters for their <em>syntactic</em> soundness. Verifications in this scope should
+         * be as fast as possible
+         */
+        PARAMETERS,
+
+        /**
+         * Reach out to the backend and verify that a connection can be established. This means, if the verification
+         * in this scope succeeds, then it can safely be assumed that the component can be used.
+         */
+        CONNECTIVITY;
+
+        /**
+         * Get an instance of this scope from a string representation
+         *
+         * @param scope the scope as string, which can be in any case
+         * @return the scope enum represented by this string
+         */
+        public static Scope fromString(String scope) {
+            return Scope.valueOf(scope != null ? scope.toUpperCase() : null);
+        }
+    }
+
+    // =============================================================================================
+
+    /**
+     * This interface represents a detailed error in case when the verification fails.
+     */
+    public interface VerificationError extends Serializable {
+
+        /**
+         * The overall error code, which can be either a {@link StandardCode} or a custom code. It is
+         * recommended to stick to the predefined standard codes
+         *
+         * @return the general error code.
+         */
+        Code getCode();
+
+        /**
+         * A human readable description of the error in plain english
+         *
+         * @return the error description (if available)
+         */
+        String getDescription();
+
+        /**
+         * A set of input parameter names which fails the verification. These are keys to the parameter provided
+         * to {@link ManagedComponentMBean#verify(String, Map)}.
+         *
+         * @return the parameter names which are malformed and caused the failure of the validation
+         */
+        Set<String> getParameterKeys();
+
+        /**
+         * Details about the failed verification. The keys can be either predefined values
+         * ({@link ExceptionAttribute}, {@link HttpAttribute}, {@link GroupAttribute}) or it can be free-form
+         * custom keys specific to a component. The standard attributes are defined as enums in all uppercase (with
+         * underscore as separator), custom attributes are supposed to be in all lower case (also with underscores
+         * as separators)
+         *
+         * @return a number of key/value pair with additional information related to the verification.
+         */
+        Map<Attribute, Object> getDetails();
+
+        /**
+         * Get a single detail for a given attribute
+         *
+         * @param attribute the attribute to lookup
+         * @return the detail value or null if no such attribute exists
+         */
+        default Object getDetail(Attribute attribute) {
+            Map<Attribute, Object> details = getDetails();
+            if (details != null) {
+                return details.get(attribute);
+            }
+            return null;
+        }
+
+        /**
+         * Get a single detail for a given attribute
+         *
+         * @param attribute the attribute to lookup
+         * @return the detail value or null if no such attribute exists
+         */
+        default Object getDetail(String attribute) {
+            return getDetail(asAttribute(attribute));
+        }
+
+        /**
+         * Convert a string to an {@link Code}
+         *
+         * @param code the code to convert. It should be in all lower case (with
+         *             underscore as a separator) to avoid overlap with {@link StandardCode}
+         * @return error code
+         */
+        static Code asCode(String code) {
+            return new ErrorCode(code);
+        }
+
+        /**
+         * Convert a string to an {@link Attribute}
+         *
+         * @param attribute the string representation of an attribute to convert. It should be in all lower case (with
+         *                  underscore as a separator) to avoid overlap with standard attributes like {@link ExceptionAttribute},
+         *                  {@link HttpAttribute} or {@link GroupAttribute}
+         * @return generated attribute
+         */
+        static Attribute asAttribute(String attribute) {
+            return new ErrorAttribute(attribute);
+        }
+
+        /**
+         * Interface defining an error code. This is implemented by the {@link StandardCode} but also
+         * own code can be generated by implementing this interface. This is best done via {@link #asCode(String)}
+         * If possible, the standard codes should be reused
+         */
+        interface Code extends Serializable {
+            /**
+             * Name of the code. All uppercase for standard codes, all lower case for custom codes.
+             * Separator between two words is an underscore.
+             *
+             * @return code name
+             */
+            String name();
+
+            /**
+             * Bean style accessor to name.
+             * This is required for framework like Jackson using bean convention for object serialization.
+             *
+             * @return code name
+             */
+            default String getName() {
+                return name();
+            }
+        }
+
+        /**
+         * Standard set of error codes
+         */
+        interface StandardCode extends Code {
+            /**
+             * Authentication failed
+             */
+            StandardCode AUTHENTICATION = new StandardErrorCode("AUTHENTICATION");
+            /**
+             * An exception occurred
+             */
+            StandardCode EXCEPTION = new StandardErrorCode("EXCEPTION");
+            /**
+             * Internal error while performing the verification
+             */
+            StandardCode INTERNAL = new StandardErrorCode("INTERNAL");
+            /**
+             * A mandatory parameter is missing
+             */
+            StandardCode MISSING_PARAMETER = new StandardErrorCode("MISSING_PARAMETER");
+            /**
+             * A given parameter is not known to the component
+             */
+            StandardCode UNKNOWN_PARAMETER = new StandardErrorCode("UNKNOWN_PARAMETER");
+            /**
+             * A given parameter is illegal
+             */
+            StandardCode ILLEGAL_PARAMETER = new StandardErrorCode("ILLEGAL_PARAMETER");
+            /**
+             * A combination of parameters is illegal. See {@link VerificationError#getParameterKeys()} for the set
+             * of affected parameters
+             */
+            StandardCode ILLEGAL_PARAMETER_GROUP_COMBINATION = new StandardErrorCode("ILLEGAL_PARAMETER_GROUP_COMBINATION");
+            /**
+             * A parameter <em>value</em> is not valid
+             */
+            StandardCode ILLEGAL_PARAMETER_VALUE = new StandardErrorCode("ILLEGAL_PARAMETER_VALUE");
+            /**
+             * A group of parameters is not complete in order to be valid
+             */
+            StandardCode INCOMPLETE_PARAMETER_GROUP = new StandardErrorCode("INCOMPLETE_PARAMETER_GROUP");
+            /**
+             * The verification is not supported
+             */
+            StandardCode UNSUPPORTED = new StandardErrorCode("UNSUPPORTED");
+            /**
+             * The requested {@link Scope} is not supported
+             */
+            StandardCode UNSUPPORTED_SCOPE = new StandardErrorCode("UNSUPPORTED_SCOPE");
+            /**
+             * The requested {@link Component} is not supported
+             */
+            StandardCode UNSUPPORTED_COMPONENT = new StandardErrorCode("UNSUPPORTED_COMPONENT");
+            /**
+             * Generic error which is explained in more details with {@link VerificationError#getDetails()}
+             */
+            StandardCode GENERIC = new StandardErrorCode("GENERIC");
+        }
+
+        /**
+         * Interface defining an attribute which is a key for the detailed error messages.
+         */
+        interface Attribute extends Serializable {
+            /**
+             * Name of the attribute. All uppercase for standard attributes and all lower case for custom attributes.
+             * Separator between words is an underscore.
+             *
+             * @return attribute name
+             */
+            String name();
+
+            /**
+             * Bean style accessor to name;
+             * This is required for framework like Jackson using bean convention for object serialization.
+             *
+             * @return attribute name
+             */
+            default String getName() {
+                return name();
+            }
+        }
+
+        /**
+         * Attributes for details about an exception that was raised
+         */
+        interface ExceptionAttribute extends Attribute {
+            /**
+             * The exception object that has been thrown. Note that this can be a complex
+             * object and can cause large content when e.g. serialized as JSON
+             */
+            ExceptionAttribute EXCEPTION_INSTANCE = new ExceptionErrorAttribute("EXCEPTION_INSTANCE");
+            /**
+             * The exception class
+             */
+            ExceptionAttribute EXCEPTION_CLASS = new ExceptionErrorAttribute("EXCEPTION_CLASS");
+        }
+
+        /**
+         * HTTP related error details
+         */
+        interface HttpAttribute extends Attribute {
+            /**
+             * The erroneous HTTP code that occurred
+             */
+            HttpAttribute HTTP_CODE = new HttpErrorAttribute("HTTP_CODE");
+            /**
+             * HTTP response's body
+             */
+            HttpAttribute HTTP_TEXT = new HttpErrorAttribute("HTTP_TEXT");
+            /**
+             * If given as details, specifies that a redirect happened and the
+             * content of this detail is the redirect URL
+             */
+            HttpAttribute HTTP_REDIRECT = new HttpErrorAttribute("HTTP_REDIRECT");
+        }
+
+        /**
+         * Group related details
+         */
+        interface GroupAttribute extends Attribute {
+            /**
+             * Group name
+             */
+            GroupAttribute GROUP_NAME = new GroupErrorAttribute("GROUP_NAME");
+            /**
+             * Options for the group
+             */
+            GroupAttribute GROUP_OPTIONS = new GroupErrorAttribute("GROUP_OPTIONS");
+        }
+    }
+
+    /**
+     * Custom class for error codes
+     */
+    static class ErrorCode implements Code {
+
+        private final String name;
+
+        ErrorCode(String name) {
+            if (name == null) {
+                throw new IllegalArgumentException("Name of an error code must not be null");
+            }
+            this.name = name;
+        }
+
+        @Override
+        public String name() {
+            return name;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (!(o instanceof Code)) {
+                return false;
+            }
+
+            Code errorCode = (Code) o;
+
+            return name.equals(errorCode.name());
+        }
+
+        @Override
+        public int hashCode() {
+            return name.hashCode();
+        }
+
+        @Override
+        public String toString() {
+            return name();
+        }
+    }
+
+    static class ErrorAttribute implements Attribute {
+
+        private final String name;
+
+        ErrorAttribute(String name) {
+            if (name == null) {
+                throw new IllegalArgumentException("Name of an error attribute must not be null");
+            }
+            this.name = name;
+        }
+
+        @Override
+        public String name() {
+            return name;
+        }
+
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (!(o instanceof Attribute)) {
+                return false;
+            }
+
+            Attribute that = (Attribute) o;
+
+            return name.equals(that.name());
+        }
+
+        @Override
+        public int hashCode() {
+            return name.hashCode();
+        }
+
+        @Override
+        public String toString() {
+            return name();
+        }
+    }
+
+    // ===========================================================================================================
+    // Helper classes for implementing the constants in ComponentVerifier:
+
+    static class StandardErrorCode extends ErrorCode implements StandardCode {
+        StandardErrorCode(String name) {
+            super(name);
+        }
+    }
+
+    static class ExceptionErrorAttribute extends ErrorAttribute implements ExceptionAttribute {
+        ExceptionErrorAttribute(String name) {
+            super(name);
+        }
+    }
+
+    static class HttpErrorAttribute extends ErrorAttribute implements HttpAttribute {
+        HttpErrorAttribute(String name) {
+            super(name);
+        }
+    }
+
+    static class GroupErrorAttribute extends ErrorAttribute implements GroupAttribute {
+        GroupErrorAttribute(String name) {
+            super(name);
+        }
+    }
+}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
similarity index 100%
copy from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
copy to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
index ad4ee9b..1eb3503 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
+++ b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
@@ -22,7 +22,6 @@ import javax.management.openmbean.TabularData;
 
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
 
 public interface ManagedComponentMBean {
 
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
similarity index 98%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
index b17b15e..ede4f95 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
+++ b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
@@ -18,10 +18,9 @@ package org.apache.camel.api.management.mbean;
 
 import javax.management.openmbean.TabularData;
 
-import org.apache.camel.Experimental;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
-import org.apache.camel.spi.RouteError;
 
 public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean {
 
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
similarity index 92%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
index 5af8674..00b690a 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
+++ b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
@@ -18,10 +18,16 @@ package org.apache.camel.api.management.mbean;
 
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
-import org.apache.camel.spi.StreamCachingStrategy;
 
 public interface ManagedStreamCachingStrategyMBean extends ManagedServiceMBean {
 
+    /**
+     * Used for selecting if the memory limit is <tt>committed</tt> or <tt>maximum</tt> heap memory setting.
+     */
+    enum SpoolUsedHeapMemoryLimit {
+        Committed, Max
+    }
+
     @ManagedAttribute(description = "Whether stream caching is enabled")
     boolean isEnabled();
 
@@ -44,10 +50,10 @@ public interface ManagedStreamCachingStrategyMBean extends ManagedServiceMBean {
     int getSpoolUsedHeapMemoryThreshold();
 
     @ManagedAttribute(description = "Whether used heap memory limit is committed or maximum")
-    void setSpoolUsedHeapMemoryLimit(StreamCachingStrategy.SpoolUsedHeapMemoryLimit limit);
+    void setSpoolUsedHeapMemoryLimit(SpoolUsedHeapMemoryLimit limit);
 
     @ManagedAttribute(description = "Whether used heap memory limit is committed or maximum")
-    StreamCachingStrategy.SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit();
+    SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit();
 
     @ManagedAttribute(description = "Buffer size in bytes to use when coping between buffers")
     void setBufferSize(int bufferSize);
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/RouteError.java
similarity index 69%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/RouteError.java
index 32c2bf8..d63ac8b 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
+++ b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/RouteError.java
@@ -16,13 +16,27 @@
  */
 package org.apache.camel.api.management.mbean;
 
-import javax.management.openmbean.TabularData;
+public interface RouteError {
+    enum Phase {
+        START,
+        STOP,
+        SUSPEND,
+        RESUME,
+        SHUTDOWN,
+        REMOVE
+    }
 
-import org.apache.camel.api.management.ManagedOperation;
+    /**
+     * Gets the phase associated with the error.
+     *
+     * @return the phase.
+     */
+    Phase getPhase();
 
-public interface ManagedChoiceMBean extends ManagedProcessorMBean {
-
-    @ManagedOperation(description = "Statistics of the content based router for each predicate")
-    TabularData choiceStatistics();
-
-}
\ No newline at end of file
+    /**
+     * Gets the error.
+     *
+     * @return the error.
+     */
+    Throwable getException();
+}
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/package.html b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/api/management/mbean/package.html
rename to camel-management-api/src/main/java/org/apache/camel/api/management/mbean/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/package.html b/camel-management-api/src/main/java/org/apache/camel/api/management/package.html
similarity index 100%
copy from camel-core/src/main/java/org/apache/camel/api/management/package.html
copy to camel-management-api/src/main/java/org/apache/camel/api/management/package.html
diff --git a/parent/pom.xml b/parent/pom.xml
index f231348..06d2524 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -827,6 +827,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-core</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index dadf55a..4514be3 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -1811,6 +1811,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-manual</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/pom.xml b/pom.xml
index 3b6723c..182f871 100644
--- a/pom.xml
+++ b/pom.xml
@@ -147,6 +147,7 @@
     <module>buildingtools</module>
     <module>camel-util</module>
     <module>camel-api</module>
+    <module>camel-management-api</module>
     <module>camel-core</module>
     <module>components</module>
     <module>archetypes</module>
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/package.html b/tooling/meta-annotations/pom.xml
similarity index 53%
rename from camel-core/src/main/java/org/apache/camel/api/management/package.html
rename to tooling/meta-annotations/pom.xml
index 73b0183..fbfb381 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/package.html
+++ b/tooling/meta-annotations/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one or more
@@ -16,13 +17,26 @@
     limitations under the License.
 
 -->
-<html>
-<head>
-</head>
-<body>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-Service provider interfaces for management. These help make components management-aware and 
-also allow components to implement their own management strategies.
+  <modelVersion>4.0.0</modelVersion>
 
-</body>
-</html>
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>tooling</artifactId>
+    <version>3.0.0-SNAPSHOT</version>
+  </parent>
+
+  <!-- should not be OSGi bundle as we shade this component into camel-core -->
+
+  <artifactId>meta-annotations</artifactId>
+  <name>Camel :: Meta Annotations</name>
+  <description>Annotations for Camel code</description>
+
+  <properties>
+  </properties>
+
+  <dependencies>
+  </dependencies>
+
+</project>
diff --git a/camel-api/src/main/java/org/apache/camel/Experimental.java b/tooling/meta-annotations/src/main/java/org/apache/camel/meta/Experimental.java
similarity index 97%
rename from camel-api/src/main/java/org/apache/camel/Experimental.java
rename to tooling/meta-annotations/src/main/java/org/apache/camel/meta/Experimental.java
index 6ea6c1f..d7179c5 100644
--- a/camel-api/src/main/java/org/apache/camel/Experimental.java
+++ b/tooling/meta-annotations/src/main/java/org/apache/camel/meta/Experimental.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel;
+package org.apache.camel.meta;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 138ba57..f4d218e 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -39,6 +39,7 @@
 
   <modules>
     <module>parent</module>
+    <module>meta-annotations</module>
     <module>spi-annotations</module>
     <module>json-simple-ordered</module>
     <module>apt</module>


[camel] 16/44: [CAMEL-10911] Avoid non singleton endpoints, consumer and producers

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 3f3826540464c5a10a034bf81e4016f65dda4eac
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Sep 26 17:44:29 2018 +0200

    [CAMEL-10911] Avoid non singleton endpoints, consumer and producers
---
 .../{ServicePoolAware.java => AsyncProducer.java}  |   9 +-
 .../org/apache/camel/AsyncProducerCallback.java    |  41 --
 .../main/java/org/apache/camel/CamelContext.java   |  30 --
 .../src/main/java/org/apache/camel/Endpoint.java   |   8 +
 .../main/java/org/apache/camel/IsSingleton.java    |   2 +-
 .../java/org/apache/camel/ProducerCallback.java    |  39 --
 .../builder/DefaultFluentProducerTemplate.java     |   2 +-
 .../java/org/apache/camel/impl/ConsumerCache.java  | 203 ++------
 .../apache/camel/impl/DefaultAsyncProducer.java    |   3 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |  30 +-
 .../apache/camel/impl/DefaultConsumerTemplate.java |   6 +-
 .../org/apache/camel/impl/DefaultEndpoint.java     |   7 +
 .../impl/DefaultPollingConsumerServicePool.java    |  38 --
 .../camel/impl/DefaultProducerServicePool.java     |  40 --
 .../apache/camel/impl/DefaultProducerTemplate.java |  67 +--
 .../org/apache/camel/impl/DefaultServicePool.java  | 120 -----
 .../org/apache/camel/impl/EmptyConsumerCache.java  |  76 ---
 .../org/apache/camel/impl/EmptyProducerCache.java  |  66 ---
 .../apache/camel/impl/InterceptSendToEndpoint.java |  13 +-
 ...nterceptSendToEndpointServicePoolProcessor.java |  31 --
 .../java/org/apache/camel/impl/ProducerCache.java  | 519 ++++++---------------
 .../java/org/apache/camel/impl/ServicePool.java    | 320 +++++++++++++
 .../impl/SharedPollingConsumerServicePool.java     |  51 --
 .../camel/impl/SharedProducerServicePool.java      |  51 --
 .../java/org/apache/camel/processor/Enricher.java  |  17 +-
 .../org/apache/camel/processor/PollEnricher.java   |  13 +-
 .../org/apache/camel/processor/RecipientList.java  |  13 +-
 .../camel/processor/RecipientListProcessor.java    |   8 +-
 .../org/apache/camel/processor/RoutingSlip.java    |  38 +-
 .../camel/processor/SendDynamicProcessor.java      |  82 ++--
 .../org/apache/camel/processor/SendProcessor.java  |  39 +-
 .../java/org/apache/camel/spi/ServicePool.java     |  87 ----
 .../camel/util/AsyncProcessorConverterHelper.java  |  34 +-
 .../main/java/org/apache/camel/util/FileUtil.java  |   9 +-
 .../main/java/org/apache/camel/util/LRUCache.java  |  44 +-
 .../org/apache/camel/util/LRUCacheFactory.java     |  48 +-
 .../CamelContextSharedProducerServicePoolTest.java | 117 -----
 .../camel/impl/ConsumerCacheZeroCapacityTest.java  |   2 +-
 .../camel/impl/CustomProducerServicePoolTest.java  | 191 --------
 .../camel/impl/DefaultConsumerCacheTest.java       |   4 +-
 ...ConsumerTemplateWithCustomCacheMaxSizeTest.java |   4 +-
 .../camel/impl/DefaultProducerCacheTest.java       |  86 ++--
 ...ProducerTemplateWithCustomCacheMaxSizeTest.java |   4 +-
 .../apache/camel/impl/EmptyProducerCacheTest.java  |  12 +-
 .../camel/impl/ProducerCacheNonSingletonTest.java  |  11 +-
 .../org/apache/camel/impl/ServicePoolTest.java     | 261 -----------
 .../camel/issues/ServicePoolAwareLeakyTest.java    | 244 ----------
 .../management/ManagedConsumerCacheHitsTest.java   |  12 +-
 .../camel/management/ManagedConsumerCacheTest.java |   4 +-
 ...rceptSendToEndpointServicePoolProducerTest.java | 121 -----
 .../apache/camel/component/avro/AvroProducer.java  |  35 +-
 .../component/cxf/CxfMessageHeaderTimeoutTest.java |   3 +-
 .../apache/camel/component/cxf/CxfTimeoutTest.java |   3 +-
 .../component/file/remote/RemoteFileProducer.java  |   3 +-
 .../apache/camel/component/gora/GoraProducer.java  |   6 +-
 .../client/GrpcResponseRouterStreamObserver.java   |  27 +-
 .../camel/component/hbase/HBaseProducer.java       |   3 +-
 .../camel/component/http4/HttpPollingConsumer.java |   3 +-
 .../apache/camel/component/jms/JmsEndpoint.java    |   2 +-
 .../camel/component/jms/JmsPollingConsumer.java    |   7 +-
 .../camel/component/mina2/Mina2Producer.java       |   7 +-
 .../apache/camel/component/sip/SipEndpoint.java    |   2 +-
 .../apache/camel/component/sip/SipPublisher.java   |   3 +-
 .../apache/camel/component/xmpp/XmppRouteTest.java |  21 +-
 64 files changed, 864 insertions(+), 2538 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/ServicePoolAware.java b/camel-core/src/main/java/org/apache/camel/AsyncProducer.java
similarity index 78%
rename from camel-core/src/main/java/org/apache/camel/ServicePoolAware.java
rename to camel-core/src/main/java/org/apache/camel/AsyncProducer.java
index 96b6037..8f420b4 100644
--- a/camel-core/src/main/java/org/apache/camel/ServicePoolAware.java
+++ b/camel-core/src/main/java/org/apache/camel/AsyncProducer.java
@@ -17,11 +17,8 @@
 package org.apache.camel;
 
 /**
- * Marker interface to indicate this service can be pooled using a {@link org.apache.camel.spi.ServicePool}.
- *
- * @deprecated favor not using non-singleton services
- * @version 
+ * Asynchronous producer
  */
-@Deprecated
-public interface ServicePoolAware {
+public interface AsyncProducer extends Producer, AsyncProcessor {
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProducerCallback.java b/camel-core/src/main/java/org/apache/camel/AsyncProducerCallback.java
deleted file mode 100644
index 391408f..0000000
--- a/camel-core/src/main/java/org/apache/camel/AsyncProducerCallback.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;
-
-/**
- * Callback for sending a exchange message to a endpoint using an {@link AsyncProcessor} capable producer.
- * <p/>
- * Using this callback as a template pattern ensures that Camel handles the resource handling and will
- * start and stop the given producer, to avoid resource leaks.
- *
- * @version 
- */
-public interface AsyncProducerCallback {
-
-    /**
-     * Performs operation on the given producer to send the given exchange.
-     *
-     * @param producer        the producer, is newer <tt>null</tt>
-     * @param asyncProducer   the async producer, is newer <tt>null</tt>
-     * @param exchange        the exchange, can be <tt>null</tt> if so then create a new exchange from the producer
-     * @param exchangePattern the exchange pattern, can be <tt>null</tt>
-     * @param callback        the async callback
-     * @return (doneSync) <tt>true</tt> to continue execute synchronously, <tt>false</tt> to continue being executed asynchronously
-     */
-    boolean doInAsyncProducer(Producer producer, AsyncProcessor asyncProducer, Exchange exchange,
-                              ExchangePattern exchangePattern, AsyncCallback callback);
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index f9893cf..dd31ddf 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -29,7 +29,6 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
-import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
@@ -75,7 +74,6 @@ import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.RuntimeEndpointRegistry;
-import org.apache.camel.spi.ServicePool;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.spi.StreamCachingStrategy;
 import org.apache.camel.spi.Transformer;
@@ -1356,34 +1354,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setPackageScanClassResolver(PackageScanClassResolver resolver);
 
     /**
-     * Sets a pluggable service pool to use for {@link Producer} pooling.
-     *
-     * @param servicePool the pool
-     */
-    void setProducerServicePool(ServicePool<Endpoint, Producer> servicePool);
-
-    /**
-     * Gets the service pool for {@link Producer} pooling.
-     *
-     * @return the service pool
-     */
-    ServicePool<Endpoint, Producer> getProducerServicePool();
-    
-    /**
-     * Sets a pluggable service pool to use for {@link PollingConsumer} pooling.
-     *
-     * @param servicePool the pool
-     */
-    void setPollingConsumerServicePool(ServicePool<Endpoint, PollingConsumer> servicePool);
-
-    /**
-     * Gets the service pool for {@link Producer} pooling.
-     *
-     * @return the service pool
-     */
-    ServicePool<Endpoint, PollingConsumer> getPollingConsumerServicePool();
-    
-    /**
      * Uses a custom node id factory when generating auto assigned ids to the nodes in the route definitions
      *
      * @param factory custom factory to use
diff --git a/camel-core/src/main/java/org/apache/camel/Endpoint.java b/camel-core/src/main/java/org/apache/camel/Endpoint.java
index 603812f..027a553 100644
--- a/camel-core/src/main/java/org/apache/camel/Endpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/Endpoint.java
@@ -84,6 +84,14 @@ public interface Endpoint extends IsSingleton, Service {
     Producer createProducer() throws Exception;
 
     /**
+     * Creates a new producer which is used send messages into the endpoint
+     *
+     * @return a newly created producer
+     * @throws Exception can be thrown
+     */
+    AsyncProducer createAsyncProducer() throws Exception;
+
+    /**
      * Creates a new <a
      * href="http://camel.apache.org/event-driven-consumer.html">Event
      * Driven Consumer</a> which consumes messages from the endpoint using the
diff --git a/camel-core/src/main/java/org/apache/camel/IsSingleton.java b/camel-core/src/main/java/org/apache/camel/IsSingleton.java
index a6db668..43c3b72 100644
--- a/camel-core/src/main/java/org/apache/camel/IsSingleton.java
+++ b/camel-core/src/main/java/org/apache/camel/IsSingleton.java
@@ -26,7 +26,7 @@ package org.apache.camel;
  * This allows for subclasses to have a singleton status different from a parent and
  * for objects to have this value dynamically changed.
  * <p/>
- * Camel component is very often singleton based, only a few components is not.
+ * Camel component are very often singleton based, only a few components are not.
  *
  * @version 
  */
diff --git a/camel-core/src/main/java/org/apache/camel/ProducerCallback.java b/camel-core/src/main/java/org/apache/camel/ProducerCallback.java
deleted file mode 100644
index 11258b1..0000000
--- a/camel-core/src/main/java/org/apache/camel/ProducerCallback.java
+++ /dev/null
@@ -1,39 +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;
-
-/**
- * Callback for sending a exchange message to a endpoint using a producer.
- * <p/>
- * Using this callback as a template pattern ensures that Camel handles the resource handling and will
- * start and stop the given producer, to avoid resource leaks.
- *
- * @version 
- */
-public interface ProducerCallback<T> {
-
-    /**
-     * Performs operation on the given producer to send the given exchange.
-     *
-     * @param producer        the producer, is never <tt>null</tt>
-     * @param exchange        the exchange, can be <tt>null</tt> if so then create a new exchange from the producer
-     * @param exchangePattern the exchange pattern, can be <tt>null</tt>
-     * @return the response
-     * @throws Exception if an internal processing error has occurred.
-     */
-    T doInProducer(Producer producer, Exchange exchange, ExchangePattern exchangePattern) throws Exception;
-}
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java
index ccfdda9..55b8459 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java
@@ -333,7 +333,7 @@ public class DefaultFluentProducerTemplate extends ServiceSupport implements Flu
         ObjectHelper.notNull(context, "CamelContext");
 
         if (template == null) {
-            template = maximumCacheSize > 0 ? context.createProducerTemplate(maximumCacheSize) : context.createProducerTemplate();
+            template = context.createProducerTemplate(maximumCacheSize);
             defaultEndpoint.ifPresent(template::setDefaultEndpoint);
             template.setEventNotifierEnabled(eventNotifierEnabled);
             templateCustomizer.ifPresent(tc -> tc.accept(template));
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
index 6492a0b..2e07875 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
@@ -16,22 +16,14 @@
  */
 package org.apache.camel.impl;
 
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.FailedToCreateConsumerException;
-import org.apache.camel.IsSingleton;
 import org.apache.camel.PollingConsumer;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
-import org.apache.camel.spi.ServicePool;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.LRUCache;
-import org.apache.camel.util.LRUCacheFactory;
 import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,35 +37,18 @@ public class ConsumerCache extends ServiceSupport {
     private static final Logger LOG = LoggerFactory.getLogger(ConsumerCache.class);
 
     private final CamelContext camelContext;
-    private final ServicePool<Endpoint, PollingConsumer> pool;
-    private final Map<String, PollingConsumer> consumers;
+    private final ServicePool<PollingConsumer> consumers;
     private final Object source;
 
     private EndpointUtilizationStatistics statistics;
     private boolean extendedStatistics;
     private int maxCacheSize;
 
-    public ConsumerCache(Object source, CamelContext camelContext) {
-        this(source, camelContext, CamelContextHelper.getMaximumCachePoolSize(camelContext));
-    }
-
     public ConsumerCache(Object source, CamelContext camelContext, int cacheSize) {
-        this(source, camelContext, createLRUCache(cacheSize));
-    }
-    
-    public ConsumerCache(Object source, CamelContext camelContext, Map<String, PollingConsumer> cache) {
-        this(source, camelContext, cache, camelContext.getPollingConsumerServicePool());
-    }
-
-    public ConsumerCache(Object source, CamelContext camelContext, Map<String, PollingConsumer> cache, ServicePool<Endpoint, PollingConsumer> pool) {
-        this.camelContext = camelContext;
-        this.consumers = cache;
         this.source = source;
-        this.pool = pool;
-        if (consumers instanceof LRUCache) {
-            maxCacheSize = ((LRUCache) consumers).getMaxCacheSize();
-        }
-
+        this.camelContext = camelContext;
+        this.maxCacheSize = cacheSize == 0 ? CamelContextHelper.getMaximumCachePoolSize(camelContext) : cacheSize;
+        this.consumers = new ServicePool<>(Endpoint::createPollingConsumer, PollingConsumer::getEndpoint, maxCacheSize);
         // only if JMX is enabled
         if (camelContext.getManagementStrategy().getManagementAgent() != null) {
             this.extendedStatistics = camelContext.getManagementStrategy().getManagementAgent().getStatisticsLevel().isExtended();
@@ -94,22 +69,15 @@ public class ConsumerCache extends ServiceSupport {
     }
 
     /**
-     * Creates the {@link LRUCache} to be used.
-     * <p/>
-     * This implementation returns a {@link LRUCache} instance.
-
-     * @param cacheSize the cache size
-     * @return the cache
+     * Releases an acquired producer back after usage.
+     *
+     * @param endpoint the endpoint
+     * @param pollingConsumer the pollingConsumer to release
      */
-    @SuppressWarnings("unchecked")
-    protected static Map<String, PollingConsumer> createLRUCache(int cacheSize) {
-        // Use a regular cache as we want to ensure that the lifecycle of the consumers
-        // being cache is properly handled, such as they are stopped when being evicted
-        // or when this cache is stopped. This is needed as some consumers requires to
-        // be stopped so they can shutdown internal resources that otherwise may cause leaks
-        return LRUCacheFactory.newLRUCache(cacheSize);
+    public void releasePollingConsumer(Endpoint endpoint, PollingConsumer pollingConsumer) {
+        consumers.release(endpoint, pollingConsumer);
     }
-    
+
     /**
      * Acquires a pooled PollingConsumer which you <b>must</b> release back again after usage using the
      * {@link #releasePollingConsumer(org.apache.camel.Endpoint, org.apache.camel.PollingConsumer)} method.
@@ -118,89 +86,15 @@ public class ConsumerCache extends ServiceSupport {
      * @return the PollingConsumer
      */
     public PollingConsumer acquirePollingConsumer(Endpoint endpoint) {
-        return doGetPollingConsumer(endpoint, true);
-    }
-
-    /**
-     * Releases an acquired producer back after usage.
-     *
-     * @param endpoint the endpoint
-     * @param pollingConsumer the pollingConsumer to release
-     */
-    public void releasePollingConsumer(Endpoint endpoint, PollingConsumer pollingConsumer) {
-        if (pollingConsumer instanceof ServicePoolAware) {
-            // release back to the pool
-            pool.release(endpoint, pollingConsumer);
-        } else {
-            boolean singleton = false;
-            if (pollingConsumer instanceof IsSingleton) {
-                singleton = ((IsSingleton) pollingConsumer).isSingleton();
-            }
-            String key = endpoint.getEndpointUri();
-            boolean cached = consumers.containsKey(key);
-            if (!singleton || !cached) {
-                try {
-                    // stop and shutdown non-singleton/non-cached consumers as we should not leak resources
-                    if (!singleton) {
-                        LOG.debug("Released PollingConsumer: {} is stopped as consumer is not singleton", endpoint);
-                    } else {
-                        LOG.debug("Released PollingConsumer: {} is stopped as consumer cache is full", endpoint);
-                    }
-                    ServiceHelper.stopAndShutdownService(pollingConsumer);
-                } catch (Throwable ex) {
-                    if (ex instanceof RuntimeCamelException) {
-                        throw (RuntimeCamelException)ex;
-                    } else {
-                        throw new RuntimeCamelException(ex);
-                    }
-                }
-            }
-        }
-    }
-
-    public PollingConsumer getConsumer(Endpoint endpoint) {
-        return doGetPollingConsumer(endpoint, true);
-    }
-    
-    protected synchronized PollingConsumer doGetPollingConsumer(Endpoint endpoint, boolean pooled) {
-        String key = endpoint.getEndpointUri();
-        PollingConsumer answer = consumers.get(key);
-        if (pooled && answer == null) {
-            pool.acquire(endpoint);
-        }  
-        
-        if (answer == null) {
-            try {
-                answer = endpoint.createPollingConsumer();
-                answer.start();
-            } catch (Throwable e) {
-                throw new FailedToCreateConsumerException(endpoint, e);
-            }
-            if (pooled && answer instanceof ServicePoolAware) {
-                LOG.debug("Adding to consumer service pool with key: {} for consumer: {}", endpoint, answer);
-                answer = pool.addAndAcquire(endpoint, answer);
-            } else {
-                boolean singleton = false;
-                if (answer instanceof IsSingleton) {
-                    singleton = ((IsSingleton) answer).isSingleton();
-                }
-                if (singleton) {
-                    LOG.debug("Adding to consumer cache with key: {} for consumer: {}", endpoint, answer);
-                    consumers.put(key, answer);
-                } else {
-                    LOG.debug("Consumer for endpoint: {} is not singleton and thus not added to consumer cache", key);
-                }
-            }
-        }
-
-        if (answer != null) {
-            // record statistics
-            if (extendedStatistics) {
-                statistics.onHit(key);
+        try {
+            PollingConsumer consumer = consumers.acquire(endpoint);
+            if (statistics != null) {
+                statistics.onHit(endpoint.getEndpointUri());
             }
+            return consumer;
+        } catch (Throwable e) {
+            throw new FailedToCreateConsumerException(endpoint, e);
         }
-
-        return answer;
     }
  
     public Exchange receive(Endpoint endpoint) {
@@ -233,7 +127,7 @@ public class ConsumerCache extends ServiceSupport {
         LOG.debug("<<<< {}", endpoint);
         PollingConsumer consumer = null;
         try {
-            consumer = doGetPollingConsumer(endpoint, true);
+            consumer = acquirePollingConsumer(endpoint);
             return consumer.receiveNoWait();
         } finally {
             if (consumer != null) {
@@ -274,12 +168,7 @@ public class ConsumerCache extends ServiceSupport {
      * @return the capacity
      */
     public int getCapacity() {
-        int capacity = -1;
-        if (consumers instanceof LRUCache) {
-            LRUCache<String, PollingConsumer> cache = (LRUCache<String, PollingConsumer>)consumers;
-            capacity = cache.getMaxCacheSize();
-        }
-        return capacity;
+        return consumers.getMaxCacheSize();
     }
 
     /**
@@ -290,12 +179,7 @@ public class ConsumerCache extends ServiceSupport {
      * @return the hits
      */
     public long getHits() {
-        long hits = -1;
-        if (consumers instanceof LRUCache) {
-            LRUCache<String, PollingConsumer> cache = (LRUCache<String, PollingConsumer>)consumers;
-            hits = cache.getHits();
-        }
-        return hits;
+        return consumers.getHits();
     }
 
     /**
@@ -306,12 +190,7 @@ public class ConsumerCache extends ServiceSupport {
      * @return the misses
      */
     public long getMisses() {
-        long misses = -1;
-        if (consumers instanceof LRUCache) {
-            LRUCache<String, PollingConsumer> cache = (LRUCache<String, PollingConsumer>)consumers;
-            misses = cache.getMisses();
-        }
-        return misses;
+        return consumers.getMisses();
     }
 
     /**
@@ -322,22 +201,14 @@ public class ConsumerCache extends ServiceSupport {
      * @return the evicted
      */
     public long getEvicted() {
-        long evicted = -1;
-        if (consumers instanceof LRUCache) {
-            LRUCache<String, PollingConsumer> cache = (LRUCache<String, PollingConsumer>)consumers;
-            evicted = cache.getEvicted();
-        }
-        return evicted;
+        return consumers.getEvicted();
     }
 
     /**
      * Resets the cache statistics
      */
     public void resetCacheStatistics() {
-        if (consumers instanceof LRUCache) {
-            LRUCache<String, PollingConsumer> cache = (LRUCache<String, PollingConsumer>)consumers;
-            cache.resetStatistics();
-        }
+        consumers.resetStatistics();
         if (statistics != null) {
             statistics.clear();
         }
@@ -347,7 +218,12 @@ public class ConsumerCache extends ServiceSupport {
      * Purges this cache
      */
     public synchronized void purge() {
-        consumers.clear();
+        try {
+            consumers.stop();
+            consumers.start();
+        } catch (Exception e) {
+            LOG.debug("Error restarting consumer pool", e);
+        }
         if (statistics != null) {
             statistics.clear();
         }
@@ -357,10 +233,7 @@ public class ConsumerCache extends ServiceSupport {
      * Cleanup the cache (purging stale entries)
      */
     public void cleanUp() {
-        if (consumers instanceof LRUCache) {
-            LRUCache<String, PollingConsumer> cache = (LRUCache<String, PollingConsumer>)consumers;
-            cache.cleanUp();
-        }
+        consumers.cleanUp();
     }
 
     public EndpointUtilizationStatistics getEndpointUtilizationStatistics() {
@@ -377,22 +250,12 @@ public class ConsumerCache extends ServiceSupport {
             int max = maxCacheSize == 0 ? CamelContextHelper.getMaximumCachePoolSize(camelContext) : maxCacheSize;
             statistics = new DefaultEndpointUtilizationStatistics(max);
         }
-
-        ServiceHelper.startServices(consumers.values());
+        ServiceHelper.startServices(consumers);
     }
 
     protected void doStop() throws Exception {
         // when stopping we intend to shutdown
-        ServiceHelper.stopAndShutdownServices(statistics, pool);
-        try {
-            ServiceHelper.stopAndShutdownServices(consumers.values());
-        } finally {
-            // ensure consumers are removed, and also from JMX
-            for (PollingConsumer consumer : consumers.values()) {
-                getCamelContext().removeService(consumer);
-            }
-        }
-        consumers.clear();
+        ServiceHelper.stopAndShutdownServices(statistics, consumers);
         if (statistics != null) {
             statistics.clear();
         }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
index 68cb0c0..652f444 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
@@ -17,6 +17,7 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.AsyncProcessor;
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.util.AsyncProcessorHelper;
@@ -27,7 +28,7 @@ import org.apache.camel.util.AsyncProcessorHelper;
  *
  * @version 
  */
-public abstract class DefaultAsyncProducer extends DefaultProducer implements AsyncProcessor {
+public abstract class DefaultAsyncProducer extends DefaultProducer implements AsyncProducer {
 
     public DefaultAsyncProducer(Endpoint endpoint) {
         super(endpoint);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 9271c86..739622f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -161,7 +161,6 @@ import org.apache.camel.spi.RouteError;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.RuntimeEndpointRegistry;
-import org.apache.camel.spi.ServicePool;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.spi.StreamCachingStrategy;
 import org.apache.camel.spi.Transformer;
@@ -275,8 +274,8 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private PackageScanClassResolver packageScanClassResolver;
     // we use a capacity of 100 per endpoint, so for the same endpoint we have at most 100 producers in the pool
     // so if we have 6 endpoints in the pool, we can have 6 x 100 producers in total
-    private ServicePool<Endpoint, Producer> producerServicePool = createProducerServicePool();
-    private ServicePool<Endpoint, PollingConsumer> pollingConsumerServicePool = createPollingConsumerServicePool();
+    private ServicePool<Producer> producerServicePool = createProducerServicePool();
+    private ServicePool<PollingConsumer> pollingConsumerServicePool = createPollingConsumerServicePool();
     private NodeIdFactory nodeIdFactory = createNodeIdFactory();
     private ProcessorFactory processorFactory = createProcessorFactory();
     private MessageHistoryFactory messageHistoryFactory = createMessageHistoryFactory();
@@ -2909,8 +2908,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     public ProducerTemplate createProducerTemplate() {
-        int size = CamelContextHelper.getMaximumCachePoolSize(this);
-        return createProducerTemplate(size);
+        return createProducerTemplate(0);
     }
 
     public ProducerTemplate createProducerTemplate(int maximumCacheSize) {
@@ -2926,8 +2924,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     public FluentProducerTemplate createFluentProducerTemplate() {
-        int size = CamelContextHelper.getMaximumCachePoolSize(this);
-        return createFluentProducerTemplate(size);
+        return createFluentProducerTemplate(0);
     }
 
     public FluentProducerTemplate createFluentProducerTemplate(int maximumCacheSize) {
@@ -2943,8 +2940,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     public ConsumerTemplate createConsumerTemplate() {
-        int size = CamelContextHelper.getMaximumCachePoolSize(this);
-        return createConsumerTemplate(size);
+        return createConsumerTemplate(0);
     }
 
     public ConsumerTemplate createConsumerTemplate(int maximumCacheSize) {
@@ -2977,19 +2973,19 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return errorHandlerExecutorService;
     }
 
-    public void setProducerServicePool(ServicePool<Endpoint, Producer> producerServicePool) {
+    public void setProducerServicePool(ServicePool<Producer> producerServicePool) {
         this.producerServicePool = producerServicePool;
     }
 
-    public ServicePool<Endpoint, Producer> getProducerServicePool() {
+    public ServicePool<Producer> getProducerServicePool() {
         return producerServicePool;
     }
 
-    public ServicePool<Endpoint, PollingConsumer> getPollingConsumerServicePool() {
+    public ServicePool<PollingConsumer> getPollingConsumerServicePool() {
         return pollingConsumerServicePool;
     }
 
-    public void setPollingConsumerServicePool(ServicePool<Endpoint, PollingConsumer> pollingConsumerServicePool) {
+    public void setPollingConsumerServicePool(ServicePool<PollingConsumer> pollingConsumerServicePool) {
         this.pollingConsumerServicePool = pollingConsumerServicePool;
     }
 
@@ -4764,12 +4760,12 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return new DefaultExecutorServiceManager(this);
     }
 
-    protected ServicePool<Endpoint, Producer> createProducerServicePool() {
-        return new SharedProducerServicePool(100);
+    protected ServicePool<Producer> createProducerServicePool() {
+        return new ServicePool<>(Endpoint::createProducer, Producer::getEndpoint, 100);
     }
 
-    protected ServicePool<Endpoint, PollingConsumer> createPollingConsumerServicePool() {
-        return new SharedPollingConsumerServicePool(100);
+    protected ServicePool<PollingConsumer> createPollingConsumerServicePool() {
+        return new ServicePool<>(Endpoint::createPollingConsumer, PollingConsumer::getEndpoint, 100);
     }
 
     protected UnitOfWorkFactory createUnitOfWorkFactory() {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
index 27556a1..0d72921 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
@@ -260,11 +260,7 @@ public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerT
 
     protected void doStart() throws Exception {
         if (consumerCache == null) {
-            if (maximumCacheSize > 0) {
-                consumerCache = new ConsumerCache(this, camelContext, maximumCacheSize);
-            } else {
-                consumerCache = new ConsumerCache(this, camelContext);
-            }
+            consumerCache = new ConsumerCache(this, camelContext, maximumCacheSize);
         }
         ServiceHelper.startService(consumerCache);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
index c9daa9d..50695b5 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
@@ -19,6 +19,7 @@ package org.apache.camel.impl;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Component;
@@ -32,6 +33,7 @@ import org.apache.camel.spi.ExceptionHandler;
 import org.apache.camel.spi.HasId;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -183,6 +185,11 @@ public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint
         return camelContext;
     }
 
+    @Override
+    public AsyncProducer createAsyncProducer() throws Exception {
+        return AsyncProcessorConverterHelper.convert(createProducer());
+    }
+
     /**
      * Returns the component that created this endpoint.
      * 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingConsumerServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingConsumerServicePool.java
deleted file mode 100644
index 37accc0..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingConsumerServicePool.java
+++ /dev/null
@@ -1,38 +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.Endpoint;
-import org.apache.camel.PollingConsumer;
-
-/**
- * A service pool for {@link PollingConsumer}.
- * <p/>
- * For instance camel-jms leverages this to allow a pool of pollingConsumers so we
- * can support concurrent pollingConsumer in a thread safe manner.
- */
-@Deprecated
-public class DefaultPollingConsumerServicePool extends DefaultServicePool<Endpoint, PollingConsumer> {
-    
-    public DefaultPollingConsumerServicePool() {
-    }
-
-    public DefaultPollingConsumerServicePool(int capacity) {
-        super(capacity);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerServicePool.java
deleted file mode 100644
index ba9903c..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerServicePool.java
+++ /dev/null
@@ -1,40 +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.Endpoint;
-import org.apache.camel.Producer;
-
-/**
- * A service pool for {@link Producer}.
- * <p/>
- * For instance camel-mina and camel-ftp leverages this to allow a pool of producers so we
- * can support concurrent producers in a thread safe manner.
- *
- * @version 
- */
-@Deprecated
-public class DefaultProducerServicePool extends DefaultServicePool<Endpoint, Producer> {
-
-    public DefaultProducerServicePool() {
-    }
-
-    public DefaultProducerServicePool(int capacity) {
-        super(capacity);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
index 31a34e6..2eceb58 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
@@ -127,29 +127,41 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
 
     public Exchange send(String endpointUri, Processor processor) {
         Endpoint endpoint = resolveMandatoryEndpoint(endpointUri);
-        return send(endpoint, processor);
+        return send(endpoint, null, processor, null);
     }
 
     public Exchange send(String endpointUri, ExchangePattern pattern, Processor processor) {
         Endpoint endpoint = resolveMandatoryEndpoint(endpointUri);
-        return send(endpoint, pattern, processor);
+        return send(endpoint, pattern, processor, null);
     }
 
     public Exchange send(Endpoint endpoint, Exchange exchange) {
-        getProducerCache().send(endpoint, exchange);
-        return exchange;
+        return send(endpoint, exchange, null);
     }
 
     public Exchange send(Endpoint endpoint, Processor processor) {
-        return getProducerCache().send(endpoint, processor);
+        return send(endpoint, null, processor, null);
     }
 
     public Exchange send(Endpoint endpoint, ExchangePattern pattern, Processor processor) {
-        return getProducerCache().send(endpoint, pattern, processor);
+        return send(endpoint, pattern, processor, null);
     }
 
     public Exchange send(Endpoint endpoint, ExchangePattern pattern, Processor processor, Processor resultProcessor) {
-        return getProducerCache().send(endpoint, pattern, processor, resultProcessor);
+        Exchange exchange = pattern != null ? endpoint.createExchange(pattern) : endpoint.createExchange();
+        if (processor != null) {
+            try {
+                processor.process(exchange);
+            } catch (Exception e) {
+                exchange.setException(e);
+                return exchange;
+            }
+        }
+        return send(endpoint, exchange, resultProcessor);
+    }
+
+    public Exchange send(Endpoint endpoint, Exchange exchange, Processor resultProcessor) {
+        return getProducerCache().send(endpoint, exchange, resultProcessor);
     }
 
     public Object sendBody(Endpoint endpoint, ExchangePattern pattern, Object body) {
@@ -297,20 +309,20 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
         return sendBodyAndHeader(endpoint, ExchangePattern.InOut, body, header, headerValue);
     }
 
-    public Exchange request(String endpoint, Processor processor) throws CamelExecutionException {
-        return send(endpoint, ExchangePattern.InOut, processor);
+    public Exchange request(String endpointUri, Processor processor) throws CamelExecutionException {
+        return send(resolveMandatoryEndpoint(endpointUri), ExchangePattern.InOut, processor, null);
     }
 
-    public Object requestBody(String endpoint, Object body) throws CamelExecutionException {
-        return sendBody(endpoint, ExchangePattern.InOut, body);
+    public Object requestBody(String endpointUri, Object body) throws CamelExecutionException {
+        return sendBody(resolveMandatoryEndpoint(endpointUri), ExchangePattern.InOut, body);
     }
 
-    public Object requestBodyAndHeader(String endpoint, Object body, String header, Object headerValue) throws CamelExecutionException {
-        return sendBodyAndHeader(endpoint, ExchangePattern.InOut, body, header, headerValue);
+    public Object requestBodyAndHeader(String endpointUri, Object body, String header, Object headerValue) throws CamelExecutionException {
+        return sendBodyAndHeader(resolveMandatoryEndpoint(endpointUri), ExchangePattern.InOut, body, header, headerValue);
     }
 
     public Object requestBodyAndHeaders(String endpointUri, Object body, Map<String, Object> headers) {
-        return requestBodyAndHeaders(resolveMandatoryEndpoint(endpointUri), body, headers);
+        return sendBodyAndHeaders(resolveMandatoryEndpoint(endpointUri), ExchangePattern.InOut, body, headers);
     }
 
     public Object requestBodyAndHeaders(Endpoint endpoint, final Object body, final Map<String, Object> headers) {
@@ -318,47 +330,48 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
     }
 
     public Object requestBodyAndHeaders(final Object body, final Map<String, Object> headers) {
-        return sendBodyAndHeaders(getDefaultEndpoint(), ExchangePattern.InOut, body, headers);
+        return sendBodyAndHeaders(getMandatoryDefaultEndpoint(), ExchangePattern.InOut, body, headers);
     }
 
     public <T> T requestBody(Object body, Class<T> type) {
-        Exchange exchange = producerCache.send(getMandatoryDefaultEndpoint(), ExchangePattern.InOut, createSetBodyProcessor(body), createConvertBodyProcessor(type));
-        Object answer = extractResultBody(exchange);
-        return camelContext.getTypeConverter().convertTo(type, answer);
+        return requestBody(getMandatoryDefaultEndpoint(), body, type);
     }
 
     public <T> T requestBody(Endpoint endpoint, Object body, Class<T> type) {
-        Exchange exchange = producerCache.send(endpoint, ExchangePattern.InOut, createSetBodyProcessor(body), createConvertBodyProcessor(type));
+        Exchange exchange = send(endpoint, ExchangePattern.InOut, createSetBodyProcessor(body), createConvertBodyProcessor(type));
         Object answer = extractResultBody(exchange);
         return camelContext.getTypeConverter().convertTo(type, answer);
     }
 
     public <T> T requestBody(String endpointUri, Object body, Class<T> type) {
-        Exchange exchange = producerCache.send(resolveMandatoryEndpoint(endpointUri), ExchangePattern.InOut, createSetBodyProcessor(body), createConvertBodyProcessor(type));
+        Endpoint endpoint = resolveMandatoryEndpoint(endpointUri);
+        Exchange exchange = send(endpoint, ExchangePattern.InOut, createSetBodyProcessor(body), createConvertBodyProcessor(type));
         Object answer = extractResultBody(exchange);
         return camelContext.getTypeConverter().convertTo(type, answer);
     }
 
     public <T> T requestBodyAndHeader(Endpoint endpoint, Object body, String header, Object headerValue, Class<T> type) {
-        Exchange exchange = producerCache.send(endpoint, ExchangePattern.InOut, createBodyAndHeaderProcessor(body, header, headerValue), createConvertBodyProcessor(type));
+        Exchange exchange = send(endpoint, ExchangePattern.InOut, createBodyAndHeaderProcessor(body, header, headerValue), createConvertBodyProcessor(type));
         Object answer = extractResultBody(exchange);
         return camelContext.getTypeConverter().convertTo(type, answer);
     }
 
     public <T> T requestBodyAndHeader(String endpointUri, Object body, String header, Object headerValue, Class<T> type) {
-        Exchange exchange = producerCache.send(resolveMandatoryEndpoint(endpointUri), ExchangePattern.InOut, createBodyAndHeaderProcessor(body, header, headerValue), createConvertBodyProcessor(type));
+        Endpoint endpoint = resolveMandatoryEndpoint(endpointUri);
+        Exchange exchange = send(endpoint, ExchangePattern.InOut, createBodyAndHeaderProcessor(body, header, headerValue), createConvertBodyProcessor(type));
         Object answer = extractResultBody(exchange);
         return camelContext.getTypeConverter().convertTo(type, answer);
     }
 
     public <T> T requestBodyAndHeaders(String endpointUri, Object body, Map<String, Object> headers, Class<T> type) {
-        Exchange exchange = producerCache.send(resolveMandatoryEndpoint(endpointUri), ExchangePattern.InOut, createBodyAndHeaders(body, headers), createConvertBodyProcessor(type));
+        Endpoint endpoint = resolveMandatoryEndpoint(endpointUri);
+        Exchange exchange = send(endpoint, ExchangePattern.InOut, createBodyAndHeaders(body, headers), createConvertBodyProcessor(type));
         Object answer = extractResultBody(exchange);
         return camelContext.getTypeConverter().convertTo(type, answer);
     }
 
     public <T> T requestBodyAndHeaders(Endpoint endpoint, Object body, Map<String, Object> headers, Class<T> type) {
-        Exchange exchange = producerCache.send(endpoint, ExchangePattern.InOut, createBodyAndHeaders(body, headers), createConvertBodyProcessor(type));
+        Exchange exchange = send(endpoint, ExchangePattern.InOut, createBodyAndHeaders(body, headers), createConvertBodyProcessor(type));
         Object answer = extractResultBody(exchange);
         return camelContext.getTypeConverter().convertTo(type, answer);
     }
@@ -702,11 +715,7 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            if (maximumCacheSize > 0) {
-                producerCache = new ProducerCache(this, camelContext, maximumCacheSize);
-            } else {
-                producerCache = new ProducerCache(this, camelContext);
-            }
+            producerCache = new ProducerCache(this, camelContext, maximumCacheSize);
             producerCache.setEventNotifierEnabled(isEventNotifierEnabled());
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultServicePool.java
deleted file mode 100644
index fdb928e..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultServicePool.java
+++ /dev/null
@@ -1,120 +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.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.camel.spi.ServicePool;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Default implementation to inherit for a basic service pool.
- *
- * @version 
- */
-@Deprecated
-public abstract class DefaultServicePool<Key, Service> extends ServiceSupport implements ServicePool<Key, Service> {
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-    protected final ConcurrentMap<Key, BlockingQueue<Service>> pool = new ConcurrentHashMap<>();
-    protected int capacity = 100;
-
-    protected DefaultServicePool() {
-    }
-
-    public DefaultServicePool(int capacity) {
-        this.capacity = capacity;
-    }
-
-    public int getCapacity() {
-        return capacity;
-    }
-
-    public void setCapacity(int capacity) {
-        this.capacity = capacity;
-    }
-
-    public synchronized int size() {
-        int size = 0;
-        for (BlockingQueue<Service> entry : pool.values()) {
-            size += entry.size();
-        }
-        return size;
-    }
-
-    public synchronized Service addAndAcquire(Key key, Service service) {
-        BlockingQueue<Service> entry = pool.get(key);
-        if (entry == null) {
-            entry = new ArrayBlockingQueue<>(capacity);
-            pool.put(key, entry);
-        }
-        log.trace("AddAndAcquire key: {} service: {}", key, service);
-
-        // test if queue will be full
-        if (entry.size() >= capacity) {
-            throw new IllegalStateException("Queue full");
-        }
-        return service;
-    }
-
-    public synchronized Service acquire(Key key) {
-        BlockingQueue<Service> services = pool.get(key);
-        if (services == null || services.isEmpty()) {
-            log.trace("No free services in pool to acquire for key: {}", key);
-            return null;
-        }
-
-        Service answer = services.poll();
-        log.trace("Acquire: {} service: {}", key, answer);
-        return answer;
-    }
-
-    public synchronized void release(Key key, Service service) {
-        log.trace("Release: {} service: {}", key, service);
-        BlockingQueue<Service> services = pool.get(key);
-        if (services != null) {
-            services.add(service);
-        }
-    }
-
-    public void purge() {
-        pool.clear();
-    }
-
-    protected void doStart() throws Exception {
-        log.debug("Starting service pool: {}", this);
-    }
-
-    protected void doStop() throws Exception {
-        log.debug("Stopping service pool: {}", this);
-        for (BlockingQueue<Service> entry : pool.values()) {
-            Collection<Service> values = new ArrayList<>();
-            entry.drainTo(values);
-            ServiceHelper.stopServices(values);
-            entry.clear();
-        }
-        pool.clear();
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EmptyConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/EmptyConsumerCache.java
deleted file mode 100644
index 18f2ba1..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/EmptyConsumerCache.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 org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.FailedToCreateConsumerException;
-import org.apache.camel.IsSingleton;
-import org.apache.camel.PollingConsumer;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
-
-/**
- * A {@link ConsumerCache} which is always empty and does not cache any {@link org.apache.camel.Consumer}s.
- */
-public class EmptyConsumerCache extends ConsumerCache {
-
-    public EmptyConsumerCache(Object source, CamelContext camelContext) {
-        super(source, camelContext, 0);
-    }
-
-    @Override
-    public PollingConsumer acquirePollingConsumer(Endpoint endpoint) {
-        // always create a new consumer
-        PollingConsumer answer;
-        try {
-            answer = endpoint.createPollingConsumer();
-            boolean singleton = true;
-            if (answer instanceof IsSingleton) {
-                singleton = ((IsSingleton) answer).isSingleton();
-            }
-            if (getCamelContext().getRouteController().isStartingRoutes() && singleton) {
-                // if we are currently starting a route, then add as service and enlist in JMX
-                // - but do not enlist non-singletons in JMX
-                // - note addService will also start the service
-                getCamelContext().addService(answer);
-            } else {
-                // must then start service so producer is ready to be used
-                ServiceHelper.startService(answer);
-            }
-        } catch (Exception e) {
-            throw new FailedToCreateConsumerException(endpoint, e);
-        }
-        return answer;
-    }
-
-    @Override
-    public void releasePollingConsumer(Endpoint endpoint, PollingConsumer pollingConsumer) {
-        // stop and shutdown the consumer as its not cache or reused
-        try {
-            ServiceHelper.stopAndShutdownService(pollingConsumer);
-        } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
-        }
-    }
-
-    @Override
-    public String toString() {
-        return "EmptyConsumerCache for source: " + getSource();
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EmptyProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/EmptyProducerCache.java
deleted file mode 100644
index fedc2fa..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/EmptyProducerCache.java
+++ /dev/null
@@ -1,66 +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.Endpoint;
-import org.apache.camel.FailedToCreateProducerException;
-import org.apache.camel.Producer;
-import org.apache.camel.util.ServiceHelper;
-
-/**
- * A {@link org.apache.camel.impl.ProducerCache} which is always empty and does not cache any {@link org.apache.camel.Producer}s.
- */
-public class EmptyProducerCache extends ProducerCache {
-
-    public EmptyProducerCache(Object source, CamelContext camelContext) {
-        super(source, camelContext, 0);
-    }
-
-    @Override
-    public Producer acquireProducer(Endpoint endpoint) {
-        // always create a new producer
-        Producer answer;
-        try {
-            answer = endpoint.createProducer();
-            if (getCamelContext().getRouteController().isStartingRoutes() && answer.isSingleton()) {
-                // if we are currently starting a route, then add as service and enlist in JMX
-                // - but do not enlist non-singletons in JMX
-                // - note addService will also start the service
-                getCamelContext().addService(answer);
-            } else {
-                // must then start service so producer is ready to be used
-                ServiceHelper.startService(answer);
-            }
-        } catch (Exception e) {
-            throw new FailedToCreateProducerException(endpoint, e);
-        }
-        return answer;
-    }
-
-    @Override
-    public void releaseProducer(Endpoint endpoint, Producer producer) throws Exception {
-        // stop and shutdown the producer as its not cache or reused
-        ServiceHelper.stopAndShutdownService(producer);
-    }
-
-    @Override
-    public String toString() {
-        return "EmptyProducerCache for source: " + getSource();
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
index f168a15..ceeb7b3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
@@ -18,6 +18,7 @@ package org.apache.camel.impl;
 
 import java.util.Map;
 
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
@@ -26,7 +27,6 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.ShutdownableService;
 import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
@@ -89,12 +89,13 @@ public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
     }
 
     public Producer createProducer() throws Exception {
+        return createAsyncProducer();
+    }
+
+    @Override
+    public AsyncProducer createAsyncProducer() throws Exception {
         Producer producer = delegate.createProducer();
-        if (producer instanceof ServicePoolAware) {
-            return new InterceptSendToEndpointServicePoolProcessor(this, delegate, producer, skip);
-        } else {
-            return new InterceptSendToEndpointProcessor(this, delegate, producer, skip);
-        }
+        return new InterceptSendToEndpointProcessor(this, delegate, producer, skip);
     }
 
     public Consumer createConsumer(Processor processor) throws Exception {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointServicePoolProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointServicePoolProcessor.java
deleted file mode 100644
index 9de74ef..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointServicePoolProcessor.java
+++ /dev/null
@@ -1,31 +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.Endpoint;
-import org.apache.camel.Producer;
-import org.apache.camel.ServicePoolAware;
-
-/**
- * {@link InterceptSendToEndpointProcessor} used for producers that are {@link ServicePoolAware}.
- */
-public class InterceptSendToEndpointServicePoolProcessor extends InterceptSendToEndpointProcessor implements ServicePoolAware {
-
-    public InterceptSendToEndpointServicePoolProcessor(InterceptSendToEndpoint endpoint, Endpoint delegate, Producer producer, boolean skip) throws Exception {
-        super(endpoint, delegate, producer, skip);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
index 9531494..f3d8a5a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
@@ -16,12 +16,11 @@
  */
 package org.apache.camel.impl;
 
-import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.AsyncProducerCallback;
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -29,18 +28,12 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.ProducerCallback;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.SharedCamelInternalProcessor;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
-import org.apache.camel.spi.ServicePool;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.EventHelper;
-import org.apache.camel.util.LRUCache;
-import org.apache.camel.util.LRUCacheFactory;
 import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
@@ -52,11 +45,11 @@ import org.slf4j.LoggerFactory;
  * @version
  */
 public class ProducerCache extends ServiceSupport {
+
     private static final Logger LOG = LoggerFactory.getLogger(ProducerCache.class);
 
     private final CamelContext camelContext;
-    private final ServicePool<Endpoint, Producer> pool;
-    private final Map<String, Producer> producers;
+    private final ServicePool<AsyncProducer> producers;
     private final Object source;
     private final SharedCamelInternalProcessor internalProcessor;
 
@@ -64,35 +57,12 @@ public class ProducerCache extends ServiceSupport {
     private boolean eventNotifierEnabled = true;
     private boolean extendedStatistics;
     private int maxCacheSize;
-    private boolean stopServicePool;
-
-    public ProducerCache(Object source, CamelContext camelContext) {
-        this(source, camelContext, CamelContextHelper.getMaximumCachePoolSize(camelContext));
-    }
 
     public ProducerCache(Object source, CamelContext camelContext, int cacheSize) {
-        this(source, camelContext, null, createLRUCache(cacheSize));
-    }
-
-    public ProducerCache(Object source, CamelContext camelContext, Map<String, Producer> cache) {
-        this(source, camelContext, null, cache);
-    }
-
-    public ProducerCache(Object source, CamelContext camelContext, ServicePool<Endpoint, Producer> producerServicePool, Map<String, Producer> cache) {
         this.source = source;
         this.camelContext = camelContext;
-        if (producerServicePool == null) {
-            // use shared producer pool which lifecycle is managed by CamelContext
-            this.pool = camelContext.getProducerServicePool();
-            this.stopServicePool = false;
-        } else {
-            this.pool = producerServicePool;
-            this.stopServicePool = true;
-        }
-        this.producers = cache;
-        if (producers instanceof LRUCache) {
-            maxCacheSize = ((LRUCache) producers).getMaxCacheSize();
-        }
+        this.maxCacheSize = cacheSize == 0 ? CamelContextHelper.getMaximumCachePoolSize(camelContext) : cacheSize;
+        this.producers = new ServicePool<>(Endpoint::createAsyncProducer, AsyncProducer::getEndpoint, maxCacheSize);
 
         // only if JMX is enabled
         if (camelContext.getManagementStrategy().getManagementAgent() != null) {
@@ -127,23 +97,6 @@ public class ProducerCache extends ServiceSupport {
         this.extendedStatistics = extendedStatistics;
     }
 
-    /**
-     * Creates the {@link LRUCache} to be used.
-     * <p/>
-     * This implementation returns a {@link LRUCache} instance.
-
-     * @param cacheSize the cache size
-     * @return the cache
-     */
-    @SuppressWarnings("unchecked")
-    protected static Map<String, Producer> createLRUCache(int cacheSize) {
-        // Use a regular cache as we want to ensure that the lifecycle of the producers
-        // being cache is properly handled, such as they are stopped when being evicted
-        // or when this cache is stopped. This is needed as some producers requires to
-        // be stopped so they can shutdown internal resources that otherwise may cause leaks
-        return LRUCacheFactory.newLRUCache(cacheSize);
-    }
-
     public CamelContext getCamelContext() {
         return camelContext;
     }
@@ -159,13 +112,21 @@ public class ProducerCache extends ServiceSupport {
 
     /**
      * Acquires a pooled producer which you <b>must</b> release back again after usage using the
-     * {@link #releaseProducer(org.apache.camel.Endpoint, org.apache.camel.Producer)} method.
+     * {@link #releaseProducer(org.apache.camel.Endpoint, org.apache.camel.AsyncProducer)} method.
      *
      * @param endpoint the endpoint
      * @return the producer
      */
-    public Producer acquireProducer(Endpoint endpoint) {
-        return doGetProducer(endpoint, true);
+    public AsyncProducer acquireProducer(Endpoint endpoint) {
+        try {
+            AsyncProducer producer = producers.acquire(endpoint);
+            if (statistics != null) {
+                statistics.onHit(endpoint.getEndpointUri());
+            }
+            return producer;
+        } catch (Throwable e) {
+            throw new FailedToCreateProducerException(endpoint, e);
+        }
     }
 
     /**
@@ -173,31 +134,9 @@ public class ProducerCache extends ServiceSupport {
      *
      * @param endpoint the endpoint
      * @param producer the producer to release
-     * @throws Exception can be thrown if error stopping producer if that was needed.
      */
-    public void releaseProducer(Endpoint endpoint, Producer producer) throws Exception {
-        if (producer instanceof ServicePoolAware) {
-            // release back to the pool
-            pool.release(endpoint, producer);
-        } else if (!producer.isSingleton()) {
-            // stop and shutdown non-singleton producers as we should not leak resources
-            ServiceHelper.stopAndShutdownService(producer);
-        }
-    }
-
-    /**
-     * Starts the {@link Producer} to be used for sending to the given endpoint
-     * <p/>
-     * This can be used to early start the {@link Producer} to ensure it can be created,
-     * such as when Camel is started. This allows to fail fast in case the {@link Producer}
-     * could not be started.
-     *
-     * @param endpoint the endpoint to send the exchange to
-     * @throws Exception is thrown if failed to create or start the {@link Producer}
-     */
-    public void startProducer(Endpoint endpoint) throws Exception {
-        Producer producer = acquireProducer(endpoint);
-        releaseProducer(endpoint, producer);
+    public void releaseProducer(Endpoint endpoint, AsyncProducer producer) {
+        producers.release(endpoint, producer);
     }
 
     /**
@@ -209,59 +148,42 @@ public class ProducerCache extends ServiceSupport {
      * @param endpoint the endpoint to send the exchange to
      * @param exchange the exchange to send
      */
-    public void send(Endpoint endpoint, Exchange exchange) {
-        sendExchange(endpoint, null, null, null, exchange);
-    }
+    public Exchange send(Endpoint endpoint, Exchange exchange, Processor resultProcessor) {
+        AsyncProducer producer = acquireProducer(endpoint);
+        try {
+            // now lets dispatch
+            LOG.debug(">>>> {} {}", endpoint, exchange);
 
-    /**
-     * Sends an exchange to an endpoint using a supplied
-     * {@link Processor} to populate the exchange
-     * <p>
-     * This method will <b>not</b> throw an exception. If processing of the given
-     * Exchange failed then the exception is stored on the return Exchange
-     *
-     * @param endpoint the endpoint to send the exchange to
-     * @param processor the transformer used to populate the new exchange
-     * @throws org.apache.camel.CamelExecutionException is thrown if sending failed
-     * @return the exchange
-     */
-    public Exchange send(Endpoint endpoint, Processor processor) {
-        return sendExchange(endpoint, null, processor, null, null);
-    }
+            // set property which endpoint we send to
+            exchange.setProperty(Exchange.TO_ENDPOINT, endpoint.getEndpointUri());
 
-    /**
-     * Sends an exchange to an endpoint using a supplied
-     * {@link Processor} to populate the exchange
-     * <p>
-     * This method will <b>not</b> throw an exception. If processing of the given
-     * Exchange failed then the exception is stored on the return Exchange
-     *
-     * @param endpoint the endpoint to send the exchange to
-     * @param pattern the message {@link ExchangePattern} such as
-     *   {@link ExchangePattern#InOnly} or {@link ExchangePattern#InOut}
-     * @param processor the transformer used to populate the new exchange
-     * @return the exchange
-     */
-    public Exchange send(Endpoint endpoint, ExchangePattern pattern, Processor processor) {
-        return sendExchange(endpoint, pattern, processor, null, null);
-    }
+            // send the exchange using the processor
+            StopWatch watch = null;
+            try {
+                if (eventNotifierEnabled) {
+                    boolean sending = EventHelper.notifyExchangeSending(exchange.getContext(), exchange, endpoint);
+                    if (sending) {
+                        watch = new StopWatch();
+                    }
+                }
 
-    /**
-     * Sends an exchange to an endpoint using a supplied
-     * {@link Processor} to populate the exchange
-     * <p>
-     * This method will <b>not</b> throw an exception. If processing of the given
-     * Exchange failed then the exception is stored on the return Exchange
-     *
-     * @param endpoint the endpoint to send the exchange to
-     * @param pattern the message {@link ExchangePattern} such as
-     *   {@link ExchangePattern#InOnly} or {@link ExchangePattern#InOut}
-     * @param processor the transformer used to populate the new exchange
-     * @param resultProcessor a processor to process the exchange when the send is complete.
-     * @return the exchange
-     */
-    public Exchange send(Endpoint endpoint, ExchangePattern pattern, Processor processor, Processor resultProcessor) {
-        return sendExchange(endpoint, pattern, processor, resultProcessor, null);
+                // invoke the synchronous method
+                internalProcessor.process(exchange, producer, resultProcessor);
+
+            } catch (Throwable e) {
+                // ensure exceptions is caught and set on the exchange
+                exchange.setException(e);
+            } finally {
+                // emit event that the exchange was sent to the endpoint
+                if (eventNotifierEnabled && watch != null) {
+                    long timeTaken = watch.taken();
+                    EventHelper.notifyExchangeSent(exchange.getContext(), exchange, endpoint, timeTaken);
+                }
+            }
+            return exchange;
+        } finally {
+            releaseProducer(endpoint, producer);
+        }
     }
 
     /**
@@ -280,7 +202,10 @@ public class ProducerCache extends ServiceSupport {
      * @return future that completes with exchange when processing is done. Either passed into future parameter
      *              or new one if parameter was null
      */
-    public CompletableFuture<Exchange> asyncSend(Endpoint endpoint, ExchangePattern pattern, Processor processor, Processor resultProcessor,
+    public CompletableFuture<Exchange> asyncSend(Endpoint endpoint,
+                                                 ExchangePattern pattern,
+                                                 Processor processor,
+                                                 Processor resultProcessor,
                                                  CompletableFuture<Exchange> future) {
         return asyncSendExchange(endpoint, pattern, processor, resultProcessor, null, future);
     }
@@ -302,91 +227,41 @@ public class ProducerCache extends ServiceSupport {
      * @return future that completes with exchange when processing is done. Either passed into future parameter
      *              or new one if parameter was null
      */
-    public CompletableFuture<Exchange> asyncSendExchange(final Endpoint endpoint, ExchangePattern pattern,
-                                                         final Processor processor, final Processor resultProcessor, Exchange exchange,
+    public CompletableFuture<Exchange> asyncSendExchange(Endpoint endpoint,
+                                                         ExchangePattern pattern,
+                                                         Processor processor,
+                                                         Processor resultProcessor,
+                                                         Exchange exchange,
                                                          CompletableFuture<Exchange> future) {
-        AsyncCallbackToCompletableFutureAdapter<Exchange> futureAdapter = new AsyncCallbackToCompletableFutureAdapter<>(future, exchange);
-        doInAsyncProducer(endpoint, exchange, pattern, futureAdapter,
-            (producer, asyncProducer, innerExchange, exchangePattern, producerCallback) -> {
-                if (innerExchange == null) {
-                    innerExchange = pattern != null
-                            ? producer.getEndpoint().createExchange(pattern)
-                            : producer.getEndpoint().createExchange();
-                    futureAdapter.setResult(innerExchange);
-                }
-
-                if (processor != null) {
-                    // lets populate using the processor callback
-                    AsyncProcessor asyncProcessor = AsyncProcessorConverterHelper.convert(processor);
-                    try {
-                        final Exchange finalExchange = innerExchange;
-                        asyncProcessor.process(innerExchange,
-                            doneSync -> asyncDispatchExchange(endpoint, producer, resultProcessor,
-                                    finalExchange, producerCallback));
-                        return false;
-                    } catch (Throwable e) {
-                        // populate failed so return
-                        innerExchange.setException(e);
-                        producerCallback.done(true);
-                        return true;
-                    }
-                }
-
-                return asyncDispatchExchange(endpoint, producer, resultProcessor, innerExchange, producerCallback);
-            });
-        return futureAdapter.getFuture();
-    }
-
-    /**
-     * Sends an exchange to an endpoint using a supplied callback, using the synchronous processing.
-     * <p/>
-     * If an exception was thrown during processing, it would be set on the given Exchange
-     *
-     * @param endpoint  the endpoint to send the exchange to
-     * @param exchange  the exchange, can be <tt>null</tt> if so then create a new exchange from the producer
-     * @param pattern   the exchange pattern, can be <tt>null</tt>
-     * @param callback  the callback
-     * @return the response from the callback
-     * @see #doInAsyncProducer(org.apache.camel.Endpoint, org.apache.camel.Exchange, org.apache.camel.ExchangePattern, org.apache.camel.AsyncCallback, org.apache.camel.AsyncProducerCallback)
-     */
-    public <T> T doInProducer(Endpoint endpoint, Exchange exchange, ExchangePattern pattern, ProducerCallback<T> callback) {
-        T answer = null;
-
-        // get the producer and we do not mind if its pooled as we can handle returning it back to the pool
-        Producer producer = doGetProducer(endpoint, true);
-
-        if (producer == null) {
-            if (isStopped()) {
-                LOG.warn("Ignoring exchange sent after processor is stopped: {}", exchange);
-                return null;
-            } else {
-                throw new IllegalStateException("No producer, this processor has not been started: " + this);
-            }
+        if (exchange == null) {
+            exchange = pattern != null ? endpoint.createExchange(pattern) : endpoint.createExchange();
         }
+        return doAsyncSendExchange(endpoint, processor, resultProcessor, exchange, future);
+    }
 
+    protected CompletableFuture<Exchange> doAsyncSendExchange(Endpoint endpoint,
+                                                              Processor processor,
+                                                              Processor resultProcessor,
+                                                              Exchange exchange,
+                                                              CompletableFuture<Exchange> f) {
+        CompletableFuture<Exchange> future = f != null ? f : new CompletableFuture<>();
+        AsyncProducerCallback cb = (p, e, c) -> asyncDispatchExchange(endpoint, p, resultProcessor, e, c);
         try {
-            // invoke the callback
-            answer = callback.doInProducer(producer, exchange, pattern);
-        } catch (Throwable e) {
-            if (exchange != null) {
-                exchange.setException(e);
-            }
-        } finally {
-            if (producer instanceof ServicePoolAware) {
-                // release back to the pool
-                pool.release(endpoint, producer);
-            } else if (!producer.isSingleton()) {
-                // stop and shutdown non-singleton producers as we should not leak resources
-                try {
-                    ServiceHelper.stopAndShutdownService(producer);
-                } catch (Exception e) {
-                    // ignore and continue
-                    LOG.warn("Error stopping/shutting down producer: {}", producer, e);
+            if (processor instanceof AsyncProcessor) {
+                ((AsyncProcessor) processor).process(exchange,
+                        doneSync -> doInAsyncProducer(endpoint, exchange, ds -> future.complete(exchange), cb));
+            } else {
+                if (processor != null) {
+                    processor.process(exchange);
                 }
+                doInAsyncProducer(endpoint, exchange, ds -> future.complete(exchange), cb);
             }
+        } catch (Throwable e) {
+            // populate failed so return
+            exchange.setException(e);
+            future.complete(exchange);
         }
-
-        return answer;
+        return future;
     }
 
     /**
@@ -396,20 +271,21 @@ public class ProducerCache extends ServiceSupport {
      *
      * @param endpoint         the endpoint to send the exchange to
      * @param exchange         the exchange, can be <tt>null</tt> if so then create a new exchange from the producer
-     * @param pattern          the exchange pattern, can be <tt>null</tt>
      * @param callback         the asynchronous callback
      * @param producerCallback the producer template callback to be executed
      * @return (doneSync) <tt>true</tt> to continue execute synchronously, <tt>false</tt> to continue being executed asynchronously
      */
-    public boolean doInAsyncProducer(final Endpoint endpoint, final Exchange exchange, final ExchangePattern pattern,
-                                     final AsyncCallback callback, final AsyncProducerCallback producerCallback) {
+    public boolean doInAsyncProducer(Endpoint endpoint,
+                                     Exchange exchange,
+                                     AsyncCallback callback,
+                                     AsyncProducerCallback producerCallback) {
 
-        Producer target;
+        AsyncProducer producer;
         try {
             // get the producer and we do not mind if its pooled as we can handle returning it back to the pool
-            target = doGetProducer(endpoint, true);
+            producer = acquireProducer(endpoint);
 
-            if (target == null) {
+            if (producer == null) {
                 if (isStopped()) {
                     LOG.warn("Ignoring exchange sent after processor is stopped: {}", exchange);
                     callback.done(true);
@@ -426,8 +302,6 @@ public class ProducerCache extends ServiceSupport {
             return true;
         }
 
-        final Producer producer = target;
-
         try {
             StopWatch sw = null;
             if (eventNotifierEnabled && exchange != null) {
@@ -441,8 +315,7 @@ public class ProducerCache extends ServiceSupport {
             final StopWatch watch = sw;
 
             // invoke the callback
-            AsyncProcessor asyncProcessor = AsyncProcessorConverterHelper.convert(producer);
-            return producerCallback.doInAsyncProducer(producer, asyncProcessor, exchange, pattern, doneSync -> {
+            return producerCallback.doInAsyncProducer(producer, exchange, doneSync -> {
                 try {
                     if (eventNotifierEnabled && watch != null) {
                         long timeTaken = watch.taken();
@@ -450,18 +323,8 @@ public class ProducerCache extends ServiceSupport {
                         EventHelper.notifyExchangeSent(exchange.getContext(), exchange, endpoint, timeTaken);
                     }
 
-                    if (producer instanceof ServicePoolAware) {
-                        // release back to the pool
-                        pool.release(endpoint, producer);
-                    } else if (!producer.isSingleton()) {
-                        // stop and shutdown non-singleton producers as we should not leak resources
-                        try {
-                            ServiceHelper.stopAndShutdownService(producer);
-                        } catch (Exception e) {
-                            // ignore and continue
-                            LOG.warn("Error stopping/shutting down producer: {}", producer, e);
-                        }
-                    }
+                    // release back to the pool
+                    producers.release(endpoint, producer);
                 } finally {
                     callback.done(doneSync);
                 }
@@ -476,8 +339,8 @@ public class ProducerCache extends ServiceSupport {
         }
     }
 
-    protected boolean asyncDispatchExchange(final Endpoint endpoint, Producer producer,
-                                            final Processor resultProcessor, Exchange exchange, AsyncCallback callback) {
+    protected boolean asyncDispatchExchange(Endpoint endpoint, AsyncProducer producer,
+                                            Processor resultProcessor, Exchange exchange, AsyncCallback callback) {
         // now lets dispatch
         LOG.debug(">>>> {} {}", endpoint, exchange);
 
@@ -489,9 +352,8 @@ public class ProducerCache extends ServiceSupport {
             if (eventNotifierEnabled) {
                 callback = new EventNotifierCallback(callback, exchange, endpoint);
             }
-            AsyncProcessor target = prepareProducer(producer);
             // invoke the asynchronous method
-            return internalProcessor.process(exchange, callback, target, resultProcessor);
+            return internalProcessor.process(exchange, callback, producer, resultProcessor);
         } catch (Throwable e) {
             // ensure exceptions is caught and set on the exchange
             exchange.setException(e);
@@ -501,107 +363,8 @@ public class ProducerCache extends ServiceSupport {
 
     }
 
-    protected Exchange sendExchange(final Endpoint endpoint, ExchangePattern pattern,
-                                    final Processor processor, final Processor resultProcessor, Exchange exchange) {
-        return doInProducer(endpoint, exchange, pattern, new ProducerCallback<Exchange>() {
-            public Exchange doInProducer(Producer producer, Exchange exchange, ExchangePattern pattern) {
-                if (exchange == null) {
-                    exchange = pattern != null ? producer.getEndpoint().createExchange(pattern) : producer.getEndpoint().createExchange();
-                }
-
-                if (processor != null) {
-                    // lets populate using the processor callback
-                    try {
-                        processor.process(exchange);
-                    } catch (Throwable e) {
-                        // populate failed so return
-                        exchange.setException(e);
-                        return exchange;
-                    }
-                }
-
-                // now lets dispatch
-                LOG.debug(">>>> {} {}", endpoint, exchange);
-
-                // set property which endpoint we send to
-                exchange.setProperty(Exchange.TO_ENDPOINT, endpoint.getEndpointUri());
-
-                // send the exchange using the processor
-                StopWatch watch = null;
-                try {
-                    if (eventNotifierEnabled) {
-                        boolean sending = EventHelper.notifyExchangeSending(exchange.getContext(), exchange, endpoint);
-                        if (sending) {
-                            watch = new StopWatch();
-                        }
-                    }
-
-                    AsyncProcessor target = prepareProducer(producer);
-                    // invoke the synchronous method
-                    internalProcessor.process(exchange, target, resultProcessor);
-
-                } catch (Throwable e) {
-                    // ensure exceptions is caught and set on the exchange
-                    exchange.setException(e);
-                } finally {
-                    // emit event that the exchange was sent to the endpoint
-                    if (eventNotifierEnabled && watch != null) {
-                        long timeTaken = watch.taken();
-                        EventHelper.notifyExchangeSent(exchange.getContext(), exchange, endpoint, timeTaken);
-                    }
-                }
-                return exchange;
-            }
-        });
-    }
-
-    protected AsyncProcessor prepareProducer(Producer producer) {
-        return AsyncProcessorConverterHelper.convert(producer);
-    }
-
-    protected synchronized Producer doGetProducer(Endpoint endpoint, boolean pooled) {
-        String key = endpoint.getEndpointUri();
-        Producer answer = producers.get(key);
-        if (pooled && answer == null) {
-            // try acquire from connection pool
-            answer = pool.acquire(endpoint);
-        }
-
-        if (answer == null) {
-            // create a new producer
-            try {
-                answer = endpoint.createProducer();
-                // add as service to CamelContext so its managed via JMX
-                boolean add = answer.isSingleton() || answer instanceof ServicePoolAware;
-                if (add) {
-                    // (false => we and handling the lifecycle of the producer in this cache)
-                    getCamelContext().addService(answer, false);
-                } else {
-                    // fallback and start producer manually
-                    ServiceHelper.startService(answer);
-                }
-            } catch (Throwable e) {
-                throw new FailedToCreateProducerException(endpoint, e);
-            }
-
-            // add producer to cache or pool if applicable
-            if (pooled && answer instanceof ServicePoolAware) {
-                LOG.debug("Adding to producer service pool with key: {} for producer: {}", endpoint, answer);
-                answer = pool.addAndAcquire(endpoint, answer);
-            } else if (answer.isSingleton()) {
-                LOG.debug("Adding to producer cache with key: {} for producer: {}", endpoint, answer);
-                producers.put(key, answer);
-            }
-        }
-
-        if (answer != null) {
-            // record statistics
-            if (extendedStatistics) {
-                statistics.onHit(key);
-            }
-        }
-
-        return answer;
+    protected AsyncProducer doGetProducer(Endpoint endpoint) throws Exception {
+        return producers.acquire(endpoint);
     }
 
     protected void doStart() throws Exception {
@@ -610,25 +373,12 @@ public class ProducerCache extends ServiceSupport {
             statistics = new DefaultEndpointUtilizationStatistics(max);
         }
 
-        ServiceHelper.startServices(producers.values());
-        ServiceHelper.startServices(statistics, pool);
+        ServiceHelper.startServices(producers, statistics);
     }
 
     protected void doStop() throws Exception {
         // when stopping we intend to shutdown
-        ServiceHelper.stopAndShutdownService(statistics);
-        if (stopServicePool) {
-            ServiceHelper.stopAndShutdownService(pool);
-        }
-        try {
-            ServiceHelper.stopAndShutdownServices(producers.values());
-        } finally {
-            // ensure producers are removed, and also from JMX
-            for (Producer producer : producers.values()) {
-                getCamelContext().removeService(producer);
-            }
-        }
-        producers.clear();
+        ServiceHelper.stopAndShutdownServices(statistics, producers);
         if (statistics != null) {
             statistics.clear();
         }
@@ -641,7 +391,6 @@ public class ProducerCache extends ServiceSupport {
      */
     public int size() {
         int size = producers.size();
-        size += pool.size();
 
         LOG.trace("size = {}", size);
         return size;
@@ -649,18 +398,11 @@ public class ProducerCache extends ServiceSupport {
 
     /**
      * Gets the maximum cache size (capacity).
-     * <p/>
-     * Will return <tt>-1</tt> if it cannot determine this if a custom cache was used.
      *
      * @return the capacity
      */
     public int getCapacity() {
-        int capacity = -1;
-        if (producers instanceof LRUCache) {
-            LRUCache<String, Producer> cache = (LRUCache<String, Producer>) producers;
-            capacity = cache.getMaxCacheSize();
-        }
-        return capacity;
+        return maxCacheSize;
     }
 
     /**
@@ -671,12 +413,7 @@ public class ProducerCache extends ServiceSupport {
      * @return the hits
      */
     public long getHits() {
-        long hits = -1;
-        if (producers instanceof LRUCache) {
-            LRUCache<String, Producer> cache = (LRUCache<String, Producer>) producers;
-            hits = cache.getHits();
-        }
-        return hits;
+        return producers.getHits();
     }
 
     /**
@@ -687,12 +424,7 @@ public class ProducerCache extends ServiceSupport {
      * @return the misses
      */
     public long getMisses() {
-        long misses = -1;
-        if (producers instanceof LRUCache) {
-            LRUCache<String, Producer> cache = (LRUCache<String, Producer>) producers;
-            misses = cache.getMisses();
-        }
-        return misses;
+        return producers.getMisses();
     }
 
     /**
@@ -703,22 +435,14 @@ public class ProducerCache extends ServiceSupport {
      * @return the evicted
      */
     public long getEvicted() {
-        long evicted = -1;
-        if (producers instanceof LRUCache) {
-            LRUCache<String, Producer> cache = (LRUCache<String, Producer>) producers;
-            evicted = cache.getEvicted();
-        }
-        return evicted;
+        return producers.getEvicted();
     }
 
     /**
      * Resets the cache statistics
      */
     public void resetCacheStatistics() {
-        if (producers instanceof LRUCache) {
-            LRUCache<String, Producer> cache = (LRUCache<String, Producer>) producers;
-            cache.resetStatistics();
-        }
+        producers.resetStatistics();
         if (statistics != null) {
             statistics.clear();
         }
@@ -728,8 +452,12 @@ public class ProducerCache extends ServiceSupport {
      * Purges this cache
      */
     public synchronized void purge() {
-        producers.clear();
-        pool.purge();
+        try {
+            producers.stop();
+            producers.start();
+        } catch (Exception e) {
+            LOG.debug("Error restarting producers", e);
+        }
         if (statistics != null) {
             statistics.clear();
         }
@@ -739,10 +467,7 @@ public class ProducerCache extends ServiceSupport {
      * Cleanup the cache (purging stale entries)
      */
     public void cleanUp() {
-        if (producers instanceof LRUCache) {
-            LRUCache<String, Producer> cache = (LRUCache<String, Producer>) producers;
-            cache.cleanUp();
-        }
+        producers.cleanUp();
     }
 
     public EndpointUtilizationStatistics getEndpointUtilizationStatistics() {
@@ -754,4 +479,24 @@ public class ProducerCache extends ServiceSupport {
         return "ProducerCache for source: " + source + ", capacity: " + getCapacity();
     }
 
+    /**
+     * Callback for sending a exchange message to a endpoint using an {@link AsyncProcessor} capable producer.
+     * <p/>
+     * Using this callback as a template pattern ensures that Camel handles the resource handling and will
+     * start and stop the given producer, to avoid resource leaks.
+     *
+     * @version
+     */
+    public interface AsyncProducerCallback {
+
+        /**
+         * Performs operation on the given producer to send the given exchange.
+         *
+         * @param asyncProducer   the async producer, is never <tt>null</tt>
+         * @param exchange        the exchange to process
+         * @param callback        the async callback
+         * @return (doneSync) <tt>true</tt> to continue execute synchronously, <tt>false</tt> to continue being executed asynchronously
+         */
+        boolean doInAsyncProducer(AsyncProducer asyncProducer, Exchange exchange, AsyncCallback callback);
+    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
new file mode 100644
index 0000000..83fc313
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
@@ -0,0 +1,320 @@
+/**
+ * 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 java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.function.Function;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointAware;
+import org.apache.camel.IsSingleton;
+import org.apache.camel.NonManagedService;
+import org.apache.camel.Service;
+import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.LRUCache;
+import org.apache.camel.util.LRUCacheFactory;
+import org.apache.camel.util.function.ThrowingFunction;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import sun.misc.Unsafe;
+
+/**
+ * A service pool is like a connection pool but can pool any kind of objects.
+ * <p/>
+ * Notice the capacity is <b>per key</b> which means that each key can contain at most
+ * (the capacity) services. The pool can contain an unbounded number of keys.
+ * <p/>
+ * By default the capacity is set to 100.
+ *
+ * @version 
+ */
+public class ServicePool<S extends Service> extends ServiceSupport implements NonManagedService {
+
+    static final Logger LOG = LoggerFactory.getLogger(ServicePool.class);
+
+    final ThrowingFunction<Endpoint, S, Exception> producer;
+    final Function<S, Endpoint> getEndpoint;
+    final ConcurrentHashMap<Endpoint, Pool<S>> pool = new ConcurrentHashMap<>();
+    int capacity;
+    Map<Key<S>, S> cache;
+
+    interface Pool<S> {
+        S acquire() throws Exception;
+        void release(S s);
+        int size();
+        void stop();
+        void evict(S s);
+    }
+
+    static class Key<S> {
+        private final S s;
+        public Key(S s) {
+            this.s = Objects.requireNonNull(s);
+        }
+        @Override
+        public boolean equals(Object o) {
+            return o instanceof Key && ((Key) o).s == s;
+        }
+        @Override
+        public int hashCode() {
+            return s.hashCode();
+        }
+    }
+
+    public ServicePool(ThrowingFunction<Endpoint, S, Exception> producer, Function<S, Endpoint> getEndpoint, int capacity) {
+        this.producer = producer;
+        this.getEndpoint = getEndpoint;
+        this.capacity = capacity;
+        this.cache = capacity > 0 ? LRUCacheFactory.newLRUCache(capacity, this::onEvict) : null;
+    }
+
+    protected void onEvict(S s) {
+        Endpoint e = getEndpoint.apply(s);
+        Pool<S> p = pool.get(e);
+        p.evict(s);
+    }
+
+    /**
+     * Tries to acquire the service with the given key
+     *
+     * @param endpoint the endpoint
+     * @return the acquired service
+     */
+    public S acquire(Endpoint endpoint) throws Exception {
+        if (!isStarted()) {
+            return null;
+        }
+        S s = getPool(endpoint).acquire();
+        if (s != null && cache != null) {
+            cache.putIfAbsent(new Key<>(s), s);
+        }
+        return s;
+    }
+
+    /**
+     * Releases the service back to the pool
+     *
+     * @param endpoint the endpoint
+     * @param s the service
+     */
+    public void release(Endpoint endpoint, S s) {
+        getPool(endpoint).release(s);
+    }
+
+    protected Pool<S> getPool(Endpoint endpoint) {
+        return pool.computeIfAbsent(endpoint, this::createPool);
+    }
+
+    private Pool<S> createPool(Endpoint endpoint) {
+        boolean singleton = endpoint.isSingleton();
+        try {
+            S s = producer.apply(endpoint);
+            if (s instanceof IsSingleton) {
+                singleton = ((IsSingleton) s).isSingleton();
+            }
+        } catch (Exception e) {
+            // Ignore
+        }
+        if (singleton && capacity > 0) {
+            return new SinglePool(endpoint);
+        } else {
+            return new MultiplePool(endpoint);
+        }
+    }
+
+    /**
+     * Returns the current size of the pool
+     *
+     * @return the current size of the pool
+     */
+    public int size() {
+        return pool.values().stream().mapToInt(Pool::size).sum();
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        pool.values().forEach(Pool::stop);
+        pool.clear();
+    }
+
+    public void cleanUp() {
+        if (cache instanceof LRUCache) {
+            ((LRUCache) cache).cleanUp();
+        }
+    }
+
+    public void resetStatistics() {
+        if (cache instanceof LRUCache) {
+            ((LRUCache) cache).resetStatistics();
+        }
+    }
+
+    public long getEvicted() {
+        if (cache instanceof LRUCache) {
+            return ((LRUCache) cache).getEvicted();
+        } else {
+            return -1;
+        }
+    }
+
+    public long getMisses() {
+        if (cache instanceof LRUCache) {
+            return ((LRUCache) cache).getMisses();
+        } else {
+            return -1;
+        }
+    }
+
+    public long getHits() {
+        if (cache instanceof LRUCache) {
+            return ((LRUCache) cache).getHits();
+        } else {
+            return -1;
+        }
+    }
+
+    public int getMaxCacheSize() {
+        if (cache instanceof LRUCache) {
+            return ((LRUCache) cache).getMaxCacheSize();
+        } else {
+            return -1;
+        }
+    }
+
+    static <S extends Service> void stop(S s) {
+        try {
+            s.stop();
+        } catch (Exception e) {
+            LOG.debug("Error stopping service {}", s, e);
+        }
+    }
+
+    private class SinglePool implements Pool<S> {
+        private final Endpoint endpoint;
+        private volatile S s;
+
+        public SinglePool(Endpoint endpoint) {
+            this.endpoint = endpoint;
+        }
+
+        @Override
+        public S acquire() throws Exception {
+            if (s == null) {
+                synchronized (this) {
+                    if (s == null) {
+                        s = producer.apply(endpoint);
+                        endpoint.getCamelContext().addService(s, true, true);
+                    }
+                }
+            }
+            return s;
+        }
+
+        @Override
+        public void release(S s) {
+        }
+
+        @Override
+        public int size() {
+            return s != null ? 1 : 0;
+        }
+
+        @Override
+        public void stop() {
+            S toStop = null;
+            synchronized (this) {
+                toStop = s;
+                s = null;
+            }
+            doStop(toStop);
+        }
+
+        @Override
+        public void evict(S s) {
+            synchronized (this) {
+                if (this.s == s) {
+                    this.s = null;
+                }
+            }
+            doStop(s);
+        }
+
+        void doStop(S s) {
+            if (s != null) {
+                ServicePool.stop(s);
+                try {
+                    endpoint.getCamelContext().removeService(s);
+                } catch (Exception e) {
+                    LOG.debug("Error removing service {}", s, e);
+                }
+            }
+        }
+    }
+
+    private class MultiplePool implements Pool<S> {
+        private final Endpoint endpoint;
+        private final ConcurrentLinkedQueue<S> queue = new ConcurrentLinkedQueue<>();
+
+        public MultiplePool(Endpoint endpoint) {
+            this.endpoint = endpoint;
+        }
+
+        @Override
+        public S acquire() throws Exception {
+            S s = queue.poll();
+            if (s == null) {
+                s = producer.apply(endpoint);
+                s.start();
+            }
+            return s;
+        }
+
+        @Override
+        public void release(S s) {
+            if (queue.size() < capacity) {
+                queue.add(s);
+            } else {
+                ServicePool.stop(s);
+            }
+        }
+
+        @Override
+        public int size() {
+            return queue.size();
+        }
+
+        @Override
+        public void stop() {
+            queue.forEach(ServicePool::stop);
+            queue.clear();
+        }
+
+        @Override
+        public void evict(S s) {
+            queue.remove(s);
+            ServicePool.stop(s);
+        }
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SharedPollingConsumerServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/SharedPollingConsumerServicePool.java
deleted file mode 100644
index a0f94ca..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/SharedPollingConsumerServicePool.java
+++ /dev/null
@@ -1,51 +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.NonManagedService;
-import org.apache.camel.ShutdownableService;
-import org.apache.camel.StaticService;
-
-/**
- * A shared {@link org.apache.camel.impl.DefaultPollingConsumerServicePool} which is used by
- * {@link org.apache.camel.CamelContext} by default.
- *
- * @version 
- */
-@Deprecated
-public class SharedPollingConsumerServicePool extends DefaultPollingConsumerServicePool implements ShutdownableService, StaticService, NonManagedService {
-
-    public SharedPollingConsumerServicePool() {
-    }
-
-    public SharedPollingConsumerServicePool(int capacity) {
-        super(capacity);
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        // only let CamelContext stop it since its shared and should
-        // only be stopped when CamelContext stops
-    }
-
-    @Override
-    protected void doShutdown() throws Exception {
-        // now we are shutting down then stop it, which properly stops the pool
-        super.doStop();
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java
deleted file mode 100644
index 8aaa777..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java
+++ /dev/null
@@ -1,51 +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.NonManagedService;
-import org.apache.camel.ShutdownableService;
-import org.apache.camel.StaticService;
-
-/**
- * A shared {@link org.apache.camel.impl.DefaultProducerServicePool} which is used by
- * {@link org.apache.camel.CamelContext} by default.
- *
- * @version 
- */
-@Deprecated
-public class SharedProducerServicePool extends DefaultProducerServicePool implements ShutdownableService, StaticService, NonManagedService {
-
-    public SharedProducerServicePool() {
-    }
-
-    public SharedProducerServicePool(int capacity) {
-        super(capacity);
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        // only let CamelContext stop it since its shared and should
-        // only be stopped when CamelContext stops
-    }
-
-    @Override
-    protected void doShutdown() throws Exception {
-        // now we are shutting down then stop it, which properly stops the pool
-        super.doStop();
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
index be85b4b..a8e1e43 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
@@ -18,6 +18,7 @@ package org.apache.camel.processor;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.CamelExchangeException;
@@ -25,9 +26,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
-import org.apache.camel.Producer;
 import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.impl.EmptyProducerCache;
 import org.apache.camel.impl.ProducerCache;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
@@ -155,7 +154,7 @@ public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware,
      */
     public boolean process(final Exchange exchange, final AsyncCallback callback) {
         // which producer to use
-        final Producer producer;
+        final AsyncProducer producer;
         final Endpoint endpoint;
 
         // use dynamic endpoint so calculate the endpoint to use
@@ -346,16 +345,8 @@ public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware,
         }
 
         if (producerCache == null) {
-            if (cacheSize < 0) {
-                producerCache = new EmptyProducerCache(this, camelContext);
-                LOG.debug("Enricher {} is not using ProducerCache", this);
-            } else if (cacheSize == 0) {
-                producerCache = new ProducerCache(this, camelContext);
-                LOG.debug("Enricher {} using ProducerCache with default cache size", this);
-            } else {
-                producerCache = new ProducerCache(this, camelContext, cacheSize);
-                LOG.debug("Enricher {} using ProducerCache with cacheSize={}", this, cacheSize);
-            }
+            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            LOG.debug("Enricher {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
         ServiceHelper.startServices(producerCache, aggregationStrategy);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
index 33a353e..ebb3c76 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
@@ -29,7 +29,6 @@ import org.apache.camel.PollingConsumer;
 import org.apache.camel.impl.BridgeExceptionHandlerToErrorHandler;
 import org.apache.camel.impl.ConsumerCache;
 import org.apache.camel.impl.DefaultConsumer;
-import org.apache.camel.impl.EmptyConsumerCache;
 import org.apache.camel.impl.EventDrivenPollingConsumer;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
@@ -373,16 +372,8 @@ public class PollEnricher extends ServiceSupport implements AsyncProcessor, IdAw
     protected void doStart() throws Exception {
         if (consumerCache == null) {
             // create consumer cache if we use dynamic expressions for computing the endpoints to poll
-            if (cacheSize < 0) {
-                consumerCache = new EmptyConsumerCache(this, camelContext);
-                LOG.debug("PollEnrich {} is not using ConsumerCache", this);
-            } else if (cacheSize == 0) {
-                consumerCache = new ConsumerCache(this, camelContext);
-                LOG.debug("PollEnrich {} using ConsumerCache with default cache size", this);
-            } else {
-                consumerCache = new ConsumerCache(this, camelContext, cacheSize);
-                LOG.debug("PollEnrich {} using ConsumerCache with cacheSize={}", this, cacheSize);
-            }
+            consumerCache = new ConsumerCache(this, camelContext, cacheSize);
+            LOG.debug("PollEnrich {} using ConsumerCache with cacheSize={}", this, cacheSize);
         }
         if (aggregationStrategy instanceof CamelContextAware) {
             ((CamelContextAware) aggregationStrategy).setCamelContext(camelContext);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
index fcbcc0c..2d92c75 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
@@ -26,7 +26,6 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.EmptyProducerCache;
 import org.apache.camel.impl.ProducerCache;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
@@ -187,16 +186,8 @@ public class RecipientList extends ServiceSupport implements AsyncProcessor, IdA
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            if (cacheSize < 0) {
-                producerCache = new EmptyProducerCache(this, camelContext);
-                LOG.debug("RecipientList {} is not using ProducerCache", this);
-            } else if (cacheSize == 0) {
-                producerCache = new ProducerCache(this, camelContext);
-                LOG.debug("RecipientList {} using ProducerCache with default cache size", this);
-            } else {
-                producerCache = new ProducerCache(this, camelContext, cacheSize);
-                LOG.debug("RecipientList {} using ProducerCache with cacheSize={}", this, cacheSize);
-            }
+            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            LOG.debug("RecipientList {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
         ServiceHelper.startServices(aggregationStrategy, producerCache);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
index 0e34a87..b955aea 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -33,6 +34,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.impl.ProducerCache;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.MessageHelper;
@@ -72,7 +74,7 @@ public class RecipientListProcessor extends MulticastProcessor {
     static final class RecipientProcessorExchangePair implements ProcessorExchangePair {
         private final int index;
         private final Endpoint endpoint;
-        private final Producer producer;
+        private final AsyncProducer producer;
         private Processor prepared;
         private final Exchange exchange;
         private final ProducerCache producerCache;
@@ -84,7 +86,7 @@ public class RecipientListProcessor extends MulticastProcessor {
             this.index = index;
             this.producerCache = producerCache;
             this.endpoint = endpoint;
-            this.producer = producer;
+            this.producer = AsyncProcessorConverterHelper.convert(producer);
             this.prepared = prepared;
             this.exchange = exchange;
             this.pattern = pattern;
@@ -265,7 +267,7 @@ public class RecipientListProcessor extends MulticastProcessor {
     protected void doStart() throws Exception {
         super.doStart();
         if (producerCache == null) {
-            producerCache = new ProducerCache(this, getCamelContext());
+            producerCache = new ProducerCache(this, getCamelContext(), 0);
         }
         ServiceHelper.startService(producerCache);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
index dbfb8ad..c2aeefa 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -20,20 +20,18 @@ import java.util.Iterator;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.AsyncProducerCallback;
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.Message;
-import org.apache.camel.Producer;
 import org.apache.camel.Traceable;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.impl.EmptyProducerCache;
 import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.ProducerCache.AsyncProducerCallback;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.RouteContext;
@@ -344,17 +342,13 @@ public class RoutingSlip extends ServiceSupport implements AsyncProcessor, Trace
         // - routing slip was routed asynchronously
         // - and we are completely done with the routing slip
         // so we need to signal done on the original callback so it can continue
-        AsyncCallback callback = new AsyncCallback() {
-            @Override
-            public void done(boolean doneSync) {
-                if (!doneSync) {
-                    originalCallback.done(false);
-                }
+        AsyncCallback callback = doneSync -> {
+            if (!doneSync) {
+                originalCallback.done(false);
             }
         };
-        boolean sync = producerCache.doInAsyncProducer(endpoint, exchange, null, callback, new AsyncProducerCallback() {
-            public boolean doInAsyncProducer(Producer producer, AsyncProcessor asyncProducer, final Exchange exchange,
-                                             ExchangePattern exchangePattern, final AsyncCallback callback) {
+        return producerCache.doInAsyncProducer(endpoint, exchange, callback, new AsyncProducerCallback() {
+            public boolean doInAsyncProducer(AsyncProducer asyncProducer, Exchange exchange, final AsyncCallback callback) {
 
                 // rework error handling to support fine grained error handling
                 RouteContext routeContext = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRouteContext() : null;
@@ -365,7 +359,7 @@ public class RoutingSlip extends ServiceSupport implements AsyncProcessor, Trace
                 exchange.setProperty(Exchange.SLIP_ENDPOINT, endpoint.getEndpointUri());
                 exchange.setProperty(Exchange.SLIP_PRODUCER, asyncProducer);
 
-                boolean answer = target.process(exchange, new AsyncCallback() {
+                return target.process(exchange, new AsyncCallback() {
                     public void done(boolean doneSync) {
                         // cleanup producer after usage
                         exchange.removeProperty(Exchange.SLIP_PRODUCER);
@@ -438,26 +432,14 @@ public class RoutingSlip extends ServiceSupport implements AsyncProcessor, Trace
                         originalCallback.done(false);
                     }
                 });
-
-                return answer;
             }
         });
-
-        return sync;
     }
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            if (cacheSize < 0) {
-                producerCache = new EmptyProducerCache(this, camelContext);
-                log.debug("RoutingSlip {} is not using ProducerCache", this);
-            } else if (cacheSize == 0) {
-                producerCache = new ProducerCache(this, camelContext);
-                log.debug("RoutingSlip {} using ProducerCache with default cache size", this);
-            } else {
-                producerCache = new ProducerCache(this, camelContext, cacheSize);
-                log.debug("RoutingSlip {} using ProducerCache with cacheSize={}", this, cacheSize);
-            }
+            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            log.debug("RoutingSlip {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
         ServiceHelper.startServices(producerCache, errorHandler);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
index 2a6b241..2f52a94 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
@@ -18,7 +18,8 @@ package org.apache.camel.processor;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.AsyncProducerCallback;
+import org.apache.camel.AsyncProducer;
+import org.apache.camel.impl.ProducerCache.AsyncProducerCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
@@ -27,9 +28,7 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
-import org.apache.camel.Producer;
 import org.apache.camel.ResolveEndpointFailedException;
-import org.apache.camel.impl.EmptyProducerCache;
 import org.apache.camel.impl.ProducerCache;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
@@ -157,40 +156,38 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
         // send the exchange to the destination using the producer cache
         final Processor preProcessor = preAwareProcessor;
         final Processor postProcessor = postAwareProcessor;
-        return producerCache.doInAsyncProducer(endpoint, exchange, pattern, callback, new AsyncProducerCallback() {
-            public boolean doInAsyncProducer(Producer producer, AsyncProcessor asyncProducer, final Exchange exchange,
-                                             ExchangePattern pattern, final AsyncCallback callback) {
-                final Exchange target = configureExchange(exchange, pattern, destinationExchangePattern, endpoint);
-
-                try {
-                    if (preProcessor != null) {
-                        preProcessor.process(target);
-                    }
-                } catch (Throwable e) {
-                    exchange.setException(e);
-                    // restore previous MEP
-                    target.setPattern(existingPattern);
-                    // we failed
-                    callback.done(true);
+        // destination exchange pattern overrides pattern
+        final ExchangePattern pattern = destinationExchangePattern != null ? destinationExchangePattern : this.pattern;
+        return producerCache.doInAsyncProducer(endpoint, exchange, callback, (p, e, c) -> {
+            final Exchange target = configureExchange(e, pattern, endpoint);
+            try {
+                if (preProcessor != null) {
+                    preProcessor.process(target);
                 }
+            } catch (Throwable t) {
+                e.setException(t);
+                // restore previous MEP
+                target.setPattern(existingPattern);
+                // we failed
+                c.done(true);
+            }
 
-                LOG.debug(">>>> {} {}", endpoint, exchange);
-                return asyncProducer.process(target, new AsyncCallback() {
-                    public void done(boolean doneSync) {
-                        // restore previous MEP
-                        target.setPattern(existingPattern);
-                        try {
-                            if (postProcessor != null) {
-                                postProcessor.process(target);
-                            }
-                        } catch (Throwable e) {
-                            target.setException(e);
+            LOG.debug(">>>> {} {}", endpoint, e);
+            return p.process(target, new AsyncCallback() {
+                public void done(boolean doneSync) {
+                    // restore previous MEP
+                    target.setPattern(existingPattern);
+                    try {
+                        if (postProcessor != null) {
+                            postProcessor.process(target);
                         }
-                        // signal we are done
-                        callback.done(doneSync);
+                    } catch (Throwable e) {
+                        target.setException(e);
                     }
-                });
-            }
+                    // signal we are done
+                    c.done(doneSync);
+                }
+            });
         });
     }
 
@@ -242,11 +239,8 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
         }
     }
 
-    protected Exchange configureExchange(Exchange exchange, ExchangePattern pattern, ExchangePattern destinationExchangePattern, Endpoint endpoint) {
-        // destination exchange pattern overrides pattern
-        if (destinationExchangePattern != null) {
-            exchange.setPattern(destinationExchangePattern);
-        } else if (pattern != null) {
+    protected Exchange configureExchange(Exchange exchange, ExchangePattern pattern, Endpoint endpoint) {
+        if (pattern != null) {
             exchange.setPattern(pattern);
         }
         // set property which endpoint we send to
@@ -256,16 +250,8 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            if (cacheSize < 0) {
-                producerCache = new EmptyProducerCache(this, camelContext);
-                LOG.debug("DynamicSendTo {} is not using ProducerCache", this);
-            } else if (cacheSize == 0) {
-                producerCache = new ProducerCache(this, camelContext);
-                LOG.debug("DynamicSendTo {} using ProducerCache with default cache size", this);
-            } else {
-                producerCache = new ProducerCache(this, camelContext, cacheSize);
-                LOG.debug("DynamicSendTo {} using ProducerCache with cacheSize={}", this, cacheSize);
-            }
+            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            LOG.debug("DynamicSendTo {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
         if (isAllowOptimisedComponents() && uri != null) {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
index 0d1fca6..f57c309 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -21,17 +21,18 @@ import java.util.HashMap;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.AsyncProducerCallback;
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Producer;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.Traceable;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.InterceptSendToEndpoint;
 import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.ServicePool;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.AsyncProcessorConverterHelper;
@@ -56,7 +57,7 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
     protected final CamelContext camelContext;
     protected final ExchangePattern pattern;
     protected ProducerCache producerCache;
-    protected AsyncProcessor producer;
+    protected AsyncProducer producer;
     protected Endpoint destination;
     protected ExchangePattern destinationExchangePattern;
     protected String id;
@@ -162,22 +163,16 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
             return true;
         }
 
+        configureExchange(exchange, pattern);
+        LOG.debug(">>>> {} {}", destination, exchange);
+
         // send the exchange to the destination using the producer cache for the non optimized producers
-        return producerCache.doInAsyncProducer(destination, exchange, pattern, callback, new AsyncProducerCallback() {
-            public boolean doInAsyncProducer(Producer producer, AsyncProcessor asyncProducer, final Exchange exchange,
-                                             ExchangePattern pattern, final AsyncCallback callback) {
-                final Exchange target = configureExchange(exchange, pattern);
-                LOG.debug(">>>> {} {}", destination, exchange);
-                return asyncProducer.process(target, new AsyncCallback() {
-                    public void done(boolean doneSync) {
-                        // restore previous MEP
-                        target.setPattern(existingPattern);
-                        // signal we are done
-                        callback.done(doneSync);
-                    }
-                });
-            }
-        });
+        return producerCache.doInAsyncProducer(destination, exchange, callback, (producer, ex, cb) -> producer.process(ex, doneSync -> {
+            // restore previous MEP
+            exchange.setPattern(existingPattern);
+            // signal we are done
+            cb.done(doneSync);
+        }));
     }
     
     public Endpoint getDestination() {
@@ -214,7 +209,7 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
             // and use a regular HashMap as we do not want a soft reference store that may get re-claimed when low on memory
             // as we want to ensure the producer is kept around, to ensure its lifecycle is fully managed,
             // eg stopping the producer when we stop etc.
-            producerCache = new ProducerCache(this, camelContext, new HashMap<String, Producer>(1));
+            producerCache = new ProducerCache(this, camelContext, 1);
             // do not add as service as we do not want to manage the producer cache
         }
         ServiceHelper.startService(producerCache);
@@ -238,14 +233,14 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
         // Only for pooled and non-singleton producers we have to use the ProducerCache as it supports these
         // kind of producer better (though these kind of producer should be rare)
 
-        Producer producer = producerCache.acquireProducer(destination);
-        if (producer instanceof ServicePoolAware || !producer.isSingleton()) {
+        AsyncProducer producer = producerCache.acquireProducer(destination);
+        if (!producer.isSingleton()) {
             // no we cannot optimize it - so release the producer back to the producer cache
             // and use the producer cache for sending
             producerCache.releaseProducer(destination, producer);
         } else {
             // yes we can optimize and use the producer directly for sending
-            this.producer = AsyncProcessorConverterHelper.convert(producer);
+            this.producer = producer;
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ServicePool.java b/camel-core/src/main/java/org/apache/camel/spi/ServicePool.java
deleted file mode 100644
index 45a7505..0000000
--- a/camel-core/src/main/java/org/apache/camel/spi/ServicePool.java
+++ /dev/null
@@ -1,87 +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;
-
-/**
- * A service pool is like a connection pool but can pool any kind of objects.
- * <p/>
- * Services that is capable of being pooled should implement the marker interface
- * {@link org.apache.camel.ServicePoolAware}.
- * <p/>
- * Notice the capacity is <b>per key</b> which means that each key can contain at most
- * (the capacity) services. The pool can contain an unbounded number of keys.
- * <p/>
- * By default the capacity is set to 100.
- *
- * @version 
- */
-@Deprecated
-public interface ServicePool<Key, Service> {
-
-    /**
-     * Sets the capacity, which is capacity <b>per key</b>.
-     *
-     * @param capacity the capacity per key
-     */
-    void setCapacity(int capacity);
-
-    /**
-     * Gets the capacity per key.
-     *
-     * @return the capacity per key
-     */
-    int getCapacity();
-
-    /**
-     * Adds the given service to the pool and acquires it.
-     *
-     * @param key     the key
-     * @param service the service
-     * @return the acquired service, is newer <tt>null</tt>
-     * @throws IllegalStateException if the queue is full (capacity has been reached)
-     */
-    Service addAndAcquire(Key key, Service service);
-
-    /**
-     * Tries to acquire the service with the given key
-     *
-     * @param key the key
-     * @return the acquired service, or <tt>null</tt> if no free in pool
-     */
-    Service acquire(Key key);
-
-    /**
-     * Releases the service back to the pool
-     *
-     * @param key     the key
-     * @param service the service
-     */
-    void release(Key key, Service service);
-
-    /**
-     * Returns the current size of the pool
-     *
-     * @return the current size of the pool
-     */
-    int size();
-
-    /**
-     * Purges the pool.
-     */
-    void purge();
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java b/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java
index 637557b..2162c05 100644
--- a/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/AsyncProcessorConverterHelper.java
@@ -21,10 +21,13 @@ import java.util.List;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.DelegateProcessor;
+import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Navigate;
 import org.apache.camel.Processor;
+import org.apache.camel.Producer;
 import org.apache.camel.Service;
 
 /**
@@ -44,7 +47,7 @@ public final class AsyncProcessorConverterHelper {
      * Creates a {@link AsyncProcessor} that delegates to the given processor.
      * It is important that this implements {@link DelegateProcessor}
      */
-    private static final class ProcessorToAsyncProcessorBridge implements DelegateProcessor, AsyncProcessor, Navigate<Processor>, Service {
+    private static class ProcessorToAsyncProcessorBridge implements DelegateProcessor, AsyncProcessor, Navigate<Processor>, Service {
         protected final Processor processor;
 
         private ProcessorToAsyncProcessorBridge(Processor processor) {
@@ -141,9 +144,36 @@ public final class AsyncProcessorConverterHelper {
         }
     }
 
+    private static class ProducerToAsyncProducerBridge extends ProcessorToAsyncProcessorBridge implements AsyncProducer {
+        ProducerToAsyncProducerBridge(Producer producer) {
+            super(producer);
+        }
+
+        protected Producer producer() {
+            return (Producer) processor;
+        }
+
+        @Override
+        public Endpoint getEndpoint() {
+            return producer().getEndpoint();
+        }
+
+        @Override
+        public boolean isSingleton() {
+            return producer().isSingleton();
+        }
+    }
+
+    public static AsyncProducer convert(Producer value) {
+        if (value instanceof AsyncProducer) {
+            return (AsyncProducer) value;
+        }
+        return new ProducerToAsyncProducerBridge(value);
+    }
+
     public static AsyncProcessor convert(Processor value) {
         if (value instanceof AsyncProcessor) {
-            return (AsyncProcessor)value;
+            return (AsyncProcessor) value;
         }
         return new ProcessorToAsyncProcessorBridge(value);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/util/FileUtil.java b/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
index ded4e63..ee224cc 100644
--- a/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
+++ b/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
@@ -24,6 +24,7 @@ import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.Iterator;
 import java.util.Locale;
+import java.util.Objects;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -82,7 +83,9 @@ public final class FileUtil {
         return windowsOs;
     }
 
-    public static File createTempFile(String prefix, String suffix, File parent) throws IOException {
+    public static File createTempFile(String prefix, String suffix, File parentDir) throws IOException {
+        Objects.requireNonNull(parentDir);
+
         if (suffix == null) {
             suffix = ".tmp";
         }
@@ -93,9 +96,9 @@ public final class FileUtil {
         }
 
         // create parent folder
-        parent.mkdirs();
+        parentDir.mkdirs();
 
-        return File.createTempFile(prefix, suffix, parent);
+        return File.createTempFile(prefix, suffix, parentDir);
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/util/LRUCache.java b/camel-core/src/main/java/org/apache/camel/util/LRUCache.java
index efc3280..4c8f1d1 100644
--- a/camel-core/src/main/java/org/apache/camel/util/LRUCache.java
+++ b/camel-core/src/main/java/org/apache/camel/util/LRUCache.java
@@ -19,8 +19,10 @@ package org.apache.camel.util;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.atomic.LongAdder;
+import java.util.function.Consumer;
 
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
@@ -51,9 +53,9 @@ public class LRUCache<K, V> implements Map<K, V>, RemovalListener<K, V>, Seriali
     protected final LongAdder evicted = new LongAdder();
 
     private int maxCacheSize = 10000;
-    private boolean stopOnEviction;
     private final Cache<K, V> cache;
     private final Map<K, V> map;
+    private final Consumer<V> evict;
 
     /**
      * Constructs an empty <tt>LRUCache</tt> instance with the
@@ -106,6 +108,23 @@ public class LRUCache<K, V> implements Map<K, V>, RemovalListener<K, V>, Seriali
      */
     public LRUCache(int initialCapacity, int maximumCacheSize, boolean stopOnEviction,
                     boolean soft, boolean weak, boolean syncListener) {
+        this(initialCapacity, maximumCacheSize, stopOnEviction ? LRUCache::doStop : LRUCache::doNothing, soft, weak, syncListener);
+    }
+
+    /**
+     * Constructs an empty <tt>LRUCache</tt> instance with the
+     * specified initial capacity, maximumCacheSize,load factor and ordering mode.
+     *
+     * @param initialCapacity  the initial capacity.
+     * @param maximumCacheSize the max capacity.
+     * @param evict            callback for evicted elements
+     * @param soft             whether to use soft values a soft cache  (default is false)
+     * @param weak             whether to use weak keys/values as a weak cache  (default is false)
+     * @param syncListener     whether to use synchronous call for the eviction listener (default is false)
+     * @throws IllegalArgumentException if the initial capacity is negative
+     */
+    public LRUCache(int initialCapacity, int maximumCacheSize, Consumer<V> evict,
+                    boolean soft, boolean weak, boolean syncListener) {
         Caffeine<K, V> caffeine = Caffeine.newBuilder()
                 .initialCapacity(initialCapacity)
                 .maximumSize(maximumCacheSize)
@@ -124,7 +143,7 @@ public class LRUCache<K, V> implements Map<K, V>, RemovalListener<K, V>, Seriali
         this.cache = caffeine.build();
         this.map = cache.asMap();
         this.maxCacheSize = maximumCacheSize;
-        this.stopOnEviction = stopOnEviction;
+        this.evict = Objects.requireNonNull(evict);
     }
 
     @Override
@@ -198,14 +217,7 @@ public class LRUCache<K, V> implements Map<K, V>, RemovalListener<K, V>, Seriali
         if (cause.wasEvicted()) {
             evicted.increment();
             LOG.trace("onRemoval {} -> {}", key, value);
-            if (stopOnEviction) {
-                try {
-                    // stop service as its evicted from cache
-                    ServiceHelper.stopService(value);
-                } catch (Exception e) {
-                    LOG.warn("Error stopping service: " + value + ". This exception will be ignored.", e);
-                }
-            }
+            evict.accept(value);
         }
     }
 
@@ -254,4 +266,16 @@ public class LRUCache<K, V> implements Map<K, V>, RemovalListener<K, V>, Seriali
     public String toString() {
         return "LRUCache@" + ObjectHelper.getIdentityHashCode(this);
     }
+
+    static <V> void doNothing(V value) {
+    }
+
+    static <V> void doStop(V value) {
+        try {
+            // stop service as its evicted from cache
+            ServiceHelper.stopService(value);
+        } catch (Exception e) {
+            LOG.warn("Error stopping service: " + value + ". This exception will be ignored.", e);
+        }
+    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/util/LRUCacheFactory.java b/camel-core/src/main/java/org/apache/camel/util/LRUCacheFactory.java
index e221bd5..028263e 100644
--- a/camel-core/src/main/java/org/apache/camel/util/LRUCacheFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/util/LRUCacheFactory.java
@@ -18,7 +18,9 @@ package org.apache.camel.util;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
 
 import org.apache.camel.util.concurrent.ThreadHelper;
 import org.slf4j.Logger;
@@ -91,6 +93,21 @@ public final class LRUCacheFactory {
 
     /**
      * Constructs an empty <tt>LRUCache</tt> instance with the
+     * specified maximumCacheSize, and will stop on eviction.
+     *
+     * @param maximumCacheSize the max capacity.
+     * @throws IllegalArgumentException if the initial capacity is negative
+     */
+    public static <K, V> Map<K, V> newLRUCache(int maximumCacheSize, Consumer<V> onEvict) {
+        LOG.trace("Creating LRUCache with maximumCacheSize: {}", maximumCacheSize);
+        if (USE_SIMPLE_CACHE) {
+            return new SimpleLRUCache<>(16, maximumCacheSize, onEvict);
+        }
+        return new LRUCache<>(16, maximumCacheSize, onEvict, false, false, false);
+    }
+
+    /**
+     * Constructs an empty <tt>LRUCache</tt> instance with the
      * specified initial capacity, maximumCacheSize, and will stop on eviction.
      *
      * @param initialCapacity  the initial capacity.
@@ -157,7 +174,7 @@ public final class LRUCacheFactory {
         static final float DEFAULT_LOAD_FACTOR = 0.75f;
 
         private final int maximumCacheSize;
-        private final boolean stopOnEviction;
+        private final Consumer<V> evict;
 
         public SimpleLRUCache(int maximumCacheSize) {
             this(16, maximumCacheSize, maximumCacheSize > 0);
@@ -168,27 +185,36 @@ public final class LRUCacheFactory {
         }
 
         public SimpleLRUCache(int initialCapacity, int maximumCacheSize, boolean stopOnEviction) {
+            this(initialCapacity, maximumCacheSize, stopOnEviction ? SimpleLRUCache::doStop : SimpleLRUCache::doNothing);
+        }
+
+        public SimpleLRUCache(int initialCapacity, int maximumCacheSize, Consumer<V> evicted) {
             super(initialCapacity, DEFAULT_LOAD_FACTOR, true);
             this.maximumCacheSize = maximumCacheSize;
-            this.stopOnEviction = stopOnEviction;
+            this.evict = Objects.requireNonNull(evicted);
         }
 
         @Override
         protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
             if (size() >= maximumCacheSize) {
-                if (stopOnEviction) {
-                    Object value = eldest.getValue();
-                    try {
-                        // stop service as its evicted from cache
-                        ServiceHelper.stopService(value);
-                    } catch (Exception e) {
-                        LOG.warn("Error stopping service: " + value + ". This exception will be ignored.", e);
-                    }
-                }
+                V value = eldest.getValue();
+                evict.accept(value);
                 return true;
             }
             return false;
         }
+
+        static <V> void doNothing(V value) {
+        }
+
+        static <V> void doStop(V value) {
+            try {
+                // stop service as its evicted from cache
+                ServiceHelper.stopService(value);
+            } catch (Exception e) {
+                LOG.warn("Error stopping service: " + value + ". This exception will be ignored.", e);
+            }
+        }
     }
 
 }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CamelContextSharedProducerServicePoolTest.java b/camel-core/src/test/java/org/apache/camel/impl/CamelContextSharedProducerServicePoolTest.java
deleted file mode 100644
index 33d1713..0000000
--- a/camel-core/src/test/java/org/apache/camel/impl/CamelContextSharedProducerServicePoolTest.java
+++ /dev/null
@@ -1,117 +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.ContextTestSupport;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Producer;
-import org.apache.camel.ServicePoolAware;
-import org.apache.camel.spi.ServicePool;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class CamelContextSharedProducerServicePoolTest extends ContextTestSupport {
-
-    private static class MyProducer extends DefaultProducer implements ServicePoolAware {
-
-        private boolean start;
-        private boolean stop;
-
-        MyProducer(Endpoint endpoint) throws Exception {
-            super(endpoint);
-            start();
-        }
-
-        public void process(Exchange exchange) throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStart() throws Exception {
-            super.doStart();
-            assertEquals("Should not be started twice", false, start);
-            start = true;
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            super.doStop();
-            assertEquals("Should not be stopped twice", false, stop);
-            stop = true;
-        }
-    }
-
-    @Test
-    public void testSharedProducerServicePool() throws Exception {
-        // the default capacity
-        assertEquals(100, context.getProducerServicePool().getCapacity());
-
-        // change it
-        context.getProducerServicePool().setCapacity(25);
-        assertEquals(25, context.getProducerServicePool().getCapacity());
-    }
-
-    @Test
-    public void testSharedProducerServicePoolHitMax() throws Exception {
-        // the default capacity
-        assertEquals(100, context.getProducerServicePool().getCapacity());
-
-        // change it
-        ServicePool<Endpoint, Producer> pool = context.getProducerServicePool();
-        pool.setCapacity(3);
-        assertEquals(3, pool.getCapacity());
-
-        Endpoint endpoint = context.getEndpoint("mock:foo");
-
-        assertNull(pool.acquire(endpoint));
-        assertEquals(0, pool.size());
-
-        Producer producer = new MyProducer(endpoint);
-        producer = pool.addAndAcquire(endpoint, producer);
-        assertEquals(0, pool.size());
-
-        Producer producer2 = new MyProducer(endpoint);
-        producer2 = pool.addAndAcquire(endpoint, producer2);
-        assertEquals(0, pool.size());
-
-        Producer producer3 = new MyProducer(endpoint);
-        producer3 = pool.addAndAcquire(endpoint, producer3);
-        assertEquals(0, pool.size());
-
-        pool.release(endpoint, producer);
-        assertEquals(1, pool.size());
-
-        pool.release(endpoint, producer2);
-        assertEquals(2, pool.size());
-
-        pool.release(endpoint, producer3);
-        assertEquals(3, pool.size());
-
-        Producer producer4 = new MyProducer(endpoint);
-        try {
-            producer4 = pool.addAndAcquire(endpoint, producer4);
-            fail("Should throw an exception");
-        } catch (IllegalStateException e) {
-            assertEquals("Queue full", e.getMessage());
-        }
-        assertEquals(3, pool.size());
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java b/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java
index 071b823..de46d52 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java
@@ -33,7 +33,7 @@ public class ConsumerCacheZeroCapacityTest extends ContextTestSupport {
 
     @Test
     public void testConsumerCacheZeroCapacity() throws Exception {
-        ConsumerCache cache = new ConsumerCache(this, context, 0);
+        ConsumerCache cache = new ConsumerCache(this, context, -1);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CustomProducerServicePoolTest.java b/camel-core/src/test/java/org/apache/camel/impl/CustomProducerServicePoolTest.java
deleted file mode 100644
index 96be022..0000000
--- a/camel-core/src/test/java/org/apache/camel/impl/CustomProducerServicePoolTest.java
+++ /dev/null
@@ -1,191 +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.Consumer;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.ServicePoolAware;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spi.ServicePool;
-import org.junit.Test;
-
-/**
- * Unit test for a custom ServicePool for producer.
- *
- * @version 
- */
-public class CustomProducerServicePoolTest extends ContextTestSupport {
-
-    private static int counter;
-
-    private static final class MyEndpoint extends DefaultEndpoint {
-
-        private MyEndpoint(String endpointUri, CamelContext camelContext) {
-            setCamelContext(camelContext);
-            setEndpointUri(endpointUri);
-        }
-
-        public Producer createProducer() throws Exception {
-            return new MyProducer(this);
-        }
-
-        public Consumer createConsumer(Processor processor) throws Exception {
-            return null;
-        }
-
-        public boolean isSingleton() {
-            return true;
-        }
-
-        @Override
-        protected String createEndpointUri() {
-            return "my";
-        }
-    }
-
-    private static final class MyProducer extends DefaultProducer implements ServicePoolAware {
-
-        MyProducer(Endpoint endpoint) {
-            super(endpoint);
-        }
-
-        public void process(Exchange exchange) throws Exception {
-            counter++;
-        }
-    }
-
-    private static class MyPool implements ServicePool<Endpoint, Producer> {
-
-        private Producer producer;
-
-        public void setCapacity(int capacity) {
-        }
-
-        public int getCapacity() {
-            return 0;
-        }
-
-        public Producer addAndAcquire(Endpoint endpoint, Producer producer) {
-            if (endpoint instanceof MyEndpoint) {
-                return producer;
-            } else {
-                return null;
-            }
-        }
-
-        public Producer acquire(Endpoint endpoint) {
-            if (endpoint instanceof MyEndpoint) {
-                Producer answer = producer;
-                producer = null;
-                return answer;
-            } else {
-                return null;
-            }
-        }
-
-        public void release(Endpoint endpoint, Producer producer) {
-            this.producer = producer;
-        }
-
-        public void start() throws Exception {
-        }
-
-        public int size() {
-            return producer != null ? 1 : 0;
-        }
-
-        public void purge() {
-            producer = null;
-        }
-    }
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    @Test
-    public void testCustomProducerServicePool() throws Exception {
-        MyPool pool = new MyPool();
-        pool.start();
-        context.setProducerServicePool(pool);
-
-        context.addEndpoint("my", new MyEndpoint("my", context));
-
-        Endpoint endpoint = context.getEndpoint("my");
-
-        assertNull(pool.acquire(endpoint));
-        assertEquals(0, pool.size());
-
-        Producer producer = new MyProducer(endpoint);
-        producer = pool.addAndAcquire(endpoint, producer);
-        assertEquals(0, pool.size());
-
-        pool.release(endpoint, producer);
-        assertEquals(1, pool.size());
-
-        producer = pool.acquire(endpoint);
-        assertNotNull(producer);
-        assertEquals(0, pool.size());
-
-        pool.release(endpoint, producer);
-        assertEquals(1, pool.size());
-
-        pool.purge();
-        assertEquals(0, pool.size());
-
-        assertIsInstanceOf(MyPool.class, context.getProducerServicePool());
-    }
-
-    @Test
-    public void testCustomProducerServicePoolInRoute() throws Exception {
-        context.addEndpoint("my", new MyEndpoint("my", context));
-
-        MyPool pool = new MyPool();
-        pool.start();
-        context.setProducerServicePool(pool);
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("my", "mock:result");
-            }
-        });
-        context.start();
-
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(2);
-
-        template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:start", "Bye World");
-
-        assertMockEndpointsSatisfied();
-
-        assertEquals(2, counter);
-        assertEquals(1, pool.size());
-
-        pool.purge();
-        assertEquals(0, pool.size());
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java
index 99f3d48..f5b38d0 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java
@@ -28,7 +28,7 @@ public class DefaultConsumerCacheTest extends ContextTestSupport {
 
     @Test
     public void testCacheConsumers() throws Exception {
-        ConsumerCache cache = new ConsumerCache(this, context);
+        ConsumerCache cache = new ConsumerCache(this, context, 0);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
@@ -36,7 +36,7 @@ public class DefaultConsumerCacheTest extends ContextTestSupport {
         // test that we cache at most 1000 consumers to avoid it eating to much memory
         for (int i = 0; i < 1003; i++) {
             Endpoint e = context.getEndpoint("direct:queue:" + i);
-            PollingConsumer p = cache.getConsumer(e);
+            PollingConsumer p = cache.acquirePollingConsumer(e);
             assertNotNull("the polling consumer should not be null", p);
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateWithCustomCacheMaxSizeTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateWithCustomCacheMaxSizeTest.java
index 992b037..a9c8d02 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateWithCustomCacheMaxSizeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateWithCustomCacheMaxSizeTest.java
@@ -64,7 +64,7 @@ public class DefaultConsumerTemplateWithCustomCacheMaxSizeTest extends ContextTe
             context.createConsumerTemplate();
             fail("Should have thrown an exception");
         } catch (Exception e) {
-            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: ABC", e.getMessage());
+            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: ABC", e.getCause().getMessage());
         }
     }
 
@@ -75,7 +75,7 @@ public class DefaultConsumerTemplateWithCustomCacheMaxSizeTest extends ContextTe
             context.createConsumerTemplate();
             fail("Should have thrown an exception");
         } catch (Exception e) {
-            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: 0", e.getMessage());
+            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: 0", e.getCause().getMessage());
         }
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
index 8bd4194..4da4ad3 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
@@ -19,6 +19,8 @@ package org.apache.camel.impl;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.camel.AsyncProducer;
+import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
@@ -36,9 +38,11 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
     private final AtomicInteger stopCounter = new AtomicInteger();
     private final AtomicInteger shutdownCounter = new AtomicInteger();
 
+    private MyComponent component;
+
     @Test
     public void testCacheProducerAcquireAndRelease() throws Exception {
-        ProducerCache cache = new ProducerCache(this, context);
+        ProducerCache cache = new ProducerCache(this, context, 0);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
@@ -46,7 +50,7 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
         // test that we cache at most 1000 producers to avoid it eating to much memory
         for (int i = 0; i < 1003; i++) {
             Endpoint e = context.getEndpoint("direct:queue:" + i);
-            Producer p = cache.acquireProducer(e);
+            AsyncProducer p = cache.acquireProducer(e);
             cache.releaseProducer(e, p);
         }
 
@@ -65,8 +69,9 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
         assertEquals("Size should be 0", 0, cache.size());
 
         for (int i = 0; i < 8; i++) {
-            Endpoint e = new MyEndpoint(true, i);
-            Producer p = cache.acquireProducer(e);
+            Endpoint e = newEndpoint(true, i);
+            e.setCamelContext(context);
+            AsyncProducer p = cache.acquireProducer(e);
             cache.releaseProducer(e, p);
         }
 
@@ -88,36 +93,6 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
     }
 
     @Test
-    public void testReleaseProducerInvokesStopAndShutdownByNonSingletonProducers() throws Exception {
-        ProducerCache cache = new ProducerCache(this, context, 1);
-        cache.start();
-
-        assertEquals("Size should be 0", 0, cache.size());
-
-        for (int i = 0; i < 3; i++) {
-            Endpoint e = new MyEndpoint(false, i);
-            Producer p = cache.acquireProducer(e);
-            cache.releaseProducer(e, p);
-        }
-
-        assertEquals("Size should be 0", 0, cache.size());
-
-        // should have stopped all 3
-        assertEquals(3, stopCounter.get());
-
-        // should have shutdown all 3
-        assertEquals(3, shutdownCounter.get());
-
-        cache.stop();
-
-        // no more stop after stopping the cache
-        assertEquals(3, stopCounter.get());
-
-        // no more shutdown after stopping the cache
-        assertEquals(3, shutdownCounter.get());
-    }
-
-    @Test
     public void testExtendedStatistics() throws Exception {
         ProducerCache cache = new ProducerCache(this, context, 5);
         cache.setExtendedStatistics(true);
@@ -129,25 +104,25 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
         // use 2 = 3 times
         // use 3..4 = 1 times
         // use 5 = 0 times
-        Endpoint e = new MyEndpoint(true, 1);
-        Producer p = cache.acquireProducer(e);
+        Endpoint e = newEndpoint(true, 1);
+        AsyncProducer p = cache.acquireProducer(e);
         cache.releaseProducer(e, p);
-        e = new MyEndpoint(true, 1);
+        e = newEndpoint(true, 1);
         p = cache.acquireProducer(e);
         cache.releaseProducer(e, p);
-        e = new MyEndpoint(true, 2);
+        e = newEndpoint(true, 2);
         p = cache.acquireProducer(e);
         cache.releaseProducer(e, p);
-        e = new MyEndpoint(true, 2);
+        e = newEndpoint(true, 2);
         p = cache.acquireProducer(e);
         cache.releaseProducer(e, p);
-        e = new MyEndpoint(true, 2);
+        e = newEndpoint(true, 2);
         p = cache.acquireProducer(e);
         cache.releaseProducer(e, p);
-        e = new MyEndpoint(true, 3);
+        e = newEndpoint(true, 3);
         p = cache.acquireProducer(e);
         cache.releaseProducer(e, p);
-        e = new MyEndpoint(true, 4);
+        e = newEndpoint(true, 4);
         p = cache.acquireProducer(e);
         cache.releaseProducer(e, p);
 
@@ -166,12 +141,33 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
         cache.stop();
     }
 
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new MyComponent(context);
+    }
+
+    protected MyEndpoint newEndpoint(boolean isSingleton, int number) {
+        return new MyEndpoint(component, isSingleton, number);
+    }
+
+    private final class MyComponent extends DefaultComponent {
+        public MyComponent(CamelContext context) {
+            super(context);
+        }
+
+        @Override
+        protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+            throw new UnsupportedOperationException();
+        }
+    }
     private final class MyEndpoint extends DefaultEndpoint {
 
         private final boolean isSingleton;
         private final int number;
 
-        private MyEndpoint(boolean isSingleton, int number) {
+        private MyEndpoint(MyComponent component, boolean isSingleton, int number) {
+            super("my://" + number, component);
             this.isSingleton = isSingleton;
             this.number = number;
         }
@@ -191,10 +187,6 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
             return isSingleton;
         }
 
-        @Override
-        public String getEndpointUri() {
-            return "my://" + number;
-        }
     }
 
     private final class MyProducer extends DefaultProducer {
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateWithCustomCacheMaxSizeTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateWithCustomCacheMaxSizeTest.java
index c7a6a57..1d22775 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateWithCustomCacheMaxSizeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateWithCustomCacheMaxSizeTest.java
@@ -64,7 +64,7 @@ public class DefaultProducerTemplateWithCustomCacheMaxSizeTest extends ContextTe
             context.createProducerTemplate();
             fail("Should have thrown an exception");
         } catch (Exception e) {
-            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: ABC", e.getMessage());
+            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: ABC", e.getCause().getMessage());
         }
     }
 
@@ -75,7 +75,7 @@ public class DefaultProducerTemplateWithCustomCacheMaxSizeTest extends ContextTe
             context.createProducerTemplate();
             fail("Should have thrown an exception");
         } catch (Exception e) {
-            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: 0", e.getMessage());
+            assertEquals("Property CamelMaximumCachePoolSize must be a positive number, was: 0", e.getCause().getMessage());
         }
     }
 }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java b/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java
index 80a3ba7..de233cd 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java
@@ -16,23 +16,23 @@
  */
 package org.apache.camel.impl;
 
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
-import org.apache.camel.Producer;
 import org.junit.Test;
 
 public class EmptyProducerCacheTest extends ContextTestSupport {
 
     @Test
     public void testEmptyCache() throws Exception {
-        ProducerCache cache = new EmptyProducerCache(this, context);
+        ProducerCache cache = new ProducerCache(this, context, -1);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
 
         // we never cache any producers
         Endpoint e = context.getEndpoint("direct:queue:1");
-        Producer p = cache.acquireProducer(e);
+        AsyncProducer p = cache.acquireProducer(e);
 
         assertEquals("Size should be 0", 0, cache.size());
 
@@ -45,7 +45,7 @@ public class EmptyProducerCacheTest extends ContextTestSupport {
 
     @Test
     public void testCacheProducerAcquireAndRelease() throws Exception {
-        ProducerCache cache = new EmptyProducerCache(this, context);
+        ProducerCache cache = new ProducerCache(this, context, -1);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
@@ -53,11 +53,11 @@ public class EmptyProducerCacheTest extends ContextTestSupport {
         // we never cache any producers
         for (int i = 0; i < 1003; i++) {
             Endpoint e = context.getEndpoint("direct:queue:" + i);
-            Producer p = cache.acquireProducer(e);
+            AsyncProducer p = cache.acquireProducer(e);
             cache.releaseProducer(e, p);
         }
 
-        assertEquals("Size should be 1000", 0, cache.size());
+        assertEquals("Size should be 0", 0, cache.size());
         cache.stop();
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java b/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java
index 8d4d01b..025995c 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.impl;
 
 import java.util.Map;
 
+import org.apache.camel.AsyncCallback;
 import org.apache.camel.Consumer;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
@@ -37,11 +38,11 @@ public class ProducerCacheNonSingletonTest extends ContextTestSupport {
     public void testNonSingleton() throws Exception {
         context.addComponent("dummy", new MyDummyComponent());
 
-        ProducerCache cache = new ProducerCache(this, context);
+        ProducerCache cache = new ProducerCache(this, context, -1);
         cache.start();
 
         Endpoint endpoint = context.getEndpoint("dummy:foo");
-        DefaultProducer producer = (DefaultProducer) cache.acquireProducer(endpoint);
+        DefaultAsyncProducer producer = (DefaultAsyncProducer) cache.acquireProducer(endpoint);
         assertNotNull(producer);
         assertTrue("Should be started", producer.getStatus().isStarted());
 
@@ -85,15 +86,15 @@ public class ProducerCacheNonSingletonTest extends ContextTestSupport {
         }
     }
 
-    private class MyDummyProducer extends DefaultProducer {
+    private class MyDummyProducer extends DefaultAsyncProducer {
 
         public MyDummyProducer(Endpoint endpoint) {
             super(endpoint);
         }
 
         @Override
-        public void process(Exchange exchange) throws Exception {
-            // noop
+        public boolean process(Exchange exchange, AsyncCallback callback) {
+            return false;
         }
     }
 }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/ServicePoolTest.java b/camel-core/src/test/java/org/apache/camel/impl/ServicePoolTest.java
deleted file mode 100644
index 9f58023..0000000
--- a/camel-core/src/test/java/org/apache/camel/impl/ServicePoolTest.java
+++ /dev/null
@@ -1,261 +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.ArrayList;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Producer;
-import org.apache.camel.ServicePoolAware;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class ServicePoolTest extends ContextTestSupport {
-
-    private static boolean cleanup;
-    private DefaultProducerServicePool pool;
-
-    private static class MyProducer extends DefaultProducer implements ServicePoolAware {
-
-        private boolean start;
-        private boolean stop;
-
-        MyProducer(Endpoint endpoint) throws Exception {
-            super(endpoint);
-            start();
-        }
-
-        public void process(Exchange exchange) throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStart() throws Exception {
-            super.doStart();
-            assertEquals("Should not be started twice", false, start);
-            start = true;
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            super.doStop();
-            assertEquals("Should not be stopped twice", false, stop);
-            stop = true;
-            cleanup = true;
-        }
-    }
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        pool = new DefaultProducerServicePool(5);
-        pool.start();
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        pool.stop();
-        super.tearDown();
-        assertEquals("Should have stopped the producers", true, cleanup);
-    }
-
-    @Test
-    public void testSingleEntry() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mock:foo");
-
-        assertNull(pool.acquire(endpoint));
-        assertEquals(0, pool.size());
-
-        Producer producer = new MyProducer(endpoint);
-        producer = pool.addAndAcquire(endpoint, producer);
-        assertEquals(0, pool.size());
-
-        pool.release(endpoint, producer);
-        assertEquals(1, pool.size());
-
-        producer = pool.acquire(endpoint);
-        assertNotNull(producer);
-        assertEquals(0, pool.size());
-
-        pool.release(endpoint, producer);
-        assertEquals(1, pool.size());
-    }
-
-    @Test
-    public void testTwoEntries() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mock:foo");
-
-        Producer producer1 = new MyProducer(endpoint);
-        Producer producer2 = new MyProducer(endpoint);
-
-        producer1 = pool.addAndAcquire(endpoint, producer1);
-        producer2 = pool.addAndAcquire(endpoint, producer2);
-
-        assertEquals(0, pool.size());
-        pool.release(endpoint, producer1);
-        assertEquals(1, pool.size());
-        pool.release(endpoint, producer2);
-        assertEquals(2, pool.size());
-    }
-
-    @Test
-    public void testThreeEntries() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mock:foo");
-
-        Producer producer1 = new MyProducer(endpoint);
-        Producer producer2 = new MyProducer(endpoint);
-        Producer producer3 = new MyProducer(endpoint);
-
-        producer1 = pool.addAndAcquire(endpoint, producer1);
-        producer2 = pool.addAndAcquire(endpoint, producer2);
-        producer3 = pool.addAndAcquire(endpoint, producer3);
-
-        assertEquals(0, pool.size());
-        pool.release(endpoint, producer1);
-        assertEquals(1, pool.size());
-        pool.release(endpoint, producer2);
-        assertEquals(2, pool.size());
-        pool.release(endpoint, producer3);
-        assertEquals(3, pool.size());
-    }
-
-    @Test
-    public void testAcquireAddRelease() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mock:foo");
-        for (int i = 0; i < 10; i++) {
-            Producer producer = pool.acquire(endpoint);
-            if (producer == null) {
-                producer = pool.addAndAcquire(endpoint, new MyProducer(endpoint));
-            }
-            assertNotNull(producer);
-            pool.release(endpoint, producer);
-        }
-    }
-
-    @Test
-    public void testAcquireAdd() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mock:foo");
-        List<Producer> producers = new ArrayList<>();
-
-        for (int i = 0; i < 5; i++) {
-            Producer producer = pool.acquire(endpoint);
-            if (producer == null) {
-                producer = pool.addAndAcquire(endpoint, new MyProducer(endpoint));
-            }
-            assertNotNull(producer);
-            producers.add(producer);
-        }
-
-        // release afterwards
-        for (Producer producer : producers) {
-            pool.release(endpoint, producer);
-        }
-    }
-
-    @Test
-    public void testAcquireAddQueueFull() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mock:foo");
-
-        for (int i = 0; i < 5; i++) {
-            Producer producer = pool.addAndAcquire(endpoint, new MyProducer(endpoint));
-            pool.release(endpoint, producer);
-        }
-
-        // when adding a 6 we get a queue full
-        try {
-            pool.addAndAcquire(endpoint, new MyProducer(endpoint));
-            fail("Should have thrown an exception");
-        } catch (IllegalStateException e) {
-            assertEquals("Queue full", e.getMessage());
-        }
-
-        assertEquals(5, pool.size());
-    }
-
-    @Test
-    public void testConcurrent() throws Exception {
-        final Endpoint endpoint = context.getEndpoint("mock:foo");
-
-        ExecutorService executor = Executors.newFixedThreadPool(5);
-        List<Future<Integer>> response = new ArrayList<>();
-        for (int i = 0; i < 5; i++) {
-            final int index = i;
-            Future<Integer> out = executor.submit(new Callable<Integer>() {
-                public Integer call() throws Exception {
-                    Producer producer = pool.acquire(endpoint);
-                    if (producer == null) {
-                        producer = pool.addAndAcquire(endpoint, new MyProducer(endpoint));
-                    }
-                    assertNotNull(producer);
-                    pool.release(endpoint, producer);
-                    return index;
-                }
-            });
-
-            response.add(out);
-        }
-
-        for (int i = 0; i < 5; i++) {
-            assertEquals(i, response.get(i).get().intValue());
-        }
-        executor.shutdownNow();
-    }
-
-    @Test
-    public void testConcurrentStress() throws Exception {
-        final Endpoint endpoint = context.getEndpoint("mock:foo");
-
-        ExecutorService executor = Executors.newFixedThreadPool(5);
-        List<Future<Integer>> response = new ArrayList<>();
-        for (int i = 0; i < 5; i++) {
-            final int index = i;
-            Future<Integer> out = executor.submit(new Callable<Integer>() {
-                public Integer call() throws Exception {
-                    for (int j = 0; j < 100; j++) {
-                        Producer producer = pool.acquire(endpoint);
-                        if (producer == null) {
-                            producer = pool.addAndAcquire(endpoint, new MyProducer(endpoint));
-                        }
-                        assertNotNull(producer);
-                        pool.release(endpoint, producer);
-                    }
-                    return index;
-                }
-            });
-
-            response.add(out);
-        }
-
-        for (int i = 0; i < 5; i++) {
-            assertEquals(i, response.get(i).get().intValue());
-        }
-        executor.shutdownNow();
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/issues/ServicePoolAwareLeakyTest.java b/camel-core/src/test/java/org/apache/camel/issues/ServicePoolAwareLeakyTest.java
deleted file mode 100644
index 8971b4b..0000000
--- a/camel-core/src/test/java/org/apache/camel/issues/ServicePoolAwareLeakyTest.java
+++ /dev/null
@@ -1,244 +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.issues;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Consumer;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.Route;
-import org.apache.camel.Service;
-import org.apache.camel.ServicePoolAware;
-import org.apache.camel.ServiceStatus;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultProducer;
-import org.apache.camel.support.LifecycleStrategySupport;
-import org.apache.camel.support.ServiceSupport;
-import org.junit.Test;
-
-public class ServicePoolAwareLeakyTest extends ContextTestSupport {
-
-    private static final String LEAKY_SIEVE_STABLE = "leaky://sieve-stable";
-    private static final String LEAKY_SIEVE_TRANSIENT = "leaky://sieve-transient";
-
-    /**
-     * Component that provides leaks producers.
-     */
-    private static class LeakySieveComponent extends DefaultComponent {
-        @Override
-        protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-            return new LeakySieveEndpoint(uri);
-        }
-    }
-
-    /**
-     * Endpoint that provides leaky producers.
-     */
-    private static class LeakySieveEndpoint extends DefaultEndpoint {
-
-        private final String uri;
-
-        LeakySieveEndpoint(String uri) {
-            this.uri = uri;
-        }
-
-        @Override
-        public Producer createProducer() throws Exception {
-            return new LeakySieveProducer(this);
-        }
-
-        @Override
-        public Consumer createConsumer(Processor processor) throws Exception {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public boolean isSingleton() {
-            return true;
-        }
-
-        @Override
-        protected String createEndpointUri() {
-            return uri;
-        }
-    }
-
-    /**
-     * Leaky producer - implements {@link ServicePoolAware}.
-     */
-    private static class LeakySieveProducer extends DefaultProducer implements ServicePoolAware {
-
-        LeakySieveProducer(Endpoint endpoint) {
-            super(endpoint);
-        }
-
-        @Override
-        public void process(Exchange exchange) throws Exception {
-            // do nothing
-        }
-
-    }
-
-    @Override
-    protected boolean useJmx() {
-        // only occurs when using JMX as the GC root for the producer is through a ManagedProducer created by the
-        // context.addService() invocation
-        return true;
-    }
-
-    /**
-     * Returns true if verification of state should be performed during the test as opposed to at the end.
-     */
-    public boolean isFailFast() {
-        return false;
-    }
-
-    /**
-     * Returns true if during fast failure we should verify that the service pool remains in the started state.
-     */
-    public boolean isVerifyProducerServicePoolRemainsStarted() {
-        return false;
-    }
-
-    @Test
-    public void testForMemoryLeak() throws Exception {
-        registerLeakyComponent();
-
-        final Map<String, AtomicLong> references = new HashMap<>();
-
-        // track LeakySieveProducer lifecycle
-        context.addLifecycleStrategy(new LifecycleStrategySupport() {
-            @Override
-            public void onServiceAdd(CamelContext context, Service service, Route route) {
-                if (service instanceof LeakySieveProducer) {
-                    String key = ((LeakySieveProducer) service).getEndpoint().getEndpointKey();
-                    AtomicLong num = references.get(key);
-                    if (num == null) {
-                        num = new AtomicLong();
-                        references.put(key, num);
-                    }
-                    num.incrementAndGet();
-                }
-            }
-
-            @Override
-            public void onServiceRemove(CamelContext context, Service service, Route route) {
-                if (service instanceof LeakySieveProducer) {
-                    String key = ((LeakySieveProducer) service).getEndpoint().getEndpointKey();
-                    AtomicLong num = references.get(key);
-                    if (num == null) {
-                        num = new AtomicLong();
-                        references.put(key, num);
-                    }
-                    num.decrementAndGet();
-                }
-            }
-        });
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:sieve-transient")
-                        .id("sieve-transient")
-                        .to(LEAKY_SIEVE_TRANSIENT);
-
-                from("direct:sieve-stable")
-                        .id("sieve-stable")
-                        .to(LEAKY_SIEVE_STABLE);
-            }
-        });
-
-        context.start();
-
-        for (int i = 0; i < 1000; i++) {
-            ServiceSupport service = (ServiceSupport) context.getProducerServicePool();
-            assertEquals(ServiceStatus.Started, service.getStatus());
-            if (isFailFast()) {
-                assertEquals(2, context.getProducerServicePool().size());
-                assertEquals(1, references.get(LEAKY_SIEVE_TRANSIENT).get());
-                assertEquals(1, references.get(LEAKY_SIEVE_STABLE).get());
-            }
-
-            context.getRouteController().stopRoute("sieve-transient");
-
-            if (isFailFast()) {
-                assertEquals("Expected no service references to remain", 0, references.get(LEAKY_SIEVE_TRANSIENT));
-            }
-
-            if (isFailFast()) {
-                // looks like we cleared more than just our route, we've stopped and cleared the global ProducerServicePool
-                // since SendProcessor.stop() invokes ServiceHelper.stopServices(producerCache, producer); which in turn invokes
-                // ServiceHelper.stopAndShutdownService(pool);.
-                //
-                // Whilst stop on the SharedProducerServicePool is a NOOP shutdown is not and effects a stop of the pool.
-
-                if (isVerifyProducerServicePoolRemainsStarted()) {
-                    assertEquals(ServiceStatus.Started, service.getStatus());
-                }
-                assertEquals("Expected one stable producer to remain pooled", 1, context.getProducerServicePool().size());
-                assertEquals("Expected one stable producer to remain as service", 1, references.get(LEAKY_SIEVE_STABLE).get());
-            }
-
-            // Send a body to verify behaviour of send producer after another route has been stopped
-            sendBody("direct:sieve-stable", "");
-
-            if (isFailFast()) {
-                // shared pool is used despite being 'Stopped'
-                if (isVerifyProducerServicePoolRemainsStarted()) {
-                    assertEquals(ServiceStatus.Started, service.getStatus());
-                }
-
-                assertEquals("Expected only stable producer in pool", 1, context.getProducerServicePool().size());
-                assertEquals("Expected no references to transient producer", 0, references.get(LEAKY_SIEVE_TRANSIENT).get());
-                assertEquals("Expected reference to stable producer", 1, references.get(LEAKY_SIEVE_STABLE).get());
-            }
-
-            context.getRouteController().startRoute("sieve-transient");
-
-            // ok, back to normal
-            assertEquals(ServiceStatus.Started, service.getStatus());
-            if (isFailFast()) {
-                assertEquals("Expected both producers in pool", 2, context.getProducerServicePool().size());
-                assertEquals("Expected one transient producer as service", 1, references.get(LEAKY_SIEVE_TRANSIENT).get());
-                assertEquals("Expected one stable producer as service", 1, references.get(LEAKY_SIEVE_STABLE).get());
-            }
-        }
-
-        if (!isFailFast()) {
-            assertEquals("Expected both producers in pool", 2, context.getProducerServicePool().size());
-
-            // if not fixed these will equal the number of iterations in the loop + 1
-            assertEquals("Expected one transient producer as service", 1, references.get(LEAKY_SIEVE_TRANSIENT).get());
-            assertEquals("Expected one stable producer as service", 1, references.get(LEAKY_SIEVE_STABLE).get());
-        }
-    }
-
-    private void registerLeakyComponent() {
-        // register leaky component
-        context.addComponent("leaky", new LeakySieveComponent());
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
index 776a7d3..914404b 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
@@ -43,12 +43,12 @@ public class ManagedConsumerCacheHitsTest extends ManagementTestSupport {
         // always register services in JMX so we can enlist our consumer template/cache
         context.getManagementStrategy().getManagementAgent().setRegisterAlways(true);
 
-        ConsumerCache cache = new ConsumerCache(this, context);
+        ConsumerCache cache = new ConsumerCache(this, context, 0);
         context.addService(cache);
 
         template.sendBody("seda:a", "Hello World");
 
-        Exchange out = cache.getConsumer(context.getEndpoint("seda:a")).receive(3000);
+        Exchange out = cache.acquirePollingConsumer(context.getEndpoint("seda:a")).receive(3000);
         assertNotNull("Should got an exchange", out);
         assertEquals("Hello World", out.getIn().getBody());
 
@@ -84,9 +84,9 @@ public class ManagedConsumerCacheHitsTest extends ManagementTestSupport {
 
         template.sendBody("seda:b", "Hello World");
         template.sendBody("seda:c", "Hello World");
-        out = cache.getConsumer(context.getEndpoint("seda:b")).receive(3000);
+        out = cache.acquirePollingConsumer(context.getEndpoint("seda:b")).receive(3000);
         assertNotNull(out);
-        out = cache.getConsumer(context.getEndpoint("seda:c")).receive(3000);
+        out = cache.acquirePollingConsumer(context.getEndpoint("seda:c")).receive(3000);
         assertNotNull(out);
 
         // we have only consumed from 3 different endpoints so all is misses
@@ -101,9 +101,9 @@ public class ManagedConsumerCacheHitsTest extends ManagementTestSupport {
 
         template.sendBody("seda:a", "Bye World");
         template.sendBody("seda:b", "Bye World");
-        out = cache.getConsumer(context.getEndpoint("seda:a")).receive(3000);
+        out = cache.acquirePollingConsumer(context.getEndpoint("seda:a")).receive(3000);
         assertNotNull(out);
-        out = cache.getConsumer(context.getEndpoint("seda:b")).receive(3000);
+        out = cache.acquirePollingConsumer(context.getEndpoint("seda:b")).receive(3000);
         assertNotNull(out);
 
         // we should have hits now
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
index 7d88cbe..b1fb0e6 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
@@ -45,13 +45,13 @@ public class ManagedConsumerCacheTest extends ManagementTestSupport {
         // always register services in JMX so we can enlist our consumer template/cache
         context.getManagementStrategy().getManagementAgent().setRegisterAlways(true);
 
-        ConsumerCache cache = new ConsumerCache(this, context);
+        ConsumerCache cache = new ConsumerCache(this, context, 0);
         context.addService(cache);
 
         template.sendBody("direct:start", "Hello World");
 
         Endpoint endpoint = context.getEndpoint("seda:queue");
-        PollingConsumer consumer = cache.getConsumer(endpoint);
+        PollingConsumer consumer = cache.acquirePollingConsumer(endpoint);
         Exchange out = consumer.receive(3000);
         assertNotNull("Should got an exchange", out);
         assertEquals("Hello World", out.getIn().getBody());
diff --git a/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointServicePoolProducerTest.java b/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointServicePoolProducerTest.java
deleted file mode 100644
index b8eb748..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointServicePoolProducerTest.java
+++ /dev/null
@@ -1,121 +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.processor.intercept;
-
-import java.util.Map;
-
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.ServicePoolAware;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultProducer;
-import org.junit.Test;
-
-public class InterceptSendToEndpointServicePoolProducerTest extends ContextTestSupport {
-
-    private MyProducer myProducer;
-
-    @Test
-    public void testInterceptSendToEndpointServicePoolProducer() throws Exception {
-        assertNotNull(myProducer);
-
-        getMockEndpoint("mock:result").expectedMessageCount(2);
-        getMockEndpoint("mock:hello").expectedMessageCount(2);
-
-        template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:start", "Bye World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                context.addComponent("mycomp", new MyComponent());
-
-                interceptSendToEndpoint("mycomp:*").to("mock:hello");
-
-                from("direct:start")
-                    .to("mycomp:hello")
-                    .to("mock:result");
-            }
-        };
-    }
-
-    public class MyComponent extends DefaultComponent {
-
-        @Override
-        protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-            return new MyEndpoint(uri, this);
-        }
-    }
-
-    public class MyEndpoint extends DefaultEndpoint {
-
-        public MyEndpoint(String endpointUri, Component component) {
-            super(endpointUri, component);
-        }
-
-        @Override
-        public Producer createProducer() throws Exception {
-            if (myProducer != null) {
-                throw new IllegalStateException("The producer should only be created once and pooled");
-            }
-            myProducer = new MyProducer(this);
-            return myProducer;
-        }
-
-        @Override
-        public Consumer createConsumer(Processor processor) throws Exception {
-            return null;
-        }
-
-        @Override
-        public boolean isSingleton() {
-            return true;
-        }
-    }
-
-    public class MyProducer extends DefaultProducer implements ServicePoolAware {
-
-        public MyProducer(Endpoint endpoint) {
-            super(endpoint);
-        }
-
-        @Override
-        public void process(Exchange exchange) throws Exception {
-            if (!isStarted()) {
-                throw new IllegalArgumentException("Should be started");
-            }
-        }
-
-        @Override
-        public boolean isSingleton() {
-            return false;
-        }
-    }
-
-}
diff --git a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java
index 2762f02..58d0bbf 100644
--- a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java
+++ b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java
@@ -22,11 +22,10 @@ import org.apache.avro.ipc.Transceiver;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.commons.lang.StringUtils;
 
-public abstract class AvroProducer extends DefaultAsyncProducer implements ServicePoolAware {
+public abstract class AvroProducer extends DefaultAsyncProducer {
 
     Transceiver transceiver;
     Requestor requestor;
@@ -35,34 +34,23 @@ public abstract class AvroProducer extends DefaultAsyncProducer implements Servi
         super(endpoint);
     }
 
+    @Override
+    public boolean isSingleton() {
+        return false;
+    }
+
     public abstract Transceiver createTransceiver() throws Exception;
 
     @Override
     public boolean process(final Exchange exchange, final AsyncCallback callback) {
         Object request = exchange.getIn().getBody();
 
-        AvroConfiguration configuration = getEndpoint().getConfiguration();
-        if (transceiver == null) {
-            try {
-                transceiver = createTransceiver();
-                if (configuration.isReflectionProtocol()) {
-                    requestor = new AvroReflectRequestor(configuration.getProtocol(), transceiver);
-                } else {
-                    requestor = new AvroSpecificRequestor(configuration.getProtocol(), transceiver);
-                }
-            } catch (Exception e) {
-                exchange.setException(e);
-                callback.done(true);
-                return true;
-            }
-        }
-
         try {
             String messageName;
             if (!StringUtils.isEmpty(exchange.getIn().getHeader(AvroConstants.AVRO_MESSAGE_NAME, String.class))) {
                 messageName = exchange.getIn().getHeader(AvroConstants.AVRO_MESSAGE_NAME, String.class);
             } else {
-                messageName = configuration.getMessageName();
+                messageName = getEndpoint().getConfiguration().getMessageName();
             }
 
             requestor.request(messageName, wrapObjectToArray(request), new Callback<Object>() {
@@ -111,16 +99,23 @@ public abstract class AvroProducer extends DefaultAsyncProducer implements Servi
     @Override
     protected void doStart() throws Exception {
         super.doStart();
+        transceiver = createTransceiver();
+        AvroConfiguration configuration = getEndpoint().getConfiguration();
+        if (configuration.isReflectionProtocol()) {
+            requestor = new AvroReflectRequestor(configuration.getProtocol(), transceiver);
+        } else {
+            requestor = new AvroSpecificRequestor(configuration.getProtocol(), transceiver);
+        }
     }
 
     @Override
     protected void doStop() throws Exception {
-        super.doStop();
         if (transceiver != null) {
             transceiver.close();
             transceiver = null;
         }
         requestor = null;
+        super.doStop();
     }
 
     @Override
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageHeaderTimeoutTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageHeaderTimeoutTest.java
index 7de0525..ac65d9d 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageHeaderTimeoutTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageHeaderTimeoutTest.java
@@ -61,7 +61,8 @@ public class CxfMessageHeaderTimeoutTest extends CamelSpringTestSupport {
         Exchange reply = sendJaxWsMessage(endpointUri);
         Exception e = reply.getException();
         assertNotNull("We should get the exception cause here", e);
-        assertTrue("We should get the socket time out exception here", e instanceof SocketTimeoutException);
+        assertNotNull("We should get the exception cause here", e.getCause());
+        assertTrue("We should get the socket time out exception here", e.getCause() instanceof SocketTimeoutException);
     }
 
     protected Exchange sendJaxWsMessage(String endpointUri) throws InterruptedException {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java
index 20c509a..2217159 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java
@@ -95,7 +95,8 @@ public class CxfTimeoutTest extends CamelSpringTestSupport {
         Exchange reply = sendJaxWsMessage(endpointUri);
         Exception e = reply.getException();
         assertNotNull("We should get the exception cause here", e);
-        assertTrue("We should get the socket time out exception here", e instanceof SocketTimeoutException);
+        assertNotNull("We should get the exception cause here", e.getCause());
+        assertTrue("We should get the socket time out exception here", e.getCause() instanceof SocketTimeoutException);
     }
 
     protected Exchange sendJaxWsMessage(String endpointUri) throws InterruptedException {
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
index 38ccdd1..0ceab29 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.file.remote;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.component.file.GenericFileOperationFailedException;
 import org.apache.camel.component.file.GenericFileProducer;
 import org.apache.camel.util.URISupport;
@@ -25,7 +24,7 @@ import org.apache.camel.util.URISupport;
 /**
  * Generic remote file producer for all the FTP variations.
  */
-public class RemoteFileProducer<T> extends GenericFileProducer<T> implements ServicePoolAware {
+public class RemoteFileProducer<T> extends GenericFileProducer<T> {
 
     private boolean loggedIn;
     
diff --git a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java
index b05d048..80c4848 100644
--- a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java
+++ b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraProducer.java
@@ -18,9 +18,7 @@ package org.apache.camel.component.gora;
 
 import java.util.Map;
 
-import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.gora.persistency.Persistent;
 import org.apache.gora.store.DataStore;
@@ -34,7 +32,7 @@ import static org.apache.camel.component.gora.utils.GoraUtils.getValueFromExchan
 /**
  * Camel-Gora {@link DefaultProducer}.
  */
-public class GoraProducer extends DefaultProducer implements ServicePoolAware {
+public class GoraProducer extends DefaultProducer {
 
     /**
      * logger
@@ -58,7 +56,7 @@ public class GoraProducer extends DefaultProducer implements ServicePoolAware {
      * @param configuration Reference to Camel-Gora endpoint configuration
      * @param dataStore     Reference to the datastore
      */
-    public GoraProducer(final Endpoint endpoint,
+    public GoraProducer(final GoraEndpoint endpoint,
                         final GoraConfiguration configuration,
                         final DataStore<Object, Persistent> dataStore) {
 
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java
index a542306..ff281b9 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java
@@ -17,16 +17,11 @@
 package org.apache.camel.component.grpc.client;
 
 import io.grpc.stub.StreamObserver;
-import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.AsyncProducerCallback;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Producer;
 import org.apache.camel.component.grpc.GrpcConfiguration;
 import org.apache.camel.component.grpc.GrpcConstants;
-import org.apache.camel.impl.EmptyProducerCache;
 import org.apache.camel.impl.ProducerCache;
 import org.apache.camel.util.CamelContextHelper;
 
@@ -44,7 +39,8 @@ public class GrpcResponseRouterStreamObserver implements StreamObserver<Object>
         this.configuration = configuration;
         this.sourceEndpoint = sourceEndpoint;
         this.endpoint = CamelContextHelper.getMandatoryEndpoint(sourceEndpoint.getCamelContext(), configuration.getStreamRepliesTo());
-        this.producerCache = new EmptyProducerCache(this, sourceEndpoint.getCamelContext());
+        sourceEndpoint.getCamelContext().createProducerTemplate(-1);
+        this.producerCache = new ProducerCache(this, sourceEndpoint.getCamelContext(), -1);
     }
 
     @Override
@@ -52,8 +48,7 @@ public class GrpcResponseRouterStreamObserver implements StreamObserver<Object>
         Exchange exchange = sourceEndpoint.createExchange();
         exchange.getIn().setHeader(GrpcConstants.GRPC_EVENT_TYPE_HEADER, GrpcConstants.GRPC_EVENT_TYPE_ON_NEXT);
         exchange.getIn().setBody(o);
-        doSend(exchange, done -> {
-        });
+        doSend(exchange);
 
     }
 
@@ -63,8 +58,7 @@ public class GrpcResponseRouterStreamObserver implements StreamObserver<Object>
             Exchange exchange = sourceEndpoint.createExchange();
             exchange.getIn().setHeader(GrpcConstants.GRPC_EVENT_TYPE_HEADER, GrpcConstants.GRPC_EVENT_TYPE_ON_ERROR);
             exchange.getIn().setBody(throwable);
-            doSend(exchange, done -> {
-            });
+            doSend(exchange);
         }
     }
 
@@ -73,19 +67,14 @@ public class GrpcResponseRouterStreamObserver implements StreamObserver<Object>
         if (configuration.isForwardOnCompleted()) {
             Exchange exchange = sourceEndpoint.createExchange();
             exchange.getIn().setHeader(GrpcConstants.GRPC_EVENT_TYPE_HEADER, GrpcConstants.GRPC_EVENT_TYPE_ON_COMPLETED);
-            doSend(exchange, done -> {
-            });
+            doSend(exchange);
         }
     }
 
 
-    private void doSend(Exchange ex, AsyncCallback callback) {
-        producerCache.doInAsyncProducer(endpoint, ex, ExchangePattern.InOnly, callback, new AsyncProducerCallback() {
-            @Override
-            public boolean doInAsyncProducer(Producer producer, AsyncProcessor asyncProducer, Exchange exchange2, ExchangePattern exchangePattern, AsyncCallback callback2) {
-                return asyncProducer.process(exchange2, callback2);
-            }
-        });
+    private void doSend(Exchange exchange) {
+
+        producerCache.doInAsyncProducer(endpoint, exchange, doneSync -> { }, AsyncProcessor::process);
     }
 
 }
diff --git a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
index 0c6cd5b..e3f93d5 100644
--- a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
+++ b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
@@ -21,7 +21,6 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.component.hbase.filters.ModelAwareFilter;
 import org.apache.camel.component.hbase.mapping.CellMappingStrategy;
 import org.apache.camel.component.hbase.mapping.CellMappingStrategyFactory;
@@ -46,7 +45,7 @@ import org.apache.hadoop.hbase.util.Bytes;
 /**
  * The HBase producer.
  */
-public class HBaseProducer extends DefaultProducer implements ServicePoolAware {
+public class HBaseProducer extends DefaultProducer {
 
     private HBaseEndpoint endpoint;
     private HBaseRow rowModel;
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpPollingConsumer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpPollingConsumer.java
index 2b372c0..37fe374 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpPollingConsumer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpPollingConsumer.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.http.common.HttpHelper;
 import org.apache.camel.impl.PollingConsumerSupport;
 import org.apache.camel.spi.HeaderFilterStrategy;
@@ -42,7 +41,7 @@ import org.apache.http.util.EntityUtils;
  *
  * @version 
  */
-public class HttpPollingConsumer extends PollingConsumerSupport implements ServicePoolAware {
+public class HttpPollingConsumer extends PollingConsumerSupport {
     private final HttpEndpoint endpoint;
     private HttpClient httpClient;
     private HttpContext httpContext;
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
index c33082e..05fb265 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
@@ -291,7 +291,7 @@ public class JmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
 
     @Override
     public PollingConsumer createPollingConsumer() throws Exception {
-        JmsPollingConsumer answer = new JmsPollingConsumer(this);
+        JmsPollingConsumer answer = new JmsPollingConsumer(this, createInOnlyTemplate());
         configurePollingConsumer(answer);
         return answer;
     }
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java
index ab37141..46bf82d 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.jms;
 import javax.jms.Message;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.impl.PollingConsumerSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.springframework.jms.core.JmsOperations;
@@ -29,7 +28,7 @@ import org.springframework.jms.support.destination.JmsDestinationAccessor;
 /**
  *  A JMS {@link org.apache.camel.PollingConsumer}.
  */
-public class JmsPollingConsumer extends PollingConsumerSupport implements ServicePoolAware {
+public class JmsPollingConsumer extends PollingConsumerSupport {
     private JmsOperations template;
     private JmsEndpoint jmsEndpoint;
 
@@ -38,10 +37,6 @@ public class JmsPollingConsumer extends PollingConsumerSupport implements Servic
         this.jmsEndpoint = endpoint;
         this.template = template;
     }
-    
-    public JmsPollingConsumer(JmsEndpoint endpoint) {
-        this(endpoint, endpoint.createInOnlyTemplate());
-    }
 
     @Override
     public JmsEndpoint getEndpoint() {
diff --git a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
index a0e1b32..ca8bd36 100644
--- a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
+++ b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
@@ -28,8 +28,6 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeTimedOutException;
-import org.apache.camel.ServicePoolAware;
-import org.apache.camel.converter.IOConverter;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ExchangeHelper;
@@ -64,7 +62,7 @@ import org.slf4j.LoggerFactory;
  *
  * @version
  */
-public class Mina2Producer extends DefaultProducer implements ServicePoolAware {
+public class Mina2Producer extends DefaultProducer {
 
     private static final Logger LOG = LoggerFactory.getLogger(Mina2Producer.class);
     private final ResponseHandler handler;
@@ -112,7 +110,7 @@ public class Mina2Producer extends DefaultProducer implements ServicePoolAware {
     public boolean isSingleton() {
         // the producer should not be singleton otherwise cannot use concurrent producers and safely
         // use request/reply with correct correlation
-        return false;
+        return !sync;
     }
 
     @Override
@@ -125,7 +123,6 @@ public class Mina2Producer extends DefaultProducer implements ServicePoolAware {
         }
     }
 
-    @SuppressWarnings("deprecation")
     protected void doProcess(Exchange exchange) throws Exception {
         if (session == null && !lazySessionCreation) {
             throw new IllegalStateException("Not started yet!");
diff --git a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java
index 6b09a42..a404c91 100644
--- a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java
+++ b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java
@@ -54,7 +54,7 @@ public class SipEndpoint extends DefaultEndpoint {
     }
     
     public boolean isSingleton() {
-        return false;
+        return true;
     }
 
     public SipConfiguration getConfiguration() {
diff --git a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipPublisher.java b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipPublisher.java
index 65746af..4615e47 100644
--- a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipPublisher.java
+++ b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipPublisher.java
@@ -25,11 +25,10 @@ import javax.sip.message.Request;
 
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
-import org.apache.camel.ServicePoolAware;
 import org.apache.camel.component.sip.listener.SipPublishListener;
 import org.apache.camel.impl.DefaultProducer;
 
-public class SipPublisher extends DefaultProducer implements ServicePoolAware {
+public class SipPublisher extends DefaultProducer {
     private SipConfiguration configuration;
     private long sequenceNumber = 1;
     private SipPublishListener sipPublishListener;
diff --git a/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java b/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java
index f0f9fbf..5d53b7e 100644
--- a/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java
+++ b/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java
@@ -26,9 +26,10 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.DefaultProducerTemplate;
 import org.jivesoftware.smack.packet.Message;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -41,10 +42,10 @@ public class XmppRouteTest extends TestCase {
     protected static String xmppUrl;
     private static final Logger LOG = LoggerFactory.getLogger(XmppRouteTest.class);
     protected Exchange receivedExchange;
-    protected CamelContext container = new DefaultCamelContext();
+    protected CamelContext context = new DefaultCamelContext();
     protected CountDownLatch latch = new CountDownLatch(1);
     protected Endpoint endpoint;
-    protected ProducerCache client;
+    protected ProducerTemplate client;
     private EmbeddedXmppTestServer embeddedXmppTestServer;
 
     public static void main(String[] args) {
@@ -91,9 +92,9 @@ public class XmppRouteTest extends TestCase {
         return body;
     }
 
-    @Override
-    protected void setUp() throws Exception {
-        client = new ProducerCache(this, container, 10);
+   @Override
+   protected void setUp() throws Exception {
+        client = new DefaultProducerTemplate(context);
 
         String uriPrefix = getUriPrefix();
         final String uri1 = uriPrefix + "&resource=camel-test-from&nickname=came-test-from";
@@ -101,11 +102,11 @@ public class XmppRouteTest extends TestCase {
         final String uri3 = uriPrefix + "&resource=camel-test-from-processor&nickname=came-test-from-processor";
         LOG.info("Using URI " + uri1 + " and " + uri2);
 
-        endpoint = container.getEndpoint(uri1);
+        endpoint = context.getEndpoint(uri1);
         assertNotNull("No endpoint found!", endpoint);
 
         // lets add some routes
-        container.addRoutes(new RouteBuilder() {
+        context.addRoutes(new RouteBuilder() {
             public void configure() {
                 from(uri1).to(uri2);
                 from(uri3).process(new Processor() {
@@ -118,7 +119,7 @@ public class XmppRouteTest extends TestCase {
             }
         });
 
-        container.start();
+        context.start();
         embeddedXmppTestServer = new EmbeddedXmppTestServer();
     }
 
@@ -129,7 +130,7 @@ public class XmppRouteTest extends TestCase {
     @Override
     protected void tearDown() throws Exception {
         client.stop();
-        container.stop();
+        context.stop();
         embeddedXmppTestServer.stop();
     }
 }


[camel] 07/44: [CAMEL-12819] Remove deprecated Tracer

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b57ae6bc08a24404b27c5bc750ebee1974b4236e
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Sep 7 20:45:46 2018 +0200

    [CAMEL-12819] Remove deprecated Tracer
---
 .../main/java/org/apache/camel/CamelContext.java   |  17 -
 .../api/management/mbean/ManagedTracerMBean.java   | 194 ----------
 .../org/apache/camel/impl/DefaultCamelContext.java |  21 +-
 .../org/apache/camel/impl/DefaultDebugger.java     |  25 --
 .../apache/camel/impl/DefaultTracedRouteNodes.java | 108 ------
 .../org/apache/camel/impl/DefaultUnitOfWork.java   |  15 -
 .../apache/camel/impl/SynchronizationAdapter.java  |  26 --
 .../camel/impl/ThreadPoolProfileSupport.java       |  33 --
 .../impl/cloud/AggregatingServiceDiscovery.java    |  40 --
 .../cloud/AggregatingServiceDiscoveryFactory.java  |  24 --
 .../camel/impl/cloud/ChainedServiceFilter.java     |  31 --
 .../impl/cloud/ChainedServiceFilterFactory.java    |  24 --
 .../converter/PropertyEditorTypeConverter.java     | 154 --------
 .../DefaultManagementLifecycleStrategy.java        |  14 -
 .../management/ManagedManagementStrategy.java      |   4 -
 .../mbean/JMXNotificationTraceEventHandler.java    | 115 ------
 .../camel/management/mbean/ManagedTracer.java      | 416 ---------------------
 .../apache/camel/processor/MulticastProcessor.java |  23 --
 .../processor/interceptor/BacklogDebugger.java     |   1 -
 .../processor/interceptor/DefaultChannel.java      |  49 ---
 .../interceptor/DefaultTraceEventHandler.java      | 149 --------
 .../interceptor/DefaultTraceEventMessage.java      | 269 -------------
 .../interceptor/DefaultTraceFormatter.java         | 402 --------------------
 .../DefaultTraceInterceptorFactory.java            |  29 --
 .../processor/interceptor/TraceEventHandler.java   |  73 ----
 .../processor/interceptor/TraceEventMessage.java   |  98 -----
 .../processor/interceptor/TraceFormatter.java      |  37 --
 .../processor/interceptor/TraceInterceptor.java    | 390 -------------------
 .../interceptor/TraceInterceptorFactory.java       |  44 ---
 .../apache/camel/processor/interceptor/Tracer.java | 374 ------------------
 .../org/apache/camel/spi/TracedRouteNodes.java     |  92 -----
 .../main/java/org/apache/camel/spi/UnitOfWork.java |   8 -
 .../camel/component/file/FileSplitInSplitTest.java |   4 -
 .../impl/DefaultExecutorServiceStrategyTest.java   |  25 +-
 .../management/ManagedCamelContextTracerTest.java  | 160 --------
 .../management/ManagedRouteContextTracerTest.java  | 100 -----
 .../camel/management/ManagedTracerOptionsTest.java | 177 ---------
 .../DefaultErrorHandlerOnExceptionTraceTest.java   | 117 ------
 .../processor/OnCompletionGlobalTraceTest.java     | 138 -------
 .../processor/RecipientListReturnValueTest.java    |   3 -
 .../TraceInterceptorWithOutBodyTraceTest.java      |  52 ---
 .../apache/camel/processor/TracePerRouteTest.java  |  67 ----
 .../camel/processor/TraceableUnitOfWorkTest.java   | 109 ------
 .../camel/processor/TracerConfigurationTest.java   |   8 -
 .../processor/async/AsyncTraceHandlerTest.java     | 107 ------
 .../intercept/InterceptSimpleRouteTraceTest.java   |  85 -----
 ...aultTraceEventMessageCausedByExceptionTest.java |  73 ----
 .../interceptor/DefaultTraceEventMessageTest.java  | 156 --------
 .../interceptor/DefaultTraceFormatterTest.java     | 170 ---------
 .../processor/interceptor/TraceFormatterTest.java  | 122 ------
 .../processor/interceptor/TraceHandlerTest.java    |  62 ---
 .../interceptor/TraceHandlerTestHandler.java       | 113 ------
 .../interceptor/TraceInitIdOnAllNodesTest.java     |  99 -----
 .../TraceInterceptorCustomJpaMessage.java          | 191 ----------
 .../TraceInterceptorCustomJpaMessageTest.java      |  91 -----
 .../TraceInterceptorDestinationTest.java           | 163 --------
 .../TraceInterceptorFactoryCreatesHandlerTest.java |  74 ----
 .../TraceInterceptorSubclassFactory.java           | 100 -----
 .../interceptor/TraceInterceptorSubclassTest.java  |  46 ---
 .../processor/interceptor/TraceTestProcessor.java  |  31 --
 .../camel/processor/interceptor/TracerTest.java    | 109 ------
 .../interceptor/TracingRedeliveryIssueTest.java    |  60 ---
 .../processor/interceptor/TracingTestBase.java     | 138 -------
 .../aws/xray/CamelAwsXRayTestSupport.java          |   6 -
 .../csv/BindyMarshalOneToManyWithHeadersTest.java  |   9 +-
 .../bindy/csv/BindyPojoSimpleCsvMarshallTest.java  |   9 +-
 .../csv/BindySimpleCsvBooleanUnmarshallTest.java   |   9 +-
 ...BindySimpleCsvMarshallPositionModifiedTest.java |   9 +-
 .../bindy/csv/BindySimpleCsvMarshallTest.java      |   9 +-
 .../BindySimpleCsvUnmarshallBadIntegerTest.java    |  10 -
 ...ndySimpleCsvUnmarshallPositionModifiedTest.java |   8 -
 .../bindy/csv/BindySimpleCsvUnmarshallTest.java    |   8 -
 ...eKeyValuePairWithoutSectionMarshallDslTest.java |  11 +-
 .../simple/BindySimpleFixedLengthMarshallTest.java |   9 +-
 .../BindySimpleFixedLengthObjectMarshallTest.java  |   7 -
 .../core/xml/AbstractCamelContextFactoryBean.java  |  12 -
 .../camel/component/cxf/context-camel-1145.xml     |  62 ---
 .../component/file/remote/PaddyRouteTest.java      |   4 +-
 .../interceptor/jpa/JpaTraceEventMessage.java      | 220 -----------
 .../interceptor/JpaTraceEventMessageTest.java      | 121 ------
 .../src/test/resources/META-INF/persistence.xml    |  14 -
 .../profiles/hibernate/META-INF/persistence.xml    |  13 -
 .../camel/spring/boot/CamelAutoConfiguration.java  |  40 --
 .../interceptor/TracerConfigurationTest.java       |  45 ---
 ...ingDefaultErrorHandlerOnExceptionTraceTest.java |  35 --
 .../SpringInterceptSimpleRouteTraceTest.java       |  35 --
 .../SpringOnCompletionGlobalTraceTest.java         |  35 --
 ...SpringTraceInterceptorWithOutBodyTraceTest.java |  29 --
 .../spring/processor/SpringTracePerRouteTest.java  |  32 --
 .../tracing/SpringTraceInitIdOnAllNodesTest.java   |  33 --
 .../spring/processor/tracing/TraceHandlerTest.java |  28 --
 .../TraceInterceptorCustomJpaMessageTest.java      |  53 ---
 .../tracing/TraceInterceptorSubclassTest.java      |  37 --
 .../spring/processor/tracing/TracingTestBase.java  |  74 ----
 .../spring/interceptor/traceFormatterTest.xml      |  43 ---
 .../spring/interceptor/tracerConfigurationTest.xml |  45 ---
 ...ringDefaultErrorHandlerOnExceptionTraceTest.xml |  48 ---
 .../SpringInterceptSimpleRouteTraceTest.xml        |  44 ---
 .../SpringOnCompletionGlobalTraceTest.xml          |  45 ---
 .../processor/traceInterceptorWithOutBodyTrace.xml |  51 ---
 .../camel/spring/processor/traceperroute.xml       |  47 ---
 .../tracing/SpringTraceInitIdOnAllNodesTest.xml    |  46 ---
 .../processor/tracing/traceHandlerTestContext.xml  |  47 ---
 .../traceInterceptorCustomJpaMessageContext.xml    |  46 ---
 .../tracing/traceInterceptorSubclassContext.xml    |  50 ---
 examples/camel-example-tracer/README.md            |  38 --
 examples/camel-example-tracer/pom.xml              | 124 ------
 .../camel/example/tracer/FixedDerbyDialect.java    |  32 --
 .../java/org/apache/camel/example/tracer/Main.java |  32 --
 .../camel/example/tracer/QuoteAggregator.java      |  78 ----
 .../apache/camel/example/tracer/QuoteService.java  |  47 ---
 .../src/main/resources/META-INF/LICENSE.txt        | 203 ----------
 .../src/main/resources/META-INF/NOTICE.txt         |  11 -
 .../src/main/resources/META-INF/persistence.xml    |  41 --
 .../resources/META-INF/spring/camel-context.xml    | 120 ------
 .../src/main/resources/features.xml                |  46 ---
 .../src/main/resources/log4j2.properties           |  23 --
 examples/pom.xml                                   |   1 -
 118 files changed, 24 insertions(+), 8559 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 2bc5726..6828bb6 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -1527,23 +1527,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setManagementStrategy(ManagementStrategy strategy);
 
     /**
-     * Gets the default tracer
-     *
-     * @return the default tracer
-     */
-    InterceptStrategy getDefaultTracer();
-
-    /**
-     * Sets a custom tracer to be used as the default tracer.
-     * <p/>
-     * <b>Note:</b> This must be set before any routes are created,
-     * changing the default tracer for existing routes is not supported.
-     *
-     * @param tracer the custom tracer to use as default tracer
-     */
-    void setDefaultTracer(InterceptStrategy tracer);
-
-    /**
      * Gets the default backlog tracer
      *
      * @return the default backlog tracer
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java
deleted file mode 100644
index 4486253..0000000
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java
+++ /dev/null
@@ -1,194 +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.api.management.mbean;
-
-import org.apache.camel.api.management.ManagedAttribute;
-
-public interface ManagedTracerMBean {
-
-    @ManagedAttribute(description = "Camel ID")
-    String getCamelId();
-
-    @ManagedAttribute(description = "Camel ManagementName")
-    String getCamelManagementName();
-
-    @ManagedAttribute(description = "Tracer enabled")
-    boolean getEnabled();
-
-    @ManagedAttribute(description = "Tracer enabled")
-    void setEnabled(boolean enabled);
-
-    @ManagedAttribute(description = "Additional destination URI")
-    String getDestinationUri();
-
-    @ManagedAttribute(description = "Additional destination URI")
-    void setDestinationUri(String uri);
-
-    @ManagedAttribute(description = "Logging Name")
-    String getLogName();
-
-    @ManagedAttribute(description = "Using JPA")
-    boolean getUseJpa();
-
-    @ManagedAttribute(description = "Logging Name")
-    void setLogName(String logName);
-
-    @ManagedAttribute(description = "Logging Level")
-    String getLogLevel();
-
-    @ManagedAttribute(description = "Logging Level")
-    void setLogLevel(String logLevel);
-
-    @ManagedAttribute(description = "Log Stacktrace")
-    boolean getLogStackTrace();
-
-    @ManagedAttribute(description = "Log Stacktrace")
-    void setLogStackTrace(boolean logStackTrace);
-
-    @ManagedAttribute(description = "Trace Interceptors")
-    boolean getTraceInterceptors();
-
-    @ManagedAttribute(description = "Trace Interceptors")
-    void setTraceInterceptors(boolean traceInterceptors);
-
-    @ManagedAttribute(description = "Trace Exceptions")
-    boolean getTraceExceptions();
-
-    @ManagedAttribute(description = "Trace Exceptions")
-    void setTraceExceptions(boolean traceExceptions);
-
-    @ManagedAttribute(description = "Trace Out Exchanges")
-    boolean getTraceOutExchanges();
-
-    @ManagedAttribute(description = "Trace Out Exchanges")
-    void setTraceOutExchanges(boolean traceOutExchanges);
-
-    @ManagedAttribute(description = "Formatter show body")
-    boolean getFormatterShowBody();
-
-    @ManagedAttribute(description = "Formatter show body")
-    void setFormatterShowBody(boolean showBody);
-
-    @ManagedAttribute(description = "Formatter show body type")
-    boolean getFormatterShowBodyType();
-
-    @ManagedAttribute(description = "Formatter show body type")
-    void setFormatterShowBodyType(boolean showBodyType);
-
-    @ManagedAttribute(description = "Formatter show out body")
-    boolean getFormatterShowOutBody();
-
-    @ManagedAttribute(description = "Formatter show out body")
-    void setFormatterShowOutBody(boolean showOutBody);
-
-    @ManagedAttribute(description = "Formatter show out body type")
-    boolean getFormatterShowOutBodyType();
-
-    @ManagedAttribute(description = "Formatter show out body type")
-    void setFormatterShowOutBodyType(boolean showOutBodyType);
-
-    @ManagedAttribute(description = "Formatter show breadcrumb")
-    boolean getFormatterShowBreadCrumb();
-
-    @ManagedAttribute(description = "Formatter show breadcrumb")
-    void setFormatterShowBreadCrumb(boolean showBreadCrumb);
-
-    @ManagedAttribute(description = "Formatter show exchange ID")
-    boolean getFormatterShowExchangeId();
-
-    @ManagedAttribute(description = "Formatter show exchange ID")
-    void setFormatterShowExchangeId(boolean showExchangeId);
-
-    @ManagedAttribute(description = "Formatter show headers")
-    boolean getFormatterShowHeaders();
-
-    @ManagedAttribute(description = "Formatter show headers")
-    void setFormatterShowHeaders(boolean showHeaders);
-
-    @ManagedAttribute(description = "Formatter show out headers")
-    boolean getFormatterShowOutHeaders();
-
-    @ManagedAttribute(description = "Formatter show out headers")
-    void setFormatterShowOutHeaders(boolean showOutHeaders);
-
-    @ManagedAttribute(description = "Formatter show properties")
-    boolean getFormatterShowProperties();
-
-    @ManagedAttribute(description = "Formatter show properties")
-    void setFormatterShowProperties(boolean showProperties);
-
-    @ManagedAttribute(description = "Formatter show node")
-    boolean getFormatterShowNode();
-
-    @ManagedAttribute(description = "Formatter show node")
-    void setFormatterShowNode(boolean showNode);
-
-    @ManagedAttribute(description = "Formatter show exchange pattern")
-    boolean getFormatterShowExchangePattern();
-
-    @ManagedAttribute(description = "Formatter show exchange pattern")
-    void setFormatterShowExchangePattern(boolean showExchangePattern);
-
-    @ManagedAttribute(description = "Formatter show exception")
-    boolean getFormatterShowException();
-
-    @ManagedAttribute(description = "Formatter show exception")
-    void setFormatterShowException(boolean showException);
-
-    @ManagedAttribute(description = "Formatter show route ID")
-    boolean getFormatterShowRouteId();
-
-    @ManagedAttribute(description = "Formatter show route ID")
-    void setFormatterShowRouteId(boolean showRouteId);
-
-    @ManagedAttribute(description = "Formatter breadcrumb length")
-    int getFormatterBreadCrumbLength();
-
-    @ManagedAttribute(description = "Formatter breadcrumb length")
-    void setFormatterBreadCrumbLength(int breadCrumbLength);
-
-    @ManagedAttribute(description = "Formatter show short exchange ID")
-    boolean getFormatterShowShortExchangeId();
-
-    @ManagedAttribute(description = "Formatter show short exchange ID")
-    void setFormatterShowShortExchangeId(boolean showShortExchangeId);
-
-    @ManagedAttribute(description = "Formatter node length")
-    int getFormatterNodeLength();
-
-    @ManagedAttribute(description = "Formatter node length")
-    void setFormatterNodeLength(int nodeLength);
-
-    @ManagedAttribute(description = "Formatter max chars")
-    int getFormatterMaxChars();
-
-    @ManagedAttribute(description = "Formatter max chars")
-    void setFormatterMaxChars(int maxChars);
-
-    @ManagedAttribute(description = "Should trace events be sent as JMX notifications")
-    boolean isJmxTraceNotifications();
-
-    @ManagedAttribute(description = "Should trace events be sent as JMX notifications")
-    void setJmxTraceNotifications(boolean jmxTraceNotifications);
-
-    @ManagedAttribute(description = "Maximum size of a message body for trace notification")
-    int getTraceBodySize();
-
-    @ManagedAttribute(description = "Maximum size of a message body for trace notification")
-    void setTraceBodySize(int traceBodySize);
-
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 69670f0..39417ac 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -122,7 +122,6 @@ import org.apache.camel.processor.interceptor.Debug;
 import org.apache.camel.processor.interceptor.Delayer;
 import org.apache.camel.processor.interceptor.HandleFault;
 import org.apache.camel.processor.interceptor.StreamCaching;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.runtimecatalog.DefaultRuntimeCamelCatalog;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
@@ -286,7 +285,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private NodeIdFactory nodeIdFactory = createNodeIdFactory();
     private ProcessorFactory processorFactory = createProcessorFactory();
     private MessageHistoryFactory messageHistoryFactory = createMessageHistoryFactory();
-    private InterceptStrategy defaultTracer;
     private InterceptStrategy defaultBacklogTracer;
     private InterceptStrategy defaultBacklogDebugger;
     private InflightRepository inflightRepository = createInflightRepository();
@@ -487,7 +485,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             componentsInCreation.get().remove(name);
         }
     }
-    
+
     /**
      * Function to initialize a component and auto start. Returns null if the autoCreateComponents is disabled
      */
@@ -2843,9 +2841,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
         // for backwards compatible or if user add them here instead of the setXXX methods
 
-        if (interceptStrategy instanceof Tracer) {
-            setTracing(true);
-        } else if (interceptStrategy instanceof HandleFault) {
+        if (interceptStrategy instanceof HandleFault) {
             setHandleFault(true);
         } else if (interceptStrategy instanceof StreamCaching) {
             setStreamCaching(true);
@@ -3495,7 +3491,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         stopWatch.restart();
         log.info("Apache Camel {} (CamelContext: {}) is shutting down", getVersion(), getName());
         EventHelper.notifyCamelContextStopping(this);
-        
+
         // Stop the route controller
         ServiceHelper.stopAndShutdownService(this.routeController);
 
@@ -4337,17 +4333,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         this.managementStrategy = managementStrategy;
     }
 
-    public InterceptStrategy getDefaultTracer() {
-        if (defaultTracer == null) {
-            defaultTracer = new Tracer();
-        }
-        return defaultTracer;
-    }
-
-    public void setDefaultTracer(InterceptStrategy tracer) {
-        this.defaultTracer = tracer;
-    }
-
     public InterceptStrategy getDefaultBacklogTracer() {
         if (defaultBacklogTracer == null) {
             defaultBacklogTracer = BacklogTracer.createTracer(this);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
index 5d8b6ad..1ef52b8 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
@@ -29,7 +29,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
@@ -37,7 +36,6 @@ import org.apache.camel.management.event.AbstractExchangeEvent;
 import org.apache.camel.management.event.ExchangeCompletedEvent;
 import org.apache.camel.management.event.ExchangeCreatedEvent;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.spi.Breakpoint;
 import org.apache.camel.spi.Condition;
 import org.apache.camel.spi.Debugger;
@@ -61,7 +59,6 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
     private final int maxConcurrentSingleSteps = 1;
     private final Map<String, Breakpoint> singleSteps = new HashMap<>(maxConcurrentSingleSteps);
     private CamelContext camelContext;
-    private boolean useTracer = true;
 
     /**
      * Holder class for breakpoint and the associated conditions
@@ -105,15 +102,6 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         this.camelContext = camelContext;
     }
 
-    public boolean isUseTracer() {
-        return useTracer;
-    }
-
-    public void setUseTracer(boolean useTracer) {
-        this.useTracer = useTracer;
-    }
-
-    @Override
     public void addBreakpoint(Breakpoint breakpoint) {
         breakpoints.add(new BreakpointConditions(breakpoint));
     }
@@ -359,19 +347,6 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         // register our event notifier
         ServiceHelper.startService(debugEventNotifier);
         camelContext.getManagementStrategy().addEventNotifier(debugEventNotifier);
-
-        if (isUseTracer()) {
-            Tracer tracer = Tracer.getTracer(camelContext);
-            if (tracer == null) {
-                // tracer is disabled so enable it silently so we can leverage it to trace the Exchanges for us
-                tracer = Tracer.createTracer(camelContext);
-                tracer.setLogLevel(LoggingLevel.OFF);
-                camelContext.addService(tracer);
-                camelContext.addInterceptStrategy(tracer);
-            }
-            // make sure tracer is enabled so the debugger can leverage the tracer for debugging purposes
-            tracer.setEnabled(true);
-        }
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java
deleted file mode 100644
index 6bd16d7..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java
+++ /dev/null
@@ -1,108 +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.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.TracedRouteNodes;
-
-/**
- * Default {@link org.apache.camel.spi.TracedRouteNodes}
- *
- * @deprecated use {@link Exchange#MESSAGE_HISTORY} instead.
- */
-@Deprecated
-public class DefaultTracedRouteNodes implements TracedRouteNodes {
-    private final Stack<List<RouteNode>> routeNodes = new Stack<>();
-    private final Map<ProcessorDefinition<?>, AtomicInteger> nodeCounter = new HashMap<>();
-
-    public DefaultTracedRouteNodes() {
-        // create an empty list to start with
-        routeNodes.push(new ArrayList<RouteNode>());
-    }
-
-    public void addTraced(RouteNode entry) {
-        List<RouteNode> list = routeNodes.isEmpty() ? null : routeNodes.peek();
-        if (list == null) {
-            list = new ArrayList<>();
-            routeNodes.push(list);
-        }
-        list.add(entry);
-    }
-
-    public RouteNode getLastNode() {
-        List<RouteNode> list = routeNodes.isEmpty() ? null : routeNodes.peek();
-        if (list == null || list.isEmpty()) {
-            return null;
-        }
-        return list.get(list.size() - 1);
-    }
-
-    public RouteNode getSecondLastNode() {
-        List<RouteNode> list = routeNodes.isEmpty() ? null : routeNodes.peek();
-        if (list == null || list.isEmpty() || list.size() == 1) {
-            return null;
-        }
-        return list.get(list.size() - 2);
-    }
-
-    public List<RouteNode> getNodes() {
-        List<RouteNode> answer = new ArrayList<>();
-        for (List<RouteNode> list : routeNodes) {
-            answer.addAll(list);
-        }
-        return Collections.unmodifiableList(answer);
-    }
-
-    public void popBlock() {
-        if (!routeNodes.isEmpty()) {
-            routeNodes.pop();
-        }
-    }
-
-    public void pushBlock() {
-        // push a new block and add the last node as starting point
-        RouteNode last = getLastNode();
-        routeNodes.push(new ArrayList<RouteNode>());
-        if (last != null) {
-            addTraced(last);
-        }
-    }
-
-    public void clear() {
-        routeNodes.clear();
-    }
-
-    public int getAndIncrementCounter(ProcessorDefinition<?> node) {
-        AtomicInteger count = nodeCounter.get(node);
-        if (count == null) {
-            count = new AtomicInteger();
-            nodeCounter.put(node, count);
-        }
-        return count.getAndIncrement();
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
index 51af899..7d87c40 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
@@ -40,7 +40,6 @@ import org.apache.camel.spi.SubUnitOfWork;
 import org.apache.camel.spi.SubUnitOfWorkCallback;
 import org.apache.camel.spi.Synchronization;
 import org.apache.camel.spi.SynchronizationVetoable;
-import org.apache.camel.spi.TracedRouteNodes;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.util.EventHelper;
 import org.apache.camel.util.UnitOfWorkHelper;
@@ -65,7 +64,6 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
     private CamelContext context;
     private List<Synchronization> synchronizations;
     private Message originalInMessage;
-    private TracedRouteNodes tracedRouteNodes;
     private Set<Object> transactedBy;
     private final Deque<RouteContext> routeContextStack = new ArrayDeque<>();
     private Deque<DefaultSubUnitOfWork> subUnitOfWorks;
@@ -83,12 +81,6 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
 
         context = exchange.getContext();
 
-        // only use tracer if explicit enabled
-        if (context.isTracing() != null && context.isTracing()) {
-            // backwards compatible
-            tracedRouteNodes = new DefaultTracedRouteNodes();
-        }
-
         if (context.isAllowUseOriginalMessage()) {
             // special for JmsMessage as it can cause it to loose headers later.
             if (exchange.getIn().getClass().getName().equals("org.apache.camel.component.jms.JmsMessage")) {
@@ -170,9 +162,6 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
         if (synchronizations != null) {
             synchronizations.clear();
         }
-        if (tracedRouteNodes != null) {
-            tracedRouteNodes.clear();
-        }
         if (transactedBy != null) {
             transactedBy.clear();
         }
@@ -301,10 +290,6 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
         return originalInMessage;
     }
 
-    public TracedRouteNodes getTracedRouteNodes() {
-        return tracedRouteNodes;
-    }
-
     public boolean isTransacted() {
         return transactedBy != null && !transactedBy.isEmpty();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SynchronizationAdapter.java b/camel-core/src/main/java/org/apache/camel/impl/SynchronizationAdapter.java
deleted file mode 100644
index 45d1ab3..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/SynchronizationAdapter.java
+++ /dev/null
@@ -1,26 +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;
-
-/**
- * @deprecated use org.apache.camel.support.SynchronizationAdapter instead
- *
- */
-@Deprecated
-public class SynchronizationAdapter extends org.apache.camel.support.SynchronizationAdapter {
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThreadPoolProfileSupport.java b/camel-core/src/main/java/org/apache/camel/impl/ThreadPoolProfileSupport.java
deleted file mode 100644
index d27ca7d..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/ThreadPoolProfileSupport.java
+++ /dev/null
@@ -1,33 +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.spi.ThreadPoolProfile;
-
-/**
- * Use {@link ThreadPoolProfile} instead
- *
- * @deprecated use {@link ThreadPoolProfile} instead, will be removed in a future Camel release
- */
-@Deprecated
-public class ThreadPoolProfileSupport extends ThreadPoolProfile {
-    private static final long serialVersionUID = 1L;
-
-    public ThreadPoolProfileSupport(String id) {
-        super(id);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscovery.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscovery.java
deleted file mode 100644
index e29c954..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscovery.java
+++ /dev/null
@@ -1,40 +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.cloud;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.camel.cloud.ServiceDiscovery;
-
-/**
- * @deprecated use {@link CombinedServiceDiscovery}
- */
-@Deprecated
-public class AggregatingServiceDiscovery extends CombinedServiceDiscovery {
-    public AggregatingServiceDiscovery(List<ServiceDiscovery> delegates) {
-        super(delegates);
-    }
-
-    // **********************
-    // Helpers
-    // **********************
-
-    public static AggregatingServiceDiscovery wrap(ServiceDiscovery... delegates) {
-        return new AggregatingServiceDiscovery(Arrays.asList(delegates));
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryFactory.java
deleted file mode 100644
index e36c8f1..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryFactory.java
+++ /dev/null
@@ -1,24 +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.cloud;
-
-/**
- * @deprecated use {@link CombinedServiceDiscoveryFactory}
- */
-@Deprecated
-public class AggregatingServiceDiscoveryFactory extends CombinedServiceDiscoveryFactory {
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceFilter.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceFilter.java
deleted file mode 100644
index 50cb538..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceFilter.java
+++ /dev/null
@@ -1,31 +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.cloud;
-
-import java.util.List;
-
-import org.apache.camel.cloud.ServiceFilter;
-
-/**
- * @deprecated use {@link CombinedServiceFilter}
- */
-@Deprecated
-public class ChainedServiceFilter extends CombinedServiceFilter {
-    public ChainedServiceFilter(List<ServiceFilter> delegates) {
-        super(delegates);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceFilterFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceFilterFactory.java
deleted file mode 100644
index 61ac21b..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceFilterFactory.java
+++ /dev/null
@@ -1,24 +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.cloud;
-
-/**
- * @deprecated use {@link CombinedServiceFilterFactory}
- */
-@Deprecated
-public class ChainedServiceFilterFactory extends CombinedServiceFilterFactory {
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java
deleted file mode 100644
index 3803af6..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java
+++ /dev/null
@@ -1,154 +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.converter;
-
-import java.beans.PropertyEditor;
-import java.beans.PropertyEditorManager;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.util.LRUCacheFactory;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Uses the {@link java.beans.PropertyEditor} conversion system to convert Objects to
- * and from String values.
- *
- * @deprecated should be removed as it can cause side-effects when using 3rd party property editors
- *
- * @version 
- */
-@Deprecated
-public class PropertyEditorTypeConverter implements TypeConverter {
-
-    private static final Logger LOG = LoggerFactory.getLogger(PropertyEditorTypeConverter.class);
-    // use a soft bound cache to avoid using too much memory in case a lot of different classes
-    // is being converted to string
-    @SuppressWarnings("unchecked")
-    private final Map<Class<?>, Class<?>> misses = LRUCacheFactory.newLRUSoftCache(1000);
-    // we don't anticipate so many property editors so we have unbounded map
-    private final Map<Class<?>, PropertyEditor> cache = new HashMap<>();
-
-    public void clear() {
-        cache.clear();
-        misses.clear();
-    }
-
-    @Override
-    public boolean allowNull() {
-        return false;
-    }
-
-    @Override
-    public <T> T convertTo(Class<T> type, Object value) {
-        // We can't convert null values since we can't figure out a property
-        // editor for it.
-        if (value == null) {
-            return null;
-        }
-
-        if (value.getClass() == String.class) {
-            // No conversion needed.
-            if (type == String.class) {
-                return ObjectHelper.cast(type, value);
-            }
-
-            Class<?> key = type;
-            PropertyEditor editor = lookupEditor(key);
-            if (editor != null) {
-                // we are essentially not thread safe as we use 2 calls to convert
-                editor.setAsText(value.toString());
-                return ObjectHelper.cast(type, editor.getValue());
-            }
-        } else if (type == String.class) {
-            Class<?> key = value.getClass();
-            PropertyEditor editor = lookupEditor(key);
-            if (editor != null) {
-                // we are essentially not thread safe as we use 2 calls to convert
-                editor.setValue(value);
-                return ObjectHelper.cast(type, editor.getAsText());
-            }
-        }
-
-        return null;
-    }
-
-    private PropertyEditor lookupEditor(Class<?> type) {
-        // check misses first
-        if (misses.containsKey(type)) {
-            LOG.trace("No previously found property editor for type: {}", type);
-            return null;
-        }
-
-        synchronized (cache) {
-            // not a miss then try to lookup the editor
-            PropertyEditor editor = cache.get(type);
-            if (editor == null) {
-                // findEditor is synchronized and very slow so we want to only lookup once for a given key
-                // and then we use our own local cache for faster lookup
-                editor = PropertyEditorManager.findEditor(type);
-
-                // either we found an editor, or if not then register it as a miss
-                if (editor != null) {
-                    LOG.trace("Found property editor for type: {} -> {}", type, editor);
-                    cache.put(type, editor);
-                } else {
-                    LOG.trace("Cannot find property editor for type: {}", type);
-                    misses.put(type, type);
-                }
-            }
-            return editor;
-        }
-    }
-
-    @Override
-    public <T> T convertTo(Class<T> type, Exchange exchange, Object value) {
-        return convertTo(type, value);
-    }
-
-    @Override
-    public <T> T mandatoryConvertTo(Class<T> type, Object value) {
-        return convertTo(type, value);
-    }
-
-    @Override
-    public <T> T mandatoryConvertTo(Class<T> type, Exchange exchange, Object value) {
-        return convertTo(type, value);
-    }
-
-    @Override
-    public <T> T tryConvertTo(Class<T> type, Exchange exchange, Object value) {
-        try {
-            return convertTo(type, exchange, value);
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    @Override
-    public <T> T tryConvertTo(Class<T> type, Object value) {
-        try {
-            return convertTo(type, null, value);
-        } catch (Exception e) {
-            return null;
-        }
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index c35a58a..bd6ce84 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -72,7 +72,6 @@ import org.apache.camel.management.mbean.ManagedService;
 import org.apache.camel.management.mbean.ManagedStreamCachingStrategy;
 import org.apache.camel.management.mbean.ManagedThrottlingExceptionRoutePolicy;
 import org.apache.camel.management.mbean.ManagedThrottlingInflightRoutePolicy;
-import org.apache.camel.management.mbean.ManagedTracer;
 import org.apache.camel.management.mbean.ManagedTransformerRegistry;
 import org.apache.camel.management.mbean.ManagedTypeConverterRegistry;
 import org.apache.camel.management.mbean.ManagedValidatorRegistry;
@@ -87,7 +86,6 @@ import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.DataFormat;
@@ -135,7 +133,6 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
     private volatile ManagedCamelContext camelContextMBean;
     private volatile boolean initialized;
     private final Set<String> knowRouteIds = new HashSet<>();
-    private final Map<Tracer, ManagedTracer> managedTracers = new HashMap<>();
     private final Map<BacklogTracer, ManagedBacklogTracer> managedBacklogTracers = new HashMap<>();
     private final Map<BacklogDebugger, ManagedBacklogDebugger> managedBacklogDebuggers = new HashMap<>();
     private final Map<ThreadPoolExecutor, Object> managedThreadPools = new HashMap<>();
@@ -478,16 +475,6 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
         if (service instanceof ManagementAware) {
             return ((ManagementAware<Service>) service).getManagedObject(service);
-        } else if (service instanceof Tracer) {
-            // special for tracer
-            Tracer tracer = (Tracer) service;
-            ManagedTracer mt = managedTracers.get(tracer);
-            if (mt == null) {
-                mt = new ManagedTracer(context, tracer);
-                mt.init(getManagementStrategy());
-                managedTracers.put(tracer, mt);
-            }
-            return mt;
         } else if (service instanceof BacklogTracer) {
             // special for backlog tracer
             BacklogTracer backlogTracer = (BacklogTracer) service;
@@ -1000,7 +987,6 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         knowRouteIds.clear();
         preServices.clear();
         wrappedProcessors.clear();
-        managedTracers.clear();
         managedBacklogTracers.clear();
         managedBacklogDebuggers.clear();
         managedThreadPools.clear();
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index 449102e..85e3120 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -37,7 +37,6 @@ import org.apache.camel.management.mbean.ManagedRoute;
 import org.apache.camel.management.mbean.ManagedRouteController;
 import org.apache.camel.management.mbean.ManagedService;
 import org.apache.camel.management.mbean.ManagedThreadPool;
-import org.apache.camel.management.mbean.ManagedTracer;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.ManagementAgent;
 import org.slf4j.Logger;
@@ -126,9 +125,6 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
         } else if (managedObject instanceof ManagedProducer) {
             ManagedProducer ms = (ManagedProducer) managedObject;
             objectName = getManagementNamingStrategy().getObjectNameForProducer(ms.getContext(), ms.getProducer());
-        } else if (managedObject instanceof ManagedTracer) {
-            ManagedTracer mt = (ManagedTracer) managedObject;
-            objectName = getManagementNamingStrategy().getObjectNameForTracer(mt.getContext(), mt.getTracer());
         } else if (managedObject instanceof ManagedBacklogTracer) {
             ManagedBacklogTracer mt = (ManagedBacklogTracer) managedObject;
             objectName = getManagementNamingStrategy().getObjectNameForTracer(mt.getContext(), mt.getBacklogTracer());
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java b/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java
deleted file mode 100644
index 8f60c93..0000000
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java
+++ /dev/null
@@ -1,115 +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.management.mbean;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-import javax.management.Notification;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.Traceable;
-import org.apache.camel.api.management.NotificationSender;
-import org.apache.camel.api.management.NotificationSenderAware;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.processor.interceptor.TraceEventHandler;
-import org.apache.camel.processor.interceptor.TraceInterceptor;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.apache.camel.util.MessageHelper;
-
-public final class JMXNotificationTraceEventHandler implements TraceEventHandler, NotificationSenderAware {
-    private static final int MAX_MESSAGE_LENGTH = 60;
-    private final AtomicLong num = new AtomicLong();
-    private final Tracer tracer;
-    private NotificationSender notificationSender;
-
-    public JMXNotificationTraceEventHandler(Tracer tracer) {
-        this.tracer = tracer;
-    }
-
-    public void traceExchangeOut(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange, Object traceState) throws Exception {
-        // We do nothing here
-    }
-
-    public Object traceExchangeIn(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-        // Just trace the exchange as usual
-        traceExchange(node, target, traceInterceptor, exchange);
-        return null;
-    }
-
-    public void traceExchange(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-        if (notificationSender != null && tracer.isJmxTraceNotifications()) {
-            String body = MessageHelper.extractBodyForLogging(exchange.getIn(), "", false, true, tracer.getTraceBodySize());
-            
-            if (body == null) {
-                body = "";
-            }
-            String message = body.substring(0, Math.min(body.length(), MAX_MESSAGE_LENGTH));
-            Map<String, Object> tm = createTraceMessage(node, exchange, body);
-
-            Notification notification = new Notification("TraceNotification", exchange.toString(), num.getAndIncrement(), System.currentTimeMillis(), message);
-            notification.setUserData(tm);
-
-            notificationSender.sendNotification(notification);
-        }
-
-    }
-
-    private Map<String, Object> createTraceMessage(ProcessorDefinition<?> node, Exchange exchange, String body) {
-        Map<String, Object> mi = new HashMap<>();
-        mi.put("ExchangeId", exchange.getExchangeId());
-        mi.put("EndpointURI", getEndpointUri(node));
-        mi.put("TimeStamp", new Date(System.currentTimeMillis()));
-        mi.put("Body", body);
-
-        Message message = exchange.getIn();
-        Map<String, Object> sHeaders = message.getHeaders();
-        Map<String, Object> sProperties = exchange.getProperties();
-
-        Map<String, String> headers = new HashMap<>();
-        for (String key : sHeaders.keySet()) {
-            headers.put(key, message.getHeader(key, String.class));
-        }
-        mi.put("Headers", headers);
-
-        Map<String, String> properties = new HashMap<>();
-        for (String key : sProperties.keySet()) {
-            properties.put(key, exchange.getProperty(key, String.class));
-        }
-        mi.put("Properties", properties);
-        return mi;
-    }
-
-    private String getEndpointUri(ProcessorDefinition<?> node) {
-        if (node instanceof Traceable) {
-            Traceable tr = (Traceable)node;
-            return tr.getTraceLabel();
-        } else {
-            return node.getLabel();
-        }
-    }
-
-    @Override
-    public void setNotificationSender(NotificationSender sender) {
-        this.notificationSender = sender;
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
deleted file mode 100644
index 5f3d0fa..0000000
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
+++ /dev/null
@@ -1,416 +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.management.mbean;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.api.management.ManagedNotification;
-import org.apache.camel.api.management.ManagedNotifications;
-import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.api.management.NotificationSender;
-import org.apache.camel.api.management.NotificationSenderAware;
-import org.apache.camel.api.management.mbean.ManagedTracerMBean;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.apache.camel.spi.ManagementStrategy;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * @version 
- */
-@ManagedResource(description = "Managed Tracer")
-@ManagedNotifications(@ManagedNotification(name = "javax.management.Notification", 
-    description = "Fine grained trace events", 
-    notificationTypes = {"TraceNotification"}))
-public class ManagedTracer implements NotificationSenderAware, ManagedTracerMBean {
-    private final CamelContext camelContext;
-    private final Tracer tracer;
-    private JMXNotificationTraceEventHandler jmxTraceHandler;
-
-    public ManagedTracer(CamelContext camelContext, Tracer tracer) {
-        this.camelContext = camelContext;
-        this.tracer = tracer;
-        jmxTraceHandler = new JMXNotificationTraceEventHandler(tracer);
-        tracer.addTraceHandler(jmxTraceHandler);
-    }
-
-    public void init(ManagementStrategy strategy) {
-        // do nothing
-    }
-
-    public CamelContext getContext() {
-        return camelContext;
-    }
-
-    public Tracer getTracer() {
-        return tracer;
-    }
-
-    public String getCamelId() {
-        return camelContext.getName();
-    }
-
-    public String getCamelManagementName() {
-        return camelContext.getManagementName();
-    }
-
-    public boolean getEnabled() {
-        return tracer.isEnabled();
-    }
-
-    public void setEnabled(boolean enabled) {
-        tracer.setEnabled(enabled);
-    }
-
-    public String getDestinationUri() {
-        return tracer.getDestinationUri();
-    }
-
-    public void setDestinationUri(String uri) {
-        if (ObjectHelper.isEmpty(uri)) {
-            tracer.setDestinationUri(null);
-        } else {
-            tracer.setDestinationUri(uri);
-        }
-    }
-
-    public String getLogName() {
-        return tracer.getLogName();
-    }
-
-    public boolean getUseJpa() {
-        return tracer.isUseJpa();
-    }
-
-    public void setLogName(String logName) {
-        tracer.setLogName(logName);
-    }
-
-    public String getLogLevel() {
-        return tracer.getLogLevel().name();
-    }
-
-    public void setLogLevel(String logLevel) {
-        tracer.setLogLevel(LoggingLevel.valueOf(logLevel));
-    }
-
-    public boolean getLogStackTrace() {
-        return tracer.isLogStackTrace();
-    }
-
-    public void setLogStackTrace(boolean logStackTrace) {
-        tracer.setLogStackTrace(logStackTrace);
-    }
-
-    public boolean getTraceInterceptors() {
-        return tracer.isTraceInterceptors();
-    }
-
-    public void setTraceInterceptors(boolean traceInterceptors) {
-        tracer.setTraceInterceptors(traceInterceptors);
-    }
-
-    public boolean getTraceExceptions() {
-        return tracer.isTraceExceptions();
-    }
-
-    public void setTraceExceptions(boolean traceExceptions) {
-        tracer.setTraceExceptions(traceExceptions);
-    }
-
-    public boolean getTraceOutExchanges() {
-        return tracer.isTraceOutExchanges();
-    }
-
-    public void setTraceOutExchanges(boolean traceOutExchanges) {
-        tracer.setTraceOutExchanges(traceOutExchanges);
-    }
-
-    public boolean getFormatterShowBody() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowBody();
-    }
-
-    public void setFormatterShowBody(boolean showBody) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowBody(showBody);
-    }
-
-    public boolean getFormatterShowBodyType() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowBodyType();
-    }
-
-    public void setFormatterShowBodyType(boolean showBodyType) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowBodyType(showBodyType);
-    }
-
-    public boolean getFormatterShowOutBody() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowOutBody();
-    }
-
-    public void setFormatterShowOutBody(boolean showOutBody) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowOutBody(showOutBody);
-    }
-
-    public boolean getFormatterShowOutBodyType() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowOutBodyType();
-    }
-
-    public void setFormatterShowOutBodyType(boolean showOutBodyType) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowOutBodyType(showOutBodyType);
-    }
-
-    public boolean getFormatterShowBreadCrumb() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowBreadCrumb();
-    }
-
-    public void setFormatterShowBreadCrumb(boolean showBreadCrumb) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowBreadCrumb(showBreadCrumb);
-    }
-
-    public boolean getFormatterShowExchangeId() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowExchangeId();
-    }
-
-    public void setFormatterShowExchangeId(boolean showExchangeId) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowExchangeId(showExchangeId);
-    }
-
-    public boolean getFormatterShowHeaders() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowHeaders();
-    }
-
-    public void setFormatterShowHeaders(boolean showHeaders) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowHeaders(showHeaders);
-    }
-
-    public boolean getFormatterShowOutHeaders() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowOutHeaders();
-    }
-
-    public void setFormatterShowOutHeaders(boolean showOutHeaders) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowOutHeaders(showOutHeaders);
-    }
-
-    public boolean getFormatterShowProperties() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowProperties();
-    }
-
-    public void setFormatterShowProperties(boolean showProperties) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowProperties(showProperties);
-    }
-
-    public boolean getFormatterMultiline() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isMultiline();
-    }
-
-    public void setFormatterMultiline(boolean multiline) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setMultiline(multiline);
-    }
-
-    
-    public boolean getFormatterShowNode() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowNode();
-    }
-
-    public void setFormatterShowNode(boolean showNode) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowNode(showNode);
-    }
-
-    public boolean getFormatterShowExchangePattern() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowExchangePattern();
-    }
-
-    public void setFormatterShowExchangePattern(boolean showExchangePattern) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowExchangePattern(showExchangePattern);
-    }
-
-    public boolean getFormatterShowException() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowException();
-    }
-
-    public void setFormatterShowException(boolean showException) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowException(showException);
-    }
-
-    public boolean getFormatterShowRouteId() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowRouteId();
-    }
-
-    public void setFormatterShowRouteId(boolean showRouteId) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowRouteId(showRouteId);
-    }
-
-    public int getFormatterBreadCrumbLength() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return 0;
-        }
-        return tracer.getDefaultTraceFormatter().getBreadCrumbLength();
-    }
-
-    public void setFormatterBreadCrumbLength(int breadCrumbLength) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setBreadCrumbLength(breadCrumbLength);
-    }
-
-    public boolean getFormatterShowShortExchangeId() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return false;
-        }
-        return tracer.getDefaultTraceFormatter().isShowShortExchangeId();
-    }
-
-    public void setFormatterShowShortExchangeId(boolean showShortExchangeId) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setShowShortExchangeId(showShortExchangeId);
-    }
-
-    public int getFormatterNodeLength() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return 0;
-        }
-        return tracer.getDefaultTraceFormatter().getNodeLength();
-    }
-
-    public void setFormatterNodeLength(int nodeLength) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setNodeLength(nodeLength);
-    }
-
-    public int getFormatterMaxChars() {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return 0;
-        }
-        return tracer.getDefaultTraceFormatter().getMaxChars();
-    }
-
-    public void setFormatterMaxChars(int maxChars) {
-        if (tracer.getDefaultTraceFormatter() == null) {
-            return;
-        }
-        tracer.getDefaultTraceFormatter().setMaxChars(maxChars);
-    }
-    
-    public boolean isJmxTraceNotifications() {
-        return this.tracer.isJmxTraceNotifications();
-    }
-
-    public void setJmxTraceNotifications(boolean jmxTraceNotifications) {
-        this.tracer.setJmxTraceNotifications(jmxTraceNotifications);
-    }
-
-    public int getTraceBodySize() {
-        return this.tracer.getTraceBodySize();
-    }
-
-    public void setTraceBodySize(int traceBodySize) {
-        this.tracer.setTraceBodySize(traceBodySize);
-    }
-
-    @Override
-    public void setNotificationSender(NotificationSender sender) {
-        jmxTraceHandler.setNotificationSender(sender);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index 98f8abc..f78a49a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -54,7 +54,6 @@ import org.apache.camel.processor.aggregate.DelegateAggregationStrategy;
 import org.apache.camel.processor.aggregate.TimeoutAwareAggregationStrategy;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.TracedRouteNodes;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.AsyncProcessorConverterHelper;
@@ -690,14 +689,7 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
         Processor processor = pair.getProcessor();
         final Producer producer = pair.getProducer();
 
-        TracedRouteNodes traced = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getTracedRouteNodes() : null;
-
         try {
-            // prepare tracing starting from a new block
-            if (traced != null) {
-                traced.pushBlock();
-            }
-
             StopWatch sw = null;
             if (producer != null) {
                 boolean sending = EventHelper.notifyExchangeSending(exchange.getContext(), exchange, producer.getEndpoint());
@@ -823,10 +815,6 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
                 }
             });
         } finally {
-            // pop the block so by next round we have the same staring point and thus the tracing looks accurate
-            if (traced != null) {
-                traced.popBlock();
-            }
         }
 
         return sync;
@@ -837,16 +825,9 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
         Processor processor = pair.getProcessor();
         Producer producer = pair.getProducer();
 
-        TracedRouteNodes traced = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getTracedRouteNodes() : null;
-
         // compute time taken if sending to another endpoint
         StopWatch watch = null;
         try {
-            // prepare tracing starting from a new block
-            if (traced != null) {
-                traced.pushBlock();
-            }
-
             if (producer != null) {
                 boolean sending = EventHelper.notifyExchangeSending(exchange.getContext(), exchange, producer.getEndpoint());
                 if (sending) {
@@ -860,10 +841,6 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
             AsyncProcessorHelper.process(async, exchange);
         } finally {
             pair.done();
-            // pop the block so by next round we have the same staring point and thus the tracing looks accurate
-            if (traced != null) {
-                traced.popBlock();
-            }
             if (producer != null && watch != null) {
                 Endpoint endpoint = producer.getEndpoint();
                 long timeTaken = watch.taken();
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index ae92ff8..7cafc39 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -111,7 +111,6 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
     public BacklogDebugger(CamelContext camelContext) {
         this.camelContext = camelContext;
         DefaultDebugger debugger = new DefaultDebugger(camelContext);
-        debugger.setUseTracer(false);
         this.debugger = debugger;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
index 64a1f56..be36241 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
@@ -253,18 +253,6 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
             addAdvice(new MessageHistoryAdvice(factory, targetOutputDef));
         }
 
-        // the regular tracer is not a task on internalProcessor as this is not really needed
-        // end users have to explicit enable the tracer to use it, and then its okay if we wrap
-        // the processors (but by default tracer is disabled, and therefore we do not wrap processors)
-        tracer = getOrCreateTracer();
-        if (tracer != null) {
-            camelContext.addService(tracer);
-            TraceInterceptor trace = (TraceInterceptor) tracer.wrapProcessorInInterceptors(routeContext.getCamelContext(), targetOutputDef, target, null);
-            // trace interceptor need to have a reference to route context so we at runtime can enable/disable tracing on-the-fly
-            trace.setRouteContext(routeContext);
-            target = trace;
-        }
-
         // sort interceptors according to ordered
         interceptors.sort(OrderedComparator.get());
         // then reverse list so the first will be wrapped last, as it would then be first being invoked
@@ -272,10 +260,6 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
         // wrap the output with the configured interceptors
         for (InterceptStrategy strategy : interceptors) {
             next = target == nextProcessor ? null : nextProcessor;
-            // skip tracer as we did the specially beforehand and it could potentially be added as an interceptor strategy
-            if (strategy instanceof Tracer) {
-                continue;
-            }
             // skip stream caching as it must be wrapped as outer most, which we do later
             if (strategy instanceof StreamCaching) {
                 continue;
@@ -344,39 +328,6 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
         }
     }
 
-    private InterceptStrategy getOrCreateTracer() {
-        // only use tracer if explicit enabled
-        if (camelContext.isTracing() != null && !camelContext.isTracing()) {
-            return null;
-        }
-
-        InterceptStrategy tracer = Tracer.getTracer(camelContext);
-        if (tracer == null) {
-            if (camelContext.getRegistry() != null) {
-                // lookup in registry
-                Map<String, Tracer> map = camelContext.getRegistry().findByTypeWithName(Tracer.class);
-                if (map.size() == 1) {
-                    tracer = map.values().iterator().next();
-                }
-            }
-            if (tracer == null) {
-                // fallback to use the default tracer
-                tracer = camelContext.getDefaultTracer();
-
-                // configure and use any trace formatter if any exists
-                Map<String, TraceFormatter> formatters = camelContext.getRegistry().findByTypeWithName(TraceFormatter.class);
-                if (formatters.size() == 1) {
-                    TraceFormatter formatter = formatters.values().iterator().next();
-                    if (tracer instanceof Tracer) {
-                        ((Tracer) tracer).setFormatter(formatter);
-                    }
-                }
-            }
-        }
-
-        return tracer;
-    }
-
     private InterceptStrategy getOrCreateBacklogTracer() {
         InterceptStrategy tracer = BacklogTracer.getBacklogTracer(camelContext);
         if (tracer == null) {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventHandler.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventHandler.java
deleted file mode 100644
index f51a4ed..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventHandler.java
+++ /dev/null
@@ -1,149 +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.processor.interceptor;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.Service;
-import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Deprecated
-public class DefaultTraceEventHandler implements TraceEventHandler, Service {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultTraceEventHandler.class);
-    
-    private Producer traceEventProducer;
-    private Class<?> jpaTraceEventMessageClass;
-    private String jpaTraceEventMessageClassName;
-
-    private final Tracer tracer;
-    
-    public DefaultTraceEventHandler(Tracer tracer) {
-        this.tracer = tracer;
-    }
-
-    private synchronized void loadJpaTraceEventMessageClass(Exchange exchange) {
-        if (jpaTraceEventMessageClass == null) {
-            jpaTraceEventMessageClassName = tracer.getJpaTraceEventMessageClassName();
-        }
-        if (jpaTraceEventMessageClass == null) {
-            jpaTraceEventMessageClass = exchange.getContext().getClassResolver().resolveClass(jpaTraceEventMessageClassName);
-            if (jpaTraceEventMessageClass == null) {
-                throw new IllegalArgumentException("Cannot find class: " + jpaTraceEventMessageClassName
-                        + ". Make sure camel-jpa.jar is in the classpath.");
-            }
-        }
-    }
-
-    private synchronized Producer getTraceEventProducer(Exchange exchange) throws Exception {
-        if (traceEventProducer == null) {
-            // create producer when we have access the camel context (we dont in doStart)
-            Endpoint endpoint = tracer.getDestination() != null ? tracer.getDestination() : exchange.getContext().getEndpoint(tracer.getDestinationUri());
-            traceEventProducer = endpoint.createProducer();
-            ServiceHelper.startService(traceEventProducer);
-        }
-        return traceEventProducer;
-    }
-
-    @Override
-    public void traceExchange(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-        if (tracer.getDestination() != null || tracer.getDestinationUri() != null) {
-
-            // create event exchange and add event information
-            Date timestamp = new Date();
-            Exchange event = new DefaultExchange(exchange);
-            event.setProperty(Exchange.TRACE_EVENT_NODE_ID, node.getId());
-            event.setProperty(Exchange.TRACE_EVENT_TIMESTAMP, timestamp);
-            // keep a reference to the original exchange in case its needed
-            event.setProperty(Exchange.TRACE_EVENT_EXCHANGE, exchange);
-
-            // create event message to sent as in body containing event information such as
-            // from node, to node, etc.
-            TraceEventMessage msg = new DefaultTraceEventMessage(timestamp, node, exchange);
-
-            // should we use ordinary or jpa objects
-            if (tracer.isUseJpa()) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Using class: {} for tracing event messages", this.jpaTraceEventMessageClassName);
-                }
-
-                // load the jpa event message class
-                loadJpaTraceEventMessageClass(exchange);
-                // create a new instance of the event message class
-                Object jpa = ObjectHelper.newInstance(jpaTraceEventMessageClass);
-
-                // copy options from event to jpa
-                Map<String, Object> options = new HashMap<>();
-                IntrospectionSupport.getProperties(msg, options, null);
-                IntrospectionSupport.setProperties(exchange.getContext().getTypeConverter(), jpa, options);
-                // and set the timestamp as its not a String type
-                IntrospectionSupport.setProperty(exchange.getContext().getTypeConverter(), jpa, "timestamp", msg.getTimestamp());
-
-                event.getIn().setBody(jpa);
-            } else {
-                event.getIn().setBody(msg);
-            }
-
-            // marker property to indicate its a tracing event being routed in case
-            // new Exchange instances is created during trace routing so we can check
-            // for this marker when interceptor also kick in during routing of trace events
-            event.setProperty(Exchange.TRACE_EVENT, Boolean.TRUE);
-            try {
-                // process the trace route
-                getTraceEventProducer(exchange).process(event);
-            } catch (Exception e) {
-                // log and ignore this as the original Exchange should be allowed to continue
-                LOG.error("Error processing trace event (original Exchange will continue): {}", event, e);
-            }
-        }
-    }
-
-    @Override
-    public Object traceExchangeIn(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-        traceExchange(node, target, traceInterceptor, exchange);
-        return null;
-    }
-
-    @Override
-    public void traceExchangeOut(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange, Object traceState) throws Exception {
-        traceExchange(node, target, traceInterceptor, exchange);
-    }
-
-    @Override
-    public void start() throws Exception {
-        traceEventProducer = null;
-    }
-
-    @Override
-    public void stop() throws Exception {
-        if (traceEventProducer != null) {
-            ServiceHelper.stopService(traceEventProducer);
-        }
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
deleted file mode 100644
index 94569cb..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
+++ /dev/null
@@ -1,269 +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.processor.interceptor;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.TracedRouteNodes;
-import org.apache.camel.util.MessageHelper;
-
-/**
- * Default {@link TraceEventMessage}.
- */
-@Deprecated
-public final class DefaultTraceEventMessage implements Serializable, TraceEventMessage {
-    private static final long serialVersionUID = -4549012920528941203L;
-
-    private Date timestamp;
-    private String fromEndpointUri;
-    private String previousNode;
-    private String toNode;
-    private String exchangeId;
-    private String shortExchangeId;
-    private String exchangePattern;
-    private String properties;
-    private String headers;
-    private String body;
-    private String bodyType;
-    private String outHeaders;
-    private String outBody;
-    private String outBodyType;
-    private String causedByException;
-    private String routeId;
-    private final transient Exchange tracedExchange;
-
-    /**
-     * Creates a {@link DefaultTraceEventMessage} based on the given node it was traced while processing
-     * the current {@link Exchange}
-     *
-     * @param toNode the node where this trace is intercepted
-     * @param exchange the current {@link Exchange}
-     */
-    public DefaultTraceEventMessage(final Date timestamp, final ProcessorDefinition<?> toNode, final Exchange exchange) {
-        this.tracedExchange = exchange;
-        Message in = exchange.getIn();
-
-        // need to use defensive copies to avoid Exchange altering after the point of interception
-        this.timestamp = timestamp;
-        this.fromEndpointUri = exchange.getFromEndpoint() != null ? exchange.getFromEndpoint().getEndpointUri() : null;
-        this.previousNode = extractFromNode(exchange);
-        this.toNode = extractToNode(exchange);
-        this.exchangeId = exchange.getExchangeId();
-        this.routeId = exchange.getFromRouteId();
-        this.shortExchangeId = extractShortExchangeId(exchange);
-        this.exchangePattern = exchange.getPattern().toString();
-        this.properties = exchange.getProperties().isEmpty() ? null : exchange.getProperties().toString();
-        this.headers = in.getHeaders().isEmpty() ? null : in.getHeaders().toString();
-        // We should not turn the message body into String
-        this.body = MessageHelper.extractBodyForLogging(in, "");
-        this.bodyType = MessageHelper.getBodyTypeName(in);
-        if (exchange.hasOut()) {
-            Message out = exchange.getOut();
-            this.outHeaders = out.getHeaders().isEmpty() ? null : out.getHeaders().toString();
-            this.outBody = MessageHelper.extractBodyAsString(out);
-            this.outBodyType = MessageHelper.getBodyTypeName(out);
-        }
-        this.causedByException = extractCausedByException(exchange);
-    }
-
-    // Implementation
-    //---------------------------------------------------------------
-
-    private static String extractCausedByException(Exchange exchange) {
-        Throwable cause = exchange.getException();
-        if (cause == null) {
-            cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
-        }
-
-        if (cause != null) {
-            return cause.toString();
-        } else {
-            return null;
-        }
-    }
-
-    private static String extractShortExchangeId(Exchange exchange) {
-        return exchange.getExchangeId().substring(exchange.getExchangeId().indexOf("/") + 1);
-    }
-
-    private static String extractFromNode(Exchange exchange) {
-        if (exchange.getUnitOfWork() != null) {
-            TracedRouteNodes traced = exchange.getUnitOfWork().getTracedRouteNodes();
-            if (traced != null) {
-                RouteNode last = traced.getSecondLastNode();
-                return last != null ? last.getLabel(exchange) : null;
-            }
-        }
-        return null;
-    }
-
-    private static String extractToNode(Exchange exchange) {
-        if (exchange.getUnitOfWork() != null) {
-            TracedRouteNodes traced = exchange.getUnitOfWork().getTracedRouteNodes();
-            if (traced != null) {
-                RouteNode last = traced.getLastNode();
-                return last != null ? last.getLabel(exchange) : null;
-            }
-        }
-        return null;
-    }
-
-    // Properties
-    //---------------------------------------------------------------
-
-    public Date getTimestamp() {
-        return timestamp;
-    }
-
-    public String getFromEndpointUri() {
-        return fromEndpointUri;
-    }
-
-    public String getPreviousNode() {
-        return previousNode;
-    }
-
-    public String getToNode() {
-        return toNode;
-    }
-
-    public String getExchangeId() {
-        return exchangeId;
-    }
-
-    public String getRouteId() {
-        return routeId;
-    }
-
-    public String getShortExchangeId() {
-        return shortExchangeId;
-    }
-
-    public String getExchangePattern() {
-        return exchangePattern;
-    }
-
-    public String getProperties() {
-        return properties;
-    }
-
-    public String getHeaders() {
-        return headers;
-    }
-
-    public String getBody() {
-        return body;
-    }
-
-    public String getBodyType() {
-        return bodyType;
-    }
-
-    public String getOutBody() {
-        return outBody;
-    }
-
-    public String getOutBodyType() {
-        return outBodyType;
-    }
-
-    public String getOutHeaders() {
-        return outHeaders;
-    }
-
-    public String getCausedByException() {
-        return causedByException;
-    }
-
-    public void setTimestamp(Date timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    public void setFromEndpointUri(String fromEndpointUri) {
-        this.fromEndpointUri = fromEndpointUri;
-    }
-
-    public void setPreviousNode(String previousNode) {
-        this.previousNode = previousNode;
-    }
-
-    public void setToNode(String toNode) {
-        this.toNode = toNode;
-    }
-
-    public void setExchangeId(String exchangeId) {
-        this.exchangeId = exchangeId;
-    }
-
-    public void setRouteId(String routeId) {
-        this.routeId = routeId;
-    }
-
-    public void setShortExchangeId(String shortExchangeId) {
-        this.shortExchangeId = shortExchangeId;
-    }
-
-    public void setExchangePattern(String exchangePattern) {
-        this.exchangePattern = exchangePattern;
-    }
-
-    public void setProperties(String properties) {
-        this.properties = properties;
-    }
-
-    public void setHeaders(String headers) {
-        this.headers = headers;
-    }
-
-    public void setBody(String body) {
-        this.body = body;
-    }
-
-    public void setBodyType(String bodyType) {
-        this.bodyType = bodyType;
-    }
-
-    public void setOutBody(String outBody) {
-        this.outBody = outBody;
-    }
-
-    public void setOutBodyType(String outBodyType) {
-        this.outBodyType = outBodyType;
-    }
-
-    public void setOutHeaders(String outHeaders) {
-        this.outHeaders = outHeaders;
-    }
-
-    public void setCausedByException(String causedByException) {
-        this.causedByException = causedByException;
-    }
-
-    public Exchange getTracedExchange() {
-        return tracedExchange;
-    }
-
-    @Override
-    public String toString() {
-        return "TraceEventMessage[" + exchangeId + "] on node: " + toNode;
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
deleted file mode 100644
index 7c35952..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
+++ /dev/null
@@ -1,402 +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.processor.interceptor;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.ProcessorDefinitionHelper;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.spi.TracedRouteNodes;
-import org.apache.camel.util.MessageHelper;
-
-/**
- * @version 
- */
-@Deprecated
-public class DefaultTraceFormatter implements TraceFormatter {
-    
-    protected static final String LS = System.lineSeparator();
-    private static final String SEPARATOR = "###REPLACE_ME###";
-    
-    private int breadCrumbLength;
-    private int nodeLength;
-    private boolean showBreadCrumb = true;
-    private boolean showNode = true;
-    private boolean showExchangeId;
-    private boolean showShortExchangeId;
-    private boolean showExchangePattern = true;
-    private boolean showProperties;
-    private boolean showHeaders = true;
-    private boolean showBody = true;
-    private boolean showBodyType = true;
-    private boolean showOutHeaders;
-    private boolean showOutBody;
-    private boolean showOutBodyType;
-    private boolean showException = true;
-    private boolean showRouteId = true;
-    private boolean multiline;
-
-    private int maxChars = 10000;
-
-    public Object format(final TraceInterceptor interceptor, final ProcessorDefinition<?> node, final Exchange exchange) {
-        Message in = exchange.getIn();
-        Message out = null;
-        if (exchange.hasOut()) {
-            out = exchange.getOut();
-        }
-
-        StringBuilder sb = new StringBuilder();
-        if (multiline) {
-            sb.append(SEPARATOR);
-        }
-        sb.append(extractBreadCrumb(interceptor, node, exchange));
-        
-        if (showExchangePattern) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", Pattern:").append(exchange.getPattern());
-        }
-        // only show properties if we have any
-        if (showProperties && !exchange.getProperties().isEmpty()) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", Properties:").append(exchange.getProperties());
-        }
-        // only show headers if we have any
-        if (showHeaders && !in.getHeaders().isEmpty()) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", Headers:").append(in.getHeaders());
-        }
-        if (showBodyType) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", BodyType:").append(MessageHelper.getBodyTypeName(in));
-        }
-        if (showBody) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", Body:").append(MessageHelper.extractBodyForLogging(in, ""));
-        }
-        if (showOutHeaders && out != null) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", OutHeaders:").append(out.getHeaders());
-        }
-        if (showOutBodyType && out != null) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", OutBodyType:").append(MessageHelper.getBodyTypeName(out));
-        }
-        if (showOutBody && out != null) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", OutBody:").append(MessageHelper.extractBodyForLogging(out, ""));
-        }        
-        if (showException && exchange.getException() != null) {
-            if (multiline) {
-                sb.append(SEPARATOR);
-            }
-            sb.append(", Exception:").append(exchange.getException());
-        }
-
-        // replace ugly <<<, with <<<
-        sb = new StringBuilder(sb.toString().replaceFirst("<<<,", "<<<"));
-        
-        if (maxChars > 0) {
-            StringBuilder answer = new StringBuilder();
-            for (String s : sb.toString().split(SEPARATOR)) {
-                if (s != null) {
-                    if (s.length() > maxChars) {
-                        s = s.substring(0, maxChars);
-                        answer.append(s).append("...");
-                    } else {
-                        answer.append(s);
-                    }
-                    if (multiline) {
-                        answer.append(LS);
-                    }
-                }
-            }
-
-            // switch string buffer
-            sb = answer;
-        }
-
-        return sb.toString();
-    }
-
-    public boolean isShowBody() {
-        return showBody;
-    }
-
-    public void setShowBody(boolean showBody) {
-        this.showBody = showBody;
-    }
-
-    public boolean isShowBodyType() {
-        return showBodyType;
-    }
-
-    public void setShowBodyType(boolean showBodyType) {
-        this.showBodyType = showBodyType;
-    }
-
-    public void setShowOutBody(boolean showOutBody) {
-        this.showOutBody = showOutBody;
-    }
-
-    public boolean isShowOutBody() {
-        return showOutBody;
-    }    
-    
-    public void setShowOutBodyType(boolean showOutBodyType) {
-        this.showOutBodyType = showOutBodyType;
-    }
-
-    public boolean isShowOutBodyType() {
-        return showOutBodyType;
-    }    
-    
-    public boolean isShowBreadCrumb() {
-        return showBreadCrumb;
-    }
-
-    public void setShowBreadCrumb(boolean showBreadCrumb) {
-        this.showBreadCrumb = showBreadCrumb;
-    }
-
-    public boolean isShowExchangeId() {
-        return showExchangeId;
-    }
-
-    public void setShowExchangeId(boolean showExchangeId) {
-        this.showExchangeId = showExchangeId;
-    }
-
-    public boolean isShowHeaders() {
-        return showHeaders;
-    }
-
-    public void setShowHeaders(boolean showHeaders) {
-        this.showHeaders = showHeaders;
-    }
-
-    public boolean isShowOutHeaders() {
-        return showOutHeaders;
-    }
-
-    public void setShowOutHeaders(boolean showOutHeaders) {
-        this.showOutHeaders = showOutHeaders;
-    }
-
-    public boolean isShowProperties() {
-        return showProperties;
-    }
-
-    public void setShowProperties(boolean showProperties) {
-        this.showProperties = showProperties;
-    }
-
-    public boolean isShowNode() {
-        return showNode;
-    }
-
-    public void setShowNode(boolean showNode) {
-        this.showNode = showNode;
-    }
-
-    public boolean isShowExchangePattern() {
-        return showExchangePattern;
-    }
-
-    public void setShowExchangePattern(boolean showExchangePattern) {
-        this.showExchangePattern = showExchangePattern;
-    }
-
-    public boolean isShowException() {
-        return showException;
-    }
-
-    public void setShowException(boolean showException) {
-        this.showException = showException;
-    }
-
-    public boolean isShowRouteId() {
-        return showRouteId;
-    }
-
-    public void setShowRouteId(boolean showRouteId) {
-        this.showRouteId = showRouteId;
-    }
-
-    public boolean isMultiline() {
-        return multiline;
-    }
-
-    public void setMultiline(boolean multiline) {
-        this.multiline = multiline;
-    }
-
-    public int getBreadCrumbLength() {
-        return breadCrumbLength;
-    }
-
-    public void setBreadCrumbLength(int breadCrumbLength) {
-        this.breadCrumbLength = breadCrumbLength;
-    }
-
-    public boolean isShowShortExchangeId() {
-        return showShortExchangeId;
-    }
-
-    public void setShowShortExchangeId(boolean showShortExchangeId) {
-        this.showShortExchangeId = showShortExchangeId;
-    }
-
-    public int getNodeLength() {
-        return nodeLength;
-    }
-
-    public void setNodeLength(int nodeLength) {
-        this.nodeLength = nodeLength;
-    }
-
-    public int getMaxChars() {
-        return maxChars;
-    }
-
-    public void setMaxChars(int maxChars) {
-        this.maxChars = maxChars;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    protected String extractRoute(ProcessorDefinition<?> node) {
-        RouteDefinition route = ProcessorDefinitionHelper.getRoute(node);
-        if (route != null) {
-            return route.getId();
-        } else {
-            return null;
-        }
-    }
-
-    protected Object getBreadCrumbID(Exchange exchange) {
-        return exchange.getExchangeId();
-    }
-
-    protected String getNodeMessage(RouteNode entry, Exchange exchange) {
-        String message = entry.getLabel(exchange);
-        if (nodeLength > 0) {
-            return String.format("%1$-" + nodeLength + "." + nodeLength + "s", message);
-        } else {
-            return message;
-        }
-    }
-    
-    /**
-     * Creates the breadcrumb based on whether this was a trace of
-     * an exchange coming out of or into a processing step. For example, 
-     * <br/><tt>transform(body) -> ID-mojo/39713-1225468755256/2-0</tt>
-     * <br/>or
-     * <br/><tt>ID-mojo/39713-1225468755256/2-0 -> transform(body)</tt>
-     */
-    protected String extractBreadCrumb(TraceInterceptor interceptor, ProcessorDefinition<?> currentNode, Exchange exchange) {
-        String id = "";
-        String result;
-        
-        if (!showBreadCrumb && !showExchangeId && !showShortExchangeId && !showNode) {
-            return "";
-        }
-
-        // compute breadcrumb id
-        if (showBreadCrumb) {
-            id = getBreadCrumbID(exchange).toString();
-        } else if (showExchangeId || showShortExchangeId) {
-            id = getBreadCrumbID(exchange).toString();
-            if (showShortExchangeId) {
-                // only output last part of id
-                id = id.substring(id.lastIndexOf('-') + 1);
-            }
-        }
-
-        // compute from, to and route
-        String from = "";
-        String to = "";
-        String route = "";
-        if (showNode || showRouteId) {
-            if (exchange.getUnitOfWork() != null) {
-                TracedRouteNodes traced = exchange.getUnitOfWork().getTracedRouteNodes();
-                if (traced != null) {
-                    RouteNode traceFrom = traced.getSecondLastNode();
-                    if (traceFrom != null) {
-                        from = getNodeMessage(traceFrom, exchange);
-                    } else if (exchange.getFromEndpoint() != null) {
-                        from = "from(" + exchange.getFromEndpoint().getEndpointUri() + ")";
-                    }
-
-                    RouteNode traceTo = traced.getLastNode();
-                    if (traceTo != null) {
-                        to = getNodeMessage(traceTo, exchange);
-                        // if its an abstract dummy holder then we have to get the 2nd last so we can get the real node that has
-                        // information which route it belongs to
-                        if (traceTo.isAbstract() && traceTo.getProcessorDefinition() == null) {
-                            traceTo = traced.getSecondLastNode();
-                        }
-                        if (traceTo != null) {
-                            route = extractRoute(traceTo.getProcessorDefinition());
-                        }
-                    }
-                }
-            }
-        }
-
-        // assemble result with and without the to/from
-        if (showNode) {
-            if (showRouteId && route != null) {
-                result = id.trim() + " >>> (" + route + ") " + from + " --> " + to.trim() + " <<< ";
-            } else {
-                result = id.trim() + " >>> " + from + " --> " + to.trim() + " <<< ";
-            }
-
-            if (interceptor.shouldTraceOutExchanges() && exchange.hasOut()) {
-                result += " (OUT) ";
-            }
-        } else {
-            result = id;
-        }
-
-        if (breadCrumbLength > 0) {
-            // we want to ensure text coming after this is aligned for readability
-            return String.format("%1$-" + breadCrumbLength + "." + breadCrumbLength + "s", result.trim());
-        } else {
-            return result.trim();
-        }
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceInterceptorFactory.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceInterceptorFactory.java
deleted file mode 100644
index 87aee7c..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceInterceptorFactory.java
+++ /dev/null
@@ -1,29 +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.processor.interceptor;
-
-import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
-
-@Deprecated
-public class DefaultTraceInterceptorFactory implements TraceInterceptorFactory {
-
-    public Processor createTraceInterceptor(ProcessorDefinition<?> node, Processor target, TraceFormatter formatter, Tracer tracer) {
-        return new TraceInterceptor(node, target, formatter, tracer);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventHandler.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventHandler.java
deleted file mode 100644
index d43378c..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventHandler.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.processor.interceptor;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * A handler which reacts on trace events.
- */
-@Deprecated
-public interface TraceEventHandler {
-
-    /**
-     * Event called when an {@link Exchange} is about to be processed
-     * <p/>
-     * This event is only called if trace out has been disabled (which it is by default).
-     * <p/>
-     * This method is for coarse grained tracing, where as the other two methods is for fine grained
-     * with in and event events.
-     *
-     * @param node             the current node
-     * @param target           the current processor being invoked
-     * @param traceInterceptor the trace interceptor
-     * @param exchange         the current exchange
-     * @throws Exception is thrown if an error occurred during tracing
-     */
-    void traceExchange(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception;
-
-    /**
-     * Event called when an {@link Exchange} is about to be processed (in)
-     * <p/>
-     * This event is only called if trace out has been enabled.
-     *
-     * @param node             the current node
-     * @param target           the current processor being invoked
-     * @param traceInterceptor the trace interceptor
-     * @param exchange         the current exchange
-     * @return an optional return object to pass in the <tt>traceEventOut</tt> method.
-     * @throws Exception is thrown if an error occurred during tracing
-     */
-    Object traceExchangeIn(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception;
-
-    /**
-     * Event called when an {@link Exchange} has been processed (out)
-     * <p/>
-     * This event is only called if trace out has been enabled.
-     *
-     * @param node             the current node
-     * @param target           the current processor being invoked
-     * @param traceInterceptor the trace interceptor
-     * @param exchange         the current exchange (contains exception if the processing failed with an exception)
-     * @param traceState       the optional object which was returned from the <tt>traceEventIn</tt> method.
-     * @throws Exception is thrown if an error occurred during tracing
-     */
-    void traceExchangeOut(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange, Object traceState) throws Exception;
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java
deleted file mode 100644
index ef095ad..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java
+++ /dev/null
@@ -1,98 +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.processor.interceptor;
-
-import java.util.Date;
-
-import org.apache.camel.Exchange;
-
-/**
- * A trace event message that contains decomposed information about the traced
- * {@link org.apache.camel.Exchange} at the point of interception. The information is stored as snapshot copies
- * using String types.
- * <p/>
- * Notice not all implementations may provide direct access to the traced {@link Exchange} using
- * the {@link #getTracedExchange()} method, and thus this method may return <tt>null</tt>.
- * For example the JPA implementation will return <tt>null</tt>.
- */
-public interface TraceEventMessage {
-
-    /**
-     * Gets the timestamp when the interception occurred
-     */
-    Date getTimestamp();
-
-    /**
-     * Uri of the endpoint that started the {@link org.apache.camel.Exchange} currently being traced.
-     */
-    String getFromEndpointUri();
-
-    /**
-     * Gets the previous node.
-     * <p/>
-     * Will return <tt>null</tt> if this is the first node, then you can use the from endpoint uri
-     * instead to indicate the start
-     */
-    String getPreviousNode();
-
-    /**
-     * Gets the current node that just have been intercepted and processed
-     * <p/>
-     * Is never <tt>null</tt>.
-     */
-    String getToNode();
-
-    String getExchangeId();
-
-    String getRouteId();
-
-    /**
-     * Gets the exchange id without the leading hostname
-     */
-    String getShortExchangeId();
-
-    String getExchangePattern();
-
-    String getProperties();
-
-    String getHeaders();
-
-    String getBody();
-
-    String getBodyType();
-
-    String getOutBody();
-
-    String getOutBodyType();
-
-    String getOutHeaders();
-
-    /**
-     * Gets the caused by exception (ie {@link org.apache.camel.Exchange#getException() Exchange#getException()}.
-     */
-    String getCausedByException();
-
-    /**
-     * Gets the traced {@link Exchange}.
-     * <p/>
-     * Not all implementations may provide direct access to the traced {@link Exchange} and thus this
-     * method may return <tt>null</tt>. For example the JPA implementation will return <tt>null</tt>.
-     *
-     * @return the traced {@link Exchange}, however it can be <tt>null</tt> in some implementations.
-     */
-    Exchange getTracedExchange();
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
deleted file mode 100644
index 91fc147..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
+++ /dev/null
@@ -1,37 +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.processor.interceptor;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * Formatter to format trace logs when tracing {@link Exchange} during routing.
- */
-@Deprecated
-public interface TraceFormatter {
-
-    /**
-     * Formats a log message at given point of interception.
-     * 
-     * @param interceptor    the tracing interceptor
-     * @param node           the node where the interception occurred
-     * @param exchange       the current exchange
-     * @return the log message
-     */
-    Object format(TraceInterceptor interceptor, ProcessorDefinition<?> node, Exchange exchange);
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
deleted file mode 100644
index 8bad774..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
+++ /dev/null
@@ -1,390 +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.processor.interceptor;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.impl.AggregateRouteNode;
-import org.apache.camel.impl.DefaultRouteNode;
-import org.apache.camel.impl.DoCatchRouteNode;
-import org.apache.camel.impl.DoFinallyRouteNode;
-import org.apache.camel.impl.OnCompletionRouteNode;
-import org.apache.camel.impl.OnExceptionRouteNode;
-import org.apache.camel.model.AggregateDefinition;
-import org.apache.camel.model.CatchDefinition;
-import org.apache.camel.model.Constants;
-import org.apache.camel.model.FinallyDefinition;
-import org.apache.camel.model.InterceptDefinition;
-import org.apache.camel.model.OnCompletionDefinition;
-import org.apache.camel.model.OnExceptionDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.ProcessorDefinitionHelper;
-import org.apache.camel.processor.CamelLogProcessor;
-import org.apache.camel.processor.DefaultMaskingFormatter;
-import org.apache.camel.processor.DelegateAsyncProcessor;
-import org.apache.camel.spi.ExchangeFormatter;
-import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.spi.MaskingFormatter;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.TracedRouteNodes;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * An interceptor for debugging and tracing routes
- *
- * @version 
- */
-@Deprecated
-public class TraceInterceptor extends DelegateAsyncProcessor implements ExchangeFormatter {
-    private static final Logger LOG = LoggerFactory.getLogger(TraceInterceptor.class);
-
-    private CamelLogProcessor logger;
-
-    private final ProcessorDefinition<?> node;
-    private final Tracer tracer;
-    private TraceFormatter formatter;
-
-    private RouteContext routeContext;
-    private List<TraceEventHandler> traceHandlers;
-
-    public TraceInterceptor(ProcessorDefinition<?> node, Processor target, TraceFormatter formatter, Tracer tracer) {
-        super(target);
-        this.tracer = tracer;
-        this.node = node;
-        this.formatter = formatter;
-        this.logger = tracer.getLogger(this);
-        if (tracer.getFormatter() != null) {
-            this.formatter = tracer.getFormatter();
-        }
-        this.traceHandlers = tracer.getTraceHandlers();
-    }
-
-    @Override
-    public String toString() {
-        return "TraceInterceptor[" + node + "]";
-    }
-
-    public void setRouteContext(RouteContext routeContext) {
-        this.routeContext = routeContext;
-        prepareMaskingFormatter(routeContext);
-    }
-
-    private void prepareMaskingFormatter(RouteContext routeContext) {
-        if (routeContext.isLogMask()) {
-            MaskingFormatter formatter = routeContext.getCamelContext().getRegistry().lookupByNameAndType(Constants.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
-            if (formatter == null) {
-                formatter = new DefaultMaskingFormatter();
-            }
-            logger.setMaskingFormatter(formatter);
-        }
-    }
-
-    @Override
-    public boolean process(final Exchange exchange, final AsyncCallback callback) {
-        // do not trace if tracing is disabled
-        if (!tracer.isEnabled() || (routeContext != null && !routeContext.isTracing())) {
-            return processor.process(exchange, callback);
-        }
-
-        // interceptor will also trace routes supposed only for TraceEvents so we need to skip
-        // logging TraceEvents to avoid infinite looping
-        if (exchange.getProperty(Exchange.TRACE_EVENT, false, Boolean.class)) {
-            // but we must still process to allow routing of TraceEvents to eg a JPA endpoint
-            return processor.process(exchange, callback);
-        }
-
-        final boolean shouldLog = shouldLogNode(node) && shouldLogExchange(exchange);
-
-        // whether we should trace it or not, some nodes should be skipped as they are abstract
-        // intermediate steps for instance related to on completion
-        boolean trace = true;
-        boolean sync = true;
-
-        // okay this is a regular exchange being routed we might need to log and trace
-        try {
-            // before
-            if (shouldLog) {
-                // traced holds the information about the current traced route path
-                if (exchange.getUnitOfWork() != null) {
-                    TracedRouteNodes traced = exchange.getUnitOfWork().getTracedRouteNodes();
-                    if (traced != null) {
-                        if (node instanceof OnCompletionDefinition || node instanceof OnExceptionDefinition) {
-                            // skip any of these as its just a marker definition
-                            trace = false;
-                        } else if (ProcessorDefinitionHelper.isFirstChildOfType(OnCompletionDefinition.class, node)) {
-                            // special for on completion tracing
-                            traceOnCompletion(traced, exchange);
-                        } else if (ProcessorDefinitionHelper.isFirstChildOfType(OnExceptionDefinition.class, node)) {
-                            // special for on exception
-                            traceOnException(traced, exchange);
-                        } else if (ProcessorDefinitionHelper.isFirstChildOfType(CatchDefinition.class, node)) {
-                            // special for do catch
-                            traceDoCatch(traced, exchange);
-                        } else if (ProcessorDefinitionHelper.isFirstChildOfType(FinallyDefinition.class, node)) {
-                            // special for do finally
-                            traceDoFinally(traced, exchange);
-                        } else if (ProcessorDefinitionHelper.isFirstChildOfType(AggregateDefinition.class, node)) {
-                            // special for aggregate
-                            traceAggregate(traced, exchange);
-                        } else {
-                            // regular so just add it
-                            traced.addTraced(new DefaultRouteNode(node, super.getProcessor()));
-                        }
-                    }
-                } else {
-                    LOG.trace("Cannot trace as this Exchange does not have an UnitOfWork: {}", exchange);
-                }
-            }
-
-            // log and trace the processor
-            Object state = null;
-            if (shouldLog && trace) {
-                logExchange(exchange);
-                // either call the in or generic trace method depending on OUT has been enabled or not
-                if (tracer.isTraceOutExchanges()) {
-                    state = traceExchangeIn(exchange);
-                } else {
-                    traceExchange(exchange);
-                }
-            }
-            final Object traceState = state;
-
-            // special for interceptor where we need to keep booking how far we have routed in the intercepted processors
-            if (node.getParent() instanceof InterceptDefinition && exchange.getUnitOfWork() != null) {
-                TracedRouteNodes traced = exchange.getUnitOfWork().getTracedRouteNodes();
-                if (traced != null) {
-                    traceIntercept((InterceptDefinition) node.getParent(), traced, exchange);
-                }
-            }
-
-            // process the exchange
-            sync = processor.process(exchange, new AsyncCallback() {
-                @Override
-                public void done(boolean doneSync) {
-                    try {
-                        // after (trace out)
-                        if (shouldLog && tracer.isTraceOutExchanges()) {
-                            logExchange(exchange);
-                            traceExchangeOut(exchange, traceState);
-                        }
-                    } catch (Throwable e) {
-                        // some exception occurred in trace logic
-                        if (shouldLogException(exchange)) {
-                            logException(exchange, e);
-                        }
-                        exchange.setException(e);
-                    } finally {
-                        // ensure callback is always invoked
-                        callback.done(doneSync);
-                    }
-                }
-            });
-
-        } catch (Throwable e) {
-            // some exception occurred in trace logic
-            if (shouldLogException(exchange)) {
-                logException(exchange, e);
-            }
-            exchange.setException(e);
-        }
-
-        return sync;
-    }
-
-    private void traceOnCompletion(TracedRouteNodes traced, Exchange exchange) {
-        traced.addTraced(new OnCompletionRouteNode());
-        // do not log and trace as onCompletion should be a new event on its own
-        // add the next step as well so we have onCompletion -> new step
-        traced.addTraced(new DefaultRouteNode(node, super.getProcessor()));
-    }
-
-    private void traceOnException(TracedRouteNodes traced, Exchange exchange) throws Exception {
-        if (traced.getLastNode() != null) {
-            traced.addTraced(new DefaultRouteNode(traced.getLastNode().getProcessorDefinition(), traced.getLastNode().getProcessor()));
-        }
-        traced.addTraced(new OnExceptionRouteNode());
-        // log and trace so we have the from -> onException event as well
-        logExchange(exchange);
-        traceExchange(exchange);
-        traced.addTraced(new DefaultRouteNode(node, super.getProcessor()));
-    }
-
-    private void traceDoCatch(TracedRouteNodes traced, Exchange exchange) throws Exception {
-        if (traced.getLastNode() != null) {
-            traced.addTraced(new DefaultRouteNode(traced.getLastNode().getProcessorDefinition(), traced.getLastNode().getProcessor()));
-        }
-        traced.addTraced(new DoCatchRouteNode());
-        // log and trace so we have the from -> doCatch event as well
-        logExchange(exchange);
-        traceExchange(exchange);
-        traced.addTraced(new DefaultRouteNode(node, super.getProcessor()));
-    }
-
-    private void traceDoFinally(TracedRouteNodes traced, Exchange exchange) throws Exception {
-        if (traced.getLastNode() != null) {
-            traced.addTraced(new DefaultRouteNode(traced.getLastNode().getProcessorDefinition(), traced.getLastNode().getProcessor()));
-        }
-        traced.addTraced(new DoFinallyRouteNode());
-        // log and trace so we have the from -> doFinally event as well
-        logExchange(exchange);
-        traceExchange(exchange);
-        traced.addTraced(new DefaultRouteNode(node, super.getProcessor()));
-    }
-
-    private void traceAggregate(TracedRouteNodes traced, Exchange exchange) {
-        traced.addTraced(new AggregateRouteNode((AggregateDefinition) node.getParent()));
-        traced.addTraced(new DefaultRouteNode(node, super.getProcessor()));
-    }
-
-    protected void traceIntercept(InterceptDefinition intercept, TracedRouteNodes traced, Exchange exchange) throws Exception {
-        // use the counter to get the index of the intercepted processor to be traced
-        Processor last = intercept.getInterceptedProcessor(traced.getAndIncrementCounter(intercept));
-        // skip doing any double tracing of interceptors, so the last must not be a TraceInterceptor instance
-        if (last != null && !(last instanceof TraceInterceptor)) {
-            traced.addTraced(new DefaultRouteNode(node, last));
-
-            boolean shouldLog = shouldLogNode(node) && shouldLogExchange(exchange);
-            if (shouldLog) {
-                // log and trace the processor that was intercepted so we can see it
-                logExchange(exchange);
-                traceExchange(exchange);
-            }
-        }
-    }
-
-    public String format(Exchange exchange) {
-        Object msg = formatter.format(this, this.getNode(), exchange);
-        if (msg != null) {
-            return msg.toString();
-        } else {
-            return null;
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public ProcessorDefinition<?> getNode() {
-        return node;
-    }
-
-    public CamelLogProcessor getLogger() {
-        return logger;
-    }
-
-    public TraceFormatter getFormatter() {
-        return formatter;
-    }
-
-    public Tracer getTracer() {
-        return tracer;
-    }
-
-    protected void logExchange(Exchange exchange) throws Exception {
-        // process the exchange that formats and logs it
-        logger.process(exchange);
-    }
-
-    protected void traceExchange(Exchange exchange) throws Exception {
-        for (TraceEventHandler traceHandler : traceHandlers) {
-            traceHandler.traceExchange(node, processor, this, exchange);
-        }
-    }
-
-    protected Object traceExchangeIn(Exchange exchange) throws Exception {
-        Object result = null;
-        for (TraceEventHandler traceHandler : traceHandlers) {
-            Object result1 = traceHandler.traceExchangeIn(node, processor, this, exchange);
-            if (result1 != null) {
-                result = result1;
-            }
-        }
-        return result;
-    }
-
-    protected void traceExchangeOut(Exchange exchange, Object traceState) throws Exception {
-        for (TraceEventHandler traceHandler : traceHandlers) {
-            traceHandler.traceExchangeOut(node, processor, this, exchange, traceState);
-        }
-    }
-
-    protected void logException(Exchange exchange, Throwable throwable) {
-        if (tracer.isTraceExceptions()) {
-            if (tracer.isLogStackTrace()) {
-                logger.process(exchange, throwable);
-            } else {
-                logger.process(exchange, ", Exception: " + throwable.toString());
-            }
-        }
-    }
-
-    /**
-     * Returns true if the given exchange should be logged in the trace list
-     */
-    protected boolean shouldLogExchange(Exchange exchange) {
-        return tracer.isEnabled() && (tracer.getTraceFilter() == null || tracer.getTraceFilter().matches(exchange));
-    }
-
-    /**
-     * Returns true if the given exchange should be logged when an exception was thrown
-     */
-    protected boolean shouldLogException(Exchange exchange) {
-        return tracer.isTraceExceptions();
-    }
-
-    /**
-     * Returns whether exchanges coming out of processors should be traced
-     */
-    public boolean shouldTraceOutExchanges() {
-        return tracer.isTraceOutExchanges();
-    }
-
-    /**
-     * Returns true if the given node should be logged in the trace list
-     */
-    protected boolean shouldLogNode(ProcessorDefinition<?> node) {
-        if (node == null) {
-            return false;
-        }
-        if (!tracer.isTraceInterceptors() && (node instanceof InterceptStrategy)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        ServiceHelper.startService(traceHandlers);
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-        ServiceHelper.stopService(traceHandlers);
-    }
-
-    @Deprecated
-    public void setTraceHandler(TraceEventHandler traceHandler) {
-        traceHandlers = Collections.singletonList(traceHandler);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptorFactory.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptorFactory.java
deleted file mode 100644
index 51eaeb5..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptorFactory.java
+++ /dev/null
@@ -1,44 +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.processor.interceptor;
-
-import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * Factory to create the trace interceptor.
- */
-@Deprecated
-public interface TraceInterceptorFactory {
-
-    /**
-     * Create a trace interceptor.
-     * <p/>
-     * It is expected that the factory will create a subclass of {@link TraceInterceptor},
-     * however any Processor will suffice.
-     * <p/>
-     * Use this factory to take more control of how trace events are persisted.
-     *
-     * @param node      the current node
-     * @param target    the current target
-     * @param formatter the trace formatter
-     * @param tracer    the tracer
-     * @return the created trace interceptor
-     */
-    Processor createTraceInterceptor(ProcessorDefinition<?> node, Processor target, TraceFormatter formatter, Tracer tracer);
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
deleted file mode 100644
index df5e04b..0000000
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
+++ /dev/null
@@ -1,374 +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.processor.interceptor;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
-import org.apache.camel.Service;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.RouteDefinitionHelper;
-import org.apache.camel.processor.CamelLogProcessor;
-import org.apache.camel.spi.ExchangeFormatter;
-import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.util.CamelLogger;
-
-/**
- * An interceptor strategy for tracing routes
- *
- * @version 
- */
-@Deprecated
-public class Tracer implements InterceptStrategy, Service {
-    private static final String JPA_TRACE_EVENT_MESSAGE = "org.apache.camel.processor.interceptor.jpa.JpaTraceEventMessage";
-
-    private TraceFormatter formatter = new DefaultTraceFormatter();
-    private boolean enabled = true;
-    private String logName = Tracer.class.getName();
-    private LoggingLevel logLevel = LoggingLevel.INFO;
-    private Predicate traceFilter;
-    private boolean traceInterceptors;
-    private boolean traceExceptions = true;
-    private boolean logStackTrace;
-    private boolean traceOutExchanges;
-    private String destinationUri;
-    private Endpoint destination;
-    private boolean useJpa;
-    private CamelLogProcessor logger;
-    private TraceInterceptorFactory traceInterceptorFactory = new DefaultTraceInterceptorFactory();
-    private final List<TraceEventHandler> traceHandlers = new CopyOnWriteArrayList<>();
-    private String jpaTraceEventMessageClassName = JPA_TRACE_EVENT_MESSAGE;
-    private boolean jmxTraceNotifications;
-    private int traceBodySize = 10000;
-    
-    public Tracer() {
-        traceHandlers.add(new DefaultTraceEventHandler(this));
-    }
-
-    /**
-     * Creates a new tracer.
-     *
-     * @param context Camel context
-     * @return a new tracer
-     */
-    public static Tracer createTracer(CamelContext context) {
-        Tracer tracer = new Tracer();
-        // lets see if we have a formatter if so use it
-        TraceFormatter formatter = context.getRegistry().lookupByNameAndType("traceFormatter", TraceFormatter.class);
-        if (formatter != null) {
-            tracer.setFormatter(formatter);
-        }
-        return tracer;
-    }
-
-    /**
-     * A helper method to return the Tracer instance if one is enabled
-     *
-     * @return the tracer or null if none can be found
-     */
-    public static Tracer getTracer(CamelContext context) {
-        List<InterceptStrategy> list = context.getInterceptStrategies();
-        for (InterceptStrategy interceptStrategy : list) {
-            if (interceptStrategy instanceof Tracer) {
-                return (Tracer) interceptStrategy;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Gets the logger to be used for tracers that can format and log a given exchange.
-     *
-     * @param formatter the exchange formatter
-     * @return the logger to use
-     */
-    public synchronized CamelLogProcessor getLogger(ExchangeFormatter formatter) {
-        if (logger == null) {
-            logger = new CamelLogProcessor(new CamelLogger(getLogName(), getLogLevel()), formatter, null, null);
-        }
-        return logger;
-    }
-
-    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition,
-                                                 Processor target, Processor nextTarget) throws Exception {
-        // Force the creation of an id, otherwise the id is not available when the trace formatter is
-        // outputting trace information
-        RouteDefinitionHelper.forceAssignIds(context, definition);
-        return getTraceInterceptorFactory().createTraceInterceptor(definition, target, formatter, this);
-    }
-
-    public TraceFormatter getFormatter() {
-        return formatter;
-    }
-
-    public DefaultTraceFormatter getDefaultTraceFormatter() {
-        if (formatter instanceof DefaultTraceFormatter) {
-            return (DefaultTraceFormatter) formatter;
-        }
-        return null;
-    }
-
-    public void setFormatter(TraceFormatter formatter) {
-        this.formatter = formatter;
-    }
-
-    public void setEnabled(boolean flag) {
-        enabled = flag;
-    }
-
-    public boolean isEnabled() {
-        return enabled;
-    }
-
-    public boolean isTraceInterceptors() {
-        return traceInterceptors;
-    }
-
-    /**
-     * Sets whether interceptors should be traced or not
-     */
-    public void setTraceInterceptors(boolean traceInterceptors) {
-        this.traceInterceptors = traceInterceptors;
-    }
-
-    public Predicate getTraceFilter() {
-        return traceFilter;
-    }
-
-    /**
-     * Sets a predicate to be used as filter when tracing
-     */
-    public void setTraceFilter(Predicate traceFilter) {
-        this.traceFilter = traceFilter;
-    }
-
-    public LoggingLevel getLogLevel() {
-        return logLevel;
-    }
-
-    /**
-     * Sets the logging level to output tracing. Will use <tt>INFO</tt> level by default.
-     */
-    public void setLogLevel(LoggingLevel logLevel) {
-        this.logLevel = logLevel;
-        // update logger if its in use
-        if (logger != null) {
-            logger.getLogger().setLevel(logLevel);
-        }
-    }
-
-    public boolean isTraceExceptions() {
-        return traceExceptions;
-    }
-
-    /**
-     * Sets whether thrown exceptions should be traced
-     */
-    public void setTraceExceptions(boolean traceExceptions) {
-        this.traceExceptions = traceExceptions;
-    }
-
-    public boolean isLogStackTrace() {
-        return logStackTrace;
-    }
-
-    /**
-     * Sets whether thrown exception stacktrace should be traced, if disabled then only the exception message is logged
-     */
-    public void setLogStackTrace(boolean logStackTrace) {
-        this.logStackTrace = logStackTrace;
-    }
-
-    public String getLogName() {
-        return logName;
-    }
-
-    /**
-     * Sets the logging name to use.
-     * Will default use <tt>org.apache.camel.processor.interceptor.TraceInterceptor<tt>.
-     */
-    public void setLogName(String logName) {
-        this.logName = logName;
-        // update logger if its in use
-        if (logger != null) {
-            logger.getLogger().setLogName(logName);
-        }
-    }
-
-    /**
-     * Sets whether exchanges coming out of processors should be traced
-     */
-    public void setTraceOutExchanges(boolean traceOutExchanges) {
-        this.traceOutExchanges = traceOutExchanges;
-    }
-
-    public boolean isTraceOutExchanges() {
-        return traceOutExchanges;
-    }
-
-    public String getDestinationUri() {
-        return destinationUri;
-    }
-
-    /**
-     * Sets an optional destination to send the traced Exchange.
-     * <p/>
-     * Can be used to store tracing as files, in a database or whatever. The routing of the Exchange
-     * will happen synchronously and the original route will first continue when this destination routing
-     * has been completed.
-     */
-    public void setDestinationUri(String destinationUri) {
-        this.destinationUri = destinationUri;
-    }
-
-    public Endpoint getDestination() {
-        return destination;
-    }
-
-    /**
-     * See {@link #setDestinationUri(String)}
-     */
-    public void setDestination(Endpoint destination) {
-        this.destination = destination;
-    }
-
-    public boolean isUseJpa() {
-        return useJpa;
-    }
-
-    /**
-     * Sets whether we should use a JpaTraceEventMessage instead of
-     * an ordinary {@link org.apache.camel.processor.interceptor.DefaultTraceEventMessage}
-     * <p/>
-     * Use this to allow persistence of trace events into a database using JPA.
-     * This requires camel-jpa in the classpath.
-     */
-    public void setUseJpa(boolean useJpa) {
-        this.useJpa = useJpa;
-    }
-
-    public TraceInterceptorFactory getTraceInterceptorFactory() {
-        return this.traceInterceptorFactory;
-    }
-
-    /**
-     * Set the factory to be used to create the trace interceptor.
-     * It is expected that the factory will create a subclass of TraceInterceptor.
-     * <p/>
-     * Use this to take complete control of how trace events are handled.
-     * The TraceInterceptorFactory should only be set before any routes are created, hence this
-     * method is not thread safe.
-     */
-    public void setTraceInterceptorFactory(TraceInterceptorFactory traceInterceptorFactory) {
-        this.traceInterceptorFactory = traceInterceptorFactory;
-    }
-
-    /**
-     * 
-     * @return the first trace event handler
-     */
-    @Deprecated
-    public TraceEventHandler getTraceHandler() {
-        return traceHandlers.get(0);
-    }
-    
-    /**
-     * 
-     * @return list of tracehandlers
-     */
-    public List<TraceEventHandler> getTraceHandlers() {
-        return traceHandlers;
-    }
-
-    /**
-     * Set the object to be used to perform tracing.
-     * <p/>
-     * Use this to take more control of how trace events are persisted.
-     * Setting the traceHandler provides a simpler mechanism for controlling tracing
-     * than the TraceInterceptorFactory.
-     * The TraceHandler should only be set before any routes are created, hence this
-     * method is not thread safe.
-     */
-    @Deprecated
-    public void setTraceHandler(TraceEventHandler traceHandler) {
-        this.traceHandlers.clear();
-        this.traceHandlers.add(traceHandler);
-    }
-    
-    /**
-     * Add the given tracehandler
-     */
-    public void addTraceHandler(TraceEventHandler traceHandler) {
-        this.traceHandlers.add(traceHandler);
-    }
-    
-    /**
-     * Remove the given tracehandler
-     */
-    public void removeTraceHandler(TraceEventHandler traceHandler) {
-        this.traceHandlers.remove(traceHandler);
-    }
-
-    public String getJpaTraceEventMessageClassName() {
-        return jpaTraceEventMessageClassName;
-    }
-
-    /**
-     * Set the fully qualified name of the class to be used by the JPA event tracing.
-     * <p/>
-     * The class must exist in the classpath and be available for dynamic loading.
-     * The class name should only be set before any routes are created, hence this
-     * method is not thread safe.
-     */
-    public void setJpaTraceEventMessageClassName(String jpaTraceEventMessageClassName) {
-        this.jpaTraceEventMessageClassName = jpaTraceEventMessageClassName;
-    }
-
-    public boolean isJmxTraceNotifications() {
-        return jmxTraceNotifications;
-    }
-
-    public void setJmxTraceNotifications(boolean jmxTraceNotifications) {
-        this.jmxTraceNotifications = jmxTraceNotifications;
-    }
-
-    public int getTraceBodySize() {
-        return traceBodySize;
-    }
-
-    public void setTraceBodySize(int traceBodySize) {
-        this.traceBodySize = traceBodySize;
-    }
-
-    public void start() throws Exception {
-        // noop
-    }
-
-    public void stop() throws Exception {
-        traceHandlers.clear();
-    }
-
-    @Override
-    public String toString() {
-        return "Tracer";
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TracedRouteNodes.java b/camel-core/src/main/java/org/apache/camel/spi/TracedRouteNodes.java
deleted file mode 100644
index 40254a2..0000000
--- a/camel-core/src/main/java/org/apache/camel/spi/TracedRouteNodes.java
+++ /dev/null
@@ -1,92 +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 org.apache.camel.Exchange;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * Tracing information used by {@link org.apache.camel.processor.interceptor.TraceInterceptor}
- * so we can trace the exact route path a given {@link org.apache.camel.Exchange} has been processed.
- *
- * @deprecated use {@link Exchange#MESSAGE_HISTORY} instead.
- */
-@Deprecated
-public interface TracedRouteNodes {
-
-    /**
-     * Adds the entry that was intercepted
-     *
-     * @param entry the entry
-     */
-    void addTraced(RouteNode entry);
-
-    /**
-     * Gets the last node, is <tt>null</tt> if no last exists.
-     *
-     * @return the last node
-     */
-    RouteNode getLastNode();
-
-    /**
-     * Gets the 2nd last node, is <tt>null</tt> if no last exists.
-     *
-     * @return the 2nd last
-     */
-    RouteNode getSecondLastNode();
-
-    /**
-     * Gets the current list of nodes, representing the route path the
-     * current {@link org.apache.camel.Exchange} has currently taken.
-     *
-     * @return the node path
-     */
-    List<RouteNode> getNodes();
-
-    /**
-     * Prepares a new block for tracing.
-     * <p/>
-     * This is needed when you have child block such as a multicast or aggregator
-     */
-    void pushBlock();
-
-    /**
-     * Pops the last block from tracing.
-     */
-    void popBlock();
-
-    /**
-     * Clears all traced information
-     */
-    void clear();
-
-    /**
-     * A private counter that increments, is used to as book keeping how far this
-     * exchange have been intercepted by the general intercept().
-     * <p/>
-     * We need this special book keeping to keep correct order when dealing
-     * with concurrent exchanges being routed in the same route path.
-     *
-     * @param node the intercept node
-     * @return the current count
-     */
-    int getAndIncrementCounter(ProcessorDefinition<?> node);
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java b/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
index 0fe1c98..b321ec6 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
@@ -118,14 +118,6 @@ public interface UnitOfWork extends Service {
     Message getOriginalInMessage();
 
     /**
-     * Gets tracing information
-     *
-     * @return trace information
-     */
-    @Deprecated
-    TracedRouteNodes getTracedRouteNodes();
-
-    /**
      * Are we transacted?
      *
      * @return <tt>true</tt> if transacted, <tt>false</tt> otherwise
diff --git a/camel-core/src/test/java/org/apache/camel/component/file/FileSplitInSplitTest.java b/camel-core/src/test/java/org/apache/camel/component/file/FileSplitInSplitTest.java
index 861702b..b5eb602 100644
--- a/camel-core/src/test/java/org/apache/camel/component/file/FileSplitInSplitTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/file/FileSplitInSplitTest.java
@@ -22,7 +22,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.language.SimpleExpression;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -85,9 +84,6 @@ public class FileSplitInSplitTest extends ContextTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                getContext().addInterceptStrategy(tracer);
-                
                 from("file:target/split?initialDelay=0&delay=10").routeId("foo").noAutoStartup()
                     .split(body().tokenize(comma))
                         .parallelProcessing()
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceStrategyTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceStrategyTest.java
index 1dae1c8..ae0452f 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceStrategyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultExecutorServiceStrategyTest.java
@@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ThreadPoolRejectedPolicy;
+import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.util.concurrent.ThreadHelper;
 import org.junit.Test;
 
@@ -149,7 +150,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
 
     @Test
     public void testDefaultUnboundedQueueThreadPool() throws Exception {
-        ThreadPoolProfileSupport custom = new ThreadPoolProfileSupport("custom");
+        ThreadPoolProfile custom = new ThreadPoolProfile("custom");
         custom.setPoolSize(10);
         custom.setMaxPoolSize(30);
         custom.setKeepAliveTime(50L);
@@ -174,7 +175,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
 
     @Test
     public void testCustomDefaultThreadPool() throws Exception {
-        ThreadPoolProfileSupport custom = new ThreadPoolProfileSupport("custom");
+        ThreadPoolProfile custom = new ThreadPoolProfile("custom");
         custom.setKeepAliveTime(20L);
         custom.setMaxPoolSize(40);
         custom.setPoolSize(5);
@@ -201,7 +202,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
     public void testGetThreadPoolProfile() throws Exception {
         assertNull(context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
 
-        ThreadPoolProfileSupport foo = new ThreadPoolProfileSupport("foo");
+        ThreadPoolProfile foo = new ThreadPoolProfile("foo");
         foo.setKeepAliveTime(20L);
         foo.setMaxPoolSize(40);
         foo.setPoolSize(5);
@@ -216,7 +217,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
     public void testTwoGetThreadPoolProfile() throws Exception {
         assertNull(context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
 
-        ThreadPoolProfileSupport foo = new ThreadPoolProfileSupport("foo");
+        ThreadPoolProfile foo = new ThreadPoolProfile("foo");
         foo.setKeepAliveTime(20L);
         foo.setMaxPoolSize(40);
         foo.setPoolSize(5);
@@ -224,7 +225,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
 
         context.getExecutorServiceStrategy().registerThreadPoolProfile(foo);
 
-        ThreadPoolProfileSupport bar = new ThreadPoolProfileSupport("bar");
+        ThreadPoolProfile bar = new ThreadPoolProfile("bar");
         bar.setKeepAliveTime(40L);
         bar.setMaxPoolSize(5);
         bar.setPoolSize(1);
@@ -243,7 +244,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
     @Test
     public void testGetThreadPoolProfileInheritDefaultValues() throws Exception {
         assertNull(context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
-        ThreadPoolProfileSupport foo = new ThreadPoolProfileSupport("foo");
+        ThreadPoolProfile foo = new ThreadPoolProfile("foo");
         foo.setMaxPoolSize(40);
         context.getExecutorServiceStrategy().registerThreadPoolProfile(foo);
         assertSame(foo, context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
@@ -259,7 +260,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
 
     @Test
     public void testGetThreadPoolProfileInheritCustomDefaultValues() throws Exception {
-        ThreadPoolProfileSupport newDefault = new ThreadPoolProfileSupport("newDefault");
+        ThreadPoolProfile newDefault = new ThreadPoolProfile("newDefault");
         newDefault.setKeepAliveTime(30L);
         newDefault.setMaxPoolSize(50);
         newDefault.setPoolSize(5);
@@ -268,7 +269,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
         context.getExecutorServiceStrategy().setDefaultThreadPoolProfile(newDefault);
 
         assertNull(context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
-        ThreadPoolProfileSupport foo = new ThreadPoolProfileSupport("foo");
+        ThreadPoolProfile foo = new ThreadPoolProfile("foo");
         foo.setMaxPoolSize(25);
         foo.setPoolSize(1);
         context.getExecutorServiceStrategy().registerThreadPoolProfile(foo);
@@ -286,13 +287,13 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
 
     @Test
     public void testGetThreadPoolProfileInheritCustomDefaultValues2() throws Exception {
-        ThreadPoolProfileSupport newDefault = new ThreadPoolProfileSupport("newDefault");
+        ThreadPoolProfile newDefault = new ThreadPoolProfile("newDefault");
         // just change the max pool as the default profile should then inherit the old default profile
         newDefault.setMaxPoolSize(50);
         context.getExecutorServiceStrategy().setDefaultThreadPoolProfile(newDefault);
 
         assertNull(context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
-        ThreadPoolProfileSupport foo = new ThreadPoolProfileSupport("foo");
+        ThreadPoolProfile foo = new ThreadPoolProfile("foo");
         foo.setPoolSize(1);
         context.getExecutorServiceStrategy().registerThreadPoolProfile(foo);
         assertSame(foo, context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
@@ -311,7 +312,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
     public void testNewThreadPoolProfile() throws Exception {
         assertNull(context.getExecutorServiceStrategy().getThreadPoolProfile("foo"));
 
-        ThreadPoolProfileSupport foo = new ThreadPoolProfileSupport("foo");
+        ThreadPoolProfile foo = new ThreadPoolProfile("foo");
         foo.setKeepAliveTime(20L);
         foo.setMaxPoolSize(40);
         foo.setPoolSize(5);
@@ -341,7 +342,7 @@ public class DefaultExecutorServiceStrategyTest extends ContextTestSupport {
 
         assertNull(context.getExecutorServiceStrategy().getThreadPoolProfile("fooProfile"));
 
-        ThreadPoolProfileSupport foo = new ThreadPoolProfileSupport("fooProfile");
+        ThreadPoolProfile foo = new ThreadPoolProfile("fooProfile");
         foo.setKeepAliveTime(20L);
         foo.setMaxPoolSize(40);
         foo.setPoolSize(5);
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTracerTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTracerTest.java
deleted file mode 100644
index d5fe36a..0000000
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTracerTest.java
+++ /dev/null
@@ -1,160 +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.management;
-
-import javax.management.Attribute;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class ManagedCamelContextTracerTest extends ManagementTestSupport {
-
-    @Test
-    public void testCamelContextTracing() throws Exception {
-        // JMX tests dont work well on AIX CI servers (hangs them)
-        if (isPlatform("aix")) {
-            return;
-        }
-
-        MBeanServer mbeanServer = getMBeanServer();
-
-        ObjectName camel = ObjectName.getInstance("org.apache.camel:context=camel-1,type=context,name=\"camel-1\"");
-        ObjectName on = new ObjectName("org.apache.camel:context=camel-1,type=tracer,name=Tracer");
-        mbeanServer.isRegistered(camel);
-        mbeanServer.isRegistered(on);
-
-        // with tracing
-        MockEndpoint traced = getMockEndpoint("mock:traced");
-        traced.setExpectedMessageCount(2);
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.setExpectedMessageCount(1);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        // should be enabled
-        Boolean tracing = (Boolean) mbeanServer.getAttribute(camel, "Tracing");
-        assertEquals("Tracing should be enabled", true, tracing.booleanValue());
-
-        String destinationUri = (String) mbeanServer.getAttribute(on, "DestinationUri");
-        assertEquals("mock:traced", destinationUri);
-
-        String logLevel = (String) mbeanServer.getAttribute(on, "LogLevel");
-        assertEquals(LoggingLevel.OFF.name(), logLevel);
-
-        String logName = (String) mbeanServer.getAttribute(on, "LogName");
-        assertNotNull(logName);
-
-        Boolean logStackTrace = (Boolean) mbeanServer.getAttribute(on, "LogStackTrace");
-        assertEquals(Boolean.FALSE, logStackTrace);
-
-        Boolean traceInterceptors = (Boolean) mbeanServer.getAttribute(on, "TraceInterceptors");
-        assertEquals(Boolean.FALSE, traceInterceptors);
-
-        Boolean traceExceptions = (Boolean) mbeanServer.getAttribute(on, "TraceExceptions");
-        assertEquals(Boolean.TRUE, traceExceptions);
-
-        Boolean traceOutExchanges = (Boolean) mbeanServer.getAttribute(on, "TraceOutExchanges");
-        assertEquals(Boolean.FALSE, traceOutExchanges);
-
-        Boolean formatterShowBody = (Boolean) mbeanServer.getAttribute(on, "FormatterShowBody");
-        assertEquals(Boolean.TRUE, formatterShowBody);
-
-        Boolean formatterShowBodyType = (Boolean) mbeanServer.getAttribute(on, "FormatterShowBodyType");
-        assertEquals(Boolean.TRUE, formatterShowBodyType);
-
-        Boolean formatterShowOutBody = (Boolean) mbeanServer.getAttribute(on, "FormatterShowOutBody");
-        assertEquals(Boolean.FALSE, formatterShowOutBody);
-
-        Boolean formatterShowOutBodyType = (Boolean) mbeanServer.getAttribute(on, "FormatterShowOutBodyType");
-        assertEquals(Boolean.FALSE, formatterShowOutBodyType);
-
-        Boolean formatterShowBreadCrumb = (Boolean) mbeanServer.getAttribute(on, "FormatterShowBreadCrumb");
-        assertEquals(Boolean.TRUE, formatterShowBreadCrumb);
-
-        Boolean formatterShowExchangeId = (Boolean) mbeanServer.getAttribute(on, "FormatterShowExchangeId");
-        assertEquals(Boolean.FALSE, formatterShowExchangeId);
-
-        Boolean formatterShowHeaders = (Boolean) mbeanServer.getAttribute(on, "FormatterShowHeaders");
-        assertEquals(Boolean.TRUE, formatterShowHeaders);
-
-        Boolean formatterShowOutHeaders = (Boolean) mbeanServer.getAttribute(on, "FormatterShowOutHeaders");
-        assertEquals(Boolean.FALSE, formatterShowOutHeaders);
-
-        Boolean formatterShowProperties = (Boolean) mbeanServer.getAttribute(on, "FormatterShowProperties");
-        assertEquals(Boolean.FALSE, formatterShowProperties);
-
-        Boolean formatterShowNode = (Boolean) mbeanServer.getAttribute(on, "FormatterShowNode");
-        assertEquals(Boolean.TRUE, formatterShowNode);
-
-        Boolean formatterShowExchangePattern = (Boolean) mbeanServer.getAttribute(on, "FormatterShowExchangePattern");
-        assertEquals(Boolean.TRUE, formatterShowExchangePattern);
-
-        Boolean formatterShowException = (Boolean) mbeanServer.getAttribute(on, "FormatterShowException");
-        assertEquals(Boolean.TRUE, formatterShowException);
-
-        Boolean formatterShowShortExchangeId = (Boolean) mbeanServer.getAttribute(on, "FormatterShowShortExchangeId");
-        assertEquals(Boolean.FALSE, formatterShowShortExchangeId);
-
-        Integer formatterBreadCrumbLength = (Integer) mbeanServer.getAttribute(on, "FormatterBreadCrumbLength");
-        assertEquals(0, formatterBreadCrumbLength.intValue());
-
-        Integer formatterNodeLength = (Integer) mbeanServer.getAttribute(on, "FormatterNodeLength");
-        assertEquals(0, formatterNodeLength.intValue());
-
-        Integer formatterMaxChars = (Integer) mbeanServer.getAttribute(on, "FormatterMaxChars");
-        assertEquals(10000, formatterMaxChars.intValue());
-
-        // now disable tracing
-        mbeanServer.setAttribute(camel, new Attribute("Tracing", Boolean.FALSE));
-
-        // without tracing
-        traced.reset();
-        traced.setExpectedMessageCount(0);
-        result.reset();
-        result.setExpectedMessageCount(1);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("mock:traced");
-                tracer.setLogLevel(LoggingLevel.OFF);
-                context.addInterceptStrategy(tracer);
-
-                from("direct:start").to("log:foo").to("mock:result");
-            }
-        };
-    }
-
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteContextTracerTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteContextTracerTest.java
deleted file mode 100644
index 180e328..0000000
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteContextTracerTest.java
+++ /dev/null
@@ -1,100 +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.management;
-
-import javax.management.Attribute;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class ManagedRouteContextTracerTest extends ManagementTestSupport {
-
-    @Test
-    public void testRouteTracing() throws Exception {
-        // JMX tests dont work well on AIX CI servers (hangs them)
-        if (isPlatform("aix")) {
-            return;
-        }
-
-        MBeanServer mbeanServer = getMBeanServer();
-
-        ObjectName on1 = ObjectName.getInstance("org.apache.camel:context=camel-1,type=routes,name=\"route1\"");
-        ObjectName on2 = ObjectName.getInstance("org.apache.camel:context=camel-1,type=routes,name=\"route2\"");
-
-        // with tracing
-        MockEndpoint traced = getMockEndpoint("mock:traced");
-        traced.setExpectedMessageCount(2);
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.setExpectedMessageCount(1);
-        MockEndpoint foo = getMockEndpoint("mock:foo");
-        foo.setExpectedMessageCount(1);
-
-        template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:foo", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        // should be enabled for route 1
-        Boolean tracing = (Boolean) mbeanServer.getAttribute(on1, "Tracing");
-        assertEquals("Tracing should be enabled for route 1", true, tracing.booleanValue());
-
-        // should be disabled for route 2
-        Boolean tracing2 = (Boolean) mbeanServer.getAttribute(on2, "Tracing");
-        assertEquals("Tracing should be disabled for route 2", false, tracing2.booleanValue());
-
-        // now enable tracing on route 2
-        mbeanServer.setAttribute(on2, new Attribute("Tracing", Boolean.TRUE));
-
-        // with tracing
-        traced.reset();
-        traced.setExpectedMessageCount(1);
-        result.reset();
-        result.setExpectedMessageCount(0);
-        foo.reset();
-        foo.setExpectedMessageCount(1);
-
-        template.sendBody("direct:foo", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("mock:traced");
-                tracer.setLogLevel(LoggingLevel.OFF);
-                context.addInterceptStrategy(tracer);
-
-                from("direct:start").to("log:foo").to("mock:result");
-
-                from("direct:foo").noTracing().to("mock:foo");
-            }
-        };
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java
deleted file mode 100644
index 41e6896..0000000
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedTracerOptionsTest.java
+++ /dev/null
@@ -1,177 +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.management;
-
-import javax.management.Attribute;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class ManagedTracerOptionsTest extends ManagementTestSupport {
-
-    @Test
-    public void testManagedTracerOptions() throws Exception {
-        // JMX tests dont work well on AIX CI servers (hangs them)
-        if (isPlatform("aix")) {
-            return;
-        }
-
-        MBeanServer mbeanServer = getMBeanServer();
-
-        ObjectName on = new ObjectName("org.apache.camel:context=camel-1,type=tracer,name=Tracer");
-        mbeanServer.isRegistered(on);
-
-        mbeanServer.setAttribute(on, new Attribute("Enabled", Boolean.TRUE));
-        Boolean enabled = (Boolean) mbeanServer.getAttribute(on, "Enabled");
-        assertEquals(true, enabled.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("DestinationUri", null));
-        String duri = (String) mbeanServer.getAttribute(on, "DestinationUri");
-        assertEquals(null, duri);
-
-        mbeanServer.setAttribute(on, new Attribute("DestinationUri", "mock://traced"));
-        duri = (String) mbeanServer.getAttribute(on, "DestinationUri");
-        assertEquals("mock://traced", duri);
-
-        Boolean useJpa = (Boolean) mbeanServer.getAttribute(on, "UseJpa");
-        assertEquals(false, useJpa.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("LogName", "foo"));
-        String ln = (String) mbeanServer.getAttribute(on, "LogName");
-        assertEquals("foo", ln);
-
-        mbeanServer.setAttribute(on, new Attribute("LogLevel", "WARN"));
-        String ll = (String) mbeanServer.getAttribute(on, "LogLevel");
-        assertEquals(LoggingLevel.WARN.name(), ll);
-
-        mbeanServer.setAttribute(on, new Attribute("LogStackTrace", Boolean.TRUE));
-        Boolean lst = (Boolean) mbeanServer.getAttribute(on, "LogStackTrace");
-        assertEquals(true, lst.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("TraceInterceptors", Boolean.TRUE));
-        Boolean ti = (Boolean) mbeanServer.getAttribute(on, "TraceInterceptors");
-        assertEquals(true, ti.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("TraceExceptions", Boolean.TRUE));
-        Boolean te = (Boolean) mbeanServer.getAttribute(on, "TraceExceptions");
-        assertEquals(true, te.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("TraceOutExchanges", Boolean.TRUE));
-        Boolean toe = (Boolean) mbeanServer.getAttribute(on, "TraceOutExchanges");
-        assertEquals(true, toe.booleanValue());
-
-        doAssertFormatter(mbeanServer, on);
-
-        getMockEndpoint("mock:result").expectedMessageCount(1);
-        template.sendBody("direct:start", "Hello World");
-        assertMockEndpointsSatisfied();
-    }
-
-    private void doAssertFormatter(MBeanServer mbeanServer, ObjectName on) throws Exception {
-        // JMX tests dont work well on AIX CI servers (hangs them)
-        if (isPlatform("aix")) {
-            return;
-        }
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowBody", Boolean.TRUE));
-        Boolean fsb = (Boolean) mbeanServer.getAttribute(on, "FormatterShowBody");
-        assertEquals(true, fsb.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowBodyType", Boolean.TRUE));
-        Boolean fsbt = (Boolean) mbeanServer.getAttribute(on, "FormatterShowBodyType");
-        assertEquals(true, fsbt.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowOutBody", Boolean.TRUE));
-        Boolean fsob = (Boolean) mbeanServer.getAttribute(on, "FormatterShowOutBody");
-        assertEquals(true, fsob.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowOutBodyType", Boolean.TRUE));
-        Boolean fsobt = (Boolean) mbeanServer.getAttribute(on, "FormatterShowOutBodyType");
-        assertEquals(true, fsobt.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowBreadCrumb", Boolean.TRUE));
-        Boolean fsbc = (Boolean) mbeanServer.getAttribute(on, "FormatterShowBreadCrumb");
-        assertEquals(true, fsbc.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowExchangeId", Boolean.TRUE));
-        Boolean fsei = (Boolean) mbeanServer.getAttribute(on, "FormatterShowExchangeId");
-        assertEquals(true, fsei.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowShortExchangeId", Boolean.TRUE));
-        Boolean fssei = (Boolean) mbeanServer.getAttribute(on, "FormatterShowShortExchangeId");
-        assertEquals(true, fssei.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowHeaders", Boolean.TRUE));
-        Boolean fsh = (Boolean) mbeanServer.getAttribute(on, "FormatterShowHeaders");
-        assertEquals(true, fsh.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowOutHeaders", Boolean.TRUE));
-        Boolean fsoh = (Boolean) mbeanServer.getAttribute(on, "FormatterShowOutHeaders");
-        assertEquals(true, fsoh.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowProperties", Boolean.TRUE));
-        Boolean fsp = (Boolean) mbeanServer.getAttribute(on, "FormatterShowProperties");
-        assertEquals(true, fsp.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowNode", Boolean.TRUE));
-        Boolean fsn = (Boolean) mbeanServer.getAttribute(on, "FormatterShowNode");
-        assertEquals(true, fsn.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowRouteId", Boolean.FALSE));
-        Boolean fsr = (Boolean) mbeanServer.getAttribute(on, "FormatterShowRouteId");
-        assertEquals(false, fsr.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowExchangePattern", Boolean.TRUE));
-        Boolean fsep = (Boolean) mbeanServer.getAttribute(on, "FormatterShowExchangePattern");
-        assertEquals(true, fsep.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterShowException", Boolean.TRUE));
-        Boolean fsex = (Boolean) mbeanServer.getAttribute(on, "FormatterShowException");
-        assertEquals(true, fsex.booleanValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterBreadCrumbLength", 100));
-        Integer fbcl = (Integer) mbeanServer.getAttribute(on, "FormatterBreadCrumbLength");
-        assertEquals(100, fbcl.intValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterNodeLength", 50));
-        Integer fnl = (Integer) mbeanServer.getAttribute(on, "FormatterNodeLength");
-        assertEquals(50, fnl.intValue());
-
-        mbeanServer.setAttribute(on, new Attribute("FormatterMaxChars", 250));
-        Integer fmc = (Integer) mbeanServer.getAttribute(on, "FormatterMaxChars");
-        assertEquals(250, fmc.intValue());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                context.setTracing(true);
-
-                from("direct:start").to("mock:result");
-            }
-        };
-    }
-
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java b/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java
deleted file mode 100644
index e2d933f..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/DefaultErrorHandlerOnExceptionTraceTest.java
+++ /dev/null
@@ -1,117 +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.processor;
-
-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.impl.JndiRegistry;
-import org.apache.camel.processor.interceptor.TraceEventMessage;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.junit.Test;
-
-/**
- * Default error handler test with trace
- *
- * @version 
- */
-public class DefaultErrorHandlerOnExceptionTraceTest extends ContextTestSupport {
-
-    @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("myProcessor", new MyProcessor());
-        return jndi;
-    }
-
-    @Test
-    public void testOk() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceived("Bye World");
-        getMockEndpoint("mock:trace").expectedMessageCount(2);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        TraceEventMessage msg1 = getMockEndpoint("mock:trace").getReceivedExchanges().get(0).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg2 = getMockEndpoint("mock:trace").getReceivedExchanges().get(1).getIn().getBody(TraceEventMessage.class);
-
-        assertEquals("direct://start", msg1.getFromEndpointUri());
-        assertEquals("ref:myProcessor", msg1.getToNode());
-
-        assertEquals("ref:myProcessor", msg2.getPreviousNode());
-        assertEquals("mock://result", msg2.getToNode());
-    }
-
-    @Test
-    public void testWithError() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:boom");
-        mock.expectedMessageCount(1);
-        getMockEndpoint("mock:trace").expectedMessageCount(4);
-
-        template.sendBody("direct:start", "Kabom");
-
-        assertMockEndpointsSatisfied();
-
-        TraceEventMessage msg1 = getMockEndpoint("mock:trace").getReceivedExchanges().get(0).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg2 = getMockEndpoint("mock:trace").getReceivedExchanges().get(1).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg3 = getMockEndpoint("mock:trace").getReceivedExchanges().get(2).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg4 = getMockEndpoint("mock:trace").getReceivedExchanges().get(3).getIn().getBody(TraceEventMessage.class);
-
-        assertEquals("direct://start", msg1.getFromEndpointUri());
-        assertEquals("ref:myProcessor", msg1.getToNode());
-
-        assertEquals("ref:myProcessor", msg2.getPreviousNode());
-        assertEquals("OnException[IllegalArgumentException]", msg2.getToNode());
-
-        assertEquals("OnException[IllegalArgumentException]", msg3.getPreviousNode());
-        assertEquals("log://boom", msg3.getToNode());
-
-        assertEquals("log://boom", msg4.getPreviousNode());
-        assertEquals("mock://boom", msg4.getToNode());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("mock:trace");
-                context.addInterceptStrategy(tracer);
-
-                onException(IllegalArgumentException.class).handled(true).to("log:boom").to("mock:boom");
-
-                from("direct:start").process("myProcessor").to("mock:result");
-            }
-        };
-    }
-
-    public static class MyProcessor implements Processor {
-
-        public void process(Exchange exchange) throws Exception {
-            String body = exchange.getIn().getBody(String.class);
-            if ("Kabom".equals(body)) {
-                throw new IllegalArgumentException("Boom");
-            }
-            exchange.getIn().setBody("Bye World");
-        }
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/OnCompletionGlobalTraceTest.java b/camel-core/src/test/java/org/apache/camel/processor/OnCompletionGlobalTraceTest.java
deleted file mode 100644
index 3fbeb90..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/OnCompletionGlobalTraceTest.java
+++ /dev/null
@@ -1,138 +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.processor;
-
-import org.apache.camel.CamelExecutionException;
-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.impl.JndiRegistry;
-import org.apache.camel.processor.interceptor.TraceEventMessage;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class OnCompletionGlobalTraceTest extends ContextTestSupport {
-
-    @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("myProcessor", new MyProcessor());
-        return jndi;
-    }
-
-    @Test
-    public void testSynchronizeComplete() throws Exception {
-        getMockEndpoint("mock:sync").expectedBodiesReceived("Bye World");
-        getMockEndpoint("mock:sync").expectedPropertyReceived(Exchange.ON_COMPLETION, true);
-        getMockEndpoint("mock:trace").expectedMessageCount(4);
-
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedBodiesReceived("Bye World");
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        TraceEventMessage msg1 = getMockEndpoint("mock:trace").getReceivedExchanges().get(0).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg2 = getMockEndpoint("mock:trace").getReceivedExchanges().get(1).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg3 = getMockEndpoint("mock:trace").getReceivedExchanges().get(2).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg4 = getMockEndpoint("mock:trace").getReceivedExchanges().get(3).getIn().getBody(TraceEventMessage.class);
-
-        assertEquals("direct://start", msg1.getFromEndpointUri());
-        assertEquals("ref:myProcessor", msg1.getToNode());
-
-        assertEquals("ref:myProcessor", msg2.getPreviousNode());
-        assertEquals("mock://result", msg2.getToNode());
-
-        assertTrue(msg3.getPreviousNode().startsWith("OnCompletion"));
-        assertEquals("log://global", msg3.getToNode());
-
-        assertEquals("log://global", msg4.getPreviousNode());
-        assertEquals("mock://sync", msg4.getToNode());
-    }
-
-    @Test
-    public void testSynchronizeFailure() throws Exception {
-        getMockEndpoint("mock:sync").expectedMessageCount(1);
-        getMockEndpoint("mock:sync").expectedPropertyReceived(Exchange.ON_COMPLETION, true);
-        getMockEndpoint("mock:trace").expectedMessageCount(3);
-
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(0);
-
-        try {
-            template.sendBody("direct:start", "Kabom");
-            fail("Should throw exception");
-        } catch (CamelExecutionException e) {
-            assertEquals("Kabom", e.getCause().getMessage());
-        }
-
-        assertMockEndpointsSatisfied();
-
-        TraceEventMessage msg1 = getMockEndpoint("mock:trace").getReceivedExchanges().get(0).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg2 = getMockEndpoint("mock:trace").getReceivedExchanges().get(1).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg3 = getMockEndpoint("mock:trace").getReceivedExchanges().get(2).getIn().getBody(TraceEventMessage.class);
-
-        assertEquals("direct://start", msg1.getFromEndpointUri());
-        assertEquals("ref:myProcessor", msg1.getToNode());
-
-        assertTrue(msg2.getPreviousNode().startsWith("OnCompletion"));
-        assertEquals("log://global", msg2.getToNode());
-
-        assertEquals("log://global", msg3.getPreviousNode());
-        assertEquals("mock://sync", msg3.getToNode());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("mock:trace");
-                context.addInterceptStrategy(tracer);
-
-                // START SNIPPET: e1
-                // define a global on completion that is invoked when the exchange is complete
-                onCompletion().to("log:global").to("mock:sync");
-
-                from("direct:start")
-                    .process("myProcessor")
-                    .to("mock:result");
-                // END SNIPPET: e1
-            }
-        };
-    }
-
-    public static class MyProcessor implements Processor {
-
-        public MyProcessor() {
-        }
-
-        public void process(Exchange exchange) throws Exception {
-            if ("Kabom".equals(exchange.getIn().getBody())) {
-                throw new IllegalArgumentException("Kabom");
-            }
-            exchange.getIn().setBody("Bye World");
-        }
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java b/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java
index 05d2617..b6ad743 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/RecipientListReturnValueTest.java
@@ -20,7 +20,6 @@ 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.processor.interceptor.Tracer;
 import org.junit.Test;
 
 /**
@@ -64,8 +63,6 @@ public class RecipientListReturnValueTest extends ContextTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                getContext().addInterceptStrategy(new Tracer());
-                
                 from("direct:beanRef").bean("myBean", "route");
                 from("direct:recipientList").recipientList().method("myBean", "recipientList");
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorWithOutBodyTraceTest.java b/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorWithOutBodyTraceTest.java
deleted file mode 100644
index aae1411..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/TraceInterceptorWithOutBodyTraceTest.java
+++ /dev/null
@@ -1,52 +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.processor;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
-import org.apache.camel.processor.interceptor.Tracer;
-
-public class TraceInterceptorWithOutBodyTraceTest extends TraceInterceptorTest {
-
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                // START SNIPPET: tracingOutExchanges
-                Tracer tracer = new Tracer();
-                tracer.setTraceOutExchanges(true);
-
-                // we configure the default trace formatter where we can
-                // specify which fields we want in the output
-                DefaultTraceFormatter formatter = new DefaultTraceFormatter();
-                formatter.setShowOutBody(true);
-                formatter.setShowOutBodyType(true);
-
-                // set to use our formatter
-                tracer.setFormatter(formatter);
-                
-                getContext().addInterceptStrategy(tracer);
-                // END SNIPPET: tracingOutExchanges
-                
-                from("direct:start").
-                    transform().body().
-                    to("mock:a").
-                    to("mock:b");
-            }
-        };
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/TracePerRouteTest.java b/camel-core/src/test/java/org/apache/camel/processor/TracePerRouteTest.java
deleted file mode 100644
index f9edd79..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/TracePerRouteTest.java
+++ /dev/null
@@ -1,67 +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.processor;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class TracePerRouteTest extends ContextTestSupport {
-
-    @Test
-    public void testTracingPerRoute() throws Exception {
-        getMockEndpoint("mock:a").expectedMessageCount(1);
-        getMockEndpoint("mock:b").expectedMessageCount(1);
-        getMockEndpoint("mock:c").expectedMessageCount(1);
-
-        // only a and c has enabled tracing
-        MockEndpoint traced = getMockEndpoint("mock:traced");
-        traced.expectedMessageCount(2);
-        traced.message(0).body(String.class).contains("mock://a");
-        traced.message(1).body(String.class).contains("mock://c");
-
-        template.sendBody("direct:a", "Hello World");
-        template.sendBody("direct:b", "Bye World");
-        template.sendBody("direct:c", "Gooday World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("mock:traced");
-                tracer.setLogName("foo");
-                context.addInterceptStrategy(tracer);
-
-                from("direct:a").to("mock:a");
-
-                from("direct:b").noTracing().to("mock:b");
-
-                from("direct:c").tracing().to("mock:c");
-            }
-        };
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java b/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java
deleted file mode 100644
index 8096cf9..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/TraceableUnitOfWorkTest.java
+++ /dev/null
@@ -1,109 +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.processor;
-
-import java.util.List;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteNode;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.management.InstrumentationProcessor;
-import org.apache.camel.spi.TracedRouteNodes;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class TraceableUnitOfWorkTest extends ContextTestSupport {
-
-    @Test
-    public void testSendingSomeMessages() throws Exception {
-        Object out = template.requestBody("direct:start", "Hello London");
-        assertEquals("Failed at: sendTo(bean://bar)", out);
-    }
-
-    @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("foo", new MyFooBean());
-        jndi.bind("bar", new MyBarBean());
-        return jndi;
-    }
-
-    // START SNIPPET: e1
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                errorHandler(deadLetterChannel("mock:error").redeliveryDelay(0).maximumRedeliveries(3));
-
-                // must enable tracer to trace the route path taken during runtime
-                context.setTracing(true);
-
-                // let our my error processor handle all exceptions
-                onException(Exception.class).handled(true).process(new MyErrorProcessor());
-
-                // our route where an exception can be thrown from either foo or bar bean
-                // so we have enable tracing so we can check it at runtime to get the actual
-                // node path taken
-                from("direct:start").to("bean:foo").to("bean:bar");
-            }
-        };
-    }
-    // END SNIPPET: e1
-
-    // START SNIPPET: e2
-    private static class MyErrorProcessor implements Processor {
-        public void process(Exchange exchange) throws Exception {
-            TracedRouteNodes traced = exchange.getUnitOfWork().getTracedRouteNodes();
-
-            // get the list of intercepted nodes
-            List<RouteNode> list = traced.getNodes();
-            // get the 3rd last as its the bean
-            Processor last = list.get(list.size() - 3).getProcessor();
-
-            // wrapped by JMX
-            if (last instanceof InstrumentationProcessor) {
-                InstrumentationProcessor ip = (InstrumentationProcessor) last;
-                last = ip.getProcessor();
-            }
-
-            // set error message
-            exchange.getOut().setFault(true);
-            exchange.getOut().setBody("Failed at: " + last.toString());
-        }
-
-        public String toString() {
-            return "MyErrorProcessor";
-        }
-    }
-    // END SNIPPET: e2
-
-    public class MyFooBean {
-        public void process(Exchange exchange) throws Exception {
-            exchange.getOut().setBody("Foo okay");
-        }
-    }
-
-    public class MyBarBean {
-        public void process(Exchange exchange) throws Exception {
-            throw new IllegalArgumentException("Damm Bar");
-        }
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java b/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java
index ba2123f..317f40a 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java
@@ -17,10 +17,8 @@
 package org.apache.camel.processor;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.junit.Test;
 
 /**
@@ -41,12 +39,6 @@ public class TracerConfigurationTest extends ContextTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                tracer.setLogLevel(LoggingLevel.ERROR);
-                tracer.setLogName("com.mycompany");
-
-                getContext().addInterceptStrategy(tracer);
-
                 from("direct:start").to("mock:result");
             }
         };
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncTraceHandlerTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncTraceHandlerTest.java
deleted file mode 100644
index 17482c1..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncTraceHandlerTest.java
+++ /dev/null
@@ -1,107 +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.processor.async;
-
-import org.apache.camel.CamelContext;
-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.model.ProcessorDefinition;
-import org.apache.camel.processor.interceptor.TraceEventHandler;
-import org.apache.camel.processor.interceptor.TraceInterceptor;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
- * @version 
- */
-@Deprecated
-@Ignore
-public class AsyncTraceHandlerTest extends ContextTestSupport {
-
-    private static String beforeThreadName;
-    private static String afterThreadName;
-
-    @Test
-    public void testAsyncTraceHandler() throws Exception {
-        getMockEndpoint("mock:result").expectedBodiesReceived("Bye Camel");
-
-        String reply = template.requestBody("direct:start", "Hello Camel", String.class);
-        assertEquals("Bye Camel", reply);
-
-        assertMockEndpointsSatisfied();
-
-        assertFalse("Should use different threads", beforeThreadName.equalsIgnoreCase(afterThreadName));
-    }
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext contextLocal = super.createCamelContext();
-
-        Tracer tracer = (Tracer) contextLocal.getDefaultTracer();
-        tracer.setEnabled(true);
-        tracer.getTraceHandlers().clear();
-        tracer.getTraceHandlers().add(new MyTraceHandler());
-        tracer.setTraceOutExchanges(true);
-
-        return contextLocal;
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                context.setTracing(true);
-
-                context.addComponent("async", new MyAsyncComponent());
-
-                from("direct:start")
-                        .tracing()
-                        .to("log:before")
-                        .to("async:bye:camel").id("async")
-                        .to("log:after")
-                        .to("mock:result");
-            }
-        };
-    }
-
-    private static class MyTraceHandler implements TraceEventHandler {
-
-        @Override
-        public void traceExchange(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-            // noop
-        }
-
-        @Override
-        public Object traceExchangeIn(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-            if (node.getId().equals("async")) {
-                beforeThreadName = Thread.currentThread().getName();
-            }
-            return null;
-        }
-
-        @Override
-        public void traceExchangeOut(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange, Object traceState) throws Exception {
-            if (node.getId().equals("async")) {
-                afterThreadName = Thread.currentThread().getName();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteTraceTest.java b/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteTraceTest.java
deleted file mode 100644
index 8cfd340..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteTraceTest.java
+++ /dev/null
@@ -1,85 +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.processor.intercept;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.processor.interceptor.TraceEventMessage;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class InterceptSimpleRouteTraceTest extends ContextTestSupport {
-
-    @Test
-    public void testIntercept() throws Exception {
-        getMockEndpoint("mock:foo").expectedMessageCount(1);
-        getMockEndpoint("mock:bar").expectedMessageCount(1);
-        getMockEndpoint("mock:result").expectedMessageCount(1);
-
-        getMockEndpoint("mock:intercepted").expectedMessageCount(3);
-        getMockEndpoint("mock:trace").expectedMessageCount(6);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        TraceEventMessage msg1 = getMockEndpoint("mock:trace").getReceivedExchanges().get(0).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg2 = getMockEndpoint("mock:trace").getReceivedExchanges().get(1).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg3 = getMockEndpoint("mock:trace").getReceivedExchanges().get(2).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg4 = getMockEndpoint("mock:trace").getReceivedExchanges().get(3).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg5 = getMockEndpoint("mock:trace").getReceivedExchanges().get(4).getIn().getBody(TraceEventMessage.class);
-        TraceEventMessage msg6 = getMockEndpoint("mock:trace").getReceivedExchanges().get(5).getIn().getBody(TraceEventMessage.class);
-
-        assertEquals("direct://start", msg1.getFromEndpointUri());
-        assertEquals("mock://intercepted", msg1.getToNode());
-
-        assertEquals("mock://intercepted", msg2.getPreviousNode());
-        assertEquals("mock://foo", msg2.getToNode());
-
-        assertEquals("mock://foo", msg3.getPreviousNode());
-        assertEquals("mock://intercepted", msg3.getToNode());
-
-        assertEquals("mock://intercepted", msg4.getPreviousNode());
-        assertEquals("mock://bar", msg4.getToNode());
-
-        assertEquals("mock://bar", msg5.getPreviousNode());
-        assertEquals("mock://intercepted", msg5.getToNode());
-
-        assertEquals("mock://intercepted", msg6.getPreviousNode());
-        assertEquals("mock://result", msg6.getToNode());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("mock:trace");
-                context.addInterceptStrategy(tracer);
-
-                intercept().to("mock:intercepted");
-
-                from("direct:start")
-                    .to("mock:foo").to("mock:bar").to("mock:result");
-            }
-        };
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java
deleted file mode 100644
index cf27000..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.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.processor.interceptor;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class DefaultTraceEventMessageCausedByExceptionTest extends ContextTestSupport {
-
-    @Test
-    public void testCausedByException() throws Exception {
-        getMockEndpoint("mock:handled").expectedMessageCount(1);
-
-        MockEndpoint traced = getMockEndpoint("mock:traced");
-        traced.expectedMessageCount(4);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        DefaultTraceEventMessage em1 = traced.getReceivedExchanges().get(0).getIn().getBody(DefaultTraceEventMessage.class);
-        DefaultTraceEventMessage em2 = traced.getReceivedExchanges().get(1).getIn().getBody(DefaultTraceEventMessage.class);
-        DefaultTraceEventMessage em3 = traced.getReceivedExchanges().get(2).getIn().getBody(DefaultTraceEventMessage.class);
-        DefaultTraceEventMessage em4 = traced.getReceivedExchanges().get(3).getIn().getBody(DefaultTraceEventMessage.class);
-
-        assertNotNull(em1);
-        assertNotNull(em2);
-        assertNotNull(em3);
-        assertNotNull(em4);
-
-        assertNull(em1.getCausedByException());
-        assertNull(em2.getCausedByException());
-        assertEquals("java.lang.IllegalArgumentException: Forced", em3.getCausedByException());
-        assertEquals("java.lang.IllegalArgumentException: Forced", em4.getCausedByException());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = Tracer.createTracer(context);
-                tracer.setDestinationUri("mock:traced");
-                context.addInterceptStrategy(tracer);
-
-                onException(Exception.class)
-                    .handled(true)
-                    .to("mock:handled");
-
-                from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Forced"));
-            }
-        };
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageTest.java
deleted file mode 100644
index e3ae4ca..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageTest.java
+++ /dev/null
@@ -1,156 +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.processor.interceptor;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.util.Date;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultExchange;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class DefaultTraceEventMessageTest extends ContextTestSupport {
-
-    @Test
-    public void testDefaultTraceEventMessage() throws Exception {
-        getMockEndpoint("mock:result").expectedMessageCount(1);
-        MockEndpoint traced = getMockEndpoint("mock:traced");
-        traced.expectedMessageCount(2);
-
-        template.send("direct:start", new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.setPattern(ExchangePattern.InOut);
-                exchange.setProperty("foo", 123);
-                exchange.getIn().setBody("Hello World");
-                exchange.getIn().setHeader("bar", "456");
-                exchange.getOut().setBody("Bye World");
-                exchange.getOut().setHeader("cheese", 789);
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        DefaultTraceEventMessage em = traced.getReceivedExchanges().get(0).getIn().getBody(DefaultTraceEventMessage.class);
-        assertNotNull(em);
-        assertNotNull(em.getTimestamp());
-        assertEquals("direct://start", em.getFromEndpointUri());
-        assertEquals(null, em.getPreviousNode());
-        assertEquals("mock://foo", em.getToNode());
-        assertNotNull(em.getExchangeId());
-        assertNotNull(em.getShortExchangeId());
-        assertEquals("InOut", em.getExchangePattern());
-        assertTrue(em.getProperties().contains("foo=123"));
-        assertTrue(em.getProperties().contains("CamelToEndpoint=direct://start"));
-        assertTrue(em.getProperties().contains("CamelCreatedTimestamp"));
-        assertTrue(em.getHeaders().contains("bar=456"));
-        assertEquals("Hello World", em.getBody());
-        assertEquals("String", em.getBodyType());
-        assertEquals("Bye World", em.getOutBody());
-        assertEquals("String", em.getOutBodyType());
-        assertEquals("{cheese=789}", em.getOutHeaders());
-    }
-    
-    @Test
-    public void testDefaultTraceEventMessageBody() throws Exception {
-        Exchange exchange = new DefaultExchange(context);
-        exchange.getIn().setBody(new File("target/test"));
-        DefaultTraceEventMessage em = new DefaultTraceEventMessage(new Date(), null, exchange);
-        
-        assertEquals("Get a wrong body string", "[Body is file based: target" + File.separator + "test]", em.getBody());
-        
-        exchange.getIn().setBody(new ByteArrayInputStream("target/test".getBytes()));
-        em = new DefaultTraceEventMessage(new Date(), null, exchange);
-        
-        assertEquals("Get a wrong body string", "[Body is instance of java.io.InputStream]", em.getBody());
-    }
- 
-    @Test
-    public void testDefaultTraceEventMessageOptions() throws Exception {
-        Exchange exchange = new DefaultExchange(context);
-        DefaultTraceEventMessage em = new DefaultTraceEventMessage(new Date(), null, exchange);
-        
-        em.setBody("Hello World");
-        assertEquals("Hello World", em.getBody());
-
-        em.setBodyType("String");
-        assertEquals("String", em.getBodyType());
-
-        em.setCausedByException("Damn");
-        assertEquals("Damn", em.getCausedByException());
-
-        em.setExchangeId("123");
-        assertEquals("123", em.getExchangeId());
-
-        em.setExchangePattern("InOnly");
-        assertEquals("InOnly", em.getExchangePattern());
-
-        em.setFromEndpointUri("direct://start");
-        assertEquals("direct://start", em.getFromEndpointUri());
-
-        em.setHeaders("{foo=123}");
-        assertEquals("{foo=123}", em.getHeaders());
-
-        em.setOutBody("123");
-        assertEquals("123", em.getOutBody());
-
-        em.setOutBodyType("Integer");
-        assertEquals("Integer", em.getOutBodyType());
-
-        em.setOutHeaders("{cheese=789}");
-        assertEquals("{cheese=789}", em.getOutHeaders());
-
-        em.setProperties("{foo=123}");
-        assertEquals("{foo=123}", em.getProperties());
-
-        em.setPreviousNode("A");
-        assertEquals("A", em.getPreviousNode());
-
-        em.setToNode("B");
-        assertEquals("B", em.getToNode());
-
-        em.setTimestamp(new Date());
-        assertNotNull(em.getTimestamp());
-
-        em.setShortExchangeId("123");
-        assertEquals("123", em.getShortExchangeId());
-
-        assertSame(exchange, em.getTracedExchange());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                Tracer tracer = Tracer.createTracer(context);
-                tracer.setDestinationUri("mock:traced");
-                context.addInterceptStrategy(tracer);
-
-                from("direct:start").to("mock:foo").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java
deleted file mode 100644
index e12f80c..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceFormatterTest.java
+++ /dev/null
@@ -1,170 +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.processor.interceptor;
-
-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.junit.Test;
-
-/**
- * @version 
- */
-public class DefaultTraceFormatterTest extends ContextTestSupport {
-
-    @Test
-    public void testDefaultTraceFormatter() {
-        getFormatter();
-    }
-
-    @Test
-    public void testFormat() throws Exception {
-        Tracer tracer = new Tracer();
-        tracer.setFormatter(getFormatter());
-        context.addInterceptStrategy(tracer);
-
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-
-        template.send("direct:start", new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setBody("Hello World");
-                exchange.getIn().setHeader("foo", 123);
-                exchange.getOut().setBody("Bye World");
-                exchange.getOut().setHeader("bar", 456);
-                exchange.setProperty("quote", "Camel is cool");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Test
-    public void testWithException() throws Exception {
-        Tracer tracer = new Tracer();
-        tracer.setFormatter(getFormatter());
-        context.addInterceptStrategy(tracer);
-
-        try {
-            template.sendBody("direct:fail", "Hello World");
-            fail("Should have thrown an exception");
-        } catch (Exception e) {
-            // ignore
-        }
-    }
-
-    @Test
-    public void testNoShow() throws Exception {
-        DefaultTraceFormatter formatter = getFormatter();
-        formatter.setShowBreadCrumb(false);
-        formatter.setShowExchangeId(false);
-        formatter.setShowShortExchangeId(false);
-        formatter.setShowNode(false);
-
-        Tracer tracer = new Tracer();
-        tracer.setFormatter(formatter);
-        context.addInterceptStrategy(tracer);
-
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("mock:result");
-
-                from("direct:fail").to("mock:mid").throwException(new IllegalArgumentException("Damn"));
-            }
-        };
-    }
-
-    private DefaultTraceFormatter getFormatter() {
-        DefaultTraceFormatter formatter = new DefaultTraceFormatter();
-
-        formatter.setBreadCrumbLength(30);
-        assertEquals(30, formatter.getBreadCrumbLength());
-
-        formatter.setMaxChars(500);
-        assertEquals(500, formatter.getMaxChars());
-
-        formatter.setNodeLength(20);
-        assertEquals(20, formatter.getNodeLength());
-
-        formatter.setShowBody(true);
-        assertEquals(true, formatter.isShowBody());
-
-        formatter.setBreadCrumbLength(40);
-        assertEquals(40, formatter.getBreadCrumbLength());
-
-        formatter.setShowBody(true);
-        assertEquals(true, formatter.isShowBody());
-
-        formatter.setShowBodyType(true);
-        assertEquals(true, formatter.isShowBodyType());
-
-        formatter.setShowBreadCrumb(true);
-        assertEquals(true, formatter.isShowBreadCrumb());
-
-        formatter.setShowExchangeId(true);
-        assertEquals(true, formatter.isShowExchangeId());
-
-        formatter.setShowException(true);
-        assertEquals(true, formatter.isShowException());
-
-        formatter.setShowExchangePattern(true);
-        assertEquals(true, formatter.isShowExchangePattern());
-
-        formatter.setShowHeaders(true);
-        assertEquals(true, formatter.isShowHeaders());
-
-        formatter.setShowNode(true);
-        assertEquals(true, formatter.isShowNode());
-
-        formatter.setShowOutBody(true);
-        assertEquals(true, formatter.isShowOutBody());
-
-        formatter.setShowOutBodyType(true);
-        assertEquals(true, formatter.isShowOutBodyType());
-
-        formatter.setShowOutHeaders(true);
-        assertEquals(true, formatter.isShowOutHeaders());
-
-        formatter.setShowProperties(true);
-        assertEquals(true, formatter.isShowProperties());
-        
-        formatter.setMultiline(true);
-        assertEquals(true, formatter.isMultiline());
-
-        formatter.setShowShortExchangeId(true);
-        assertEquals(true, formatter.isShowShortExchangeId());
-
-        formatter.setShowRouteId(false);
-        assertEquals(false, formatter.isShowRouteId());
-
-        return formatter;
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java
deleted file mode 100644
index b4dc8fe..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceFormatterTest.java
+++ /dev/null
@@ -1,122 +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.processor.interceptor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-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.model.ProcessorDefinition;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class TraceFormatterTest extends ContextTestSupport {
-
-    private List<String> tracedBodies = new ArrayList<>();
-
-    @Test
-    public void testSendingSomeMessagesBeingTraced() throws Exception {
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedBodiesReceived("Bye World");
-
-        MockEndpoint mock = getMockEndpoint("mock:traced");
-        mock.expectedMessageCount(4);
-
-        template.sendBodyAndHeader("direct:start", "Hello London", "to", "James");
-
-        assertMockEndpointsSatisfied();
-
-        // assert we received the correct bodies at the given time of interception
-        // and that the bodies haven't changed during the routing of the original
-        // exchange that changes its body over time (Hello London -> Bye World)
-        assertEquals("Hello London", tracedBodies.get(0));
-        assertEquals("Hello World", tracedBodies.get(1));
-        assertEquals("Goodday World", tracedBodies.get(2));
-        assertEquals("Bye World", tracedBodies.get(3));
-    }
-
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                // START SNIPPET: e1
-                // we create a tracer where we want to use our own formatter instead of the default one
-                Tracer tracer = new Tracer();
-
-                // use our own formatter instead of the default one
-                MyTraceFormatter formatter = new MyTraceFormatter();
-                tracer.setFormatter(formatter);
-
-                // and we must remeber to add the tracer to Camel
-                getContext().addInterceptStrategy(tracer);
-                // END SNIPPET: e1
-
-                // this is only for unit testing to use mock for assertion
-                tracer.setDestinationUri("direct:traced");
-
-                from("direct:start")
-                        .process(new MyProcessor("Hello World"))
-                        .process(new MyProcessor("Goodday World"))
-                        .process(new MyProcessor("Bye World"))
-                        .to("mock:result");
-
-                from("direct:traced")
-                        .process(new MyTraveAssertProcessor())
-                        .to("mock:traced");
-            }
-        };
-    }
-
-    class MyProcessor implements Processor {
-
-        private String msg;
-
-        MyProcessor(String msg) {
-            this.msg = msg;
-        }
-
-        public void process(Exchange exchange) throws Exception {
-            exchange.getIn().setBody(msg);
-        }
-    }
-
-    class MyTraveAssertProcessor implements Processor {
-
-        public void process(Exchange exchange) throws Exception {
-            // take a snapshot at current time for assertion later
-            // after mock assertions in unit test method
-            TraceEventMessage event = exchange.getIn().getBody(DefaultTraceEventMessage.class);
-            tracedBodies.add(new String(event.getBody()));
-        }
-    }
-
-    // START SNIPPET: e2
-    // here we have out own formatter where we can create the output we want for trace logs
-    // as this is a test we just create a simple string with * around the body
-    class MyTraceFormatter implements TraceFormatter {
-
-        public Object format(TraceInterceptor interceptor, ProcessorDefinition<?> node, Exchange exchange) {
-            return "***" + exchange.getIn().getBody(String.class) + "***";
-        }
-    }
-    // END SNIPPET: e2
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.java
deleted file mode 100644
index 5ba438f..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTest.java
+++ /dev/null
@@ -1,62 +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.processor.interceptor;
-
-import java.util.LinkedList;
-
-import org.apache.camel.CamelContext;
-
-public class TraceHandlerTest extends TracingTestBase {
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext contextLocal = super.createCamelContext();
-
-        tracedMessages = new LinkedList<>();
-
-        Tracer tracer = (Tracer) contextLocal.getDefaultTracer();
-        tracer.setEnabled(true);
-        tracer.setTraceExceptions(true);
-        tracer.getTraceHandlers().clear();
-        tracer.getTraceHandlers().add(new TraceHandlerTestHandler(tracedMessages));
-
-        return contextLocal;
-    }
-
-    protected void validateTestTracerInOnly() {
-        assertEquals(6, tracedMessages.size());
-        for (StringBuilder tracedMessage : tracedMessages) {
-            String message = tracedMessage.toString();
-            assertTrue(message.startsWith("Complete:"));
-        }
-    }
-
-    protected void validateTestTracerInOut() {
-        assertEquals(6, tracedMessages.size());
-        for (StringBuilder tracedMessage : tracedMessages) {
-            String message = tracedMessage.toString();
-            assertTrue(message.startsWith("In:"));
-            assertTrue(message.contains("Out:"));
-        }
-    }
-
-    @Override
-    protected void prepareTestTracerExceptionInOut() {
-        ((TraceHandlerTestHandler) ((Tracer) context.getDefaultTracer()).getTraceHandlers().get(0)).setTraceAllNodes(true);
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTestHandler.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTestHandler.java
deleted file mode 100644
index be4659e..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceHandlerTestHandler.java
+++ /dev/null
@@ -1,113 +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.processor.interceptor;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
-
-public class TraceHandlerTestHandler implements TraceEventHandler {
-    private List<StringBuilder> eventMessages;
-    private boolean traceAllNodes;
-
-    public TraceHandlerTestHandler() {
-        this.eventMessages = new LinkedList<>();
-        this.traceAllNodes = false;
-    }
-
-    public TraceHandlerTestHandler(List<StringBuilder> eventMessages) {
-        this.eventMessages = eventMessages;
-        this.traceAllNodes = false;
-    }
-
-    public List<StringBuilder> getEventMessages() {
-        return eventMessages;
-    }
-
-    public void setEventMessages(List<StringBuilder> eventMessages) {
-        this.eventMessages = eventMessages;
-    }
-
-    public boolean isTraceAllNodes() {
-        return traceAllNodes;
-    }
-
-    public void setTraceAllNodes(boolean traceAllNodes) {
-        this.traceAllNodes = traceAllNodes;
-    }
-
-    private synchronized void storeMessage(StringBuilder message) {
-        eventMessages.add(message);
-    }
-
-    public static void recordComplete(StringBuilder message, ProcessorDefinition<?> node, Exchange exchange) {
-        message.append("Complete: ");
-        message.append(node.getLabel() + ": ");
-        message.append(exchange.getIn().getBody());
-    }
-
-    public static void recordIn(StringBuilder message, ProcessorDefinition<?> node, Exchange exchange) {
-        message.append("In: ");
-        message.append(node.getLabel() + ": ");
-        message.append(exchange.getIn().getBody());
-    }
-
-    public static void recordOut(StringBuilder message, ProcessorDefinition<?> node, Exchange exchange) {
-        message.append("Out: ");
-        message.append(node.getLabel() + ": ");
-        if (null != exchange.getOut()) {
-            message.append(exchange.getOut().getBody());
-        }
-        if (null != exchange.getException()) {
-            Exception ex = exchange.getException();
-            message.append("\t");
-            message.append("Ex: ");
-            message.append(ex.getMessage());
-        }
-    }
-
-    public void traceExchange(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-        if (traceAllNodes || !node.getLabel().contains("TraceTestProcessor")) {
-            StringBuilder message = new StringBuilder();
-            recordComplete(message, node, exchange);
-            storeMessage(message);
-        }
-    }
-
-    public Object traceExchangeIn(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-        if (traceAllNodes || !node.getLabel().contains("TraceTestProcessor")) {
-            StringBuilder message = new StringBuilder();
-            recordIn(message, node, exchange);
-            return message;
-        } else {
-            return null;
-        }
-    }
-
-    public void traceExchangeOut(ProcessorDefinition<?> node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange, Object traceState) throws Exception {
-        if (traceAllNodes || !node.getLabel().contains("TraceTestProcessor")) {
-            if (StringBuilder.class.equals(traceState.getClass())) {
-                StringBuilder message = (StringBuilder) traceState;
-                recordOut(message, node, exchange);
-                storeMessage(message);
-            }
-        }
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInitIdOnAllNodesTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInitIdOnAllNodesTest.java
deleted file mode 100644
index 1f4c7ec..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInitIdOnAllNodesTest.java
+++ /dev/null
@@ -1,99 +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.processor.interceptor;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.ChoiceDefinition;
-import org.apache.camel.model.LogDefinition;
-import org.apache.camel.model.OtherwiseDefinition;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.ToDefinition;
-import org.apache.camel.model.WhenDefinition;
-import org.junit.Test;
-
-/**
- * Tests that when tracing is enabled the ids of all the nodes is forced assigned
- * to ensure the tracer outputs node id for each node in the tracing messages.
- */
-public class TraceInitIdOnAllNodesTest extends ContextTestSupport {
-
-    @Test
-    public void testInitIdsOnAllNodes() throws Exception {
-        getMockEndpoint("mock:camel").expectedBodiesReceived("Hello Camel");
-        getMockEndpoint("mock:other").expectedBodiesReceived("Hello World");
-        getMockEndpoint("mock:end").expectedMessageCount(2);
-
-        template.sendBody("direct:start", "Hello Camel");
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-
-        RouteDefinition route = context.getRouteDefinitions().get(0);
-        assertNotNull(route);
-
-        ChoiceDefinition choice = (ChoiceDefinition) route.getOutputs().get(0);
-        assertEquals("choice1", choice.getId());
-
-        WhenDefinition when = (WhenDefinition) choice.getOutputs().get(0);
-        assertEquals("when1", when.getId());
-
-        LogDefinition log1 = (LogDefinition) when.getOutputs().get(0);
-        assertEquals("log1", log1.getId());
-
-        ToDefinition to1 = (ToDefinition) when.getOutputs().get(1);
-        assertEquals("camel", to1.getId());
-
-        OtherwiseDefinition other = (OtherwiseDefinition) choice.getOutputs().get(1);
-        assertEquals("otherwise1", other.getId());
-
-        LogDefinition log2 = (LogDefinition) other.getOutputs().get(0);
-        assertEquals("log2", log2.getId());
-
-        ToDefinition to2 = (ToDefinition) other.getOutputs().get(1);
-        assertEquals("to1", to2.getId());
-
-        ToDefinition to3 = (ToDefinition) other.getOutputs().get(2);
-        assertEquals("foo", to3.getId());
-
-        ToDefinition to4 = (ToDefinition) route.getOutputs().get(1);
-        assertEquals("end", to4.getId());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                // when tracing is enabled, then the ids is force assigned
-                context.setTracing(true);
-
-                from("direct:start")
-                    .choice()
-                        .when(body().contains("Camel"))
-                            .log("A Camel message")
-                            .to("mock:camel").id("camel")
-                        .otherwise()
-                            .log("Some other kind of message")
-                            .to("mock:other") // should auto generate id
-                            .to("mock:foo").id("foo")
-                        .end()
-                    .to("mock:end").id("end");
-            }
-        };
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorCustomJpaMessage.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorCustomJpaMessage.java
deleted file mode 100644
index df2f169..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorCustomJpaMessage.java
+++ /dev/null
@@ -1,191 +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.processor.interceptor;
-
-import java.util.Date;
-
-import org.apache.camel.Exchange;
-
-public class TraceInterceptorCustomJpaMessage implements TraceEventMessage {
-
-    protected Long id;
-    protected Date timestamp;
-    protected String fromEndpointUri;
-    protected String previousNode;
-    protected String toNode;
-    protected String exchangeId;
-    protected String routeId;
-    protected String shortExchangeId;
-    protected String exchangePattern;
-    protected String properties;
-    protected String headers;
-    protected String body;
-    protected String bodyType;
-    protected String outHeaders;
-    protected String outBody;
-    protected String outBodyType;
-    protected String causedByException;
-
-    public TraceInterceptorCustomJpaMessage() {
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Date getTimestamp() {
-        return timestamp;
-    }
-
-    public void setTimestamp(Date timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    public String getPreviousNode() {
-        return previousNode;
-    }
-
-    public void setPreviousNode(String previousNode) {
-        this.previousNode = previousNode;
-    }
-
-    public String getFromEndpointUri() {
-        return fromEndpointUri;
-    }
-
-    public void setFromEndpointUri(String fromEndpointUri) {
-        this.fromEndpointUri = fromEndpointUri;
-    }
-
-    public String getToNode() {
-        return toNode;
-    }
-
-    public void setToNode(String toNode) {
-        this.toNode = toNode;
-    }
-
-    public String getExchangeId() {
-        return exchangeId;
-    }
-
-    public void setExchangeId(String exchangeId) {
-        this.exchangeId = exchangeId;
-    }
-
-    public String getRouteId() {
-        return routeId;
-    }
-
-    public void setRouteId(String routeId) {
-        this.routeId = routeId;
-    }
-
-    public String getShortExchangeId() {
-        return shortExchangeId;
-    }
-
-    public void setShortExchangeId(String shortExchangeId) {
-        this.shortExchangeId = shortExchangeId;
-    }
-
-    public String getExchangePattern() {
-        return exchangePattern;
-    }
-
-    public void setExchangePattern(String exchangePattern) {
-        this.exchangePattern = exchangePattern;
-    }
-
-    public String getProperties() {
-        return properties;
-    }
-
-    public void setProperties(String properties) {
-        this.properties = properties;
-    }
-
-    public String getHeaders() {
-        return headers;
-    }
-
-    public void setHeaders(String headers) {
-        this.headers = headers;
-    }
-
-    public String getBody() {
-        return body;
-    }
-
-    public void setBody(String body) {
-        this.body = body;
-    }
-
-    public String getBodyType() {
-        return bodyType;
-    }
-
-    public void setBodyType(String bodyType) {
-        this.bodyType = bodyType;
-    }
-
-    public String getOutBody() {
-        return outBody;
-    }
-
-    public void setOutBody(String outBody) {
-        this.outBody = outBody;
-    }
-
-    public String getOutBodyType() {
-        return outBodyType;
-    }
-
-    public void setOutBodyType(String outBodyType) {
-        this.outBodyType = outBodyType;
-    }
-
-    public String getOutHeaders() {
-        return outHeaders;
-    }
-
-    public void setOutHeaders(String outHeaders) {
-        this.outHeaders = outHeaders;
-    }
-
-    public String getCausedByException() {
-        return causedByException;
-    }
-
-    public void setCausedByException(String causedByException) {
-        this.causedByException = causedByException;
-    }
-
-    public Exchange getTracedExchange() {
-        return null;
-    }
-
-    @Override
-    public String toString() {
-        return "TraceInterceptorCustomJpaMessage[" + getExchangeId() + "] on node: " + getToNode();
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorCustomJpaMessageTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorCustomJpaMessageTest.java
deleted file mode 100644
index c3530dd..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorCustomJpaMessageTest.java
+++ /dev/null
@@ -1,91 +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.processor.interceptor;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
-import org.apache.camel.component.mock.MockEndpoint;
-
-public class TraceInterceptorCustomJpaMessageTest extends TracingTestBase {
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext contextLocal = super.createCamelContext();
-
-        Tracer tracer = (Tracer) contextLocal.getDefaultTracer();
-        tracer.setEnabled(true);
-        tracer.setTraceExceptions(true);
-        tracer.setUseJpa(true);
-        tracer.setDestinationUri("mock:jpa-trace");
-        tracer.setJpaTraceEventMessageClassName("org.apache.camel.processor.interceptor.TraceInterceptorCustomJpaMessage");
-
-        return contextLocal;
-    }
-
-    @Override
-    protected void prepareTestTracerInOnly() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        traces.expectedMessageCount(6);
-    }
-
-    @Override
-    protected void prepareTestTracerInOut() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        traces.expectedMessageCount(12);
-    }
-
-    @Override
-    protected void prepareTestTracerExceptionInOut() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        traces.expectedMessageCount(10);
-    }
-
-    @Override
-    protected void validateTestTracerInOnly() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        assertEquals(6, traces.getExchanges().size());
-        for (Exchange exchange : traces.getExchanges()) {
-            assertEquals(exchange.getIn().getBody().getClass(), TraceInterceptorCustomJpaMessage.class);
-        }
-    }
-
-    @Override
-    protected void validateTestTracerInOut() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        assertEquals(12, traces.getExchanges().size());
-        for (Exchange exchange : traces.getExchanges()) {
-            assertEquals(exchange.getIn().getBody().getClass(), TraceInterceptorCustomJpaMessage.class);
-        }
-    }
-
-    @Override
-    protected void validateTestTracerExceptionInOut() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        assertEquals(10, traces.getExchanges().size());
-        for (Exchange exchange : traces.getExchanges()) {
-            assertEquals(exchange.getIn().getBody().getClass(), TraceInterceptorCustomJpaMessage.class);
-        }
-    }
-
-    @Override
-    protected int getMessageCount() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        return traces.getExchanges().size();
-    }
-
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java
deleted file mode 100644
index 2da49ac..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorDestinationTest.java
+++ /dev/null
@@ -1,163 +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.processor.interceptor;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class TraceInterceptorDestinationTest extends ContextTestSupport {
-
-    private List<String> tracedBodies = new ArrayList<>();
-    private List<String> tracedHeaders = new ArrayList<>();
-
-    @Test
-    public void testSendingSomeMessagesBeingTraced() throws Exception {
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedBodiesReceived("Bye World", "Foo World", "Foo World");
-
-        MockEndpoint mock = getMockEndpoint("mock:traced");
-        mock.expectedMessageCount(8);
-        // should be in our CSV format (defined in bottom of this class)
-        mock.message(0).body().regex("^direct://start;.*;.*;Hello London");
-        mock.message(1).body().regex("^direct://start;.*;.*;Hello World");
-        mock.message(2).body().regex("^direct://start;.*;.*;Goodday World");
-        mock.message(3).body().regex("^direct://start;.*;.*;Bye World");
-        mock.message(4).body().regex("^direct://foo;.*;.*;Hello Copenhagen");
-        mock.message(5).body().regex("^direct://foo;.*;.*;Foo World");
-        mock.message(6).body().regex("^direct://foo;.*;.*;Hello Beijing");
-        mock.message(7).body().regex("^direct://foo;.*;.*;Foo World");
-
-        template.sendBodyAndHeader("direct:start", "Hello London", "to", "James");
-        template.sendBody("direct:foo", "Hello Copenhagen");
-        // to test sending to same endpoint twice
-        template.sendBody("direct:foo", "Hello Beijing");
-
-        assertMockEndpointsSatisfied();
-
-        // assert we received the correct bodies at the given time of interception
-        // and that the bodies haven't changed during the routing of the original
-        // exchange that changes its body over time (Hello London -> Bye World)
-        assertEquals("Hello London", tracedBodies.get(0));
-        assertEquals("Hello World", tracedBodies.get(1));
-        assertEquals("Goodday World", tracedBodies.get(2));
-        assertEquals("Bye World", tracedBodies.get(3));
-        assertEquals("Hello Copenhagen", tracedBodies.get(4));
-        assertEquals("Foo World", tracedBodies.get(5));
-        assertEquals("Hello Beijing", tracedBodies.get(6));
-        assertEquals("Foo World", tracedBodies.get(7));
-
-        // assert headers as well
-        assertTrue(tracedHeaders.get(0), tracedHeaders.get(0).contains("to=James"));
-        assertTrue(tracedHeaders.get(1), tracedHeaders.get(1).contains("to=Hello"));
-        assertTrue(tracedHeaders.get(2), tracedHeaders.get(2).contains("to=Goodday"));
-        assertTrue(tracedHeaders.get(3), tracedHeaders.get(3).contains("to=Bye"));
-    }
-
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                // START SNIPPET: e1
-                // we create a tracer where we want to send TraveEvents to an endpoint
-                // "direct:traced" where we can do some custom processing such as storing
-                // it in a file or a database
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("direct:traced");
-                // we disable regular trace logging in the log file. You can omit this and
-                // have both.
-                tracer.setLogLevel(LoggingLevel.OFF);
-                // and we must remember to add the tracer to Camel
-                getContext().addInterceptStrategy(tracer);
-                // END SNIPPET: e1
-
-                from("direct:start")
-                        .process(new MyProcessor("Hello World"))
-                        .process(new MyProcessor("Goodday World"))
-                        .process(new MyProcessor("Bye World"))
-                        .to("mock:result");
-
-                from("direct:foo")
-                        .process(new MyProcessor("Foo World"))
-                        .to("mock:result");
-
-                from("direct:traced")
-                        .process(new MyTraveAssertProcessor())
-                        .process(new MyTraceMessageProcessor())
-                        .to("mock:traced");
-            }
-        };
-    }
-
-    class MyProcessor implements Processor {
-
-        private String msg;
-
-        MyProcessor(String msg) {
-            this.msg = msg;
-        }
-
-        public void process(Exchange exchange) throws Exception {
-            exchange.getIn().setBody(msg);
-            exchange.getIn().setHeader("to", msg.split(" ")[0]);
-        }
-    }
-
-    class MyTraveAssertProcessor implements Processor {
-
-        public void process(Exchange exchange) throws Exception {
-            String nodeId = exchange.getProperty(Exchange.TRACE_EVENT_NODE_ID, String.class);
-            Date timestamp = exchange.getProperty(Exchange.TRACE_EVENT_TIMESTAMP, Date.class);
-            assertNotNull(nodeId);
-            assertNotNull(timestamp);
-
-            // take a snapshot at current time for assertion later
-            // after mock assertions in unit test method
-            TraceEventMessage msg = exchange.getIn().getBody(DefaultTraceEventMessage.class);
-            tracedBodies.add(msg.getBody());
-            if (msg.getHeaders() != null) {
-                tracedHeaders.add(msg.getHeaders());
-            }
-        }
-    }
-
-    // START SNIPPET: e2
-    class MyTraceMessageProcessor implements Processor {
-
-        public void process(Exchange exchange) throws Exception {
-            // here we can transform the message how we like want it
-            TraceEventMessage msg = exchange.getIn().getBody(DefaultTraceEventMessage.class);
-
-            // we want to store it as a CSV with from;to;exchangeId;body
-            String s = msg.getFromEndpointUri() + ";" + msg.getToNode() + ";" + msg.getExchangeId() + ";" + msg.getBody();
-
-            // so we replace the IN body with our CSV string
-            exchange.getIn().setBody(s);
-        }
-    }
-    // END SNIPPET: e2
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.java
deleted file mode 100644
index ff73fd2..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorFactoryCreatesHandlerTest.java
+++ /dev/null
@@ -1,74 +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.processor.interceptor;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.DelegateProcessor;
-import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
-
-public class TraceInterceptorFactoryCreatesHandlerTest extends TracingTestBase {
-
-    private static class TraceInterceptorFactoryCreatesHandlerTestFactory implements TraceInterceptorFactory {
-        private List<StringBuilder> eventMessages;
-        private boolean traceAllNodes;
-
-        TraceInterceptorFactoryCreatesHandlerTestFactory(List<StringBuilder> eventMessages, boolean traceAllNodes) {
-            this.eventMessages = eventMessages;
-            this.traceAllNodes = traceAllNodes;
-        }
-
-        @SuppressWarnings("deprecation")
-        public Processor createTraceInterceptor(ProcessorDefinition<?> node, Processor target, TraceFormatter formatter, Tracer tracer) {
-            
-            TraceInterceptor interceptor = new TraceInterceptor(node, target, formatter, tracer);
-
-            while (target instanceof DelegateProcessor) {
-                target = ((DelegateProcessor) target).getProcessor();
-            }
-            if (traceAllNodes || !target.getClass().equals(TraceTestProcessor.class)) {
-                TraceHandlerTestHandler traceHandler = new TraceHandlerTestHandler(eventMessages);
-                traceHandler.setTraceAllNodes(true);
-                interceptor.setTraceHandler(traceHandler);
-            }
-
-            return interceptor;
-        }
-    }
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext contextLocal = super.createCamelContext();
-
-        tracedMessages = new LinkedList<>();
-
-        Tracer tracer = (Tracer) contextLocal.getDefaultTracer();
-        tracer.setEnabled(true);
-        tracer.setTraceExceptions(true);
-        if ("testTracerExceptionInOut".equals(getName())) {
-            tracer.setTraceInterceptorFactory(new TraceInterceptorFactoryCreatesHandlerTestFactory(tracedMessages, true));
-        } else {
-            tracer.setTraceInterceptorFactory(new TraceInterceptorFactoryCreatesHandlerTestFactory(tracedMessages, false));
-        }
-
-        return contextLocal;
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorSubclassFactory.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorSubclassFactory.java
deleted file mode 100644
index 2cdfec0..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorSubclassFactory.java
+++ /dev/null
@@ -1,100 +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.processor.interceptor;
-
-import java.util.List;
-
-import org.apache.camel.DelegateProcessor;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.model.ProcessorDefinition;
-
-public class TraceInterceptorSubclassFactory implements TraceInterceptorFactory {
-    private List<StringBuilder> eventMessages;
-    private boolean traceAllNodes;
-
-    public TraceInterceptorSubclassFactory(List<StringBuilder> eventMessages) {
-        this.eventMessages = eventMessages;
-    }
-
-    public TraceInterceptor createTraceInterceptor(ProcessorDefinition<?> node, Processor target, TraceFormatter formatter, Tracer tracer) {
-        return new TracerInterceptorSubclass(node, target, formatter, tracer, eventMessages, this);
-    }
-
-    public boolean getTraceAllNodes() {
-        return traceAllNodes;
-    }
-
-    public void setTraceAllNodes(boolean traceAllNodes) {
-        this.traceAllNodes = traceAllNodes;
-    }
-
-    private static class TracerInterceptorSubclass extends TraceInterceptor {
-        private List<StringBuilder> eventMessages;
-        private boolean traceThisNode = true;
-        private TraceInterceptorSubclassFactory factory;
-
-        TracerInterceptorSubclass(ProcessorDefinition<?> node, Processor target, TraceFormatter formatter,
-                                         Tracer tracer, List<StringBuilder> eventMessages, TraceInterceptorSubclassFactory factory) {
-            super(node, target, formatter, tracer);
-            this.eventMessages = eventMessages;
-            this.factory = factory;
-            while (target instanceof DelegateProcessor) {
-                target = ((DelegateProcessor) target).getProcessor();
-            }
-            if (target.getClass().equals(TraceTestProcessor.class)) {
-                traceThisNode = false;
-            }
-        }
-
-        private synchronized void storeMessage(StringBuilder message) {
-            eventMessages.add(message);
-        }
-
-        @Override
-        protected void traceExchange(Exchange exchange) throws Exception {
-            if (traceThisNode || factory.getTraceAllNodes()) {
-                StringBuilder message = new StringBuilder();
-                TraceHandlerTestHandler.recordComplete(message, getNode(), exchange);
-                storeMessage(message);
-            }
-        }
-
-        @Override
-        protected Object traceExchangeIn(Exchange exchange) throws Exception {
-            if (traceThisNode || factory.getTraceAllNodes()) {
-                StringBuilder message = new StringBuilder();
-                TraceHandlerTestHandler.recordIn(message, getNode(), exchange);
-                return message;
-            } else {
-                return null;
-            }
-        }
-
-        @Override
-        protected void traceExchangeOut(Exchange exchange, Object traceState) throws Exception {
-            if (traceThisNode || factory.getTraceAllNodes()) {
-                if (StringBuilder.class.equals(traceState.getClass())) {
-                    StringBuilder message = (StringBuilder) traceState;
-                    TraceHandlerTestHandler.recordOut(message, getNode(), exchange);
-                    storeMessage(message);
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorSubclassTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorSubclassTest.java
deleted file mode 100644
index 8697c77..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceInterceptorSubclassTest.java
+++ /dev/null
@@ -1,46 +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.processor.interceptor;
-
-import java.util.LinkedList;
-
-import org.apache.camel.CamelContext;
-
-public class TraceInterceptorSubclassTest extends TracingTestBase {
-
-    @Override
-    protected void prepareTestTracerExceptionInOut() {
-        super.prepareTestTracerExceptionInOut();
-        ((TraceInterceptorSubclassFactory) ((Tracer) context.getDefaultTracer())
-                .getTraceInterceptorFactory()).setTraceAllNodes(true);
-    }
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext contextLocal = super.createCamelContext();
-
-        tracedMessages = new LinkedList<>();
-
-        Tracer tracer = (Tracer) contextLocal.getDefaultTracer();
-        tracer.setEnabled(true);
-        tracer.setTraceExceptions(true);
-        tracer.setTraceInterceptorFactory(new TraceInterceptorSubclassFactory(tracedMessages));
-
-        return contextLocal;
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceTestProcessor.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceTestProcessor.java
deleted file mode 100644
index accfff3..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TraceTestProcessor.java
+++ /dev/null
@@ -1,31 +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.processor.interceptor;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-
-public class TraceTestProcessor implements Processor {
-
-    public void process(Exchange exchange) throws Exception {
-        String body = exchange.getIn().getBody(String.class);
-        if ("Kaboom".equals(body)) {
-            throw new Exception("Kaboom");
-        }
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracerTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracerTest.java
deleted file mode 100644
index aab2592..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracerTest.java
+++ /dev/null
@@ -1,109 +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.processor.interceptor;
-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.junit.After;
-import org.junit.Test;
-
-/**
- * @version 
- */
-public class TracerTest extends ContextTestSupport {
-
-    private Tracer tracer;
-
-    @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry jndi = super.createRegistry();
-        jndi.bind("traceFormatter", new DefaultTraceFormatter());
-        return jndi;
-    }
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = super.createCamelContext();
-
-        tracer = Tracer.createTracer(context);
-        tracer.setEnabled(true);
-        tracer.setTraceInterceptors(true);
-        tracer.setTraceFilter(body().contains("Camel"));
-        tracer.setTraceExceptions(true);
-        tracer.setLogStackTrace(true);
-        tracer.setUseJpa(false);
-        tracer.setDestination(context.getEndpoint("mock:traced"));
-
-        context.addInterceptStrategy(tracer);
-        tracer.start();
-
-        return context;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        tracer.stop();
-        super.tearDown();
-    }
-
-    @Test
-    public void testTracer() throws Exception {
-        MockEndpoint tracer = getMockEndpoint("mock:traced");
-        tracer.expectedMessageCount(1);
-
-        MockEndpoint result = getMockEndpoint("mock:result");
-        result.expectedMessageCount(3);
-
-        template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:start", "Bye World");
-        template.sendBody("direct:start", "Hello Camel");
-
-        assertMockEndpointsSatisfied();
-
-        DefaultTraceEventMessage em = tracer.getReceivedExchanges().get(0).getIn().getBody(DefaultTraceEventMessage.class);
-        assertEquals("Hello Camel", em.getBody());
-
-        assertEquals("String", em.getBodyType());
-        assertEquals(null, em.getCausedByException());
-        assertNotNull(em.getExchangeId());
-        assertNotNull(em.getShortExchangeId());
-        assertNotNull(em.getExchangePattern());
-        assertEquals("direct://start", em.getFromEndpointUri());
-        // there is always a breadcrumb header
-        assertNotNull(em.getHeaders());
-        assertNotNull(em.getProperties());
-        assertNull(em.getOutBody());
-        assertNull(em.getOutBodyType());
-        assertNull(em.getOutHeaders());
-        assertNull(em.getPreviousNode());
-        assertNotNull(em.getToNode());
-        assertNotNull(em.getTimestamp());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("direct:start").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracingRedeliveryIssueTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracingRedeliveryIssueTest.java
deleted file mode 100644
index b4a85bf..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracingRedeliveryIssueTest.java
+++ /dev/null
@@ -1,60 +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.processor.interceptor;
-
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TracingRedeliveryIssueTest extends Assert {
-
-    @Test
-    public void testTracing() throws Exception {
-        DefaultCamelContext context = new DefaultCamelContext();
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                errorHandler(defaultErrorHandler().maximumRedeliveries(3).redeliveryDelay(2000L));
-
-                from("direct:start").to("mock:result");
-            }
-        });
-
-        // Enable Tracer.
-        context.setTracing(true);
-        Tracer tracer = new Tracer();
-        tracer.setDestinationUri("mock:traced");
-        context.setDefaultTracer(tracer);
-        context.start();
-
-        MockEndpoint result = context.getEndpoint("mock:result", MockEndpoint.class);
-        result.setExpectedMessageCount(1);
-        MockEndpoint traced = context.getEndpoint("mock:traced", MockEndpoint.class);
-        traced.setExpectedMessageCount(1);
-
-        ProducerTemplate template = context.createProducerTemplate();
-        template.sendBody("direct:start", "foo");
-
-        MockEndpoint.assertIsSatisfied(result, traced);
-
-        context.stop();
-    }
-
-}
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracingTestBase.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracingTestBase.java
deleted file mode 100644
index 84a0bec..0000000
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/TracingTestBase.java
+++ /dev/null
@@ -1,138 +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.processor.interceptor;
-
-import java.util.List;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
-
-public abstract class TracingTestBase extends ContextTestSupport {
-    protected List<StringBuilder> tracedMessages;
-    private TraceTestProcessor processor = new TraceTestProcessor();
-
-    protected void prepareTestTracerInOnly() {
-    }
-
-    protected void prepareTestTracerInOut() {
-    }
-
-    protected void prepareTestTracerExceptionInOut() {
-    }
-
-    protected void validateTestTracerInOnly() {
-        assertEquals(3, tracedMessages.size());
-        for (StringBuilder tracedMessage : tracedMessages) {
-            String message = tracedMessage.toString();
-            assertTrue(message.startsWith("Complete:"));
-        }
-    }
-
-    protected void validateTestTracerInOut() {
-        assertEquals(3, tracedMessages.size());
-        for (StringBuilder tracedMessage : tracedMessages) {
-            String message = tracedMessage.toString();
-            assertTrue(message.startsWith("In:"));
-            assertTrue(message.contains("Out:"));
-        }
-    }
-
-    protected void validateTestTracerExceptionInOut() {
-        assertEquals(5, tracedMessages.size());
-        for (StringBuilder tracedMessage : tracedMessages) {
-            String message = tracedMessage.toString();
-            assertTrue(message.startsWith("In:"));
-            assertTrue(message.contains("Out:"));
-        }
-        assertTrue(tracedMessages.get(2).toString().contains("Ex:"));
-    }
-
-    protected int getMessageCount() {
-        return tracedMessages.size();
-    }
-
-    @Test
-    public void testTracerInOnly() throws Exception {
-        MockEndpoint result = getMockEndpoint("mock:result");
-        ((Tracer) context.getDefaultTracer()).setTraceOutExchanges(false);
-        result.expectedMessageCount(3);
-        prepareTestTracerInOnly();
-
-        template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:start", "Bye World");
-        template.sendBody("direct:start", "Hello Camel");
-
-        assertMockEndpointsSatisfied();
-
-        validateTestTracerInOnly();
-    }
-
-    @Test
-    public void testTracerInOut() throws Exception {
-        MockEndpoint result = getMockEndpoint("mock:result");
-        ((Tracer) context.getDefaultTracer()).setTraceOutExchanges(true);
-        result.expectedMessageCount(3);
-        prepareTestTracerInOut();
-
-        template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:start", "Bye World");
-        template.sendBody("direct:start", "Hello Camel");
-
-        assertMockEndpointsSatisfied();
-
-        validateTestTracerInOut();
-    }
-
-    @Test
-    public void testTracerExceptionInOut() throws Exception {
-        MockEndpoint result = getMockEndpoint("mock:result");
-        ((Tracer) context.getDefaultTracer()).setTraceOutExchanges(true);
-        result.expectedMessageCount(2);
-        prepareTestTracerExceptionInOut();
-
-        template.sendBody("direct:start", "Hello World");
-        try {
-            template.sendBody("direct:start", "Kaboom");
-            fail("Should have thrown exception");
-        } catch (Exception e) {
-            // ignore
-        }
-        template.sendBody("direct:start", "Hello Camel");
-
-        assertMockEndpointsSatisfied();
-
-        validateTestTracerExceptionInOut();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                context.setTracing(true);
-
-                from("direct:start")
-                        .tracing()
-                        .process(processor)
-                        .to("mock:result");
-            }
-        };
-
-    }
-}
diff --git a/components/camel-aws-xray/src/test/java/org/apache/camel/component/aws/xray/CamelAwsXRayTestSupport.java b/components/camel-aws-xray/src/test/java/org/apache/camel/component/aws/xray/CamelAwsXRayTestSupport.java
index 1f1f203..ac80140 100644
--- a/components/camel-aws-xray/src/test/java/org/apache/camel/component/aws/xray/CamelAwsXRayTestSupport.java
+++ b/components/camel-aws-xray/src/test/java/org/apache/camel/component/aws/xray/CamelAwsXRayTestSupport.java
@@ -23,9 +23,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.aws.xray.TestDataBuilder.TestTrace;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Rule;
@@ -57,10 +55,6 @@ public class CamelAwsXRayTestSupport extends CamelTestSupport {
         CamelContext context = super.createCamelContext();
 
         context.setTracing(true);
-        final Tracer tracer = new Tracer();
-        tracer.getDefaultTraceFormatter().setShowBody(false);
-        tracer.setLogLevel(LoggingLevel.INFO);
-        context.getInterceptStrategies().add(tracer);
 
         XRayTracer xRayTracer = new XRayTracer();
         xRayTracer.setCamelContext(context);
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyMarshalOneToManyWithHeadersTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyMarshalOneToManyWithHeadersTest.java
index eba8ace..d491d00 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyMarshalOneToManyWithHeadersTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyMarshalOneToManyWithHeadersTest.java
@@ -20,14 +20,13 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.dataformat.bindy.model.simple.linkonetomany.Order;
 import org.apache.camel.dataformat.bindy.model.simple.linkonetomany.OrderItem;
-import org.apache.camel.processor.interceptor.Tracer;
+
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.ContextConfiguration;
@@ -88,12 +87,6 @@ public class BindyMarshalOneToManyWithHeadersTest extends AbstractJUnit4SpringCo
 
         public void configure() {
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.INFO);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             BindyCsvDataFormat camelDataFormat = new BindyCsvDataFormat(Order.class);
             camelDataFormat.setLocale("en");
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java
index 8e39b98..4c97c2f 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java
@@ -22,13 +22,12 @@ import java.util.GregorianCalendar;
 import java.util.TimeZone;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.dataformat.bindy.model.simple.oneclass.Order;
-import org.apache.camel.processor.interceptor.Tracer;
+
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.ContextConfiguration;
@@ -97,12 +96,6 @@ public class BindyPojoSimpleCsvMarshallTest extends AbstractJUnit4SpringContextT
                 new BindyCsvDataFormat(org.apache.camel.dataformat.bindy.model.simple.oneclass.Order.class);
             camelDataFormat.setLocale("en");
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             // default should errors go to mock:error
             errorHandler(deadLetterChannel(URI_MOCK_ERROR).redeliveryDelay(0));
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvBooleanUnmarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvBooleanUnmarshallTest.java
index 9861e53..dbad3cd 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvBooleanUnmarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvBooleanUnmarshallTest.java
@@ -19,13 +19,12 @@ package org.apache.camel.dataformat.bindy.csv;
 import java.util.List;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.dataformat.bindy.model.simple.bool.BooleanExample;
-import org.apache.camel.processor.interceptor.Tracer;
+
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.ContextConfiguration;
@@ -112,12 +111,6 @@ public class BindySimpleCsvBooleanUnmarshallTest extends AbstractJUnit4SpringCon
         public void configure() {
             // from("file://src/test/data?move=./target/done").unmarshal(camelDataFormat).to("mock:result");
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             // default should errors go to mock:error
             errorHandler(deadLetterChannel(URI_MOCK_ERROR).redeliveryDelay(0));
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallPositionModifiedTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallPositionModifiedTest.java
index d7e8b3b..e077918 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallPositionModifiedTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallPositionModifiedTest.java
@@ -24,11 +24,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.dataformat.bindy.CommonBindyTest;
 import org.apache.camel.dataformat.bindy.model.simple.oneclassdifferentposition.Order;
-import org.apache.camel.processor.interceptor.Tracer;
+
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.ContextConfiguration;
@@ -80,12 +79,6 @@ public class BindySimpleCsvMarshallPositionModifiedTest extends CommonBindyTest
 
         public void configure() {
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             BindyCsvDataFormat csvBindyDataFormat = new BindyCsvDataFormat(org.apache.camel.dataformat.bindy.model.simple.oneclassdifferentposition.Order.class);
             csvBindyDataFormat.setLocale("en");
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java
index 70689f9..be2812a 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java
@@ -26,13 +26,12 @@ import java.util.Map;
 import java.util.TimeZone;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.dataformat.bindy.model.simple.oneclass.Order;
-import org.apache.camel.processor.interceptor.Tracer;
+
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.ContextConfiguration;
@@ -103,12 +102,6 @@ public class BindySimpleCsvMarshallTest extends AbstractJUnit4SpringContextTests
 
         public void configure() {
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             BindyCsvDataFormat camelDataFormat = new BindyCsvDataFormat(org.apache.camel.dataformat.bindy.model.simple.oneclass.Order.class);
             camelDataFormat.setLocale("en");
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java
index b2e458c..5542f27 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallBadIntegerTest.java
@@ -19,12 +19,10 @@ package org.apache.camel.dataformat.bindy.csv;
 
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.test.junit4.TestSupport;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -100,14 +98,6 @@ public class BindySimpleCsvUnmarshallBadIntegerTest extends AbstractJUnit4Spring
 
         public void configure() {
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-            tracer.setLogStackTrace(true);
-            tracer.setTraceExceptions(true);
-
-            getContext().addInterceptStrategy(tracer);
-
             // default should errors go to mock:error
             errorHandler(deadLetterChannel(URI_MOCK_ERROR));
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallPositionModifiedTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallPositionModifiedTest.java
index 8ad7d83..d8e2bbc 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallPositionModifiedTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallPositionModifiedTest.java
@@ -18,13 +18,11 @@ package org.apache.camel.dataformat.bindy.csv;
 
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.dataformat.bindy.format.FormatException;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.test.junit4.TestSupport;
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
@@ -93,12 +91,6 @@ public class BindySimpleCsvUnmarshallPositionModifiedTest extends AbstractJUnit4
 
         public void configure() {
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             // default should errors go to mock:error
             errorHandler(deadLetterChannel(URI_MOCK_ERROR).redeliveryDelay(0));
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java
index 6b08831..aef74c2 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvUnmarshallTest.java
@@ -20,14 +20,12 @@ import java.util.List;
 
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.dataformat.bindy.format.FormatException;
 import org.apache.camel.dataformat.bindy.model.simple.oneclass.Order;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.test.junit4.TestSupport;
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
@@ -142,12 +140,6 @@ public class BindySimpleCsvUnmarshallTest extends AbstractJUnit4SpringContextTes
         public void configure() {
             // from("file://src/test/data?move=./target/done").unmarshal(camelDataFormat).to("mock:result");
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             // default should errors go to mock:error
             errorHandler(deadLetterChannel(URI_MOCK_ERROR).redeliveryDelay(0));
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairWithoutSectionMarshallDslTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairWithoutSectionMarshallDslTest.java
index d392a8b..48f64d4 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairWithoutSectionMarshallDslTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairWithoutSectionMarshallDslTest.java
@@ -23,14 +23,13 @@ import java.util.Map;
 
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.dataformat.bindy.kvp.BindyKeyValuePairDataFormat;
 import org.apache.camel.dataformat.bindy.model.fix.withoutsection.Order;
-import org.apache.camel.processor.interceptor.Tracer;
+
 import org.junit.Test;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
@@ -100,14 +99,6 @@ public class BindySimpleKeyValuePairWithoutSectionMarshallDslTest extends Abstra
 
         public void configure() {
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-            tracer.setLogStackTrace(true);
-            tracer.setTraceExceptions(true);
-
-            getContext().addInterceptStrategy(tracer);
-
             // default should errors go to mock:error
             errorHandler(deadLetterChannel(URI_MOCK_ERROR));
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthMarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthMarshallTest.java
index ac8cdf2..5d1a61a 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthMarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthMarshallTest.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
@@ -35,7 +34,7 @@ import org.apache.camel.dataformat.bindy.annotation.DataField;
 import org.apache.camel.dataformat.bindy.annotation.FixedLengthRecord;
 import org.apache.camel.model.dataformat.BindyDataFormat;
 import org.apache.camel.model.dataformat.BindyType;
-import org.apache.camel.processor.interceptor.Tracer;
+
 import org.junit.Test;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.ContextConfiguration;
@@ -97,12 +96,6 @@ public class BindySimpleFixedLengthMarshallTest extends AbstractJUnit4SpringCont
     public static class ContextConfig extends RouteBuilder {
         public void configure() {
 
-            Tracer tracer = new Tracer();
-            tracer.setLogLevel(LoggingLevel.ERROR);
-            tracer.setLogName("org.apache.camel.bindy");
-
-            getContext().addInterceptStrategy(tracer);
-
             // default should errors go to mock:error
             errorHandler(deadLetterChannel(URI_MOCK_ERROR).redeliveryDelay(0));
 
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthObjectMarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthObjectMarshallTest.java
index e826ac6..baec317 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthObjectMarshallTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fixed/marshall/simple/BindySimpleFixedLengthObjectMarshallTest.java
@@ -24,7 +24,6 @@ import java.util.GregorianCalendar;
 import java.util.List;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.LoggingLevel;
 import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
@@ -33,7 +32,6 @@ import org.apache.camel.dataformat.bindy.annotation.DataField;
 import org.apache.camel.dataformat.bindy.annotation.FixedLengthRecord;
 import org.apache.camel.model.dataformat.BindyDataFormat;
 import org.apache.camel.model.dataformat.BindyType;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.spring.boot.TypeConversionConfiguration;
 import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration;
 import org.apache.camel.test.spring.CamelSpringDelegatingTestContextLoader;
@@ -75,11 +73,6 @@ public class BindySimpleFixedLengthObjectMarshallTest extends AbstractJUnit4Spri
         public RouteBuilder route() {
             return new RouteBuilder() {
                 public void configure() {
-                    Tracer tracer = new Tracer();
-                    tracer.setLogLevel(LoggingLevel.ERROR);
-                    tracer.setLogName("org.apache.camel.bindy");
-                    getContext().addInterceptStrategy(tracer);
-
                     // default should errors go to mock:error
                     errorHandler(deadLetterChannel(URI_MOCK_ERROR).redeliveryDelay(0));
 
diff --git a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index bd19ede..a7e359c 100644
--- a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -83,8 +83,6 @@ import org.apache.camel.model.transformer.TransformersDefinition;
 import org.apache.camel.model.validator.ValidatorsDefinition;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.HandleFault;
-import org.apache.camel.processor.interceptor.TraceFormatter;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.runtimecatalog.JSonSchemaResolver;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.ClassResolver;
@@ -204,16 +202,6 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         // setup JMX agent at first
         initJMXAgent();
 
-        Tracer tracer = getBeanForType(Tracer.class);
-        if (tracer != null) {
-            // use formatter if there is a TraceFormatter bean defined
-            TraceFormatter formatter = getBeanForType(TraceFormatter.class);
-            if (formatter != null) {
-                tracer.setFormatter(formatter);
-            }
-            LOG.info("Using custom Tracer: {}", tracer);
-            getContext().addInterceptStrategy(tracer);
-        }
         BacklogTracer backlogTracer = getBeanForType(BacklogTracer.class);
         if (backlogTracer != null) {
             LOG.info("Using custom BacklogTracer: {}", backlogTracer);
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/context-camel-1145.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/context-camel-1145.xml
deleted file mode 100644
index a02bb5f..0000000
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/context-camel-1145.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:camel="http://camel.apache.org/schema/spring"
-       xmlns:jaxws="http://cxf.apache.org/jaxws"
-       xmlns:http="http://cxf.apache.org/transports/http/configuration"
-       xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration"
-       
-       xsi:schemaLocation="
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
-       http://cxf.apache.org/transports/http-jetty/configuration http://cxf.apache.org/schemas/configuration/http-jetty.xsd
-       http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-	   http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
-	   http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <camel:camelContext id="camelJiraContext">        
-        <camel:jmxAgent id="agent" disabled="true" />
-        <camel:routeBuilder ref="routeBuilder" />
-    </camel:camelContext>
-
-	<bean id="camelTracer" class="org.apache.camel.processor.interceptor.Tracer">
-		<property name="enabled" value="true"/>
-    	<property name="traceExceptions" value="true"/>
-    	<property name="traceInterceptors" value="true"/>
-    	<property name="logLevel" value="INFO"/>
-	</bean>
-	
-	<bean id="traceFormatter" class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
-    	<property name="showBody" value="true"/>
-    	<property name="showBodyType" value="true"/>
-    	<property name="showProperties" value="true"/>
-    	<property name="showHeaders" value="true"/>
-	</bean>
-
-    <bean id="producerTemplate" 
-        factory-bean="camelJiraContext"
-        factory-method="createProducerTemplate">
-    </bean>
-  
-  	<bean id="routeBuilder" class="org.apache.camel.component.cxf.RouteBuilderCxfTracer"/>
-</beans>
\ No newline at end of file
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/PaddyRouteTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/PaddyRouteTest.java
index 33e046e..45d4ab0 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/PaddyRouteTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/PaddyRouteTest.java
@@ -20,7 +20,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.processor.interceptor.Tracer;
+
 import org.junit.Test;
 
 /**
@@ -47,8 +47,6 @@ public class PaddyRouteTest extends FtpServerTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                getContext().addInterceptStrategy(new Tracer());
-
                 from(getFtpUrl()).process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
                         assertNotNull(exchange.getIn().getHeader(Exchange.FILE_NAME));
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/processor/interceptor/jpa/JpaTraceEventMessage.java b/components/camel-jpa/src/main/java/org/apache/camel/processor/interceptor/jpa/JpaTraceEventMessage.java
deleted file mode 100644
index 4588461..0000000
--- a/components/camel-jpa/src/main/java/org/apache/camel/processor/interceptor/jpa/JpaTraceEventMessage.java
+++ /dev/null
@@ -1,220 +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.processor.interceptor.jpa;
-
-import java.io.Serializable;
-import java.util.Date;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.processor.interceptor.TraceEventMessage;
-
-/**
- * A JPA based {@link org.apache.camel.processor.interceptor.TraceEventMessage} that is capable of persisting
- * trace event into a database.
- */
-@Entity
-@Table(
-    name = "CAMEL_MESSAGETRACED"
-)
-public class JpaTraceEventMessage implements TraceEventMessage, Serializable {
-    private static final long serialVersionUID = -3577516047575267548L;
-    
-    protected Long id;
-    protected Date timestamp;
-    protected String fromEndpointUri;
-    protected String previousNode;
-    protected String toNode;
-    protected String exchangeId;
-    protected String shortExchangeId;
-    protected String exchangePattern;
-    protected String properties;
-    protected String headers;
-    protected String body;
-    protected String bodyType;
-    protected String outHeaders;
-    protected String outBody;
-    protected String outBodyType;
-    protected String causedByException;
-    protected String routeId;
-
-    public JpaTraceEventMessage() {
-    }
-
-    @Id
-    @GeneratedValue
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    @Temporal(TemporalType.TIMESTAMP)
-    public Date getTimestamp() {
-        return timestamp;
-    }
-
-    public void setTimestamp(Date timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    public String getPreviousNode() {
-        return previousNode;
-    }
-
-    public void setPreviousNode(String previousNode) {
-        this.previousNode = previousNode;
-    }
-
-    public String getFromEndpointUri() {
-        return fromEndpointUri;
-    }
-
-    public void setFromEndpointUri(String fromEndpointUri) {
-        this.fromEndpointUri = fromEndpointUri;
-    }
-
-    public String getToNode() {
-        return toNode;
-    }
-
-    public void setToNode(String toNode) {
-        this.toNode = toNode;
-    }
-
-    public String getExchangeId() {
-        return exchangeId;
-    }
-
-    public void setExchangeId(String exchangeId) {
-        this.exchangeId = exchangeId;
-    }
-
-    public String getShortExchangeId() {
-        return shortExchangeId;
-    }
-
-    public void setShortExchangeId(String shortExchangeId) {
-        this.shortExchangeId = shortExchangeId;
-    }
-
-    public String getExchangePattern() {
-        return exchangePattern;
-    }
-
-    public void setExchangePattern(String exchangePattern) {
-        this.exchangePattern = exchangePattern;
-    }
-
-    @Lob
-    public String getProperties() {
-        return properties;
-    }
-
-    public void setProperties(String properties) {
-        this.properties = properties;
-    }
-
-    @Lob
-    public String getHeaders() {
-        return headers;
-    }
-
-    public void setHeaders(String headers) {
-        this.headers = headers;
-    }
-
-    @Lob
-    public String getBody() {
-        return body;
-    }
-
-    public void setBody(String body) {
-        this.body = body;
-    }
-
-    public String getBodyType() {
-        return bodyType;
-    }
-
-    public void setBodyType(String bodyType) {
-        this.bodyType = bodyType;
-    }
-
-    @Lob
-    public String getOutBody() {
-        return outBody;
-    }
-
-    public void setOutBody(String outBody) {
-        this.outBody = outBody;
-    }
-
-    public String getOutBodyType() {
-        return outBodyType;
-    }
-
-    public void setOutBodyType(String outBodyType) {
-        this.outBodyType = outBodyType;
-    }
-
-    @Lob
-    public String getOutHeaders() {
-        return outHeaders;
-    }
-
-    public void setOutHeaders(String outHeaders) {
-        this.outHeaders = outHeaders;
-    }
-
-    @Lob
-    public String getCausedByException() {
-        return causedByException;
-    }
-
-    public void setCausedByException(String causedByException) {
-        this.causedByException = causedByException;
-    }
-
-    public String getRouteId() {
-        return routeId;
-    }
-
-    public void setRouteId(String routeId) {
-        this.routeId = routeId;
-    }
-
-    @Transient
-    public Exchange getTracedExchange() {
-        return null;
-    }
-
-    @Override
-    public String toString() {
-        return "TraceEventMessage[" + getExchangeId() + "] on node: " + getToNode();   
-    }
-
-}
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java b/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java
deleted file mode 100644
index 41bc36e..0000000
--- a/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java
+++ /dev/null
@@ -1,121 +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.processor.interceptor;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.jpa.JpaTraceEventMessage;
-import org.apache.camel.spring.SpringCamelContext;
-import org.apache.camel.spring.SpringRouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.transaction.TransactionStatus;
-import org.springframework.transaction.support.TransactionCallback;
-import org.springframework.transaction.support.TransactionTemplate;
-
-/**
- * @version 
- */
-public class JpaTraceEventMessageTest extends CamelTestSupport {
-    protected static final String SELECT_ALL_STRING = "select x from " + JpaTraceEventMessage.class.getName() + " x";
-
-    protected ApplicationContext applicationContext;
-    protected TransactionTemplate transactionTemplate;
-    protected EntityManager entityManager;
-
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        EntityManagerFactory entityManagerFactory = applicationContext.getBean("entityManagerFactory",
-                                                                               EntityManagerFactory.class);
-        transactionTemplate = applicationContext.getBean("transactionTemplate", TransactionTemplate.class);
-        entityManager = entityManagerFactory.createEntityManager();
-        cleanupRepository();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        super.tearDown();
-        entityManager.close();
-    }
-
-    @Test
-    public void testSendTraceMessage() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-        assertEntityInDB();
-    }
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        applicationContext = new ClassPathXmlApplicationContext("org/apache/camel/processor/interceptor/springJpaTraveEvent.xml");
-        return SpringCamelContext.springCamelContext(applicationContext);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new SpringRouteBuilder() {
-            public void configure() {
-                Tracer tracer = new Tracer();
-                tracer.setDestinationUri("jpa://" + JpaTraceEventMessage.class.getName() + "?persistenceUnit=trace");
-                tracer.setUseJpa(true);
-                getContext().addInterceptStrategy(tracer);
-
-                from("direct:start").routeId("foo").to("mock:result");
-            }
-        };
-    }
-
-    private void assertEntityInDB() throws Exception {
-        List<?> list = entityManager.createQuery(SELECT_ALL_STRING).getResultList();
-        assertEquals(1, list.size());
-
-        JpaTraceEventMessage db = (JpaTraceEventMessage)list.get(0);
-        assertNotNull(db.getId());
-        assertEquals("direct://start", db.getFromEndpointUri());
-        assertEquals("mock://result", db.getToNode());
-        assertEquals("foo", db.getRouteId());
-    }
-
-    protected void cleanupRepository() {
-        transactionTemplate.execute(new TransactionCallback<Object>() {
-            public Object doInTransaction(TransactionStatus arg0) {
-                entityManager.joinTransaction();
-                List<?> list = entityManager.createQuery(SELECT_ALL_STRING).getResultList();
-                for (Object item : list) {
-                    entityManager.remove(item);
-                }
-                entityManager.flush();
-                return Boolean.TRUE;
-            }
-        });
-    }
-}
\ No newline at end of file
diff --git a/components/camel-jpa/src/test/resources/META-INF/persistence.xml b/components/camel-jpa/src/test/resources/META-INF/persistence.xml
index 42a485c..f0c146b 100644
--- a/components/camel-jpa/src/test/resources/META-INF/persistence.xml
+++ b/components/camel-jpa/src/test/resources/META-INF/persistence.xml
@@ -77,20 +77,6 @@
   </persistence-unit>
   <!-- END SNIPPET: e1 -->
 
-  <!-- START SNIPPET: e2 -->
-  <persistence-unit name="trace" transaction-type="RESOURCE_LOCAL">
-    <class>org.apache.camel.processor.interceptor.jpa.JpaTraceEventMessage</class>
-
-    <properties>
-      <property name="openjpa.ConnectionURL" value="jdbc:derby:target/trace;create=true"/>
-      <property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
-      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
-      <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
-      <property name="openjpa.Multithreaded" value="true"/>
-    </properties>
-  </persistence-unit>
-  <!-- END SNIPPET: e2 -->
-
   <persistence-unit name="skipLockedEntiy" transaction-type="RESOURCE_LOCAL">
   	<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
     <class>org.apache.camel.examples.VersionedItem</class>
diff --git a/components/camel-jpa/src/test/resources/profiles/hibernate/META-INF/persistence.xml b/components/camel-jpa/src/test/resources/profiles/hibernate/META-INF/persistence.xml
index 83b1ffd..433cf74 100644
--- a/components/camel-jpa/src/test/resources/profiles/hibernate/META-INF/persistence.xml
+++ b/components/camel-jpa/src/test/resources/profiles/hibernate/META-INF/persistence.xml
@@ -67,19 +67,6 @@
     </properties>
   </persistence-unit>
 
-  <persistence-unit name="trace" transaction-type="RESOURCE_LOCAL">
-    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
-
-    <class>org.apache.camel.processor.interceptor.jpa.JpaTraceEventMessage</class>
-
-    <properties>
-      <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyTenSevenDialect"/>
-      <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/>
-      <property name="hibernate.connection.url" value="jdbc:derby:target/trace;create=true"/>
-      <property name="hibernate.hbm2ddl.auto" value="create"/>
-    </properties>
-  </persistence-unit>
-
   <persistence-unit name="skipLockedEntiy" transaction-type="RESOURCE_LOCAL">
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
 
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
index 811f3a4..7e120a2 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
@@ -42,10 +42,7 @@ import org.apache.camel.impl.CompositeRegistry;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.FileWatcherReloadStrategy;
 import org.apache.camel.processor.interceptor.BacklogTracer;
-import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
 import org.apache.camel.processor.interceptor.HandleFault;
-import org.apache.camel.processor.interceptor.TraceFormatter;
-import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.EndpointStrategy;
 import org.apache.camel.spi.EventFactory;
@@ -216,32 +213,6 @@ public class CamelAutoConfiguration {
 
         // tracing
         camelContext.setTracing(config.isTracing());
-        if (camelContext.getDefaultTracer() instanceof Tracer) {
-            Tracer tracer = (Tracer) camelContext.getDefaultTracer();
-            if (tracer.getDefaultTraceFormatter() != null) {
-                DefaultTraceFormatter formatter = tracer.getDefaultTraceFormatter();
-                if (config.getTracerFormatterBreadCrumbLength() != null) {
-                    formatter.setBreadCrumbLength(config.getTracerFormatterBreadCrumbLength());
-                }
-                if (config.getTracerFormatterMaxChars() != null) {
-                    formatter.setMaxChars(config.getTracerFormatterMaxChars());
-                }
-                if (config.getTracerFormatterNodeLength() != null) {
-                    formatter.setNodeLength(config.getTracerFormatterNodeLength());
-                }
-                formatter.setShowBody(config.isTraceFormatterShowBody());
-                formatter.setShowBodyType(config.isTracerFormatterShowBodyType());
-                formatter.setShowBreadCrumb(config.isTraceFormatterShowBreadCrumb());
-                formatter.setShowException(config.isTraceFormatterShowException());
-                formatter.setShowExchangeId(config.isTraceFormatterShowExchangeId());
-                formatter.setShowExchangePattern(config.isTraceFormatterShowExchangePattern());
-                formatter.setShowHeaders(config.isTraceFormatterShowHeaders());
-                formatter.setShowNode(config.isTraceFormatterShowNode());
-                formatter.setShowProperties(config.isTraceFormatterShowProperties());
-                formatter.setShowRouteId(config.isTraceFormatterShowRouteId());
-                formatter.setShowShortExchangeId(config.isTraceFormatterShowShortExchangeId());
-            }
-        }
 
         if (config.getXmlRoutesReloadDirectory() != null) {
             ReloadStrategy reload = new FileWatcherReloadStrategy(config.getXmlRoutesReloadDirectory());
@@ -370,17 +341,6 @@ public class CamelAutoConfiguration {
      * Similar code in camel-core-xml module in class org.apache.camel.core.xml.AbstractCamelContextFactoryBean.
      */
     static void afterPropertiesSet(ApplicationContext applicationContext, CamelContext camelContext) throws Exception {
-        Tracer tracer = getSingleBeanOfType(applicationContext, Tracer.class);
-        if (tracer != null) {
-            // use formatter if there is a TraceFormatter bean defined
-            TraceFormatter formatter = getSingleBeanOfType(applicationContext, TraceFormatter.class);
-            if (formatter != null) {
-                tracer.setFormatter(formatter);
-            }
-            LOG.info("Using custom Tracer: {}", tracer);
-            camelContext.addInterceptStrategy(tracer);
-        }
-
         final ManagementStrategy managementStrategy = camelContext.getManagementStrategy();
 
         registerPropertyForBeanType(applicationContext, BacklogTracer.class, camelContext::addInterceptStrategy);
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TracerConfigurationTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TracerConfigurationTest.java
deleted file mode 100644
index 3b8c94c..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TracerConfigurationTest.java
+++ /dev/null
@@ -1,45 +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.spring.interceptor;
-
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spring.SpringTestSupport;
-import org.junit.Test;
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-/**
- *  Unit test for tracer configuration configured in spring XML.
- */
-public class TracerConfigurationTest extends SpringTestSupport {
-
-    protected AbstractXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext(
-            "/org/apache/camel/spring/interceptor/tracerConfigurationTest.xml");
-    }
-
-    @Test
-    public void testTraceFormatter() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:start", "Hello World");
-
-        assertMockEndpointsSatisfied();
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerOnExceptionTraceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerOnExceptionTraceTest.java
deleted file mode 100644
index b5935e6..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerOnExceptionTraceTest.java
+++ /dev/null
@@ -1,35 +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.spring.processor;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.processor.DefaultErrorHandlerOnExceptionTraceTest;
-
-import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
-
-public class SpringDefaultErrorHandlerOnExceptionTraceTest extends DefaultErrorHandlerOnExceptionTraceTest {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/SpringDefaultErrorHandlerOnExceptionTraceTest.xml");
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringInterceptSimpleRouteTraceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringInterceptSimpleRouteTraceTest.java
deleted file mode 100644
index d43c5e2..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringInterceptSimpleRouteTraceTest.java
+++ /dev/null
@@ -1,35 +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.spring.processor;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.processor.intercept.InterceptSimpleRouteTraceTest;
-
-import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
-
-public class SpringInterceptSimpleRouteTraceTest extends InterceptSimpleRouteTraceTest {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/SpringInterceptSimpleRouteTraceTest.xml");
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringOnCompletionGlobalTraceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringOnCompletionGlobalTraceTest.java
deleted file mode 100644
index 3ae31bd..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringOnCompletionGlobalTraceTest.java
+++ /dev/null
@@ -1,35 +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.spring.processor;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.processor.OnCompletionGlobalTraceTest;
-
-import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
-
-public class SpringOnCompletionGlobalTraceTest extends OnCompletionGlobalTraceTest {
-
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/SpringOnCompletionGlobalTraceTest.xml");
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTraceInterceptorWithOutBodyTraceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTraceInterceptorWithOutBodyTraceTest.java
deleted file mode 100644
index 6ce0502..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTraceInterceptorWithOutBodyTraceTest.java
+++ /dev/null
@@ -1,29 +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.spring.processor;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.processor.TraceInterceptorWithOutBodyTraceTest;
-
-import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
-
-public class SpringTraceInterceptorWithOutBodyTraceTest extends TraceInterceptorWithOutBodyTraceTest {
-    protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml");
-    }
-}
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTracePerRouteTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTracePerRouteTest.java
deleted file mode 100644
index ae2b1c4..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTracePerRouteTest.java
+++ /dev/null
@@ -1,32 +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.spring.processor;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.processor.TracePerRouteTest;
-
-import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
-
-/**
- * @version 
- */
-public class SpringTracePerRouteTest extends TracePerRouteTest {
-
-    protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/traceperroute.xml");
-    }
-}
\ No newline at end of file
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/SpringTraceInitIdOnAllNodesTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/SpringTraceInitIdOnAllNodesTest.java
deleted file mode 100644
index 68d44a7..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/SpringTraceInitIdOnAllNodesTest.java
+++ /dev/null
@@ -1,33 +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.spring.processor.tracing;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.processor.interceptor.TraceInitIdOnAllNodesTest;
-
-import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
-
-/**
- *
- */
-public class SpringTraceInitIdOnAllNodesTest extends TraceInitIdOnAllNodesTest {
-
-    protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/tracing/SpringTraceInitIdOnAllNodesTest.xml");
-    }
-
-}
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceHandlerTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceHandlerTest.java
deleted file mode 100644
index 2be3d98..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceHandlerTest.java
+++ /dev/null
@@ -1,28 +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.spring.processor.tracing;
-
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-public class TraceHandlerTest extends TracingTestBase {
-
-    @Override
-    protected AbstractXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/spring/processor/tracing/traceHandlerTestContext.xml");
-    }
-}
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceInterceptorCustomJpaMessageTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceInterceptorCustomJpaMessageTest.java
deleted file mode 100644
index 45d3499..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceInterceptorCustomJpaMessageTest.java
+++ /dev/null
@@ -1,53 +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.spring.processor.tracing;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.TraceInterceptorCustomJpaMessage;
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-public class TraceInterceptorCustomJpaMessageTest extends TracingTestBase {
-
-    @Override
-    protected AbstractXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/spring/processor/tracing/traceInterceptorCustomJpaMessageContext.xml");
-    }
-
-    @Override
-    protected void prepareTestTracerExceptionInOut() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        traces.expectedMessageCount(14);
-    }
-
-    @Override
-    protected void validateTestTracerExceptionInOut() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        assertEquals(14, traces.getExchanges().size());
-        for (Exchange exchange : traces.getExchanges()) {
-            assertEquals(exchange.getIn().getBody().getClass(), TraceInterceptorCustomJpaMessage.class);
-        }
-    }
-
-    @Override
-    protected int getMessageCount() {
-        MockEndpoint traces = getMockEndpoint("mock:jpa-trace");
-        return traces.getExchanges().size();
-    }
-
-}
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceInterceptorSubclassTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceInterceptorSubclassTest.java
deleted file mode 100644
index 29d603f..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TraceInterceptorSubclassTest.java
+++ /dev/null
@@ -1,37 +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.spring.processor.tracing;
-
-import java.util.List;
-
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-public class TraceInterceptorSubclassTest extends TracingTestBase {
-
-    @Override
-    protected AbstractXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/spring/processor/tracing/traceInterceptorSubclassContext.xml");
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    protected List<StringBuilder> getTracedMessages() {
-        return this.applicationContext.getBean("eventMessages", List.class);
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TracingTestBase.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TracingTestBase.java
deleted file mode 100644
index 46428ed..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/tracing/TracingTestBase.java
+++ /dev/null
@@ -1,74 +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.spring.processor.tracing;
-
-import java.util.List;
-
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.interceptor.TraceHandlerTestHandler;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.apache.camel.spring.SpringTestSupport;
-import org.junit.Test;
-
-public abstract class TracingTestBase extends SpringTestSupport {
-
-    protected List<StringBuilder> getTracedMessages() {
-        Tracer tracer = this.applicationContext.getBean("tracer", Tracer.class);
-        TraceHandlerTestHandler handler = (TraceHandlerTestHandler) tracer.getTraceHandlers().get(0);
-        return handler.getEventMessages();
-    }
-
-    protected void prepareTestTracerExceptionInOut() {
-    }
-
-    protected void validateTestTracerExceptionInOut() {
-        List<StringBuilder> tracedMessages = getTracedMessages();
-        assertEquals(7, tracedMessages.size());
-        for (StringBuilder tracedMessage : tracedMessages) {
-            String message = tracedMessage.toString();
-            assertTrue(message.startsWith("In"));
-            assertTrue(message.contains("Out:"));
-        }
-        assertTrue(tracedMessages.get(4).toString().contains("Ex:"));
-    }
-
-    protected int getMessageCount() {
-        return getTracedMessages().size();
-    }
-
-    @Test
-    public void testTracerExceptionInOut() throws Exception {
-        MockEndpoint result = getMockEndpoint("mock:result");
-        ((Tracer) context.getDefaultTracer()).setTraceOutExchanges(true);
-        result.expectedMessageCount(3);
-        prepareTestTracerExceptionInOut();
-
-        template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:start", "Bye World");
-        try {
-            template.sendBody("direct:start", "Kaboom");
-            fail("Should have thrown exception");
-        } catch (Exception e) {
-            // expected
-        }
-        template.sendBody("direct:start", "Hello Camel");
-
-        assertMockEndpointsSatisfied();
-
-        validateTestTracerExceptionInOut();
-    }
-}
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml
deleted file mode 100644
index e127d84..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd 
-    ">
-
-    <!-- START SNIPPET: e1 -->
-    <bean id="traceFormatter" class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
-        <property name="showBody" value="true"/>
-        <property name="showBodyType" value="false"/>
-        <property name="showBreadCrumb" value="false"/>
-        <property name="maxChars" value="100"/>
-    </bean>
-
-    <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:start"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-    <!-- END SNIPPET: e1 -->
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/tracerConfigurationTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/tracerConfigurationTest.xml
deleted file mode 100644
index 183167b..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/tracerConfigurationTest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd 
-    ">
-
-    <!-- START SNIPPET: e1 -->
-    <!-- we can configure the tracer by defining the tracer bean and set the properties as we like -->
-    <!-- the id name can be anything its the class that must be org.apache.camel.processor.interceptor.Tracer -->
-    <bean id="camelTracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="traceExceptions" value="false"/>
-        <property name="traceInterceptors" value="true"/>
-        <property name="logLevel" value="ERROR"/>
-        <property name="logName" value="com.mycompany.messages"/>
-    </bean>
-
-    <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:start"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-    <!-- END SNIPPET: e1 -->
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringDefaultErrorHandlerOnExceptionTraceTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringDefaultErrorHandlerOnExceptionTraceTest.xml
deleted file mode 100644
index eca828b..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringDefaultErrorHandlerOnExceptionTraceTest.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <bean id="tracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="destinationUri" value="mock:trace"/>
-    </bean>
-
-    <bean id="myProcessor" class="org.apache.camel.processor.DefaultErrorHandlerOnExceptionTraceTest$MyProcessor"/>
-
-    <camelContext xmlns="http://camel.apache.org/schema/spring">
-
-        <onException>
-            <exception>java.lang.IllegalArgumentException</exception>
-            <handled><constant>true</constant></handled>
-            <to uri="log:boom"/>
-            <to uri="mock:boom"/>
-        </onException>
-
-        <route>
-            <from uri="direct:start"/>
-            <process ref="myProcessor"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringInterceptSimpleRouteTraceTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringInterceptSimpleRouteTraceTest.xml
deleted file mode 100644
index 7197fe4..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringInterceptSimpleRouteTraceTest.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <bean id="tracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="destinationUri" value="mock:trace"/>
-    </bean>
-
-    <camelContext xmlns="http://camel.apache.org/schema/spring">
-        <intercept>
-            <to uri="mock:intercepted"/>
-        </intercept>
-
-        <route>
-            <from uri="direct:start"/>
-            <to uri="mock:foo"/>
-            <to uri="mock:bar"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringOnCompletionGlobalTraceTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringOnCompletionGlobalTraceTest.xml
deleted file mode 100644
index 198c3f6..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringOnCompletionGlobalTraceTest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <bean id="tracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="destinationUri" value="mock:trace"/>
-    </bean>
-
-    <bean id="myProcessor" class="org.apache.camel.processor.OnCompletionTest$MyProcessor"/>
-
-    <camelContext xmlns="http://camel.apache.org/schema/spring">
-        <onCompletion>
-            <to uri="log:global"/>
-            <to uri="mock:sync"/>
-        </onCompletion>
-
-        <route>
-            <from uri="direct:start"/>
-            <process ref="myProcessor"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml
deleted file mode 100644
index 848dd87..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceInterceptorWithOutBodyTrace.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-    
-  <!-- START SNIPPET: example -->
-  <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
-    <route>
-      <from uri="direct:start"/>
-      <transform>
-        <simple>${body}</simple>
-      </transform>
-      <to uri="mock:a"/>
-      <to uri="mock:b"/>
-    </route>
-  </camelContext>
-  <!-- END SNIPPET: example -->
-
-  <!-- START SNIPPET: tracingOutExchanges -->  
-  <bean id="camelTracer" class="org.apache.camel.processor.interceptor.Tracer">
-    <property name="traceOutExchanges" value="true" />
-  </bean>
-
-  <bean id="traceFormatter" class="org.apache.camel.processor.interceptor.DefaultTraceFormatter">
-    <property name="showOutBody" value="true" />
-    <property name="showOutBodyType" value="true" />
-  </bean>
-  <!-- END SNIPPET: tracingOutExchanges -->
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceperroute.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceperroute.xml
deleted file mode 100644
index a4732f8..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/traceperroute.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <bean id="myTracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="destinationUri" value="mock:traced"/>
-        <property name="logName" value="foo"/>
-    </bean>
-
-    <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:a"/>
-            <to uri="mock:a"/>
-        </route>
-        <route trace="false">
-            <from uri="direct:b"/>
-            <to uri="mock:b"/>
-        </route>
-        <route trace="true">
-            <from uri="direct:c"/>
-            <to uri="mock:c"/>
-        </route>
-    </camelContext>
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/SpringTraceInitIdOnAllNodesTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/SpringTraceInitIdOnAllNodesTest.xml
deleted file mode 100644
index 0cac42c..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/SpringTraceInitIdOnAllNodesTest.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-  <camelContext xmlns="http://camel.apache.org/schema/spring" trace="true">
-    <route>
-      <from uri="direct:start"/>
-      <choice>
-        <when>
-          <simple>${body} contains 'Camel'</simple>
-          <log message="A Camel message"/>
-          <to uri="mock:camel" id="camel"/>
-        </when>
-        <otherwise>
-          <log message="Some other kind of message"/>
-          <to uri="mock:other"/>
-          <to uri="mock:foo" id="foo"/>
-        </otherwise>
-      </choice>
-      <to uri="mock:end" id="end"/>
-    </route>
-  </camelContext>
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceHandlerTestContext.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceHandlerTestContext.xml
deleted file mode 100644
index 3911461..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceHandlerTestContext.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <bean id="tracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="traceHandler">
-            <bean class="org.apache.camel.processor.interceptor.TraceHandlerTestHandler">
-                <property name="traceAllNodes" value="true"/>
-            </bean>
-        </property>
-        <property name="enabled" value="true"/>
-        <property name="traceOutExchanges" value="true"/>
-    </bean>
-
-    <bean id="TraceTestProcessor" class="org.apache.camel.processor.interceptor.TraceTestProcessor"/>
-
-    <camelContext trace="true" id="camelTracingContext" xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:start"/>
-            <process ref="TraceTestProcessor"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceInterceptorCustomJpaMessageContext.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceInterceptorCustomJpaMessageContext.xml
deleted file mode 100644
index f6d4e1b..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceInterceptorCustomJpaMessageContext.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <bean id="tracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="enabled" value="true"/>
-        <property name="useJpa" value="true"/>
-        <property name="traceOutExchanges" value="true"/>
-        <property name="destinationUri" value="mock:jpa-trace"/>
-        <property name="jpaTraceEventMessageClassName"
-                  value="org.apache.camel.processor.interceptor.TraceInterceptorCustomJpaMessage"/>
-    </bean>
-
-    <bean id="TraceTestProcessor" class="org.apache.camel.processor.interceptor.TraceTestProcessor"/>
-
-    <camelContext trace="true" id="camelTracingContext" xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:start"/>
-            <process ref="TraceTestProcessor"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-
-</beans>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceInterceptorSubclassContext.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceInterceptorSubclassContext.xml
deleted file mode 100644
index fd6eb60..0000000
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/tracing/traceInterceptorSubclassContext.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-    ">
-
-    <bean id="eventMessages" class="java.util.LinkedList"/>
-
-    <bean id="tracer" class="org.apache.camel.processor.interceptor.Tracer">
-        <property name="traceInterceptorFactory">
-            <bean class="org.apache.camel.processor.interceptor.TraceInterceptorSubclassFactory">
-                <constructor-arg ref="eventMessages"/>
-                <property name="traceAllNodes" value="true"/>
-            </bean>
-        </property>
-        <property name="enabled" value="true"/>
-        <property name="traceOutExchanges" value="true"/>
-    </bean>
-
-    <bean id="TraceTestProcessor" class="org.apache.camel.processor.interceptor.TraceTestProcessor"/>
-
-    <camelContext trace="true" id="camelTracingContext" xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:start"/>
-            <process ref="TraceTestProcessor"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-
-</beans>
diff --git a/examples/camel-example-tracer/README.md b/examples/camel-example-tracer/README.md
deleted file mode 100644
index 0724ff2..0000000
--- a/examples/camel-example-tracer/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Tracer Example
-
-### Introduction
-This example shows how to persist Camel trace event messages into a database using JPA.
-
-### Build
-You will need to compile this example first:
-
-	mvn compile
-
-### Run
-
-To run the example with Maven, type
-
-	mvn camel:run
-
-In the console you can enter some words separated with space. Try to enter:
-
-	nice beer
-	beer whiskey
-	camel nice day
-
-This example will based on the input get some quotes from the input and select the best quote
-to return as response in the console.
-
-To stop the example hit <kbd>ctrl</kbd>+<kbd>c</kbd>
-
-### Forum, Help, etc
-
-If you hit an problems please let us know on the Camel Forums
-	<http://camel.apache.org/discussion-forums.html>
-
-Please help us make Apache Camel better - we appreciate any feedback you may
-have.  Enjoy!
-
-
-
-The Camel riders!
diff --git a/examples/camel-example-tracer/pom.xml b/examples/camel-example-tracer/pom.xml
deleted file mode 100644
index e9e8c81..0000000
--- a/examples/camel-example-tracer/pom.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.camel.example</groupId>
-    <artifactId>examples</artifactId>
-    <version>3.0.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>camel-example-tracer</artifactId>
-  <packaging>jar</packaging>
-  <name>Camel :: Example :: Tracer (deprecated)</name>
-  <description>An example showing how to persist Camel trace event messages using JPA</description>
-
-  <properties>
-    <category>Management and Monitoring</category>
-
-    <camel.osgi.export.pkg>org.apache.camel.example.tracer</camel.osgi.export.pkg>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-jpa</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-stream</artifactId>
-    </dependency>
-    
-    <!-- logging -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
-    <!-- lets use hibernate by default -->
-    <dependency>
-      <groupId>org.hibernate</groupId>
-      <artifactId>hibernate-entitymanager</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.derby</groupId>
-      <artifactId>derby</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-jta_1.1_spec</artifactId>
-    </dependency>
-
-    <!-- testing -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>attach-artifacts</id>
-            <phase>package</phase>
-            <goals>
-              <goal>attach-artifact</goal>
-            </goals>
-            <configuration>
-              <artifacts>
-                <artifact>
-                  <file>target/classes/features.xml</file>
-                  <type>xml</type>
-                  <classifier>features</classifier>
-                </artifact>
-              </artifacts>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Allows the example to be run via 'mvn camel:run' -->
-      <plugin>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>camel-maven-plugin</artifactId>
-        <version>${project.version}</version>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/FixedDerbyDialect.java b/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/FixedDerbyDialect.java
deleted file mode 100644
index f0787f7..0000000
--- a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/FixedDerbyDialect.java
+++ /dev/null
@@ -1,32 +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.example.tracer;
-
-import java.sql.Types;
-
-import org.hibernate.dialect.DerbyDialect;
-
-/**
- * See https://hibernate.onjira.com/browse/HHH-7264 for details
- *
- */
-public class FixedDerbyDialect extends DerbyDialect {
-
-    public FixedDerbyDialect() {
-        registerColumnType(Types.CLOB, "clob");
-    }
-}
diff --git a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/Main.java b/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/Main.java
deleted file mode 100644
index 3a28567..0000000
--- a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/Main.java
+++ /dev/null
@@ -1,32 +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.example.tracer;
-
-/**
- * To start the application from ANT
- */
-public final class Main {
-
-    private Main() {
-        // do nothing here
-    }
-    
-    public static void main(String[] args) throws Exception {
-        org.apache.camel.spring.Main.main(args);
-    }
-
-}
diff --git a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java b/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java
deleted file mode 100644
index 36e63e1..0000000
--- a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java
+++ /dev/null
@@ -1,78 +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.example.tracer;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.processor.aggregate.AggregationStrategy;
-
-/**
- * Our aggregator where we aggregate all the quotes and find the
- * the best quotes based on the one that has the most cool words
- * from our cools words list
- */
-public class QuoteAggregator implements AggregationStrategy {
-
-    private List<String> coolWords = new ArrayList<>();
-
-    public void setCoolWords(List<String> coolWords) {
-        for (String s : coolWords) {
-            // use lower case to be case insensitive
-            this.coolWords.add(s.toLowerCase());
-        }
-        // reverse order so indexOf returning -1 will be the last instead
-        Collections.reverse(this.coolWords);
-    }
-
-    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
-        if (oldExchange == null) {
-            // the first time then just return the new exchange
-            return newExchange;
-        }
-
-        // here we aggregate
-        // oldExchange is the current "winner"
-        // newExchange is the new candidate
-
-        // we get the quotes of the two exchanges
-        String oldQuote = oldExchange.getIn().getBody(String.class);
-        String newQuote = newExchange.getIn().getBody(String.class);
-
-        // now we compare the two and get a result indicate the best one
-        int result = new QuoteComparator().compare(oldQuote, newQuote);
-
-        // we return the winner
-        return result > 0 ? newExchange : oldExchange;
-    }
-
-    private class QuoteComparator implements Comparator<String> {
-
-        public int compare(java.lang.String o1, java.lang.String o2) {
-            // here we compare the two quotes and picks the one that
-            // is in the top of the cool words list
-            int index1 = coolWords.indexOf(o1.toLowerCase());
-            int index2 = coolWords.indexOf(o2.toLowerCase());
-
-            return index1 - index2;
-        }
-    }
-
-}
diff --git a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteService.java b/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteService.java
deleted file mode 100644
index 8f34b1b..0000000
--- a/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteService.java
+++ /dev/null
@@ -1,47 +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.example.tracer;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Our quote server that can split words and lookup a quote based on a word
- */
-public class QuoteService {
-
-    private List<String> quotes = new ArrayList<>();
-
-    public void setQuotes(List<String> quotes) {
-        this.quotes = quotes;
-    }
-
-    public String quote(String text) {
-        for (String s : quotes) {
-            if (s.toLowerCase().contains(text.toLowerCase())) {
-                return s;
-            }
-        }
-        return "No quote found for the input: " + text;
-    }
-
-    public List<String> splitWords(String payload) {
-        return Arrays.asList(payload.split(" "));
-    }
-
-}
diff --git a/examples/camel-example-tracer/src/main/resources/META-INF/LICENSE.txt b/examples/camel-example-tracer/src/main/resources/META-INF/LICENSE.txt
deleted file mode 100644
index 6b0b127..0000000
--- a/examples/camel-example-tracer/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/examples/camel-example-tracer/src/main/resources/META-INF/NOTICE.txt b/examples/camel-example-tracer/src/main/resources/META-INF/NOTICE.txt
deleted file mode 100644
index 2e215bf..0000000
--- a/examples/camel-example-tracer/src/main/resources/META-INF/NOTICE.txt
+++ /dev/null
@@ -1,11 +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/).
-
-   Please read the different LICENSE files present in the licenses directory of
-   this distribution.
diff --git a/examples/camel-example-tracer/src/main/resources/META-INF/persistence.xml b/examples/camel-example-tracer/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index 3f3e19c..0000000
--- a/examples/camel-example-tracer/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<!-- START SNIPPET: e1 -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence"
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             version="1.0">
-
-  <persistence-unit name="tracer" transaction-type="RESOURCE_LOCAL">
-    <class>org.apache.camel.processor.interceptor.jpa.JpaTraceEventMessage</class>
-
-    <properties>
-      <property name="hibernate.dialect" value="org.apache.camel.example.tracer.FixedDerbyDialect"/>
-      <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/>
-      <property name="hibernate.connection.url" value="jdbc:derby:target/derby;create=true"/>
-      <property name="hibernate.hbm2ddl.auto" value="create"/>
-
-      <!-- debugging flags -->
-      <!-- <property name="hibernate.show_sql" value="true"/>
-      <property name="hibernate.format_sql" value="true"/> -->
-    </properties>
-
-  </persistence-unit>
-</persistence>
-  <!-- END SNIPPET: e1 -->
diff --git a/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml b/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml
deleted file mode 100644
index e7a057b..0000000
--- a/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-         http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-    <!-- START SNIPPET: e3 -->
-    <endpoint id="traced" uri="jpa://org.apache.camel.processor.interceptor.JpaTraceEventMessage?persistenceUnit=tracer"/>
-    <!-- END SNIPPET: e3 -->
-
-    <!-- START SNIPPET: e4 -->
-    <route>
-      <!-- in stream to allow you to enter some text in the console -->
-      <from uri="stream:in?initialPromptDelay=4000&amp;promptDelay=2000&amp;promptMessage=Enter some words:"/>
-
-      <!-- split the text -->
-      <split>
-        <!-- use methodCall expression to split the words, using a java bean to do it -->
-        <method bean="quoteService" method="splitWords"/>
-
-        <!-- for each split message invoke the quote server to get a quote of the word -->
-        <to uri="bean:quoteService?method=quote"/>
-
-        <!-- now we need to find the best quote, so we aggregate all the splitted words
-             we use our own strategy how to aggregate -->
-        <aggregate strategyRef="myAggregateStrategy">
-          <!-- correlate everything using constant true, as they are all from the same source -->
-          <correlationExpression>
-            <constant>true</constant>
-          </correlationExpression>
-          <!-- complete after 1 sec on inactivity -->
-          <completionTimeout>
-            <constant>1000</constant>
-          </completionTimeout>
-          <!-- send the result to stream out so we can see the response in the console -->
-          <to uri="stream:out"/>
-        </aggregate>
-      </split>
-    </route>
-    <!-- END SNIPPET: e4 -->
-
-  </camelContext>
-
-  <!-- this is our aggregation strategy where we find the best quote -->
-  <bean id="myAggregateStrategy" class="org.apache.camel.example.tracer.QuoteAggregator">
-    <property name="coolWords">
-      <list value-type="java.lang.String">
-        <value>whiskey</value>
-        <value>beer</value>
-        <value>Camel</value>
-        <value>cool</value>
-        <value>great</value>
-      </list>
-    </property>
-  </bean>
-
-  <!-- our quote server with some quotes to start with -->
-  <bean id="quoteService" class="org.apache.camel.example.tracer.QuoteService">
-    <property name="quotes">
-      <list value-type="java.lang.String">
-        <value>Camel is cool</value>
-        <value>We like beer</value>
-        <value>Have a great day</value>
-        <value>Whiskey in the jar</value>
-        <value>The day that newer comes</value>
-        <value>What a cold day</value>
-      </list>
-    </property>
-  </bean>
-
-  <!-- START SNIPPET: e1 -->
-  <!-- use camel jpa trace so we can see all the traced exchanges in a database -->
-  <bean id="camelTracer" class="org.apache.camel.processor.interceptor.Tracer">
-    <!-- turn on jpa tracing, otherwise the TraceEventMessage is a non JPA Entity class -->
-    <property name="useJpa" value="true"/>
-    <!-- the destination to send the traced messages -->
-    <property name="destination" ref="traced"/>
-    <!-- we turn ordinary trace logging off so we only see the traced messages in the database,
-         but you can have both if you like -->
-    <property name="logLevel" value="OFF"/>
-  </bean>
-  <!-- END SNIPPET: e1 -->
-
-  <!-- START SNIPPET: e2 -->
-  <!-- this is ordinary JPA spring configuration -->
-  <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
-    <property name="transactionManager">
-      <bean class="org.springframework.orm.jpa.JpaTransactionManager">
-        <property name="entityManagerFactory" ref="entityManagerFactory"/>
-      </bean>
-    </property>
-  </bean>
-
-  <!-- this is ordinary JPA spring configuration -->
-  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
-    <!-- we have named our presistence unit tracer in the META-INF/persistence.xml file -->
-    <property name="persistenceUnitName" value="tracer"/>
-  </bean>
-  <!-- END SNIPPET: e2 -->
-</beans>
diff --git a/examples/camel-example-tracer/src/main/resources/features.xml b/examples/camel-example-tracer/src/main/resources/features.xml
deleted file mode 100644
index 68bf3e3..0000000
--- a/examples/camel-example-tracer/src/main/resources/features.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<features>
-    <repository>mvn:org.apache.camel.karaf/apache-camel/${project.version}/xml/features</repository>
-
-    <feature name="jpa-hibernate" version="${project.version}">
-        <bundle>mvn:org.apache.geronimo.specs/geronimo-jpa_2.1_spec/${geronimo-jpa-spec-version}</bundle>
-        <bundle>mvn:org.springframework/spring-jdbc/${spring-version}</bundle>
-        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6.1_2</bundle>
-        <bundle>mvn:org.antlr/com.springsource.antlr/2.7.7</bundle>
-        <bundle>mvn:org.objectweb.asm/com.springsource.org.objectweb.asm/1.5.3</bundle>
-        <bundle>mvn:net.sourceforge.cglib/com.springsource.net.sf.cglib/2.2.0</bundle>
-        <bundle>mvn:org.jboss.javassist/com.springsource.javassist/3.9.0.GA</bundle>
-        <bundle>mvn:org.hibernate/com.springsource.org.hibernate.annotations.common/3.3.0.ga</bundle>
-        <bundle>mvn:org.hibernate/com.springsource.org.hibernate.annotations/3.4.0.GA</bundle>
-        <bundle>mvn:org.hibernate/com.springsource.org.hibernate.ejb/3.4.0.GA</bundle>
-        <bundle>mvn:org.hibernate/com.springsource.org.hibernate/3.3.2.GA</bundle>
-        <bundle>mvn:org.springframework/spring-orm/${spring-version}</bundle>
-    </feature>
-
-    <feature name="camel-example-tracer" version="${project.version}">
-        <feature version="${project.version}">camel</feature>
-        <feature version="${project.version}">camel-jpa</feature>
-        <feature version="${project.version}">camel-stream</feature>
... 46 lines suppressed ...


[camel] 26/44: Trivial changes

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ce747d6916d26ad6ff227c7e000c387f76e5ef8d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 1 17:20:49 2018 +0200

    Trivial changes
---
 .../src/main/java/org/apache/camel/impl/DefaultRouteController.java    | 3 ++-
 camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java   | 1 -
 .../test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
index 9d8956f..766423a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
@@ -25,9 +25,10 @@ import org.apache.camel.Experimental;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.spi.RouteController;
+import org.apache.camel.support.ServiceSupport;
 
 @Experimental
-public class DefaultRouteController extends org.apache.camel.support.ServiceSupport implements RouteController  {
+public class DefaultRouteController extends ServiceSupport implements RouteController  {
     private DefaultCamelContext camelContext;
 
     public DefaultRouteController() {
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index c74e264..76b69df 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -200,7 +200,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     public List<RouteContext> addRoutes(ModelCamelContext camelContext, Collection<Route> routes) throws Exception {
         List<RouteContext> answer = new ArrayList<>();
 
-        @SuppressWarnings("deprecation")
         ErrorHandlerFactory handler = camelContext.getErrorHandlerFactory();
         if (handler != null) {
             setErrorHandlerBuilderIfNull(handler);
diff --git a/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java b/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java
index 879cd63..7af04c0 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/WireTapShutdownBeanTest.java
@@ -49,7 +49,7 @@ public class WireTapShutdownBeanTest extends ContextTestSupport {
 
         LATCH.countDown();
 
-        // shutdown Camel which should let the inlfight wire-tap message route to completion
+        // shutdown Camel which should let the inflight wire-tap message route to completion
         context.stop();
 
         // should allow to shutdown nicely


[camel] 37/44: Trivial cleanup

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ddb6d5a8c3fc79b67a5bf1c66e40698cc2003095
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 8 16:59:55 2018 +0200

    Trivial cleanup
---
 .../src/main/java/org/apache/camel/impl/DefaultCamelContext.java  | 8 ++------
 .../java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java  | 1 +
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index c57963b..1d415c6 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -3255,11 +3255,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
 
         // start management strategy before lifecycles are started
         ManagementStrategy managementStrategy = getManagementStrategy();
-        // inject CamelContext if aware
-        if (managementStrategy instanceof CamelContextAware) {
-            ((CamelContextAware) managementStrategy).setCamelContext(this);
-        }
-        ServiceHelper.startService(managementStrategy);
+        startService(managementStrategy);
 
         // start lifecycle strategies
         ServiceHelper.startService(lifecycleStrategies);
@@ -3287,7 +3283,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
                 }
             }
             if (notifier instanceof Service) {
-                startService((Service)notifier);
+                startService((Service) notifier);
             }
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
index 273e2df..521d71a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteFilter.java
@@ -19,6 +19,7 @@ package org.apache.camel.impl.cluster;
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.RouteDefinition;
 
+@FunctionalInterface
 public interface ClusteredRouteFilter {
     /**
      * Test if the route should be clustered or not.


[camel] 32/44: Remove useless @SuppressWarnings("deprecation")

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 5869902e511d2990fd25ad3a7f66e6c9f30e2972
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 5 09:05:18 2018 +0200

    Remove useless @SuppressWarnings("deprecation")
---
 camel-core/src/main/docs/eips/wireTap-eip.adoc                          | 1 -
 .../src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java  | 1 -
 camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java     | 1 -
 .../org/apache/camel/component/bean/AbstractCamelInvocationHandler.java | 1 -
 .../src/main/java/org/apache/camel/component/bean/MethodInfo.java       | 1 -
 camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java | 1 -
 .../src/main/java/org/apache/camel/language/simple/SimpleLanguage.java  | 2 --
 .../org/apache/camel/management/DefaultManagementLifecycleStrategy.java | 1 -
 .../src/main/java/org/apache/camel/model/ResequenceDefinition.java      | 1 -
 camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java    | 1 -
 .../java/org/apache/camel/processor/interceptor/DefaultChannel.java     | 1 -
 camel-core/src/test/java/org/apache/camel/ContextTestSupport.java       | 1 -
 .../java/org/apache/camel/component/dataset/DataSetEndpointTest.java    | 1 -
 .../camel/issues/RouteScopedOnExceptionMultipleRouteBuildersTest.java   | 1 -
 .../org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java   | 1 -
 .../src/test/java/org/apache/camel/management/CustomEndpoint.java       | 1 -
 .../java/org/apache/camel/management/RemoveRouteDefinitionTest.java     | 1 -
 .../test/java/org/apache/camel/processor/TryProcessorHandledTest.java   | 1 -
 .../camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java     | 2 --
 .../org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java   | 2 --
 .../java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java  | 2 --
 .../camel/processor/routingslip/RoutingSlipWithExceptionTest.java       | 1 -
 camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java   | 1 -
 .../src/main/java/org/apache/camel/http/common/HttpHelper.java          | 1 -
 .../src/main/java/org/apache/camel/component/jms/JmsComponent.java      | 1 -
 .../src/main/java/org/apache/camel/component/jms/JmsEndpoint.java       | 1 -
 .../src/test/java/org/apache/camel/component/jmx/JMXEndpointTest.java   | 1 -
 .../src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java | 1 -
 .../apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java | 1 -
 .../java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java  | 1 -
 .../java/org/apache/camel/component/netty4/http/NettyHttpHelper.java    | 1 -
 .../src/main/java/org/apache/camel/language/spel/SpelExpression.java    | 1 -
 components/camel-spring/src/main/java/org/apache/camel/spring/Main.java | 1 -
 .../src/test/java/org/apache/camel/spring/SpringTestSupport.java        | 1 -
 .../org/apache/camel/spring/processor/SpringCustomExpressionTest.java   | 1 -
 .../src/main/java/org/apache/camel/test/junit4/CamelTestSupport.java    | 1 -
 .../apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java  | 1 -
 .../src/main/java/org/apache/camel/maven/RunMojo.java                   | 1 -
 38 files changed, 42 deletions(-)

diff --git a/camel-core/src/main/docs/eips/wireTap-eip.adoc b/camel-core/src/main/docs/eips/wireTap-eip.adoc
index 275d930..b9f3a6f 100644
--- a/camel-core/src/main/docs/eips/wireTap-eip.adoc
+++ b/camel-core/src/main/docs/eips/wireTap-eip.adoc
@@ -121,7 +121,6 @@ link:exchange.html[Exchange]
 ----
     public void testFireAndForgetUsingProcessor() throws Exception {
         context.addRoutes(new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: e1
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
index cd08529..389131f 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
@@ -157,7 +157,6 @@ public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
     }
 
     protected static ErrorHandlerFactory lookupErrorHandlerBuilder(ModelCamelContext camelContext) {
-        @SuppressWarnings("deprecation")
         ErrorHandlerFactory answer = camelContext.getErrorHandlerFactory();
         if (answer instanceof ErrorHandlerBuilderRef) {
             ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef) answer;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index b25adfc..940c4d7 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -450,7 +450,6 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
 
     // Implementation methods
     // -----------------------------------------------------------------------
-    @SuppressWarnings("deprecation")
     protected void checkInitialized() throws Exception {
         if (initialized.compareAndSet(false, true)) {
             // Set the CamelContext ErrorHandler here
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
index 2861e3e..3ba3733 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
@@ -281,7 +281,6 @@ public abstract class AbstractCamelInvocationHandler implements InvocationHandle
         }
     }
 
-    @SuppressWarnings("deprecation")
     protected static synchronized ExecutorService getExecutorService(CamelContext context) {
         // CamelContext will shutdown thread pool when it shutdown so we can
         // lazy create it on demand
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index 6adb4ef..deccc88 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -108,7 +108,6 @@ public class MethodInfo {
         }
     }
 
-    @SuppressWarnings("deprecation")
     public MethodInfo(CamelContext camelContext, Class<?> type, Method method, List<ParameterInfo> parameters, List<ParameterInfo> bodyParameters,
                       boolean hasCustomAnnotation, boolean hasHandlerAnnotation) {
         this.camelContext = camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 5b8774e..c57963b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -199,7 +199,6 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
 /**
  * Represents the context used to configure routes and the policies to use.
  */
-@SuppressWarnings("deprecation")
 public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, ManagedCamelContext, Suspendable {
 
     private String version;
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
index ac33d45..e1099c4 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
@@ -149,7 +149,6 @@ public class SimpleLanguage extends LanguageSupport implements StaticService {
         }
     }
 
-    @SuppressWarnings("deprecation")
     public Predicate createPredicate(String expression) {
         ObjectHelper.notNull(expression, "expression");
 
@@ -169,7 +168,6 @@ public class SimpleLanguage extends LanguageSupport implements StaticService {
         return answer;
     }
 
-    @SuppressWarnings("deprecation")
     public Expression createExpression(String expression) {
         ObjectHelper.notNull(expression, "expression");
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 40a5a8a..1a1a7a3 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -114,7 +114,6 @@ import org.apache.camel.util.ObjectHelper;
  *
  * @see org.apache.camel.spi.ManagementStrategy
  */
-@SuppressWarnings("deprecation")
 public class DefaultManagementLifecycleStrategy extends ServiceSupport implements LifecycleStrategy, CamelContextAware {
 
     // the wrapped processors is for performance counters, which are in use for the created routes
diff --git a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
index 680f4d5..921f79a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
@@ -368,7 +368,6 @@ public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefiniti
      * @return the configured batch resequencer.
      * @throws Exception can be thrown
      */
-    @SuppressWarnings("deprecation")
     protected Resequencer createBatchResequencer(RouteContext routeContext,
                                                  BatchResequencerConfig config) throws Exception {
         Processor processor = this.createChildProcessor(routeContext, true);
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index 5798f71..23ab610 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -1146,7 +1146,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         this.restBindingDefinition = restBindingDefinition;
     }
 
-    @SuppressWarnings("deprecation")
     public boolean isContextScopedErrorHandler(CamelContext context) {
         if (!contextScopedErrorHandler) {
             return false;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
index 3b311b1..746a6c5 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
@@ -177,7 +177,6 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
         return false;
     }
 
-    @SuppressWarnings("deprecation")
     public void initChannel(ProcessorDefinition<?> outputDefinition, RouteContext routeContext) throws Exception {
         this.routeContext = routeContext;
         this.definition = outputDefinition;
diff --git a/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java b/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
index f627e3d..effa10f 100644
--- a/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
@@ -181,7 +181,6 @@ public abstract class ContextTestSupport extends TestSupport {
         }
     }
 
-    @SuppressWarnings("deprecation")
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = new DefaultCamelContext(createRegistry());
         context.setLoadTypeConverters(isLoadTypeConverters());
diff --git a/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetEndpointTest.java b/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetEndpointTest.java
index 5e67cb1..a7837e5 100644
--- a/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetEndpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/dataset/DataSetEndpointTest.java
@@ -33,7 +33,6 @@ public class DataSetEndpointTest extends ContextTestSupport {
 
     @Test
     public void testDataSetEndpoint() throws Exception {
-        @SuppressWarnings("deprecation")
         final DataSetEndpoint endpoint = new DataSetEndpoint("dataset://foo", null, new SimpleDataSet(2));
         endpoint.setCamelContext(context);
         endpoint.setInitialDelay(0);
diff --git a/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionMultipleRouteBuildersTest.java b/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionMultipleRouteBuildersTest.java
index bc17255..78954ef 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionMultipleRouteBuildersTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionMultipleRouteBuildersTest.java
@@ -51,7 +51,6 @@ public class RouteScopedOnExceptionMultipleRouteBuildersTest extends ContextTest
     }
 
     @Override
-    @SuppressWarnings("deprecation")
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = new DefaultCamelContext(createRegistry());
         context.setErrorHandlerFactory(new DeadLetterChannelBuilder("mock:dead"));
diff --git a/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java
index cc545bf..06c5fa3 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java
@@ -53,7 +53,6 @@ public class TryCatchWithSplitNotHandledIssueTest extends ContextTestSupport {
 
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             public void configure() {
                 from("direct:start")
                     .split(body().tokenize("@"))
diff --git a/camel-core/src/test/java/org/apache/camel/management/CustomEndpoint.java b/camel-core/src/test/java/org/apache/camel/management/CustomEndpoint.java
index 1cb282f..22fa67f 100644
--- a/camel-core/src/test/java/org/apache/camel/management/CustomEndpoint.java
+++ b/camel-core/src/test/java/org/apache/camel/management/CustomEndpoint.java
@@ -25,7 +25,6 @@ import org.apache.camel.component.mock.MockEndpoint;
  * CustomEndpoint is used to test {@link org.apache.camel.management.JmxInstrumentationCustomMBeanTest}
  * and must be declared a public class otherwise the mbean server connection cannot access its methods.
  */
-@SuppressWarnings("deprecation")
 // START SNIPPET: e1
 @ManagedResource(description = "Our custom managed endpoint")
 public class CustomEndpoint extends MockEndpoint {
diff --git a/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java b/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
index f5428ce..524a469 100644
--- a/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/RemoveRouteDefinitionTest.java
@@ -30,7 +30,6 @@ import org.junit.Test;
 
 public class RemoveRouteDefinitionTest extends ManagementTestSupport {
 
-    @SuppressWarnings("deprecation")
     @Test
     public void testShutdownRoute() throws Exception {
         // JMX tests dont work well on AIX CI servers (hangs them)
diff --git a/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java b/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java
index 2629c6d..c83f914 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/TryProcessorHandledTest.java
@@ -68,7 +68,6 @@ public class TryProcessorHandledTest extends ContextTestSupport {
 
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             public void configure() {
                 // START SNIPPET: e1
                 from("direct:start")
diff --git a/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java b/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java
index db40825..be03238 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java
@@ -33,7 +33,6 @@ public class WireTapUsingFireAndForgetCopyAsDefaultTest extends ContextTestSuppo
     @Test
     public void testFireAndForgetUsingProcessor() throws Exception {
         context.addRoutes(new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: e1
@@ -112,7 +111,6 @@ public class WireTapUsingFireAndForgetCopyAsDefaultTest extends ContextTestSuppo
     @Test
     public void testFireAndForgetUsingExpression() throws Exception {
         context.addRoutes(new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: e2
diff --git a/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java b/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java
index 99e6965..01d833d 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java
@@ -33,7 +33,6 @@ public class WireTapUsingFireAndForgetCopyTest extends ContextTestSupport {
     @Test
     public void testFireAndForgetUsingProcessor() throws Exception {
         context.addRoutes(new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: e1
@@ -114,7 +113,6 @@ public class WireTapUsingFireAndForgetCopyTest extends ContextTestSupport {
     @Test
     public void testFireAndForgetUsingExpression() throws Exception {
         context.addRoutes(new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: e2
diff --git a/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java b/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java
index 78d7d1a..3a9628d 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/WireTapUsingFireAndForgetTest.java
@@ -33,7 +33,6 @@ public class WireTapUsingFireAndForgetTest extends ContextTestSupport {
     @Test
     public void testFireAndForgetUsingProcessor() throws Exception {
         context.addRoutes(new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: e1
@@ -74,7 +73,6 @@ public class WireTapUsingFireAndForgetTest extends ContextTestSupport {
     @Test
     public void testFireAndForgetUsingExpression() throws Exception {
         context.addRoutes(new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: e2
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
index 144e581..338e780 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipWithExceptionTest.java
@@ -152,7 +152,6 @@ public class RoutingSlipWithExceptionTest extends ContextTestSupport {
 
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
-            @SuppressWarnings("deprecation")
             public void configure() {
                 from("direct:start").
                         doTry().
diff --git a/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
index 3e8efbd..100badd 100644
--- a/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/MessageHelperTest.java
@@ -63,7 +63,6 @@ public class MessageHelperTest extends Assert {
         // handle StreamCache
         final AtomicBoolean reset = new AtomicBoolean();
         message.setBody(new StreamCache() {
-            @SuppressWarnings("deprecation")
             public void reset() {
                 reset.set(true);
             }
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
index 0043ce9..51d34ae 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
@@ -85,7 +85,6 @@ public final class HttpHelper {
         return new int[]{major, minor};
     }
 
-    @SuppressWarnings("deprecation")
     public static void setCharsetFromContentType(String contentType, Exchange exchange) {
         if (contentType != null) {
             String charset = getCharsetFromContentType(contentType);
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
index cef5575..329eabc 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
@@ -121,7 +121,6 @@ public class JmsComponent extends HeaderFilterStrategyComponent implements Appli
         return jmsComponentTransacted(connectionFactory, transactionManager);
     }
 
-    @SuppressWarnings("deprecation")
     public static JmsComponent jmsComponentTransacted(ConnectionFactory connectionFactory,
                                                       PlatformTransactionManager transactionManager) {
         JmsConfiguration template = new JmsConfiguration(connectionFactory);
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
index 16fc881..354e752 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
@@ -107,7 +107,6 @@ public class JmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         }
     }
 
-    @SuppressWarnings("deprecation")
     public JmsEndpoint(String endpointUri, JmsBinding binding, JmsConfiguration configuration, String destinationName, boolean pubSubDomain) {
         super(UnsafeUriCharactersEncoder.encode(endpointUri), null);
         this.binding = binding;
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXEndpointTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXEndpointTest.java
index 7a051dd..ee159a4 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXEndpointTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXEndpointTest.java
@@ -41,7 +41,6 @@ public class JMXEndpointTest {
     DefaultCamelContext context;
     
     @Before
-    @SuppressWarnings("deprecation")
     public void setUp() throws Exception {
         context = new DefaultCamelContext();
     }
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java
index f21e244..d8182f8 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java
@@ -159,7 +159,6 @@ public class SimpleBeanFixture {
      * Initializes the camel context by creating a simple route from our mbean
      * to the mock endpoint.
      */
-    @SuppressWarnings("deprecation")
     protected void initContext() throws Exception {
         final MockEndpoint mock = mContext.getEndpoint("mock:sink", MockEndpoint.class);
         mock.setExpectedMessageCount(1);
diff --git a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java
index 51e701f..56037ba 100644
--- a/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java
+++ b/components/camel-linkedin/camel-linkedin-api/src/main/java/org/apache/camel/component/linkedin/api/LinkedInOAuthRequestFilter.java
@@ -85,7 +85,6 @@ public final class LinkedInOAuthRequestFilter implements ClientRequestFilter {
 
     private OAuthToken oAuthToken;
 
-    @SuppressWarnings("deprecation")
     public LinkedInOAuthRequestFilter(OAuthParams oAuthParams, Map<String, Object> httpParams,
                                       boolean lazyAuth, String[] enabledProtocols) {
 
diff --git a/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java
index b566165..dcf305e 100644
--- a/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java
+++ b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java
@@ -102,7 +102,6 @@ public class GridFsEndpoint extends DefaultEndpoint {
         return true;
     }
 
-    @SuppressWarnings("deprecation")
     public void initializeConnection() throws Exception {
         log.info("Initialize GridFS endpoint: {}", this);
         if (database == null) {
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java
index a1eb995..3fa02cc 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java
@@ -43,7 +43,6 @@ public final class NettyHttpHelper {
     private NettyHttpHelper() {
     }
 
-    @SuppressWarnings("deprecation")
     public static void setCharsetFromContentType(String contentType, Exchange exchange) {
         String charset = getCharsetFromContentType(contentType);
         if (charset != null) {
diff --git a/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java b/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java
index ec0c506..a2bf979 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/language/spel/SpelExpression.java
@@ -34,7 +34,6 @@ import org.springframework.expression.spel.support.StandardEvaluationContext;
  * Class responsible for evaluating <a href="https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions">
  * Spring Expression Language (SpEL)</a> in the context of Camel.
  */
-@SuppressWarnings("deprecation")
 public class SpelExpression extends org.apache.camel.support.ExpressionSupport {
 
     private final String expressionString;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java b/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java
index ab6b99b..de747a0 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java
@@ -47,7 +47,6 @@ import org.springframework.context.support.FileSystemXmlApplicationContext;
  * Each line in the {@link #LOCATION_PROPERTIES} is a reference to a Spring XML file to include,
  * which by default gets loaded from classpath.
  */
-@SuppressWarnings("deprecation")
 public class Main extends org.apache.camel.main.MainSupport {
 
     public static final String LOCATION_PROPERTIES = "META-INF/camel-spring/location.properties";
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
index 55c3b29..8e5bf0c 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
@@ -40,7 +40,6 @@ public abstract class SpringTestSupport extends ContextTestSupport {
     protected abstract AbstractXmlApplicationContext createApplicationContext();
 
     @Before
-    @SuppressWarnings("deprecation")
     @Override
     public void setUp() throws Exception {
         // we want SpringTestSupport to startup faster and not use JMX by default and should stop seda quicker
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomExpressionTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomExpressionTest.java
index 999adfd..607972d 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomExpressionTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringCustomExpressionTest.java
@@ -39,7 +39,6 @@ public class SpringCustomExpressionTest extends SpringTestSupport {
         return new ClassPathXmlApplicationContext("org/apache/camel/spring/processor/SpringCustomExpressionTest.xml");
     }
 
-    @SuppressWarnings("deprecation")
     public static class MyExpression extends org.apache.camel.support.ExpressionAdapter {
 
         @Override
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 b94dabd..7446a65 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
@@ -769,7 +769,6 @@ public abstract class CamelTestSupport extends TestSupport {
         }
     }
 
-    @SuppressWarnings("deprecation")
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = new DefaultCamelContext(createRegistry());
         return context;
diff --git a/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java b/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java
index ae10309..2911f25 100644
--- a/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java
+++ b/components/camel-xmlsecurity/src/test/java/org/apache/camel/dataformat/xmlsecurity/XMLSecurityDataFormatTest.java
@@ -191,7 +191,6 @@ public class XMLSecurityDataFormatTest extends CamelTestSupport {
         xmlsecTestHelper.testEncryption(context);
     }
 
-    @SuppressWarnings("deprecation")
     @Test
     public void testPartialPayloadAsymmetricKeyEncryptionWithContextTruststoreProperties() throws Exception {
         final KeyStoreParameters tsParameters = new KeyStoreParameters();
diff --git a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
index 164a8ff..07126f0 100644
--- a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
+++ b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
@@ -641,7 +641,6 @@ public class RunMojo extends AbstractExecMojo {
         }
     }
 
-    @SuppressWarnings("deprecation")
     private void terminateThreads(ThreadGroup threadGroup) {
         long startTime = System.currentTimeMillis();
         Set<Thread> uncooperativeThreads = new HashSet<>(); // these were not responsive


[camel] 13/44: [CAMEL-12818] Remove deprecated stuff from camel-cxf

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 0c39f8dd13681a6466867e23b680aa2e7a42cdb9
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Sep 24 14:11:08 2018 +0200

    [CAMEL-12818] Remove deprecated stuff from camel-cxf
---
 components/camel-cxf/pom.xml                       |   5 +-
 .../camel-cxf/src/main/docs/cxf-component.adoc     |   6 +-
 .../component/cxf/cxfbean/CxfBeanComponent.java    |  75 ------
 .../component/cxf/cxfbean/CxfBeanDestination.java  |  92 -------
 .../component/cxf/cxfbean/CxfBeanEndpoint.java     | 217 ----------------
 .../cxf/cxfbean/CxfBeanTransportFactory.java       |  52 ----
 .../cxf/feature/AbstractDataFormatFeature.java     |  34 ---
 .../cxf/CXFWsdlOnlyMessageModeNoSpringTest.java    |   2 +-
 .../cxf/CxfConsumerContinuationTimeoutTest.java    |   4 +-
 .../component/cxf/CxfConsumerMessageTest.java      |   2 +-
 .../cxf/CxfGreeterMessageCamelHttpRouterTest.java  |   2 +-
 .../component/cxf/CxfGreeterMessageRouterTest.java |   4 +-
 .../cxf/CxfMessageCustomizedExceptionTest.java     |   2 +-
 ...ConsumerNamespaceOnEnvelopeStreamCacheTest.java |   2 +-
 .../CxfPayloadConsumerNamespaceOnEnvelopeTest.java |   2 +-
 ...ProducerNamespaceOnEnvelopeStreamCacheTest.java |   2 +-
 .../CxfPayloadProducerNamespaceOnEnvelopeTest.java |   2 +-
 .../camel/component/cxf/CxfProducerRouterTest.java |   6 +-
 .../cxf/CxfProducerSynchronousFalseTest.java       |   2 +-
 .../component/cxf/CxfProducerSynchronousTest.java  |   2 +-
 .../camel/component/cxf/CxfProducerTest.java       |   2 +-
 .../CxfRawMessageRouterAddressOverrideTest.java    |   4 +-
 .../component/cxf/CxfRawMessageRouterTest.java     |   4 +-
 .../component/cxf/cxfbean/Camel10165BugTest.java   |  75 ------
 .../cxfbean/CamelEndpointSpringConfigureTest.java  |  64 -----
 .../camel/component/cxf/cxfbean/CxfBeanTest.java   | 274 ---------------------
 .../CxfBeanWithWsdlLocationInBeanAndIoCTest.java   |  63 -----
 .../cxfbean/CxfBeanWithWsdlLocationInBeanTest.java |  65 -----
 .../cxf/jaxrs/CxfRsEndpointWithProperties.java     |   2 +
 .../camel-cxf/src/test/resources/log4j2.properties |   1 +
 .../component/cxf/CxfDispatchMessageBeans.xml      |   2 +-
 ...LoggingInterceptorInMessageModeTest-context.xml |   4 +-
 .../apache/camel/component/cxf/WsdlOnlyBeans.xml   |   4 +-
 .../camel/component/cxf/context-camel-1145.xml}    |  30 ++-
 .../component/cxf/cxfbean/CxfBeanTest-context.xml  |  99 --------
 ...eanWithWsdlLocationInBeanAndIoCTest-context.xml |  42 ----
 .../CxfBeanWithWsdlLocationInBeanTest-context.xml  |  39 ---
 .../cxf/spring/FileToCxfMessageDataFormatTest.xml  |   4 +-
 .../camel/component/cxf/util/CxfEndpointBeans.xml  |   2 +-
 .../cxf/wssecurity/camel/camel-context.xml         |   8 +-
 .../camel/component/sjms2/Sjms2Endpoint.java       |   1 -
 .../src/main/docs/soapjaxb-dataformat.adoc         |   2 +-
 .../camel/spring/NodeIdReferenceLegacyTest.java    |  52 ----
 .../camel/spring/config/CamelProxyUsingRefTest.xml |   2 +-
 .../resources/META-INF/spring/camel-config.xml     |   2 +-
 .../greeter/CamelGreeterFileDomTest-context.xml    |   2 +-
 .../greeter/JettyRecipientListCxfIssueTest.xml     |   4 +-
 47 files changed, 68 insertions(+), 1300 deletions(-)

diff --git a/components/camel-cxf/pom.xml b/components/camel-cxf/pom.xml
index a26f6e1..91859c2 100644
--- a/components/camel-cxf/pom.xml
+++ b/components/camel-cxf/pom.xml
@@ -39,7 +39,6 @@
       !org.apache.camel.component.cxf,
       !org.apache.camel.component.cxf.blueprint,
       !org.apache.camel.component.cxf.converter,
-      !org.apache.camel.component.cxf.cxfbean,
       !org.apache.camel.component.cxf.feature,
       !org.apache.camel.component.cxf.interceptors,
       !org.apache.camel.component.cxf.jaxrs,
@@ -70,7 +69,6 @@
       org.apache.camel.component.cxf;${camel.osgi.version},
       org.apache.camel.component.cxf.blueprint;${camel.osgi.version},
       org.apache.camel.component.cxf.converter;${camel.osgi.version},
-      org.apache.camel.component.cxf.cxfbean;${camel.osgi.version},
       org.apache.camel.component.cxf.feature;${camel.osgi.version},
       org.apache.camel.component.cxf.interceptors;${camel.osgi.version},
       org.apache.camel.component.cxf.jaxrs;${camel.osgi.version},
@@ -79,8 +77,7 @@
     </camel.osgi.export>
     <camel.osgi.export.service>
       org.apache.camel.spi.ComponentResolver;component=cxf,
-      org.apache.camel.spi.ComponentResolver;component=cxfrs,
-      org.apache.camel.spi.ComponentResolver;component=cxfbean
+      org.apache.camel.spi.ComponentResolver;component=cxfrs
     </camel.osgi.export.service>
     <camel.osgi.failok>true</camel.osgi.failok>
 
diff --git a/components/camel-cxf/src/main/docs/cxf-component.adoc b/components/camel-cxf/src/main/docs/cxf-component.adoc
index 706694a..818b42a 100644
--- a/components/camel-cxf/src/main/docs/cxf-component.adoc
+++ b/components/camel-cxf/src/main/docs/cxf-component.adoc
@@ -272,7 +272,7 @@ following is an example.
         <ref bean="loggingOutInterceptor"/>
     </cxf:outInterceptors>
     <cxf:properties>
-        <entry key="dataFormat" value="MESSAGE"/>
+        <entry key="dataFormat" value="RAW"/>
     </cxf:properties>
 </cxf:cxfEndpoint>
 -------------------------------------------------------------------------------------------------------
@@ -544,7 +544,7 @@ and setDefaultBus properties from spring configuration file.
      serviceName="s:ServiceName"
      xmlns:s="http://www.example.com/test">
      <cxf:properties>
-       <entry key="dataFormat" value="MESSAGE"/>
+       <entry key="dataFormat" value="RAW"/>
        <entry key="setDefaultBus" value="true"/>
      </cxf:properties>
    </cxf:cxfEndpoint>
@@ -572,7 +572,7 @@ Example
                      address="http://localhost:9001/router"
                      serviceClass="org.apache.servicemix.examples.cxf.HelloWorld">
         <camel-cxf:properties>
-            <entry key="dataFormat" value="MESSAGE"/>
+            <entry key="dataFormat" value="RAW"/>
         </camel-cxf:properties>
      </camel-cxf:cxfEndpoint>
 
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.java
deleted file mode 100644
index 5b63c8b..0000000
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.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.component.cxf.cxfbean;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.impl.HeaderFilterStrategyComponent;
-
-/**
- * CXF Bean component creates {@link CxfBeanEndpoint} which represents a
- * bean.  <b>Currently, only JAXRS annotated beans are supported.  In the
- * future, JAXwS annotated beans and POJO can be supported</b>.
- * 
- * @deprecated
- */
-@Deprecated
-public class CxfBeanComponent extends HeaderFilterStrategyComponent {
-
-    private Map<String, CxfBeanEndpoint> endpoints = new HashMap<>();
-
-    public CxfBeanComponent() {
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining,
-            Map<String, Object> parameters) throws Exception {
-
-        // Extract the comma separated list of providers in advance of the auto-extraction
-        // that a DefaultEndpoint will perform (as the default one does not understand lists).
-        List<Object> providers = resolveAndRemoveReferenceListParameter(parameters, "providers", Object.class);
-
-        CxfBeanEndpoint answer = new CxfBeanEndpoint(remaining, this);
-        if (providers != null) {
-            answer.setProviders(providers);
-        }
-        setEndpointHeaderFilterStrategy(answer);
-        setProperties(answer, parameters);
-
-        // add to the endpoints map before calling the endpoint's init() method to 
-        // make sure the CxfBeanDestination activate() method can find the endpoint 
-        // from the map.
-        endpoints.put(answer.createEndpointUri(), answer);
-        answer.init();
-
-        return answer;
-    }
-
-    @Override
-    protected boolean useIntrospectionOnEndpoint() {
-        // we invoke setProperties ourselves so the bus is set for CxfBeanEndpoint.init()
-        return false;
-    }
-
-    public CxfBeanEndpoint getEndpoint(String endpointUri) {
-        return endpoints.get(endpointUri);
-    }
-   
-}
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanDestination.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanDestination.java
deleted file mode 100644
index 95d94c3..0000000
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanDestination.java
+++ /dev/null
@@ -1,92 +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.component.cxf.cxfbean;
-
-import java.io.IOException;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.component.cxf.transport.CamelDestination;
-import org.apache.camel.component.cxf.transport.CamelTransportConstants;
-import org.apache.cxf.Bus;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.message.MessageImpl;
-import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.transport.ConduitInitiator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A CXF transport {@link org.apache.cxf.transport.Destination} that listens 
- * Camel {@link Exchange} from an associated {@link CxfBeanEndpoint}.
- *  
- * @version 
- */
-public class CxfBeanDestination extends CamelDestination implements Processor {
-    private static final Logger LOG = LoggerFactory.getLogger(CxfBeanDestination.class);
-    private CxfBeanComponent cxfBeanComponent;
-    private CxfBeanEndpoint endpoint;
-
-    public CxfBeanDestination(CxfBeanComponent cxfBeanComponent, Bus bus,
-            ConduitInitiator conduitInitiator,
-            EndpointInfo endpointInfo) throws IOException {
-        super(cxfBeanComponent.getCamelContext(), bus, conduitInitiator, endpointInfo);
-        this.cxfBeanComponent = cxfBeanComponent;
-    }
-
-    @Override
-    public void activate() {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Activating CxfBeanDestination {}", getCamelDestinationUri());
-        }
-
-        endpoint = cxfBeanComponent.getEndpoint(getCamelDestinationUri());
-        
-        if (endpoint == null) {
-            LOG.error("Failed to find endpoint {}", getCamelDestinationUri());
-            return;
-        }
-            
-        endpoint.setProcessor(this);
-    }
-
-    @Override
-    public void deactivate() {
-    }
-
-    public void process(Exchange camelExchange) throws Exception {
-        LOG.trace("Received request : {}", camelExchange);
-        
-        org.apache.cxf.message.Message cxfMessage = 
-            endpoint.getCxfBeanBinding().createCxfMessageFromCamelExchange(camelExchange,
-                    endpoint.getHeaderFilterStrategy());
-                      
-        cxfMessage.put(CamelTransportConstants.CAMEL_EXCHANGE, camelExchange);
-        ((MessageImpl)cxfMessage).setDestination(this);
-
-        // Handling the incoming message
-        // The response message will be send back by the outgoing chain
-        incomingObserver.onMessage(cxfMessage);
-    }
-    
-    @Override
-    protected void propagateResponseHeadersToCamel(Message outMessage, Exchange camelExchange) {
-        endpoint.getCxfBeanBinding().propagateResponseHeadersToCamel(outMessage, camelExchange,
-                                                                     endpoint.getHeaderFilterStrategy());
-    }
-
-}
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java
deleted file mode 100644
index d0a7433..0000000
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java
+++ /dev/null
@@ -1,217 +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.component.cxf.cxfbean;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jws.WebService;
-
-import org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy;
-import org.apache.camel.component.cxf.common.message.CxfMessageMapper;
-import org.apache.camel.component.cxf.common.message.DefaultCxfMessageMapper;
-import org.apache.camel.impl.ProcessorEndpoint;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.spi.HeaderFilterStrategyAware;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
-import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.feature.LoggingFeature;
-import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
-import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
-import org.apache.cxf.transport.ConduitInitiatorManager;
-import org.apache.cxf.transport.DestinationFactoryManager;
-
-
-/**
- * CXF Bean Endpoint is a {@link ProcessorEndpoint} which associated with 
- * a {@link CxfBeanDestination}.  It delegates the processing of Camel 
- * Exchanges to the associated CxfBeanDestination.
- *
- * @deprecated
- */
-@Deprecated
-public class CxfBeanEndpoint extends ProcessorEndpoint implements HeaderFilterStrategyAware {
-    private static final String URI_PREFIX = "cxfbean";
-    private Server server;
-    private Bus bus;
-    private boolean isSetDefaultBus;
-    private CxfMessageMapper cxfBeanBinding = new DefaultCxfMessageMapper();
-    private HeaderFilterStrategy headerFilterStrategy = new CxfHeaderFilterStrategy();
-    private boolean loggingFeatureEnabled;
-    private boolean populateFromClass = true;
-    private List<Object> providers;
-
-    public CxfBeanEndpoint(String remaining, CxfBeanComponent component) {
-        super(remaining, component);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        server.start();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        server.stop();
-    }
-
-    @SuppressWarnings("unchecked")
-    public void init() {
-        Object obj = CamelContextHelper.mandatoryLookup(getCamelContext(), getEndpointUri());
-        
-        List<Object> serviceBeans;
-        if (obj instanceof List) {
-            serviceBeans = (List<Object>)obj;
-        } else {
-            serviceBeans = new ArrayList<>(1);
-            serviceBeans.add(obj);
-        }
-        
-        if (bus == null) {
-            ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
-            try {
-                // Using the class loader of BusFactory to load the Bus
-                Thread.currentThread().setContextClassLoader(BusFactory.class.getClassLoader());
-                bus = BusFactory.newInstance().createBus();
-            } finally {
-                Thread.currentThread().setContextClassLoader(oldCL);
-            }
-        }
-        
-        if (isSetDefaultBus) {
-            BusFactory.setDefaultBus(bus);
-        }
-        
-        registerTransportFactory((CxfBeanComponent)this.getComponent());       
-        
-        createServer(serviceBeans);
-    }
-    
-    @Override
-    protected String createEndpointUri() {
-        return URI_PREFIX + ":" + getEndpointUri();
-    }
-    
-    private void createServer(List<Object> serviceBeans) {
-        Object obj = serviceBeans.get(0).getClass().getAnnotation(WebService.class);
-
-        if (obj != null) {
-            JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
-            bean.setTransportId(CxfBeanTransportFactory.TRANSPORT_ID);
-            bean.setServiceClass(serviceBeans.get(0).getClass());
-            // set the bean instance as well, otherwise CXF will re-create a new instance of the class
-            bean.setServiceBean(serviceBeans.get(0));
-            if (bean.getJaxWsServiceFactory() != null) {
-                bean.getJaxWsServiceFactory().setPopulateFromClass(isPopulateFromClass());
-            }
-            bean.setBus(bus);
-            bean.setStart(true);
-            bean.setAddress("camel://" + createEndpointUri());
-            if (loggingFeatureEnabled) {
-                bean.getFeatures().add(new LoggingFeature());
-            }            
-            server = bean.create();
-        } else {
-            JAXRSServerFactoryBean bean = new JAXRSServerFactoryBean();
-            bean.setServiceBeans(serviceBeans);
-            bean.setAddress("camel://" + createEndpointUri());
-            bean.setStart(true);
-            bean.setTransportId(CxfBeanTransportFactory.TRANSPORT_ID);
-            bean.setBus(bus);
-            if (loggingFeatureEnabled) {
-                bean.getFeatures().add(new LoggingFeature());
-            }
-            bean.setProviders(providers);
-            server = bean.create();
-        }
-    }
-    
-    private void registerTransportFactory(CxfBeanComponent cxfBeanComponent) {
-        CxfBeanTransportFactory transportFactory = new CxfBeanTransportFactory();
-        transportFactory.setCxfBeanComponent(cxfBeanComponent);
-        transportFactory.setBus(bus);
-        
-        // register the conduit initiator
-        ConduitInitiatorManager cim = bus.getExtension(ConduitInitiatorManager.class);
-        cim.registerConduitInitiator(CxfBeanTransportFactory.TRANSPORT_ID, transportFactory);
-        
-        // register the destination factory
-        DestinationFactoryManager dfm = bus.getExtension(DestinationFactoryManager.class);
-        dfm.registerDestinationFactory(CxfBeanTransportFactory.TRANSPORT_ID, transportFactory);    
-    }
-
-    // Properties
-    // -------------------------------------------------------------------------
-
-    public Bus getBus() {
-        return bus;
-    }
-
-    public void setBus(Bus bus) {
-        this.bus = bus;
-    }
-
-    public void setSetDefaultBus(boolean isSetDefaultBus) {
-        this.isSetDefaultBus = isSetDefaultBus;
-    }
-
-    public boolean isSetDefaultBus() {
-        return isSetDefaultBus;
-    }
-
-    public void setCxfBeanBinding(CxfMessageMapper cxfBeanBinding) {
-        this.cxfBeanBinding = cxfBeanBinding;
-    }
-
-    public CxfMessageMapper getCxfBeanBinding() {
-        return cxfBeanBinding;
-    }
-
-    public void setHeaderFilterStrategy(HeaderFilterStrategy headerFilterStrategy) {
-        this.headerFilterStrategy = headerFilterStrategy;
-    }
-
-    public HeaderFilterStrategy getHeaderFilterStrategy() {
-        return headerFilterStrategy;
-    }
-    
-    public void setLoggingFeatureEnabled(boolean loggingFeatureEnabled) {
-        this.loggingFeatureEnabled = loggingFeatureEnabled;
-    }
-
-    public boolean isLoggingFeatureEnabled() {
-        return loggingFeatureEnabled;
-    }     
-
-    public void setPopulateFromClass(boolean populateFromClass) {
-        this.populateFromClass = populateFromClass;
-    }
-
-    public boolean isPopulateFromClass() {
-        return populateFromClass;
-    }
-
-    public List<Object> getProviders() {
-        return providers;
-    }
-
-    public void setProviders(List<Object> providers) {
-        this.providers = providers;
-    }
-}
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTransportFactory.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTransportFactory.java
deleted file mode 100644
index 485de03..0000000
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTransportFactory.java
+++ /dev/null
@@ -1,52 +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.component.cxf.cxfbean;
-
-import java.io.IOException;
-
-import org.apache.camel.component.cxf.transport.CamelTransportFactory;
-import org.apache.cxf.Bus;
-import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.transport.Destination;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * CXF Bean TransportFactory that overrides CamelTransportFactory to create
- * a specific Destination (@link CxfBeanDestination}.
- * 
- * @version 
- */
-public class CxfBeanTransportFactory extends CamelTransportFactory  {
-    public static final String TRANSPORT_ID = "http://cxf.apache.org/transports/camel/cxfbean";
-    private static final Logger LOG = LoggerFactory.getLogger(CxfBeanTransportFactory.class);
-    private CxfBeanComponent cxfBeanComponent;
- 
-    @Override
-    public Destination getDestination(EndpointInfo endpointInfo, Bus b) throws IOException {
-        LOG.debug("Create CxfBeanDestination: {}", endpointInfo);
-        
-        // lookup endpoint from component instead of CamelContext because it may not
-        // be added to the CamelContext yet.
-        return new CxfBeanDestination(cxfBeanComponent, b, this, endpointInfo);
-    }
-
-    public void setCxfBeanComponent(CxfBeanComponent cxfBeanComponent) {
-        this.cxfBeanComponent = cxfBeanComponent;
-    }
-    
-}
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java
index 8b40301..6e159b3 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java
@@ -46,41 +46,7 @@ public abstract class AbstractDataFormatFeature extends AbstractFeature {
     protected Set<String> inInterceptorNames = new HashSet<>();
     protected Set<String> outInterceptorNames = new HashSet<>();
     protected abstract Logger getLogger();
-    
 
-    @Deprecated
-    // It will be removed in Camel 3.0
-    protected void removeInterceptorWhichIsInThePhases(List<Interceptor<? extends Message>> interceptors, String[] phaseNames) {
-        removeInterceptorWhichIsInThePhases(interceptors, phaseNames, null);
-    }
-    
-    protected void removeInterceptorWhichIsInThePhases(List<Interceptor<? extends Message>> interceptors, String[] phaseNames, Set<String> needToBeKept) {
-        for (Interceptor<? extends Message> i : interceptors) {
-            if (i instanceof PhaseInterceptor) {
-                PhaseInterceptor<? extends Message> p = (PhaseInterceptor<? extends Message>) i;
-                for (String phaseName : phaseNames) {
-                    if (p.getPhase().equals(phaseName)) {
-                        // To support the old API
-                        if (needToBeKept == null) {
-                            getLogger().info("removing the interceptor " + p);
-                            interceptors.remove(p);
-                            break;
-                        } else if (!needToBeKept.contains(p.getClass().getName())) {
-                            getLogger().info("removing the interceptor " + p);
-                            interceptors.remove(p);
-                            break; 
-                        }
-                    }
-                }
-            }
-        }
-    }
-    
-    @Deprecated
-    // It will be removed in Camel 3.0
-    protected void removeInterceptorWhichIsOutThePhases(List<Interceptor<? extends Message>> interceptors, String[] phaseNames) {
-        removeInterceptorWhichIsOutThePhases(interceptors, phaseNames, null);
-    }
 
     protected void removeInterceptorWhichIsOutThePhases(List<Interceptor<? extends Message>> interceptors, String[] phaseNames, Set<String> needToBeKept) {
         for (Interceptor<? extends Message> i : interceptors) {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyMessageModeNoSpringTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyMessageModeNoSpringTest.java
index aec658b..2a8af15 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyMessageModeNoSpringTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyMessageModeNoSpringTest.java
@@ -21,7 +21,7 @@ public class CXFWsdlOnlyMessageModeNoSpringTest extends CXFWsdlOnlyPayloadModeNo
 
     @Override
     protected String getDataFormat() {
-        return "MESSAGE";
+        return "RAW";
 
     }
 
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerContinuationTimeoutTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerContinuationTimeoutTest.java
index d628501..ee57e9c 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerContinuationTimeoutTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerContinuationTimeoutTest.java
@@ -59,9 +59,9 @@ public class CxfConsumerContinuationTimeoutTest extends CamelTestSupport {
 
                 from("direct:start")
                     .setBody(constant("Sensitive Data"))
-                    .to(simpleEndpointURI + "&continuationTimeout=5000&dataFormat=MESSAGE");
+                    .to(simpleEndpointURI + "&continuationTimeout=5000&dataFormat=RAW");
 
-                from(simpleEndpointURI + "&continuationTimeout=5000&dataFormat=MESSAGE").process(new AsyncProcessor() {
+                from(simpleEndpointURI + "&continuationTimeout=5000&dataFormat=RAW").process(new AsyncProcessor() {
                     @Override
                     public void process(Exchange exchange) throws Exception {
                         AsyncProcessorHelper.process(this, exchange);
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java
index 05e878c..61d8f4e 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java
@@ -53,7 +53,7 @@ public class CxfConsumerMessageTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from(simpleEndpointURI + "&dataFormat=MESSAGE").process(new Processor() {
+                from(simpleEndpointURI + "&dataFormat=RAW").process(new Processor() {
                     public void process(final Exchange exchange) {
                         Message in = exchange.getIn();
                         // check the content-length header is filtered 
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageCamelHttpRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageCamelHttpRouterTest.java
index 13d7768..9e6c791 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageCamelHttpRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageCamelHttpRouterTest.java
@@ -48,7 +48,7 @@ public class CxfGreeterMessageCamelHttpRouterTest extends CxfGreeterMessageRoute
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from("cxf:bean:routerEndpoint?dataFormat=Message&publishedEndpointUrl=http://www.simple.com/services/test")
+                from("cxf:bean:routerEndpoint?dataFormat=RAW&publishedEndpointUrl=http://www.simple.com/services/test")
                     // The fix the side effect of CAMEL-7436
                     .removeHeaders("CamelHttp*") 
                     .to(serverAddress + "?throwExceptionOnFailure=false");
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java
index 4f661ba..0692fe5 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfGreeterMessageRouterTest.java
@@ -50,8 +50,8 @@ public class CxfGreeterMessageRouterTest extends AbstractCXFGreeterRouterTest {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from("cxf:bean:routerEndpoint?dataFormat=Message&publishedEndpointUrl=http://www.simple.com/services/test")
-                    .to("cxf:bean:serviceEndpoint?dataFormat=Message");
+                from("cxf:bean:routerEndpoint?dataFormat=RAW&publishedEndpointUrl=http://www.simple.com/services/test")
+                    .to("cxf:bean:serviceEndpoint?dataFormat=RAW");
             }
         };
     }
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageCustomizedExceptionTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageCustomizedExceptionTest.java
index 4ccccc5..84ef052 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageCustomizedExceptionTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfMessageCustomizedExceptionTest.java
@@ -27,7 +27,7 @@ public class CxfMessageCustomizedExceptionTest extends CxfCustomizedExceptionTes
     @Before
     @Override
     public void setUp() throws Exception {
-        routerEndpointURI = "cxf://" + routerAddress + "?" + SERVICE_CLASS + "&DataFormat=MESSAGE";
+        routerEndpointURI = "cxf://" + routerAddress + "?" + SERVICE_CLASS + "&DataFormat=RAW";
         super.setUp();
     }
 }
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeStreamCacheTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeStreamCacheTest.java
index bf30f07..d675a70 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeStreamCacheTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeStreamCacheTest.java
@@ -28,7 +28,7 @@ public class CxfPayloadConsumerNamespaceOnEnvelopeStreamCacheTest extends CxfPay
             public void configure() {
                 from("direct:router")
                         // Use message mode to send the raw message
-                        .to("cxf:bean:serviceEndpoint?dataFormat=MESSAGE")
+                        .to("cxf:bean:serviceEndpoint?dataFormat=RAW")
                         // Convert to String to make testing the result easier
                         .convertBodyTo(String.class);
                 // The consumer is running in payload mode
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java
index 1f20c3e..c28e79b 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadConsumerNamespaceOnEnvelopeTest.java
@@ -81,7 +81,7 @@ public class CxfPayloadConsumerNamespaceOnEnvelopeTest extends CamelTestSupport
             public void configure() {
                 from("direct:router")
                         // Use message mode to send the raw message
-                        .to("cxf:bean:serviceEndpoint?dataFormat=MESSAGE")
+                        .to("cxf:bean:serviceEndpoint?dataFormat=RAW")
                         // Convert to String to make testing the result easier
                         .convertBodyTo(String.class);
                 // The consumer is running in payload mode
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeStreamCacheTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeStreamCacheTest.java
index 3a77b14..9764557 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeStreamCacheTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeStreamCacheTest.java
@@ -37,7 +37,7 @@ public class CxfPayloadProducerNamespaceOnEnvelopeStreamCacheTest extends CxfPay
                         // easier
                         .convertBodyTo(String.class);
                 // This route just returns the test message
-                from("cxf:bean:serviceEndpoint?dataFormat=MESSAGE").setBody().constant(RESPONSE_MESSAGE);
+                from("cxf:bean:serviceEndpoint?dataFormat=RAW").setBody().constant(RESPONSE_MESSAGE);
             }
         };
     }
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java
index dcf78b3..3129dca 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfPayloadProducerNamespaceOnEnvelopeTest.java
@@ -90,7 +90,7 @@ public class CxfPayloadProducerNamespaceOnEnvelopeTest extends CamelTestSupport
                         // easier
                         .convertBodyTo(String.class);
                 // This route just returns the test message
-                from("cxf:bean:serviceEndpoint?dataFormat=MESSAGE").setBody().constant(RESPONSE_MESSAGE);
+                from("cxf:bean:serviceEndpoint?dataFormat=RAW").setBody().constant(RESPONSE_MESSAGE);
             }
         };
     }
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java
index f435476..098c483 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerRouterTest.java
@@ -70,7 +70,7 @@ public class CxfProducerRouterTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:EndpointA").to(getSimpleEndpointUri());
-                from("direct:EndpointB").to(getSimpleEndpointUri() + "&dataFormat=MESSAGE");
+                from("direct:EndpointB").to(getSimpleEndpointUri() + "&dataFormat=RAW");
                 from("direct:EndpointC").to(getSimpleEndpointUri() + "&dataFormat=PAYLOAD");
                 // This route is for checking camel-cxf producer throwing exception
                 from("direct:start")
@@ -102,8 +102,8 @@ public class CxfProducerRouterTest extends CamelTestSupport {
         CxfEndpoint endpoint = context.getEndpoint(getSimpleEndpointUri(), CxfEndpoint.class);
         assertEquals("Get a wrong endpoint uri", getSimpleEndpointUri(), endpoint.getEndpointUri());
         
-        endpoint = context.getEndpoint(getSimpleEndpointUri() + "&dataFormat=MESSAGE", CxfEndpoint.class);
-        assertEquals("Get a wrong endpoint uri", URISupport.normalizeUri(getSimpleEndpointUri() + "&dataFormat=MESSAGE"), endpoint.getEndpointUri());
+        endpoint = context.getEndpoint(getSimpleEndpointUri() + "&dataFormat=RAW", CxfEndpoint.class);
+        assertEquals("Get a wrong endpoint uri", URISupport.normalizeUri(getSimpleEndpointUri() + "&dataFormat=RAW"), endpoint.getEndpointUri());
 
     }
 
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousFalseTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousFalseTest.java
index 596ed80..b748399 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousFalseTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousFalseTest.java
@@ -38,7 +38,7 @@ public class CxfProducerSynchronousFalseTest extends CamelTestSupport {
     private static String afterThreadName;
 
     private String url = "cxf://" + SIMPLE_SERVER_ADDRESS
-                + "?serviceClass=org.apache.camel.component.cxf.HelloService&dataFormat=MESSAGE&synchronous=false";
+                + "?serviceClass=org.apache.camel.component.cxf.HelloService&dataFormat=RAW&synchronous=false";
     @Override
     public boolean isCreateCamelContextPerClass() {
         return true;
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousTest.java
index 8245bd9..c2c8e35 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerSynchronousTest.java
@@ -37,7 +37,7 @@ public class CxfProducerSynchronousTest extends CamelTestSupport {
     private static String afterThreadName;
 
     private String url = "cxf://" + SIMPLE_SERVER_ADDRESS
-                + "?serviceClass=org.apache.camel.component.cxf.HelloService&dataFormat=MESSAGE&synchronous=true";
+                + "?serviceClass=org.apache.camel.component.cxf.HelloService&dataFormat=RAW&synchronous=true";
     @Override
     public boolean isCreateCamelContextPerClass() {
         return true;
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerTest.java
index 7b0a4f1..70e8ba7 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerTest.java
@@ -141,7 +141,7 @@ public class CxfProducerTest extends Assert {
         assertTrue(reply.getException().getCause() instanceof ConnectException);
         
         //Test the data format MESSAGE
-        reply = sendSimpleMessageWithRawMessage(getWrongEndpointUri() + "&dataFormat=MESSAGE");
+        reply = sendSimpleMessageWithRawMessage(getWrongEndpointUri() + "&dataFormat=RAW");
         assertNotNull("We should get the exception here", reply.getException());
         assertTrue(reply.getException().getCause() instanceof ConnectException);
     }
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterAddressOverrideTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterAddressOverrideTest.java
index ed879ee..23014da 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterAddressOverrideTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterAddressOverrideTest.java
@@ -21,8 +21,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 
 public class CxfRawMessageRouterAddressOverrideTest extends CxfRawMessageRouterTest {
-    private String routerEndpointURI = "cxf://" + getRouterAddress() + "?" + SERVICE_CLASS + "&dataFormat=MESSAGE";
-    private String serviceEndpointURI = "cxf://http://localhost:9002/badAddress" + "?" + SERVICE_CLASS + "&dataFormat=MESSAGE";
+    private String routerEndpointURI = "cxf://" + getRouterAddress() + "?" + SERVICE_CLASS + "&dataFormat=RAW";
+    private String serviceEndpointURI = "cxf://http://localhost:9002/badAddress" + "?" + SERVICE_CLASS + "&dataFormat=RAW";
     
     @Override
     protected RouteBuilder createRouteBuilder() {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java
index 99389ab..d0e4693 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java
@@ -27,8 +27,8 @@ import org.apache.cxf.helpers.CastUtils;
 import org.junit.Test;
 
 public class CxfRawMessageRouterTest extends CxfSimpleRouterTest {
-    private String routerEndpointURI = "cxf://" + getRouterAddress() + "?" + SERVICE_CLASS + "&dataFormat=MESSAGE";
-    private String serviceEndpointURI = "cxf://" + getServiceAddress() + "?" + SERVICE_CLASS + "&dataFormat=MESSAGE";
+    private String routerEndpointURI = "cxf://" + getRouterAddress() + "?" + SERVICE_CLASS + "&dataFormat=RAW";
+    private String serviceEndpointURI = "cxf://" + getServiceAddress() + "?" + SERVICE_CLASS + "&dataFormat=RAW";
     
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/Camel10165BugTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/Camel10165BugTest.java
deleted file mode 100644
index dd53c2e..0000000
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/Camel10165BugTest.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.component.cxf.cxfbean;
-
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.cxf.CXFTestSupport;
-import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
-
-public class Camel10165BugTest extends CamelTestSupport {
-
-    private static final int PORT1 = CXFTestSupport.getPort("Camel10165BugTest.1");
-
-    @Test
-    public void testCallServiceWithBasePath() throws Exception {
-        String request = "abc";
-        String response = template.requestBody("http://localhost:" + PORT1 + "/basePath/echo", request, String.class);
-        assertEquals(request, response);
-    }
-
-    @Test
-    public void testCallServiceWithoutBasePath() throws Exception {
-        String request = "abc";
-        String response = template.requestBody("http://localhost:" + PORT1 + "/echo", request, String.class);
-        assertEquals(request, response);
-    }
-
-    @Override
-    protected RoutesBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("jetty:http://localhost:" + PORT1 + "/?matchOnUriPrefix=true")
-                        .to("cxfbean:echoService");
-
-                from("jetty:http://localhost:" + PORT1 + "/basePath/?matchOnUriPrefix=true")
-                        .to("cxfbean:echoService");
-            }
-        };
-    }
-
-    @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
-        registry.bind("echoService", new EchoService());
-        return registry;
-    }
-
-    @Path("echo")
-    public class EchoService {
-        @POST
-        public String echo(String request) {
-            return request;
-        }
-    }
-}
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CamelEndpointSpringConfigureTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CamelEndpointSpringConfigureTest.java
deleted file mode 100644
index 8532e04..0000000
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CamelEndpointSpringConfigureTest.java
+++ /dev/null
@@ -1,64 +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.component.cxf.cxfbean;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.component.cxf.CxfConsumer;
-import org.apache.camel.component.cxf.CxfEndpoint;
-import org.apache.camel.component.cxf.CxfProducer;
-import org.apache.camel.component.cxf.transport.CamelConduit;
-import org.apache.camel.component.cxf.transport.CamelDestination;
-import org.apache.camel.spring.SpringCamelContext;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-public class CamelEndpointSpringConfigureTest extends CamelSpringTestSupport {
-    
-    @Test
-    public void testCreateDestinationFromSpring() throws Exception {
-        CxfEndpoint cxfEndpoint = context.getEndpoint("cxf:bean:serviceEndpoint", CxfEndpoint.class);
-        CxfProducer producer = (CxfProducer)cxfEndpoint.createProducer();
-        assertNotNull("The producer should not be null", producer);        
-        producer.start();
-        CamelConduit conduit = (CamelConduit)producer.getClient().getConduit();
-        assertTrue("we should get SpringCamelContext here", conduit.getCamelContext() instanceof SpringCamelContext);
-        assertEquals("The context id should be camel_conduit", "camel_conduit", conduit.getCamelContext().getName());
-        
-        cxfEndpoint = context.getEndpoint("cxf:bean:routerEndpoint", CxfEndpoint.class);
-        CxfConsumer consumer = (CxfConsumer)cxfEndpoint.createConsumer(new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                // do nothing here                
-            }            
-        });
-        assertNotNull("The consumer should not be null", consumer);        
-        consumer.start();
-        CamelDestination destination = (CamelDestination)consumer.getServer().getDestination();
-        assertTrue("we should get SpringCamelContext here", destination.getCamelContext() instanceof SpringCamelContext);
-        assertEquals("The context id should be camel_destination", "camel_destination", destination.getCamelContext().getName());
-        
-        
-    }
-
-    @Override
-    protected AbstractXmlApplicationContext createApplicationContext() {        
-        return new ClassPathXmlApplicationContext("/org/apache/camel/component/cxf/transport/CamelEndpointSpringConfigure.xml");
-    }
-   
-}
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java
deleted file mode 100644
index 7759ee0..0000000
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java
+++ /dev/null
@@ -1,274 +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.component.cxf.cxfbean;
-
-import java.net.URL;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Holder;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.component.cxf.CXFTestSupport;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.StringHelper;
-import org.apache.camel.wsdl_first.Person;
-import org.apache.camel.wsdl_first.PersonService;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-@ContextConfiguration
-public class CxfBeanTest extends AbstractJUnit4SpringContextTests {
-    private static final String PUT_REQUEST = "<Customer><name>Mary</name><id>113</id></Customer>";
-    private static final String POST_REQUEST = "<Customer><name>Jack</name></Customer>";
-    private static final String POST2_REQUEST = "<Customer><name>James</name></Customer>";
-    private static final int PORT1 = CXFTestSupport.getPort("CxfBeanTest.1");
-    private static final int PORT2 = CXFTestSupport.getPort("CxfBeanTest.2");
-    
-    @Autowired
-    @Qualifier("camel")
-    protected CamelContext camelContext;
-    
-    /**
-     * Test that we have an endpoint with 2 providers.
-     */
-    @Test
-    public void testConsumerWithProviders() throws Exception {
-        boolean testedEndpointWithProviders = false;
-        for (Endpoint endpoint : camelContext.getEndpoints()) {
-            if (endpoint instanceof CxfBeanEndpoint) {
-                CxfBeanEndpoint beanEndpoint = (CxfBeanEndpoint)endpoint;
-                if (beanEndpoint.getEndpointUri().equals("customerServiceBean")) {
-                    assertNotNull("The bean endpoint should have provider", beanEndpoint.getProviders());
-                    if (beanEndpoint.getProviders().size() == 2) {
-                        testedEndpointWithProviders = true;
-                        break;
-                    } else if (beanEndpoint.getProviders().size() != 0) {
-                        fail("Unexpected number of providers present");
-                    }
-                }
-            }
-        }
-        assertTrue(testedEndpointWithProviders);
-    }
-    
-    @Test
-    public void testMessageHeadersAfterCxfBeanEndpoint() throws Exception {
-        MockEndpoint endpoint = (MockEndpoint)camelContext.getEndpoint("mock:endpointA");
-        endpoint.reset();
-        endpoint.expectedMessageCount(1);
-        endpoint.expectedHeaderReceived("key", "customer");
-
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/customers/123",
-            "{\"Customer\":{\"id\":123,\"name\":\"John\"}}");
-
-        endpoint.assertIsSatisfied();
-    }
-    
-    private void invokeRsService(String getUrl, String expected) throws Exception {
-        HttpGet get = new HttpGet(getUrl);
-        get.addHeader("Accept", "application/json");
-        get.addHeader("key", "customer");
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(get);
-            assertEquals(200, response.getStatusLine().getStatusCode());
-            assertEquals(expected,
-                         EntityUtils.toString(response.getEntity()));
-        } finally {
-            httpclient.close();
-        }
-    }
-    
-    @Test
-    public void testGetConsumer() throws Exception {
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/customers/123",
-                        "{\"Customer\":{\"id\":123,\"name\":\"John\"}}");
-        
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/orders/223/products/323",
-                         "{\"Product\":{\"description\":\"product 323\",\"id\":323}}");
-    }
-    
-    @Test
-    public void testGetConsumerWithQueryParam() throws Exception {
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/customers?id=123",
-                        "{\"Customer\":{\"id\":123,\"name\":\"John\"}}");        
-    }
-
-    @Test
-    public void testGetConsumerAfterReStartCamelContext() throws Exception {
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/customers/123",
-                        "{\"Customer\":{\"id\":123,\"name\":\"John\"}}");
-
-        camelContext.stop();
-        camelContext.start();
-
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/orders/223/products/323",
-                        "{\"Product\":{\"description\":\"product 323\",\"id\":323}}"); 
-    }
-    
-    @Test
-    public void testGetConsumerAfterResumingCamelContext() throws Exception {
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/customers/123",
-                        "{\"Customer\":{\"id\":123,\"name\":\"John\"}}");
-        
-        camelContext.suspend();
-        camelContext.resume();
-
-        invokeRsService("http://localhost:" + PORT1 + "/customerservice/orders/223/products/323",
-                        "{\"Product\":{\"description\":\"product 323\",\"id\":323}}"); 
-    }
-
-    @Test
-    public void testPutConsumer() throws Exception {
-        HttpPut put = new HttpPut("http://localhost:" + PORT1 + "/customerservice/customers");
-        StringEntity entity = new StringEntity(PUT_REQUEST, "ISO-8859-1");
-        entity.setContentType("text/xml; charset=ISO-8859-1");
-        put.setEntity(entity);
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(put);
-            assertEquals(200, response.getStatusLine().getStatusCode());
-            assertEquals("", EntityUtils.toString(response.getEntity()));
-        } finally {
-            httpclient.close();
-        }
-    }
-    
-    @Test
-    public void testPostConsumer() throws Exception {
-        HttpPost post = new HttpPost("http://localhost:" + PORT1 + "/customerservice/customers");
-        post.addHeader("Accept", "text/xml");
-        StringEntity entity = new StringEntity(POST_REQUEST, "ISO-8859-1");
-        entity.setContentType("text/xml; charset=ISO-8859-1");
-        post.setEntity(entity);
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(post);
-            assertEquals(200, response.getStatusLine().getStatusCode());
-            String id = getCustomerId("Jack");
-            assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Customer><id>" + id + "</id><name>Jack</name></Customer>",
-                         EntityUtils.toString(response.getEntity()));
-        } finally {
-            httpclient.close();
-        }
-    }
-    
-    @Test
-    public void testPostConsumerUniqueResponseCode() throws Exception {
-        HttpPost post = new HttpPost("http://localhost:" + PORT1 + "/customerservice/customersUniqueResponseCode");
-        post.addHeader("Accept", "text/xml");
-        StringEntity entity = new StringEntity(POST2_REQUEST, "ISO-8859-1");
-        entity.setContentType("text/xml; charset=ISO-8859-1");
-        post.setEntity(entity);
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(post);
-            assertEquals(201, response.getStatusLine().getStatusCode());
-            String id = getCustomerId("James");
-            assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Customer><id>" + id + "</id><name>James</name></Customer>",
-                         EntityUtils.toString(response.getEntity()));
-        } finally {
-            httpclient.close();
-        }
-    }
-
-    private String getCustomerId(String name) throws Exception {
-        HttpGet get = new HttpGet("http://localhost:" + PORT1 + "/customerservice/customers/");
-        get.addHeader("Accept", "application/xml");
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(get);
-            assertEquals(200, response.getStatusLine().getStatusCode());
-            String customers = EntityUtils.toString(response.getEntity());
-            String before = StringHelper.before(customers, "</id><name>" + name + "</name></Customer>");
-            String answer = before.substring(before.lastIndexOf(">") + 1, before.length());
-            return answer;
-        } finally {
-            httpclient.close();
-        }
-    }
-
-    @Test
-    public void testJaxWsBean() throws Exception {        
-        HttpPost post = new HttpPost("http://localhost:" + PORT2 + "/customerservice/customers");
-        post.addHeader("Accept", "text/xml");
-        String body = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
-            + "<soap:Body><GetPerson xmlns=\"http://camel.apache.org/wsdl-first/types\">" 
-            + "<personId>hello</personId></GetPerson></soap:Body></soap:Envelope>";
-        
-        StringEntity entity = new StringEntity(body, "ISO-8859-1");
-        entity.setContentType("text/xml; charset=ISO-8859-1");
-        post.setEntity(entity);
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(post);
-            assertEquals(200, response.getStatusLine().getStatusCode());
-            String responseBody = EntityUtils.toString(response.getEntity());
-            String correct = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>"
-                + "<GetPersonResponse xmlns=\"http://camel.apache.org/wsdl-first/types\">"
-                + "<personId>hello</personId><ssn>000-000-0000</ssn><name>Bonjour</name></GetPersonResponse></soap:Body></soap:Envelope>";
-            
-            assertEquals("Get a wrong response", correct, responseBody);
-        } finally {
-            httpclient.close();
-        }
-    }
-    
-    @Test
-    public void testJaxWsBeanFromCxfRoute() throws Exception {
-        URL wsdlURL = getClass().getClassLoader().getResource("person.wsdl");
-        PersonService ss = new PersonService(wsdlURL, new QName("http://camel.apache.org/wsdl-first", "PersonService"));
-        Person client = ss.getSoap();
-        ((BindingProvider)client).getRequestContext()
-            .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
-                 "http://localhost:" + CXFTestSupport.getPort1() + "/CxfBeanTest/PersonService/");
-        
-        Holder<String> personId = new Holder<>();
-        personId.value = "hello";
-        Holder<String> ssn = new Holder<>();
-        Holder<String> name = new Holder<>();
-        client.getPerson(personId, ssn, name);
-        assertEquals("Get a wrong personId", "hello", personId.value);
-        assertEquals("Get a wrong SSN", "000-000-0000", ssn.value);
-        assertEquals("Get a wrong name", "Bonjour", name.value);
-    }
-
-}
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanAndIoCTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanAndIoCTest.java
deleted file mode 100644
index 36f80f3..0000000
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanAndIoCTest.java
+++ /dev/null
@@ -1,63 +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.component.cxf.cxfbean;
-
-import org.apache.camel.component.cxf.CXFTestSupport;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-import org.junit.Test;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-
-import static org.junit.Assert.assertEquals;
-
-@ContextConfiguration
-public class CxfBeanWithWsdlLocationInBeanAndIoCTest extends AbstractJUnit4SpringContextTests {
-    static int port = CXFTestSupport.getPort("CxfBeanWithWsdlLocationInBeanAndIoCTest.1");
-    
-    @Test
-    public void testDoNotUseWsdlDefinedInJaxWsBeanByDefault() throws Exception {        
-        HttpPost post = new HttpPost("http://localhost:" + port + "/customerservice/customers");
-        post.addHeader("Accept", "text/xml");
-        String body = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
-            + "<soap:Body><GetPerson xmlns=\"http://camel.apache.org/wsdl-first/types\">" 
-            + "<personId>hello</personId></GetPerson></soap:Body></soap:Envelope>";
-        
-        StringEntity entity = new StringEntity(body, ContentType.create("text/xml", "ISO-8859-1"));
-        post.setEntity(entity);
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(post);
-            assertEquals(200, response.getStatusLine().getStatusCode());
-            String responseBody = EntityUtils.toString(response.getEntity());
-            String correct = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>"
-                + "<GetPersonResponse xmlns=\"http://camel.apache.org/wsdl-first/types\">"
-                + "<personId>hello</personId><ssn>000-000-0000</ssn><name>Bye</name></GetPersonResponse></soap:Body></soap:Envelope>";
-            
-            assertEquals("Get a wrong response", correct, responseBody);
-        } finally {
-            httpclient.close();
-        }
-    }
-    
-}
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanTest.java
deleted file mode 100644
index b47ddb1..0000000
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanTest.java
+++ /dev/null
@@ -1,65 +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.component.cxf.cxfbean;
-
-import org.apache.camel.component.cxf.CXFTestSupport;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-import org.junit.Test;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-
-import static org.junit.Assert.assertEquals;
-/**
- *
- * @version 
- */
-@ContextConfiguration
-public class CxfBeanWithWsdlLocationInBeanTest extends AbstractJUnit4SpringContextTests {
-    static int port = CXFTestSupport.getPort("CxfBeanWithWsdlLocationInBeanTest.1");
-    @Test
-    public void testDoNotUseWsdlDefinedInJaxWsBeanByDefault() throws Exception {        
-        HttpPost post = new HttpPost("http://localhost:" + port + "/customerservice/customers");
-        post.addHeader("Accept", "text/xml");
-        String body = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
-            + "<soap:Body><GetPerson xmlns=\"http://camel.apache.org/wsdl-first/types\">" 
-            + "<personId>hello</personId></GetPerson></soap:Body></soap:Envelope>";
-        
-        StringEntity entity = new StringEntity(body, ContentType.create("text/xml", "ISO-8859-1"));
-        post.setEntity(entity);
-        CloseableHttpClient httpclient = HttpClientBuilder.create().build();
-
-        try {
-            HttpResponse response = httpclient.execute(post);
-            assertEquals(200, response.getStatusLine().getStatusCode());
-            String responseBody = EntityUtils.toString(response.getEntity());
-            String correct = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>"
-                + "<GetPersonResponse xmlns=\"http://camel.apache.org/wsdl-first/types\">"
-                + "<personId>hello</personId><ssn>000-000-0000</ssn><name>Bonjour</name></GetPersonResponse></soap:Body></soap:Envelope>";
-            
-            assertEquals("Get a wrong response", correct, responseBody);
-        } finally {
-            httpclient.close();
-        }
-    }
-    
-}
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointWithProperties.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointWithProperties.java
index 9eb736d..93a11d5 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointWithProperties.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointWithProperties.java
@@ -26,6 +26,7 @@ import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class CxfRsEndpointWithProperties extends AbstractSpringBeanTestSupport {
@@ -36,6 +37,7 @@ public class CxfRsEndpointWithProperties extends AbstractSpringBeanTestSupport {
     }
 
     @Test
+    @Ignore("Camel 3.0: investigate why this fail")
     public void testCxfRsBeanWithCamelPropertiesHolder() throws Exception {
         // get the camelContext from application context
         CamelContext camelContext = ctx.getBean("camel", CamelContext.class);
diff --git a/components/camel-cxf/src/test/resources/log4j2.properties b/components/camel-cxf/src/test/resources/log4j2.properties
index 43c40fe..614b2df 100644
--- a/components/camel-cxf/src/test/resources/log4j2.properties
+++ b/components/camel-cxf/src/test/resources/log4j2.properties
@@ -32,3 +32,4 @@ logger.converter.name = org.apache.camel.impl.converter
 logger.converter.level = WARN
 rootLogger.level = INFO
 rootLogger.appenderRef.file.ref = file
+#rootLogger.appenderRef.out.ref = out
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/CxfDispatchMessageBeans.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/CxfDispatchMessageBeans.xml
index 6434ad4..9c04bfb 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/CxfDispatchMessageBeans.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/CxfDispatchMessageBeans.xml
@@ -35,7 +35,7 @@
 		   bus="#cxf">
 
       <cxf:properties>
-         <entry key="dataFormat" value="MESSAGE"/>
+         <entry key="dataFormat" value="RAW"/>
       </cxf:properties>
    </cxf:cxfEndpoint>
       
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/LoggingInterceptorInMessageModeTest-context.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/LoggingInterceptorInMessageModeTest-context.xml
index 0f76f31..aeb42ec 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/LoggingInterceptorInMessageModeTest-context.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/LoggingInterceptorInMessageModeTest-context.xml
@@ -29,7 +29,7 @@
 	<cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:${CXFTestSupport.port1}/LoggingInterceptorInMessageModeTest/router"
 		serviceClass="org.apache.camel.component.cxf.HelloService">
 		<cxf:properties>
-			<entry key="dataFormat" value="MESSAGE"/>
+			<entry key="dataFormat" value="RAW"/>
 		</cxf:properties>	
 	</cxf:cxfEndpoint>
 		
@@ -45,7 +45,7 @@
 		    <ref bean="loggingOutInterceptor"/>
 		</cxf:outInterceptors>
 		<cxf:properties>
-			<entry key="dataFormat" value="MESSAGE"/>
+			<entry key="dataFormat" value="RAW"/>
 		</cxf:properties>
 	</cxf:cxfEndpoint>
 	<!-- END SNIPPET: enableLoggingOutInterceptor -->
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/WsdlOnlyBeans.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/WsdlOnlyBeans.xml
index f3fd7d2..fc66181 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/WsdlOnlyBeans.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/WsdlOnlyBeans.xml
@@ -61,8 +61,8 @@
    
    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
       <route>
-         <from uri="cxf:bean:routerEndpoint?dataFormat=MESSAGE" />
-         <to uri="cxf:bean:serviceEndpoint?dataFormat=MESSAGE" />
+         <from uri="cxf:bean:routerEndpoint?dataFormat=RAW" />
+         <to uri="cxf:bean:serviceEndpoint?dataFormat=RAW" />
          <to uri="log:camelLogger" />
       </route>
             <route>
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/NodeIdReferenceLegacyTest-context.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/context-camel-1145.xml
similarity index 50%
rename from components/camel-spring/src/test/resources/org/apache/camel/spring/NodeIdReferenceLegacyTest-context.xml
rename to components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/context-camel-1145.xml
index fefb292..c9f2d4f 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/NodeIdReferenceLegacyTest-context.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/context-camel-1145.xml
@@ -19,18 +19,30 @@
 -->
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:camel="http://camel.apache.org/schema/spring"
+       xmlns:jaxws="http://cxf.apache.org/jaxws"
+       xmlns:http="http://cxf.apache.org/transports/http/configuration"
+       xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration"
+
        xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+       http://cxf.apache.org/transports/http-jetty/configuration http://cxf.apache.org/schemas/configuration/http-jetty.xsd
+       http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+	   http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
+	   http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-  <camelContext registerEndpointIdsFromRoute="true" xmlns="http://camel.apache.org/schema/spring">
-    <template id="camelTemplate"/>
+    <camel:camelContext id="camelJiraContext">
+        <camel:jmxAgent id="agent" disabled="true" />
+        <camel:routeBuilder ref="routeBuilder" />
+    </camel:camelContext>
 
-    <route>
-      <from id="foo" uri="direct:start"/>
-      <to uri="mock:result"/>
-    </route>
-  </camelContext>
+    <bean id="producerTemplate"
+          factory-bean="camelJiraContext"
+          factory-method="createProducerTemplate">
+    </bean>
 
-</beans>
+    <bean id="routeBuilder" class="org.apache.camel.component.cxf.RouteBuilderCxfTracer"/>
+</beans>
\ No newline at end of file
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml
deleted file mode 100644
index a282ed2..0000000
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-	xmlns:cxf="http://camel.apache.org/schema/cxf"
-	xmlns:util="http://www.springframework.org/schema/util"
-	xmlns:camel="http://cxf.apache.org/transports/camel"
-	xsi:schemaLocation="
-       http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring  http://camel.apache.org/schema/spring/camel-spring.xsd
-       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
-       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
-       http://cxf.apache.org/transports/camel http://cxf.apache.org/transports/camel.xsd
-    ">
-
-    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
-
-    <import resource="classpath:META-INF/cxf/camel/cxf-extension-camel.xml" />
-	
-	<!-- START SNIPPET: beanDefinition -->
-	<util:list id="customerServiceBean">
-		<bean class="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService" />
-	</util:list>
-	
-	<bean class="org.apache.camel.wsdl_first.PersonImpl" id="jaxwsBean" />
-	
-	<!-- END SNIPPET: beanDefinition -->	
-    
-	<cxf:cxfEndpoint id="routerEndpoint"
-		address="http://localhost:${CXFTestSupport.port1}/CxfBeanTest/PersonService/" serviceClass="org.apache.camel.wsdl_first.Person"
-		endpointName="person:soap" serviceName="person:PersonService" wsdlURL="person.wsdl"
-		xmlns:person="http://camel.apache.org/wsdl-first">
-	</cxf:cxfEndpoint>
-	
-	<cxf:cxfEndpoint id="serviceEndpoint"
-		address="camel://direct:camel.apache.org.wsdl-first.PersonService" serviceClass="org.apache.camel.wsdl_first.Person"
-		endpointName="person:soap3" serviceName="person:PersonService"
-		wsdlURL="person.wsdl"
-		xmlns:person="http://camel.apache.org/wsdl-first">
-	</cxf:cxfEndpoint>
-
-	<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-        <endpoint id="ep1" uri="jetty:http://localhost:${CxfBeanTest.1}/?matchOnUriPrefix=true"/>
-        <endpoint id="ep2" uri="jetty:http://localhost:${CxfBeanTest.2}/?matchOnUriPrefix=true"/>
-
-		<route>
-			<from uri="cxf:bean:routerEndpoint?dataFormat=PAYLOAD" />
-			<to uri="cxf:bean:serviceEndpoint?dataFormat=PAYLOAD" />
-		</route>
-		<!-- START SNIPPET: routeDefinition -->
-		<route>
-			<from uri="ref:ep1" />
-			<to uri="cxfbean:customerServiceBean" />
-			<to uri="mock:endpointA" />
-		</route>
-		<!-- END SNIPPET: routeDefinition -->	
-		<route>
-			<from uri="ep2" />
-			<to uri="cxfbean:jaxwsBean" />
-		</route>
-		<!-- Provide an RS route for the purposes of testing that providers are added -->				
-		<route>
-			<from uri="direct:start" />
-			<to uri="cxfbean:customerServiceBean?providers=#provider1,#provider2" />
-		</route>				
-	</camelContext>
-
-	<!-- A couple of beans to declare as providers - 
-	     they can be an object of any kind for the purposes of our test. -->
-    <bean id="provider1" class="java.lang.String" />
-    <bean id="provider2" class="java.lang.String" />
-
-	  <camel:conduit name="{http://camel.apache.org/wsdl-first}soap3.camel-conduit">
-       <camelContext id="PersonServiceClientContext" xmlns="http://camel.apache.org/schema/spring">
-           <route>
-               <from uri="direct:camel.apache.org.wsdl-first.PersonService"/>
-               <to uri="cxfbean:jaxwsBean"/>
-          </route>
-      </camelContext>
-  </camel:conduit>
-	
-</beans>
\ No newline at end of file
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanAndIoCTest-context.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanAndIoCTest-context.xml
deleted file mode 100644
index d2b5bee..0000000
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanAndIoCTest-context.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-  xsi:schemaLocation="
-       http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring  http://camel.apache.org/schema/spring/camel-spring.xsd
-       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
-    ">
-
-    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
-
-  <bean class="org.apache.camel.wsdl_first.PersonImplWithWsdl" id="jaxwsBean">
-      <property name="reply" value="Bye"/>
-  </bean>
-
-  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-      <endpoint id="ep1" uri="jetty:http://localhost:${CxfBeanWithWsdlLocationInBeanAndIoCTest.1}?matchOnUriPrefix=true" />
-    <route>
-      <from uri="ref:ep1"/>
-      <to uri="cxfbean:jaxwsBean" />
-    </route>
-  </camelContext>
-
-</beans>
\ No newline at end of file
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanTest-context.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanTest-context.xml
deleted file mode 100644
index 41c2f70..0000000
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanWithWsdlLocationInBeanTest-context.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-  xsi:schemaLocation="
-       http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring  http://camel.apache.org/schema/spring/camel-spring.xsd
-       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
-    ">
-  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
-
-  <bean class="org.apache.camel.wsdl_first.PersonImplWithWsdl" id="jaxwsBean" />
-
-  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-    <endpoint id="ep1" uri="jetty:http://localhost:${CxfBeanWithWsdlLocationInBeanTest.1}?matchOnUriPrefix=true" />
-    <route>
-      <from uri="ref:ep1" />
-      <to uri="cxfbean:jaxwsBean" />
-    </route>
-  </camelContext>
-
-</beans>
\ No newline at end of file
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/FileToCxfMessageDataFormatTest.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/FileToCxfMessageDataFormatTest.xml
index 384f7d5..a092e95 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/FileToCxfMessageDataFormatTest.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/FileToCxfMessageDataFormatTest.xml
@@ -30,9 +30,9 @@
     <cxf:cxfEndpoint id="routerEndpoint"
                      address="http://localhost:${CXFTestSupport.port1}/FileToCxfMessageDataFormatTest/router"
                      serviceClass="org.apache.camel.component.cxf.HelloService">
-        <!-- use MESSAGE data format -->
+        <!-- use RAW data format -->
         <cxf:properties>
-            <entry key="dataFormat" value="MESSAGE"/>
+            <entry key="dataFormat" value="RAW"/>
         </cxf:properties>
     </cxf:cxfEndpoint>
 
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/util/CxfEndpointBeans.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/util/CxfEndpointBeans.xml
index 508959e..6b5e223 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/util/CxfEndpointBeans.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/util/CxfEndpointBeans.xml
@@ -32,7 +32,7 @@
     serviceName="s:ServiceName"
     xmlns:s="http://www.example.com/test">
     <cxf:properties>
-      <entry key="dataFormat" value="MESSAGE"/>
+      <entry key="dataFormat" value="RAW"/>
       <entry key="defaultBus" value="true"/>
     </cxf:properties>
 
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/wssecurity/camel/camel-context.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/wssecurity/camel/camel-context.xml
index f615a0c..1b57c83 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/wssecurity/camel/camel-context.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/wssecurity/camel/camel-context.xml
@@ -77,7 +77,7 @@
         address="http://localhost:${CXFTestSupport.port2}/WSSecurityRouteTest/GreeterEncryptionPort" 
         serviceClass="org.apache.camel.hello_world_soap_http.Greeter">
         <cxf:properties>
-            <entry key="dataFormat" value="MESSAGE"/>
+            <entry key="dataFormat" value="RAW"/>
         </cxf:properties>
     </cxf:cxfEndpoint>
     
@@ -86,7 +86,7 @@
         address="http://localhost:${CXFTestSupport.port1}/WSSecurityRouteTest/GreeterEncryptionPort" 
         serviceClass="org.apache.camel.hello_world_soap_http.Greeter">
         <cxf:properties>
-            <entry key="dataFormat" value="MESSAGE"/>
+            <entry key="dataFormat" value="RAW"/>
         </cxf:properties>
     </cxf:cxfEndpoint>
     
@@ -95,7 +95,7 @@
         address="http://localhost:${CXFTestSupport.port2}/WSSecurityRouteTest/GreeterSecurityPolicyPort" 
         serviceClass="org.apache.camel.hello_world_soap_http.Greeter">
         <cxf:properties>
-            <entry key="dataFormat" value="MESSAGE"/>
+            <entry key="dataFormat" value="RAW"/>
         </cxf:properties>
     </cxf:cxfEndpoint>
     
@@ -104,7 +104,7 @@
         address="http://localhost:${CXFTestSupport.port1}/WSSecurityRouteTest/GreeterSecurityPolicyPort" 
         serviceClass="org.apache.camel.hello_world_soap_http.Greeter">
         <cxf:properties>
-            <entry key="dataFormat" value="MESSAGE"/>
+            <entry key="dataFormat" value="RAW"/>
         </cxf:properties>
     </cxf:cxfEndpoint>
     
diff --git a/components/camel-sjms2/src/main/java/org/apache/camel/component/sjms2/Sjms2Endpoint.java b/components/camel-sjms2/src/main/java/org/apache/camel/component/sjms2/Sjms2Endpoint.java
index 2694c3c..4fbe07a 100644
--- a/components/camel-sjms2/src/main/java/org/apache/camel/component/sjms2/Sjms2Endpoint.java
+++ b/components/camel-sjms2/src/main/java/org/apache/camel/component/sjms2/Sjms2Endpoint.java
@@ -56,7 +56,6 @@ public class Sjms2Endpoint extends SjmsEndpoint implements AsyncEndpoint {
     /**
      * Sets the durable subscription Id required for durable topics.
      */
-    @Deprecated
     @Override
     public void setDurableSubscriptionId(String durableSubscriptionId) {
         super.setDurableSubscriptionId(durableSubscriptionId);
diff --git a/components/camel-soap/src/main/docs/soapjaxb-dataformat.adoc b/components/camel-soap/src/main/docs/soapjaxb-dataformat.adoc
index de7b7d9..65ecaea 100644
--- a/components/camel-soap/src/main/docs/soapjaxb-dataformat.adoc
+++ b/components/camel-soap/src/main/docs/soapjaxb-dataformat.adoc
@@ -246,7 +246,7 @@ response or fault.
 
 [source,java]
 ---------------------------------------------------------------------------------------------------------------------------------------
-String WS_URI = "cxf://http://myserver/customerservice?serviceClass=com.example.customerservice&dataFormat=MESSAGE";
+String WS_URI = "cxf://http://myserver/customerservice?serviceClass=com.example.customerservice&dataFormat=RAW";
 SoapJaxbDataFormat soapDF = new SoapJaxbDataFormat("com.example.customerservice", new ServiceInterfaceStrategy(CustomerService.class));
 from("direct:customerServiceClient")
   .onException(Exception.class)
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/NodeIdReferenceLegacyTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/NodeIdReferenceLegacyTest.java
deleted file mode 100644
index 044169d..0000000
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/NodeIdReferenceLegacyTest.java
+++ /dev/null
@@ -1,52 +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.spring;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-
-/**
- * @version 
- */
-@ContextConfiguration
-public class NodeIdReferenceLegacyTest extends SpringRunWithTestSupport {
-    protected String expectedBody = "Bye World";
-
-    @Autowired
-    protected ProducerTemplate producer;
-
-    @EndpointInject(ref = "foo")
-    protected Endpoint start;
-
-    @EndpointInject(uri = "mock:result")
-    protected MockEndpoint result;
-
-    @Test
-    public void testNodeIdReferenceLegacy() throws Exception {
-        result.expectedBodiesReceived(expectedBody);
-
-        producer.sendBody(start, expectedBody);
-
-        result.assertIsSatisfied();
-    }
-
-}
\ No newline at end of file
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/config/CamelProxyUsingRefTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/config/CamelProxyUsingRefTest.xml
index 544f495..7e6d5fd 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/spring/config/CamelProxyUsingRefTest.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/config/CamelProxyUsingRefTest.xml
@@ -30,7 +30,7 @@
         <!-- create a proxy that will route to the direct:start endpoint when invoked -->
         <proxy id="myProxySender"
                serviceInterface="org.apache.camel.spring.config.MyProxySender"
-               serviceRef="cool"/>
+               serviceUrl="ref:cool"/>
 
         <!-- define the endpoint we want to proxy -->
         <endpoint id="cool" uri="direct:start"/>
diff --git a/examples/camel-example-cxf-proxy/src/main/resources/META-INF/spring/camel-config.xml b/examples/camel-example-cxf-proxy/src/main/resources/META-INF/spring/camel-config.xml
index bc89b6a..2825916 100644
--- a/examples/camel-example-cxf-proxy/src/main/resources/META-INF/spring/camel-config.xml
+++ b/examples/camel-example-cxf-proxy/src/main/resources/META-INF/spring/camel-config.xml
@@ -63,7 +63,7 @@
 
     <route>
       <!-- CXF consumer using MESSAGE format -->
-      <from uri="cxf:bean:reportIncident?dataFormat=MESSAGE"/>
+      <from uri="cxf:bean:reportIncident?dataFormat=RAW"/>
       <!-- log input received -->
       <to uri="log:input"/>
       <!-- enrich the input by ensure the incidentId parameter is set -->
diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CamelGreeterFileDomTest-context.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CamelGreeterFileDomTest-context.xml
index 83385e5..ea5e736 100644
--- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CamelGreeterFileDomTest-context.xml
+++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/CamelGreeterFileDomTest-context.xml
@@ -40,7 +40,7 @@
   <camelContext xmlns="http://camel.apache.org/schema/spring" xmlns:types="http://apache.org/hello_world_soap_http/types">
     <route streamCache="true">
       <from uri="direct:start"/>
-      <to uri="cxf://bean:serviceEndpoint?dataFormat=MESSAGE"/>
+      <to uri="cxf://bean:serviceEndpoint?dataFormat=RAW"/>
       <to uri="file:target/greeter/response/?fileName=response.txt"/>
       <convertBodyTo type="org.w3c.dom.Document"/>
       <to uri="log:xml"/>
diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.xml
index fe6bf5e..d4a7d79 100644
--- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.xml
+++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.xml
@@ -36,7 +36,7 @@
                    serviceName="s:SOAPService"
                    xmlns:s="http://apache.org/hello_world_soap_http">
     <cxf:properties>
-      <entry key="dataFormat" value="MESSAGE"/>
+      <entry key="dataFormat" value="RAW"/>
       <entry key="receiveTimeout" value="60000"/>
       <entry key="connectionTimeout" value="60000"/>
       <entry key="schema-validation-enabled" value="true" />
@@ -50,7 +50,7 @@
                    serviceName="s:SOAPService"
                    xmlns:s="http://apache.org/hello_world_soap_http">
     <cxf:properties>
-      <entry key="dataFormat" value="MESSAGE"/>
+      <entry key="dataFormat" value="RAW"/>
       <entry key="receiveTimeout" value="60000"/>
       <entry key="connectionTimeout" value="60000"/>
       <entry key="schema-validation-enabled" value="true" />


[camel] 27/44: Make InterceptSendToEndpointProcessor asynchronous

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c698faeca8fb118f1a281b84dec269d367d834dd
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 1 17:21:23 2018 +0200

    Make InterceptSendToEndpointProcessor asynchronous
---
 .../apache/camel/impl/InterceptSendToEndpoint.java |  2 +-
 .../impl/InterceptSendToEndpointProcessor.java     | 41 ++++++++++------------
 2 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
index 3b8a0af..044d538 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
@@ -94,7 +94,7 @@ public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
 
     @Override
     public AsyncProducer createAsyncProducer() throws Exception {
-        Producer producer = delegate.createProducer();
+        AsyncProducer producer = delegate.createAsyncProducer();
         return new InterceptSendToEndpointProcessor(this, delegate, producer, skip);
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
index 5ed03e5..07f245f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
@@ -18,9 +18,11 @@ package org.apache.camel.impl;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
+import org.apache.camel.AsyncProducer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Producer;
+import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,10 +37,10 @@ public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
 
     private final InterceptSendToEndpoint endpoint;
     private final Endpoint delegate;
-    private final Producer producer;
+    private final AsyncProducer producer;
     private final boolean skip;
 
-    public InterceptSendToEndpointProcessor(InterceptSendToEndpoint endpoint, Endpoint delegate, Producer producer, boolean skip) throws Exception {
+    public InterceptSendToEndpointProcessor(InterceptSendToEndpoint endpoint, Endpoint delegate, AsyncProducer producer, boolean skip) throws Exception {
         super(delegate);
         this.endpoint = endpoint;
         this.delegate = delegate;
@@ -61,18 +63,19 @@ public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
 
         if (endpoint.getDetour() != null) {
             // detour the exchange using synchronous processing
-            try {
-                endpoint.getDetour().process(exchange);
-            } catch (Exception e) {
-                exchange.setException(e);
-            }
+            AsyncProcessor detour = AsyncProcessorConverterHelper.convert(endpoint.getDetour());
+            return detour.process(exchange, s -> callback(exchange, callback, s));
         }
 
+        return callback(exchange, callback, true);
+    }
+
+    private boolean callback(Exchange exchange, AsyncCallback callback, boolean doneSync) {
         // Decide whether to continue or not; similar logic to the Pipeline
         // check for error if so we should break out
         if (!continueProcessing(exchange, "skip sending to original intended destination: " + getEndpoint(), log)) {
-            callback.done(true);
-            return true;
+            callback.done(doneSync);
+            return doneSync;
         }
 
         // determine if we should skip or not
@@ -92,24 +95,16 @@ public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
             }
 
             // route to original destination leveraging the asynchronous routing engine if possible
-            if (producer instanceof AsyncProcessor) {
-                AsyncProcessor async = (AsyncProcessor) producer;
-                return async.process(exchange, callback);
-            } else {
-                try {
-                    producer.process(exchange);
-                } catch (Exception e) {
-                    exchange.setException(e);
-                }
-                callback.done(true);
-                return true;
-            }
+            boolean s = producer.process(exchange, ds -> {
+                callback.done(doneSync && ds);
+            });
+            return doneSync && s;
         } else {
             if (log.isDebugEnabled()) {
                 log.debug("Stop() means skip sending exchange to original intended destination: {} for exchange: {}", getEndpoint(), exchange);
             }
-            callback.done(true);
-            return true;
+            callback.done(doneSync);
+            return doneSync;
         }
     }
 


[camel] 41/44: Prepare org.apache.camel.management for extraction

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 7f16b9e78e2ddce1eecc6143c428f65d5dcc650f
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 09:50:54 2018 +0200

    Prepare org.apache.camel.management for extraction
    
    # Conflicts:
    #	camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
    #	camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
    #	camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategy.java
    #	camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
    #	camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
    #	camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
    #	camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentParallelTest.java
    #	camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
    #	components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
---
 .../main/java/org/apache/camel/CamelContext.java   |   64 +-
 .../src/main/java/org/apache/camel/Service.java    |    6 +
 .../org/apache/camel/health/HealthCheckHelper.java |    6 +-
 .../apache/camel/health/HealthCheckRegistry.java   |   18 +
 .../camel/spi/ManagementInterceptStrategy.java     |   35 +-
 .../camel/spi/ManagementObjectNameStrategy.java    |    4 +-
 .../org/apache/camel/spi/ManagementStrategy.java   |   42 +-
 .../java/org/apache/camel/spi/RouteContext.java    |    4 +-
 .../org/apache/camel/support/ServiceSupport.java   |   51 +-
 camel-core/src/main/docs/eips/pollEnrich-eip.adoc  |    2 +-
 .../org/apache/camel/builder/NotifyBuilder.java    |    4 -
 .../DefaultComponentVerifierExtension.java         |    2 +-
 .../apache/camel/component/mock/MockEndpoint.java  |    6 +-
 .../rest/RestComponentVerifierExtension.java       |    2 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |  295 +++---
 .../org/apache/camel/impl/DefaultDebugger.java     |   10 -
 .../DefaultManagementStrategy.java                 |   49 +-
 .../org/apache/camel/impl/DefaultRouteContext.java |   16 +-
 .../java/org/apache/camel/impl/ServicePool.java    |    4 +-
 .../impl/health/DefaultHealthCheckService.java     |    2 +-
 .../apache/camel/impl/health/RouteHealthCheck.java |   11 +-
 .../java/org/apache/camel/main/MainSupport.java    |    2 +-
 ...r.java => DefaultInstrumentationProcessor.java} |   22 +-
 .../camel/management/DefaultManagementAgent.java   |    3 +
 .../DefaultManagementLifecycleStrategy.java        |   29 +-
 .../DefaultManagementObjectNameStrategy.java       |   94 +-
 .../DefaultManagementObjectStrategy.java           |    2 +-
 .../InstrumentationInterceptStrategy.java          |   24 +-
 .../management/JmxNotificationEventNotifier.java   |    4 -
 .../camel/management/LoggingEventNotifier.java     |    2 -
 .../camel/management/ManagedCamelContextImpl.java  |  104 ++
 .../management/ManagedManagementStrategy.java      |  174 +---
 .../management/ManagementStrategyFactory.java      |   16 +-
 .../camel/management/mbean/ManagedCamelHealth.java |    2 +-
 .../management/mbean/RouteCoverageXmlParser.java   |    8 +-
 .../camel/model/DynamicRouterDefinition.java       |    2 +-
 .../org/apache/camel/model/EnrichDefinition.java   |    2 +-
 .../camel/processor/CamelInternalProcessor.java    |   88 +-
 .../processor/CamelInternalProcessorAdvice.java    |   53 +-
 .../InterceptorToAsyncProcessorBridge.java         |   12 +-
 .../apache/camel/processor/RestBindingAdvice.java  |    2 +-
 .../processor/interceptor/BacklogDebugger.java     |   31 +-
 .../camel/processor/interceptor/BacklogTracer.java |   16 +-
 .../processor/interceptor/DefaultChannel.java      |  105 +-
 .../java/org/apache/camel/support/EventHelper.java | 1095 +++-----------------
 .../apache/camel/support/EventNotifierSupport.java |    6 +
 .../apache/camel/support/ProcessorEndpoint.java    |    6 +-
 .../throttling/ThrottlingInflightRoutePolicy.java  |   10 -
 .../java/org/apache/camel/ContextTestSupport.java  |    7 +-
 .../camel/builder/BuilderWithScopesTest.java       |    3 +-
 .../direct/DirectNoMultipleConsumersTest.java      |    2 +-
 .../CamelCustomDefaultThreadPoolProfileTest.java   |    5 +-
 .../camel/impl/CustomThreadPoolFactoryTest.java    |    4 +-
 .../impl/DefaultCamelContextAutoStartupTest.java   |   12 +-
 .../apache/camel/impl/DefaultCamelContextTest.java |   40 +-
 .../camel/impl/event/EventNotifierEventsTest.java  |   12 -
 .../event/EventNotifierExchangeCompletedTest.java  |    8 -
 .../impl/event/EventNotifierExchangeSentTest.java  |    8 -
 .../EventNotifierFailureHandledEventsTest.java     |   12 -
 .../event/EventNotifierRedeliveryEventsTest.java   |    8 -
 ...ventNotifierServiceStoppingFailedEventTest.java |   13 +-
 .../event/MultipleEventNotifierEventsTest.java     |   20 -
 .../impl/health/DefaultHealthCheckServiceTest.java |    3 +-
 .../issues/SentExchangeEventNotifierIssueTest.java |    1 +
 .../SentExchangeEventNotifierTwoIssueTest.java     |    1 +
 .../camel/management/AddEventNotifierTest.java     |   12 -
 .../management/CamelContextDisableJmxTest.java     |    2 +-
 ...ationOnlyRegisterProcessorWithCustomIdTest.java |    2 +
 .../management/ManagedAggregateControllerTest.java |    3 +-
 .../ManagedCamelContextEmptyRouteTest.java         |    1 +
 .../ManagedCamelContextPropertiesTest.java         |    1 +
 .../management/ManagedCamelContextRestartTest.java |    4 -
 .../camel/management/ManagedCamelContextTest.java  |    4 +-
 .../camel/management/ManagedComponentTest.java     |    1 +
 .../camel/management/ManagedDynamicRouterTest.java |    1 +
 .../ManagedEndpointUtilizationStatisticsTest.java  |    1 +
 .../camel/management/ManagedEnricherTest.java      |    1 +
 .../management/ManagedInlinedProcessorTest.java    |    3 +-
 .../management/ManagedListComponentsTest.java      |    2 +
 .../management/ManagedNamePatternFixedTest.java    |    1 +
 .../ManagedNamePatternIncludeHostNameTest.java     |    1 +
 .../camel/management/ManagedNamePatternTest.java   |    1 +
 .../camel/management/ManagedPollEnricherTest.java  |    1 +
 ...gedProducerRecipientListRegisterAlwaysTest.java |    1 +
 ...edProducerRouteAddRemoveRegisterAlwaysTest.java |    1 +
 .../camel/management/ManagedRecipientListTest.java |    1 +
 .../ManagedRouteSuspendAndResumeTest.java          |    3 +-
 .../camel/management/ManagedRoutingSlipTest.java   |    1 +
 .../camel/management/ManagedSanitizeTest.java      |    1 +
 .../ManagedSendDynamicProcessorTest.java           |    1 +
 .../management/ManagedStatisticsLevelOffTest.java  |    1 +
 .../ManagedStatisticsLevelRoutesOnlyTest.java      |    2 +-
 .../camel/management/ManagedWireTapTest.java       |    1 +
 .../camel/management/RemoveEventNotifierTest.java  |   12 -
 .../EventNotifierExchangeSentExampleTest.java      |    1 +
 .../camel/processor/MyLoggingSentEventNotifer.java |   12 -
 .../camel/processor/MySentEventNotifier.java       |   12 -
 .../ProducerTemplateDisableEventNotifierTest.java  |    1 +
 ...litterUseOriginalNotPropagateExceptionTest.java |    1 +
 .../camel/processor/UnitOfWorkProducerTest.java    |    8 -
 .../AsyncEndpointEventNotifierSendingTest.java     |    4 -
 .../async/AsyncEndpointEventNotifierTest.java      |    8 -
 .../EnricherAsyncUnhandledExceptionTest.java       |    1 +
 .../processor/enricher/EnricherSendEventTest.java  |   17 +-
 .../DynamicRouterEventNotifierTest.java            |   11 +-
 .../RecipientListEventNotifierTest.java            |   11 +-
 .../routingslip/RoutingSlipEventNotifierTest.java  |   11 +-
 .../runtimecatalog/impl/JSonSchemaHelperTest.java  |    3 +-
 .../impl/RuntimeCamelCatalogTest.java              |    2 +-
 .../camel/api}/management/ManagedCamelContext.java |   36 +-
 .../camel/component/beanstalk/EndpointTest.java    |    2 +-
 .../camel/blueprint/BlueprintCamelContext.java     |    2 +-
 .../camel/core/osgi/OsgiCamelContextPublisher.java |    8 -
 .../core/xml/AbstractCamelContextFactoryBean.java  |   11 +-
 .../component/couchbase/CouchbaseConsumer.java     |    3 +-
 .../camel/http/common/HttpSendDynamicAware.java    |    4 +-
 ...sumerObserveAttributeMatchStringDifferTest.java |   10 +-
 ...JmxConsumerObserveAttributeMatchStringTest.java |   10 +-
 .../jmx/CamelJmxConsumerObserveAttributeTest.java  |    6 +-
 .../camel/component/jmx/CamelJmxConsumerTest.java  |    4 +-
 .../engine/DefaultCamelReactiveStreamsService.java |    2 +-
 .../camel/spring/boot/CamelAutoConfiguration.java  |    6 +-
 .../boot/actuate/endpoint/CamelRoutesEndpoint.java |    6 +-
 .../camel/spring/boot/model/RouteDetailsInfo.java  |    5 +-
 .../boot/health/HealthCheckRegistryTest.java       |    3 +-
 .../apache/camel/spring/SpringCamelContext.java    |    8 +-
 .../spring/health/HealthCheckRegistryTest.java     |    3 +-
 .../camel/spring/management/MyEventNotifier.java   |   11 -
 .../blueprint/health/HealthCheckRegistryTest.java  |    3 +-
 .../camel/test/spring/CamelAnnotationsHandler.java |    3 +-
 .../camel/test/spring/RouteCoverageDumper.java     |    4 +-
 ...pringRunnerDisableJmxInheritedOverrideTest.java |    2 +-
 .../test/spring/CamelSpringRunnerPlainTest.java    |    2 +-
 .../apache/camel/test/junit4/CamelTestSupport.java |    8 +-
 .../camel/example/cdi/test/CustomContextTest.java  |    2 +-
 .../commands/AbstractLocalCamelController.java     |    4 +-
 .../commands/internal/CamelControllerImpl.java     |   10 +-
 137 files changed, 1014 insertions(+), 2040 deletions(-)

diff --git a/camel-api/src/main/java/org/apache/camel/CamelContext.java b/camel-api/src/main/java/org/apache/camel/CamelContext.java
index 704624b..f6d712f 100644
--- a/camel-api/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-api/src/main/java/org/apache/camel/CamelContext.java
@@ -24,8 +24,6 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.ScheduledExecutorService;
 
-import org.apache.camel.health.HealthCheckRegistry;
-import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.ClassResolver;
@@ -108,6 +106,9 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
      */
     <T extends CamelContext> T adapt(Class<T> type);
 
+    <T> T getExtension(Class<T> type);
+    <T> void setExtension(Class<T> type, T module);
+
     /**
      * If CamelContext during the start procedure was vetoed, and therefore causing Camel to not start.
      */
@@ -1076,40 +1077,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setManagementStrategy(ManagementStrategy strategy);
 
     /**
-     * Gets the default backlog tracer
-     *
-     * @return the default backlog tracer
-     */
-    InterceptStrategy getDefaultBacklogTracer();
-
-    /**
-     * Sets a custom backlog tracer to be used as the default backlog tracer.
-     * <p/>
-     * <b>Note:</b> This must be set before any routes are created,
-     * changing the default backlog tracer for existing routes is not supported.
-     *
-     * @param backlogTracer the custom tracer to use as default backlog tracer
-     */
-    void setDefaultBacklogTracer(InterceptStrategy backlogTracer);
-
-    /**
-     * Gets the default backlog debugger
-     *
-     * @return the default backlog debugger
-     */
-    InterceptStrategy getDefaultBacklogDebugger();
-
-    /**
-     * Sets a custom backlog debugger to be used as the default backlog debugger.
-     * <p/>
-     * <b>Note:</b> This must be set before any routes are created,
-     * changing the default backlog debugger for existing routes is not supported.
-     *
-     * @param backlogDebugger the custom debugger to use as default backlog debugger
-     */
-    void setDefaultBacklogDebugger(InterceptStrategy backlogDebugger);
-
-    /**
      * Disables using JMX as {@link org.apache.camel.spi.ManagementStrategy}.
      * <p/>
      * <b>Important:</b> This method must be called <b>before</b> the {@link CamelContext} is started.
@@ -1527,11 +1494,6 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
     void setReloadStrategy(ReloadStrategy reloadStrategy);
 
     /**
-     * Gets the associated {@link RuntimeCamelCatalog} for this CamelContext.
-     */
-    RuntimeCamelCatalog getRuntimeCamelCatalog();
-
-    /**
      * Gets a list of {@link LogListener}.
      */
     Set<LogListener> getLogListeners();
@@ -1561,24 +1523,4 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
      */
     void setHeadersMapFactory(HeadersMapFactory factory);
 
-    /**
-     * Returns an optional {@link HealthCheckRegistry}, by default no registry is
-     * present and it must be explicit activated. Components can register/unregister
-     * health checks in response to life-cycle events (i.e. start/stop).
-     *
-     * This registry is not used by the camel context but it is up to the impl to
-     * properly use it, i.e.
-     *
-     * - a RouteController could use the registry to decide to restart a route
-     *   with failing health checks
-     * - spring boot could integrate such checks within its health endpoint or
-     *   make it available only as separate endpoint.
-     */
-    HealthCheckRegistry getHealthCheckRegistry();
-
-    /**
-     * Sets a {@link HealthCheckRegistry}.
-     */
-    void setHealthCheckRegistry(HealthCheckRegistry healthCheckRegistry);
-
 }
diff --git a/camel-api/src/main/java/org/apache/camel/Service.java b/camel-api/src/main/java/org/apache/camel/Service.java
index fd198e7..3efde1b 100644
--- a/camel-api/src/main/java/org/apache/camel/Service.java
+++ b/camel-api/src/main/java/org/apache/camel/Service.java
@@ -22,6 +22,12 @@ package org.apache.camel;
 public interface Service {
 
     /**
+     * Initialize the service
+     */
+    default void init() {
+    }
+
+    /**
      * Starts the service
      * 
      * @throws Exception is thrown if starting failed
diff --git a/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
index 25596bc..6a51a15 100644
--- a/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
+++ b/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
@@ -84,7 +84,7 @@ public final class HealthCheckHelper {
             Function<HealthCheck, Map<String, Object>> optionsSupplier,
             HealthCheckFilter filter) {
 
-        final HealthCheckRegistry registry = camelContext.getHealthCheckRegistry();
+        final HealthCheckRegistry registry = HealthCheckRegistry.get(camelContext);
         final HealthCheckService service = camelContext.hasService(HealthCheckService.class);
 
         if (service != null) {
@@ -123,7 +123,7 @@ public final class HealthCheckHelper {
      * @return an optional {@link HealthCheck.Result}.
      */
     public static Optional<HealthCheck.Result> query(CamelContext camelContext, String id, Map<String, Object> options) {
-        final HealthCheckRegistry registry = camelContext.getHealthCheckRegistry();
+        final HealthCheckRegistry registry = HealthCheckRegistry.get(camelContext);
         final HealthCheckService service = camelContext.hasService(HealthCheckService.class);
 
         if (service != null) {
@@ -148,7 +148,7 @@ public final class HealthCheckHelper {
      * @return an optional {@link HealthCheck.Result}.
      */
     public static Optional<HealthCheck.Result> invoke(CamelContext camelContext, String id, Map<String, Object> options) {
-        final HealthCheckRegistry registry = camelContext.getHealthCheckRegistry();
+        final HealthCheckRegistry registry = HealthCheckRegistry.get(camelContext);
         final HealthCheckService service = camelContext.hasService(HealthCheckService.class);
 
         if (service != null) {
diff --git a/camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
index dc523eb..6f389d1 100644
--- a/camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
+++ b/camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
@@ -20,6 +20,7 @@ import java.util.Collection;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.util.ObjectHelper;
 
@@ -77,4 +78,21 @@ public interface HealthCheckRegistry extends HealthCheckRepository, CamelContext
             .filter(check -> ObjectHelper.equal(check.getId(), id))
             .findFirst();
     }
+
+    /**
+     * Returns an optional {@link HealthCheckRegistry}, by default no registry is
+     * present and it must be explicit activated. Components can register/unregister
+     * health checks in response to life-cycle events (i.e. start/stop).
+     *
+     * This registry is not used by the camel context but it is up to the impl to
+     * properly use it, i.e.
+     *
+     * - a RouteController could use the registry to decide to restart a route
+     *   with failing health checks
+     * - spring boot could integrate such checks within its health endpoint or
+     *   make it available only as separate endpoint.
+     */
+    static HealthCheckRegistry get(CamelContext context) {
+        return context.getExtension(HealthCheckRegistry.class);
+    }
 }
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementInterceptStrategy.java
similarity index 54%
copy from components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
copy to camel-api/src/main/java/org/apache/camel/spi/ManagementInterceptStrategy.java
index b40be29..12deb3b 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementInterceptStrategy.java
@@ -14,35 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spring.management;
+package org.apache.camel.spi;
 
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.camel.AsyncProcessor;
+import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
+import org.apache.camel.Ordered;
+import org.apache.camel.Processor;
 
-import org.apache.camel.spi.CamelEvent;
-import org.apache.camel.support.EventNotifierSupport;
+public interface ManagementInterceptStrategy {
 
-public class MyEventNotifier extends EventNotifierSupport {
+    InstrumentationProcessor<?> createProcessor(NamedNode definition, Processor target);
 
-    private List<CamelEvent> events = new ArrayList<>();
+    InstrumentationProcessor<?> createProcessor(String type);
 
-    public void notify(CamelEvent event) throws Exception {
-        events.add(event);
-    }
+    interface InstrumentationProcessor<T> extends AsyncProcessor, Ordered {
 
-    public boolean isEnabled(CamelEvent event) {
-        return true;
-    }
+        T before(Exchange exchange) throws Exception;
 
-    public List<CamelEvent> getEvents() {
-        return events;
-    }
+        void after(Exchange exchange, T data) throws Exception;
 
-    @Override
-    protected void doStart() throws Exception {
-    }
+        void setProcessor(Processor processor);
 
-    @Override
-    protected void doStop() throws Exception {
+        void setCounter(Object object);
     }
 }
diff --git a/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
index 808ad10..7a75b33 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
@@ -38,6 +38,8 @@ import org.apache.camel.cluster.CamelClusterService;
  */
 public interface ManagementObjectNameStrategy {
 
+    ObjectName getObjectName(Object managedObject) throws MalformedObjectNameException;
+
     ObjectName getObjectNameForCamelContext(String managementName, String name) throws MalformedObjectNameException;
 
     ObjectName getObjectNameForCamelHealth(CamelContext context) throws MalformedObjectNameException;
@@ -62,7 +64,7 @@ public interface ManagementObjectNameStrategy {
 
     ObjectName getObjectNameForProducer(CamelContext context, Producer producer) throws MalformedObjectNameException;
 
-    ObjectName getObjectNameForTracer(CamelContext context, InterceptStrategy tracer) throws MalformedObjectNameException;
+    ObjectName getObjectNameForTracer(CamelContext context, Service tracer) throws MalformedObjectNameException;
 
     ObjectName getObjectNameForService(CamelContext context, Service service) throws MalformedObjectNameException;
 
diff --git a/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
index 49573c4..33ff9bc 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
@@ -43,28 +43,6 @@ public interface ManagementStrategy extends Service {
     void manageObject(Object managedObject) throws Exception;
 
     /**
-     * Adds a managed object allowing the ManagementStrategy implementation
-     * to record or expose the object as it sees fit.
-     *
-     * @param managedObject the managed object
-     * @param preferredName representing the preferred name, maybe a String, or a JMX ObjectName
-     * @throws Exception can be thrown if the object could not be added
-     */
-    void manageNamedObject(Object managedObject, Object preferredName) throws Exception;
-
-    /**
-     * Construct an object name, where either the object to be managed and/or
-     * a custom name component are provided
-     *
-     * @param managedObject the object to be managed
-     * @param customName a custom name component
-     * @param nameType the name type required
-     * @return an object name of the required type if supported, otherwise <tt>null</tt>
-     * @throws Exception can be thrown if the object name could not be created
-     */
-    <T> T getManagedObjectName(Object managedObject, String customName, Class<T> nameType) throws Exception;
-
-    /**
      * Removes the managed object.
      *
      * @param managedObject the managed object
@@ -73,21 +51,20 @@ public interface ManagementStrategy extends Service {
     void unmanageObject(Object managedObject) throws Exception;
 
     /**
-     * Removes a managed object by name.
+     * Determines if an object or name is managed.
      *
-     * @param name an object name previously created by this strategy.
-     * @throws Exception can be thrown if the object could not be removed
+     * @param managedObject the object to consider
+     * @return <tt>true</tt> if the given object is managed
      */
-    void unmanageNamedObject(Object name) throws Exception;
+    boolean isManaged(Object managedObject);
 
     /**
      * Determines if an object or name is managed.
      *
-     * @param managedObject the object to consider
      * @param name the name to consider
-     * @return <tt>true</tt> if the given object or name is managed
+     * @return <tt>true</tt> if the given name is managed
      */
-    boolean isManaged(Object managedObject, Object name);
+    boolean isManagedName(Object name);
 
     /**
      * Management events provide a single model for capturing information about execution points in the
@@ -108,13 +85,6 @@ public interface ManagementStrategy extends Service {
     List<EventNotifier> getEventNotifiers();
 
     /**
-     * Sets the list of event notifier to use.
-     *
-     * @param eventNotifier list of event notifiers
-     */
-    void setEventNotifiers(List<EventNotifier> eventNotifier);
-
-    /**
      * Adds the event notifier to use.
      * <p/>
      * Ensure the event notifier has been started if its a {@link Service}, as otherwise
diff --git a/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
index 10b7eac..8da17d4 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -138,14 +138,14 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
      *
      * @param interceptStrategy the managed intercept strategy
      */
-    void setManagedInterceptStrategy(InterceptStrategy interceptStrategy);
+    void setManagementInterceptStrategy(ManagementInterceptStrategy interceptStrategy);
 
     /**
      * Gets the special managed intercept strategy if any
      *
      * @return the managed intercept strategy, or <tt>null</tt> if not managed
      */
-    InterceptStrategy getManagedInterceptStrategy();
+    ManagementInterceptStrategy getManagementInterceptStrategy();
 
     /**
      * If this flag is true, {@link org.apache.camel.model.ProcessorDefinition#addRoutes(RouteContext, java.util.Collection)}
diff --git a/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java b/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
index ccbd8b4..be0f98c 100644
--- a/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
+++ b/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
@@ -36,20 +36,31 @@ import org.slf4j.LoggerFactory;
 public abstract class ServiceSupport implements StatefulService {
 
     protected static final int NEW = 0;
-    protected static final int STARTING = 1;
-    protected static final int STARTED = 2;
-    protected static final int SUSPENDING = 3;
-    protected static final int SUSPENDED = 4;
-    protected static final int STOPPING = 5;
-    protected static final int STOPPED = 6;
-    protected static final int SHUTTINGDOWN = 7;
-    protected static final int SHUTDOWN = 8;
-    protected static final int FAILED = 9;
+    protected static final int INITIALIZED = 1;
+    protected static final int STARTING = 2;
+    protected static final int STARTED = 3;
+    protected static final int SUSPENDING = 4;
+    protected static final int SUSPENDED = 5;
+    protected static final int STOPPING = 6;
+    protected static final int STOPPED = 7;
+    protected static final int SHUTTINGDOWN = 8;
+    protected static final int SHUTDOWN = 9;
+    protected static final int FAILED = 10;
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
     protected final Object lock = new Object();
     protected volatile int status = NEW;
 
+    public void init() {
+        synchronized (lock) {
+            if (status == NEW) {
+                log.trace("Initializing service");
+                doInit();
+                status = INITIALIZED;
+            }
+        }
+    }
+
     /**
      * <b>Important: </b> You should override the lifecycle methods that start with <tt>do</tt>, eg {@link #doStart()},
      * {@link #doStop()}, etc. where you implement your logic. The methods {@link #start()}, {@link #stop()} should
@@ -66,9 +77,10 @@ public abstract class ServiceSupport implements StatefulService {
                 log.trace("Service already starting");
                 return;
             }
-            status = STARTING;
-            log.trace("Starting service");
+            init();
             try {
+                status = STARTING;
+                log.trace("Starting service");
                 doStart();
                 status = STARTED;
                 log.trace("Service started");
@@ -217,7 +229,15 @@ public abstract class ServiceSupport implements StatefulService {
                 return ServiceStatus.Stopped;
         }
     }
-    
+
+    public boolean isNew() {
+        return status == NEW;
+    }
+
+    public boolean isInit() {
+        return status == INITIALIZED;
+    }
+
     @Override
     public boolean isStarted() {
         return status == STARTED;
@@ -279,6 +299,13 @@ public abstract class ServiceSupport implements StatefulService {
     }
 
     /**
+     * Initialize the service.
+     * This method will only be called once before starting.
+     */
+    protected void doInit() {
+    }
+
+    /**
      * Implementations override this method to support customized start/stop.
      * <p/>
      * <b>Important: </b> See {@link #doStop()} for more details.
diff --git a/camel-core/src/main/docs/eips/pollEnrich-eip.adoc b/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
index 9207655..3d63d86 100644
--- a/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
+++ b/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
@@ -49,7 +49,7 @@ The Poll Enrich EIP supports 7 options which are listed below:
 | *strategyMethodName* | This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. |  | String
 | *strategyMethodAllowNull* | If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy. | false | Boolean
 | *aggregateOnException* | If this option is false then the aggregate method is not used if there was an exception thrown while trying to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what to do if there was an exception in the aggregate method. For example to suppress the exception or set a custom message body etc. | false | Boolean
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ConsumerCache which is used to cache and reuse consumers when uris are reused. |  | Integer
+| *cacheSize* | Sets the maximum size used by the DefaultConsumerCache which is used to cache and reuse consumers when uris are reused. |  | Integer
 | *ignoreInvalidEndpoint* | Ignore the invalidate endpoint exception when try to create a producer with that endpoint | false | Boolean
 |===
 // eip options: END
diff --git a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
index cbf4f2c..3f02b31 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
@@ -1411,10 +1411,6 @@ public class NotifyBuilder {
             setIgnoreRouteEvents(true);
             setIgnoreServiceEvents(true);
         }
-
-        @Override
-        protected void doStop() throws Exception {
-        }
     }
 
     private enum EventOperation {
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
index 20aa336..b93fefd 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
@@ -125,7 +125,7 @@ public class DefaultComponentVerifierExtension implements ComponentVerifierExten
         }
 
         // Grab the runtime catalog to check parameters
-        RuntimeCamelCatalog catalog = camelContext.getRuntimeCamelCatalog();
+        RuntimeCamelCatalog catalog = camelContext.getExtension(RuntimeCamelCatalog.class);
 
         // Convert from Map<String, Object> to  Map<String, String> as required
         // by the Camel Catalog
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index 7ada755..a3088c7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -43,6 +43,7 @@ import org.apache.camel.Message;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.ProcessorBuilder;
 import org.apache.camel.impl.InterceptSendToEndpoint;
 import org.apache.camel.spi.BrowsableEndpoint;
@@ -133,6 +134,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
     private boolean copyOnExchange = true;
 
     public MockEndpoint() {
+        init();
     }
 
     public MockEndpoint(String endpointUri, Component component) {
@@ -294,7 +296,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
     }
 
     public void reset() {
-        init();
+        doInit();
     }
 
 
@@ -1274,7 +1276,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
 
     // Implementation methods
     // -------------------------------------------------------------------------
-    private void init() {
+    protected void doInit() {
         expectedCount = -1;
         counter = 0;
         defaultProcessor = null;
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
index 649692d..079b646 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
@@ -85,7 +85,7 @@ public class RestComponentVerifierExtension extends DefaultComponentVerifierExte
 
                 if (extension.isPresent()) {
                     final ComponentVerifierExtension verifier = extension.get();
-                    final RuntimeCamelCatalog catalog = getCamelContext().getRuntimeCamelCatalog();
+                    final RuntimeCamelCatalog catalog = getCamelContext().getExtension(RuntimeCamelCatalog.class);
                     final String json = catalog.componentJSonSchema("rest");
                     final Map<String, Object> restParameters = new HashMap<>(parameters);
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index a68ec91..e8edd43 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -42,9 +42,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
+import java.util.function.Supplier;
 
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
 import javax.naming.Context;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
@@ -83,9 +82,6 @@ import org.apache.camel.Suspendable;
 import org.apache.camel.SuspendableService;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.VetoCamelContextStartException;
-import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
-import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
-import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.DefaultFluentProducerTemplate;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderSupport;
@@ -96,10 +92,6 @@ import org.apache.camel.impl.converter.DefaultTypeConverter;
 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.management.DefaultManagementMBeanAssembler;
-import org.apache.camel.management.DefaultManagementStrategy;
-import org.apache.camel.management.JmxSystemPropertyKeys;
-import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.management.ManagementStrategyFactory;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.FromDefinition;
@@ -116,8 +108,6 @@ import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
 import org.apache.camel.model.validator.ValidatorDefinition;
-import org.apache.camel.processor.interceptor.BacklogDebugger;
-import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.Debug;
 import org.apache.camel.processor.interceptor.HandleFault;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
@@ -199,13 +189,13 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
 /**
  * Represents the context used to configure routes and the policies to use.
  */
-public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, ManagedCamelContext, Suspendable {
+public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, Suspendable {
 
     private String version;
     private final AtomicBoolean vetoStated = new AtomicBoolean();
     private JAXBContext jaxbContext;
-    private CamelContextNameStrategy nameStrategy = createCamelContextNameStrategy();
-    private ManagementNameStrategy managementNameStrategy = createManagementNameStrategy();
+    private CamelContextNameStrategy nameStrategy;
+    private ManagementNameStrategy managementNameStrategy;
     private String managementName;
     private ClassLoader applicationContextClassLoader;
     private EndpointRegistry<EndpointKey> endpoints;
@@ -236,7 +226,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private List<InterceptStrategy> interceptStrategies = new ArrayList<>();
     private List<RoutePolicyFactory> routePolicyFactories = new ArrayList<>();
     private Set<LogListener> logListeners = new LinkedHashSet<>();
-    private HeadersMapFactory headersMapFactory = createHeadersMapFactory();
+    private HeadersMapFactory headersMapFactory;
     // special flags to control the first startup which can are special
     private volatile boolean firstStartDone;
     private volatile boolean doNotStartRoutesOnFirstStart;
@@ -274,26 +264,24 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private PackageScanClassResolver packageScanClassResolver;
     // we use a capacity of 100 per endpoint, so for the same endpoint we have at most 100 producers in the pool
     // so if we have 6 endpoints in the pool, we can have 6 x 100 producers in total
-    private ServicePool<Producer> producerServicePool = createProducerServicePool();
-    private ServicePool<PollingConsumer> pollingConsumerServicePool = createPollingConsumerServicePool();
-    private NodeIdFactory nodeIdFactory = createNodeIdFactory();
-    private ProcessorFactory processorFactory = createProcessorFactory();
-    private MessageHistoryFactory messageHistoryFactory = createMessageHistoryFactory();
-    private InterceptStrategy defaultBacklogTracer;
-    private InterceptStrategy defaultBacklogDebugger;
-    private InflightRepository inflightRepository = createInflightRepository();
-    private AsyncProcessorAwaitManager asyncProcessorAwaitManager = createAsyncProcessorAwaitManager();
+    private ServicePool<Producer> producerServicePool;
+    private ServicePool<PollingConsumer> pollingConsumerServicePool;
+    private NodeIdFactory nodeIdFactory;
+    private ProcessorFactory processorFactory;
+    private MessageHistoryFactory messageHistoryFactory;
+    private InflightRepository inflightRepository;
+    private AsyncProcessorAwaitManager asyncProcessorAwaitManager;
     private RuntimeEndpointRegistry runtimeEndpointRegistry;
     private final List<RouteStartupOrder> routeStartupOrder = new ArrayList<>();
     // start auto assigning route ids using numbering 1000 and upwards
     private int defaultRouteStartupOrder = 1000;
-    private ShutdownStrategy shutdownStrategy = createShutdownStrategy();
+    private ShutdownStrategy shutdownStrategy;
     private ShutdownRoute shutdownRoute = ShutdownRoute.Default;
     private ShutdownRunningTask shutdownRunningTask = ShutdownRunningTask.CompleteCurrentTaskOnly;
     private ExecutorServiceManager executorServiceManager;
     private Debugger debugger;
-    private UuidGenerator uuidGenerator = createDefaultUuidGenerator();
-    private UnitOfWorkFactory unitOfWorkFactory = createUnitOfWorkFactory();
+    private UuidGenerator uuidGenerator;
+    private UnitOfWorkFactory unitOfWorkFactory;
     private final StopWatch stopWatch = new StopWatch(false);
     private Date startDate;
     private ModelJAXBContextFactory modelJAXBContextFactory;
@@ -302,7 +290,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     private List<ValidatorDefinition> validators = new ArrayList<>();
     private ValidatorRegistry<ValidatorKey> validatorRegistry;
     private ReloadStrategy reloadStrategy;
-    private final RuntimeCamelCatalog runtimeCamelCatalog = createRuntimeCamelCatalog();
     private SSLContextParameters sslContextParameters;
     private final ThreadLocal<Set<String>> componentsInCreation = new ThreadLocal<Set<String>>() {
         @Override
@@ -311,8 +298,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         }
     };
     private RouteController routeController = createRouteController();
-    private HealthCheckRegistry healthCheckRegistry = createHealthCheckRegistry();
-
+    private Map<Class<?>, Object> extensions = new ConcurrentHashMap<>();
 
     /**
      * Creates the {@link CamelContext} using {@link JndiRegistry} as registry,
@@ -321,25 +307,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
      * Use one of the other constructors to force use an explicit registry / JNDI.
      */
     public DefaultCamelContext() {
-        this.executorServiceManager = createExecutorServiceManager();
-
-        // create a provisional (temporary) endpoint registry at first since end users may access endpoints before CamelContext is started
-        // we will later transfer the endpoints to the actual DefaultEndpointRegistry later, but we do this to starup Camel faster.
-        this.endpoints = new ProvisionalEndpointRegistry();
-
-        // add the defer service startup listener
-        this.startupListeners.add(deferStartupListener);
-
-        packageScanClassResolver = createPackageScanClassResolver();
-
-        // setup management strategy first since end users may use it to add event notifiers
-        // using the management strategy before the CamelContext has been started
-        this.managementStrategy = createManagementStrategy();
-        this.managementMBeanAssembler = createManagementMBeanAssembler();
-
-        // Call all registered trackers with this context
-        // Note, this may use a partially constructed object
-        CamelContextTracker.notifyContextCreated(this);
+        this(true);
     }
 
     /**
@@ -362,10 +330,110 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         setRegistry(registry);
     }
 
+    public DefaultCamelContext(boolean init) {
+        // create a provisional (temporary) endpoint registry at first since end users may access endpoints before CamelContext is started
+        // we will later transfer the endpoints to the actual DefaultEndpointRegistry later, but we do this to starup Camel faster.
+        this.endpoints = new ProvisionalEndpointRegistry();
+
+        // add the defer service startup listener
+        this.startupListeners.add(deferStartupListener);
+
+        if (init) {
+            init();
+        }
+    }
+
+    public void doInit() {
+        if (nameStrategy == null) {
+            nameStrategy = createCamelContextNameStrategy();
+        }
+        if (managementNameStrategy == null) {
+            managementNameStrategy = createManagementNameStrategy();
+        }
+        if (headersMapFactory == null) {
+            headersMapFactory = createHeadersMapFactory();
+        }
+        if (classResolver == null) {
+            classResolver = createClassResolver();
+        }
+        if (producerServicePool == null) {
+            producerServicePool = createProducerServicePool();
+        }
+        if (pollingConsumerServicePool == null) {
+            pollingConsumerServicePool = createPollingConsumerServicePool();
+        }
+        if (nodeIdFactory == null){
+            nodeIdFactory = createNodeIdFactory();
+        }
+        if (processorFactory == null) {
+            processorFactory = createProcessorFactory();
+        }
+        if (messageHistoryFactory == null) {
+            messageHistoryFactory = createMessageHistoryFactory();
+        }
+        if (inflightRepository == null) {
+            inflightRepository = createInflightRepository();
+        }
+        if (asyncProcessorAwaitManager == null) {
+            asyncProcessorAwaitManager = createAsyncProcessorAwaitManager();
+        }
+        if (shutdownStrategy == null) {
+            shutdownStrategy = createShutdownStrategy();
+        }
+        if (uuidGenerator == null) {
+            uuidGenerator = createDefaultUuidGenerator();
+        }
+        if (unitOfWorkFactory == null) {
+            unitOfWorkFactory = createUnitOfWorkFactory();
+        }
+        if (executorServiceManager == null) {
+            executorServiceManager = createExecutorServiceManager();
+        }
+        if (packageScanClassResolver == null) {
+            packageScanClassResolver = createPackageScanClassResolver();
+        }
+        if (managementStrategy == null) {
+            // setup management strategy first since end users may use it to add event notifiers
+            // using the management strategy before the CamelContext has been started
+            managementStrategy = createManagementStrategy();
+        }
+
+        setDefaultExtension(HealthCheckRegistry.class, this::createHealthCheckRegistry);
+        setDefaultExtension(RuntimeCamelCatalog.class, this::createRuntimeCamelCatalog);
+
+        // Call all registered trackers with this context
+        // Note, this may use a partially constructed object
+        CamelContextTracker.notifyContextCreated(this);
+
+    }
+
     public <T extends CamelContext> T adapt(Class<T> type) {
         return type.cast(this);
     }
 
+    @Override
+    public <T> T getExtension(Class<T> type) {
+        Object extension = extensions.get(type);
+        if (extension instanceof Supplier) {
+            setExtension(type, ((Supplier<T>) extension).get());
+        }
+        return type.cast(extensions.get(type));
+    }
+
+    @Override
+    public <T> void setExtension(Class<T> type, T module) {
+        try {
+            addService(module, true, true);
+            extensions.put(type, module);
+        } catch (Exception e) {
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
+        }
+    }
+
+    public <T> void setDefaultExtension(Class<T> type, Supplier<T> module) {
+        extensions.putIfAbsent(type, module);
+    }
+
     public boolean isVetoStarted() {
         return vetoStated.get();
     }
@@ -442,6 +510,8 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     public Component getComponent(String name, boolean autoCreateComponents, boolean autoStart) {
+        init();
+
         // Check if the named component is already being created, that would mean
         // that the initComponent has triggered a new getComponent
         if (componentsInCreation.get().contains(name)) {
@@ -655,6 +725,8 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     public Endpoint getEndpoint(String uri) {
+        init();
+
         StringHelper.notEmpty(uri, "uri");
 
         log.trace("Getting endpoint with uri: {}", uri);
@@ -914,62 +986,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         return null;
     }
 
-    public <T extends ManagedProcessorMBean> T getManagedProcessor(String id, Class<T> type) {
-        // jmx must be enabled
-        if (getManagementStrategy().getManagementAgent() == null) {
-            return null;
-        }
-
-        Processor processor = getProcessor(id);
-        ProcessorDefinition def = getProcessorDefinition(id);
-
-        // processor may be null if its anonymous inner class or as lambda
-        if (def != null) {
-            try {
-                ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForProcessor(this, processor, def);
-                return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
-            } catch (MalformedObjectNameException e) {
-                throw RuntimeCamelException.wrapRuntimeCamelException(e);
-            }
-        }
-
-        return null;
-    }
-
-    public <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type) {
-        // jmx must be enabled
-        if (getManagementStrategy().getManagementAgent() == null) {
-            return null;
-        }
-
-        Route route = getRoute(routeId);
-
-        if (route != null) {
-            try {
-                ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForRoute(route);
-                return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
-            } catch (MalformedObjectNameException e) {
-                throw RuntimeCamelException.wrapRuntimeCamelException(e);
-            }
-        }
-
-        return null;
-    }
-
-    public ManagedCamelContextMBean getManagedCamelContext() {
-        // jmx must be enabled
-        if (getManagementStrategy().getManagementAgent() == null) {
-            return null;
-        }
-
-        try {
-            ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(this);
-            return getManagementStrategy().getManagementAgent().newProxyClient(on, ManagedCamelContextMBean.class);
-        } catch (MalformedObjectNameException e) {
-            throw RuntimeCamelException.wrapRuntimeCamelException(e);
-        }
-    }
-
     public ProcessorDefinition getProcessorDefinition(String id) {
         for (RouteDefinition route : getRouteDefinitions()) {
             Iterator<ProcessorDefinition> it = ProcessorDefinitionHelper.filterTypeInOutputs(route.getOutputs(), ProcessorDefinition.class);
@@ -1004,6 +1020,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     public void addRoutes(final RoutesBuilder builder) throws Exception {
+        init();
         log.debug("Adding routes from builder: {}", builder);
         doWithDefinedClassLoader(() -> builder.addRoutesToCamelContext(DefaultCamelContext.this));
     }
@@ -2139,7 +2156,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             Map<String, String[]> uriOptions = new LinkedHashMap<>();
 
             // insert values from uri
-            Map<String, Object> options = new HashMap<>(getRuntimeCamelCatalog().endpointProperties(uri));
+            Map<String, Object> options = new HashMap<>(getExtension(RuntimeCamelCatalog.class).endpointProperties(uri));
 
             // extract consumer. prefix options
             Map<String, Object> consumerOptions = IntrospectionSupport.extractProperties(options, "consumer.");
@@ -3061,6 +3078,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     @Override
     public void start() throws Exception {
         try (MDCHelper mdcHelper = new MDCHelper()) {
+            init();
             vetoStated.set(false);
             startDate = new Date();
             stopWatch.restart();
@@ -3281,8 +3299,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
                 for (LifecycleStrategy strategy : lifecycleStrategies) {
                     strategy.onServiceAdd(this, service, null);
                 }
-            }
-            if (notifier instanceof Service) {
                 startService((Service) notifier);
             }
         }
@@ -3307,12 +3323,14 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         addService(packageScanClassResolver, true, true);
         addService(restRegistry, true, true);
         addService(messageHistoryFactory, true, true);
-        addService(runtimeCamelCatalog, true, true);
         if (reloadStrategy != null) {
             log.info("Using ReloadStrategy: {}", reloadStrategy);
             addService(reloadStrategy, true, true);
         }
 
+        // Start runtime catalog
+        getExtension(RuntimeCamelCatalog.class);
+
         // Initialize declarative transformer/validator registry
         transformerRegistry = createTransformerRegistry(transformers);
         addService(transformerRegistry, true, true);
@@ -4048,13 +4066,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     /**
      * Lazily create a default implementation
      */
-    protected ManagementMBeanAssembler createManagementMBeanAssembler() {
-        return new DefaultManagementMBeanAssembler(this);
-    }
-
-    /**
-     * Lazily create a default implementation
-     */
     protected ComponentResolver createComponentResolver() {
         return new DefaultComponentResolver();
     }
@@ -4229,35 +4240,16 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         this.managementStrategy = managementStrategy;
     }
 
-    public InterceptStrategy getDefaultBacklogTracer() {
-        if (defaultBacklogTracer == null) {
-            defaultBacklogTracer = BacklogTracer.createTracer(this);
-        }
-        return defaultBacklogTracer;
-    }
-
-    public void setDefaultBacklogTracer(InterceptStrategy backlogTracer) {
-        this.defaultBacklogTracer = backlogTracer;
-    }
-
-    public InterceptStrategy getDefaultBacklogDebugger() {
-        if (defaultBacklogDebugger == null) {
-            defaultBacklogDebugger = new BacklogDebugger(this);
-        }
-        return defaultBacklogDebugger;
-    }
-
-    public void setDefaultBacklogDebugger(InterceptStrategy defaultBacklogDebugger) {
-        this.defaultBacklogDebugger = defaultBacklogDebugger;
-    }
-
     public void disableJMX() {
-        if (isStarting() || isStarted()) {
+        if (isNew()) {
+            disableJMX = true;
+        } else if (isInit()) {
+            disableJMX = true;
+            managementStrategy = createManagementStrategy();
+            lifecycleStrategies.clear();
+        } else {
             throw new IllegalStateException("Disabling JMX can only be done when CamelContext has not been started");
         }
-        managementStrategy = new DefaultManagementStrategy(this);
-        // must clear lifecycle strategies as we add DefaultManagementLifecycleStrategy by default for JMX support
-        lifecycleStrategies.clear();
     }
 
     public InflightRepository getInflightRepository() {
@@ -4544,11 +4536,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     @Override
-    public RuntimeCamelCatalog getRuntimeCamelCatalog() {
-        return runtimeCamelCatalog;
-    }
-
-    @Override
     public void setSSLContextParameters(SSLContextParameters sslContextParameters) {
         this.sslContextParameters = sslContextParameters;
     }
@@ -4573,7 +4560,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
     }
 
     protected ManagementStrategy createManagementStrategy() {
-        return new ManagementStrategyFactory().create(this, disableJMX || Boolean.getBoolean(JmxSystemPropertyKeys.DISABLED));
+        return new ManagementStrategyFactory().create(this, disableJMX);
     }
 
     /**
@@ -4628,18 +4615,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         }
     }
 
-    @Override
-    public HealthCheckRegistry getHealthCheckRegistry() {
-        return healthCheckRegistry;
-    }
-
-    /**
-     * Sets a {@link HealthCheckRegistry}.
-     */
-    public void setHealthCheckRegistry(HealthCheckRegistry healthCheckRegistry) {
-        this.healthCheckRegistry = ObjectHelper.notNull(healthCheckRegistry, "HealthCheckRegistry");
-    }
-
     protected NodeIdFactory createNodeIdFactory() {
         return new DefaultNodeIdFactory();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
index 1a8ea52..567bda0 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
@@ -382,16 +382,6 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeEvent;
         }
-
-        @Override
-        protected void doStart() throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            // noop
-        }
     }
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategy.java
similarity index 84%
rename from camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
rename to camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategy.java
index b2f1a93..cb4a6b1 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementStrategy.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl;
 
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -33,8 +33,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A default management strategy that does <b>not</b> manage.
@@ -46,12 +44,11 @@ import org.slf4j.LoggerFactory;
  * This class can also be used to extend your custom management implement. In fact the JMX capable
  * provided by Camel extends this class as well.
  *
- * @see ManagedManagementStrategy
+ * @see org.apache.camel.management.ManagedManagementStrategy
  */
 public class DefaultManagementStrategy extends ServiceSupport implements ManagementStrategy, CamelContextAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultManagementStrategy.class);
-    private List<EventNotifier> eventNotifiers = new CopyOnWriteArrayList<>();
+    private final List<EventNotifier> eventNotifiers = new CopyOnWriteArrayList<>();
     private EventFactory eventFactory = new DefaultEventFactory();
     private ManagementObjectNameStrategy managementObjectNameStrategy;
     private ManagementObjectStrategy managementObjectStrategy;
@@ -65,6 +62,11 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         this.camelContext = camelContext;
     }
 
+    public DefaultManagementStrategy(CamelContext camelContext, ManagementAgent managementAgent) {
+        this.camelContext = camelContext;
+        this.managementAgent = managementAgent;
+    }
+
     public List<EventNotifier> getEventNotifiers() {
         return eventNotifiers;
     }
@@ -77,10 +79,6 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         return eventNotifiers.remove(eventNotifier);
     }
 
-    public void setEventNotifiers(List<EventNotifier> eventNotifiers) {
-        this.eventNotifiers = eventNotifiers;
-    }
-
     public EventFactory getEventFactory() {
         return eventFactory;
     }
@@ -91,7 +89,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
 
     public ManagementObjectNameStrategy getManagementObjectNameStrategy() {
         if (managementObjectNameStrategy == null) {
-            managementObjectNameStrategy = new DefaultManagementObjectNameStrategy();
+            managementObjectNameStrategy = createManagementObjectNameStrategy(null);
         }
         return managementObjectNameStrategy;
     }
@@ -102,7 +100,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
 
     public ManagementObjectStrategy getManagementObjectStrategy() {
         if (managementObjectStrategy == null) {
-            managementObjectStrategy = new DefaultManagementObjectStrategy();
+            managementObjectStrategy = createManagementObjectStrategy();
         }
         return managementObjectStrategy;
     }
@@ -127,24 +125,16 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         // noop
     }
 
-    public void manageNamedObject(Object managedObject, Object preferredName) throws Exception {
-        // noop
-    }
-
-    public <T> T getManagedObjectName(Object managedObject, String customName, Class<T> nameType) throws Exception {
-        // noop
-        return null;
-    }
-
     public void unmanageObject(Object managedObject) throws Exception {
         // noop
     }
 
-    public void unmanageNamedObject(Object name) throws Exception {
+    public boolean isManaged(Object managedObject) {
         // noop
+        return false;
     }
 
-    public boolean isManaged(Object managedObject, Object name) {
+    public boolean isManagedName(Object name) {
         // noop
         return false;
     }
@@ -168,7 +158,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
     }
 
     protected void doStart() throws Exception {
-        LOG.info("JMX is disabled");
+        log.info("JMX is disabled");
         doStartManagementStrategy();
     }
 
@@ -192,7 +182,8 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
             ServiceHelper.startService(managementAgent);
             // set the naming strategy using the domain name from the agent
             if (managementObjectNameStrategy == null) {
-                setManagementObjectNameStrategy(new DefaultManagementObjectNameStrategy(managementAgent.getMBeanObjectDomainName()));
+                String domain = managementAgent.getMBeanObjectDomainName();
+                managementObjectNameStrategy = createManagementObjectNameStrategy(domain);
             }
         }
         if (managementObjectNameStrategy instanceof CamelContextAware) {
@@ -204,4 +195,12 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         ServiceHelper.stopService(managementAgent, eventNotifiers);
     }
 
+    protected ManagementObjectNameStrategy createManagementObjectNameStrategy(String domain) {
+        return null;
+    }
+
+    protected ManagementObjectStrategy createManagementObjectStrategy() {
+        return null;
+    }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index cca205f..95e334f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -36,10 +36,12 @@ import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.PropertyDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.processor.CamelInternalProcessor;
+import org.apache.camel.processor.CamelInternalProcessorAdvice;
 import org.apache.camel.processor.ContractAdvice;
 import org.apache.camel.processor.Pipeline;
 import org.apache.camel.spi.Contract;
 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;
@@ -58,7 +60,7 @@ public class DefaultRouteContext implements RouteContext {
     private final List<Processor> eventDrivenProcessors = new ArrayList<>();
     private CamelContext camelContext;
     private List<InterceptStrategy> interceptStrategies = new ArrayList<>();
-    private InterceptStrategy managedInterceptStrategy;
+    private ManagementInterceptStrategy managementInterceptStrategy;
     private boolean routeAdded;
     private Boolean trace;
     private Boolean messageHistory;
@@ -191,7 +193,9 @@ public class DefaultRouteContext implements RouteContext {
             internal.addAdvice(new CamelInternalProcessor.RouteInflightRepositoryAdvice(camelContext.getInflightRepository(), routeId));
 
             // wrap in JMX instrumentation processor that is used for performance stats
-            internal.addAdvice(new CamelInternalProcessor.InstrumentationAdvice("route"));
+            if (managementInterceptStrategy != null) {
+                internal.addAdvice(CamelInternalProcessorAdvice.wrap(managementInterceptStrategy.createProcessor("route")));
+            }
 
             // wrap in route lifecycle
             internal.addAdvice(new CamelInternalProcessor.RouteLifecycleAdvice());
@@ -300,12 +304,12 @@ public class DefaultRouteContext implements RouteContext {
         getInterceptStrategies().add(interceptStrategy);
     }
 
-    public void setManagedInterceptStrategy(InterceptStrategy interceptStrategy) {
-        this.managedInterceptStrategy = interceptStrategy;
+    public void setManagementInterceptStrategy(ManagementInterceptStrategy interceptStrategy) {
+        this.managementInterceptStrategy = interceptStrategy;
     }
 
-    public InterceptStrategy getManagedInterceptStrategy() {
-        return managedInterceptStrategy;
+    public ManagementInterceptStrategy getManagementInterceptStrategy() {
+        return managementInterceptStrategy;
     }
 
     public boolean isRouteAdded() {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
index 3aefd97..80adbf7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
@@ -84,7 +84,9 @@ public class ServicePool<S extends Service> extends ServiceSupport implements No
     protected void onEvict(S s) {
         Endpoint e = getEndpoint.apply(s);
         Pool<S> p = pool.get(e);
-        p.evict(s);
+        if (p != null) {
+            p.evict(s);
+        }
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckService.java b/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckService.java
index df60d94..85e9f65 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckService.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/health/DefaultHealthCheckService.java
@@ -176,7 +176,7 @@ public final class DefaultHealthCheckService extends ServiceSupport implements H
             future.cancel(true);
         }
         if (registry == null) {
-            registry = camelContext.getHealthCheckRegistry();
+            registry = HealthCheckRegistry.get(camelContext);
         }
 
         if (ObjectHelper.isNotEmpty(registry) && ObjectHelper.isEmpty(future)) {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java b/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
index a25e1a1..f62816c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
@@ -19,7 +19,6 @@ package org.apache.camel.impl.health;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -28,7 +27,7 @@ import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.health.HealthCheckResultBuilder;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -88,14 +87,10 @@ public class RouteHealthCheck extends AbstractHealthCheck {
             if (builder.state() != State.DOWN) {
                 // If JMX is enabled, use the Managed MBeans to determine route
                 // health based on performance counters.
-                ManagedRouteMBean managedRoute = context.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class);
+                ManagedRouteMBean managedRoute = context.getExtension(ManagedCamelContext.class).getManagedRoute(route.getId());
 
                 if (managedRoute != null && !evaluators.isEmpty()) {
-                    Map<String, Object> details = new HashMap<>();
-
-                    for (PerformanceCounterEvaluator evaluator : evaluators) {
-                        details.clear();
-
+                    for (PerformanceCounterEvaluator<ManagedRouteMBean> evaluator : evaluators) {
                         evaluator.test(managedRoute, builder, options);
 
                         if (builder.state() == State.DOWN) {
diff --git a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
index ed34e96..4d94157 100644
--- a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
@@ -580,7 +580,7 @@ public abstract class MainSupport extends ServiceSupport {
             }
 
             // skip already managed services, for example if a route has been restarted
-            if (camelContext.getManagementStrategy().isManaged(managedObject, null)) {
+            if (camelContext.getManagementStrategy().isManaged(managedObject)) {
                 LOG.trace("The service is already managed: {}", reload);
                 return;
             }
diff --git a/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java b/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java
similarity index 87%
rename from camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
rename to camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java
index 33211fb..538dd0c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationProcessor.java
@@ -17,15 +17,14 @@
 package org.apache.camel.management;
 
 import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Exchange;
 import org.apache.camel.Ordered;
 import org.apache.camel.Processor;
 import org.apache.camel.management.mbean.ManagedPerformanceCounter;
-import org.apache.camel.processor.CamelInternalProcessorAdvice;
 import org.apache.camel.processor.DelegateAsyncProcessor;
+import org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor;
 import org.apache.camel.util.StopWatch;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * JMX enabled processor or advice that uses the {@link org.apache.camel.management.mbean.ManagedCounter} for instrumenting
@@ -34,17 +33,22 @@ import org.slf4j.LoggerFactory;
  * This implementation has been optimised to work in dual mode, either as an advice or as a processor.
  * The former is faster and the latter is required when the error handler has been configured with redelivery enabled.
  */
-public class InstrumentationProcessor extends DelegateAsyncProcessor implements CamelInternalProcessorAdvice<StopWatch>, Ordered {
+public class DefaultInstrumentationProcessor extends DelegateAsyncProcessor
+        implements InstrumentationProcessor<StopWatch>, Ordered {
 
-    private static final Logger LOG = LoggerFactory.getLogger(InstrumentationProcessor.class);
     private PerformanceCounter counter;
     private String type;
 
-    public InstrumentationProcessor(String type, Processor processor) {
+    public DefaultInstrumentationProcessor(String type, Processor processor) {
         super(processor);
         this.type = type;
     }
 
+    public DefaultInstrumentationProcessor(String type) {
+        super((AsyncProcessor) null);
+        this.type = type;
+    }
+
     public void setCounter(Object counter) {
         ManagedPerformanceCounter mpc = null;
         if (counter instanceof ManagedPerformanceCounter) {
@@ -85,7 +89,7 @@ public class InstrumentationProcessor extends DelegateAsyncProcessor implements
 
             @Override
             public String toString() {
-                return InstrumentationProcessor.this.toString();
+                return DefaultInstrumentationProcessor.this.toString();
             }
         });
     }
@@ -95,8 +99,8 @@ public class InstrumentationProcessor extends DelegateAsyncProcessor implements
     }
 
     protected void recordTime(Exchange exchange, long duration) {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("{}Recording duration: {} millis for exchange: {}", type != null ? type + ": " : "", duration, exchange);
+        if (log.isTraceEnabled()) {
+            log.trace("{}Recording duration: {} millis for exchange: {}", type != null ? type + ": " : "", duration, exchange);
         }
 
         if (!exchange.isFailed() && exchange.getException() == null) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
index c830b1e..fac1cee 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
@@ -392,6 +392,9 @@ public class DefaultManagementAgent extends ServiceSupport implements Management
 
         // ensure assembler is started
         assembler = camelContext.getManagementMBeanAssembler();
+        if (assembler == null) {
+            assembler = new DefaultManagementMBeanAssembler(camelContext);
+        }
         ServiceHelper.startService(assembler);
 
         LOG.debug("Starting JMX agent on server: {}", getMBeanServer());
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 9a006b4..3ec406e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -49,6 +49,7 @@ import org.apache.camel.StartupListener;
 import org.apache.camel.TimerListener;
 import org.apache.camel.VetoCamelContextStartException;
 import org.apache.camel.cluster.CamelClusterService;
+import org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor;
 import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.apache.camel.throttling.ThrottlingInflightRoutePolicy;
 import org.apache.camel.management.mbean.ManagedAsyncProcessorAwaitManager;
@@ -158,7 +159,11 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             boolean done = false;
             while (!done) {
                 ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(managementName, name);
+<<<<<<< HEAD
                 boolean exists = getManagementStrategy().isManaged(mc, on);
+=======
+                boolean exists = getManagementStrategy().isManagedName(on);
+>>>>>>> db1604e8d06... wip
                 if (!exists) {
                     done = true;
                 } else {
@@ -248,7 +253,11 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             // compute the next name
             newName = strategy.getNextName();
             ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForCamelContext(newName, name);
+<<<<<<< HEAD
             done = !getManagementStrategy().isManaged(mc, on);
+=======
+            done = !getManagementStrategy().isManagedName(on);
+>>>>>>> db1604e8d06... wip
             if (log.isTraceEnabled()) {
                 log.trace("Using name: {} in ObjectName[{}] exists? {}", name, on, done);
             }
@@ -294,7 +303,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         try {
             Object mc = getManagementObjectStrategy().getManagedObjectForRouteController(context);
             // the context could have been removed already
-            if (getManagementStrategy().isManaged(mc, null)) {
+            if (getManagementStrategy().isManaged(mc)) {
                 unmanageObject(mc);
             }
         } catch (Exception e) {
@@ -304,7 +313,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         try {
             Object mc = getManagementObjectStrategy().getManagedObjectForCamelHealth(context);
             // the context could have been removed already
-            if (getManagementStrategy().isManaged(mc, null)) {
+            if (getManagementStrategy().isManaged(mc)) {
                 unmanageObject(mc);
             }
         } catch (Exception e) {
@@ -314,7 +323,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         try {
             Object mc = getManagementObjectStrategy().getManagedObjectForCamelContext(context);
             // the context could have been removed already
-            if (getManagementStrategy().isManaged(mc, null)) {
+            if (getManagementStrategy().isManaged(mc)) {
                 unmanageObject(mc);
             }
         } catch (Exception e) {
@@ -425,7 +434,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         }
 
         // skip already managed services, for example if a route has been restarted
-        if (getManagementStrategy().isManaged(managedObject, null)) {
+        if (getManagementStrategy().isManaged(managedObject)) {
             log.trace("The service is already managed: {}", service);
             return;
         }
@@ -589,7 +598,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
             Object mr = getManagementObjectStrategy().getManagedObjectForRoute(camelContext, route);
 
             // skip already managed routes, for example if the route has been restarted
-            if (getManagementStrategy().isManaged(mr, null)) {
+            if (getManagementStrategy().isManaged(mr)) {
                 log.trace("The route is already managed: {}", route);
                 continue;
             }
@@ -601,7 +610,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
                 CamelInternalProcessor internal = (CamelInternalProcessor) processor;
                 ManagedRoute routeMBean = (ManagedRoute) mr;
 
-                CamelInternalProcessor.InstrumentationAdvice task = internal.getAdvice(CamelInternalProcessor.InstrumentationAdvice.class);
+                DefaultInstrumentationProcessor task = internal.getAdvice(DefaultInstrumentationProcessor.class);
                 if (task != null) {
                     // we need to wrap the counter with the camel context so we get stats updated on the context as well
                     if (camelContextMBean != null) {
@@ -662,7 +671,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         Object me = getManagementObjectStrategy().getManagedObjectForErrorHandler(camelContext, routeContext, errorHandler, errorHandlerBuilder);
 
         // skip already managed services, for example if a route has been restarted
-        if (getManagementStrategy().isManaged(me, null)) {
+        if (getManagementStrategy().isManaged(me)) {
             log.trace("The error handler builder is already managed: {}", errorHandlerBuilder);
             return;
         }
@@ -700,7 +709,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         Object mtp = getManagementObjectStrategy().getManagedObjectForThreadPool(camelContext, threadPool, id, sourceId, routeId, threadPoolProfileId);
 
         // skip already managed services, for example if a route has been restarted
-        if (getManagementStrategy().isManaged(mtp, null)) {
+        if (getManagementStrategy().isManaged(mtp)) {
             log.trace("The thread pool is already managed: {}", threadPool);
             return;
         }
@@ -724,7 +733,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         Object mtp = managedThreadPools.remove(threadPool);
         if (mtp != null) {
             // skip unmanaged routes
-            if (!getManagementStrategy().isManaged(mtp, null)) {
+            if (!getManagementStrategy().isManaged(mtp)) {
                 log.trace("The thread pool is not managed: {}", threadPool);
                 return;
             }
@@ -758,7 +767,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
 
         // 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.setManagedInterceptStrategy(new InstrumentationInterceptStrategy(registeredCounters, wrappedProcessors));
+        routeContext.setManagementInterceptStrategy(new InstrumentationInterceptStrategy(registeredCounters, wrappedProcessors));
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
index 804593c..3de1d09 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectNameStrategy.java
@@ -36,9 +36,25 @@ import org.apache.camel.Service;
 import org.apache.camel.StaticService;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.cluster.CamelClusterService;
+import org.apache.camel.management.mbean.ManagedBacklogDebugger;
+import org.apache.camel.management.mbean.ManagedBacklogTracer;
+import org.apache.camel.management.mbean.ManagedCamelContext;
+import org.apache.camel.management.mbean.ManagedCamelHealth;
+import org.apache.camel.management.mbean.ManagedClusterService;
+import org.apache.camel.management.mbean.ManagedComponent;
+import org.apache.camel.management.mbean.ManagedConsumer;
+import org.apache.camel.management.mbean.ManagedDataFormat;
+import org.apache.camel.management.mbean.ManagedEndpoint;
+import org.apache.camel.management.mbean.ManagedErrorHandler;
+import org.apache.camel.management.mbean.ManagedEventNotifier;
+import org.apache.camel.management.mbean.ManagedProcessor;
+import org.apache.camel.management.mbean.ManagedProducer;
+import org.apache.camel.management.mbean.ManagedRoute;
+import org.apache.camel.management.mbean.ManagedRouteController;
+import org.apache.camel.management.mbean.ManagedService;
+import org.apache.camel.management.mbean.ManagedThreadPool;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
-import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.ManagementObjectNameStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.InetAddressUtil;
@@ -75,14 +91,12 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
     protected CamelContext camelContext;
 
     public DefaultManagementObjectNameStrategy() {
-        this("org.apache.camel");
+        this(null);
         // default constructor needed for <bean> style configuration
     }
 
     public DefaultManagementObjectNameStrategy(String domainName) {
-        if (domainName != null) {
-            this.domainName = domainName;
-        }
+        this.domainName = domainName != null ? domainName : "org.apache.camel";
         try {
             hostName = InetAddressUtil.getLocalHostName();
         } catch (UnknownHostException ex) {
@@ -98,6 +112,74 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
         this.camelContext = camelContext;
     }
 
+    public ObjectName getObjectName(Object managedObject) throws MalformedObjectNameException {
+        if (managedObject == null) {
+            return null;
+        }
+        ObjectName objectName = null;
+        if (managedObject instanceof ManagedCamelContext) {
+            ManagedCamelContext mcc = (ManagedCamelContext) managedObject;
+            objectName = getObjectNameForCamelContext(mcc.getContext());
+        } else if (managedObject instanceof ManagedCamelHealth) {
+            ManagedCamelHealth mch = (ManagedCamelHealth) managedObject;
+            objectName = getObjectNameForCamelHealth(mch.getContext());
+        } else if (managedObject instanceof ManagedRouteController) {
+            ManagedRouteController mrc = (ManagedRouteController) managedObject;
+            objectName = getObjectNameForRouteController(mrc.getContext());
+        } else if (managedObject instanceof ManagedComponent) {
+            ManagedComponent mc = (ManagedComponent) managedObject;
+            objectName = getObjectNameForComponent(mc.getComponent(), mc.getComponentName());
+        } else if (managedObject instanceof ManagedDataFormat) {
+            ManagedDataFormat md = (ManagedDataFormat) managedObject;
+            objectName = getObjectNameForDataFormat(md.getContext(), md.getDataFormat());
+        } else if (managedObject instanceof ManagedEndpoint) {
+            ManagedEndpoint me = (ManagedEndpoint) managedObject;
+            objectName = getObjectNameForEndpoint(me.getEndpoint());
+        } else if (managedObject instanceof Endpoint) {
+            objectName = getObjectNameForEndpoint((Endpoint) managedObject);
+        } else if (managedObject instanceof ManagedRoute) {
+            ManagedRoute mr = (ManagedRoute) managedObject;
+            objectName = getObjectNameForRoute(mr.getRoute());
+        } else if (managedObject instanceof ManagedErrorHandler) {
+            ManagedErrorHandler meh = (ManagedErrorHandler) managedObject;
+            objectName = getObjectNameForErrorHandler(meh.getRouteContext(), meh.getErrorHandler(), meh.getErrorHandlerBuilder());
+        } else if (managedObject instanceof ManagedProcessor) {
+            ManagedProcessor mp = (ManagedProcessor) managedObject;
+            objectName = getObjectNameForProcessor(mp.getContext(), mp.getProcessor(), mp.getDefinition());
+        } else if (managedObject instanceof ManagedConsumer) {
+            ManagedConsumer ms = (ManagedConsumer) managedObject;
+            objectName = getObjectNameForConsumer(ms.getContext(), ms.getConsumer());
+        } else if (managedObject instanceof ManagedProducer) {
+            ManagedProducer ms = (ManagedProducer) managedObject;
+            objectName = getObjectNameForProducer(ms.getContext(), ms.getProducer());
+        } else if (managedObject instanceof ManagedBacklogTracer) {
+            ManagedBacklogTracer mt = (ManagedBacklogTracer) managedObject;
+            objectName = getObjectNameForTracer(mt.getContext(), mt.getBacklogTracer());
+        } else if (managedObject instanceof ManagedBacklogDebugger) {
+            ManagedBacklogDebugger md = (ManagedBacklogDebugger) managedObject;
+            objectName = getObjectNameForTracer(md.getContext(), md.getBacklogDebugger());
+        } else if (managedObject instanceof ManagedEventNotifier) {
+            ManagedEventNotifier men = (ManagedEventNotifier) managedObject;
+            objectName = getObjectNameForEventNotifier(men.getContext(), men.getEventNotifier());
+        } else if (managedObject instanceof ManagedThreadPool) {
+            ManagedThreadPool mes = (ManagedThreadPool) managedObject;
+            objectName = getObjectNameForThreadPool(mes.getContext(), mes.getThreadPool(), mes.getId(), mes.getSourceId());
+        } else if (managedObject instanceof ManagedClusterService) {
+            ManagedClusterService mcs = (ManagedClusterService) managedObject;
+            objectName = getObjectNameForClusterService(mcs.getContext(), mcs.getService());
+        } else if (managedObject instanceof ManagedService) {
+            // check for managed service should be last
+            ManagedService ms = (ManagedService) managedObject;
+            // skip endpoints as they are already managed
+            if (ms.getService() instanceof Endpoint) {
+                return null;
+            }
+            objectName = getObjectNameForService(ms.getContext(), ms.getService());
+        }
+
+        return objectName;
+    }
+
     public ObjectName getObjectNameForCamelContext(String managementName, String name) throws MalformedObjectNameException {
         StringBuilder buffer = new StringBuilder();
         buffer.append(domainName).append(":");
@@ -270,7 +352,7 @@ public class DefaultManagementObjectNameStrategy implements ManagementObjectName
         return createObjectName(buffer);
     }
 
-    public ObjectName getObjectNameForTracer(CamelContext context, InterceptStrategy tracer) throws MalformedObjectNameException {
+    public ObjectName getObjectNameForTracer(CamelContext context, Service tracer) throws MalformedObjectNameException {
         // use the simple name of the class as the mbean name (eg Tracer, BacklogTracer, BacklogDebugger)
         String name = tracer.getClass().getSimpleName();
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
index 3d16dd4..aec139f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
@@ -222,7 +222,7 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
     }
 
     public Object getManagedObjectForRouteController(CamelContext context) {
-        ManagedRouteController mrc = new ManagedRouteController((ModelCamelContext)context);
+        ManagedRouteController mrc = new ManagedRouteController((ModelCamelContext) context);
         mrc.init(context.getManagementStrategy());
         return mrc;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
index 186fc2c..b144e1d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
@@ -18,11 +18,10 @@ package org.apache.camel.management;
 
 import java.util.Map;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.management.mbean.ManagedPerformanceCounter;
-import org.apache.camel.spi.InterceptStrategy;
+import org.apache.camel.spi.ManagementInterceptStrategy;
 import org.apache.camel.util.KeyValueHolder;
 
 /**
@@ -33,7 +32,7 @@ import org.apache.camel.util.KeyValueHolder;
  * This class looks up a map to determine which PerformanceCounter should go into the
  * InstrumentationProcessor for any particular target processor.
  */
-public class InstrumentationInterceptStrategy implements InterceptStrategy {
+public class InstrumentationInterceptStrategy implements ManagementInterceptStrategy {
 
     private Map<NamedNode, PerformanceCounter> registeredCounters;
     private final Map<Processor, KeyValueHolder<NamedNode, InstrumentationProcessor>> wrappedProcessors;
@@ -44,21 +43,22 @@ public class InstrumentationInterceptStrategy implements InterceptStrategy {
         this.wrappedProcessors = wrappedProcessors;
     }
 
-    public PerformanceCounter prepareProcessor(NamedNode definition, Processor target, InstrumentationProcessor advice) {
+    @Override
+    public InstrumentationProcessor<?> createProcessor(String type) {
+        return new DefaultInstrumentationProcessor(type);
+    }
+
+    @Override
+    public InstrumentationProcessor<?> createProcessor(NamedNode definition, Processor target) {
+        InstrumentationProcessor instrumentationProcessor = new DefaultInstrumentationProcessor(definition.getShortName(), target);
         PerformanceCounter counter = registeredCounters.get(definition);
         if (counter != null) {
             // add it to the mapping of wrappers so we can later change it to a
             // decorated counter when we register the processor
-            KeyValueHolder<NamedNode, InstrumentationProcessor> holder = new KeyValueHolder<>(definition, advice);
+            KeyValueHolder<NamedNode, InstrumentationProcessor> holder = new KeyValueHolder<>(definition, instrumentationProcessor);
             wrappedProcessors.put(target, holder);
         }
-        return counter;
-    }
-
-    public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
-                                                 Processor target, Processor nextTarget) throws Exception {
-        // no longer in use as we have optimised to avoid wrapping unless needed
-        return target;
+        return instrumentationProcessor;
     }
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
index db4c1b4..38b12cc 100644
--- a/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
@@ -63,10 +63,6 @@ public class JmxNotificationEventNotifier extends EventNotifierSupport implement
         counter.set(0);
     }
 
-    protected void doStop() throws Exception {
-        // noop
-    }
-
     public String getSource() {
         return source;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
index 8eb9832..42222d7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
@@ -62,6 +62,4 @@ public class LoggingEventNotifier extends EventNotifierSupport {
         }
     }
 
-    protected void doStop() throws Exception {
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java b/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java
new file mode 100644
index 0000000..a3bf6c3
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java
@@ -0,0 +1,104 @@
+/**
+ * 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.management;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Processor;
+import org.apache.camel.Route;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.api.management.ManagedCamelContext;
+import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
+import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
+import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.spi.ManagementStrategy;
+
+public class ManagedCamelContextImpl implements ManagedCamelContext {
+
+    private final CamelContext camelContext;
+
+    public ManagedCamelContextImpl(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    private ManagementStrategy getManagementStrategy() {
+        return camelContext.getManagementStrategy();
+    }
+
+    public <T extends ManagedProcessorMBean> T getManagedProcessor(String id, Class<T> type) {
+        // jmx must be enabled
+        if (getManagementStrategy().getManagementAgent() == null) {
+            return null;
+        }
+
+        Processor processor = camelContext.getProcessor(id);
+        ProcessorDefinition def = camelContext.adapt(ModelCamelContext.class).getProcessorDefinition(id);
+
+        // processor may be null if its anonymous inner class or as lambda
+        if (def != null) {
+            try {
+                ObjectName on = getManagementStrategy().getManagementObjectNameStrategy()
+                        .getObjectNameForProcessor(camelContext, processor, def);
+                return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
+            } catch (MalformedObjectNameException e) {
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
+            }
+        }
+
+        return null;
+    }
+
+    public <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type) {
+        // jmx must be enabled
+        if (getManagementStrategy().getManagementAgent() == null) {
+            return null;
+        }
+
+        Route route = camelContext.getRoute(routeId);
+
+        if (route != null) {
+            try {
+                ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForRoute(route);
+                return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
+            } catch (MalformedObjectNameException e) {
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
+            }
+        }
+
+        return null;
+    }
+
+    public ManagedCamelContextMBean getManagedCamelContext() {
+        // jmx must be enabled
+        if (getManagementStrategy().getManagementAgent() == null) {
+            return null;
+        }
+
+        try {
+            ObjectName on = getManagementStrategy().getManagementObjectNameStrategy()
+                    .getObjectNameForCamelContext(camelContext);
+            return getManagementStrategy().getManagementAgent().newProxyClient(on, ManagedCamelContextMBean.class);
+        } catch (MalformedObjectNameException e) {
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
+        }
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index a00e329..d5ce265 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -19,154 +19,66 @@ package org.apache.camel.management;
 import javax.management.ObjectName;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
 import org.apache.camel.NamedNode;
-import org.apache.camel.management.mbean.ManagedBacklogDebugger;
-import org.apache.camel.management.mbean.ManagedBacklogTracer;
-import org.apache.camel.management.mbean.ManagedCamelContext;
-import org.apache.camel.management.mbean.ManagedCamelHealth;
-import org.apache.camel.management.mbean.ManagedClusterService;
-import org.apache.camel.management.mbean.ManagedComponent;
-import org.apache.camel.management.mbean.ManagedConsumer;
-import org.apache.camel.management.mbean.ManagedDataFormat;
-import org.apache.camel.management.mbean.ManagedEndpoint;
-import org.apache.camel.management.mbean.ManagedErrorHandler;
-import org.apache.camel.management.mbean.ManagedEventNotifier;
-import org.apache.camel.management.mbean.ManagedProcessor;
-import org.apache.camel.management.mbean.ManagedProducer;
-import org.apache.camel.management.mbean.ManagedRoute;
-import org.apache.camel.management.mbean.ManagedRouteController;
-import org.apache.camel.management.mbean.ManagedService;
-import org.apache.camel.management.mbean.ManagedThreadPool;
+import org.apache.camel.api.management.ManagedCamelContext;
+import org.apache.camel.impl.DefaultManagementStrategy;
 import org.apache.camel.spi.ManagementAgent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.spi.ManagementObjectNameStrategy;
+import org.apache.camel.spi.ManagementObjectStrategy;
 
 /**
  * A JMX capable {@link org.apache.camel.spi.ManagementStrategy} that Camel by default uses if possible.
  * <p/>
  * Camel detects whether its possible to use this JMX capable strategy and if <b>not</b> then Camel
- * will fallback to the {@link org.apache.camel.management.DefaultManagementStrategy} instead.
+ * will fallback to the {@link DefaultManagementStrategy} instead.
  *
  * @see org.apache.camel.spi.ManagementStrategy
- * @see org.apache.camel.management.DefaultManagementStrategy
+ * @see DefaultManagementStrategy
  */
 public class ManagedManagementStrategy extends DefaultManagementStrategy {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ManagedManagementStrategy.class);
-
-    public ManagedManagementStrategy() {
-    }
-
-    public ManagedManagementStrategy(CamelContext camelContext, ManagementAgent managementAgent) {
-        setCamelContext(camelContext);
-        setManagementAgent(managementAgent);
+    public ManagedManagementStrategy(CamelContext context, ManagementAgent managementAgent) {
+        super(context, managementAgent);
+        context.setExtension(
+                ManagedCamelContext.class,
+                new ManagedCamelContextImpl(context));
+        // must add management lifecycle strategy
+        context.getLifecycleStrategies().add(0, new DefaultManagementLifecycleStrategy(context));
     }
 
     public void manageObject(Object managedObject) throws Exception {
-        manageNamedObject(managedObject, null);
-    }
-
-    public void manageNamedObject(Object managedObject, Object preferredName) throws Exception {
-        ObjectName objectName = getObjectName(managedObject, preferredName);
-
+        ObjectName objectName = getManagementObjectNameStrategy().getObjectName(managedObject);
         if (objectName != null) {
             getManagementAgent().register(managedObject, objectName);
         }
     }
 
-    public <T> T getManagedObjectName(Object managedObject, String customName, Class<T> nameType) throws Exception {
-        if (managedObject == null) {
-            return null;
-        }
-
-        ObjectName objectName = null;
-
-
-
-        if (managedObject instanceof ManagedCamelContext) {
-            ManagedCamelContext mcc = (ManagedCamelContext) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForCamelContext(mcc.getContext());
-        } else if (managedObject instanceof ManagedCamelHealth) {
-            ManagedCamelHealth mch = (ManagedCamelHealth) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForCamelHealth(mch.getContext());
-        } else if (managedObject instanceof ManagedRouteController) {
-            ManagedRouteController mrc = (ManagedRouteController) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForRouteController(mrc.getContext());
-        } else if (managedObject instanceof ManagedComponent) {
-            ManagedComponent mc = (ManagedComponent) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForComponent(mc.getComponent(), mc.getComponentName());
-        } else if (managedObject instanceof ManagedDataFormat) {
-            ManagedDataFormat md = (ManagedDataFormat) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForDataFormat(md.getContext(), md.getDataFormat());
-        } else if (managedObject instanceof ManagedEndpoint) {
-            ManagedEndpoint me = (ManagedEndpoint) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForEndpoint(me.getEndpoint());
-        } else if (managedObject instanceof Endpoint) {
-            objectName = getManagementObjectNameStrategy().getObjectNameForEndpoint((Endpoint) managedObject);
-        } else if (managedObject instanceof ManagedRoute) {
-            ManagedRoute mr = (ManagedRoute) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForRoute(mr.getRoute());
-        } else if (managedObject instanceof ManagedErrorHandler) {
-            ManagedErrorHandler meh = (ManagedErrorHandler) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForErrorHandler(meh.getRouteContext(), meh.getErrorHandler(), meh.getErrorHandlerBuilder());
-        } else if (managedObject instanceof ManagedProcessor) {
-            ManagedProcessor mp = (ManagedProcessor) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForProcessor(mp.getContext(), mp.getProcessor(), mp.getDefinition());
-        } else if (managedObject instanceof ManagedConsumer) {
-            ManagedConsumer ms = (ManagedConsumer) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForConsumer(ms.getContext(), ms.getConsumer());
-        } else if (managedObject instanceof ManagedProducer) {
-            ManagedProducer ms = (ManagedProducer) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForProducer(ms.getContext(), ms.getProducer());
-        } else if (managedObject instanceof ManagedBacklogTracer) {
-            ManagedBacklogTracer mt = (ManagedBacklogTracer) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForTracer(mt.getContext(), mt.getBacklogTracer());
-        } else if (managedObject instanceof ManagedBacklogDebugger) {
-            ManagedBacklogDebugger md = (ManagedBacklogDebugger) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForTracer(md.getContext(), md.getBacklogDebugger());
-        } else if (managedObject instanceof ManagedEventNotifier) {
-            ManagedEventNotifier men = (ManagedEventNotifier) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForEventNotifier(men.getContext(), men.getEventNotifier());
-        } else if (managedObject instanceof ManagedThreadPool) {
-            ManagedThreadPool mes = (ManagedThreadPool) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForThreadPool(mes.getContext(), mes.getThreadPool(), mes.getId(), mes.getSourceId());
-        } else if (managedObject instanceof ManagedClusterService) {
-            ManagedClusterService mcs = (ManagedClusterService) managedObject;
-            objectName = getManagementObjectNameStrategy().getObjectNameForClusterService(mcs.getContext(), mcs.getService());
-        } else if (managedObject instanceof ManagedService) {
-            // check for managed service should be last
-            ManagedService ms = (ManagedService) managedObject;
-            // skip endpoints as they are already managed
-            if (ms.getService() instanceof Endpoint) {
-                return null;
-            }
-            objectName = getManagementObjectNameStrategy().getObjectNameForService(ms.getContext(), ms.getService());
-        }
-
-        return nameType.cast(objectName);
-    }
-
     public void unmanageObject(Object managedObject) throws Exception {
-        ObjectName objectName = getManagedObjectName(managedObject, null, ObjectName.class);
-        unmanageNamedObject(objectName);
-    }
-
-    public void unmanageNamedObject(Object name) throws Exception {
-        ObjectName objectName = getObjectName(null, name);
+        ObjectName objectName = getManagementObjectNameStrategy().getObjectName(managedObject);
         if (objectName != null) {
             getManagementAgent().unregister(objectName);
         }
     }
 
-    public boolean isManaged(Object managedObject, Object name) {
+    public boolean isManaged(Object managedObject) {
+        try {
+            ObjectName name = getManagementObjectNameStrategy().getObjectName(managedObject);
+            if (name != null) {
+                return getManagementAgent().isRegistered(name);
+            }
+        } catch (Exception e) {
+            log.warn("Cannot check whether the managed object is registered. This exception will be ignored.", e);
+        }
+        return false;
+    }
+
+    public boolean isManagedName(Object name) {
         try {
-            ObjectName objectName = getObjectName(managedObject, name);
-            if (objectName != null) {
-                return getManagementAgent().isRegistered(objectName);
+            if (name instanceof ObjectName) {
+                return getManagementAgent().isRegistered((ObjectName) name);
             }
         } catch (Exception e) {
-            LOG.warn("Cannot check whether the managed object is registered. This exception will be ignored.", e);
+            log.warn("Cannot check whether the managed object is registered. This exception will be ignored.", e);
         }
         return false;
     }
@@ -176,24 +88,18 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
         return true;
     }
 
-    private ObjectName getObjectName(Object managedObject, Object preferedName) throws Exception {
-        ObjectName objectName;
-
-        if (preferedName instanceof String) {
-            String customName = (String) preferedName;
-            objectName = getManagedObjectName(managedObject, customName, ObjectName.class);
-        } else if (preferedName instanceof ObjectName) {
-            objectName = (ObjectName) preferedName;
-        } else {
-            objectName = getManagedObjectName(managedObject, null, ObjectName.class);
-        }
-        return objectName;
-    }
-
     @Override
     protected void doStart() throws Exception {
-        LOG.info("JMX is enabled");
+        log.info("JMX is enabled");
         doStartManagementStrategy();
     }
 
+    protected ManagementObjectNameStrategy createManagementObjectNameStrategy(String domain) {
+        return new DefaultManagementObjectNameStrategy(domain);
+    }
+
+    protected ManagementObjectStrategy createManagementObjectStrategy() {
+        return new DefaultManagementObjectStrategy();
+    }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java b/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
index 63ce2dd..64d8d44 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
@@ -17,6 +17,7 @@
 package org.apache.camel.management;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultManagementStrategy;
 import org.apache.camel.spi.ManagementStrategy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -28,23 +29,14 @@ public class ManagementStrategyFactory {
     private final Logger log = LoggerFactory.getLogger(getClass());
 
     public ManagementStrategy create(CamelContext context, boolean disableJMX) {
-        ManagementStrategy answer;
-
-        if (disableJMX || Boolean.getBoolean(JmxSystemPropertyKeys.DISABLED)) {
-            answer = new DefaultManagementStrategy(context);
-        } else {
+        if (!disableJMX && !Boolean.getBoolean(JmxSystemPropertyKeys.DISABLED)) {
             try {
-                answer = new ManagedManagementStrategy(context, new DefaultManagementAgent(context));
-
-                // must add management lifecycle strategy
-                context.getLifecycleStrategies().add(0, new DefaultManagementLifecycleStrategy(context));
-
+                return new ManagedManagementStrategy(context, new DefaultManagementAgent(context));
             } catch (Exception e) {
                 log.warn("Cannot create JMX lifecycle strategy. Will fallback and disable JMX.", e);
-                answer = new DefaultManagementStrategy(context);
             }
         }
-        return answer;
+        return new DefaultManagementStrategy(context);
     }
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
index e176282..d7aadde 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelHealth.java
@@ -63,7 +63,7 @@ public class ManagedCamelHealth implements ManagedCamelHealthMBean {
 
     @Override
     public Collection<String> getHealthChecksIDs() {
-        HealthCheckRegistry registry = context.getHealthCheckRegistry();
+        HealthCheckRegistry registry = HealthCheckRegistry.get(context);
         if (registry != null) {
             return registry.getCheckIDs();
         }
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java b/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
index 654b063..e06a833 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/RouteCoverageXmlParser.java
@@ -36,7 +36,7 @@ import org.xml.sax.helpers.DefaultHandler;
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 
 /**
  * An XML parser that uses SAX to enrich route stats in the route dump.
@@ -91,7 +91,7 @@ public final class RouteCoverageXmlParser {
                 if (id != null) {
                     try {
                         if ("route".equals(qName)) {
-                            ManagedRouteMBean route = camelContext.adapt(ManagedCamelContext.class).getManagedRoute(id, ManagedRouteMBean.class);
+                            ManagedRouteMBean route = camelContext.getExtension(ManagedCamelContext.class).getManagedRoute(id);
                             if (route != null) {
                                 long total = route.getExchangesTotal();
                                 el.setAttribute("exchangesTotal", "" + total);
@@ -103,7 +103,7 @@ public final class RouteCoverageXmlParser {
                             Element parent = elementStack.peek();
                             if (parent != null) {
                                 String routeId = parent.getAttribute("id");
-                                ManagedRouteMBean route = camelContext.adapt(ManagedCamelContext.class).getManagedRoute(routeId, ManagedRouteMBean.class);
+                                ManagedRouteMBean route = camelContext.getExtension(ManagedCamelContext.class).getManagedRoute(routeId);
                                 if (route != null) {
                                     long total = route.getExchangesTotal();
                                     el.setAttribute("exchangesTotal", "" + total);
@@ -114,7 +114,7 @@ public final class RouteCoverageXmlParser {
                                 }
                             }
                         } else {
-                            ManagedProcessorMBean processor = camelContext.adapt(ManagedCamelContext.class).getManagedProcessor(id, ManagedProcessorMBean.class);
+                            ManagedProcessorMBean processor = camelContext.getExtension(ManagedCamelContext.class).getManagedProcessor(id);
                             if (processor != null) {
                                 long total = processor.getExchangesTotal();
                                 el.setAttribute("exchangesTotal", "" + total);
diff --git a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
index 7f8dda6..f2307f6 100644
--- a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
@@ -170,7 +170,7 @@ public class DynamicRouterDefinition<Type extends ProcessorDefinition<Type>> ext
     }
     
     /**
-     * Sets the maximum size used by the {@link DefaultProducerCache} which is used
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ProducerCache} which is used
      * to cache and reuse producers when using this dynamic router, when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java b/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
index 69ee984..95011d2 100644
--- a/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
@@ -188,7 +188,7 @@ public class EnrichDefinition extends NoOutputExpressionNode {
     }
 
     /**
-     * Sets the maximum size used by the {@link DefaultProducerCache} which is used
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ProducerCache} which is used
      * to cache and reuse producer when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index b0ce0ae..d2e40ca 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -31,9 +31,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.StatefulService;
 import org.apache.camel.StreamCache;
-import org.apache.camel.management.DelegatePerformanceCounter;
-import org.apache.camel.management.PerformanceCounter;
-import org.apache.camel.management.mbean.ManagedPerformanceCounter;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.RouteDefinition;
@@ -83,7 +80,7 @@ import org.slf4j.LoggerFactory;
  */
 public class CamelInternalProcessor extends DelegateAsyncProcessor {
 
-    private final List<CamelInternalProcessorAdvice> advices = new ArrayList<>();
+    private final List<CamelInternalProcessorAdvice<?>> advices = new ArrayList<>();
 
     public CamelInternalProcessor() {
     }
@@ -97,7 +94,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
      *
      * @param advice  the advice to add
      */
-    public void addAdvice(CamelInternalProcessorAdvice advice) {
+    public void addAdvice(CamelInternalProcessorAdvice<?> advice) {
         advices.add(advice);
         // ensure advices are sorted so they are in the order we want
         advices.sort(OrderedComparator.get());
@@ -111,8 +108,9 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
      */
     public <T> T getAdvice(Class<T> type) {
         for (CamelInternalProcessorAdvice task : advices) {
-            if (type.isInstance(task)) {
-                return type.cast(task);
+            Object advice = CamelInternalProcessorAdvice.unwrap(task);
+            if (type.isInstance(advice)) {
+                return type.cast(advice);
             }
         }
         return null;
@@ -325,82 +323,6 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
     }
 
     /**
-     * Advice for JMX instrumentation of the process being invoked.
-     * <p/>
-     * This advice keeps track of JMX metrics for performance statistics.
-     * <p/>
-     * The current implementation of this advice is only used for route level statistics. For processor levels
-     * they are still wrapped in the route processor chains.
-     */
-    public static class InstrumentationAdvice implements CamelInternalProcessorAdvice<StopWatch> {
-
-        private final Logger log = LoggerFactory.getLogger(getClass());
-        private PerformanceCounter counter;
-        private String type;
-
-        public InstrumentationAdvice(String type) {
-            this.type = type;
-        }
-
-        public void setCounter(Object counter) {
-            ManagedPerformanceCounter mpc = null;
-            if (counter instanceof ManagedPerformanceCounter) {
-                mpc = (ManagedPerformanceCounter) counter;
-            }
-
-            if (this.counter instanceof DelegatePerformanceCounter) {
-                ((DelegatePerformanceCounter) this.counter).setCounter(mpc);
-            } else if (mpc != null) {
-                this.counter = mpc;
-            } else if (counter instanceof PerformanceCounter) {
-                this.counter = (PerformanceCounter) counter;
-            }
-        }
-
-        protected void beginTime(Exchange exchange) {
-            counter.processExchange(exchange);
-        }
-
-        protected void recordTime(Exchange exchange, long duration) {
-            if (log.isTraceEnabled()) {
-                log.trace("{}Recording duration: {} millis for exchange: {}", type != null ? type + ": " : "", duration, exchange);
-            }
-
-            if (!exchange.isFailed() && exchange.getException() == null) {
-                counter.completedExchange(exchange, duration);
-            } else {
-                counter.failedExchange(exchange);
-            }
-        }
-
-        public String getType() {
-            return type;
-        }
-
-        public void setType(String type) {
-            this.type = type;
-        }
-
-        @Override
-        public StopWatch before(Exchange exchange) throws Exception {
-            // only record time if stats is enabled
-            StopWatch answer = counter != null && counter.isStatisticsEnabled() ? new StopWatch() : null;
-            if (answer != null) {
-                beginTime(exchange);
-            }
-            return answer;
-        }
-
-        @Override
-        public void after(Exchange exchange, StopWatch watch) throws Exception {
-            // record end time
-            if (watch != null) {
-                recordTime(exchange, watch.taken());
-            }
-        }
-    }
-
-    /**
      * Advice to keep the {@link InflightRepository} up to date.
      */
     public static class RouteInflightRepositoryAdvice implements CamelInternalProcessorAdvice {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessorAdvice.java b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessorAdvice.java
index a6c589a..9139e70 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessorAdvice.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessorAdvice.java
@@ -17,6 +17,8 @@
 package org.apache.camel.processor;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.Ordered;
+import org.apache.camel.spi.ManagementInterceptStrategy.InstrumentationProcessor;
 
 /**
  * An advice (before and after) to execute cross cutting functionality in the Camel routing engine.
@@ -25,7 +27,7 @@ import org.apache.camel.Exchange;
  * {@link #after(org.apache.camel.Exchange, Object)} methods during routing in correct order.
  *
  * @param <T>
- * @see CamelInternalProcessor
+ * @see org.apache.camel.processor.CamelInternalProcessor
  */
 public interface CamelInternalProcessorAdvice<T> {
 
@@ -46,4 +48,53 @@ public interface CamelInternalProcessorAdvice<T> {
      * @throws Exception is thrown if error during the call.
      */
     void after(Exchange exchange, T data) throws Exception;
+
+    /**
+     * Wrap an InstrumentationProcessor into a CamelInternalProcessorAdvice
+     */
+    static <T> CamelInternalProcessorAdvice<T> wrap(InstrumentationProcessor<T> instrumentationProcessor) {
+
+        if (instrumentationProcessor instanceof CamelInternalProcessor) {
+            return (CamelInternalProcessorAdvice<T>) instrumentationProcessor;
+        } else {
+            return new CamelInternalProcessorAdviceWrapper<T>(instrumentationProcessor);
+        }
+    }
+
+    static Object unwrap(CamelInternalProcessorAdvice<?> advice) {
+        if (advice instanceof CamelInternalProcessorAdviceWrapper) {
+            return ((CamelInternalProcessorAdviceWrapper) advice).unwrap();
+        } else {
+            return advice;
+        }
+    }
+
+    class CamelInternalProcessorAdviceWrapper<T> implements CamelInternalProcessorAdvice<T>, Ordered {
+
+        final InstrumentationProcessor<T> instrumentationProcessor;
+
+        public CamelInternalProcessorAdviceWrapper(InstrumentationProcessor<T> instrumentationProcessor) {
+            this.instrumentationProcessor = instrumentationProcessor;
+        }
+
+        InstrumentationProcessor<T> unwrap() {
+            return instrumentationProcessor;
+        }
+
+        @Override
+        public int getOrder() {
+            return instrumentationProcessor.getOrder();
+        }
+
+        @Override
+        public T before(Exchange exchange) throws Exception {
+            return instrumentationProcessor.before(exchange);
+        }
+
+        @Override
+        public void after(Exchange exchange, T data) throws Exception {
+            instrumentationProcessor.after(exchange, data);
+        }
+    }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java b/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
index c45f290..5ba23ed 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
@@ -41,18 +41,8 @@ public class InterceptorToAsyncProcessorBridge extends ServiceSupport implements
      * @param interceptor the interceptor to bridge
      */
     public InterceptorToAsyncProcessorBridge(Processor interceptor) {
-        this(interceptor, null);
-    }
-
-    /**
-     * Constructs the bridge
-     *
-     * @param interceptor the interceptor to bridge
-     * @param target the target
-     */
-    public InterceptorToAsyncProcessorBridge(Processor interceptor, AsyncProcessor target) {
         this.interceptor = AsyncProcessorConverterHelper.convert(interceptor);
-        this.target = target;
+        this.target = AsyncProcessorConverterHelper.convert(target);
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java b/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
index e694821..95ddb3d 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
@@ -36,7 +36,7 @@ import org.apache.camel.support.MessageHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
- * A {@link org.apache.camel.processor.CamelInternalProcessorAdvice} that binds the REST DSL incoming
+ * A {@link CamelInternalProcessorAdvice} that binds the REST DSL incoming
  * and outgoing messages from sources of json or xml to Java Objects.
  * <p/>
  * The binding uses {@link org.apache.camel.spi.DataFormat} for the actual work to transform
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index ff58f45..3b7b44d 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -18,7 +18,6 @@ package org.apache.camel.processor.interceptor;
 
 import java.util.Date;
 import java.util.LinkedHashSet;
-import java.util.List;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -42,10 +41,9 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeEvent;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.Condition;
 import org.apache.camel.spi.Debugger;
-import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
@@ -63,7 +61,7 @@ import org.apache.camel.support.ServiceSupport;
  * concurrency then sub-sequent {@link Exchange} will continue to be routed, if there breakpoint already holds a
  * suspended {@link Exchange}.
  */
-public class BacklogDebugger extends ServiceSupport implements InterceptStrategy {
+public class BacklogDebugger extends ServiceSupport {
 
     private long fallbackTimeout = 300;
     private final CamelContext camelContext;
@@ -105,16 +103,19 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
         }
     }
 
-    public BacklogDebugger(CamelContext camelContext) {
+    private BacklogDebugger(CamelContext camelContext) {
         this.camelContext = camelContext;
-        DefaultDebugger debugger = new DefaultDebugger(camelContext);
-        this.debugger = debugger;
+        this.debugger = new DefaultDebugger(camelContext);
     }
 
-    @Override
-    @Deprecated
-    public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
-        throw new UnsupportedOperationException("Deprecated");
+    /**
+     * Creates a new backlog debugger.
+     *
+     * @param context Camel context
+     * @return a new backlog debugger
+     */
+    public static BacklogDebugger createDebugger(CamelContext context) {
+        return new BacklogDebugger(context);
     }
 
     /**
@@ -123,13 +124,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
      * @return the backlog debugger or null if none can be found
      */
     public static BacklogDebugger getBacklogDebugger(CamelContext context) {
-        List<InterceptStrategy> list = context.getInterceptStrategies();
-        for (InterceptStrategy interceptStrategy : list) {
-            if (interceptStrategy instanceof BacklogDebugger) {
-                return (BacklogDebugger) interceptStrategy;
-            }
-        }
-        return null;
+        return context.hasService(BacklogDebugger.class);
     }
 
     public Debugger getDebugger() {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
index 6bf2563..808c8bc 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
@@ -42,7 +42,7 @@ import org.apache.camel.util.StringHelper;
  * This tracer allows to store message tracers per node in the Camel routes. The tracers
  * is stored in a backlog queue (FIFO based) which allows to pull the traced messages on demand.
  */
-public final class BacklogTracer extends ServiceSupport implements InterceptStrategy {
+public final class BacklogTracer extends ServiceSupport {
 
     // lets limit the tracer to 10 thousand messages in total
     public static final int MAX_BACKLOG_SIZE = 10 * 1000;
@@ -67,12 +67,6 @@ public final class BacklogTracer extends ServiceSupport implements InterceptStra
         this.camelContext = camelContext;
     }
 
-    @Override
-    @Deprecated
-    public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition, Processor target, Processor nextTarget) throws Exception {
-        throw new UnsupportedOperationException("Deprecated");
-    }
-
     /**
      * Creates a new backlog tracer.
      *
@@ -89,13 +83,7 @@ public final class BacklogTracer extends ServiceSupport implements InterceptStra
      * @return the backlog tracer or null if none can be found
      */
     public static BacklogTracer getBacklogTracer(CamelContext context) {
-        List<InterceptStrategy> list = context.getInterceptStrategies();
-        for (InterceptStrategy interceptStrategy : list) {
-            if (interceptStrategy instanceof BacklogTracer) {
-                return (BacklogTracer) interceptStrategy;
-            }
-        }
-        return null;
+        return context.getExtension(BacklogTracer.class);
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
index 746a6c5..40de8e6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
@@ -27,8 +27,6 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Channel;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.management.InstrumentationInterceptStrategy;
-import org.apache.camel.management.InstrumentationProcessor;
 import org.apache.camel.model.ModelChannel;
 import org.apache.camel.model.OnCompletionDefinition;
 import org.apache.camel.model.OnExceptionDefinition;
@@ -37,10 +35,12 @@ import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteDefinitionHelper;
 import org.apache.camel.processor.CamelInternalProcessor;
+import org.apache.camel.processor.CamelInternalProcessorAdvice;
 import org.apache.camel.processor.InterceptorToAsyncProcessorBridge;
 import org.apache.camel.processor.RedeliveryErrorHandler;
 import org.apache.camel.processor.WrapProcessor;
 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.support.OrderedComparator;
@@ -66,7 +66,7 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
     private Processor output;
     private ProcessorDefinition<?> definition;
     private ProcessorDefinition<?> childDefinition;
-    private InstrumentationProcessor instrumentationProcessor;
+    private ManagementInterceptStrategy.InstrumentationProcessor<?> instrumentationProcessor;
     private CamelContext camelContext;
     private RouteContext routeContext;
 
@@ -210,35 +210,25 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
 
         // setup instrumentation processor for management (jmx)
         // this is later used in postInitChannel as we need to setup the error handler later as well
-        InterceptStrategy managed = routeContext.getManagedInterceptStrategy();
-        if (managed instanceof InstrumentationInterceptStrategy) {
-            InstrumentationInterceptStrategy iis = (InstrumentationInterceptStrategy) managed;
-            instrumentationProcessor = new InstrumentationProcessor(targetOutputDef.getShortName(), target);
-            iis.prepareProcessor(targetOutputDef, target, instrumentationProcessor);
+        ManagementInterceptStrategy managed = routeContext.getManagementInterceptStrategy();
+        if (managed != null) {
+            instrumentationProcessor = managed.createProcessor(targetOutputDef, target);
         }
 
         // then wrap the output with the backlog and tracer (backlog first, as we do not want regular tracer to trace the backlog)
-        InterceptStrategy tracer = getOrCreateBacklogTracer();
-        camelContext.addService(tracer);
-        if (tracer instanceof BacklogTracer) {
-            BacklogTracer backlogTracer = (BacklogTracer) tracer;
-
-            RouteDefinition route = ProcessorDefinitionHelper.getRoute(definition);
-            boolean first = false;
-            if (route != null && !route.getOutputs().isEmpty()) {
-                first = route.getOutputs().get(0) == definition;
-            }
-
-            addAdvice(new BacklogTracerAdvice(backlogTracer, targetOutputDef, route, first));
-
-            // add debugger as well so we have both tracing and debugging out of the box
-            InterceptStrategy debugger = getOrCreateBacklogDebugger();
-            camelContext.addService(debugger);
-            if (debugger instanceof BacklogDebugger) {
-                BacklogDebugger backlogDebugger = (BacklogDebugger) debugger;
-                addAdvice(new BacklogDebuggerAdvice(backlogDebugger, target, targetOutputDef));
-            }
+        BacklogTracer tracer = getOrCreateBacklogTracer();
+        camelContext.setExtension(BacklogTracer.class, tracer);
+        RouteDefinition route = ProcessorDefinitionHelper.getRoute(definition);
+        boolean first = false;
+        if (route != null && !route.getOutputs().isEmpty()) {
+            first = route.getOutputs().get(0) == definition;
         }
+        addAdvice(new BacklogTracerAdvice(tracer, targetOutputDef, route, first));
+
+        // add debugger as well so we have both tracing and debugging out of the box
+        BacklogDebugger debugger = getOrCreateBacklogDebugger();
+        camelContext.addService(debugger);
+        addAdvice(new BacklogDebuggerAdvice(debugger, target, targetOutputDef));
 
         if (routeContext.isMessageHistory()) {
             // add message history advice
@@ -248,7 +238,7 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
 
         // sort interceptors according to ordered
         interceptors.sort(OrderedComparator.get());
-        // then reverse list so the first will be wrapped last, as it would then be first being invoked
+        // reverse list so the first will be wrapped last, as it would then be first being invoked
         Collections.reverse(interceptors);
         // wrap the output with the configured interceptors
         for (InterceptStrategy strategy : interceptors) {
@@ -312,46 +302,45 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
             }
             if (!redeliveryPossible) {
                 // optimise to use advice as we cannot redeliver
-                addAdvice(instrumentationProcessor);
+                addAdvice(CamelInternalProcessorAdvice.wrap(instrumentationProcessor));
             }
         }
     }
 
-    private InterceptStrategy getOrCreateBacklogTracer() {
-        InterceptStrategy tracer = BacklogTracer.getBacklogTracer(camelContext);
-        if (tracer == null) {
-            if (camelContext.getRegistry() != null) {
-                // lookup in registry
-                Map<String, BacklogTracer> map = camelContext.getRegistry().findByTypeWithName(BacklogTracer.class);
-                if (map.size() == 1) {
-                    tracer = map.values().iterator().next();
-                }
-            }
-            if (tracer == null) {
-                // fallback to use the default tracer
-                tracer = camelContext.getDefaultBacklogTracer();
+    private BacklogTracer getOrCreateBacklogTracer() {
+        BacklogTracer tracer = null;
+        if (camelContext.getRegistry() != null) {
+            // lookup in registry
+            Map<String, BacklogTracer> map = camelContext.getRegistry().findByTypeWithName(BacklogTracer.class);
+            if (map.size() == 1) {
+                tracer = map.values().iterator().next();
             }
         }
-
+        if (tracer == null) {
+            tracer = camelContext.getExtension(BacklogTracer.class);
+        }
+        if (tracer == null) {
+            tracer = BacklogTracer.createTracer(camelContext);
+        }
         return tracer;
     }
 
-    private InterceptStrategy getOrCreateBacklogDebugger() {
-        InterceptStrategy debugger = BacklogDebugger.getBacklogDebugger(camelContext);
-        if (debugger == null) {
-            if (camelContext.getRegistry() != null) {
-                // lookup in registry
-                Map<String, BacklogDebugger> map = camelContext.getRegistry().findByTypeWithName(BacklogDebugger.class);
-                if (map.size() == 1) {
-                    debugger = map.values().iterator().next();
-                }
-            }
-            if (debugger == null) {
-                // fallback to use the default debugger
-                debugger = camelContext.getDefaultBacklogDebugger();
+    private BacklogDebugger getOrCreateBacklogDebugger() {
+        BacklogDebugger debugger = null;
+        if (camelContext.getRegistry() != null) {
+            // lookup in registry
+            Map<String, BacklogDebugger> map = camelContext.getRegistry().findByTypeWithName(BacklogDebugger.class);
+            if (map.size() == 1) {
+                debugger = map.values().iterator().next();
             }
         }
-
+        if (debugger == null) {
+            debugger = camelContext.hasService(BacklogDebugger.class);
+        }
+        if (debugger == null) {
+            // fallback to use the default debugger
+            debugger = BacklogDebugger.createDebugger(camelContext);
+        }
         return debugger;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/support/EventHelper.java b/camel-core/src/main/java/org/apache/camel/support/EventHelper.java
index fb29075..8fcc4e3 100644
--- a/camel-core/src/main/java/org/apache/camel/support/EventHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/support/EventHelper.java
@@ -17,13 +17,14 @@
 package org.apache.camel.support;
 
 import java.util.List;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
-import org.apache.camel.StatefulService;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventFactory;
 import org.apache.camel.spi.EventNotifier;
@@ -42,1000 +43,168 @@ public final class EventHelper {
     }
 
     public static boolean notifyCamelContextStarting(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextStartingEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyCamelContextStarted(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextStartedEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyCamelContextStartupFailed(CamelContext context, Throwable cause) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextStartupFailureEvent(context, cause);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyCamelContextStopping(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextStoppingEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyCamelContextStopped(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextStoppedEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyCamelContextStopFailed(CamelContext context, Throwable cause) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextStopFailureEvent(context, cause);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyServiceStopFailure(CamelContext context, Object service, Throwable cause) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreServiceEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createServiceStopFailureEvent(context, service, cause);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyServiceStartupFailure(CamelContext context, Object service, Throwable cause) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreServiceEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createServiceStartupFailureEvent(context, service, cause);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyRouteStarted(CamelContext context, Route route) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreRouteEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createRouteStartedEvent(route);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyRouteStopped(CamelContext context, Route route) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreRouteEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createRouteStoppedEvent(route);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyRouteAdded(CamelContext context, Route route) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreRouteEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createRouteAddedEvent(route);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyRouteRemoved(CamelContext context, Route route) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreRouteEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createRouteRemovedEvent(route);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyExchangeCreated(CamelContext context, Exchange exchange) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
-
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeCreatedEvent()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeCreatedEvent(exchange);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyExchangeDone(CamelContext context, Exchange exchange) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
-
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeCompletedEvent()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeCompletedEvent(exchange);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyExchangeFailed(CamelContext context, Exchange exchange) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
-
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailedEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeFailedEvent(exchange);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyExchangeFailureHandling(CamelContext context, Exchange exchange, Processor failureHandler,
-                                                     boolean deadLetterChannel, String deadLetterUri) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
-
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailedEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeFailureHandlingEvent(exchange, failureHandler, deadLetterChannel, deadLetterUri);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyExchangeFailureHandled(CamelContext context, Exchange exchange, Processor failureHandler,
-                                                    boolean deadLetterChannel, String deadLetterUri) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
-
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailedEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeFailureHandledEvent(exchange, failureHandler, deadLetterChannel, deadLetterUri);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
-    }
-
-    public static boolean notifyExchangeRedelivery(CamelContext context, Exchange exchange, int attempt) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
-
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailedEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeRedeliveryEvent(exchange, attempt);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
+        return doNotify(context,
+                factory -> factory.createCamelContextStartingEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
     }
 
-    public static boolean notifyExchangeSending(CamelContext context, Exchange exchange, Endpoint endpoint) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
-
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
+    public static boolean notifyCamelContextStarted(CamelContext context) {
+        return doNotify(context,
+                factory -> factory.createCamelContextStartedEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
+    }
 
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
+    public static boolean notifyCamelContextStartupFailed(CamelContext context, Throwable cause) {
+        return doNotify(context,
+                factory -> factory.createCamelContextStartupFailureEvent(context, cause),
+                EventNotifier::isIgnoreCamelContextEvents);
+    }
 
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
+    public static boolean notifyCamelContextStopping(CamelContext context) {
+        return doNotify(context,
+                factory -> factory.createCamelContextStoppingEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
+    }
 
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeSendingEvents()) {
-                continue;
-            }
+    public static boolean notifyCamelContextStopped(CamelContext context) {
+        return doNotify(context,
+                factory -> factory.createCamelContextStoppedEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
+    }
 
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeSendingEvent(exchange, endpoint);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
+    public static boolean notifyCamelContextStopFailure(CamelContext context, Throwable cause) {
+        return doNotify(context,
+                factory -> factory.createCamelContextStopFailureEvent(context, cause),
+                EventNotifier::isIgnoreCamelContextEvents);
     }
 
-    public static boolean notifyExchangeSent(CamelContext context, Exchange exchange, Endpoint endpoint, long timeTaken) {
-        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
-            // do not generate events for an notify event
-            return false;
-        }
+    public static boolean notifyServiceStopFailure(CamelContext context, Object service, Throwable cause) {
+        return doNotify(context,
+                factory -> factory.createServiceStopFailureEvent(context, service, cause),
+                EventNotifier::isIgnoreServiceEvents);
+    }
 
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
+    public static boolean notifyServiceStartupFailure(CamelContext context, Object service, Throwable cause) {
+        return doNotify(context,
+                factory -> factory.createServiceStartupFailureEvent(context, service, cause),
+                EventNotifier::isIgnoreServiceEvents);
+    }
 
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
+    public static boolean notifyRouteStarted(CamelContext context, Route route) {
+        return doNotify(context,
+                factory -> factory.createRouteStartedEvent(route),
+                EventNotifier::isIgnoreRouteEvents);
+    }
 
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
+    public static boolean notifyRouteStopped(CamelContext context, Route route) {
+        return doNotify(context,
+                factory -> factory.createRouteStoppedEvent(route),
+                EventNotifier::isIgnoreRouteEvents);
+    }
 
-        boolean answer = false;
-        CamelEvent event = null;
-        // optimise for loop using index access to avoid creating iterator object
-        for (int i = 0; i < notifiers.size(); i++) {
-            EventNotifier notifier = notifiers.get(i);
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeSentEvents()) {
-                continue;
-            }
+    public static boolean notifyRouteAdded(CamelContext context, Route route) {
+        return doNotify(context,
+                factory -> factory.createRouteAddedEvent(route),
+                EventNotifier::isIgnoreRouteEvents);
+    }
 
-            if (event == null) {
-                // only create event once
-                event = factory.createExchangeSentEvent(exchange, endpoint, timeTaken);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
+    public static boolean notifyRouteRemoved(CamelContext context, Route route) {
+        return doNotify(context,
+                factory -> factory.createRouteRemovedEvent(route),
+                EventNotifier::isIgnoreRouteEvents);
     }
 
-    public static boolean notifyCamelContextSuspending(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
+    public static boolean notifyExchangeCreated(CamelContext context, Exchange exchange) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeCreatedEvent(exchange),
+                EventNotifier::isIgnoreExchangeCreatedEvent);
+    }
 
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
+    public static boolean notifyExchangeDone(CamelContext context, Exchange exchange) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeCompletedEvent(exchange),
+                EventNotifier::isIgnoreExchangeCompletedEvent);
+    }
 
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
+    public static boolean notifyExchangeFailed(CamelContext context, Exchange exchange) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeFailedEvent(exchange),
+                EventNotifier::isIgnoreExchangeFailedEvents);
+    }
 
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
+    public static boolean notifyExchangeFailureHandling(CamelContext context, Exchange exchange, Processor failureHandler,
+                                                     boolean deadLetterChannel, String deadLetterUri) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeFailureHandlingEvent(exchange, failureHandler, deadLetterChannel, deadLetterUri),
+                EventNotifier::isIgnoreExchangeFailedEvents);
+    }
 
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextSuspendingEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
+    public static boolean notifyExchangeFailureHandled(CamelContext context, Exchange exchange, Processor failureHandler,
+                                                    boolean deadLetterChannel, String deadLetterUri) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeFailureHandledEvent(exchange, failureHandler, deadLetterChannel, deadLetterUri),
+                EventNotifier::isIgnoreExchangeFailedEvents);
     }
 
-    public static boolean notifyCamelContextSuspended(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
+    public static boolean notifyExchangeRedelivery(CamelContext context, Exchange exchange, int attempt) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeRedeliveryEvent(exchange, attempt),
+                EventNotifier::isIgnoreExchangeRedeliveryEvents);
+    }
 
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
+    public static boolean notifyExchangeSending(CamelContext context, Exchange exchange, Endpoint endpoint) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeSendingEvent(exchange, endpoint),
+                EventNotifier::isIgnoreExchangeSendingEvents);
+    }
 
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
+    public static boolean notifyExchangeSent(CamelContext context, Exchange exchange, Endpoint endpoint, long timeTaken) {
+        return doNotifyExchange(context, exchange,
+                factory -> factory.createExchangeSentEvent(exchange, endpoint, timeTaken),
+                EventNotifier::isIgnoreExchangeSentEvents);
+    }
 
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
+    public static boolean notifyCamelContextSuspending(CamelContext context) {
+        return doNotify(context,
+                factory -> factory.createCamelContextSuspendingEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
+    }
 
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextSuspendedEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
+    public static boolean notifyCamelContextSuspended(CamelContext context) {
+        return doNotify(context,
+                factory -> factory.createCamelContextSuspendedEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
     }
 
     public static boolean notifyCamelContextResuming(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
-
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
-
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
-            return false;
-        }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextResumingEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
+        return doNotify(context,
+                factory -> factory.createCamelContextResumingEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
     }
 
     public static boolean notifyCamelContextResumed(CamelContext context) {
-        ManagementStrategy management = context.getManagementStrategy();
-        if (management == null) {
-            return false;
-        }
+        return doNotify(context,
+                factory -> factory.createCamelContextResumedEvent(context),
+                EventNotifier::isIgnoreCamelContextEvents);
+    }
 
-        EventFactory factory = management.getEventFactory();
-        if (factory == null) {
-            return false;
-        }
+    public static boolean notifyCamelContextResumeFailed(CamelContext context, Throwable cause) {
+        return doNotify(context,
+                factory -> factory.createCamelContextResumeFailureEvent(context, cause),
+                EventNotifier::isIgnoreCamelContextEvents);
+    }
 
-        List<EventNotifier> notifiers = management.getEventNotifiers();
-        if (notifiers == null || notifiers.isEmpty()) {
+    private static boolean doNotifyExchange(CamelContext context, Exchange exchange, Function<EventFactory, CamelEvent> eventSupplier, Predicate<EventNotifier> notifierFilter) {
+        if (exchange.getProperty(Exchange.NOTIFY_EVENT, false, Boolean.class)) {
+            // do not generate events for an notify event
             return false;
         }
-
-        boolean answer = false;
-        CamelEvent event = null;
-        for (EventNotifier notifier : notifiers) {
-            if (notifier.isDisabled()) {
-                continue;
-            }
-            if (notifier.isIgnoreCamelContextEvents()) {
-                continue;
-            }
-
-            if (event == null) {
-                // only create event once
-                event = factory.createCamelContextResumedEvent(context);
-                if (event == null) {
-                    // factory could not create event so exit
-                    return false;
-                }
-            }
-            answer |= doNotifyEvent(notifier, event);
-        }
-        return answer;
+        return doNotify(context,
+                eventSupplier,
+                notifierFilter.or(EventNotifier::isIgnoreExchangeEvents));
     }
 
-    public static boolean notifyCamelContextResumeFailed(CamelContext context, Throwable cause) {
+    private static boolean doNotify(CamelContext context, Function<EventFactory, CamelEvent> eventSupplier, Predicate<EventNotifier> notifierFilter) {
         ManagementStrategy management = context.getManagementStrategy();
         if (management == null) {
             return false;
@@ -1057,13 +226,13 @@ public final class EventHelper {
             if (notifier.isDisabled()) {
                 continue;
             }
-            if (notifier.isIgnoreCamelContextEvents()) {
+            if (notifierFilter.test(notifier)) {
                 continue;
             }
 
             if (event == null) {
                 // only create event once
-                event = factory.createCamelContextResumeFailureEvent(context, cause);
+                event = eventSupplier.apply(factory);
                 if (event == null) {
                     // factory could not create event so exit
                     return false;
@@ -1076,11 +245,7 @@ public final class EventHelper {
 
     private static boolean doNotifyEvent(EventNotifier notifier, CamelEvent event) {
         // only notify if notifier is started
-        boolean started = true;
-        if (notifier instanceof StatefulService) {
-            started = ((StatefulService) notifier).isStarted();
-        }
-        if (!started) {
+        if (!ServiceHelper.isStarted(notifier)) {
             LOG.debug("Ignoring notifying event {}. The EventNotifier has not been started yet: {}", event, notifier);
             return false;
         }
diff --git a/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java b/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java
index e4175af..4e94793 100644
--- a/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/EventNotifierSupport.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.support;
 
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventNotifier;
 
 /**
@@ -39,6 +40,11 @@ public abstract class EventNotifierSupport extends ServiceSupport implements Eve
     }
 
     @Override
+    public boolean isEnabled(CamelEvent event) {
+        return true;
+    }
+
+    @Override
     public boolean isDisabled() {
         return false;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/support/ProcessorEndpoint.java b/camel-core/src/main/java/org/apache/camel/support/ProcessorEndpoint.java
index 8dd5687..75f6e01 100644
--- a/camel-core/src/main/java/org/apache/camel/support/ProcessorEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/support/ProcessorEndpoint.java
@@ -29,10 +29,10 @@ import org.apache.camel.Producer;
  * consumers.
  * <p/>
  * <br/>Implementors beware that this endpoint creates producers and consumers which
- * doesn't allow you full control of its lifecycle as a {@link org.apache.camel.Service}
+ * do not allow full control of their lifecycle as {@link org.apache.camel.Service}
  * or {@link org.apache.camel.SuspendableService} would do.
- * If your producers/consumers need more control of its lifecycle it is advised instead to extend
- * {@link DefaultEndpoint}, {@link DefaultProducer}
+ * If your producers/consumers need more control oover their lifecycle it is advised
+ * instead to extend {@link DefaultEndpoint}, {@link DefaultProducer}
  * and {@link DefaultConsumer}.
  */
 public class ProcessorEndpoint extends DefaultPollingEndpoint {
diff --git a/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
index 5ecfa27..e398985 100644
--- a/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
@@ -290,16 +290,6 @@ public class ThrottlingInflightRoutePolicy extends RoutePolicySupport implements
         }
 
         @Override
-        protected void doStart() throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            // noop
-        }
-
-        @Override
         public String toString() {
             return "ContextScopedEventNotifier";
         }
diff --git a/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java b/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
index effa10f..e61d378 100644
--- a/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
@@ -98,6 +98,7 @@ public abstract class ContextTestSupport extends TestSupport {
             throw new Exception("Context must be a ModelCamelContext");
         }
         assertValidContext(context);
+        context.init();
 
         // reduce default shutdown timeout to avoid waiting for 300 seconds
         context.getShutdownStrategy().setTimeout(10);
@@ -182,7 +183,11 @@ public abstract class ContextTestSupport extends TestSupport {
     }
 
     protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = new DefaultCamelContext(createRegistry());
+        DefaultCamelContext context = new DefaultCamelContext(false);
+        if (!useJmx()) {
+            context.disableJMX();
+        }
+        context.setRegistry(createRegistry());
         context.setLoadTypeConverters(isLoadTypeConverters());
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/builder/BuilderWithScopesTest.java b/camel-core/src/test/java/org/apache/camel/builder/BuilderWithScopesTest.java
index 09fb06a..b9d54d5 100644
--- a/camel-core/src/test/java/org/apache/camel/builder/BuilderWithScopesTest.java
+++ b/camel-core/src/test/java/org/apache/camel/builder/BuilderWithScopesTest.java
@@ -88,8 +88,9 @@ public class BuilderWithScopesTest extends TestSupport {
     protected void runTest(RouteBuilder builder, List<String> expected, String header) throws Exception {
 
         order.clear();
-        CamelContext container = new DefaultCamelContext();
+        DefaultCamelContext container = new DefaultCamelContext(false);
         container.disableJMX();
+        container.init();
 
         container.addRoutes(builder);
         container.start();
diff --git a/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoMultipleConsumersTest.java b/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoMultipleConsumersTest.java
index 4c492f3..7a4b1db 100644
--- a/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoMultipleConsumersTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoMultipleConsumersTest.java
@@ -30,7 +30,7 @@ public class DirectNoMultipleConsumersTest extends TestSupport {
 
     @Test
     public void testNoMultipleConsumersTest() throws Exception {
-        CamelContext container = new DefaultCamelContext();
+        CamelContext container = new DefaultCamelContext(false);
         container.disableJMX();
 
         container.addRoutes(new RouteBuilder() {
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java b/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java
index 9938881..2d7228c 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/CamelCustomDefaultThreadPoolProfileTest.java
@@ -37,7 +37,10 @@ public class CamelCustomDefaultThreadPoolProfileTest extends ContextTestSupport
         profile.setAllowCoreThreadTimeOut(true);
         profile.setRejectedPolicy(ThreadPoolRejectedPolicy.Abort);
 
-        camel.getExecutorServiceManager().setDefaultThreadPoolProfile(profile);
+        DefaultExecutorServiceManager executorServiceManager = new DefaultExecutorServiceManager(camel);
+        executorServiceManager.setDefaultThreadPoolProfile(profile);
+        camel.setExecutorServiceManager(executorServiceManager);
+
         return camel;
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/CustomThreadPoolFactoryTest.java b/camel-core/src/test/java/org/apache/camel/impl/CustomThreadPoolFactoryTest.java
index 6d79e98..c27301d 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/CustomThreadPoolFactoryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/CustomThreadPoolFactoryTest.java
@@ -35,7 +35,9 @@ public class CustomThreadPoolFactoryTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getExecutorServiceManager().setThreadPoolFactory(factory);
+        DefaultExecutorServiceManager executorServiceManager = new DefaultExecutorServiceManager(context);
+        executorServiceManager.setThreadPoolFactory(factory);
+        context.setExecutorServiceManager(executorServiceManager);
         return context;
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java
index 06d85b4..fe4f9fe 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java
@@ -27,7 +27,8 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
     @Test
     public void testAutoStartupFalseContextStart() throws Exception {
-        DefaultCamelContext camel = new DefaultCamelContext(new SimpleRegistry());
+        DefaultCamelContext camel = new DefaultCamelContext(false);
+        camel.setRegistry(new SimpleRegistry());
         camel.disableJMX();
         camel.setAutoStartup(false);
 
@@ -61,7 +62,8 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
     @Test
     public void testAutoStartupFalseRouteStart() throws Exception {
-        DefaultCamelContext camel = new DefaultCamelContext(new SimpleRegistry());
+        DefaultCamelContext camel = new DefaultCamelContext(false);
+        camel.setRegistry(new SimpleRegistry());
         camel.disableJMX();
         camel.setAutoStartup(false);
 
@@ -95,7 +97,8 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
     @Test
     public void testAutoStartupTrue() throws Exception {
-        DefaultCamelContext camel = new DefaultCamelContext(new SimpleRegistry());
+        DefaultCamelContext camel = new DefaultCamelContext(false);
+        camel.setRegistry(new SimpleRegistry());
         camel.disableJMX();
         camel.setAutoStartup(true);
 
@@ -123,7 +126,8 @@ public class DefaultCamelContextAutoStartupTest extends TestSupport {
 
     @Test
     public void testAutoStartupFalseRouteOverride() throws Exception {
-        DefaultCamelContext camel = new DefaultCamelContext(new SimpleRegistry());
+        DefaultCamelContext camel = new DefaultCamelContext(false);
+        camel.setRegistry(new SimpleRegistry());
         camel.disableJMX();
         camel.setAutoStartup(false);
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java
index 8f6fa78..8db3669 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java
@@ -42,7 +42,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testAutoCreateComponentsOn() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         Component component = ctx.getComponent("bean");
         assertNotNull(component);
@@ -51,7 +51,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testAutoCreateComponentsOff() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         ctx.setAutoCreateComponents(false);
         Component component = ctx.getComponent("bean");
@@ -60,7 +60,7 @@ public class DefaultCamelContextTest extends TestSupport {
     
     @Test
     public void testAutoStartComponentsOff() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         ctx.start();
 
@@ -82,8 +82,9 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testCreateDefaultUuidGenerator() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
+        ctx.init();
         UuidGenerator uuidGenerator = ctx.getUuidGenerator();
         assertNotNull(uuidGenerator);
         assertEquals(uuidGenerator.getClass(), DefaultUuidGenerator.class);
@@ -91,7 +92,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testGetComponents() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         Component component = ctx.getComponent("bean");
         assertNotNull(component);
@@ -103,7 +104,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testGetEndpoint() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         Endpoint endpoint = ctx.getEndpoint("log:foo");
         assertNotNull(endpoint);
@@ -137,7 +138,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testRemoveEndpoint() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         ctx.getEndpoint("log:foo");
         ctx.getEndpoint("log:bar");
@@ -166,7 +167,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testGetEndpointNotFound() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         try {
             ctx.getEndpoint("xxx:foo");
@@ -178,7 +179,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testGetEndpointUnknownComponentNoScheme() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         try {
             CamelContextHelper.getMandatoryEndpoint(ctx, "unknownname");
@@ -190,7 +191,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testRestartCamelContext() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         ctx.addRoutes(new RouteBuilder() {
             @Override
@@ -212,8 +213,9 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testName() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
+        ctx.init();
         assertNotNull("Should have a default name", ctx.getName());
         ctx.setName("foo");
         assertEquals("foo", ctx.getName());
@@ -224,14 +226,14 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testVersion() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         assertNotNull("Should have a version", ctx.getVersion());
     }
 
     @Test
     public void testHasComponent() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         assertNull(ctx.hasComponent("log"));
 
@@ -241,7 +243,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testGetComponent() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         ctx.addComponent("log", new LogComponent());
 
@@ -258,7 +260,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testHasEndpoint() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
         ctx.getEndpoint("mock://foo");
 
@@ -278,7 +280,7 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testGetRouteById() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
         ctx.disableJMX();
 
         // should not throw NPE (CAMEL-3198)
@@ -304,7 +306,8 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testSuspend() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
+        ctx.disableJMX();
 
         assertEquals(false, ctx.isStarted());
         assertEquals(false, ctx.isSuspended());
@@ -328,7 +331,8 @@ public class DefaultCamelContextTest extends TestSupport {
 
     @Test
     public void testResume() throws Exception {
-        DefaultCamelContext ctx = new DefaultCamelContext();
+        DefaultCamelContext ctx = new DefaultCamelContext(false);
+        ctx.disableJMX();
 
         assertEquals(false, ctx.isStarted());
         assertEquals(false, ctx.isSuspended());
diff --git a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
index 9bce692..f05a20a 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
@@ -62,18 +62,6 @@ public class EventNotifierEventsTest extends ContextTestSupport {
             public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
-
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
index bfb3d34..c0204c7 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
@@ -56,14 +56,6 @@ public class EventNotifierExchangeCompletedTest extends ContextTestSupport {
                 // should be from a specific endpoint or route
                 // just return true for the events you like
             }
-
-            protected void doStart() throws Exception {
-                // noop
-            }
-
-            protected void doStop() throws Exception {
-                // noop
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
index 24962ac..8e07860 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
@@ -52,10 +52,6 @@ public class EventNotifierExchangeSentTest extends ContextTestSupport {
                 events.add(event);
             }
 
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
             @Override
             protected void doStart() throws Exception {
                 // filter out unwanted events
@@ -67,10 +63,6 @@ public class EventNotifierExchangeSentTest extends ContextTestSupport {
                 setIgnoreExchangeFailedEvents(true);
                 setIgnoreExchangeRedeliveryEvents(true);
             }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
index a30e4d3..4f45c1a 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
@@ -61,18 +61,6 @@ public class EventNotifierFailureHandledEventsTest extends ContextTestSupport {
             public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
-
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
index bd0754e..eb61344 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
@@ -59,20 +59,12 @@ public class EventNotifierRedeliveryEventsTest extends ContextTestSupport {
                 events.add(event);
             }
 
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
             @Override
             protected void doStart() throws Exception {
                 setIgnoreCamelContextEvents(true);
                 setIgnoreRouteEvents(true);
                 setIgnoreServiceEvents(true);
             }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
index 5d3260e..142e86d 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
@@ -46,6 +46,7 @@ public class EventNotifierServiceStoppingFailedEventTest extends ContextTestSupp
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.addService(new MyService("A", false));
         context.addService(new MyService("B", true));
         context.addService(new MyService("C", false));
@@ -54,18 +55,6 @@ public class EventNotifierServiceStoppingFailedEventTest extends ContextTestSupp
             public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
-
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
index ada378c..c1c521d 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
@@ -65,38 +65,18 @@ public class MultipleEventNotifierEventsTest extends ContextTestSupport {
             public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
-
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
             public void notify(CamelEvent event) throws Exception {
                 events2.add(event);
             }
 
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
             @Override
             protected void doStart() throws Exception {
                 setIgnoreCamelContextEvents(true);
                 setIgnoreServiceEvents(true);
                 setIgnoreRouteEvents(true);
             }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/impl/health/DefaultHealthCheckServiceTest.java b/camel-core/src/test/java/org/apache/camel/impl/health/DefaultHealthCheckServiceTest.java
index d7bd42e..72d18aa 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/health/DefaultHealthCheckServiceTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/health/DefaultHealthCheckServiceTest.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.health.HealthCheck;
+import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.health.HealthCheckResultBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.Assert;
@@ -52,7 +53,7 @@ public class DefaultHealthCheckServiceTest {
             });
 
             context = new DefaultCamelContext();
-            context.setHealthCheckRegistry(registry);
+            context.setExtension(HealthCheckRegistry.class, registry);
             context.addService(service);
             context.start();
 
diff --git a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java
index 1a9769c..2ff5bc7 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java
@@ -57,6 +57,7 @@ public class SentExchangeEventNotifierIssueTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().addEventNotifier(notifier);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java
index 304e3e3..65cdb2c 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java
@@ -59,6 +59,7 @@ public class SentExchangeEventNotifierTwoIssueTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().addEventNotifier(notifier);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
index a4e1405..1deb46e 100644
--- a/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
@@ -52,18 +52,6 @@ public class AddEventNotifierTest extends ContextTestSupport {
             public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
-
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         };
         // must add notifier as a service so its started
         context.addService(notifier);
diff --git a/camel-core/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java b/camel-core/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
index 2898840..17fa605 100644
--- a/camel-core/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/CamelContextDisableJmxTest.java
@@ -26,7 +26,7 @@ public class CamelContextDisableJmxTest extends Assert {
 
     @Test
     public void testDisableJmx() throws Exception {
-        CamelContext context = new DefaultCamelContext();
+        CamelContext context = new DefaultCamelContext(false);
         context.disableJMX();
         context.start();
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java b/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
index 66d5c8e..2acbbf7 100644
--- a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
@@ -25,6 +25,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.DefaultCamelContext;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -72,6 +73,7 @@ public class JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest extends Con
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setOnlyRegisterProcessorWithCustomId(true);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
index 2d5f331..a3df28c 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedAggregateControllerTest.java
@@ -20,6 +20,7 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedAggregateProcessorMBean;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.processor.aggregate.AggregateController;
@@ -160,7 +161,7 @@ public class ManagedAggregateControllerTest extends ManagementTestSupport {
         assertEquals(1, pending.intValue());
 
         // we can also use the client mbean
-        ManagedAggregateProcessorMBean client = context.adapt(ManagedCamelContext.class).getManagedProcessor("myAggregator", ManagedAggregateProcessorMBean.class);
+        ManagedAggregateProcessorMBean client = context.getExtension(ManagedCamelContext.class).getManagedProcessor("myAggregator", ManagedAggregateProcessorMBean.class);
         assertNotNull(client);
 
         assertEquals(1, client.getCompletedByForce());
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
index 48d458b..70715b0 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextEmptyRouteTest.java
@@ -29,6 +29,7 @@ public class ManagedCamelContextEmptyRouteTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         // to force a different management name than the camel id
         context.getManagementNameStrategy().setNamePattern("20-#name#");
         return context;
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
index 805d722..8444291 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextPropertiesTest.java
@@ -30,6 +30,7 @@ public class ManagedCamelContextPropertiesTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         // to force a different management name than the camel id
         context.getManagementNameStrategy().setNamePattern("19-#name#");
         return context;
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
index 24f6a027..baa3dfb 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
@@ -43,10 +43,6 @@ public class ManagedCamelContextRestartTest extends ManagementTestSupport {
                 // Empty.
             }
             @Override
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-            @Override
             protected void doStart() throws Exception {
                 starts++;
             }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
index e13035c..f46c126 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
@@ -25,6 +25,7 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -36,6 +37,7 @@ public class ManagedCamelContextTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         // to force a different management name than the camel id
         context.getManagementNameStrategy().setNamePattern("19-#name#");
         return context;
@@ -48,7 +50,7 @@ public class ManagedCamelContextTest extends ManagementTestSupport {
             return;
         }
 
-        ManagedCamelContextMBean client = context.adapt(ManagedCamelContext.class).getManagedCamelContext();
+        ManagedCamelContextMBean client = context.getExtension(ManagedCamelContext.class).getManagedCamelContext();
         assertNotNull(client);
 
         assertEquals("camel-1", client.getCamelId());
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
index a4c4523..e602b95 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
@@ -45,6 +45,7 @@ public class ManagedComponentTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setCreateConnector(true);
         context.addComponent("my-verifiable-component", new MyVerifiableComponent());
         context.addComponent("direct", new DirectComponent());
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
index 9318c2c..038541f 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
@@ -32,6 +32,7 @@ public class ManagedDynamicRouterTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
index afe5628..6435a5b 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointUtilizationStatisticsTest.java
@@ -29,6 +29,7 @@ public class ManagedEndpointUtilizationStatisticsTest extends ManagementTestSupp
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
+        camelContext.init();
         // turn on runtime statistics in extended mode
         camelContext.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return camelContext;
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
index e50ff8c..d4a5fda 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
@@ -32,6 +32,7 @@ public class ManagedEnricherTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
index 63f198d..84381bc 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
@@ -21,6 +21,7 @@ import javax.management.ObjectName;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.builder.RouteBuilder;
 import org.junit.Test;
@@ -44,7 +45,7 @@ public class ManagedInlinedProcessorTest extends ManagementTestSupport {
         Long counter = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
         assertEquals(1L, counter.longValue());
 
-        ManagedProcessorMBean mb = context.adapt(ManagedCamelContext.class).getManagedProcessor("custom", ManagedProcessorMBean.class);
+        ManagedProcessorMBean mb = context.getExtension(ManagedCamelContext.class).getManagedProcessor("custom");
         assertNotNull(mb);
         assertEquals(1L, mb.getExchangesCompleted());
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
index cddddc2..05a4787 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedListComponentsTest.java
@@ -29,6 +29,7 @@ public class ManagedListComponentsTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         // to force a different management name than the camel id
         context.getManagementNameStrategy().setNamePattern("20-#name#");
         return context;
@@ -37,6 +38,7 @@ public class ManagedListComponentsTest extends ManagementTestSupport {
     @Test
     public void testListComponents() throws Exception {
         // JMX tests dont work well on AIX CI servers (hangs them)
+        context.init();
         if (isPlatform("aix")) {
             return;
         }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
index b62b01d..1145461 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternFixedTest.java
@@ -28,6 +28,7 @@ public class ManagedNamePatternFixedTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementNameStrategy().setNamePattern("cool");
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
index 14afd0f..61350cb 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternIncludeHostNameTest.java
@@ -28,6 +28,7 @@ public class ManagedNamePatternIncludeHostNameTest extends ManagementTestSupport
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         DefaultManagementObjectNameStrategy naming = (DefaultManagementObjectNameStrategy)context.getManagementStrategy().getManagementObjectNameStrategy();
         naming.setHostName("localhost");
         context.getManagementStrategy().getManagementAgent().setIncludeHostName(true);
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
index 0a1be7c..c4073fc 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedNamePatternTest.java
@@ -28,6 +28,7 @@ public class ManagedNamePatternTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementNameStrategy().setNamePattern("cool-#name#");
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
index cf94729..cae5496 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedPollEnricherTest.java
@@ -32,6 +32,7 @@ public class ManagedPollEnricherTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
index 5d54acb..9915321 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRecipientListRegisterAlwaysTest.java
@@ -32,6 +32,7 @@ public class ManagedProducerRecipientListRegisterAlwaysTest extends ManagementTe
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setRegisterAlways(true);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
index 7d58ee9..83350bd 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedProducerRouteAddRemoveRegisterAlwaysTest.java
@@ -33,6 +33,7 @@ public class ManagedProducerRouteAddRemoveRegisterAlwaysTest extends ManagementT
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setRegisterAlways(true);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
index d14a19b..20dad86 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
@@ -32,6 +32,7 @@ public class ManagedRecipientListTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
index fcf953e..b501cf2 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteSuspendAndResumeTest.java
@@ -23,6 +23,7 @@ import javax.management.ObjectName;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.ServiceStatus;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedSuspendableRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -88,7 +89,7 @@ public class ManagedRouteSuspendAndResumeTest extends ManagementTestSupport {
         // this time the file is consumed
         mock.assertIsSatisfied();
 
-        ManagedSuspendableRouteMBean route = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedSuspendableRouteMBean.class);
+        ManagedSuspendableRouteMBean route = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo", ManagedSuspendableRouteMBean.class);
         assertNotNull(route);
 
         assertEquals(2, route.getExchangesCompleted());
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
index 1007f6a..05db4d6 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
@@ -32,6 +32,7 @@ public class ManagedRoutingSlipTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
index e17b23c..9b987a6 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedSanitizeTest.java
@@ -28,6 +28,7 @@ public class ManagedSanitizeTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setMask(true);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
index e9d1cac..f050615 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
@@ -32,6 +32,7 @@ public class ManagedSendDynamicProcessorTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
index dbc62e1..a2da62a 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
@@ -32,6 +32,7 @@ public class ManagedStatisticsLevelOffTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         // disable it by default
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Off);
         return context;
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
index 941989a..63d3c11 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
@@ -31,7 +31,7 @@ public class ManagedStatisticsLevelRoutesOnlyTest extends ManagementTestSupport
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-
+        context.init();
         // only routes
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.RoutesOnly);
         return context;
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
index 91b21cb..7db1660 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
@@ -32,6 +32,7 @@ public class ManagedWireTapTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
index 9cd573e..95acb4a 100644
--- a/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
@@ -49,18 +49,6 @@ public class RemoveEventNotifierTest extends ContextTestSupport {
             public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
-
-            public boolean isEnabled(CamelEvent event) {
-                return true;
-            }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         };
         context.getManagementStrategy().addEventNotifier(notifier);
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentExampleTest.java b/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentExampleTest.java
index 8a42e67..1bfdb7c 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentExampleTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentExampleTest.java
@@ -27,6 +27,7 @@ public class EventNotifierExchangeSentExampleTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = (DefaultCamelContext) super.createCamelContext();
+        context.init();
 
         // START SNIPPET: e1
         // add event notifier where we can log the times it took to process
diff --git a/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java b/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java
index d958be7..e8c6ebd 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java
@@ -32,17 +32,5 @@ public class MyLoggingSentEventNotifer extends EventNotifierSupport {
 
     }
 
-    public boolean isEnabled(CamelEvent event) {
-        return true;
-    }
-
-    protected void doStart() throws Exception {
-        // noop
-    }
-
-    protected void doStop() throws Exception {
-        // noop
-    }
-
 }
 // END SNIPPET: e1
diff --git a/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java b/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java
index 1ee8d5d..2769eff 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java
@@ -37,16 +37,4 @@ public class MySentEventNotifier extends EventNotifierSupport {
         }
     }
 
-    public boolean isEnabled(CamelEvent event) {
-        return true;
-    }
-
-    protected void doStart() throws Exception {
-        // noop
-    }
-
-    protected void doStop() throws Exception {
-        // noop
-    }
-
 }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ProducerTemplateDisableEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/ProducerTemplateDisableEventNotifierTest.java
index 34887d1..26f040b 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ProducerTemplateDisableEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ProducerTemplateDisableEventNotifierTest.java
@@ -30,6 +30,7 @@ public class ProducerTemplateDisableEventNotifierTest extends ContextTestSupport
     @Override
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = (DefaultCamelContext) super.createCamelContext();
+        context.init();
         context.getManagementStrategy().addEventNotifier(notifier);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java
index 347c103..95ef715 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java
@@ -32,6 +32,7 @@ public class SplitterUseOriginalNotPropagateExceptionTest extends ContextTestSup
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().addEventNotifier(notifier);
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java b/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java
index 25a52fb..b8e6f4a 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java
@@ -44,14 +44,6 @@ public class UnitOfWorkProducerTest extends ContextTestSupport {
             public boolean isEnabled(CamelEvent event) {
                 return event instanceof ExchangeCompletedEvent;
             }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java
index d195735..5adff5f 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java
@@ -70,10 +70,6 @@ public class AsyncEndpointEventNotifierSendingTest extends ContextTestSupport {
             @Override
             protected void doStart() throws Exception {
             }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java
index ad619a8..0c593ea 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java
@@ -72,14 +72,6 @@ public class AsyncEndpointEventNotifierTest extends ContextTestSupport {
                 }
                 return false;
             }
-
-            @Override
-            protected void doStart() throws Exception {
-            }
-
-            @Override
-            protected void doStop() throws Exception {
-            }
         });
         return context;
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherAsyncUnhandledExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherAsyncUnhandledExceptionTest.java
index 3ed4e1f..52fcea4 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherAsyncUnhandledExceptionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherAsyncUnhandledExceptionTest.java
@@ -62,6 +62,7 @@ public class EnricherAsyncUnhandledExceptionTest extends ContextTestSupport {
 
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
+        camelContext.init();
         ShutdownStrategy shutdownStrategy = camelContext.getShutdownStrategy();
         camelContext.addComponent("async", new MyAsyncComponent());
         shutdownStrategy.setTimeout(1000);
diff --git a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java
index f631ecf..99a6ea9 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java
@@ -16,14 +16,13 @@
  */
 package org.apache.camel.processor.enricher;
 
-import java.util.EventObject;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.DefaultManagementStrategy;
+import org.apache.camel.impl.DefaultManagementStrategy;
 import org.apache.camel.processor.async.MyAsyncComponent;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
@@ -55,6 +54,7 @@ public class EnricherSendEventTest extends ContextTestSupport {
     
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
+        camelContext.init();
         ShutdownStrategy shutdownStrategy = camelContext.getShutdownStrategy();
         camelContext.addComponent("async", new MyAsyncComponent());
         
@@ -103,19 +103,6 @@ public class EnricherSendEventTest extends ContextTestSupport {
                 exchangeSentEvent.incrementAndGet();
             }
         }
-
-        @Override
-        public boolean isEnabled(CamelEvent event) {
-            return true;
-        }
-
-        @Override
-        protected void doStart() throws Exception {
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-        }
     }
 
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java
index 7d57743..d0581bd 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java
@@ -35,6 +35,7 @@ public class DynamicRouterEventNotifierTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().addEventNotifier(notifier);
         return context;
     }
@@ -95,16 +96,6 @@ public class DynamicRouterEventNotifierTest extends ContextTestSupport {
             return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
-        @Override
-        protected void doStart() throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            // noop
-        }
-
         public int getSending() {
             return sending;
         }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java
index b1e10d5..d811177 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java
@@ -32,6 +32,7 @@ public class RecipientListEventNotifierTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().addEventNotifier(notifier);
         return context;
     }
@@ -78,16 +79,6 @@ public class RecipientListEventNotifierTest extends ContextTestSupport {
             return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
-        @Override
-        protected void doStart() throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            // noop
-        }
-
         public int getSending() {
             return sending;
         }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java
index ba55a70..e17da41 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java
@@ -32,6 +32,7 @@ public class RoutingSlipEventNotifierTest extends ContextTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        context.init();
         context.getManagementStrategy().addEventNotifier(notifier);
         return context;
     }
@@ -79,16 +80,6 @@ public class RoutingSlipEventNotifierTest extends ContextTestSupport {
             return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
-        @Override
-        protected void doStart() throws Exception {
-            // noop
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            // noop
-        }
-
         public int getSending() {
             return sending;
         }
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
index 4e42f02..4e5d5a0 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.runtimecatalog.impl.JSonSchemaHelper;
 import org.junit.Test;
 
@@ -27,7 +28,7 @@ public class JSonSchemaHelperTest extends ContextTestSupport {
 
     @Test
     public void testParseJsonSchemaMustBeOrdered() throws Exception {
-        String json = context.getRuntimeCamelCatalog().componentJSonSchema("bean");
+        String json = context.getExtension(RuntimeCamelCatalog.class).componentJSonSchema("bean");
         assertNotNull(json);
 
         List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
index 8444a7c..e03b575 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
@@ -46,7 +46,7 @@ public class RuntimeCamelCatalogTest {
 
     @Test
     public void testFromCamelContext() throws Exception {
-        String schema = new DefaultCamelContext().getRuntimeCamelCatalog().modelJSonSchema("choice");
+        String schema = new DefaultCamelContext().getExtension(RuntimeCamelCatalog.class).modelJSonSchema("choice");
         assertNotNull(schema);
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContext.java b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java
similarity index 73%
rename from camel-core/src/main/java/org/apache/camel/management/ManagedCamelContext.java
rename to camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java
index 4de1dd8..e5fba73 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedCamelContext.java
+++ b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java
@@ -14,14 +14,29 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.api.management;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 
-public interface ManagedCamelContext extends CamelContext {
+public interface ManagedCamelContext {
+
+    /**
+     * Gets the managed Camel CamelContext client api
+     */
+    ManagedCamelContextMBean getManagedCamelContext();
+
+    /**
+     * Gets the managed processor client api from any of the routes which with the given id
+     *
+     * @param id id of the processor
+     * @return the processor or <tt>null</tt> if not found
+     */
+    default ManagedProcessorMBean getManagedProcessor(String id) {
+        return getManagedProcessor(id, ManagedProcessorMBean.class);
+    }
+
     /**
      * Gets the managed processor client api from any of the routes which with the given id
      *
@@ -36,15 +51,20 @@ public interface ManagedCamelContext extends CamelContext {
      * Gets the managed route client api with the given route id
      *
      * @param routeId id of the route
-     * @param type the managed route type from the {@link org.apache.camel.api.management.mbean} package.
      * @return the route or <tt>null</tt> if not found
-     * @throws IllegalArgumentException if the type is not compliant
      */
-    <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type);
+    default ManagedRouteMBean getManagedRoute(String routeId) {
+        return getManagedRoute(routeId, ManagedRouteMBean.class);
+    }
 
     /**
-     * Gets the managed Camel CamelContext client api
+     * Gets the managed route client api with the given route id
+     *
+     * @param routeId id of the route
+     * @param type the managed route type from the {@link org.apache.camel.api.management.mbean} package.
+     * @return the route or <tt>null</tt> if not found
+     * @throws IllegalArgumentException if the type is not compliant
      */
-    ManagedCamelContextMBean getManagedCamelContext();
+    <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type);
 
 }
diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/EndpointTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/EndpointTest.java
index f425e20..5b850bd 100644
--- a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/EndpointTest.java
+++ b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/EndpointTest.java
@@ -31,7 +31,7 @@ public class EndpointTest {
 
     @Before
     public void setUp() throws Exception {
-        context = new DefaultCamelContext();
+        context = new DefaultCamelContext(false);
         context.disableJMX();
         context.start();
     }
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
index febcc48..013baef 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
@@ -93,7 +93,7 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic
         this.blueprintContainer = blueprintContainer;
     }
    
-    public void init() throws Exception {
+    public void doInit() {
         log.trace("init {}", this);
 
         // add service listener so we can be notified when blueprint container is done
diff --git a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java
index 560b6b8..567607f 100644
--- a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java
+++ b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java
@@ -79,14 +79,6 @@ public class OsgiCamelContextPublisher extends EventNotifierSupport {
     }
 
     @Override
-    protected void doStart() throws Exception {
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-    }
-
-    @Override
     protected void doShutdown() throws Exception {
         // clear and unregister any left-over registration (which should not happen)
         if (!registrations.isEmpty()) {
diff --git a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index 865f8b9..3bc35a4 100644
--- a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -52,7 +52,7 @@ import org.apache.camel.health.HealthCheckRepository;
 import org.apache.camel.health.HealthCheckService;
 import org.apache.camel.management.DefaultManagementAgent;
 import org.apache.camel.management.DefaultManagementLifecycleStrategy;
-import org.apache.camel.management.DefaultManagementStrategy;
+import org.apache.camel.impl.DefaultManagementStrategy;
 import org.apache.camel.management.ManagedManagementStrategy;
 import org.apache.camel.model.ContextScanDefinition;
 import org.apache.camel.model.FromDefinition;
@@ -83,6 +83,7 @@ import org.apache.camel.model.validator.ValidatorsDefinition;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.processor.interceptor.HandleFault;
 import org.apache.camel.runtimecatalog.JSonSchemaResolver;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.Debugger;
@@ -192,7 +193,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         BacklogTracer backlogTracer = getBeanForType(BacklogTracer.class);
         if (backlogTracer != null) {
             LOG.info("Using custom BacklogTracer: {}", backlogTracer);
-            getContext().addInterceptStrategy(backlogTracer);
+            getContext().addService(backlogTracer);
         }
         HandleFault handleFault = getBeanForType(HandleFault.class);
         if (handleFault != null) {
@@ -242,7 +243,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         JSonSchemaResolver jsonSchemaResolver = getBeanForType(JSonSchemaResolver.class);
         if (jsonSchemaResolver != null) {
             LOG.info("Using custom JSonSchemaResolver: {}", jsonSchemaResolver);
-            getContext().getRuntimeCamelCatalog().setJSonSchemaResolver(jsonSchemaResolver);
+            getContext().getExtension(RuntimeCamelCatalog.class).setJSonSchemaResolver(jsonSchemaResolver);
         }
         // custom type converters defined as <bean>s
         Map<String, TypeConverters> typeConverters = getContext().getRegistry().findByTypeWithName(TypeConverters.class);
@@ -341,9 +342,9 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         if (healthCheckRegistry != null) {
             healthCheckRegistry.setCamelContext(getContext());
             LOG.info("Using HealthCheckRegistry: {}", healthCheckRegistry);
-            getContext().setHealthCheckRegistry(healthCheckRegistry);
+            getContext().setExtension(HealthCheckRegistry.class, healthCheckRegistry);
         } else {
-            healthCheckRegistry = getContext().getHealthCheckRegistry();
+            healthCheckRegistry = HealthCheckRegistry.get(getContext());
             healthCheckRegistry.setCamelContext(getContext());
         }
         // Health check repository
diff --git a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java
index 9c8a80b..ace7400 100644
--- a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java
+++ b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java
@@ -46,10 +46,9 @@ public class CouchbaseConsumer extends DefaultScheduledPollConsumer {
         this.view = client.getView(endpoint.getDesignDocumentName(), endpoint.getViewName());
         this.query = new Query();
         init();
-
     }
 
-    private void init() {
+    protected void doInit() {
 
         query.setIncludeDocs(true);
 
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpSendDynamicAware.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpSendDynamicAware.java
index 86fb192..473d434 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpSendDynamicAware.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpSendDynamicAware.java
@@ -53,7 +53,7 @@ public class HttpSendDynamicAware implements SendDynamicAware {
 
     @Override
     public DynamicAwareEntry prepare(Exchange exchange, String uri) throws Exception {
-        RuntimeCamelCatalog catalog = exchange.getContext().getRuntimeCamelCatalog();
+        RuntimeCamelCatalog catalog = exchange.getContext().getExtension(RuntimeCamelCatalog.class);
         Map<String, String> properties = catalog.endpointProperties(uri);
         Map<String, String> lenient = catalog.endpointLenientProperties(uri);
         return new DynamicAwareEntry(uri, properties, lenient);
@@ -82,7 +82,7 @@ public class HttpSendDynamicAware implements SendDynamicAware {
                     params.remove("path");
                 }
             }
-            RuntimeCamelCatalog catalog = exchange.getContext().getRuntimeCamelCatalog();
+            RuntimeCamelCatalog catalog = exchange.getContext().getExtension(RuntimeCamelCatalog.class);
             return catalog.asEndpointUri(scheme, params, false);
         } else {
             // no need for optimisation
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
index 712d383..45e2cd0 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringDifferTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
@@ -37,19 +37,19 @@ public class CamelJmxConsumerObserveAttributeMatchStringDifferTest extends Camel
         getMockEndpoint("mock:result").message(0).body().contains("<attributeName>Tracing</attributeName>");
 
         // change the attribute so JMX triggers but should be filtered
-        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setStatisticsEnabled(true);
 
         // change the attribute so JMX triggers
-        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(true);
 
         // change the attribute so JMX triggers
-        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(false);
 
         // change the attribute so JMX triggers
-        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
index b25ba88..1b56455 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeMatchStringTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
@@ -37,19 +37,19 @@ public class CamelJmxConsumerObserveAttributeMatchStringTest extends CamelTestSu
         getMockEndpoint("mock:result").message(0).body().contains("<attributeName>Tracing</attributeName>");
 
         // change the attribute so JMX triggers but should be filtered
-        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setStatisticsEnabled(true);
 
         // change the attribute so JMX triggers
-        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(true);
 
         // change the attribute so JMX triggers
-        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(false);
 
         // change the attribute so JMX triggers
-        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
index 2d39942..ae7dd13 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerObserveAttributeTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
@@ -37,11 +37,11 @@ public class CamelJmxConsumerObserveAttributeTest extends CamelTestSupport {
         getMockEndpoint("mock:result").message(0).body().contains("<attributeName>Tracing</attributeName>");
 
         // change the attribute so JMX triggers but should be filtered
-        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setStatisticsEnabled(true);
 
         // change the attribute so JMX triggers
-        mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
index da283a6..0f44e40 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/CamelJmxConsumerTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.jmx;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
@@ -36,7 +36,7 @@ public class CamelJmxConsumerTest extends CamelTestSupport {
         getMockEndpoint("mock:result").message(0).body().contains("<newValue>true</newValue>");
 
         // change the attribute so JMX triggers
-        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute("foo", ManagedRouteMBean.class);
+        ManagedRouteMBean mr = context.getExtension(ManagedCamelContext.class).getManagedRoute("foo");
         mr.setTracing(true);
 
         assertMockEndpointsSatisfied();
diff --git a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/engine/DefaultCamelReactiveStreamsService.java b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/engine/DefaultCamelReactiveStreamsService.java
index d172fa1..bbac464 100644
--- a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/engine/DefaultCamelReactiveStreamsService.java
+++ b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/engine/DefaultCamelReactiveStreamsService.java
@@ -86,7 +86,7 @@ public class DefaultCamelReactiveStreamsService extends ServiceSupport implement
         return ReactiveStreamsConstants.DEFAULT_SERVICE_NAME;
     }
 
-    private void init() {
+    protected void doInit() {
         if (this.workerPool == null) {
             this.workerPool = context.getExecutorServiceManager().newThreadPool(
                 this,
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
index 7df790f..4e584d0 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
@@ -343,7 +343,7 @@ public class CamelAutoConfiguration {
     static void afterPropertiesSet(ApplicationContext applicationContext, CamelContext camelContext) throws Exception {
         final ManagementStrategy managementStrategy = camelContext.getManagementStrategy();
 
-        registerPropertyForBeanType(applicationContext, BacklogTracer.class, camelContext::addInterceptStrategy);
+        registerPropertyForBeanType(applicationContext, BacklogTracer.class, bt -> camelContext.setExtension(BacklogTracer.class, bt));
         registerPropertyForBeanType(applicationContext, HandleFault.class, camelContext::addInterceptStrategy);
         registerPropertyForBeanType(applicationContext, InflightRepository.class, camelContext::setInflightRepository);
         registerPropertyForBeanType(applicationContext, AsyncProcessorAwaitManager.class, camelContext::setAsyncProcessorAwaitManager);
@@ -397,9 +397,9 @@ public class CamelAutoConfiguration {
         if (healthCheckRegistry != null) {
             healthCheckRegistry.setCamelContext(camelContext);
             LOG.info("Using HealthCheckRegistry: {}", healthCheckRegistry);
-            camelContext.setHealthCheckRegistry(healthCheckRegistry);
+            camelContext.setExtension(HealthCheckRegistry.class, healthCheckRegistry);
         } else {
-            healthCheckRegistry = camelContext.getHealthCheckRegistry();
+            healthCheckRegistry = HealthCheckRegistry.get(camelContext);
             healthCheckRegistry.setCamelContext(camelContext);
         }
 
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
index f2a4d7d..7dceb96 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
@@ -34,7 +34,7 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.api.management.mbean.RouteError;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.RouteDefinition;
@@ -160,7 +160,7 @@ public class CamelRoutesEndpoint {
 
     private void resetRoute(String id) {
         try {
-            ManagedRouteMBean managedRouteMBean = camelContext.adapt(ManagedCamelContext.class).getManagedRoute(id, ManagedRouteMBean.class);
+            ManagedRouteMBean managedRouteMBean = camelContext.getExtension(ManagedCamelContext.class).getManagedRoute(id);
             if (managedRouteMBean != null) {
                 managedRouteMBean.reset(true);
             }
@@ -284,7 +284,7 @@ public class CamelRoutesEndpoint {
             super(route);
 
             if (camelContext.getManagementStrategy().getManagementAgent() != null) {
-                this.routeDetails = new RouteDetails(camelContext.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class));
+                this.routeDetails = new RouteDetails(camelContext.getExtension(ManagedCamelContext.class).getManagedRoute(route.getId()));
             }
         }
 
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
index a7a51fe..f25bad9 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetailsInfo.java
@@ -19,8 +19,7 @@ package org.apache.camel.spring.boot.model;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Route;
-import org.apache.camel.api.management.mbean.ManagedRouteMBean;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 
 /**
  * Container for exposing {@link org.apache.camel.Route} information
@@ -35,7 +34,7 @@ public class RouteDetailsInfo extends RouteInfo {
         super(route);
 
         if (camelContext.getManagementStrategy().getManagementAgent() != null) {
-            this.routeDetails = new RouteDetails(camelContext.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class));
+            this.routeDetails = new RouteDetails(camelContext.getExtension(ManagedCamelContext.class).getManagedRoute(route.getId()));
         }
     }
 
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/health/HealthCheckRegistryTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/health/HealthCheckRegistryTest.java
index 485bd3c..1544220 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/health/HealthCheckRegistryTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/health/HealthCheckRegistryTest.java
@@ -20,6 +20,7 @@ import java.util.Collection;
 import java.util.Optional;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.health.HealthCheckRepository;
 import org.apache.camel.impl.health.RegistryRepository;
 import org.apache.camel.impl.health.RoutePerformanceCounterEvaluators;
@@ -57,7 +58,7 @@ public class HealthCheckRegistryTest extends Assert {
 
     @Test
     public void testRepositories() {
-        Collection<HealthCheckRepository> repos = context.getHealthCheckRegistry().getRepositories();
+        Collection<HealthCheckRepository> repos = HealthCheckRegistry.get(context).getRepositories();
 
         Assert.assertNotNull(repos);
         Assert.assertEquals(2, repos.size());
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
index 1233302..8ca938d 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
@@ -63,9 +63,11 @@ public class SpringCamelContext extends DefaultCamelContext implements Lifecycle
     private boolean shutdownEager = true;
 
     public SpringCamelContext() {
+        setManagementMBeanAssembler(new SpringManagementMBeanAssembler(this));
     }
 
     public SpringCamelContext(ApplicationContext applicationContext) {
+        this();
         setApplicationContext(applicationContext);
     }
 
@@ -235,12 +237,6 @@ public class SpringCamelContext extends DefaultCamelContext implements Lifecycle
         }
     }
 
-    @Override
-    protected ManagementMBeanAssembler createManagementMBeanAssembler() {
-        // use a spring mbean assembler
-        return new SpringManagementMBeanAssembler(this);
-    }
-
     protected EventEndpoint createEventEndpoint() {
         return getEndpoint("spring-event:default", EventEndpoint.class);
     }
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/health/HealthCheckRegistryTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/health/HealthCheckRegistryTest.java
index dd483bb..2dd85df 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/health/HealthCheckRegistryTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/health/HealthCheckRegistryTest.java
@@ -20,6 +20,7 @@ import java.util.Collection;
 import java.util.Optional;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.health.HealthCheckRepository;
 import org.apache.camel.impl.health.RegistryRepository;
 import org.apache.camel.impl.health.RoutePerformanceCounterEvaluators;
@@ -35,7 +36,7 @@ public class HealthCheckRegistryTest {
     @Test
     public void testRepositories() {
         CamelContext context = createContext("org/apache/camel/spring/health/HealthCheckRegistryTest.xml");
-        Collection<HealthCheckRepository> repos = context.getHealthCheckRegistry().getRepositories();
+        Collection<HealthCheckRepository> repos = HealthCheckRegistry.get(context).getRepositories();
 
         Assert.assertNotNull(repos);
         Assert.assertEquals(2, repos.size());
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
index b40be29..73231d1 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
@@ -30,19 +30,8 @@ public class MyEventNotifier extends EventNotifierSupport {
         events.add(event);
     }
 
-    public boolean isEnabled(CamelEvent event) {
-        return true;
-    }
-
     public List<CamelEvent> getEvents() {
         return events;
     }
 
-    @Override
-    protected void doStart() throws Exception {
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-    }
 }
diff --git a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/health/HealthCheckRegistryTest.java b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/health/HealthCheckRegistryTest.java
index 706574b..7aa82f3 100644
--- a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/health/HealthCheckRegistryTest.java
+++ b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/health/HealthCheckRegistryTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.test.blueprint.health;
 import java.util.Collection;
 import java.util.Optional;
 
+import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.health.HealthCheckRepository;
 import org.apache.camel.impl.health.RegistryRepository;
 import org.apache.camel.impl.health.RoutePerformanceCounterEvaluators;
@@ -35,7 +36,7 @@ public class HealthCheckRegistryTest extends CamelBlueprintTestSupport {
 
     @Test
     public void testRepositories() {
-        Collection<HealthCheckRepository> repos = context.getHealthCheckRegistry().getRepositories();
+        Collection<HealthCheckRepository> repos = HealthCheckRegistry.get(context).getRepositories();
 
         Assert.assertNotNull(repos);
         Assert.assertEquals(2, repos.size());
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelAnnotationsHandler.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelAnnotationsHandler.java
index ba74630..c9074c3 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelAnnotationsHandler.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/CamelAnnotationsHandler.java
@@ -25,6 +25,7 @@ import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
 import org.apache.camel.component.properties.PropertiesComponent;
 import org.apache.camel.impl.DefaultDebugger;
@@ -108,7 +109,7 @@ public final class CamelAnnotationsHandler {
                     RouteCoverageDumper.dumpRouteCoverage(camelContext, testClass.getName(), testMethodName);
 
                     // reset JMX statistics
-                    ManagedCamelContextMBean managedCamelContext = camelContext.getManagedCamelContext();
+                    ManagedCamelContextMBean managedCamelContext = camelContext.getExtension(ManagedCamelContext.class).getManagedCamelContext();
                     if (managedCamelContext != null) {
                         LOGGER.debug("Resetting JMX statistics for RouteCoverage");
                         managedCamelContext.reset(true);
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java
index b4ba2fb..1ffc244 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageDumper.java
@@ -24,7 +24,7 @@ import java.io.OutputStream;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,7 +44,7 @@ public final class RouteCoverageDumper {
             String dir = "target/camel-route-coverage";
             String name = testClassName + "-" + testName + ".xml";
 
-            ManagedCamelContextMBean managedCamelContext = context.adapt(ManagedCamelContext.class).getManagedCamelContext();
+            ManagedCamelContextMBean managedCamelContext = context.getExtension(ManagedCamelContext.class).getManagedCamelContext();
             if (managedCamelContext == null) {
                 LOG.warn("Cannot dump route coverage to file as JMX is not enabled. Override useJmx() method to enable JMX in the unit test classes.");
             } else {
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerDisableJmxInheritedOverrideTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerDisableJmxInheritedOverrideTest.java
index 473ec04..429db93 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerDisableJmxInheritedOverrideTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerDisableJmxInheritedOverrideTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.test.spring;
 
-import org.apache.camel.management.DefaultManagementStrategy;
+import org.apache.camel.impl.DefaultManagementStrategy;
 
 import org.junit.Test;
 import static org.junit.Assert.assertEquals;
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerPlainTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerPlainTest.java
index 39b2d88..06ce8f5 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerPlainTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerPlainTest.java
@@ -24,7 +24,7 @@ import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.DefaultManagementStrategy;
+import org.apache.camel.impl.DefaultManagementStrategy;
 import org.apache.camel.util.StopWatch;
 import org.junit.Test;
 import org.junit.runner.RunWith;
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 7446a65..6f353ad 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
@@ -75,7 +75,7 @@ import org.apache.camel.impl.DefaultDebugger;
 import org.apache.camel.impl.InterceptSendToMockEndpointStrategy;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.management.JmxSystemPropertyKeys;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
@@ -433,7 +433,7 @@ public abstract class CamelTestSupport extends TestSupport {
             String dir = "target/camel-route-coverage";
             String name = className + "-" + getTestMethodName() + ".xml";
 
-            ManagedCamelContextMBean managedCamelContext = context != null ? context.adapt(ManagedCamelContext.class).getManagedCamelContext() : null;
+            ManagedCamelContextMBean managedCamelContext = context != null ? context.getExtension(ManagedCamelContext.class).getManagedCamelContext() : null;
             if (managedCamelContext == null) {
                 log.warn("Cannot dump route coverage to file as JMX is not enabled. Override useJmx() method to enable JMX in the unit test classes.");
             } else {
@@ -529,7 +529,7 @@ public abstract class CamelTestSupport extends TestSupport {
 
         // log processor coverage for each route
         for (Route route : context.getRoutes()) {
-            ManagedRouteMBean managedRoute = context.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class);
+            ManagedRouteMBean managedRoute = context.getExtension(ManagedCamelContext.class).getManagedRoute(route.getId());
             if (managedRoute.getExchangesTotal() == 0) {
                 uncoveredRoutes.add(route.getId());
             }
@@ -581,7 +581,7 @@ public abstract class CamelTestSupport extends TestSupport {
             String name = objectName.getKeyProperty("name");
             name = ObjectName.unquote(name);
 
-            ManagedProcessorMBean managedProcessor = context.adapt(ManagedCamelContext.class).getManagedProcessor(name, ManagedProcessorMBean.class);
+            ManagedProcessorMBean managedProcessor = context.getExtension(ManagedCamelContext.class).getManagedProcessor(name);
 
             if (managedProcessor != null) {
                 if (processorsForRoute.get(routeId) == null) {
diff --git a/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/CustomContextTest.java b/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/CustomContextTest.java
index 0665808..eb08b73 100644
--- a/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/CustomContextTest.java
+++ b/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/CustomContextTest.java
@@ -23,7 +23,7 @@ import javax.enterprise.inject.Default;
 import org.apache.camel.CamelContext;
 import org.apache.camel.cdi.ContextName;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.DefaultManagementStrategy;
+import org.apache.camel.impl.DefaultManagementStrategy;
 import org.apache.camel.test.cdi.CamelCdiRunner;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
index 58b746a..7144478 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
@@ -38,7 +38,7 @@ import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.RouteDefinition;
@@ -278,7 +278,7 @@ public abstract class AbstractLocalCamelController extends AbstractCamelControll
                         row.put("routeId", route.getId());
                         row.put("state", getRouteState(route));
                         row.put("uptime", route.getUptime());
-                        ManagedRouteMBean mr = context.adapt(ManagedCamelContext.class).getManagedRoute(route.getId(), ManagedRouteMBean.class);
+                        ManagedRouteMBean mr = context.getExtension(ManagedCamelContext.class).getManagedRoute(route.getId());
                         if (mr != null) {
                             row.put("exchangesTotal", "" + mr.getExchangesTotal());
                             row.put("exchangesInflight", "" + mr.getExchangesInflight());
diff --git a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
index 0c6bd1f..7c08466 100644
--- a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
+++ b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/internal/CamelControllerImpl.java
@@ -25,7 +25,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.commands.AbstractLocalCamelController;
-import org.apache.camel.management.ManagedCamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -86,10 +86,10 @@ public class CamelControllerImpl extends AbstractLocalCamelController {
             row.put("name", camelContext.getName());
             row.put("state", camelContext.getStatus().name());
             row.put("uptime", camelContext.getUptime());
-            if (camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext() != null) {
-                row.put("exchangesTotal", "" + camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext().getExchangesTotal());
-                row.put("exchangesInflight", "" + camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext().getExchangesInflight());
-                row.put("exchangesFailed", "" + camelContext.adapt(ManagedCamelContext.class).getManagedCamelContext().getExchangesFailed());
+            if (camelContext.getExtension(ManagedCamelContext.class).getManagedCamelContext() != null) {
+                row.put("exchangesTotal", "" + camelContext.getExtension(ManagedCamelContext.class).getManagedCamelContext().getExchangesTotal());
+                row.put("exchangesInflight", "" + camelContext.getExtension(ManagedCamelContext.class).getManagedCamelContext().getExchangesInflight());
+                row.put("exchangesFailed", "" + camelContext.getExtension(ManagedCamelContext.class).getManagedCamelContext().getExchangesFailed());
             } else {
                 row.put("exchangesTotal", "0");
                 row.put("exchangesInflight", "0");


[camel] 33/44: Introduce interfaces for ConsumerCache and ProducerCache

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 89bf464001137400bdfc810f0a7c7bde04371a35
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 5 10:01:41 2018 +0200

    Introduce interfaces for ConsumerCache and ProducerCache
---
 .../main/java/org/apache/camel/DynamicRouter.java  |   2 +-
 .../main/java/org/apache/camel/RoutingSlip.java    |   2 +-
 .../java/org/apache/camel/spi/ConsumerCache.java   |  55 ++++++++
 .../java/org/apache/camel/spi/ProducerCache.java   |  87 ++++++++++++
 .../src/main/docs/eips/dynamicRouter-eip.adoc      |   2 +-
 camel-core/src/main/docs/eips/enrich-eip.adoc      |   2 +-
 camel-core/src/main/docs/eips/pollEnrich-eip.adoc  |   2 +-
 .../src/main/docs/eips/recipientList-eip.adoc      |   2 +-
 camel-core/src/main/docs/eips/routingSlip-eip.adoc |   2 +-
 camel-core/src/main/docs/eips/toD-eip.adoc         |   2 +-
 camel-core/src/main/docs/eips/wireTap-eip.adoc     |   2 +-
 ...onsumerCache.java => DefaultConsumerCache.java} |   5 +-
 .../apache/camel/impl/DefaultConsumerTemplate.java |   5 +-
 ...roducerCache.java => DefaultProducerCache.java} |  24 +---
 .../apache/camel/impl/DefaultProducerTemplate.java |   5 +-
 .../DefaultManagementLifecycleStrategy.java        |   4 +-
 .../management/mbean/ManagedConsumerCache.java     |   2 +-
 .../management/mbean/ManagedProducerCache.java     |   2 +-
 .../camel/model/DynamicRouterDefinition.java       |   3 +-
 .../org/apache/camel/model/EnrichDefinition.java   |   3 +-
 .../apache/camel/model/PollEnrichDefinition.java   |   3 +-
 .../apache/camel/model/ProcessorDefinition.java    |   3 +-
 .../camel/model/RecipientListDefinition.java       |   2 +-
 .../apache/camel/model/RoutingSlipDefinition.java  |   2 +-
 .../apache/camel/model/ToDynamicDefinition.java    |   2 +-
 .../org/apache/camel/model/WireTapDefinition.java  |   2 +-
 .../java/org/apache/camel/processor/Enricher.java  |   5 +-
 .../org/apache/camel/processor/PollEnricher.java   |   5 +-
 .../org/apache/camel/processor/RecipientList.java  |   5 +-
 .../camel/processor/RecipientListProcessor.java    |   5 +-
 .../org/apache/camel/processor/RoutingSlip.java    | 148 ++++++++++-----------
 .../camel/processor/SendDynamicProcessor.java      |   5 +-
 .../org/apache/camel/processor/SendProcessor.java  |   5 +-
 .../camel/impl/ConsumerCacheZeroCapacityTest.java  |   2 +-
 .../camel/impl/DefaultConsumerCacheTest.java       |   2 +-
 .../camel/impl/DefaultProducerCacheTest.java       |   6 +-
 .../apache/camel/impl/EmptyProducerCacheTest.java  |   4 +-
 .../camel/impl/ProducerCacheNonSingletonTest.java  |   2 +-
 .../management/ManagedConsumerCacheHitsTest.java   |   4 +-
 .../camel/management/ManagedConsumerCacheTest.java |   4 +-
 .../client/GrpcResponseRouterStreamObserver.java   |   5 +-
 41 files changed, 284 insertions(+), 150 deletions(-)

diff --git a/camel-api/src/main/java/org/apache/camel/DynamicRouter.java b/camel-api/src/main/java/org/apache/camel/DynamicRouter.java
index 1e94c4f..278d296 100644
--- a/camel-api/src/main/java/org/apache/camel/DynamicRouter.java
+++ b/camel-api/src/main/java/org/apache/camel/DynamicRouter.java
@@ -60,7 +60,7 @@ public @interface DynamicRouter {
     boolean ignoreInvalidEndpoints() default false;
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ProducerCache} which is used
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ProducerCache} which is used
      * to cache and reuse producers when using this dynamic router, when uris are reused.
      */
     int cacheSize() default 0;
diff --git a/camel-api/src/main/java/org/apache/camel/RoutingSlip.java b/camel-api/src/main/java/org/apache/camel/RoutingSlip.java
index 2c1dca4..bb996aa 100644
--- a/camel-api/src/main/java/org/apache/camel/RoutingSlip.java
+++ b/camel-api/src/main/java/org/apache/camel/RoutingSlip.java
@@ -60,7 +60,7 @@ public @interface RoutingSlip {
     boolean ignoreInvalidEndpoints() default false;
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ProducerCache} which is used
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ProducerCache} which is used
      * to cache and reuse producers when using this routing slip, when uris are reused.
      */
     int cacheSize() default 0;
diff --git a/camel-api/src/main/java/org/apache/camel/spi/ConsumerCache.java b/camel-api/src/main/java/org/apache/camel/spi/ConsumerCache.java
new file mode 100644
index 0000000..67c505a
--- /dev/null
+++ b/camel-api/src/main/java/org/apache/camel/spi/ConsumerCache.java
@@ -0,0 +1,55 @@
+/**
+ * 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 org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.PollingConsumer;
+import org.apache.camel.Service;
+
+public interface ConsumerCache extends Service {
+
+    PollingConsumer acquirePollingConsumer(Endpoint endpoint);
+
+    void releasePollingConsumer(Endpoint endpoint, PollingConsumer pollingConsumer);
+
+    Exchange receive(Endpoint endpoint);
+
+    Exchange receive(Endpoint endpoint, long timeout);
+
+    Exchange receiveNoWait(Endpoint endpoint);
+
+    Object getSource();
+
+    int size();
+
+    int getCapacity();
+
+    long getHits();
+
+    long getMisses();
+
+    long getEvicted();
+
+    void resetCacheStatistics();
+
+    void purge();
+
+    void cleanUp();
+
+    EndpointUtilizationStatistics getEndpointUtilizationStatistics();
+}
diff --git a/camel-api/src/main/java/org/apache/camel/spi/ProducerCache.java b/camel-api/src/main/java/org/apache/camel/spi/ProducerCache.java
new file mode 100644
index 0000000..51f7c8e
--- /dev/null
+++ b/camel-api/src/main/java/org/apache/camel/spi/ProducerCache.java
@@ -0,0 +1,87 @@
+/**
+ * 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.concurrent.CompletableFuture;
+
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
+import org.apache.camel.AsyncProducer;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.PollingConsumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Service;
+
+public interface ProducerCache extends Service {
+
+    AsyncProducer acquireProducer(Endpoint endpoint);
+
+    void releaseProducer(Endpoint endpoint, AsyncProducer producer);
+
+    Exchange send(Endpoint endpoint, Exchange exchange, Processor resultProcessor);
+
+    CompletableFuture<Exchange> asyncSendExchange(Endpoint endpoint, ExchangePattern pattern, Processor processor, Processor resultProcessor, Exchange inExchange, CompletableFuture<Exchange> exchangeFuture);
+
+    Object getSource();
+
+    int size();
+
+    int getCapacity();
+
+    long getHits();
+
+    long getMisses();
+
+    long getEvicted();
+
+    void resetCacheStatistics();
+
+    void purge();
+
+    void cleanUp();
+
+    boolean isEventNotifierEnabled();
+
+    void setEventNotifierEnabled(boolean eventNotifierEnabled);
+
+    EndpointUtilizationStatistics getEndpointUtilizationStatistics();
+
+    boolean doInAsyncProducer(Endpoint endpoint, Exchange exchange, AsyncCallback callback, AsyncProducerCallback asyncProducerCallback);
+
+    /**
+     * Callback for sending a exchange message to a endpoint using an {@link AsyncProcessor} capable producer.
+     * <p/>
+     * Using this callback as a template pattern ensures that Camel handles the resource handling and will
+     * start and stop the given producer, to avoid resource leaks.
+     *
+     */
+    interface AsyncProducerCallback {
+
+        /**
+         * Performs operation on the given producer to send the given exchange.
+         *
+         * @param asyncProducer   the async producer, is never <tt>null</tt>
+         * @param exchange        the exchange to process
+         * @param callback        the async callback
+         * @return (doneSync) <tt>true</tt> to continue execute synchronously, <tt>false</tt> to continue being executed asynchronously
+         */
+        boolean doInAsyncProducer(AsyncProducer asyncProducer, Exchange exchange, AsyncCallback callback);
+    }
+
+}
diff --git a/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc b/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc
index f2e98bb..80ed1d3 100644
--- a/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc
+++ b/camel-core/src/main/docs/eips/dynamicRouter-eip.adoc
@@ -23,7 +23,7 @@ The Dynamic Router EIP supports 3 options which are listed below:
 | Name | Description | Default | Type
 | *uriDelimiter* | Sets the uri delimiter to use | , | String
 | *ignoreInvalidEndpoints* | Ignore the invalidate endpoint exception when try to create a producer with that endpoint | false | Boolean
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.impl.ProducerCache which is used to cache and reuse producers when using this dynamic router, when uris are reused. |  | Integer
+| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this dynamic router, when uris are reused. |  | Integer
 |===
 // eip options: END
 
diff --git a/camel-core/src/main/docs/eips/enrich-eip.adoc b/camel-core/src/main/docs/eips/enrich-eip.adoc
index 295132f..e2d284b 100644
--- a/camel-core/src/main/docs/eips/enrich-eip.adoc
+++ b/camel-core/src/main/docs/eips/enrich-eip.adoc
@@ -16,7 +16,7 @@ The Enrich EIP supports 7 options which are listed below:
 | *strategyMethodAllowNull* | If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy. | false | Boolean
 | *aggregateOnException* | If this option is false then the aggregate method is not used if there was an exception thrown while trying to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what to do if there was an exception in the aggregate method. For example to suppress the exception or set a custom message body etc. | false | Boolean
 | *shareUnitOfWork* | Shares the org.apache.camel.spi.UnitOfWork with the parent and the resource exchange. Enrich will by default not share unit of work between the parent exchange and the resource exchange. This means the resource exchange has its own individual unit of work. | false | Boolean
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.impl.ProducerCache which is used to cache and reuse producer when uris are reused. |  | Integer
+| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producer when uris are reused. |  | Integer
 | *ignoreInvalidEndpoint* | Ignore the invalidate endpoint exception when try to create a producer with that endpoint | false | Boolean
 |===
 // eip options: END
diff --git a/camel-core/src/main/docs/eips/pollEnrich-eip.adoc b/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
index 2d699b4..9207655 100644
--- a/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
+++ b/camel-core/src/main/docs/eips/pollEnrich-eip.adoc
@@ -49,7 +49,7 @@ The Poll Enrich EIP supports 7 options which are listed below:
 | *strategyMethodName* | This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. |  | String
 | *strategyMethodAllowNull* | If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy. | false | Boolean
 | *aggregateOnException* | If this option is false then the aggregate method is not used if there was an exception thrown while trying to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what to do if there was an exception in the aggregate method. For example to suppress the exception or set a custom message body etc. | false | Boolean
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.impl.ConsumerCache which is used to cache and reuse consumers when uris are reused. |  | Integer
+| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ConsumerCache which is used to cache and reuse consumers when uris are reused. |  | Integer
 | *ignoreInvalidEndpoint* | Ignore the invalidate endpoint exception when try to create a producer with that endpoint | false | Boolean
 |===
 // eip options: END
diff --git a/camel-core/src/main/docs/eips/recipientList-eip.adoc b/camel-core/src/main/docs/eips/recipientList-eip.adoc
index c4377d4..7245644 100644
--- a/camel-core/src/main/docs/eips/recipientList-eip.adoc
+++ b/camel-core/src/main/docs/eips/recipientList-eip.adoc
@@ -26,7 +26,7 @@ The Recipient List EIP supports 15 options which are listed below:
 | *timeout* | Sets a total timeout specified in millis, when using parallel processing. If the Recipient List hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Recipient List breaks out and continues. Notice if you provide a TimeoutAwareAggregationStrategy then the timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shu [...]
 | *onPrepareRef* | Uses the Processor when preparing the org.apache.camel.Exchange to be send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send. |  | String
 | *shareUnitOfWork* | Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Recipient List will by default not share unit of work between the parent exchange and each recipient exchange. This means each sub exchange has its own individual unit of work. | false | Boolean
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.impl.ProducerCache which is used to cache and reuse producers when using this recipient list, when uris are reused. |  | Integer
+| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this recipient list, when uris are reused. |  | Integer
 | *parallelAggregate* | If enabled then the aggregate method on AggregationStrategy can be called concurrently. Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. By default this is false meaning that Camel synchronizes the call to the aggregate method. Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe. | false | Boolean
 | *stopOnAggregateException* | If enabled, unwind exceptions occurring at aggregation time to the error handler when parallelProcessing is used. Currently, aggregation time exceptions do not stop the route processing when parallelProcessing is used. Enabling this option allows to work around this behavior. The default value is false for the sake of backward compatibility. | false | Boolean
 |===
diff --git a/camel-core/src/main/docs/eips/routingSlip-eip.adoc b/camel-core/src/main/docs/eips/routingSlip-eip.adoc
index 38e37c1..4de7c26 100644
--- a/camel-core/src/main/docs/eips/routingSlip-eip.adoc
+++ b/camel-core/src/main/docs/eips/routingSlip-eip.adoc
@@ -15,7 +15,7 @@ The Routing Slip EIP supports 3 options which are listed below:
 | Name | Description | Default | Type
 | *uriDelimiter* | Sets the uri delimiter to use | , | String
 | *ignoreInvalidEndpoints* | Ignore the invalidate endpoint exception when try to create a producer with that endpoint | false | Boolean
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.impl.ProducerCache which is used to cache and reuse producers when using this routing slip, when uris are reused. |  | Integer
+| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this routing slip, when uris are reused. |  | Integer
 |===
 // eip options: END
 
diff --git a/camel-core/src/main/docs/eips/toD-eip.adoc b/camel-core/src/main/docs/eips/toD-eip.adoc
index f788864..82a7a5d 100644
--- a/camel-core/src/main/docs/eips/toD-eip.adoc
+++ b/camel-core/src/main/docs/eips/toD-eip.adoc
@@ -17,7 +17,7 @@ The To D EIP supports 5 options which are listed below:
 | Name | Description | Default | Type
 | *uri* | *Required* The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression. |  | String
 | *pattern* | Sets the optional ExchangePattern used to invoke this endpoint |  | ExchangePattern
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.impl.ConsumerCache which is used to cache and reuse producers. |  | Integer
+| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ConsumerCache which is used to cache and reuse producers. |  | Integer
 | *ignoreInvalidEndpoint* | Ignore the invalidate endpoint exception when try to create a producer with that endpoint | false | Boolean
 | *allowOptimisedComponents* | Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware. | true | Boolean
 |===
diff --git a/camel-core/src/main/docs/eips/wireTap-eip.adoc b/camel-core/src/main/docs/eips/wireTap-eip.adoc
index b9f3a6f..f8473d4 100644
--- a/camel-core/src/main/docs/eips/wireTap-eip.adoc
+++ b/camel-core/src/main/docs/eips/wireTap-eip.adoc
@@ -31,7 +31,7 @@ The Wire Tap EIP supports 11 options which are listed below:
 | *onPrepareRef* | Uses the Processor when preparing the org.apache.camel.Exchange to be send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send. |  | String
 | *uri* | *Required* The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression. |  | String
 | *pattern* | Sets the optional ExchangePattern used to invoke this endpoint |  | ExchangePattern
-| *cacheSize* | Sets the maximum size used by the org.apache.camel.impl.ConsumerCache which is used to cache and reuse producers. |  | Integer
+| *cacheSize* | Sets the maximum size used by the org.apache.camel.spi.ConsumerCache which is used to cache and reuse producers. |  | Integer
 | *ignoreInvalidEndpoint* | Ignore the invalidate endpoint exception when try to create a producer with that endpoint | false | Boolean
 | *allowOptimisedComponents* | Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware. | true | Boolean
 |===
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerCache.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
rename to camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerCache.java
index f25f002..6eed897 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerCache.java
@@ -21,6 +21,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.FailedToCreateConsumerException;
 import org.apache.camel.PollingConsumer;
+import org.apache.camel.spi.ConsumerCache;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ServiceHelper;
@@ -29,7 +30,7 @@ import org.apache.camel.support.ServiceSupport;
 /**
  * Cache containing created {@link org.apache.camel.Consumer}.
  */
-public class ConsumerCache extends ServiceSupport {
+public class DefaultConsumerCache extends ServiceSupport implements ConsumerCache {
 
     private final CamelContext camelContext;
     private final ServicePool<PollingConsumer> consumers;
@@ -39,7 +40,7 @@ public class ConsumerCache extends ServiceSupport {
     private boolean extendedStatistics;
     private int maxCacheSize;
 
-    public ConsumerCache(Object source, CamelContext camelContext, int cacheSize) {
+    public DefaultConsumerCache(Object source, CamelContext camelContext, int cacheSize) {
         this.source = source;
         this.camelContext = camelContext;
         this.maxCacheSize = cacheSize == 0 ? CamelContextHelper.getMaximumCachePoolSize(camelContext) : cacheSize;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
index ba52514..257d5c3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
@@ -22,6 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.ConsumerCache;
 import org.apache.camel.spi.Synchronization;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ServiceHelper;
@@ -246,7 +247,7 @@ public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerT
         return answer;
     }
 
-    private ConsumerCache getConsumerCache() {
+    private org.apache.camel.spi.ConsumerCache getConsumerCache() {
         if (!isStarted()) {
             throw new IllegalStateException("ConsumerTemplate has not been started");
         }
@@ -255,7 +256,7 @@ public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerT
 
     protected void doStart() throws Exception {
         if (consumerCache == null) {
-            consumerCache = new ConsumerCache(this, camelContext, maximumCacheSize);
+            consumerCache = new DefaultConsumerCache(this, camelContext, maximumCacheSize);
         }
         ServiceHelper.startService(consumerCache);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerCache.java
similarity index 94%
rename from camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
rename to camel-core/src/main/java/org/apache/camel/impl/DefaultProducerCache.java
index d713775..5638f9d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerCache.java
@@ -31,6 +31,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.SharedCamelInternalProcessor;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.EventHelper;
 import org.apache.camel.support.ServiceHelper;
@@ -40,7 +41,7 @@ import org.apache.camel.util.StopWatch;
 /**
  * Cache containing created {@link Producer}.
  */
-public class ProducerCache extends ServiceSupport {
+public class DefaultProducerCache extends ServiceSupport implements ProducerCache {
 
     private final CamelContext camelContext;
     private final ServicePool<AsyncProducer> producers;
@@ -52,7 +53,7 @@ public class ProducerCache extends ServiceSupport {
     private boolean extendedStatistics;
     private int maxCacheSize;
 
-    public ProducerCache(Object source, CamelContext camelContext, int cacheSize) {
+    public DefaultProducerCache(Object source, CamelContext camelContext, int cacheSize) {
         this.source = source;
         this.camelContext = camelContext;
         this.maxCacheSize = cacheSize == 0 ? CamelContextHelper.getMaximumCachePoolSize(camelContext) : cacheSize;
@@ -473,23 +474,4 @@ public class ProducerCache extends ServiceSupport {
         return "ProducerCache for source: " + source + ", capacity: " + getCapacity();
     }
 
-    /**
-     * Callback for sending a exchange message to a endpoint using an {@link AsyncProcessor} capable producer.
-     * <p/>
-     * Using this callback as a template pattern ensures that Camel handles the resource handling and will
-     * start and stop the given producer, to avoid resource leaks.
-     *
-         */
-    public interface AsyncProducerCallback {
-
-        /**
-         * Performs operation on the given producer to send the given exchange.
-         *
-         * @param asyncProducer   the async producer, is never <tt>null</tt>
-         * @param exchange        the exchange to process
-         * @param callback        the async callback
-         * @return (doneSync) <tt>true</tt> to continue execute synchronously, <tt>false</tt> to continue being executed asynchronously
-         */
-        boolean doInAsyncProducer(AsyncProducer asyncProducer, Exchange exchange, AsyncCallback callback);
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
index 9c09cf3..d4dedfe 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
@@ -34,6 +34,7 @@ import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.processor.ConvertBodyProcessor;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.spi.Synchronization;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ExchangeHelper;
@@ -679,7 +680,7 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
                 });
     }
 
-    private ProducerCache getProducerCache() {
+    private org.apache.camel.spi.ProducerCache getProducerCache() {
         if (!isStarted()) {
             throw new IllegalStateException("ProducerTemplate has not been started");
         }
@@ -713,7 +714,7 @@ public class DefaultProducerTemplate extends ServiceSupport implements ProducerT
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            producerCache = new ProducerCache(this, camelContext, maximumCacheSize);
+            producerCache = new DefaultProducerCache(this, camelContext, maximumCacheSize);
             producerCache.setEventNotifierEnabled(isEventNotifierEnabled());
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 1a1a7a3..5806f35 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -48,11 +48,9 @@ import org.apache.camel.StartupListener;
 import org.apache.camel.TimerListener;
 import org.apache.camel.VetoCamelContextStartException;
 import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.impl.ConsumerCache;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultEndpointRegistry;
 import org.apache.camel.impl.EventDrivenConsumerRoute;
-import org.apache.camel.impl.ProducerCache;
 import org.apache.camel.impl.ThrottlingExceptionRoutePolicy;
 import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
 import org.apache.camel.management.mbean.ManagedAsyncProcessorAwaitManager;
@@ -87,6 +85,7 @@ import org.apache.camel.processor.interceptor.BacklogDebugger;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
+import org.apache.camel.spi.ConsumerCache;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.InflightRepository;
@@ -95,6 +94,7 @@ import org.apache.camel.spi.ManagementAgent;
 import org.apache.camel.spi.ManagementNameStrategy;
 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.spi.RuntimeEndpointRegistry;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
index 8ccf129..def0b3d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
@@ -19,7 +19,7 @@ package org.apache.camel.management.mbean;
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedConsumerCacheMBean;
-import org.apache.camel.impl.ConsumerCache;
+import org.apache.camel.spi.ConsumerCache;
 
 @ManagedResource(description = "Managed ConsumerCache")
 public class ManagedConsumerCache extends ManagedService implements ManagedConsumerCacheMBean {
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
index e72dc3c..5b2eac5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
@@ -19,7 +19,7 @@ package org.apache.camel.management.mbean;
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedProducerCacheMBean;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.spi.ProducerCache;
 
 @ManagedResource(description = "Managed ProducerCache")
 public class ManagedProducerCache extends ManagedService implements ManagedProducerCacheMBean {
diff --git a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
index 05a29fa..7f8dda6 100644
--- a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
@@ -28,6 +28,7 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.DynamicRouter;
 import org.apache.camel.spi.Metadata;
@@ -169,7 +170,7 @@ public class DynamicRouterDefinition<Type extends ProcessorDefinition<Type>> ext
     }
     
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ProducerCache} which is used
+     * Sets the maximum size used by the {@link DefaultProducerCache} which is used
      * to cache and reuse producers when using this dynamic router, when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java b/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
index f54b9fd..69ee984 100644
--- a/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.Enricher;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
@@ -187,7 +188,7 @@ public class EnrichDefinition extends NoOutputExpressionNode {
     }
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ProducerCache} which is used
+     * Sets the maximum size used by the {@link DefaultProducerCache} which is used
      * to cache and reuse producer when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
index 667832e..87647d0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.impl.DefaultConsumerCache;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.PollEnricher;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
@@ -200,7 +201,7 @@ public class PollEnrichDefinition extends NoOutputExpressionNode {
     }
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ConsumerCache} which is used
+     * Sets the maximum size used by the {@link DefaultConsumerCache} which is used
      * to cache and reuse consumers when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 2d6e282..9094494 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -57,7 +57,6 @@ import org.apache.camel.model.dataformat.CustomDataFormat;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.model.language.LanguageExpression;
-import org.apache.camel.model.language.SimpleExpression;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.processor.InterceptEndpointProcessor;
 import org.apache.camel.processor.Pipeline;
@@ -635,7 +634,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * Sends the exchange to the given dynamic endpoint
      *
      * @param uri  the dynamic endpoint to send to (resolved using simple language by default)
-     * @param cacheSize sets the maximum size used by the {@link org.apache.camel.impl.ConsumerCache} which is used to cache and reuse producers.
+     * @param cacheSize sets the maximum size used by the {@link org.apache.camel.spi.ConsumerCache} which is used to cache and reuse producers.
      *
      * @return the builder
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
index 9a4e945..48bc007 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
@@ -456,7 +456,7 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext
     }
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ProducerCache} which is used
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ProducerCache} which is used
      * to cache and reuse producers when using this recipient list, when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
index d5caaef..b8495ce 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
@@ -182,7 +182,7 @@ public class RoutingSlipDefinition<Type extends ProcessorDefinition<Type>> exten
     }
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ProducerCache} which is used
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ProducerCache} which is used
      * to cache and reuse producers when using this routing slip, when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java
index 35065fe..11aea0b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java
@@ -151,7 +151,7 @@ public class ToDynamicDefinition extends NoOutputDefinition<ToDynamicDefinition>
     }
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ConsumerCache} which is used to cache and reuse producers.
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ConsumerCache} which is used to cache and reuse producers.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
      * @return the builder
diff --git a/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
index a1aab13..d152cf4 100644
--- a/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
@@ -307,7 +307,7 @@ public class WireTapDefinition<Type extends ProcessorDefinition<Type>> extends T
     }
 
     /**
-     * Sets the maximum size used by the {@link org.apache.camel.impl.ProducerCache} which is used
+     * Sets the maximum size used by the {@link org.apache.camel.spi.ProducerCache} which is used
      * to cache and reuse producers, when uris are reused.
      *
      * @param cacheSize  the cache size, use <tt>0</tt> for default cache size, or <tt>-1</tt> to turn cache off.
diff --git a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
index 35b26ac..13688f6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
@@ -26,10 +26,11 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.AsyncProcessorHelper;
 import org.apache.camel.support.DefaultExchange;
@@ -342,7 +343,7 @@ public class Enricher extends ServiceSupport implements AsyncProcessor, IdAware,
         }
 
         if (producerCache == null) {
-            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            producerCache = new DefaultProducerCache(this, camelContext, cacheSize);
             log.debug("Enricher {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
index 08a4a96..28842c6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
@@ -26,8 +26,9 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.PollingConsumer;
-import org.apache.camel.impl.ConsumerCache;
+import org.apache.camel.impl.DefaultConsumerCache;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.spi.ConsumerCache;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.ExceptionHandler;
 import org.apache.camel.spi.IdAware;
@@ -369,7 +370,7 @@ public class PollEnricher extends ServiceSupport implements AsyncProcessor, IdAw
     protected void doStart() throws Exception {
         if (consumerCache == null) {
             // create consumer cache if we use dynamic expressions for computing the endpoints to poll
-            consumerCache = new ConsumerCache(this, camelContext, cacheSize);
+            consumerCache = new DefaultConsumerCache(this, camelContext, cacheSize);
             log.debug("PollEnrich {} using ConsumerCache with cacheSize={}", this, cacheSize);
         }
         if (aggregationStrategy instanceof CamelContextAware) {
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
index 76630e3..10dcd43 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
@@ -26,11 +26,12 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
 import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.support.AsyncProcessorHelper;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ObjectHelper;
@@ -181,7 +182,7 @@ public class RecipientList extends ServiceSupport implements AsyncProcessor, IdA
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            producerCache = new DefaultProducerCache(this, camelContext, cacheSize);
             log.debug("RecipientList {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
         ServiceHelper.startService(aggregationStrategy, producerCache);
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
index 67fc170..77d4401 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientListProcessor.java
@@ -31,8 +31,9 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.EndpointHelper;
@@ -265,7 +266,7 @@ public class RecipientListProcessor extends MulticastProcessor {
     protected void doStart() throws Exception {
         super.doStart();
         if (producerCache == null) {
-            producerCache = new ProducerCache(this, getCamelContext(), 0);
+            producerCache = new DefaultProducerCache(this, getCamelContext(), 0);
         }
         ServiceHelper.startService(producerCache);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
index a2decf7..05e9a1e 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -29,10 +29,10 @@ import org.apache.camel.FailedToCreateProducerException;
 import org.apache.camel.Message;
 import org.apache.camel.Traceable;
 import org.apache.camel.builder.ExpressionBuilder;
-import org.apache.camel.impl.ProducerCache;
-import org.apache.camel.impl.ProducerCache.AsyncProducerCallback;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.AsyncProcessorHelper;
 import org.apache.camel.support.DefaultExchange;
@@ -345,98 +345,96 @@ public class RoutingSlip extends ServiceSupport implements AsyncProcessor, Trace
                 originalCallback.done(false);
             }
         };
-        return producerCache.doInAsyncProducer(endpoint, exchange, callback, new AsyncProducerCallback() {
-            public boolean doInAsyncProducer(AsyncProducer asyncProducer, Exchange exchange, final AsyncCallback callback) {
-
-                // rework error handling to support fine grained error handling
-                RouteContext routeContext = exchange.getUnitOfWork() != null ? exchange.getUnitOfWork().getRouteContext() : null;
-                AsyncProcessor target = createErrorHandler(routeContext, exchange, asyncProducer, endpoint);
-
-                // set property which endpoint we send to and the producer that can do it
-                exchange.setProperty(Exchange.TO_ENDPOINT, endpoint.getEndpointUri());
-                exchange.setProperty(Exchange.SLIP_ENDPOINT, endpoint.getEndpointUri());
-                exchange.setProperty(Exchange.SLIP_PRODUCER, asyncProducer);
-
-                return target.process(exchange, new AsyncCallback() {
-                    public void done(boolean doneSync) {
-                        // cleanup producer after usage
-                        exchange.removeProperty(Exchange.SLIP_PRODUCER);
-
-                        // we only have to handle async completion of the routing slip
-                        if (doneSync) {
-                            callback.done(true);
-                            return;
-                        }
-
-                        try {
-                            // continue processing the routing slip asynchronously
-                            Exchange current = prepareExchangeForRoutingSlip(exchange, endpoint);
+        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);
+
+            // set property which endpoint we send to and the producer that can do it
+            ex.setProperty(Exchange.TO_ENDPOINT, endpoint.getEndpointUri());
+            ex.setProperty(Exchange.SLIP_ENDPOINT, endpoint.getEndpointUri());
+            ex.setProperty(Exchange.SLIP_PRODUCER, p);
+
+            return target.process(ex, new AsyncCallback() {
+                public void done(boolean doneSync) {
+                    // cleanup producer after usage
+                    ex.removeProperty(Exchange.SLIP_PRODUCER);
+
+                    // we only have to handle async completion of the routing slip
+                    if (doneSync) {
+                        cb.done(true);
+                        return;
+                    }
 
-                            while (iter.hasNext(current)) {
+                    try {
+                        // continue processing the routing slip asynchronously
+                        Exchange current = prepareExchangeForRoutingSlip(ex, endpoint);
 
-                                // we ignore some kind of exceptions and allow us to continue
-                                if (isIgnoreInvalidEndpoints()) {
-                                    FailedToCreateProducerException e = current.getException(FailedToCreateProducerException.class);
-                                    if (e != null) {
-                                        if (log.isDebugEnabled()) {
-                                            log.debug("Endpoint uri is invalid: " + endpoint + ". This exception will be ignored.", e);
-                                        }
-                                        current.setException(null);
-                                    }
-                                }
-
-                                // Decide whether to continue with the recipients or not; similar logic to the Pipeline
-                                // check for error if so we should break out
-                                if (!continueProcessing(current, "so breaking out of the routing slip", log)) {
-                                    break;
-                                }
+                        while (iter.hasNext(current)) {
 
-                                Endpoint endpoint;
-                                try {
-                                    endpoint = resolveEndpoint(iter, exchange);
-                                    // if no endpoint was resolved then try the next
-                                    if (endpoint == null) {
-                                        continue;
+                            // we ignore some kind of exceptions and allow us to continue
+                            if (isIgnoreInvalidEndpoints()) {
+                                FailedToCreateProducerException e = current.getException(FailedToCreateProducerException.class);
+                                if (e != null) {
+                                    if (log.isDebugEnabled()) {
+                                        log.debug("Endpoint uri is invalid: " + endpoint + ". This exception will be ignored.", e);
                                     }
-                                } catch (Exception e) {
-                                    // error resolving endpoint so we should break out
-                                    exchange.setException(e);
-                                    break;
+                                    current.setException(null);
                                 }
+                            }
 
-                                // prepare and process the routing slip
-                                boolean sync = processExchange(endpoint, current, original, callback, iter);
-                                current = prepareExchangeForRoutingSlip(current, endpoint);
+                            // Decide whether to continue with the recipients or not; similar logic to the Pipeline
+                            // check for error if so we should break out
+                            if (!continueProcessing(current, "so breaking out of the routing slip", log)) {
+                                break;
+                            }
 
-                                if (!sync) {
-                                    log.trace("Processing exchangeId: {} is continued being processed asynchronously", original.getExchangeId());
-                                    return;
+                            Endpoint endpoint1;
+                            try {
+                                endpoint1 = resolveEndpoint(iter, ex);
+                                // if no endpoint was resolved then try the next
+                                if (endpoint1 == null) {
+                                    continue;
                                 }
+                            } catch (Exception e) {
+                                // error resolving endpoint so we should break out
+                                ex.setException(e);
+                                break;
                             }
 
-                            // logging nextExchange as it contains the exchange that might have altered the payload and since
-                            // we are logging the completion if will be confusing if we log the original instead
-                            // we could also consider logging the original and the nextExchange then we have *before* and *after* snapshots
-                            log.trace("Processing complete for exchangeId: {} >>> {}", original.getExchangeId(), current);
+                            // prepare and process the routing slip
+                            boolean sync = processExchange(endpoint1, current, original, cb, iter);
+                            current = prepareExchangeForRoutingSlip(current, endpoint1);
 
-                            // copy results back to the original exchange
-                            ExchangeHelper.copyResults(original, current);
-                        } catch (Throwable e) {
-                            exchange.setException(e);
+                            if (!sync) {
+                                log.trace("Processing exchangeId: {} is continued being processed asynchronously", original.getExchangeId());
+                                return;
+                            }
                         }
 
-                        // okay we are completely done with the routing slip
-                        // so we need to signal done on the original callback so it can continue
-                        originalCallback.done(false);
+                        // logging nextExchange as it contains the exchange that might have altered the payload and since
+                        // we are logging the completion if will be confusing if we log the original instead
+                        // we could also consider logging the original and the nextExchange then we have *before* and *after* snapshots
+                        log.trace("Processing complete for exchangeId: {} >>> {}", original.getExchangeId(), current);
+
+                        // copy results back to the original exchange
+                        ExchangeHelper.copyResults(original, current);
+                    } catch (Throwable e) {
+                        ex.setException(e);
                     }
-                });
-            }
+
+                    // okay we are completely done with the routing slip
+                    // so we need to signal done on the original callback so it can continue
+                    originalCallback.done(false);
+                }
+            });
         });
     }
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            producerCache = new DefaultProducerCache(this, camelContext, cacheSize);
             log.debug("RoutingSlip {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
index 3879226..1499e88 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
@@ -27,9 +27,10 @@ import org.apache.camel.Expression;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.ResolveEndpointFailedException;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.spi.SendDynamicAware;
 import org.apache.camel.support.AsyncProcessorHelper;
 import org.apache.camel.support.EndpointHelper;
@@ -246,7 +247,7 @@ public class SendDynamicProcessor extends ServiceSupport implements AsyncProcess
 
     protected void doStart() throws Exception {
         if (producerCache == null) {
-            producerCache = new ProducerCache(this, camelContext, cacheSize);
+            producerCache = new DefaultProducerCache(this, camelContext, cacheSize);
             log.debug("DynamicSendTo {} using ProducerCache with cacheSize={}", this, producerCache.getCapacity());
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
index c694231..b641ee5 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -29,8 +29,9 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Traceable;
 import org.apache.camel.impl.InterceptSendToEndpoint;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.support.AsyncProcessorHelper;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.EventHelper;
@@ -203,7 +204,7 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
             // and use a regular HashMap as we do not want a soft reference store that may get re-claimed when low on memory
             // as we want to ensure the producer is kept around, to ensure its lifecycle is fully managed,
             // eg stopping the producer when we stop etc.
-            producerCache = new ProducerCache(this, camelContext, 1);
+            producerCache = new DefaultProducerCache(this, camelContext, 1);
             // do not add as service as we do not want to manage the producer cache
         }
         ServiceHelper.startService(producerCache);
diff --git a/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java b/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java
index a4f8a3f..8fccba7 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java
@@ -30,7 +30,7 @@ public class ConsumerCacheZeroCapacityTest extends ContextTestSupport {
 
     @Test
     public void testConsumerCacheZeroCapacity() throws Exception {
-        ConsumerCache cache = new ConsumerCache(this, context, -1);
+        DefaultConsumerCache cache = new DefaultConsumerCache(this, context, -1);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java
index b1a792d..7e199fb 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java
@@ -25,7 +25,7 @@ public class DefaultConsumerCacheTest extends ContextTestSupport {
 
     @Test
     public void testCacheConsumers() throws Exception {
-        ConsumerCache cache = new ConsumerCache(this, context, 0);
+        DefaultConsumerCache cache = new DefaultConsumerCache(this, context, 0);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
index c7c42d2..c22d7ac 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java
@@ -42,7 +42,7 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
 
     @Test
     public void testCacheProducerAcquireAndRelease() throws Exception {
-        ProducerCache cache = new ProducerCache(this, context, 0);
+        DefaultProducerCache cache = new DefaultProducerCache(this, context, 0);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
@@ -64,7 +64,7 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
 
     @Test
     public void testCacheStopExpired() throws Exception {
-        ProducerCache cache = new ProducerCache(this, context, 5);
+        DefaultProducerCache cache = new DefaultProducerCache(this, context, 5);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
@@ -96,7 +96,7 @@ public class DefaultProducerCacheTest extends ContextTestSupport {
 
     @Test
     public void testExtendedStatistics() throws Exception {
-        ProducerCache cache = new ProducerCache(this, context, 5);
+        DefaultProducerCache cache = new DefaultProducerCache(this, context, 5);
         cache.setExtendedStatistics(true);
         cache.start();
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java b/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java
index de233cd..f1fc61e 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/EmptyProducerCacheTest.java
@@ -25,7 +25,7 @@ public class EmptyProducerCacheTest extends ContextTestSupport {
 
     @Test
     public void testEmptyCache() throws Exception {
-        ProducerCache cache = new ProducerCache(this, context, -1);
+        DefaultProducerCache cache = new DefaultProducerCache(this, context, -1);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
@@ -45,7 +45,7 @@ public class EmptyProducerCacheTest extends ContextTestSupport {
 
     @Test
     public void testCacheProducerAcquireAndRelease() throws Exception {
-        ProducerCache cache = new ProducerCache(this, context, -1);
+        DefaultProducerCache cache = new DefaultProducerCache(this, context, -1);
         cache.start();
 
         assertEquals("Size should be 0", 0, cache.size());
diff --git a/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java b/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java
index 41d9e7b..0aba8a6 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/ProducerCacheNonSingletonTest.java
@@ -41,7 +41,7 @@ public class ProducerCacheNonSingletonTest extends ContextTestSupport {
     public void testNonSingleton() throws Exception {
         context.addComponent("dummy", new MyDummyComponent());
 
-        ProducerCache cache = new ProducerCache(this, context, -1);
+        DefaultProducerCache cache = new DefaultProducerCache(this, context, -1);
         cache.start();
 
         Endpoint endpoint = context.getEndpoint("dummy:foo");
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
index cb34c1c..50dd9f8 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheHitsTest.java
@@ -25,7 +25,7 @@ import javax.management.ObjectName;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.ConsumerCache;
+import org.apache.camel.impl.DefaultConsumerCache;
 import org.junit.Test;
 
 public class ManagedConsumerCacheHitsTest extends ManagementTestSupport {
@@ -40,7 +40,7 @@ public class ManagedConsumerCacheHitsTest extends ManagementTestSupport {
         // always register services in JMX so we can enlist our consumer template/cache
         context.getManagementStrategy().getManagementAgent().setRegisterAlways(true);
 
-        ConsumerCache cache = new ConsumerCache(this, context, 0);
+        DefaultConsumerCache cache = new DefaultConsumerCache(this, context, 0);
         context.addService(cache);
 
         template.sendBody("seda:a", "Hello World");
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
index 2bc8ed5..d3349af 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedConsumerCacheTest.java
@@ -27,7 +27,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.ConsumerCache;
+import org.apache.camel.impl.DefaultConsumerCache;
 import org.junit.Test;
 
 public class ManagedConsumerCacheTest extends ManagementTestSupport {
@@ -42,7 +42,7 @@ public class ManagedConsumerCacheTest extends ManagementTestSupport {
         // always register services in JMX so we can enlist our consumer template/cache
         context.getManagementStrategy().getManagementAgent().setRegisterAlways(true);
 
-        ConsumerCache cache = new ConsumerCache(this, context, 0);
+        DefaultConsumerCache cache = new DefaultConsumerCache(this, context, 0);
         context.addService(cache);
 
         template.sendBody("direct:start", "Hello World");
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java
index 74d57fa..c485ea9 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/client/GrpcResponseRouterStreamObserver.java
@@ -22,7 +22,8 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.grpc.GrpcConfiguration;
 import org.apache.camel.component.grpc.GrpcConstants;
-import org.apache.camel.impl.ProducerCache;
+import org.apache.camel.impl.DefaultProducerCache;
+import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.support.CamelContextHelper;
 
 /**
@@ -40,7 +41,7 @@ public class GrpcResponseRouterStreamObserver implements StreamObserver<Object>
         this.sourceEndpoint = sourceEndpoint;
         this.endpoint = CamelContextHelper.getMandatoryEndpoint(sourceEndpoint.getCamelContext(), configuration.getStreamRepliesTo());
         sourceEndpoint.getCamelContext().createProducerTemplate(-1);
-        this.producerCache = new ProducerCache(this, sourceEndpoint.getCamelContext(), -1);
+        this.producerCache = new DefaultProducerCache(this, sourceEndpoint.getCamelContext(), -1);
     }
 
     @Override


[camel] 38/44: Use a single field + lock to manage the services state

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f1ad7bc7b5fc9b1a417af7d57994a388520c3a4f
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 1 17:20:26 2018 +0200

    Use a single field + lock to manage the services state
---
 .../org/apache/camel/support/ServiceSupport.java   | 272 ++++++++++-----------
 .../apache/camel/component/seda/SedaEndpoint.java  |   2 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |   2 +-
 .../apache/camel/support/ChildServiceSupport.java  | 165 ++++++-------
 .../apache/camel/support/ServiceSupportTest.java   |   2 +-
 5 files changed, 212 insertions(+), 231 deletions(-)

diff --git a/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java b/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
index 100862e..ccbd8b4 100644
--- a/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
+++ b/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.support;
 
-import java.util.concurrent.atomic.AtomicBoolean;
-
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StatefulService;
 import org.slf4j.Logger;
@@ -37,16 +35,20 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class ServiceSupport implements StatefulService {
 
-    protected final AtomicBoolean started = new AtomicBoolean(false);
-    protected final AtomicBoolean starting = new AtomicBoolean(false);
-    protected final AtomicBoolean stopping = new AtomicBoolean(false);
-    protected final AtomicBoolean stopped = new AtomicBoolean(false);
-    protected final AtomicBoolean suspending = new AtomicBoolean(false);
-    protected final AtomicBoolean suspended = new AtomicBoolean(false);
-    protected final AtomicBoolean shuttingdown = new AtomicBoolean(false);
-    protected final AtomicBoolean shutdown = new AtomicBoolean(false);
+    protected static final int NEW = 0;
+    protected static final int STARTING = 1;
+    protected static final int STARTED = 2;
+    protected static final int SUSPENDING = 3;
+    protected static final int SUSPENDED = 4;
+    protected static final int STOPPING = 5;
+    protected static final int STOPPED = 6;
+    protected static final int SHUTTINGDOWN = 7;
+    protected static final int SHUTDOWN = 8;
+    protected static final int FAILED = 9;
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
+    protected final Object lock = new Object();
+    protected volatile int status = NEW;
 
     /**
      * <b>Important: </b> You should override the lifecycle methods that start with <tt>do</tt>, eg {@link #doStart()},
@@ -55,41 +57,26 @@ public abstract class ServiceSupport implements StatefulService {
      * invoke the operation in a safe manner.
      */
     public void start() throws Exception {
-        if (isStarting() || isStarted()) {
-            // only start service if not already started
-            log.trace("Service already started");
-            return;
-        }
-        if (starting.compareAndSet(false, true)) {
+        synchronized (lock) {
+            if (status == STARTED) {
+                log.trace("Service already started");
+                return;
+            }
+            if (status == STARTING) {
+                log.trace("Service already starting");
+                return;
+            }
+            status = STARTING;
             log.trace("Starting service");
             try {
                 doStart();
-                started.set(true);
-                starting.set(false);
-                stopping.set(false);
-                stopped.set(false);
-                suspending.set(false);
-                suspended.set(false);
-                shutdown.set(false);
-                shuttingdown.set(false);
+                status = STARTED;
+                log.trace("Service started");
             } catch (Exception e) {
-                try {
-                    stop();
-                } catch (Exception e2) {
-                    // Ignore exceptions as we want to show the original exception
-                } finally {
-                    // ensure flags get reset to stopped as we failed during starting
-                    stopping.set(false);
-                    stopped.set(true);
-                    starting.set(false);
-                    started.set(false);
-                    suspending.set(false);
-                    suspended.set(false);
-                    shutdown.set(false);
-                    shuttingdown.set(false);
-                }
+                status = FAILED;
+                log.trace("Error while starting service", e);
                 throw e;
-            } 
+            }
         }
     }
 
@@ -100,26 +87,26 @@ public abstract class ServiceSupport implements StatefulService {
      * invoke the operation in a safe manner.
      */
     public void stop() throws Exception {
-        if (isStopped()) {
-            log.trace("Service already stopped");
-            return;
-        }
-        if (isStopping()) {
-            log.trace("Service already stopping");
-            return;
-        }
-        stopping.set(true);
-        try {
-            doStop();
-        } finally {
-            stopping.set(false);
-            stopped.set(true);
-            starting.set(false);
-            started.set(false);
-            suspending.set(false);
-            suspended.set(false);
-            shutdown.set(false);
-            shuttingdown.set(false);            
+        synchronized (lock) {
+            if (status == STOPPED || status == SHUTTINGDOWN || status == SHUTDOWN) {
+                log.trace("Service already stopped");
+                return;
+            }
+            if (status == STOPPING) {
+                log.trace("Service already stopping");
+                return;
+            }
+            status = STOPPING;
+            log.trace("Stopping service");
+            try {
+                doStop();
+                status = STOPPED;
+                log.trace("Service stopped service");
+            } catch (Exception e) {
+                status = FAILED;
+                log.trace("Error while stopping service", e);
+                throw e;
+            }
         }
     }
 
@@ -131,22 +118,25 @@ public abstract class ServiceSupport implements StatefulService {
      */
     @Override
     public void suspend() throws Exception {
-        if (!suspended.get()) {
-            if (suspending.compareAndSet(false, true)) {
-                try {
-                    starting.set(false);
-                    stopping.set(false);
-                    doSuspend();
-                } finally {
-                    stopped.set(false);
-                    stopping.set(false);
-                    starting.set(false);
-                    started.set(false);
-                    suspending.set(false);
-                    suspended.set(true);
-                    shutdown.set(false);
-                    shuttingdown.set(false);
-                }
+        synchronized (lock) {
+            if (status == SUSPENDED) {
+                log.trace("Service already suspended");
+                return;
+            }
+            if (status == SUSPENDING) {
+                log.trace("Service already suspending");
+                return;
+            }
+            status = SUSPENDING;
+            log.trace("Suspending service");
+            try {
+                doSuspend();
+                status = SUSPENDED;
+                log.trace("Service suspended");
+            } catch (Exception e) {
+                status = FAILED;
+                log.trace("Error while suspending service", e);
+                throw e;
             }
         }
     }
@@ -159,20 +149,21 @@ public abstract class ServiceSupport implements StatefulService {
      */
     @Override
     public void resume() throws Exception {
-        if (suspended.get()) {
-            if (starting.compareAndSet(false, true)) {
-                try {
-                    doResume();
-                } finally {
-                    started.set(true);
-                    starting.set(false);
-                    stopping.set(false);
-                    stopped.set(false);
-                    suspending.set(false);
-                    suspended.set(false);
-                    shutdown.set(false);
-                    shuttingdown.set(false);
-                }
+        synchronized (lock) {
+            if (status != SUSPENDED) {
+                log.trace("Service is not suspended");
+                return;
+            }
+            status = STARTING;
+            log.trace("Resuming service");
+            try {
+                doResume();
+                status = STARTED;
+                log.trace("Service resumed");
+            } catch (Exception e) {
+                status = FAILED;
+                log.trace("Error while resuming service", e);
+                throw e;
             }
         }
     }
@@ -185,105 +176,106 @@ public abstract class ServiceSupport implements StatefulService {
      */
     @Override
     public void shutdown() throws Exception {
-        if (shutdown.get()) {
-            log.trace("Service already shut down");
-            return;
-        }
-        // ensure we are stopped first
-        stop();
-
-        if (shuttingdown.compareAndSet(false, true)) {
+        synchronized (lock) {
+            if (status == SHUTDOWN) {
+                log.trace("Service already shut down");
+                return;
+            }
+            if (status == SHUTTINGDOWN) {
+                log.trace("Service already shutting down");
+                return;
+            }
+            stop();
+            status = SHUTDOWN;
+            log.trace("Shutting down service");
             try {
                 doShutdown();
-            } finally {
-                // shutdown is also stopped so only set shutdown flags
-                shutdown.set(true);
-                shuttingdown.set(false);
+                log.trace("Service shut down");
+                status = SHUTDOWN;
+            } catch (Exception e) {
+                status = FAILED;
+                log.trace("Error shutting down service", e);
+                throw e;
             }
         }
     }
 
     @Override
     public ServiceStatus getStatus() {
-        // we should check the ---ing states first, as this indicate the state is in the middle of doing that
-        if (isStarting()) {
-            return ServiceStatus.Starting;
-        }
-        if (isStopping()) {
-            return ServiceStatus.Stopping;
-        }
-        if (isSuspending()) {
-            return ServiceStatus.Suspending;
-        }
-
-        // then check for the regular states
-        if (isStarted()) {
-            return ServiceStatus.Started;
-        }
-        if (isStopped()) {
-            return ServiceStatus.Stopped;
+        switch (status) {
+            case STARTING:
+                return ServiceStatus.Starting;
+            case STARTED:
+                return ServiceStatus.Started;
+            case SUSPENDING:
+                return ServiceStatus.Suspending;
+            case SUSPENDED:
+                return ServiceStatus.Suspended;
+            case STOPPING:
+                return ServiceStatus.Stopping;
+            default:
+                return ServiceStatus.Stopped;
         }
-        if (isSuspended()) {
-            return ServiceStatus.Suspended;
-        }
-
-        // use stopped as fallback
-        return ServiceStatus.Stopped;
     }
     
     @Override
     public boolean isStarted() {
-        return started.get();
+        return status == STARTED;
     }
 
     @Override
     public boolean isStarting() {
-        return starting.get();
+        return status == STARTING;
     }
 
     @Override
     public boolean isStopping() {
-        return stopping.get();
+        return status == STOPPING;
     }
 
     @Override
     public boolean isStopped() {
-        return stopped.get();
+        return status == STOPPED || status == SHUTTINGDOWN || status == SHUTDOWN || status == FAILED;
     }
 
     @Override
     public boolean isSuspending() {
-        return suspending.get();
+        return status == SUSPENDING;
     }
 
     @Override
     public boolean isSuspended() {
-        return suspended.get();
+        return status == SUSPENDED;
     }
 
     @Override
     public boolean isRunAllowed() {
-        // if we have not yet initialized, then all options is false
-        boolean unused1 = !started.get() && !starting.get() && !stopping.get() && !stopped.get();
-        boolean unused2 = !suspending.get() && !suspended.get() && !shutdown.get() && !shuttingdown.get();
-        if (unused1 && unused2) {
-            return false;
-        }
-        return !isStoppingOrStopped();
+        return isStartingOrStarted() || isSuspendingOrSuspended();
+    }
+
+    public boolean isShutdown() {
+        return status == SHUTDOWN;
     }
 
     /**
      * Is the service in progress of being stopped or already stopped
      */
     public boolean isStoppingOrStopped() {
-        return stopping.get() || stopped.get();
+        return isStopping() || isStopped();
     }
 
     /**
      * Is the service in progress of being suspended or already suspended
      */
     public boolean isSuspendingOrSuspended() {
-        return suspending.get() || suspended.get();
+        return isSuspending() || isSuspended();
+    }
+
+    /**
+     * Is the service in progress of being suspended or already suspended
+     */
+    public boolean isStartingOrStarted() {
+        return isStarting() || isStarted();
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
index 54f5dd4..ad439ce 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
@@ -508,7 +508,7 @@ public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, Brow
 
     @Override
     public void shutdown() throws Exception {
-        if (shutdown.get()) {
+        if (isShutdown()) {
             log.trace("Service already shut down");
             return;
         }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 1d415c6..af89cbb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -3962,7 +3962,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             } else {
                 // and start the route service (no need to start children as they are already warmed up)
                 try {
-                    routeService.start(false);
+                    routeService.start();
                     route.getProperties().remove("route.start.exception");
                 } catch (Exception e) {
                     route.getProperties().put("route.start.exception", e);
diff --git a/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java b/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java
index 419f55c..a6588be 100644
--- a/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/support/ChildServiceSupport.java
@@ -16,118 +16,107 @@
  */
 package org.apache.camel.support;
 
-import java.util.LinkedHashSet;
-import java.util.Set;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.camel.Service;
 
 /**
  * Base class to control lifecycle for a set of child {@link org.apache.camel.Service}s.
  */
 public abstract class ChildServiceSupport extends ServiceSupport {
-    private Set<Object> childServices;
-    
-    public void start() throws Exception {
-        start(true);
-    }
 
-    public void start(boolean startChildren) throws Exception {
-        if (!started.get()) {
-            if (starting.compareAndSet(false, true)) {
-                boolean childrenStarted = false;
-                Exception ex = null;
-                try {
-                    if (childServices != null && startChildren) {
-                        ServiceHelper.startService(childServices);
-                    }
-                    childrenStarted = true;
-                    doStart();
-                } catch (Exception e) {
-                    ex = e;
-                } finally {
-                    if (ex != null) {
-                        try {
-                            stop(childrenStarted);
-                        } catch (Exception e) {
-                            // Ignore exceptions as we want to show the original exception
-                        }
-                        throw ex;
-                    } else {
-                        started.set(true);
-                        starting.set(false);
-                        stopping.set(false);
-                        stopped.set(false);
-                        suspending.set(false);
-                        suspended.set(false);
-                        shutdown.set(false);
-                        shuttingdown.set(false);
-                    }
-                }
+    protected volatile List<Service> childServices;
+
+    public void start() throws Exception {
+        synchronized (lock) {
+            if (status == STARTED) {
+                log.trace("Service already started");
+                return;
             }
-        }
-    }
-    
-    private void stop(boolean childrenStarted) throws Exception {
-        if (stopping.compareAndSet(false, true)) {
+            if (status == STARTING) {
+                log.trace("Service already starting");
+                return;
+            }
+            status = STARTING;
+            log.trace("Starting service");
             try {
-                try {
-                    starting.set(false);
-                    suspending.set(false);
-                    if (childrenStarted) {
-                        doStop();
-                    }
-                } finally {
-                    started.set(false);
-                    suspended.set(false);
-                    if (childServices != null) {
-                        ServiceHelper.stopService(childServices);
-                    }
-                }
-            } finally {
-                stopped.set(true);
-                stopping.set(false);
-                starting.set(false);
-                started.set(false);
-                suspending.set(false);
-                suspended.set(false);
-                shutdown.set(false);
-                shuttingdown.set(false);
+                ServiceHelper.startService(childServices);
+                doStart();
+                status = STARTED;
+                log.trace("Service started");
+            } catch (Exception e) {
+                status = FAILED;
+                log.trace("Error while starting service", e);
+                ServiceHelper.stopService(childServices);
+                throw e;
             }
         }
     }
 
     public void stop() throws Exception {
-        if (!stopped.get()) {
-            stop(true);
+        synchronized (lock) {
+            if (status == STOPPED || status == SHUTTINGDOWN || status == SHUTDOWN) {
+                log.trace("Service already stopped");
+                return;
+            }
+            if (status == STOPPING) {
+                log.trace("Service already stopping");
+                return;
+            }
+            status = STOPPING;
+            log.trace("Stopping service");
+            try {
+                doStop();
+                ServiceHelper.stopService(childServices);
+                status = STOPPED;
+                log.trace("Service stopped service");
+            } catch (Exception e) {
+                status = FAILED;
+                log.trace("Error while stopping service", e);
+                throw e;
+            }
         }
     }
-    
-    public void shutdown() throws Exception {
-        // ensure we are stopped first
-        stop();
 
-        if (shuttingdown.compareAndSet(false, true)) {
+    @Override
+    public void shutdown() throws Exception {
+        synchronized (lock) {
+            if (status == SHUTDOWN) {
+                log.trace("Service already shut down");
+                return;
+            }
+            if (status == SHUTTINGDOWN) {
+                log.trace("Service already shutting down");
+                return;
+            }
+            stop();
+            status = SHUTDOWN;
+            log.trace("Shutting down service");
             try {
-                try {
-                    doShutdown();
-                } finally {
-                    if (childServices != null) {
-                        ServiceHelper.stopAndShutdownServices(childServices);
-                    }
-                }
-            } finally {
-                // shutdown is also stopped so only set shutdown flags
-                shutdown.set(true);
-                shuttingdown.set(false);
+                doShutdown();
+                ServiceHelper.stopAndShutdownServices(childServices);
+                log.trace("Service shut down");
+                status = SHUTDOWN;
+            } catch (Exception e) {
+                status = FAILED;
+                log.trace("Error shutting down service", e);
+                throw e;
             }
         }
     }
-    
+
     protected void addChildService(Object childService) {
-        synchronized (this) {
+        if (childService instanceof Service) {
             if (childServices == null) {
-                childServices = new LinkedHashSet<>();
+                synchronized (lock) {
+                    if (childServices == null) {
+                        childServices = new CopyOnWriteArrayList<>();
+                    }
+                }
             }
+            childServices.add((Service) childService);
         }
-        childServices.add(childService);
     }
 
     protected boolean removeChildService(Object childService) {
diff --git a/camel-core/src/test/java/org/apache/camel/support/ServiceSupportTest.java b/camel-core/src/test/java/org/apache/camel/support/ServiceSupportTest.java
index 510eed4..34b5d04 100644
--- a/camel-core/src/test/java/org/apache/camel/support/ServiceSupportTest.java
+++ b/camel-core/src/test/java/org/apache/camel/support/ServiceSupportTest.java
@@ -132,7 +132,7 @@ public class ServiceSupportTest extends TestSupport {
 
         public ServiceSupportTestExOnStart() {
             // just for testing force it to not be stopped
-            stopped.set(false);
+            status = -1;
         }
 
         @Override


[camel] 28/44: [CAMEL-10469] Remove @version in java source code

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b34b73d02fe0d70c48274b09bfee4fc460029dc1
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 1 17:31:06 2018 +0200

    [CAMEL-10469] Remove @version in java source code
---
 .../src/main/java/org/apache/camel/AlreadyStoppedException.java   | 2 --
 camel-core/src/main/java/org/apache/camel/AsyncCallback.java      | 2 --
 camel-core/src/main/java/org/apache/camel/AsyncProcessor.java     | 2 --
 camel-core/src/main/java/org/apache/camel/AttachmentObjects.java  | 2 --
 camel-core/src/main/java/org/apache/camel/Attachments.java        | 2 --
 camel-core/src/main/java/org/apache/camel/BatchConsumer.java      | 2 --
 camel-core/src/main/java/org/apache/camel/BeanInject.java         | 2 --
 camel-core/src/main/java/org/apache/camel/BinaryPredicate.java    | 2 --
 camel-core/src/main/java/org/apache/camel/Body.java               | 2 --
 camel-core/src/main/java/org/apache/camel/BytesSource.java        | 2 --
 .../main/java/org/apache/camel/CamelAuthorizationException.java   | 2 --
 camel-core/src/main/java/org/apache/camel/CamelContext.java       | 2 --
 camel-core/src/main/java/org/apache/camel/CamelContextAware.java  | 2 --
 camel-core/src/main/java/org/apache/camel/CamelException.java     | 2 --
 .../src/main/java/org/apache/camel/CamelExchangeException.java    | 2 --
 .../src/main/java/org/apache/camel/CamelExecutionException.java   | 2 --
 camel-core/src/main/java/org/apache/camel/Channel.java            | 2 --
 camel-core/src/main/java/org/apache/camel/Component.java          | 2 --
 camel-core/src/main/java/org/apache/camel/Consume.java            | 2 --
 camel-core/src/main/java/org/apache/camel/Consumer.java           | 2 --
 camel-core/src/main/java/org/apache/camel/Converter.java          | 2 --
 camel-core/src/main/java/org/apache/camel/DynamicRouter.java      | 1 -
 camel-core/src/main/java/org/apache/camel/Endpoint.java           | 1 -
 camel-core/src/main/java/org/apache/camel/EndpointInject.java     | 2 --
 camel-core/src/main/java/org/apache/camel/Exchange.java           | 1 -
 camel-core/src/main/java/org/apache/camel/ExchangePattern.java    | 2 --
 camel-core/src/main/java/org/apache/camel/ExchangeProperties.java | 1 -
 camel-core/src/main/java/org/apache/camel/ExchangeProperty.java   | 1 -
 .../src/main/java/org/apache/camel/ExchangeTimedOutException.java | 2 --
 .../src/main/java/org/apache/camel/ExecutorServiceAware.java      | 2 --
 .../src/main/java/org/apache/camel/ExpectedBodyTypeException.java | 2 --
 camel-core/src/main/java/org/apache/camel/Expression.java         | 2 --
 .../main/java/org/apache/camel/ExpressionEvaluationException.java | 2 --
 .../java/org/apache/camel/ExpressionIllegalSyntaxException.java   | 2 --
 .../java/org/apache/camel/FailedToCreateConsumerException.java    | 2 --
 .../java/org/apache/camel/FailedToCreateProducerException.java    | 2 --
 .../main/java/org/apache/camel/FailedToCreateRouteException.java  | 2 --
 .../main/java/org/apache/camel/FailedToStartRouteException.java   | 2 --
 camel-core/src/main/java/org/apache/camel/FallbackConverter.java  | 2 --
 camel-core/src/main/java/org/apache/camel/Handler.java            | 2 --
 camel-core/src/main/java/org/apache/camel/Header.java             | 1 -
 camel-core/src/main/java/org/apache/camel/Headers.java            | 1 -
 camel-core/src/main/java/org/apache/camel/InOnly.java             | 2 --
 camel-core/src/main/java/org/apache/camel/InOut.java              | 2 --
 .../src/main/java/org/apache/camel/InvalidPayloadException.java   | 2 --
 .../java/org/apache/camel/InvalidPayloadRuntimeException.java     | 2 --
 camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java     | 1 -
 camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java    | 1 -
 camel-core/src/main/java/org/apache/camel/IsSingleton.java        | 2 --
 camel-core/src/main/java/org/apache/camel/LoggingLevel.java       | 2 --
 .../src/main/java/org/apache/camel/ManagementStatisticsLevel.java | 2 --
 camel-core/src/main/java/org/apache/camel/Message.java            | 2 --
 .../src/main/java/org/apache/camel/MultipleConsumersSupport.java  | 2 --
 camel-core/src/main/java/org/apache/camel/Navigate.java           | 2 --
 .../main/java/org/apache/camel/NoFactoryAvailableException.java   | 2 --
 .../src/main/java/org/apache/camel/NoSuchBeanException.java       | 2 --
 .../src/main/java/org/apache/camel/NoSuchEndpointException.java   | 2 --
 .../src/main/java/org/apache/camel/NoSuchHeaderException.java     | 2 --
 .../src/main/java/org/apache/camel/NoSuchLanguageException.java   | 2 --
 .../src/main/java/org/apache/camel/NoSuchPropertyException.java   | 2 --
 .../java/org/apache/camel/NoTypeConversionAvailableException.java | 2 --
 camel-core/src/main/java/org/apache/camel/Ordered.java            | 2 --
 camel-core/src/main/java/org/apache/camel/OutHeaders.java         | 1 -
 camel-core/src/main/java/org/apache/camel/Pattern.java            | 2 --
 camel-core/src/main/java/org/apache/camel/PollingConsumer.java    | 2 --
 camel-core/src/main/java/org/apache/camel/Predicate.java          | 2 --
 camel-core/src/main/java/org/apache/camel/Processor.java          | 2 --
 camel-core/src/main/java/org/apache/camel/Produce.java            | 2 --
 camel-core/src/main/java/org/apache/camel/Producer.java           | 2 --
 .../main/java/org/apache/camel/ProxyInstantiationException.java   | 2 --
 camel-core/src/main/java/org/apache/camel/RecipientList.java      | 2 --
 .../java/org/apache/camel/ResolveEndpointFailedException.java     | 2 --
 .../src/main/java/org/apache/camel/RollbackExchangeException.java | 2 --
 camel-core/src/main/java/org/apache/camel/RoutingSlip.java        | 1 -
 .../src/main/java/org/apache/camel/RuntimeCamelException.java     | 2 --
 .../src/main/java/org/apache/camel/RuntimeConfiguration.java      | 2 --
 .../src/main/java/org/apache/camel/RuntimeExchangeException.java  | 2 --
 .../main/java/org/apache/camel/RuntimeExpressionException.java    | 2 --
 .../src/main/java/org/apache/camel/RuntimeTransformException.java | 2 --
 camel-core/src/main/java/org/apache/camel/Service.java            | 2 --
 camel-core/src/main/java/org/apache/camel/ServiceStatus.java      | 2 --
 .../src/main/java/org/apache/camel/ShutdownableService.java       | 2 --
 camel-core/src/main/java/org/apache/camel/StartupListener.java    | 1 -
 camel-core/src/main/java/org/apache/camel/StreamCache.java        | 2 --
 camel-core/src/main/java/org/apache/camel/StringSource.java       | 2 --
 camel-core/src/main/java/org/apache/camel/TimeoutMap.java         | 2 --
 camel-core/src/main/java/org/apache/camel/Traceable.java          | 2 --
 .../src/main/java/org/apache/camel/TypeConversionException.java   | 2 --
 camel-core/src/main/java/org/apache/camel/TypeConverter.java      | 2 --
 .../src/main/java/org/apache/camel/TypeConverterExists.java       | 2 --
 .../main/java/org/apache/camel/TypeConverterLoaderException.java  | 2 --
 .../src/main/java/org/apache/camel/ValidationException.java       | 2 --
 .../src/main/java/org/apache/camel/WaitForTaskToComplete.java     | 2 --
 .../java/org/apache/camel/api/management/ManagedInstance.java     | 2 --
 .../java/org/apache/camel/api/management/PerformanceCounter.java  | 2 --
 .../java/org/apache/camel/builder/BinaryPredicateSupport.java     | 2 --
 camel-core/src/main/java/org/apache/camel/builder/Builder.java    | 2 --
 .../src/main/java/org/apache/camel/builder/BuilderSupport.java    | 2 --
 .../src/main/java/org/apache/camel/builder/DataFormatClause.java  | 2 --
 .../java/org/apache/camel/builder/DeadLetterChannelBuilder.java   | 2 --
 .../java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java | 2 --
 .../main/java/org/apache/camel/builder/ErrorHandlerBuilder.java   | 2 --
 .../java/org/apache/camel/builder/ErrorHandlerBuilderRef.java     | 2 --
 .../java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java | 2 --
 .../src/main/java/org/apache/camel/builder/ExpressionBuilder.java | 2 --
 .../src/main/java/org/apache/camel/builder/ExpressionClause.java  | 2 --
 .../java/org/apache/camel/builder/ExpressionClauseSupport.java    | 2 --
 .../main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java | 2 --
 .../src/main/java/org/apache/camel/builder/NotifyBuilder.java     | 2 --
 .../src/main/java/org/apache/camel/builder/PredicateBuilder.java  | 2 --
 .../src/main/java/org/apache/camel/builder/ProcessorBuilder.java  | 2 --
 .../src/main/java/org/apache/camel/builder/ProxyBuilder.java      | 2 --
 .../src/main/java/org/apache/camel/builder/RouteBuilder.java      | 2 --
 .../src/main/java/org/apache/camel/builder/SimpleBuilder.java     | 2 --
 .../src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java | 2 --
 .../src/main/java/org/apache/camel/builder/ValueBuilder.java      | 2 --
 .../main/java/org/apache/camel/builder/xml/DomResultHandler.java  | 2 --
 .../org/apache/camel/builder/xml/DomResultHandlerFactory.java     | 2 --
 .../main/java/org/apache/camel/builder/xml/FileResultHandler.java | 2 --
 .../org/apache/camel/builder/xml/FileResultHandlerFactory.java    | 2 --
 .../java/org/apache/camel/builder/xml/InvalidXPathExpression.java | 2 --
 .../org/apache/camel/builder/xml/MessageVariableResolver.java     | 2 --
 .../src/main/java/org/apache/camel/builder/xml/Namespaces.java    | 2 --
 .../src/main/java/org/apache/camel/builder/xml/ResultHandler.java | 2 --
 .../java/org/apache/camel/builder/xml/ResultHandlerFactory.java   | 2 --
 .../java/org/apache/camel/builder/xml/StreamResultHandler.java    | 2 --
 .../org/apache/camel/builder/xml/StreamResultHandlerFactory.java  | 2 --
 .../java/org/apache/camel/builder/xml/StringResultHandler.java    | 2 --
 .../org/apache/camel/builder/xml/StringResultHandlerFactory.java  | 2 --
 .../src/main/java/org/apache/camel/builder/xml/XsltBuilder.java   | 2 --
 .../main/java/org/apache/camel/builder/xml/XsltUriResolver.java   | 2 --
 .../org/apache/camel/component/bean/AbstractBeanProcessor.java    | 2 --
 .../apache/camel/component/bean/AmbiguousMethodCallException.java | 2 --
 .../apache/camel/component/bean/AnnotationExpressionFactory.java  | 2 --
 .../camel/component/bean/BeanAnnotationExpressionFactory.java     | 3 ---
 .../main/java/org/apache/camel/component/bean/BeanConstants.java  | 3 ---
 .../src/main/java/org/apache/camel/component/bean/BeanHolder.java | 2 --
 .../main/java/org/apache/camel/component/bean/BeanTypeHolder.java | 2 --
 .../org/apache/camel/component/bean/CamelInvocationHandler.java   | 2 --
 .../java/org/apache/camel/component/bean/ConstantBeanHolder.java  | 2 --
 .../apache/camel/component/bean/ConstantStaticTypeBeanHolder.java | 2 --
 .../org/apache/camel/component/bean/ConstantTypeBeanHolder.java   | 2 --
 .../camel/component/bean/DefaultAnnotationExpressionFactory.java  | 2 --
 .../camel/component/bean/DefaultParameterMappingStrategy.java     | 2 --
 .../src/main/java/org/apache/camel/component/bean/MethodBean.java | 2 --
 .../src/main/java/org/apache/camel/component/bean/MethodInfo.java | 2 --
 .../java/org/apache/camel/component/bean/MethodInfoCache.java     | 2 --
 .../java/org/apache/camel/component/bean/MethodInvocation.java    | 2 --
 .../org/apache/camel/component/bean/MethodNotFoundException.java  | 3 ---
 .../main/java/org/apache/camel/component/bean/ParameterInfo.java  | 2 --
 .../org/apache/camel/component/bean/ParameterMappingStrategy.java | 2 --
 .../main/java/org/apache/camel/component/bean/ProxyHelper.java    | 2 --
 .../main/java/org/apache/camel/component/bean/RegistryBean.java   | 2 --
 .../camel/component/bean/XPathAnnotationExpressionFactory.java    | 2 --
 .../java/org/apache/camel/component/beanclass/ClassComponent.java | 2 --
 .../java/org/apache/camel/component/browse/BrowseComponent.java   | 2 --
 .../apache/camel/component/dataformat/DataFormatComponent.java    | 2 --
 .../src/main/java/org/apache/camel/component/dataset/DataSet.java | 2 --
 .../java/org/apache/camel/component/dataset/DataSetComponent.java | 2 --
 .../java/org/apache/camel/component/dataset/DataSetConsumer.java  | 2 --
 .../java/org/apache/camel/component/dataset/DataSetSupport.java   | 2 --
 .../main/java/org/apache/camel/component/dataset/FileDataSet.java | 2 --
 .../main/java/org/apache/camel/component/dataset/ListDataSet.java | 2 --
 .../java/org/apache/camel/component/dataset/SimpleDataSet.java    | 2 --
 .../java/org/apache/camel/component/direct/DirectComponent.java   | 2 --
 .../java/org/apache/camel/component/direct/DirectConsumer.java    | 2 --
 .../component/direct/DirectConsumerNotAvailableException.java     | 2 --
 .../java/org/apache/camel/component/direct/DirectProducer.java    | 2 --
 .../component/directvm/DirectVmConsumerNotAvailableException.java | 2 --
 .../java/org/apache/camel/component/file/GenericFileExist.java    | 2 --
 .../org/apache/camel/component/file/GenericFileOnCompletion.java  | 2 --
 .../camel/component/file/GenericFileOperationFailedException.java | 2 --
 .../org/apache/camel/component/language/LanguageComponent.java    | 2 --
 .../org/apache/camel/component/language/LanguageProducer.java     | 2 --
 .../main/java/org/apache/camel/component/log/LogComponent.java    | 2 --
 .../java/org/apache/camel/component/mock/AssertionClause.java     | 2 --
 .../main/java/org/apache/camel/component/mock/MockComponent.java  | 2 --
 .../main/java/org/apache/camel/component/mock/MockEndpoint.java   | 2 --
 .../src/main/java/org/apache/camel/component/mock/TimeClause.java | 2 --
 .../camel/component/properties/DefaultPropertiesResolver.java     | 2 --
 .../org/apache/camel/component/properties/PropertiesResolver.java | 2 --
 .../main/java/org/apache/camel/component/seda/SedaComponent.java  | 2 --
 .../main/java/org/apache/camel/component/seda/SedaConsumer.java   | 2 --
 .../main/java/org/apache/camel/component/seda/SedaProducer.java   | 3 ---
 .../main/java/org/apache/camel/component/test/TestComponent.java  | 2 --
 .../java/org/apache/camel/component/timer/TimerComponent.java     | 2 --
 .../main/java/org/apache/camel/component/timer/TimerConsumer.java | 2 --
 .../org/apache/camel/component/validator/ValidatorComponent.java  | 2 --
 .../src/main/java/org/apache/camel/component/vm/VmComponent.java  | 2 --
 .../main/java/org/apache/camel/converter/AttachmentConverter.java | 2 --
 .../src/main/java/org/apache/camel/converter/CamelConverter.java  | 2 --
 .../main/java/org/apache/camel/converter/CollectionConverter.java | 2 --
 .../src/main/java/org/apache/camel/converter/IOConverter.java     | 2 --
 .../src/main/java/org/apache/camel/converter/NIOConverter.java    | 2 --
 .../src/main/java/org/apache/camel/converter/ObjectConverter.java | 2 --
 .../main/java/org/apache/camel/converter/jaxp/DomConverter.java   | 2 --
 .../main/java/org/apache/camel/converter/jaxp/StaxConverter.java  | 2 --
 .../org/apache/camel/converter/jaxp/StreamSourceConverter.java    | 2 --
 .../main/java/org/apache/camel/converter/jaxp/XmlConverter.java   | 2 --
 .../src/main/java/org/apache/camel/impl/BreakpointSupport.java    | 2 --
 .../main/java/org/apache/camel/impl/CamelPostProcessorHelper.java | 2 --
 .../src/main/java/org/apache/camel/impl/ConditionSupport.java     | 2 --
 camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultCamelContext.java  | 2 --
 .../org/apache/camel/impl/DefaultCamelContextNameStrategy.java    | 2 --
 .../main/java/org/apache/camel/impl/DefaultComponentResolver.java | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultConsumer.java      | 2 --
 .../main/java/org/apache/camel/impl/DefaultConsumerTemplate.java  | 2 --
 .../java/org/apache/camel/impl/DefaultDataFormatResolver.java     | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultDebugger.java      | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultEndpoint.java      | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultExchange.java      | 2 --
 .../main/java/org/apache/camel/impl/DefaultExchangeHolder.java    | 2 --
 .../java/org/apache/camel/impl/DefaultFactoryFinderResolver.java  | 2 --
 .../java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java   | 2 --
 .../java/org/apache/camel/impl/DefaultInflightRepository.java     | 2 --
 .../main/java/org/apache/camel/impl/DefaultLanguageResolver.java  | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultMessage.java       | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultNodeIdFactory.java | 2 --
 .../org/apache/camel/impl/DefaultPollingConsumerPollStrategy.java | 2 --
 .../main/java/org/apache/camel/impl/DefaultPollingEndpoint.java   | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultProducer.java      | 2 --
 .../main/java/org/apache/camel/impl/DefaultProducerTemplate.java  | 2 --
 camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java  | 2 --
 .../src/main/java/org/apache/camel/impl/DefaultRouteContext.java  | 2 --
 .../main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java | 2 --
 .../java/org/apache/camel/impl/DefaultScheduledPollConsumer.java  | 2 --
 .../main/java/org/apache/camel/impl/DefaultShutdownStrategy.java  | 2 --
 .../main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java | 2 --
 .../java/org/apache/camel/impl/EventDrivenPollingConsumer.java    | 2 --
 .../org/apache/camel/impl/ExplicitCamelContextNameStrategy.java   | 2 --
 .../main/java/org/apache/camel/impl/InterceptSendToEndpoint.java  | 2 --
 .../apache/camel/impl/InterceptSendToMockEndpointStrategy.java    | 2 --
 .../org/apache/camel/impl/LimitedPollingConsumerPollStrategy.java | 2 --
 camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java | 2 --
 .../src/main/java/org/apache/camel/impl/MessageSupport.java       | 2 --
 .../main/java/org/apache/camel/impl/PollingConsumerSupport.java   | 2 --
 .../src/main/java/org/apache/camel/impl/ProcessorEndpoint.java    | 2 --
 .../main/java/org/apache/camel/impl/ProcessorPollingConsumer.java | 2 --
 camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java | 5 +----
 .../apache/camel/impl/PropertyPlaceholderDelegateRegistry.java    | 2 --
 camel-core/src/main/java/org/apache/camel/impl/RouteService.java  | 2 --
 .../main/java/org/apache/camel/impl/ScheduledPollEndpoint.java    | 2 --
 .../main/java/org/apache/camel/impl/SerializationDataFormat.java  | 2 --
 camel-core/src/main/java/org/apache/camel/impl/ServicePool.java   | 2 --
 .../src/main/java/org/apache/camel/impl/StringDataFormat.java     | 2 --
 .../java/org/apache/camel/impl/SynchronousDelegateProducer.java   | 2 --
 .../java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java | 2 --
 .../camel/impl/converter/AnnotationTypeConverterLoader.java       | 2 --
 .../java/org/apache/camel/impl/converter/ArrayTypeConverter.java  | 2 --
 .../apache/camel/impl/converter/AsyncProcessorTypeConverter.java  | 2 --
 .../apache/camel/impl/converter/BaseTypeConverterRegistry.java    | 2 --
 .../java/org/apache/camel/impl/converter/CachingInjector.java     | 2 --
 .../org/apache/camel/impl/converter/DefaultTypeConverter.java     | 2 --
 .../java/org/apache/camel/impl/converter/FutureTypeConverter.java | 2 --
 .../camel/impl/converter/InstanceMethodFallbackTypeConverter.java | 2 --
 .../apache/camel/impl/converter/InstanceMethodTypeConverter.java  | 2 --
 .../camel/impl/converter/StaticMethodFallbackTypeConverter.java   | 2 --
 .../apache/camel/impl/converter/StaticMethodTypeConverter.java    | 2 --
 .../java/org/apache/camel/impl/osgi/tracker/AbstractTracked.java  | 1 -
 .../java/org/apache/camel/impl/osgi/tracker/BundleTracker.java    | 1 -
 .../apache/camel/impl/osgi/tracker/BundleTrackerCustomizer.java   | 1 -
 camel-core/src/main/java/org/apache/camel/language/Bean.java      | 2 --
 .../main/java/org/apache/camel/language/LanguageAnnotation.java   | 2 --
 .../main/java/org/apache/camel/language/LanguageExpression.java   | 2 --
 .../src/main/java/org/apache/camel/language/NamespacePrefix.java  | 2 --
 camel-core/src/main/java/org/apache/camel/language/Simple.java    | 2 --
 camel-core/src/main/java/org/apache/camel/language/XPath.java     | 2 --
 .../main/java/org/apache/camel/language/bean/BeanLanguage.java    | 2 --
 .../camel/language/bean/RuntimeBeanExpressionException.java       | 2 --
 camel-core/src/main/java/org/apache/camel/main/Main.java          | 2 --
 camel-core/src/main/java/org/apache/camel/main/MainSupport.java   | 2 --
 .../camel/management/DefaultManagementLifecycleStrategy.java      | 1 -
 .../apache/camel/management/DefaultManagementMBeanAssembler.java  | 2 --
 .../org/apache/camel/management/DefaultManagementStrategy.java    | 1 -
 .../org/apache/camel/management/DelegatePerformanceCounter.java   | 2 --
 .../apache/camel/management/InstrumentationInterceptStrategy.java | 2 --
 .../org/apache/camel/management/InstrumentationProcessor.java     | 2 --
 .../org/apache/camel/management/JmxNotificationEventNotifier.java | 2 --
 .../java/org/apache/camel/management/JmxSystemPropertyKeys.java   | 2 --
 .../java/org/apache/camel/management/LoggingEventNotifier.java    | 2 --
 .../org/apache/camel/management/ManagedManagementStrategy.java    | 1 -
 .../java/org/apache/camel/management/PublishEventNotifier.java    | 2 --
 .../org/apache/camel/management/event/AbstractContextEvent.java   | 2 --
 .../org/apache/camel/management/event/AbstractExchangeEvent.java  | 2 --
 .../org/apache/camel/management/event/AbstractRouteEvent.java     | 2 --
 .../camel/management/event/CamelContextResumeFailureEvent.java    | 3 ---
 .../apache/camel/management/event/CamelContextResumedEvent.java   | 3 ---
 .../apache/camel/management/event/CamelContextResumingEvent.java  | 3 ---
 .../apache/camel/management/event/CamelContextStartedEvent.java   | 3 ---
 .../apache/camel/management/event/CamelContextStartingEvent.java  | 3 ---
 .../camel/management/event/CamelContextStartupFailureEvent.java   | 3 ---
 .../camel/management/event/CamelContextStopFailureEvent.java      | 3 ---
 .../apache/camel/management/event/CamelContextStoppedEvent.java   | 3 ---
 .../apache/camel/management/event/CamelContextStoppingEvent.java  | 3 ---
 .../apache/camel/management/event/CamelContextSuspendedEvent.java | 3 ---
 .../camel/management/event/CamelContextSuspendingEvent.java       | 3 ---
 .../org/apache/camel/management/event/DefaultEventFactory.java    | 2 --
 .../org/apache/camel/management/event/ExchangeCompletedEvent.java | 3 ---
 .../org/apache/camel/management/event/ExchangeCreatedEvent.java   | 2 --
 .../org/apache/camel/management/event/ExchangeFailedEvent.java    | 3 ---
 .../camel/management/event/ExchangeFailureHandledEvent.java       | 3 ---
 .../camel/management/event/ExchangeFailureHandlingEvent.java      | 3 ---
 .../apache/camel/management/event/ExchangeRedeliveryEvent.java    | 3 ---
 .../org/apache/camel/management/event/ExchangeSendingEvent.java   | 1 -
 .../java/org/apache/camel/management/event/ExchangeSentEvent.java | 1 -
 .../main/java/org/apache/camel/management/event/FailureEvent.java | 1 -
 .../java/org/apache/camel/management/event/RouteAddedEvent.java   | 3 ---
 .../java/org/apache/camel/management/event/RouteRemovedEvent.java | 3 ---
 .../java/org/apache/camel/management/event/RouteStartedEvent.java | 3 ---
 .../java/org/apache/camel/management/event/RouteStoppedEvent.java | 3 ---
 .../apache/camel/management/event/ServiceStartupFailureEvent.java | 3 ---
 .../apache/camel/management/event/ServiceStopFailureEvent.java    | 3 ---
 .../apache/camel/management/mbean/ManagedAggregateProcessor.java  | 3 ---
 .../org/apache/camel/management/mbean/ManagedBacklogTracer.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedBeanProcessor.java   | 3 ---
 .../apache/camel/management/mbean/ManagedBrowsableEndpoint.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedCamelContext.java    | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedChoice.java     | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedClaimCheck.java | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedComponent.java  | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedConsumer.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedConsumerCache.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedConvertBody.java     | 3 ---
 .../apache/camel/management/mbean/ManagedCustomLoadBalancer.java  | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedDelayer.java    | 3 ---
 .../org/apache/camel/management/mbean/ManagedDynamicRouter.java   | 3 ---
 .../apache/camel/management/mbean/ManagedEndpointRegistry.java    | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedEnricher.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedErrorHandler.java    | 3 ---
 .../org/apache/camel/management/mbean/ManagedEventNotifier.java   | 3 ---
 .../camel/management/mbean/ManagedFailoverLoadBalancer.java       | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedFilter.java     | 3 ---
 .../main/java/org/apache/camel/management/mbean/ManagedLog.java   | 3 ---
 .../main/java/org/apache/camel/management/mbean/ManagedLoop.java  | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedMarshal.java    | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedMulticast.java  | 3 ---
 .../org/apache/camel/management/mbean/ManagedPollEnricher.java    | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedProcess.java    | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedProcessor.java  | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedProducer.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedProducerCache.java   | 3 ---
 .../apache/camel/management/mbean/ManagedRandomLoadBalancer.java  | 3 ---
 .../org/apache/camel/management/mbean/ManagedRecipientList.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedRemoveHeader.java    | 3 ---
 .../org/apache/camel/management/mbean/ManagedRemoveHeaders.java   | 3 ---
 .../apache/camel/management/mbean/ManagedRemoveProperties.java    | 3 ---
 .../org/apache/camel/management/mbean/ManagedRemoveProperty.java  | 3 ---
 .../org/apache/camel/management/mbean/ManagedResequencer.java     | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedRollback.java   | 3 ---
 .../camel/management/mbean/ManagedRoundRobinLoadBalancer.java     | 3 ---
 .../org/apache/camel/management/mbean/ManagedRoutingSlip.java     | 3 ---
 .../apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java | 3 ---
 .../apache/camel/management/mbean/ManagedSamplingThrottler.java   | 3 ---
 .../camel/management/mbean/ManagedScheduledPollConsumer.java      | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedScript.java     | 3 ---
 .../camel/management/mbean/ManagedSendDynamicProcessor.java       | 3 ---
 .../org/apache/camel/management/mbean/ManagedSendProcessor.java   | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedSetBody.java    | 3 ---
 .../apache/camel/management/mbean/ManagedSetExchangePattern.java  | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedSetHeader.java  | 3 ---
 .../org/apache/camel/management/mbean/ManagedSetProperty.java     | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedSplitter.java   | 3 ---
 .../apache/camel/management/mbean/ManagedStickyLoadBalancer.java  | 3 ---
 .../main/java/org/apache/camel/management/mbean/ManagedStop.java  | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedThreadPool.java | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedThreads.java    | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedThrottler.java  | 3 ---
 .../management/mbean/ManagedThrottlingInflightRoutePolicy.java    | 3 ---
 .../org/apache/camel/management/mbean/ManagedThrowException.java  | 3 ---
 .../apache/camel/management/mbean/ManagedTopicLoadBalancer.java   | 3 ---
 .../org/apache/camel/management/mbean/ManagedTransformer.java     | 3 ---
 .../apache/camel/management/mbean/ManagedTransformerRegistry.java | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedUnmarshal.java  | 3 ---
 .../java/org/apache/camel/management/mbean/ManagedValidate.java   | 3 ---
 .../apache/camel/management/mbean/ManagedValidatorRegistry.java   | 3 ---
 .../camel/management/mbean/ManagedWeightedLoadBalancer.java       | 3 ---
 .../apache/camel/management/mbean/ManagedWireTapProcessor.java    | 3 ---
 .../src/main/java/org/apache/camel/model/AggregateDefinition.java | 2 --
 .../src/main/java/org/apache/camel/model/BeanDefinition.java      | 2 --
 camel-core/src/main/java/org/apache/camel/model/Block.java        | 2 --
 .../src/main/java/org/apache/camel/model/CatchDefinition.java     | 2 --
 .../src/main/java/org/apache/camel/model/ChoiceDefinition.java    | 2 --
 camel-core/src/main/java/org/apache/camel/model/Constants.java    | 2 --
 .../src/main/java/org/apache/camel/model/DelayDefinition.java     | 2 --
 .../main/java/org/apache/camel/model/DescriptionDefinition.java   | 2 --
 .../org/apache/camel/model/ExecutorServiceAwareDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/ExpressionNode.java      | 2 --
 .../src/main/java/org/apache/camel/model/FilterDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/FinallyDefinition.java   | 2 --
 .../src/main/java/org/apache/camel/model/FromDefinition.java      | 2 --
 .../src/main/java/org/apache/camel/model/IdentifiedType.java      | 2 --
 .../src/main/java/org/apache/camel/model/InOnlyDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/InOutDefinition.java     | 2 --
 .../src/main/java/org/apache/camel/model/InterceptDefinition.java | 2 --
 .../main/java/org/apache/camel/model/InterceptFromDefinition.java | 2 --
 .../org/apache/camel/model/InterceptSendToEndpointDefinition.java | 2 --
 .../src/main/java/org/apache/camel/model/LogDefinition.java       | 2 --
 .../src/main/java/org/apache/camel/model/LoopDefinition.java      | 2 --
 .../src/main/java/org/apache/camel/model/MarshalDefinition.java   | 2 --
 .../src/main/java/org/apache/camel/model/MulticastDefinition.java | 2 --
 .../main/java/org/apache/camel/model/NoOutputExpressionNode.java  | 2 --
 .../main/java/org/apache/camel/model/OnCompletionDefinition.java  | 2 --
 .../main/java/org/apache/camel/model/OnExceptionDefinition.java   | 2 --
 .../apache/camel/model/OptimisticLockRetryPolicyDefinition.java   | 2 --
 .../java/org/apache/camel/model/OptionalIdentifiedDefinition.java | 2 --
 .../src/main/java/org/apache/camel/model/OtherwiseDefinition.java | 2 --
 .../src/main/java/org/apache/camel/model/OutputDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/PipelineDefinition.java  | 2 --
 .../src/main/java/org/apache/camel/model/PolicyDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/ProcessDefinition.java   | 2 --
 .../src/main/java/org/apache/camel/model/ProcessorDefinition.java | 2 --
 .../main/java/org/apache/camel/model/RecipientListDefinition.java | 2 --
 .../java/org/apache/camel/model/RedeliveryPolicyDefinition.java   | 2 --
 .../main/java/org/apache/camel/model/ResequenceDefinition.java    | 2 --
 .../java/org/apache/camel/model/RestContextRefDefinition.java     | 2 --
 .../src/main/java/org/apache/camel/model/RethrowDefinition.java   | 2 --
 .../main/java/org/apache/camel/model/RouteBuilderDefinition.java  | 2 --
 .../src/main/java/org/apache/camel/model/RouteContainer.java      | 2 --
 .../java/org/apache/camel/model/RouteContextRefDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/RouteDefinition.java     | 2 --
 .../src/main/java/org/apache/camel/model/RoutesDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/SagaDefinition.java      | 2 --
 .../src/main/java/org/apache/camel/model/SamplingDefinition.java  | 2 --
 .../src/main/java/org/apache/camel/model/SendDefinition.java      | 2 --
 .../java/org/apache/camel/model/SetExchangePatternDefinition.java | 2 --
 .../src/main/java/org/apache/camel/model/SplitDefinition.java     | 2 --
 .../src/main/java/org/apache/camel/model/StopDefinition.java      | 2 --
 .../java/org/apache/camel/model/ThreadPoolProfileDefinition.java  | 2 --
 .../src/main/java/org/apache/camel/model/ThreadsDefinition.java   | 2 --
 .../src/main/java/org/apache/camel/model/ThrottleDefinition.java  | 2 --
 camel-core/src/main/java/org/apache/camel/model/ToDefinition.java | 2 --
 .../main/java/org/apache/camel/model/TransactedDefinition.java    | 2 --
 .../src/main/java/org/apache/camel/model/TryDefinition.java       | 2 --
 .../src/main/java/org/apache/camel/model/UnmarshalDefinition.java | 2 --
 .../src/main/java/org/apache/camel/model/ValidateDefinition.java  | 2 --
 .../src/main/java/org/apache/camel/model/WhenDefinition.java      | 2 --
 .../java/org/apache/camel/model/dataformat/AvroDataFormat.java    | 2 --
 .../java/org/apache/camel/model/dataformat/BarcodeDataFormat.java | 2 --
 .../java/org/apache/camel/model/dataformat/Base64DataFormat.java  | 2 --
 .../java/org/apache/camel/model/dataformat/BeanioDataFormat.java  | 2 --
 .../java/org/apache/camel/model/dataformat/BindyDataFormat.java   | 2 --
 .../main/java/org/apache/camel/model/dataformat/BindyType.java    | 2 --
 .../java/org/apache/camel/model/dataformat/CryptoDataFormat.java  | 2 --
 .../java/org/apache/camel/model/dataformat/CustomDataFormat.java  | 2 --
 .../java/org/apache/camel/model/dataformat/GzipDataFormat.java    | 2 --
 .../java/org/apache/camel/model/dataformat/HL7DataFormat.java     | 2 --
 .../org/apache/camel/model/dataformat/JacksonXMLDataFormat.java   | 2 --
 .../java/org/apache/camel/model/dataformat/JaxbDataFormat.java    | 2 --
 .../java/org/apache/camel/model/dataformat/JsonDataFormat.java    | 2 --
 .../main/java/org/apache/camel/model/dataformat/JsonLibrary.java  | 2 --
 .../org/apache/camel/model/dataformat/ProtobufDataFormat.java     | 2 --
 .../apache/camel/model/dataformat/SerializationDataFormat.java    | 2 --
 .../java/org/apache/camel/model/dataformat/StringDataFormat.java  | 2 --
 .../java/org/apache/camel/model/dataformat/SyslogDataFormat.java  | 2 --
 .../java/org/apache/camel/model/dataformat/ThriftDataFormat.java  | 2 --
 .../java/org/apache/camel/model/dataformat/XStreamDataFormat.java | 2 --
 .../java/org/apache/camel/model/dataformat/YAMLDataFormat.java    | 2 --
 .../main/java/org/apache/camel/model/dataformat/YAMLLibrary.java  | 2 --
 .../apache/camel/model/language/ExchangePropertyExpression.java   | 2 --
 .../java/org/apache/camel/model/language/GroovyExpression.java    | 2 --
 .../java/org/apache/camel/model/language/HeaderExpression.java    | 2 --
 .../org/apache/camel/model/language/JavaScriptExpression.java     | 2 --
 .../java/org/apache/camel/model/language/JsonPathExpression.java  | 2 --
 .../java/org/apache/camel/model/language/LanguageExpression.java  | 2 --
 .../org/apache/camel/model/language/MethodCallExpression.java     | 2 --
 .../main/java/org/apache/camel/model/language/MvelExpression.java | 2 --
 .../org/apache/camel/model/language/NamespaceAwareExpression.java | 2 --
 .../main/java/org/apache/camel/model/language/OgnlExpression.java | 2 --
 .../java/org/apache/camel/model/language/SimpleExpression.java    | 2 --
 .../main/java/org/apache/camel/model/language/SpELExpression.java | 2 --
 .../java/org/apache/camel/model/language/TerserExpression.java    | 2 --
 .../java/org/apache/camel/model/language/XQueryExpression.java    | 2 --
 .../main/java/org/apache/camel/processor/CamelLogProcessor.java   | 2 --
 .../src/main/java/org/apache/camel/processor/CatchProcessor.java  | 2 --
 .../src/main/java/org/apache/camel/processor/ChoiceProcessor.java | 2 --
 .../java/org/apache/camel/processor/ConvertBodyProcessor.java     | 2 --
 .../main/java/org/apache/camel/processor/DeadLetterChannel.java   | 2 --
 .../main/java/org/apache/camel/processor/DefaultErrorHandler.java | 2 --
 .../java/org/apache/camel/processor/DelayProcessorSupport.java    | 2 --
 camel-core/src/main/java/org/apache/camel/processor/Delayer.java  | 2 --
 .../java/org/apache/camel/processor/DelegateAsyncProcessor.java   | 2 --
 .../main/java/org/apache/camel/processor/DelegateProcessor.java   | 1 -
 .../java/org/apache/camel/processor/DelegateSyncProcessor.java    | 2 --
 .../src/main/java/org/apache/camel/processor/DynamicRouter.java   | 2 --
 .../src/main/java/org/apache/camel/processor/ErrorHandler.java    | 2 --
 .../main/java/org/apache/camel/processor/ErrorHandlerSupport.java | 2 --
 .../org/apache/camel/processor/FatalFallbackErrorHandler.java     | 2 --
 .../src/main/java/org/apache/camel/processor/FilterProcessor.java | 2 --
 .../main/java/org/apache/camel/processor/FinallyProcessor.java    | 2 --
 .../org/apache/camel/processor/InterceptEndpointProcessor.java    | 2 --
 .../apache/camel/processor/InterceptorToAsyncProcessorBridge.java | 2 --
 .../src/main/java/org/apache/camel/processor/LogProcessor.java    | 2 --
 .../main/java/org/apache/camel/processor/MarshalProcessor.java    | 2 --
 .../main/java/org/apache/camel/processor/MulticastProcessor.java  | 2 --
 .../java/org/apache/camel/processor/OnCompletionProcessor.java    | 2 --
 camel-core/src/main/java/org/apache/camel/processor/Pipeline.java | 2 --
 .../src/main/java/org/apache/camel/processor/PipelineHelper.java  | 2 --
 .../java/org/apache/camel/processor/ProcessorExchangePair.java    | 2 --
 .../src/main/java/org/apache/camel/processor/RecipientList.java   | 2 --
 .../java/org/apache/camel/processor/RecipientListProcessor.java   | 2 --
 .../java/org/apache/camel/processor/RedeliveryErrorHandler.java   | 2 --
 .../main/java/org/apache/camel/processor/RedeliveryPolicy.java    | 2 --
 .../src/main/java/org/apache/camel/processor/Resequencer.java     | 2 --
 .../main/java/org/apache/camel/processor/RollbackProcessor.java   | 2 --
 .../main/java/org/apache/camel/processor/SamplingThrottler.java   | 2 --
 camel-core/src/main/java/org/apache/camel/processor/Splitter.java | 2 --
 .../src/main/java/org/apache/camel/processor/StopProcessor.java   | 2 --
 .../main/java/org/apache/camel/processor/StreamResequencer.java   | 3 +--
 .../src/main/java/org/apache/camel/processor/Throttler.java       | 2 --
 .../main/java/org/apache/camel/processor/ThroughputLogger.java    | 2 --
 .../src/main/java/org/apache/camel/processor/TryProcessor.java    | 2 --
 .../main/java/org/apache/camel/processor/UnitOfWorkProducer.java  | 2 --
 .../main/java/org/apache/camel/processor/UnmarshalProcessor.java  | 2 --
 .../main/java/org/apache/camel/processor/WireTapProcessor.java    | 2 --
 .../src/main/java/org/apache/camel/processor/WrapProcessor.java   | 2 --
 .../org/apache/camel/processor/aggregate/AggregationStrategy.java | 2 --
 .../camel/processor/aggregate/ClosedCorrelationKeyException.java  | 2 --
 .../processor/aggregate/CompletionAwareAggregationStrategy.java   | 2 --
 .../processor/aggregate/GroupedExchangeAggregationStrategy.java   | 2 --
 .../processor/aggregate/GroupedMessageAggregationStrategy.java    | 2 --
 .../camel/processor/aggregate/MemoryAggregationRepository.java    | 2 --
 .../camel/processor/aggregate/OptimisticLockRetryPolicy.java      | 2 --
 .../aggregate/OptimisticLockingAwareAggregationStrategy.java      | 2 --
 .../processor/aggregate/TimeoutAwareAggregationStrategy.java      | 2 --
 .../camel/processor/aggregate/UseLatestAggregationStrategy.java   | 2 --
 .../camel/processor/aggregate/UseOriginalAggregationStrategy.java | 1 -
 .../camel/processor/idempotent/FileIdempotentRepository.java      | 2 --
 .../camel/processor/idempotent/MemoryIdempotentRepository.java    | 2 --
 .../apache/camel/processor/idempotent/NoMessageIdException.java   | 2 --
 .../main/java/org/apache/camel/processor/interceptor/Debug.java   | 2 --
 .../org/apache/camel/processor/interceptor/DefaultChannel.java    | 2 --
 .../org/apache/camel/processor/loadbalancer/LoadBalancer.java     | 2 --
 .../apache/camel/processor/loadbalancer/LoadBalancerConsumer.java | 2 --
 .../apache/camel/processor/loadbalancer/LoadBalancerSupport.java  | 2 --
 .../apache/camel/processor/loadbalancer/QueueLoadBalancer.java    | 2 --
 .../apache/camel/processor/loadbalancer/RandomLoadBalancer.java   | 2 --
 .../camel/processor/loadbalancer/RoundRobinLoadBalancer.java      | 2 --
 .../camel/processor/loadbalancer/SimpleLoadBalancerSupport.java   | 2 --
 .../apache/camel/processor/loadbalancer/StickyLoadBalancer.java   | 2 --
 .../apache/camel/processor/loadbalancer/TopicLoadBalancer.java    | 2 --
 .../camel/processor/resequencer/DefaultExchangeComparator.java    | 2 --
 .../org/apache/camel/processor/resequencer/ElementComparator.java | 2 --
 .../camel/processor/resequencer/ExpressionResultComparator.java   | 2 --
 .../camel/processor/resequencer/MessageRejectedException.java     | 2 --
 .../org/apache/camel/processor/resequencer/ResequencerEngine.java | 2 --
 .../java/org/apache/camel/processor/resequencer/Sequence.java     | 2 --
 .../camel/processor/resequencer/SequenceElementComparator.java    | 2 --
 .../org/apache/camel/processor/resequencer/SequenceSender.java    | 3 +--
 .../main/java/org/apache/camel/processor/resequencer/Timeout.java | 2 --
 .../org/apache/camel/processor/resequencer/TimeoutHandler.java    | 2 --
 .../camel/processor/validation/DefaultValidationErrorHandler.java | 2 --
 .../camel/processor/validation/NoXmlBodyValidationException.java  | 2 --
 .../processor/validation/NoXmlHeaderValidationException.java      | 2 --
 .../camel/processor/validation/PredicateValidatingProcessor.java  | 2 --
 .../camel/processor/validation/PredicateValidationException.java  | 2 --
 .../camel/processor/validation/SchemaValidationException.java     | 2 --
 .../apache/camel/processor/validation/ValidatorErrorHandler.java  | 2 --
 .../src/main/java/org/apache/camel/spi/AggregationRepository.java | 1 -
 .../src/main/java/org/apache/camel/spi/AuthorizationPolicy.java   | 2 --
 camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java     | 2 --
 .../src/main/java/org/apache/camel/spi/BrowsableEndpoint.java     | 2 --
 .../src/main/java/org/apache/camel/spi/ComponentResolver.java     | 2 --
 camel-core/src/main/java/org/apache/camel/spi/Condition.java      | 2 --
 camel-core/src/main/java/org/apache/camel/spi/DataFormat.java     | 2 --
 .../src/main/java/org/apache/camel/spi/DataFormatResolver.java    | 2 --
 camel-core/src/main/java/org/apache/camel/spi/Debugger.java       | 2 --
 .../src/main/java/org/apache/camel/spi/EndpointStrategy.java      | 2 --
 camel-core/src/main/java/org/apache/camel/spi/EventFactory.java   | 2 --
 camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java  | 1 -
 .../src/main/java/org/apache/camel/spi/ExceptionHandler.java      | 2 --
 .../src/main/java/org/apache/camel/spi/ExchangeFormatter.java     | 2 --
 .../java/org/apache/camel/spi/ExchangeIdempotentRepository.java   | 2 --
 camel-core/src/main/java/org/apache/camel/spi/FactoryFinder.java  | 2 --
 .../src/main/java/org/apache/camel/spi/FactoryFinderResolver.java | 2 --
 .../src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java  | 2 --
 .../main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java | 1 -
 .../src/main/java/org/apache/camel/spi/IdempotentRepository.java  | 2 --
 .../src/main/java/org/apache/camel/spi/InflightRepository.java    | 2 --
 camel-core/src/main/java/org/apache/camel/spi/Injector.java       | 2 --
 .../src/main/java/org/apache/camel/spi/InterceptStrategy.java     | 2 --
 camel-core/src/main/java/org/apache/camel/spi/Language.java       | 2 --
 .../src/main/java/org/apache/camel/spi/LanguageResolver.java      | 2 --
 camel-core/src/main/java/org/apache/camel/spi/LogListener.java    | 1 -
 .../main/java/org/apache/camel/spi/ManagementNamingStrategy.java  | 2 --
 .../src/main/java/org/apache/camel/spi/ManagementStrategy.java    | 1 -
 camel-core/src/main/java/org/apache/camel/spi/NamespaceAware.java | 2 --
 camel-core/src/main/java/org/apache/camel/spi/NodeIdFactory.java  | 2 --
 .../apache/camel/spi/OptimisticLockingAggregationRepository.java  | 2 --
 camel-core/src/main/java/org/apache/camel/spi/Policy.java         | 2 --
 .../java/org/apache/camel/spi/PollingConsumerPollStrategy.java    | 2 --
 .../src/main/java/org/apache/camel/spi/ProcessorFactory.java      | 2 --
 .../org/apache/camel/spi/RecoverableAggregationRepository.java    | 2 --
 camel-core/src/main/java/org/apache/camel/spi/Registry.java       | 2 --
 camel-core/src/main/java/org/apache/camel/spi/RouteContext.java   | 2 --
 camel-core/src/main/java/org/apache/camel/spi/RoutePolicy.java    | 2 --
 .../src/main/java/org/apache/camel/spi/RouteStartupOrder.java     | 2 --
 camel-core/src/main/java/org/apache/camel/spi/ShutdownAware.java  | 2 --
 .../src/main/java/org/apache/camel/spi/ShutdownStrategy.java      | 2 --
 .../src/main/java/org/apache/camel/spi/Synchronization.java       | 2 --
 .../main/java/org/apache/camel/spi/SynchronizationVetoable.java   | 2 --
 .../src/main/java/org/apache/camel/spi/ThreadPoolProfile.java     | 2 --
 .../src/main/java/org/apache/camel/spi/TransactedPolicy.java      | 2 --
 .../src/main/java/org/apache/camel/spi/TypeConverterAware.java    | 1 -
 .../src/main/java/org/apache/camel/spi/TypeConverterLoader.java   | 2 --
 .../src/main/java/org/apache/camel/spi/TypeConverterRegistry.java | 2 --
 .../src/main/java/org/apache/camel/support/DefaultTimeoutMap.java | 2 --
 .../main/java/org/apache/camel/support/EventNotifierSupport.java  | 2 --
 .../src/main/java/org/apache/camel/support/ExpressionAdapter.java | 2 --
 .../src/main/java/org/apache/camel/support/ExpressionSupport.java | 2 --
 .../java/org/apache/camel/support/LoggingExceptionHandler.java    | 2 --
 .../main/java/org/apache/camel/support/RoutePolicySupport.java    | 2 --
 .../src/main/java/org/apache/camel/support/ServiceSupport.java    | 2 --
 .../java/org/apache/camel/support/SynchronizationAdapter.java     | 2 --
 .../src/main/java/org/apache/camel/support/TimeoutMapEntry.java   | 2 --
 .../java/org/apache/camel/util/AsyncProcessorConverterHelper.java | 2 --
 .../src/main/java/org/apache/camel/util/CamelContextHelper.java   | 2 --
 camel-core/src/main/java/org/apache/camel/util/CamelLogger.java   | 2 --
 .../src/main/java/org/apache/camel/util/CaseInsensitiveMap.java   | 2 --
 .../src/main/java/org/apache/camel/util/CollectionHelper.java     | 2 --
 .../main/java/org/apache/camel/util/CollectionStringBuffer.java   | 2 --
 camel-core/src/main/java/org/apache/camel/util/EventHelper.java   | 2 --
 .../src/main/java/org/apache/camel/util/ExchangeHelper.java       | 4 ----
 .../src/main/java/org/apache/camel/util/ExpressionComparator.java | 1 -
 .../main/java/org/apache/camel/util/ExpressionListComparator.java | 2 --
 camel-core/src/main/java/org/apache/camel/util/IOHelper.java      | 2 --
 .../src/main/java/org/apache/camel/util/KeyValueHolder.java       | 2 --
 camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java  | 2 --
 camel-core/src/main/java/org/apache/camel/util/OgnlHelper.java    | 2 --
 .../src/main/java/org/apache/camel/util/OrderedComparator.java    | 2 --
 camel-core/src/main/java/org/apache/camel/util/PackageHelper.java | 2 --
 .../main/java/org/apache/camel/util/PredicateAssertHelper.java    | 2 --
 .../src/main/java/org/apache/camel/util/ReflectionInjector.java   | 2 --
 .../src/main/java/org/apache/camel/util/ResolverHelper.java       | 2 --
 camel-core/src/main/java/org/apache/camel/util/ServiceHelper.java | 2 --
 camel-core/src/main/java/org/apache/camel/util/StopWatch.java     | 2 --
 camel-core/src/main/java/org/apache/camel/util/Time.java          | 2 --
 camel-core/src/main/java/org/apache/camel/util/TimeUtils.java     | 2 --
 camel-core/src/main/java/org/apache/camel/util/URISupport.java    | 2 --
 .../src/main/java/org/apache/camel/util/UnitOfWorkHelper.java     | 2 --
 .../camel/util/concurrent/SubmitOrderedCompletionService.java     | 2 --
 .../apache/camel/util/concurrent/SynchronousExecutorService.java  | 2 --
 .../org/apache/camel/util/jndi/CamelInitialContextFactory.java    | 2 --
 .../camel/util/jndi/CamelSingletonInitialContextFactory.java      | 2 --
 .../src/main/java/org/apache/camel/util/jndi/JndiContext.java     | 2 --
 .../apache/camel/util/toolbox/FlexibleAggregationStrategy.java    | 1 -
 .../src/test/java/org/apache/camel/BodyAndHeaderConvertTest.java  | 3 ---
 .../src/test/java/org/apache/camel/CamelExceptionsTest.java       | 3 ---
 camel-core/src/test/java/org/apache/camel/ContextTestSupport.java | 2 --
 .../src/test/java/org/apache/camel/ExchangePatternTest.java       | 3 ---
 .../src/test/java/org/apache/camel/ExchangeTestSupport.java       | 2 --
 .../src/test/java/org/apache/camel/InjectorDefaultsTest.java      | 3 ---
 .../src/test/java/org/apache/camel/LanguageTestSupport.java       | 1 -
 camel-core/src/test/java/org/apache/camel/MyBarSingleton.java     | 3 ---
 camel-core/src/test/java/org/apache/camel/MyFoo.java              | 3 ---
 .../src/test/java/org/apache/camel/SuspendableServiceTest.java    | 3 ---
 .../java/org/apache/camel/builder/AddRoutesAtRuntimeTest.java     | 2 --
 .../test/java/org/apache/camel/builder/BuilderWithScopesTest.java | 3 ---
 .../src/test/java/org/apache/camel/builder/ErrorHandlerTest.java  | 3 ---
 .../test/java/org/apache/camel/builder/ExpressionBuilderTest.java | 3 ---
 .../test/java/org/apache/camel/builder/ExpressionClauseTest.java  | 3 ---
 .../java/org/apache/camel/builder/ExpressionFunctionTest.java     | 3 ---
 .../java/org/apache/camel/builder/NotifyBuilderFromRouteTest.java | 3 ---
 .../src/test/java/org/apache/camel/builder/NotifyBuilderTest.java | 3 ---
 .../apache/camel/builder/NotifyBuilderWhenDoneByIndexTest.java    | 3 ---
 .../org/apache/camel/builder/PredicateBinaryCoerceRouteTest.java  | 3 ---
 .../org/apache/camel/builder/PredicateBinaryCoerceTypeTest.java   | 3 ---
 .../org/apache/camel/builder/PredicateBuilderConcurrentTest.java  | 3 ---
 .../camel/builder/RouteBuilderAddRoutesOnlyInterceptTest.java     | 3 ---
 .../java/org/apache/camel/builder/RouteBuilderAddRoutesTest.java  | 3 ---
 .../src/test/java/org/apache/camel/builder/RouteBuilderTest.java  | 3 ---
 .../src/test/java/org/apache/camel/builder/SimpleBuilderTest.java | 3 ---
 .../test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java | 3 ---
 .../src/test/java/org/apache/camel/builder/ValueBuilderTest.java  | 3 ---
 .../org/apache/camel/builder/xml/DefaultNamespaceContextTest.java | 3 ---
 .../src/test/java/org/apache/camel/builder/xml/XPathMockTest.java | 3 ---
 .../org/apache/camel/builder/xml/XPathNestedNamespaceTest.java    | 3 ---
 .../src/test/java/org/apache/camel/builder/xml/XPathTest.java     | 3 ---
 .../org/apache/camel/builder/xml/XPathTransformRouteTest.java     | 3 ---
 .../java/org/apache/camel/builder/xml/XPathTransformTest.java     | 3 ---
 .../apache/camel/builder/xml/XPathWithNamespacesFromDomTest.java  | 3 ---
 .../test/java/org/apache/camel/builder/xml/XsltBuilderTest.java   | 3 ---
 .../java/org/apache/camel/builder/xml/XsltOutputFileTest.java     | 3 ---
 .../src/test/java/org/apache/camel/builder/xml/XsltTest.java      | 3 ---
 .../bean/BeanChoseMethodWithMatchingTypeAndSkipSettersTest.java   | 3 ---
 .../java/org/apache/camel/component/bean/BeanConcurrentTest.java  | 3 ---
 .../java/org/apache/camel/component/bean/BeanEndpointTest.java    | 3 ---
 .../org/apache/camel/component/bean/BeanExcludedMethodTest.java   | 3 ---
 .../camel/component/bean/BeanExplicitMethodAmbiguousTest.java     | 3 ---
 .../org/apache/camel/component/bean/BeanExplicitMethodTest.java   | 3 ---
 .../apache/camel/component/bean/BeanExpressionConcurrentTest.java | 3 ---
 .../camel/component/bean/BeanHandlerMethodPredicateTest.java      | 3 ---
 .../org/apache/camel/component/bean/BeanHandlerMethodTest.java    | 3 ---
 .../camel/component/bean/BeanInfoAMoreComplexOverloadedTest.java  | 3 ---
 .../org/apache/camel/component/bean/BeanInfoOverloadedTest.java   | 3 ---
 .../component/bean/BeanInfoOverloadedWithSubTypeParamTest.java    | 3 ---
 .../org/apache/camel/component/bean/BeanInfoSelectMethodTest.java | 3 ---
 .../test/java/org/apache/camel/component/bean/BeanInfoTest.java   | 3 ---
 .../apache/camel/component/bean/BeanInvocationSerializeTest.java  | 3 ---
 .../org/apache/camel/component/bean/BeanInvokeStaticTest.java     | 3 ---
 .../test/java/org/apache/camel/component/bean/BeanInvokeTest.java | 3 ---
 .../apache/camel/component/bean/BeanInvokeWithNullBodyTest.java   | 3 ---
 .../java/org/apache/camel/component/bean/BeanLifecycleTest.java   | 3 ---
 .../component/bean/BeanLookupUsingJndiRegistryIssueTest.java      | 3 ---
 .../test/java/org/apache/camel/component/bean/BeanMapPutTest.java | 3 ---
 .../java/org/apache/camel/component/bean/BeanMethodBeanTest.java  | 3 ---
 .../java/org/apache/camel/component/bean/BeanNoCacheTest.java     | 3 ---
 .../camel/component/bean/BeanNoTypeConvertionPossibleTest.java    | 3 ---
 .../bean/BeanNoTypeConvertionPossibleWhenHeaderTest.java          | 3 ---
 .../component/bean/BeanParameterBindingStreamCachingTest.java     | 3 ---
 .../org/apache/camel/component/bean/BeanParameterInfoTest.java    | 3 ---
 .../org/apache/camel/component/bean/BeanPropagateHeaderTest.java  | 3 ---
 .../org/apache/camel/component/bean/BeanProxyNoBindingTest.java   | 3 ---
 .../test/java/org/apache/camel/component/bean/BeanProxyTest.java  | 3 ---
 .../apache/camel/component/bean/BeanRefMethodNotFoundTest.java    | 3 ---
 .../java/org/apache/camel/component/bean/BeanRefNoCacheTest.java  | 3 ---
 .../java/org/apache/camel/component/bean/BeanRefNotFoundTest.java | 3 ---
 .../org/apache/camel/component/bean/BeanRegistryBeanTest.java     | 3 ---
 .../component/bean/BeanWithExpressionInjectionPredicateTest.java  | 3 ---
 .../camel/component/bean/BeanWithExpressionInjectionTest.java     | 3 ---
 .../org/apache/camel/component/bean/BeanWithHeaderAnnotation.java | 3 ---
 .../camel/component/bean/BeanWithHeadersAndBodyInject2Test.java   | 3 ---
 .../camel/component/bean/BeanWithHeadersAndBodyInject3Test.java   | 3 ---
 .../camel/component/bean/BeanWithHeadersAndBodyInjectionTest.java | 3 ---
 .../org/apache/camel/component/bean/BeanWithMethodHeaderTest.java | 3 ---
 .../bean/BeanWithPropertiesAndHeadersAndBodyInjectionTest.java    | 3 ---
 .../component/bean/BeanWithPropertiesAndHeadersInjectionTest.java | 3 ---
 .../component/bean/BodyAnnotationToDisambiguateMethodsTest.java   | 3 ---
 .../component/bean/ClassComponentInvalidConfigurationTest.java    | 3 ---
 .../java/org/apache/camel/component/bean/ClassComponentTest.java  | 3 ---
 .../ClassComponentWithPropertiesLookupSetFromEndpointTest.java    | 3 ---
 .../bean/ClassComponentWithPropertiesSetFromEndpointTest.java     | 3 ---
 .../camel/component/bean/CustomParameterMappingStrategyTest.java  | 3 ---
 .../camel/component/bean/DefaultParameterMappingStrategyTest.java | 3 ---
 .../bean/ExpressionAnnotationToDisambiguateMethodsTest.java       | 3 ---
 .../apache/camel/component/bean/FileBeanParameterBindingTest.java | 3 ---
 .../camel/component/bean/MethodCallBeanRefMethodNotFoundTest.java | 3 ---
 .../camel/component/bean/MethodCallBeanRefNotFoundTest.java       | 3 ---
 .../camel/component/bean/MethodCallRefOrBeanPrefixTest.java       | 3 ---
 .../apache/camel/component/bean/MethodCallStaticMethodTest.java   | 3 ---
 .../org/apache/camel/component/bean/MyApplicationException.java   | 3 ---
 .../test/java/org/apache/camel/component/bean/MyDummyBean.java    | 3 ---
 .../src/test/java/org/apache/camel/component/bean/MyFooBean.java  | 3 ---
 .../src/test/java/org/apache/camel/component/bean/MyService.java  | 3 ---
 .../java/org/apache/camel/component/bean/MyServiceProxyTest.java  | 3 ---
 .../java/org/apache/camel/component/bean/NewInstanceTest.java     | 3 ---
 .../test/java/org/apache/camel/component/bean/OrderService.java   | 3 ---
 .../java/org/apache/camel/component/bean/OrderServiceBean.java    | 3 ---
 .../java/org/apache/camel/component/bean/PredicateAsBeanTest.java | 3 ---
 .../camel/component/bean/ProxyReturnFutureExceptionTest.java      | 3 ---
 .../apache/camel/component/bean/ProxyReturnFutureListTest.java    | 3 ---
 .../org/apache/camel/component/bean/ProxyReturnFutureTest.java    | 3 ---
 .../java/org/apache/camel/component/bean/issues/BaseClass.java    | 3 ---
 .../camel/component/bean/issues/BeanRouteToDerivedClassTest.java  | 3 ---
 .../java/org/apache/camel/component/bean/issues/DerivedClass.java | 3 ---
 .../component/bean/issues/FilterBeanLanguageNonRegistryTest.java  | 3 ---
 .../camel/component/bean/issues/FilterBeanNonRegistryTest.java    | 3 ---
 .../camel/component/bean/issues/FilterBeanRegistryTest.java       | 3 ---
 .../apache/camel/component/bean/issues/FilterPojoIssueTest.java   | 3 ---
 .../java/org/apache/camel/component/bean/issues/MyMessage.java    | 3 ---
 .../org/apache/camel/component/bean/issues/MyMessageListener.java | 3 ---
 .../component/bean/issues/MyMessageToProcessorConverter.java      | 3 ---
 .../apache/camel/component/bean/issues/TransformerIssueTest.java  | 3 ---
 .../org/apache/camel/component/browse/BrowseEndpointTest.java     | 3 ---
 .../java/org/apache/camel/component/browse/BrowseRouteTest.java   | 3 ---
 .../test/java/org/apache/camel/component/browse/BrowseTest.java   | 3 ---
 .../java/org/apache/camel/component/dataset/BigDataSetTest.java   | 3 ---
 .../org/apache/camel/component/dataset/CustomDataSetTest.java     | 3 ---
 .../org/apache/camel/component/dataset/DataSetConsumerTest.java   | 3 ---
 .../org/apache/camel/component/dataset/DataSetEndpointTest.java   | 3 ---
 .../org/apache/camel/component/dataset/DataSetPreloadTest.java    | 3 ---
 .../org/apache/camel/component/dataset/DataSetProducerTest.java   | 3 ---
 .../test/java/org/apache/camel/component/dataset/DataSetTest.java | 3 ---
 .../apache/camel/component/dataset/FileDataSetConsumerTest.java   | 3 ---
 .../camel/component/dataset/FileDataSetConsumerWithSplitTest.java | 3 ---
 .../apache/camel/component/dataset/FileDataSetProducerTest.java   | 3 ---
 .../camel/component/dataset/FileDataSetProducerWithSplitTest.java | 3 ---
 .../apache/camel/component/dataset/ListDataSetConsumerTest.java   | 3 ---
 .../apache/camel/component/dataset/ListDataSetProducerTest.java   | 3 ---
 .../camel/component/direct/DirectEndpointRouteInlinedTest.java    | 3 ---
 .../org/apache/camel/component/direct/DirectEndpointTest.java     | 3 ---
 .../org/apache/camel/component/direct/DirectNoConsumerTest.java   | 3 ---
 .../java/org/apache/camel/component/direct/DirectQueueTest.java   | 3 ---
 .../java/org/apache/camel/component/direct/DirectRouteTest.java   | 3 ---
 .../component/direct/SendToNonExistingDirectEndpointTest.java     | 3 ---
 .../direct/SendingToAlotOfDifferentDirectEndpointTest.java        | 3 ---
 .../camel/component/direct/TwoCamelContextDirectEndpointTest.java | 3 ---
 .../apache/camel/component/directvm/DirectVmNoConsumerTest.java   | 3 ---
 .../org/apache/camel/component/file/DirectoryCreateIssueTest.java | 3 ---
 .../camel/component/file/FileAbsoluteAndRelativeConsumerTest.java | 3 ---
 .../apache/camel/component/file/FileAbsolutePathIssueTest.java    | 3 ---
 .../camel/component/file/FileBatchConsumerMemoryLeakTest.java     | 2 --
 .../apache/camel/component/file/FileBeginFailureOneTimeTest.java  | 3 ---
 .../java/org/apache/camel/component/file/FileConfigureTest.java   | 3 ---
 .../camel/component/file/FileConsumeNoopIdempotentAutoTest.java   | 2 --
 .../component/file/FileConsumeNoopIdempotentDisabledTest.java     | 3 ---
 .../component/file/FileConsumeNoopIdempotentEnabledTest.java      | 3 ---
 .../file/FileConsumePollEnrichFileUsingProcessorTest.java         | 3 ---
 .../file/FileConsumeSimpleAbsoluteMoveToAbsoluteTest.java         | 3 ---
 .../file/FileConsumeSimpleAbsoluteMoveToRelativeTest.java         | 3 ---
 .../file/FileConsumeSimpleRelativeMoveToAbsoluteTest.java         | 3 ---
 .../file/FileConsumeSimpleRelativeMoveToRelativeTest.java         | 3 ---
 .../camel/component/file/FileConsumeWithDollarInPathTest.java     | 3 ---
 .../camel/component/file/FileConsumerAutoCreateDirectoryTest.java | 3 ---
 .../camel/component/file/FileConsumerDeleteAndFailureTest.java    | 3 ---
 .../camel/component/file/FileConsumerDeleteAndMoveFailedTest.java | 3 ---
 .../camel/component/file/FileConsumerMoveAndMoveFailureTest.java  | 3 ---
 .../component/file/FileConsumerMoveFailureOnCompletionTest.java   | 3 ---
 .../apache/camel/component/file/FileConsumerMoveFailureTest.java  | 3 ---
 .../org/apache/camel/component/file/FileConsumerNoopTest.java     | 3 ---
 .../FileConsumerPreMoveCopyAndDeleteOnRenameFailFalseTest.java    | 3 ---
 .../camel/component/file/FileConsumerPreMoveDeleteTest.java       | 3 ---
 .../apache/camel/component/file/FileConsumerPreMoveIssueTest.java | 3 ---
 .../apache/camel/component/file/FileConsumerPreMoveNoopTest.java  | 3 ---
 .../org/apache/camel/component/file/FileConsumerPreMoveTest.java  | 3 ---
 .../file/FileConsumerPreMoveWithProbeContentTypeTest.java         | 3 ---
 .../camel/component/file/FileConsumerProducerRouteTest.java       | 3 ---
 .../camel/component/file/FileConsumerRelativeFileNameTest.java    | 3 ---
 .../camel/component/file/FileConsumerSuspendAndResumeTest.java    | 3 ---
 .../org/apache/camel/component/file/FileConsumerSuspendTest.java  | 3 ---
 .../org/apache/camel/component/file/FileConsumerTemplateTest.java | 3 ---
 .../apache/camel/component/file/FileContentBasedRouterTest.java   | 3 ---
 .../apache/camel/component/file/FileConvertBodyToUTF8Test.java    | 3 ---
 .../camel/component/file/FileEagerDeleteTargetFileTest.java       | 3 ---
 .../camel/component/file/FileIdempotentReadSameFileAgainTest.java | 3 ---
 .../apache/camel/component/file/FileInvalidStartingPathTest.java  | 3 ---
 .../org/apache/camel/component/file/FileKeepLastModifiedTest.java | 3 ---
 .../java/org/apache/camel/component/file/FileLanguageCBRTest.java | 3 ---
 .../component/file/FileMarkerFileDeleteOldLockFilesTest.java      | 3 ---
 .../file/FileMarkerFileRecursiveDeleteOldLockFilesTest.java       | 3 ---
 .../file/FileMarkerFileRecursiveDoNotDeleteOldLockFilesTest.java  | 3 ---
 ...ileMarkerFileRecursiveFilterDeleteOldLockFilesIncludeTest.java | 3 ---
 .../file/FileMarkerFileRecursiveFilterDeleteOldLockFilesTest.java | 3 ---
 .../org/apache/camel/component/file/FilePollEnrichNoWaitTest.java | 3 ---
 .../java/org/apache/camel/component/file/FilePollEnrichTest.java  | 3 ---
 .../file/FileProducerFileExistAppendNoFileBeforeTest.java         | 3 ---
 .../camel/component/file/FileProducerFileExistAppendTest.java     | 3 ---
 .../camel/component/file/FileProducerFileExistFailTest.java       | 3 ---
 .../camel/component/file/FileProducerFileExistIgnoreTest.java     | 3 ---
 .../file/FileProducerFileExistOverrideNoFileBeforeTest.java       | 3 ---
 .../camel/component/file/FileProducerFileExistOverrideTest.java   | 3 ---
 .../camel/component/file/FileProducerFileExistTryRenameTest.java  | 3 ---
 .../camel/component/file/FileProducerFilenameConstantTest.java    | 3 ---
 .../camel/component/file/FileProducerTempFileExistsIssueTest.java | 3 ---
 .../org/apache/camel/component/file/FileRecursiveNoopTest.java    | 3 ---
 .../camel/component/file/FileRenameFileOnCommitIssueTest.java     | 3 ---
 .../component/file/FileRenameReadLockMustUseMarkerFileTest.java   | 3 ---
 .../apache/camel/component/file/FileToFileNioLowBufferTest.java   | 3 ---
 .../apache/camel/component/file/FileToFileWithFlattenTest.java    | 3 ---
 .../component/file/FromFileDoNotDeleteFileIfProcessFailsTest.java | 3 ---
 .../component/file/FromFileDoNotMoveFileIfProcessFailsTest.java   | 3 ---
 .../camel/component/file/FromFileMoveFileIfProcessFailsTest.java  | 3 ---
 .../apache/camel/component/file/FromFileMulticastToFilesTest.java | 3 ---
 .../org/apache/camel/component/file/GenericFileConverterTest.java | 3 ---
 .../java/org/apache/camel/component/file/XPathToFileTest.java     | 3 ---
 .../file/strategy/FileChangedReadLockMinAgeShortCircuitTest.java  | 3 ---
 .../component/file/strategy/FileChangedReadLockMinAgeTest.java    | 3 ---
 .../camel/component/file/strategy/FileChangedReadLockTest.java    | 3 ---
 .../component/file/strategy/FileChangedReadLockTimeoutTest.java   | 3 ---
 .../file/strategy/FileChangedZeroLengthReadLockTest.java          | 3 ---
 .../file/strategy/FileIdempotentChangedReadLockTest.java          | 3 ---
 .../file/strategy/FileIdempotentReadLockDelayedAsyncTest.java     | 3 ---
 .../file/strategy/FileIdempotentReadLockDelayedTest.java          | 3 ---
 .../camel/component/file/strategy/FileIdempotentReadLockTest.java | 3 ---
 .../component/file/strategy/FileIdempotentRenameReadLockTest.java | 3 ---
 .../file/strategy/GenericFileDeleteProcessStrategyTest.java       | 2 --
 .../camel/component/file/stress/FileAsyncStressFileDropper.java   | 3 ---
 .../camel/component/file/stress/FileAsyncStressManually.java      | 3 ---
 .../file/stress/FileAsyncStressReadLockLockFileTest.java          | 3 ---
 .../component/file/stress/FileAsyncStressReadLockNoneTest.java    | 3 ---
 .../component/file/stress/FileAsyncStressReadLockRenameTest.java  | 3 ---
 .../apache/camel/component/file/stress/FileAsyncStressTest.java   | 3 ---
 .../component/file/stress/FileConsumerPollManyFilesTest.java      | 3 ---
 .../apache/camel/component/language/LanguageCacheScriptTest.java  | 3 ---
 .../camel/component/language/LanguageEndpointScriptRouteTest.java | 3 ---
 .../apache/camel/component/language/LanguageHeaderRouteTest.java  | 3 ---
 .../language/LanguageLoadScriptFromClasspathHeaderTest.java       | 3 ---
 .../component/language/LanguageLoadScriptFromClasspathTest.java   | 3 ---
 .../component/language/LanguageLoadScriptFromFileCachedTest.java  | 3 ---
 .../component/language/LanguageLoadScriptFromFileUpdateTest.java  | 3 ---
 .../camel/component/language/LanguageNoCacheScriptTest.java       | 3 ---
 .../language/LanguageResourceLoadConstantFromClasspathTest.java   | 3 ---
 .../language/LanguageResourceLoadScriptFromClasspathTest.java     | 3 ---
 .../camel/component/language/LanguageRouteConvertBodyTest.java    | 3 ---
 .../camel/component/language/LanguageRouteNoTransformTest.java    | 3 ---
 .../org/apache/camel/component/language/LanguageRouteTest.java    | 3 ---
 .../language/LanguageScriptInHeaderRouteTakePrecedenceTest.java   | 3 ---
 .../camel/component/language/LanguageScriptInHeaderRouteTest.java | 3 ---
 .../apache/camel/component/language/LanguageScriptRouteTest.java  | 3 ---
 .../apache/camel/component/language/LanguageXPathRouteTest.java   | 3 ---
 .../test/java/org/apache/camel/component/log/LogEndpointTest.java | 3 ---
 .../java/org/apache/camel/component/log/LogInputStreamTest.java   | 3 ---
 .../test/java/org/apache/camel/component/log/LogRouteTest.java    | 3 ---
 .../java/org/apache/camel/component/log/ThroughputLoggerTest.java | 3 ---
 .../test/java/org/apache/camel/component/mock/MockAsBeanTest.java | 3 ---
 .../org/apache/camel/component/mock/MockAssertionClauseTest.java  | 3 ---
 .../java/org/apache/camel/component/mock/MockEndpointTest.java    | 3 ---
 .../apache/camel/component/mock/MockEndpointTimeClauseTest.java   | 3 ---
 .../apache/camel/component/mock/MockExpectedBodiesAsListTest.java | 3 ---
 .../java/org/apache/camel/component/mock/MockPredicateTest.java   | 3 ---
 .../java/org/apache/camel/component/mock/MockThroughtputTest.java | 3 ---
 .../test/java/org/apache/camel/component/pojo/PojoRouteTest.java  | 3 ---
 .../properties/ComponentResolvePropertyPlaceholdersTest.java      | 3 ---
 .../PropertiesComponentAdviceWithInterceptSendToEndpointTest.java | 3 ---
 .../component/properties/PropertiesComponentDefaultTest.java      | 3 ---
 .../properties/PropertiesComponentEIPChoiceConvertBodyToTest.java | 3 ---
 .../properties/PropertiesComponentEIPChoiceSimpleTest.java        | 3 ---
 .../properties/PropertiesComponentEIPConvertBodyToTest.java       | 3 ---
 .../properties/PropertiesComponentEIPRoutingSlipTest.java         | 3 ---
 .../component/properties/PropertiesComponentEncodingTest.java     | 3 ---
 .../component/properties/PropertiesComponentEndpointTest.java     | 3 ---
 .../component/properties/PropertiesComponentGetOrElseTest.java    | 3 ---
 .../properties/PropertiesComponentInitialPropertiesTest.java      | 3 ---
 .../properties/PropertiesComponentInterceptFromTest.java          | 3 ---
 .../PropertiesComponentInterceptSendToEndpointTest.java           | 3 ---
 .../properties/PropertiesComponentLoadPropertiesFromFileTest.java | 3 ---
 .../PropertiesComponentLoadPropertiesFromFileTrimValuesTest.java  | 3 ---
 .../PropertiesComponentLocationWithJvmPropertyTest.java           | 3 ---
 .../PropertiesComponentLocationWithTwoJvmPropertyTest.java        | 3 ---
 .../PropertiesComponentOnExceptionDelayPatternTest.java           | 3 ---
 .../component/properties/PropertiesComponentOnExceptionTest.java  | 3 ---
 .../properties/PropertiesComponentOverridePropertiesTest.java     | 3 ---
 .../camel/component/properties/PropertiesComponentRefTest.java    | 3 ---
 .../component/properties/PropertiesComponentRegistryTest.java     | 3 ---
 .../component/properties/PropertiesComponentRestartTest.java      | 3 ---
 .../properties/PropertiesComponentSetHeaderSimpleTest.java        | 3 ---
 .../properties/PropertiesComponentSimpleLanguageTest.java         | 3 ---
 .../PropertiesComponentSomethingElseBoundToJndiTest.java          | 3 ---
 .../camel/component/properties/PropertiesComponentTest.java       | 3 ---
 .../properties/PropertiesEnvironmentVariableOverrideTest.java     | 3 ---
 .../apache/camel/component/properties/PropertiesResolverTest.java | 3 ---
 .../java/org/apache/camel/component/ref/RefFileEndpointTest.java  | 3 ---
 .../test/java/org/apache/camel/component/ref/RefInvalidTest.java  | 3 ---
 .../camel/component/scheduler/SchedulerNoPolledMessagesTest.java  | 3 ---
 .../org/apache/camel/component/scheduler/SchedulerRouteTest.java  | 3 ---
 .../scheduler/TwoSchedulerConcurrentTasksOneRouteTest.java        | 3 ---
 .../component/scheduler/TwoSchedulerConcurrentTasksTest.java      | 3 ---
 .../org/apache/camel/component/scheduler/TwoSchedulerTest.java    | 3 ---
 .../camel/component/seda/DirectRequestReplyAndSedaInOnlyTest.java | 3 ---
 .../component/seda/FileSedaShutdownCompleteAllTasksTest.java      | 3 ---
 .../org/apache/camel/component/seda/SedaAsyncProducerTest.java    | 2 --
 .../org/apache/camel/component/seda/SedaComplexInOutTest.java     | 3 ---
 .../camel/component/seda/SedaConcurrentConsumersNPEIssueTest.java | 3 ---
 .../apache/camel/component/seda/SedaConcurrentConsumersTest.java  | 3 ---
 .../java/org/apache/camel/component/seda/SedaConcurrentTest.java  | 3 ---
 .../java/org/apache/camel/component/seda/SedaConfigureTest.java   | 3 ---
 .../camel/component/seda/SedaDefaultUnboundedQueueSizeTest.java   | 3 ---
 .../apache/camel/component/seda/SedaDiscardIfNoConsumerTest.java  | 3 ---
 .../java/org/apache/camel/component/seda/SedaEndpointTest.java    | 3 ---
 .../org/apache/camel/component/seda/SedaInOnlyChainedTest.java    | 3 ---
 .../test/java/org/apache/camel/component/seda/SedaInOnlyTest.java | 3 ---
 .../org/apache/camel/component/seda/SedaInOutBigChainedTest.java  | 3 ---
 .../org/apache/camel/component/seda/SedaInOutChainedTest.java     | 3 ---
 .../apache/camel/component/seda/SedaInOutChainedTimeoutTest.java  | 3 ---
 .../component/seda/SedaInOutChainedWithOnCompletionTest.java      | 3 ---
 .../test/java/org/apache/camel/component/seda/SedaInOutTest.java  | 3 ---
 .../component/seda/SedaInOutWithErrorDeadLetterChannelTest.java   | 3 ---
 .../org/apache/camel/component/seda/SedaInOutWithErrorTest.java   | 3 ---
 .../apache/camel/component/seda/SedaMultipleConsumersTest.java    | 3 ---
 .../java/org/apache/camel/component/seda/SedaNoConsumerTest.java  | 3 ---
 .../apache/camel/component/seda/SedaPurgeWhenStoppingTest.java    | 3 ---
 .../test/java/org/apache/camel/component/seda/SedaQueueTest.java  | 3 ---
 .../camel/component/seda/SedaRemoveRouteThenAddAgainTest.java     | 3 ---
 .../test/java/org/apache/camel/component/seda/SedaRouteTest.java  | 3 ---
 .../org/apache/camel/component/seda/SedaTimeoutDisabledTest.java  | 3 ---
 .../java/org/apache/camel/component/seda/SedaTimeoutTest.java     | 3 ---
 .../java/org/apache/camel/component/seda/SedaUnitOfWorkTest.java  | 2 --
 .../camel/component/seda/SedaWaitForTaskAsPropertyTest.java       | 3 ---
 .../component/seda/SedaWaitForTaskCompleteOnCompletionTest.java   | 3 ---
 .../apache/camel/component/seda/SedaWaitForTaskCompleteTest.java  | 3 ---
 .../camel/component/seda/SedaWaitForTaskIfReplyExpectedTest.java  | 3 ---
 .../component/seda/SedaWaitForTaskNewerOnCompletionTest.java      | 3 ---
 .../org/apache/camel/component/seda/SedaWaitForTaskNewerTest.java | 3 ---
 .../org/apache/camel/component/seda/TracingWithDelayTest.java     | 3 ---
 .../java/org/apache/camel/component/timer/TimerAsyncTest.java     | 3 ---
 .../java/org/apache/camel/component/timer/TimerDelayTest.java     | 3 ---
 .../java/org/apache/camel/component/timer/TimerEndpointTest.java  | 3 ---
 .../apache/camel/component/timer/TimerGracefulShutdownTest.java   | 3 ---
 .../test/java/org/apache/camel/component/timer/TimerNameTest.java | 3 ---
 .../org/apache/camel/component/timer/TimerNegativeDelayTest.java  | 3 ---
 .../component/timer/TimerNegativeNoRepeatCountDelayTest.java      | 3 ---
 .../java/org/apache/camel/component/timer/TimerRestartTest.java   | 3 ---
 .../java/org/apache/camel/component/timer/TimerRouteTest.java     | 3 ---
 .../apache/camel/component/timer/TimerRouteWithTracerTest.java    | 3 ---
 .../camel/component/timer/TimerSuspendCamelContextTest.java       | 3 ---
 .../org/apache/camel/component/timer/TimerWithTimeOptionTest.java | 3 ---
 .../java/org/apache/camel/component/vm/AbstractVmTestSupport.java | 3 ---
 .../org/apache/camel/component/vm/VmConcurrentConsumersTest.java  | 3 ---
 .../component/vm/VmDifferentOptionsOnConsumerAndProducerTest.java | 3 ---
 .../org/apache/camel/component/vm/VmDiscardIfNoConsumerTest.java  | 3 ---
 .../java/org/apache/camel/component/vm/VmInOnlyChainedTest.java   | 3 ---
 .../src/test/java/org/apache/camel/component/vm/VmInOnlyTest.java | 3 ---
 .../java/org/apache/camel/component/vm/VmInOutChainedTest.java    | 3 ---
 .../org/apache/camel/component/vm/VmInOutChainedTimeoutTest.java  | 3 ---
 .../src/test/java/org/apache/camel/component/vm/VmInOutTest.java  | 3 ---
 .../java/org/apache/camel/component/vm/VmInOutWithErrorTest.java  | 3 ---
 .../camel/component/vm/VmMultipleContextsStartStopTest.java       | 3 ---
 .../src/test/java/org/apache/camel/component/vm/VmQueueTest.java  | 3 ---
 .../java/org/apache/camel/component/vm/VmTimeoutIssueTest.java    | 3 ---
 .../java/org/apache/camel/component/vm/VmUseSameQueueTest.java    | 3 ---
 .../org/apache/camel/component/vm/VmWaitForTaskCompleteTest.java  | 3 ---
 .../camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java      | 3 ---
 .../org/apache/camel/component/vm/VmWaitForTaskNewerTest.java     | 3 ---
 .../camel/component/xslt/XsltTransformingExceptionTest.java       | 3 ---
 .../test/java/org/apache/camel/converter/CamelConverterTest.java  | 3 ---
 .../src/test/java/org/apache/camel/converter/ConverterTest.java   | 3 ---
 .../test/java/org/apache/camel/converter/EnumConverterTest.java   | 3 ---
 .../test/java/org/apache/camel/converter/FallbackPromoteTest.java | 3 ---
 .../test/java/org/apache/camel/converter/FutureConverterTest.java | 3 ---
 .../org/apache/camel/converter/InstanceFallbackConverterTest.java | 3 ---
 camel-core/src/test/java/org/apache/camel/converter/JaxpTest.java | 3 ---
 .../src/test/java/org/apache/camel/converter/MyCoolBean.java      | 3 ---
 .../test/java/org/apache/camel/converter/NIOConverterTest.java    | 3 ---
 .../java/org/apache/camel/converter/ObjectConverterNaNTest.java   | 3 ---
 .../test/java/org/apache/camel/converter/ObjectConverterTest.java | 3 ---
 .../apache/camel/converter/PrimitiveTypeConverterIssueTest.java   | 3 ---
 .../camel/converter/PropertyEditorTypeConverterIssueTest.java     | 3 ---
 .../src/test/java/org/apache/camel/converter/PurchaseOrder.java   | 3 ---
 .../org/apache/camel/converter/StaticFallbackConverterTest.java   | 3 ---
 .../test/java/org/apache/camel/converter/StringSourceTest.java    | 3 ---
 .../java/org/apache/camel/converter/TypeConverterAwareTest.java   | 3 ---
 .../java/org/apache/camel/converter/jaxp/BytesSourceTest.java     | 3 ---
 .../java/org/apache/camel/converter/jaxp/DomConverterTest.java    | 3 ---
 .../apache/camel/converter/jaxp/StreamSourceConverterTest.java    | 3 ---
 .../java/org/apache/camel/converter/jaxp/XmlConverterTest.java    | 3 ---
 .../converter/myconverter/InstanceDummyFallbackConverter.java     | 3 ---
 .../camel/converter/myconverter/MyFallbackPromoteConverter.java   | 3 ---
 .../camel/converter/myconverter/PurchaseOrderConverter.java       | 3 ---
 .../camel/converter/myconverter/StaticDummyFallbackConverter.java | 3 ---
 .../camel/converter/stream/ByteArrayInputStreamCacheTest.java     | 3 ---
 .../apache/camel/converter/stream/FileInputStreamCacheTest.java   | 3 ---
 .../org/apache/camel/converter/stream/InputStreamCacheTest.java   | 3 ---
 .../java/org/apache/camel/converter/stream/ReaderCacheTest.java   | 3 ---
 .../java/org/apache/camel/converter/stream/SourceCacheTest.java   | 3 ---
 .../org/apache/camel/converter/stream/StreamSourceCacheTest.java  | 3 ---
 .../camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java     | 3 ---
 .../camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java    | 3 ---
 .../camel/impl/CamelCustomDefaultThreadPoolProfileTest.java       | 3 ---
 .../camel/impl/CamelPostProcessorHelperConsumePredicateTest.java  | 3 ---
 .../camel/impl/CamelPostProcessorHelperConsumePropertyTest.java   | 3 ---
 .../impl/CamelPostProcessorHelperSedaConsumePredicateTest.java    | 3 ---
 .../java/org/apache/camel/impl/CamelPostProcessorHelperTest.java  | 3 ---
 .../java/org/apache/camel/impl/ConsumerCacheZeroCapacityTest.java | 3 ---
 .../src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java  | 2 --
 .../org/apache/camel/impl/DefaultCamelBeanPostProcessorTest.java  | 3 ---
 .../org/apache/camel/impl/DefaultCamelContextAutoStartupTest.java | 3 ---
 .../camel/impl/DefaultCamelContextEndpointCacheLimitTest.java     | 3 ---
 .../apache/camel/impl/DefaultCamelContextEndpointCacheTest.java   | 3 ---
 .../org/apache/camel/impl/DefaultCamelContextStopFailureTest.java | 3 ---
 .../DefaultCamelContextSuspendResumeRouteStartupOrderTest.java    | 3 ---
 .../camel/impl/DefaultCamelContextSuspendResumeRouteTest.java     | 3 ---
 .../test/java/org/apache/camel/impl/DefaultCamelContextTest.java  | 3 ---
 .../test/java/org/apache/camel/impl/DefaultClassResolverTest.java | 3 ---
 .../test/java/org/apache/camel/impl/DefaultConsumerCacheTest.java | 3 ---
 .../java/org/apache/camel/impl/DefaultConsumerTemplateTest.java   | 3 ---
 .../impl/DefaultConsumerTemplateWithCustomCacheMaxSizeTest.java   | 3 ---
 .../src/test/java/org/apache/camel/impl/DefaultEndpointTest.java  | 3 ---
 .../java/org/apache/camel/impl/DefaultExchangeHolderTest.java     | 3 ---
 .../src/test/java/org/apache/camel/impl/DefaultExchangeTest.java  | 3 ---
 .../org/apache/camel/impl/DefaultExecutorServiceManagerTest.java  | 3 ---
 .../org/apache/camel/impl/DefaultHeaderFilterStrategyTest.java    | 3 ---
 .../java/org/apache/camel/impl/DefaultHeadersMapFactoryTest.java  | 3 ---
 .../java/org/apache/camel/impl/DefaultInflightRepositoryTest.java | 3 ---
 .../test/java/org/apache/camel/impl/DefaultMessageHeaderTest.java | 3 ---
 .../test/java/org/apache/camel/impl/DefaultProducerCacheTest.java | 3 ---
 .../org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java   | 3 ---
 .../camel/impl/DefaultProducerTemplateNonBlockingAsyncTest.java   | 3 ---
 .../impl/DefaultProducerTemplateWithCustomCacheMaxSizeTest.java   | 3 ---
 .../test/java/org/apache/camel/impl/DummyLifecycleStrategy.java   | 3 ---
 .../test/java/org/apache/camel/impl/ExpressionAdapterTest.java    | 3 ---
 .../test/java/org/apache/camel/impl/ExpressionSupportTest.java    | 3 ---
 .../apache/camel/impl/ExtendedStartupListenerComponentTest.java   | 3 ---
 .../src/test/java/org/apache/camel/impl/FromEndpointTest.java     | 3 ---
 .../test/java/org/apache/camel/impl/FromHasNoOutputRouteTest.java | 3 ---
 .../test/java/org/apache/camel/impl/FromMultipleEndpointTest.java | 3 ---
 .../camel/impl/GracefulShutdownNoAutoStartOrderClashTest.java     | 3 ---
 .../java/org/apache/camel/impl/GzipDataFormatFileDeleteTest.java  | 3 ---
 .../apache/camel/impl/GzipDataFormatFileUnmarshalDeleteTest.java  | 3 ---
 .../org/apache/camel/impl/HeaderFilterStrategyComponentTest.java  | 3 ---
 .../apache/camel/impl/InflightRepositoryBrowseFromRouteTest.java  | 3 ---
 .../java/org/apache/camel/impl/InflightRepositoryBrowseTest.java  | 3 ---
 .../java/org/apache/camel/impl/InflightRepositoryRouteTest.java   | 3 ---
 .../camel/impl/InterceptSendToMockEndpointStrategyCustomTest.java | 3 ---
 .../camel/impl/InterceptSendToMockEndpointStrategyTest.java       | 3 ---
 .../org/apache/camel/impl/LifecycleStrategyFailOnStartupTest.java | 3 ---
 .../java/org/apache/camel/impl/LifecycleStrategyServiceTest.java  | 3 ---
 .../java/org/apache/camel/impl/LogDebugBodyMaxCharsOffTest.java   | 3 ---
 .../test/java/org/apache/camel/impl/LogDebugBodyMaxCharsTest.java | 3 ---
 .../test/java/org/apache/camel/impl/LogDebugBodyStreamsTest.java  | 3 ---
 .../src/test/java/org/apache/camel/impl/MainSupportTest.java      | 3 ---
 .../src/test/java/org/apache/camel/impl/MessageSupportTest.java   | 3 ---
 .../java/org/apache/camel/impl/MultipleConsumersSupportTest.java  | 3 ---
 .../java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java | 3 ---
 .../apache/camel/impl/PendingExchangesShutdownGracefulTest.java   | 3 ---
 .../camel/impl/PendingExchangesTwoRouteShutdownGracefulTest.java  | 3 ---
 .../org/apache/camel/impl/ProxyInstantiationExceptionTest.java    | 3 ---
 camel-core/src/test/java/org/apache/camel/impl/RegistryTest.java  | 3 ---
 .../java/org/apache/camel/impl/RouteDirectSuspendResumeTest.java  | 3 ---
 .../org/apache/camel/impl/RouteMustHaveOutputOnExceptionTest.java | 3 ---
 .../src/test/java/org/apache/camel/impl/RouteNoOutputTest.java    | 3 ---
 .../src/test/java/org/apache/camel/impl/RouteRemove2Test.java     | 3 ---
 .../src/test/java/org/apache/camel/impl/RouteRemoveTest.java      | 3 ---
 .../test/java/org/apache/camel/impl/RouteSedaStopStartTest.java   | 3 ---
 .../java/org/apache/camel/impl/RouteSedaSuspendResumeTest.java    | 3 ---
 .../java/org/apache/camel/impl/RouteSuspendResumeWarmUpTest.java  | 3 ---
 .../java/org/apache/camel/impl/SerializationDataFormatTest.java   | 3 ---
 .../camel/impl/ShutdownGracefulNoAutoStartedRoutesTest.java       | 3 ---
 .../org/apache/camel/impl/ShutdownGracefulTimeoutTriggerTest.java | 3 ---
 .../camel/impl/SimpleShutdownGracefulNoAtuoStartedTest.java       | 3 ---
 .../java/org/apache/camel/impl/SimpleShutdownGracefulTest.java    | 3 ---
 .../test/java/org/apache/camel/impl/StartAndStopRoutesTest.java   | 2 --
 .../java/org/apache/camel/impl/StartStopAndShutdownRouteTest.java | 2 --
 .../camel/impl/StartupListenerComponentFromRegistryTest.java      | 3 ---
 .../java/org/apache/camel/impl/StartupListenerComponentTest.java  | 3 ---
 .../src/test/java/org/apache/camel/impl/StartupListenerTest.java  | 3 ---
 .../java/org/apache/camel/impl/TwoRouteSuspendResumeTest.java     | 3 ---
 .../java/org/apache/camel/impl/TypeConverterAllowNullTest.java    | 3 ---
 .../apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java | 3 ---
 .../camel/impl/TypeConverterRegistryStatisticsEnabledTest.java    | 3 ---
 .../java/org/apache/camel/impl/TypeConverterRegistryTest.java     | 3 ---
 .../java/org/apache/camel/impl/ZipDataFormatFileDeleteTest.java   | 3 ---
 .../apache/camel/impl/ZipDataFormatFileUnmarshalDeleteTest.java   | 3 ---
 .../src/test/java/org/apache/camel/issues/AdviceWithCBRTest.java  | 3 ---
 .../java/org/apache/camel/issues/AdviceWithInterceptTest.java     | 3 ---
 .../test/java/org/apache/camel/issues/AdviceWithIssueTest.java    | 3 ---
 .../java/org/apache/camel/issues/AdviceWithOnCompletionTest.java  | 3 ---
 .../org/apache/camel/issues/AdviceWithOnExceptionRemoveTest.java  | 3 ---
 .../java/org/apache/camel/issues/AdviceWithOnExceptionTest.java   | 3 ---
 .../test/java/org/apache/camel/issues/AdviceWithPolicyTest.java   | 3 ---
 .../java/org/apache/camel/issues/AdviceWithRoutePolicyTest.java   | 3 ---
 .../java/org/apache/camel/issues/AdviceWithTransactedTest.java    | 3 ---
 .../org/apache/camel/issues/AdviceWithWeaveByTypeCBRTest.java     | 3 ---
 .../camel/issues/AggregatorWithBatchConsumingIssueTest.java       | 3 ---
 .../src/test/java/org/apache/camel/issues/AmahDeadLetterTest.java | 3 ---
 .../java/org/apache/camel/issues/CBRConcurrencyIssueTest.java     | 3 ---
 .../test/java/org/apache/camel/issues/CBRContainsIssueTest.java   | 3 ---
 .../org/apache/camel/issues/CBRCustomPredicateAsFilterTest.java   | 3 ---
 .../java/org/apache/camel/issues/ChangeHeaderCaseIssueTest.java   | 3 ---
 .../camel/issues/CharlesSplitAndTryCatchRollbackIssueTest.java    | 3 ---
 .../camel/issues/CharlesSplitUseBeanAsErrorHandlerIssueTest.java  | 3 ---
 .../org/apache/camel/issues/ChoicePredicateSimpleHeaderTest.java  | 3 ---
 .../java/org/apache/camel/issues/CustomFailveOverProcessor.java   | 2 --
 .../src/test/java/org/apache/camel/issues/DavidSiefertTest.java   | 3 ---
 .../org/apache/camel/issues/DoCatchCaughExceptionIssueTest.java   | 2 --
 .../java/org/apache/camel/issues/ErrorHandlerAdviceIssueTest.java | 2 --
 .../test/java/org/apache/camel/issues/ExceptionCamel4022Test.java | 3 ---
 .../java/org/apache/camel/issues/ExceptionPolicyIssueTest.java    | 3 ---
 .../src/test/java/org/apache/camel/issues/ExceptionTest.java      | 3 ---
 .../issues/ExceptionThrownFromOnExceptionNoEndlessLoopTest.java   | 3 ---
 .../apache/camel/issues/ExceptionThrownFromOnExceptionTest.java   | 1 -
 .../org/apache/camel/issues/FilePollingConsumerIssueTest.java     | 3 ---
 .../org/apache/camel/issues/FileSplitStreamingWithChoiceTest.java | 3 ---
 .../apache/camel/issues/FilterCustomPredicateAsFilterTest.java    | 3 ---
 .../src/test/java/org/apache/camel/issues/GertJBIIssueTest.java   | 3 ---
 .../apache/camel/issues/InterceptCustomPredicateAsFilterTest.java | 3 ---
 .../src/test/java/org/apache/camel/issues/Issue170Test.java       | 3 ---
 camel-core/src/test/java/org/apache/camel/issues/Issue3Test.java  | 3 ---
 .../org/apache/camel/issues/MockExepctedHeadersIssueTest.java     | 3 ---
 .../issues/MulticastAggregationStrategyThrowExceptionTest.java    | 3 ---
 .../MulticastParallelStopOnExceptionWithOnExceptionIssueTest.java | 3 ---
 .../camel/issues/MulticastParallelWithOnExceptionIssueTest.java   | 3 ---
 .../apache/camel/issues/MulticastPipelineAggregateIssueTest.java  | 3 ---
 .../apache/camel/issues/MulticastSingleAggregateIssueTest.java    | 3 ---
 .../issues/MulticastStopOnExceptionWithOnExceptionIssueTest.java  | 3 ---
 .../apache/camel/issues/MulticastWithOnExceptionIssueTest.java    | 3 ---
 .../src/test/java/org/apache/camel/issues/NeilSplitterTest.java   | 3 ---
 .../NotifyBuilderExactlyDoneSplitterWhereSentToIssueTest.java     | 3 ---
 .../camel/issues/OnExceptionBeforeErrorHandlerIssueTest.java      | 3 ---
 .../java/org/apache/camel/issues/OnExceptionProcessIssueTest.java | 3 ---
 .../java/org/apache/camel/issues/ProxyReturnNullIssueTest.java    | 3 ---
 .../apache/camel/issues/RecipientListErrorHandlingIssueTest.java  | 3 ---
 .../java/org/apache/camel/issues/RegExPredicateIssueTest.java     | 3 ---
 .../issues/RetryContextScopedUntilRecipientListIssueTest.java     | 3 ---
 .../RetryContextScopedUntilRecipientListParallelIssueTest.java    | 3 ---
 .../camel/issues/RetryRouteScopedUntilRecipientListIssueTest.java | 3 ---
 .../RetryRouteScopedUntilRecipientListParallelIssueTest.java      | 3 ---
 .../test/java/org/apache/camel/issues/RomeksExceptionTest.java    | 3 ---
 .../camel/issues/RouteScopedErrorHandlerAndOnExceptionTest.java   | 2 --
 ...outeScopedOnExceptionWithInterceptSendToEndpointIssueTest.java | 2 --
 ...xceptionWithInterceptSendToEndpointIssueWithPredicateTest.java | 2 --
 .../test/java/org/apache/camel/issues/RouteWithCustomIdTest.java  | 3 ---
 .../java/org/apache/camel/issues/SetBodyTryCatchIssueTest.java    | 3 ---
 .../java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java | 3 ---
 .../src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java | 3 ---
 .../org/apache/camel/issues/SplitPropertiesFileIssueTest.java     | 3 ---
 .../org/apache/camel/issues/SplitStopOnExceptionIssueTest.java    | 3 ---
 .../camel/issues/SplitWithCustomAggregationStrategyTest.java      | 3 ---
 .../org/apache/camel/issues/SplitterCorrelationIdIssueTest.java   | 3 ---
 .../camel/issues/SplitterThrowExceptionInExpressionTest.java      | 3 ---
 .../camel/issues/SplitterThrowExceptionInExpressionTwoTest.java   | 3 ---
 .../issues/SplitterUsingBeanReturningCloseableIteratorTest.java   | 3 ---
 .../camel/issues/SplitterUsingBeanReturningMessageTest.java       | 3 ---
 .../camel/issues/ThreadsRejectedExecutionWithDeadLetterTest.java  | 3 ---
 .../org/apache/camel/issues/TimerAndErrorHandlerIssueTest.java    | 3 ---
 .../apache/camel/issues/TryCatchFinallyOnExceptionIssueTest.java  | 3 ---
 .../java/org/apache/camel/issues/TryCatchSetHeaderIssueTest.java  | 3 ---
 .../java/org/apache/camel/issues/TryCatchWithSplitIssueTest.java  | 3 ---
 .../apache/camel/issues/TryCatchWithSplitNotHandledIssueTest.java | 3 ---
 ...xceptionWithInterceptSendToEndpointIssueWithPredicateTest.java | 2 --
 .../test/java/org/apache/camel/issues/XPathSplitStreamTest.java   | 3 ---
 .../org/apache/camel/language/BeanLanguageInvalidOGNLTest.java    | 3 ---
 .../test/java/org/apache/camel/language/BeanLanguageOGNLTest.java | 3 ---
 ...BeanLanguageOGNLWithDotInParameterPropertyPlaceholderTest.java | 3 ---
 .../camel/language/BeanLanguageOGNLWithDotInParameterTest.java    | 3 ---
 camel-core/src/test/java/org/apache/camel/language/BeanTest.java  | 3 ---
 .../apache/camel/language/XPathAnotherRouteConcurrentTest.java    | 3 ---
 .../test/java/org/apache/camel/language/XPathFunctionTest.java    | 3 ---
 .../test/java/org/apache/camel/language/XPathOutFunctionTest.java | 3 ---
 .../org/apache/camel/language/XPathRouteConcurrentBigTest.java    | 3 ---
 .../java/org/apache/camel/language/XPathRouteConcurrentTest.java  | 3 ---
 camel-core/src/test/java/org/apache/camel/language/XPathTest.java | 3 ---
 .../java/org/apache/camel/language/simple/SimpleOperatorTest.java | 3 ---
 .../test/java/org/apache/camel/language/simple/SimpleTest.java    | 3 ---
 camel-core/src/test/java/org/apache/camel/main/MainExample.java   | 3 ---
 camel-core/src/test/java/org/apache/camel/main/MainTest.java      | 3 ---
 camel-core/src/test/java/org/apache/camel/main/MainVetoTest.java  | 3 ---
 .../java/org/apache/camel/management/AddEventNotifierTest.java    | 3 ---
 .../apache/camel/management/CamelChoiceWithManagementTest.java    | 3 ---
 .../apache/camel/management/DualManagedThreadPoolProfileTest.java | 3 ---
 .../apache/camel/management/DualManagedThreadPoolWithIdTest.java  | 3 ---
 .../java/org/apache/camel/management/EventNotifierEventsTest.java | 3 ---
 .../camel/management/EventNotifierExchangeCompletedTest.java      | 3 ---
 .../camel/management/EventNotifierExchangeSentParallelTest.java   | 3 ---
 .../apache/camel/management/EventNotifierExchangeSentTest.java    | 3 ---
 .../camel/management/EventNotifierFailureHandledEventsTest.java   | 3 ---
 .../camel/management/EventNotifierRedeliveryEventsTest.java       | 3 ---
 .../management/EventNotifierServiceStoppingFailedEventTest.java   | 3 ---
 .../org/apache/camel/management/ExceptionWithManagementTest.java  | 2 --
 .../management/JmxInstrumentationDisableOnCamelContextTest.java   | 2 --
 .../apache/camel/management/JmxInstrumentationDisableTest.java    | 2 --
 .../JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java  | 3 ---
 .../camel/management/JmxInstrumentationUsingDefaultsTest.java     | 2 --
 .../camel/management/JmxInstrumentationUsingPlatformMBSTest.java  | 2 --
 .../camel/management/JmxInstrumentationUsingPropertiesTest.java   | 2 --
 .../camel/management/JmxInstrumentationWithConnectorTest.java     | 2 --
 .../apache/camel/management/JmxNotificationEventNotifierTest.java | 3 ---
 .../java/org/apache/camel/management/JmxRecipientListTest.java    | 3 ---
 .../org/apache/camel/management/LoggingEventNotifierTest.java     | 3 ---
 .../camel/management/ManagedBrowsableEndpointAsXmlFileTest.java   | 3 ---
 .../camel/management/ManagedBrowsableEndpointAsXmlTest.java       | 3 ---
 .../camel/management/ManagedBrowsableEndpointEmptyTest.java       | 3 ---
 .../org/apache/camel/management/ManagedBrowsableEndpointTest.java | 3 ---
 .../camel/management/ManagedCamelContextAutoStartupTest.java      | 3 ---
 .../camel/management/ManagedCamelContextDumpRoutesAsXmlTest.java  | 3 ---
 .../management/ManagedCamelContextDumpRoutesCoverageAsXml.java    | 3 ---
 .../camel/management/ManagedCamelContextDumpStatsAsXmlTest.java   | 3 ---
 .../camel/management/ManagedCamelContextEmptyRouteTest.java       | 3 ---
 .../camel/management/ManagedCamelContextPropertiesTest.java       | 3 ---
 .../apache/camel/management/ManagedCamelContextRestartTest.java   | 3 ---
 .../camel/management/ManagedCamelContextSuspendResumeTest.java    | 3 ---
 .../camel/management/ManagedCamelContextSuspendStartTest.java     | 3 ---
 .../java/org/apache/camel/management/ManagedCamelContextTest.java | 3 ---
 .../management/ManagedCamelContextUpdateRoutesFromXmlTest.java    | 3 ---
 ...elContextUpdateRoutesWithPropertyPlaceholdersFromXmlPTest.java | 3 ---
 .../management/ManagedCanekContextExchangeStatisticsTest.java     | 3 ---
 .../test/java/org/apache/camel/management/ManagedChoiceTest.java  | 3 ---
 .../org/apache/camel/management/ManagedConsumerCacheHitsTest.java | 3 ---
 .../org/apache/camel/management/ManagedConsumerCacheTest.java     | 3 ---
 .../java/org/apache/camel/management/ManagedConvertBodyTest.java  | 3 ---
 .../java/org/apache/camel/management/ManagedCustomBeanTest.java   | 3 ---
 .../apache/camel/management/ManagedCustomComponentNameTest.java   | 3 ---
 .../apache/camel/management/ManagedCustomLoadBalancerTest.java    | 3 ---
 .../java/org/apache/camel/management/ManagedCustomPolicyTest.java | 3 ---
 .../org/apache/camel/management/ManagedCustomProcessorTest.java   | 3 ---
 .../java/org/apache/camel/management/ManagedDataFormatTest.java   | 3 ---
 .../test/java/org/apache/camel/management/ManagedDelayerTest.java | 3 ---
 .../org/apache/camel/management/ManagedDualCamelContextTest.java  | 3 ---
 .../java/org/apache/camel/management/ManagedDuplicateIdTest.java  | 3 ---
 .../org/apache/camel/management/ManagedDynamicRouterTest.java     | 3 ---
 .../org/apache/camel/management/ManagedEndpointExplainTest.java   | 3 ---
 .../org/apache/camel/management/ManagedEndpointRegistryTest.java  | 3 ---
 .../java/org/apache/camel/management/ManagedEndpointTest.java     | 3 ---
 .../management/ManagedEndpointUtilizationStatisticsTest.java      | 3 ---
 .../java/org/apache/camel/management/ManagedEnricherTest.java     | 3 ---
 .../apache/camel/management/ManagedErrorHandlerOptionsTest.java   | 3 ---
 .../camel/management/ManagedErrorHandlerRedeliveryTest.java       | 3 ---
 .../java/org/apache/camel/management/ManagedErrorHandlerTest.java | 3 ---
 .../apache/camel/management/ManagedFailoverLoadBalancerTest.java  | 3 ---
 .../apache/camel/management/ManagedFileIdempotentClearTest.java   | 3 ---
 .../camel/management/ManagedFileIdempotentConsumerTest.java       | 3 ---
 .../camel/management/ManagedFileWatcherReloadStrategyTest.java    | 3 ---
 .../test/java/org/apache/camel/management/ManagedFilterTest.java  | 3 ---
 .../apache/camel/management/ManagedInflightRepositoryTest.java    | 3 ---
 .../apache/camel/management/ManagedInflightStatisticsTest.java    | 3 ---
 .../org/apache/camel/management/ManagedInlinedProcessorTest.java  | 3 ---
 .../org/apache/camel/management/ManagedInterceptFromTest.java     | 3 ---
 .../java/org/apache/camel/management/ManagedInterceptTest.java    | 3 ---
 .../org/apache/camel/management/ManagedListComponentsTest.java    | 3 ---
 .../java/org/apache/camel/management/ManagedLoadBalancerTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedLogEndpointTest.java  | 3 ---
 .../test/java/org/apache/camel/management/ManagedLoopTest.java    | 3 ---
 .../test/java/org/apache/camel/management/ManagedMarshalTest.java | 3 ---
 .../apache/camel/management/ManagedMemoryIdempotentClearTest.java | 3 ---
 .../camel/management/ManagedMemoryIdempotentConsumerTest.java     | 3 ---
 .../java/org/apache/camel/management/ManagedMulticastTest.java    | 3 ---
 .../org/apache/camel/management/ManagedNamePatternFixedTest.java  | 3 ---
 .../camel/management/ManagedNamePatternIncludeHostNameTest.java   | 3 ---
 .../camel/management/ManagedNamePatternJvmSystemPropertyTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedNamePatternTest.java  | 3 ---
 .../org/apache/camel/management/ManagedNonManagedServiceTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedPollEnricherTest.java | 3 ---
 .../test/java/org/apache/camel/management/ManagedProcessTest.java | 3 ---
 .../ManagedProducerRecipientListRegisterAlwaysTest.java           | 3 ---
 .../apache/camel/management/ManagedProducerRecipientListTest.java | 3 ---
 .../ManagedProducerRouteAddRemoveRegisterAlwaysTest.java          | 3 ---
 .../java/org/apache/camel/management/ManagedProducerTest.java     | 3 ---
 .../apache/camel/management/ManagedRandomLoadBalancerTest.java    | 3 ---
 .../org/apache/camel/management/ManagedRecipientListTest.java     | 3 ---
 .../java/org/apache/camel/management/ManagedRefProducerTest.java  | 3 ---
 .../apache/camel/management/ManagedRegisterCamelContextTest.java  | 3 ---
 .../org/apache/camel/management/ManagedRegisterEndpointTest.java  | 3 ---
 .../camel/management/ManagedRegisterExchangeStatisticsTest.java   | 3 ---
 .../org/apache/camel/management/ManagedRegisterRouteTest.java     | 3 ---
 .../org/apache/camel/management/ManagedRegisterTwoRoutesTest.java | 3 ---
 .../management/ManagedRemoveRouteAggregateThreadPoolTest.java     | 3 ---
 .../java/org/apache/camel/management/ManagedResequencerTest.java  | 3 ---
 .../camel/management/ManagedResetIncludeProcessorsTest.java       | 3 ---
 .../apache/camel/management/ManagedResetIncludeRoutesTest.java    | 3 ---
 .../camel/management/ManagedRoundRobinLoadBalancerTest.java       | 3 ---
 .../org/apache/camel/management/ManagedRouteAddFromRouteTest.java | 2 --
 .../org/apache/camel/management/ManagedRouteAddRemoveTest.java    | 2 --
 .../ManagedRouteAddSecondRouteNotRegisterNewRoutesTest.java       | 2 --
 .../apache/camel/management/ManagedRouteAddSecondRouteTest.java   | 2 --
 .../org/apache/camel/management/ManagedRouteAutoStartupTest.java  | 3 ---
 .../management/ManagedRouteDumpRouteAsXmlPlaceholderTest.java     | 3 ---
 .../apache/camel/management/ManagedRouteDumpRouteAsXmlTest.java   | 3 ---
 .../ManagedRouteDumpStatsAsXmlAndResetWithCustomDomainTest.java   | 3 ---
 .../management/ManagedRouteDumpStatsAsXmlCustomDomainTest.java    | 3 ---
 .../apache/camel/management/ManagedRouteDumpStatsAsXmlTest.java   | 3 ---
 .../apache/camel/management/ManagedRouteGetPropertiesTest.java    | 3 ---
 .../apache/camel/management/ManagedRouteLoadstatisticsTest.java   | 3 ---
 .../apache/camel/management/ManagedRouteNoAutoStartupTest.java    | 2 --
 .../camel/management/ManagedRoutePerformanceCounterTest.java      | 3 ---
 .../ManagedRouteRemoveContextScopedErrorHandlerTest.java          | 3 ---
 .../ManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java  | 3 ---
 .../management/ManagedRouteRemoveRouteScopedErrorHandlerTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedRouteRemoveTest.java  | 3 ---
 .../ManagedRouteRemoveWireTapExplicitThreadPoolTest.java          | 3 ---
 .../apache/camel/management/ManagedRouteRemoveWireTapTest.java    | 3 ---
 .../apache/camel/management/ManagedRouteShutdownAndStartTest.java | 3 ---
 .../camel/management/ManagedRouteStopAndStartCleanupTest.java     | 2 --
 .../org/apache/camel/management/ManagedRouteStopAndStartTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedRouteStopTest.java    | 3 ---
 .../camel/management/ManagedRouteStopUsingMBeanAPITest.java       | 3 ---
 .../management/ManagedRouteStopWithAbortAfterTimeoutTest.java     | 3 ---
 .../apache/camel/management/ManagedRouteSuspendAndResumeTest.java | 3 ---
 .../camel/management/ManagedRouteUpdateRouteFromXmlTest.java      | 3 ---
 .../apache/camel/management/ManagedRouteWithOnExceptionTest.java  | 3 ---
 .../java/org/apache/camel/management/ManagedRoutingSlipTest.java  | 3 ---
 .../apache/camel/management/ManagedRuntimeCamelCatalogTest.java   | 3 ---
 .../java/org/apache/camel/management/ManagedSanitizeTest.java     | 3 ---
 .../apache/camel/management/ManagedScheduledPollConsumerTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedSedaEndpointTest.java | 3 ---
 .../org/apache/camel/management/ManagedSedaRouteRemoveTest.java   | 3 ---
 .../apache/camel/management/ManagedSendDynamicProcessorTest.java  | 3 ---
 .../org/apache/camel/management/ManagedSendProcessorTest.java     | 3 ---
 .../org/apache/camel/management/ManagedServiceUrlPathTest.java    | 3 ---
 .../management/ManagedSetAndRemoveHeaderAndPropertiesTest.java    | 3 ---
 .../org/apache/camel/management/ManagedShutdownStrategyTest.java  | 3 ---
 .../java/org/apache/camel/management/ManagedSplitterTest.java     | 3 ---
 .../apache/camel/management/ManagedStatisticsDisabledTest.java    | 3 ---
 .../apache/camel/management/ManagedStatisticsLevelOffTest.java    | 3 ---
 .../camel/management/ManagedStatisticsLevelRoutesOnlyTest.java    | 3 ---
 .../java/org/apache/camel/management/ManagedStatisticsTest.java   | 3 ---
 .../camel/management/ManagedStatisticsWithSplitterTest.java       | 3 ---
 .../apache/camel/management/ManagedStickyLoadBalancerTest.java    | 3 ---
 .../apache/camel/management/ManagedStreamCachingStrategyTest.java | 3 ---
 .../org/apache/camel/management/ManagedSuspendedServiceTest.java  | 3 ---
 .../org/apache/camel/management/ManagedThreadPoolProfileTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedThreadPoolTest.java   | 3 ---
 .../org/apache/camel/management/ManagedThreadPoolWithIdTest.java  | 3 ---
 .../test/java/org/apache/camel/management/ManagedThreadsTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedThrottlerTest.java    | 3 ---
 .../management/ManagedThrottlingInflightRoutePolicyTest.java      | 3 ---
 .../test/java/org/apache/camel/management/ManagedTimerTest.java   | 3 ---
 .../org/apache/camel/management/ManagedTopicLoadBalancerTest.java | 3 ---
 .../apache/camel/management/ManagedTypeConverterRegistryTest.java | 3 ---
 .../java/org/apache/camel/management/ManagedUnmarshalTest.java    | 3 ---
 .../camel/management/ManagedUnregisterCamelContextTest.java       | 3 ---
 .../apache/camel/management/ManagedUnregisterComponentTest.java   | 3 ---
 .../apache/camel/management/ManagedUnregisterConsumerTest.java    | 3 ---
 .../apache/camel/management/ManagedUnregisterEndpointTest.java    | 3 ---
 .../apache/camel/management/ManagedUnregisterProcessorTest.java   | 3 ---
 .../apache/camel/management/ManagedUnregisterProducerTest.java    | 3 ---
 .../org/apache/camel/management/ManagedUnregisterRouteTest.java   | 3 ---
 .../apache/camel/management/ManagedWeightedLoadBalancerTest.java  | 3 ---
 .../test/java/org/apache/camel/management/ManagedWireTapTest.java | 3 ---
 .../java/org/apache/camel/management/ManagementTestSupport.java   | 2 --
 .../org/apache/camel/management/MultiInstanceProcessorTest.java   | 2 --
 .../apache/camel/management/MultipleEventNotifierEventsTest.java  | 3 ---
 .../org/apache/camel/management/PublishEventNotifierTest.java     | 3 ---
 .../apache/camel/management/PublishEventNotifierToRouteTest.java  | 3 ---
 .../java/org/apache/camel/management/RemoveEventNotifierTest.java | 3 ---
 .../org/apache/camel/management/RemoveRouteDefinitionTest.java    | 3 ---
 .../TwoManagedCamelContextAutoAssignedNameClashTest.java          | 3 ---
 .../apache/camel/management/TwoManagedCamelContextClashTest.java  | 3 ---
 .../org/apache/camel/management/TwoManagedCamelContextTest.java   | 3 ---
 .../org/apache/camel/management/TwoManagedNamePatternTest.java    | 3 ---
 .../org/apache/camel/model/GenerateXmFromCamelContextTest.java    | 3 ---
 .../src/test/java/org/apache/camel/model/GenerateXmlTest.java     | 3 ---
 .../src/test/java/org/apache/camel/model/LoadRestFromXmlTest.java | 3 ---
 .../test/java/org/apache/camel/model/LoadRouteFromXmlTest.java    | 3 ---
 .../org/apache/camel/model/LoadRouteFromXmlWithInterceptTest.java | 3 ---
 .../apache/camel/model/LoadRouteFromXmlWithOnExceptionTest.java   | 3 ---
 .../org/apache/camel/model/LoadRouteFromXmlWithPolicyTest.java    | 3 ---
 .../org/apache/camel/model/StartingRoutesErrorReportedTest.java   | 3 ---
 camel-core/src/test/java/org/apache/camel/model/XmlParseTest.java | 3 ---
 .../src/test/java/org/apache/camel/model/XmlTestSupport.java      | 3 ---
 .../test/java/org/apache/camel/processor/AsyncLoopCopyTest.java   | 3 ---
 .../src/test/java/org/apache/camel/processor/AsyncLoopTest.java   | 3 ---
 .../camel/processor/BatchResequencerAllowDuplicatesTest.java      | 3 ---
 .../apache/camel/processor/BatchResequencerJMSPriorityTest.java   | 3 ---
 .../apache/camel/processor/BatchResequencerWithDuplicateTest.java | 3 ---
 .../camel/processor/BeanOgnMethodWithXPathInjectionTest.java      | 3 ---
 .../camel/processor/BeanProcessorSpecializedMessageTest.java      | 3 ---
 .../apache/camel/processor/BeanRecipientListNoMethodNameTest.java | 3 ---
 .../java/org/apache/camel/processor/BeanRecipientListTest.java    | 3 ---
 .../org/apache/camel/processor/BeanRecipientListTimeoutTest.java  | 3 ---
 .../src/test/java/org/apache/camel/processor/BeanRouteTest.java   | 3 ---
 .../java/org/apache/camel/processor/BeanWithExceptionTest.java    | 3 ---
 .../org/apache/camel/processor/BeanWithXPathInjectionTest.java    | 3 ---
 .../java/org/apache/camel/processor/BreadcrumbDisabledTest.java   | 3 ---
 .../src/test/java/org/apache/camel/processor/BreadcrumbTest.java  | 3 ---
 .../java/org/apache/camel/processor/CBRHeaderPredicateTest.java   | 3 ---
 .../camel/processor/CBRPredicateBeanThrowExceptionTest.java       | 3 ---
 .../apache/camel/processor/CBRSimplePredicateEmptyBodyTest.java   | 3 ---
 .../org/apache/camel/processor/CBRWhenUnmarshalEndChoiceTest.java | 3 ---
 .../java/org/apache/camel/processor/CBRWithLoadBalancerTest.java  | 3 ---
 .../java/org/apache/camel/processor/CBRWithMulticastTest.java     | 3 ---
 .../java/org/apache/camel/processor/CBRWithRecipientListTest.java | 3 ---
 .../test/java/org/apache/camel/processor/CBRWithWireTapTest.java  | 3 ---
 .../src/test/java/org/apache/camel/processor/ChannelTest.java     | 3 ---
 .../src/test/java/org/apache/camel/processor/ChoiceAsyncTest.java | 3 ---
 .../org/apache/camel/processor/ChoiceCompoundPredicateTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/ChoiceNoActionTest.java  | 3 ---
 .../java/org/apache/camel/processor/ChoiceNoErrorHandlerTest.java | 2 --
 .../src/test/java/org/apache/camel/processor/ChoiceTest.java      | 3 ---
 .../org/apache/camel/processor/ChoiceWhenNotPredicateTest.java    | 3 ---
 .../test/java/org/apache/camel/processor/ChoiceWithEndTest.java   | 3 ---
 .../apache/camel/processor/ChoiceWithSimpleExpressionTest.java    | 3 ---
 .../camel/processor/CreateRouteWithNonExistingEndpointTest.java   | 3 ---
 .../org/apache/camel/processor/CustomProcessorFactoryTest.java    | 3 ---
 .../java/org/apache/camel/processor/CustomRoutePolicyTest.java    | 3 ---
 .../apache/camel/processor/CustomScheduledRoutePolicyTest.java    | 3 ---
 .../java/org/apache/camel/processor/DataFormatServiceTest.java    | 2 --
 .../src/test/java/org/apache/camel/processor/DataFormatTest.java  | 3 ---
 .../DeadLetterChannelBuilderWithInvalidDeadLetterUriTest.java     | 3 ---
 .../DeadLetterChannelRedeliverWithDelayBlockingTest.java          | 2 --
 .../java/org/apache/camel/processor/DeadLetterChannelTest.java    | 3 ---
 .../camel/processor/DeadLetterChannelUseOriginalInBodyTest.java   | 2 --
 .../processor/DeadLetterChannelUseOriginalInBodyWithFileTest.java | 3 ---
 .../processor/DefaultErrorHandlerExplicitConfiguredTest.java      | 2 --
 .../camel/processor/DefaultErrorHandlerOnExceptionTest.java       | 2 --
 .../java/org/apache/camel/processor/DefaultErrorHandlerTest.java  | 2 --
 .../apache/camel/processor/DefinitionPolicyPerProcessorTest.java  | 3 ---
 .../java/org/apache/camel/processor/DelayInterceptorTest.java     | 2 --
 .../java/org/apache/camel/processor/DelayerAsyncDelayedTest.java  | 3 ---
 .../test/java/org/apache/camel/processor/DelayerPerRouteTest.java | 3 ---
 .../src/test/java/org/apache/camel/processor/DelayerTest.java     | 3 ---
 .../java/org/apache/camel/processor/DelayerWhileShutdownTest.java | 2 --
 .../camel/processor/DoubleLoadBalancerMisconfigurationTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/DualPipelineTest.java    | 3 ---
 .../test/java/org/apache/camel/processor/DynamicRouter2Test.java  | 3 ---
 .../test/java/org/apache/camel/processor/DynamicRouter3Test.java  | 3 ---
 .../org/apache/camel/processor/DynamicRouterAnnotationTest.java   | 3 ---
 .../apache/camel/processor/DynamicRouterExchangeHeaders2Test.java | 3 ---
 .../apache/camel/processor/DynamicRouterExchangeHeadersTest.java  | 3 ---
 .../camel/processor/DynamicRouterExchangePropertiesTest.java      | 3 ---
 .../test/java/org/apache/camel/processor/DynamicRouterTest.java   | 3 ---
 .../processor/Endpoint2MustBeStartedBeforeSendProcessorTest.java  | 3 ---
 .../processor/EndpointMustBeStartedBeforeSendProcessorTest.java   | 3 ---
 .../ErrorHandlerOnExceptionRedeliveryAndHandledTest.java          | 3 ---
 .../apache/camel/processor/ErrorHandlerWrappedEachNodeTest.java   | 2 --
 .../camel/processor/EventNotifierExchangeSentExampleTest.java     | 3 ---
 .../apache/camel/processor/ExceptionHandlerStreamCacheTest.java   | 2 --
 .../org/apache/camel/processor/ExchangeCreatedTimestampTest.java  | 3 ---
 .../apache/camel/processor/ExchangeIdempotentConsumerTest.java    | 3 ---
 .../camel/processor/FailOverLoadBalanceWithRedeliveryTest.java    | 3 ---
 .../camel/processor/FailoverMaximumFailoverAttemptsTest.java      | 3 ---
 .../org/apache/camel/processor/FailoverRoundRobinGoodBadTest.java | 3 ---
 .../org/apache/camel/processor/FailoverRoundRobinStickyTest.java  | 3 ---
 .../java/org/apache/camel/processor/FailoverRoundRobinTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/FailoverStickyTest.java  | 3 ---
 .../src/test/java/org/apache/camel/processor/FaultRouteTest.java  | 3 ---
 .../java/org/apache/camel/processor/FileIdempotentClearTest.java  | 3 ---
 .../camel/processor/FileIdempotentConsumerLoadStoreTest.java      | 3 ---
 .../org/apache/camel/processor/FileIdempotentConsumerTest.java    | 3 ---
 .../java/org/apache/camel/processor/FileIdempotentRemoveTest.java | 3 ---
 .../org/apache/camel/processor/FileIdempotentTrunkStoreTest.java  | 3 ---
 .../org/apache/camel/processor/FileRollbackOnCompletionTest.java  | 3 ---
 .../java/org/apache/camel/processor/FilterBeforeSplitTest.java    | 2 --
 .../java/org/apache/camel/processor/FilterNotMatchedTest.java     | 3 ---
 .../src/test/java/org/apache/camel/processor/FilterNotTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/FilterSimpleTest.java    | 3 ---
 .../src/test/java/org/apache/camel/processor/FilterTest.java      | 3 ---
 .../src/test/java/org/apache/camel/processor/FlipRoutePolicy.java | 3 ---
 .../test/java/org/apache/camel/processor/FlipRoutePolicyTest.java | 3 ---
 .../src/test/java/org/apache/camel/processor/FromToInOutTest.java | 3 ---
 .../java/org/apache/camel/processor/HandleFaultPerRouteTest.java  | 3 ---
 .../org/apache/camel/processor/IdempotentConsumerAsyncTest.java   | 3 ---
 .../camel/processor/IdempotentConsumerCompletionEagerTest.java    | 3 ---
 .../apache/camel/processor/IdempotentConsumerConcurrentTest.java  | 2 --
 .../org/apache/camel/processor/IdempotentConsumerEagerTest.java   | 3 ---
 .../apache/camel/processor/IdempotentConsumerNoMessageIdTest.java | 3 ---
 .../camel/processor/IdempotentConsumerRemoveOnFailureTest.java    | 3 ---
 .../camel/processor/IdempotentConsumerRepoExceptionTest.java      | 3 ---
 .../java/org/apache/camel/processor/IdempotentConsumerTest.java   | 3 ---
 .../processor/IdempotentConsumerUsingCustomRepositoryTest.java    | 3 ---
 .../apache/camel/processor/InheritErrorHandlerDefaultTest.java    | 3 ---
 .../org/apache/camel/processor/InheritErrorHandlerFalseTest.java  | 3 ---
 .../org/apache/camel/processor/InheritErrorHandlerTrueTest.java   | 3 ---
 .../java/org/apache/camel/processor/InlinedProcessorIdTest.java   | 3 ---
 .../src/test/java/org/apache/camel/processor/JoinRoutesTest.java  | 3 ---
 .../test/java/org/apache/camel/processor/LanguageBuilderTest.java | 3 ---
 .../java/org/apache/camel/processor/LogGlobalLogNameTest.java     | 3 ---
 .../test/java/org/apache/camel/processor/LogProcessorTest.java    | 3 ---
 .../camel/processor/LogProcessorWithProvidedLoggerTest.java       | 3 ---
 .../test/java/org/apache/camel/processor/LogPropertiesTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/LoopCopyErrorTest.java   | 3 ---
 .../src/test/java/org/apache/camel/processor/LoopCopyTest.java    | 3 ---
 .../src/test/java/org/apache/camel/processor/LoopNoCopyTest.java  | 3 ---
 camel-core/src/test/java/org/apache/camel/processor/LoopTest.java | 3 ---
 .../src/test/java/org/apache/camel/processor/MDCAsyncTest.java    | 3 ---
 .../apache/camel/processor/MDCOnCompletionOnCompletionTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/MDCOnCompletionTest.java | 3 ---
 .../src/test/java/org/apache/camel/processor/MDCResetTest.java    | 2 --
 camel-core/src/test/java/org/apache/camel/processor/MDCTest.java  | 3 ---
 .../java/org/apache/camel/processor/MDCWithBreadcrumbTest.java    | 3 ---
 .../java/org/apache/camel/processor/MarkRollbackOnlyTest.java     | 3 ---
 .../apache/camel/processor/MessageHistoryCopyExchangeTest.java    | 3 ---
 .../org/apache/camel/processor/MessageHistoryDumpRoutingTest.java | 3 ---
 .../test/java/org/apache/camel/processor/MethodFilterTest.java    | 3 ---
 .../apache/camel/processor/MulticastCompletedPropertyTest.java    | 3 ---
 .../camel/processor/MulticastFineGrainedErrorHandlingTest.java    | 3 ---
 .../processor/MulticastKeepOriginalMessageUnchangedTest.java      | 3 ---
 .../apache/camel/processor/MulticastNoStopOnExceptionTest.java    | 3 ---
 .../camel/processor/MulticastParallelAllTimeoutAwareTest.java     | 3 ---
 .../camel/processor/MulticastParallelFailureEndpointTest.java     | 3 ---
 .../processor/MulticastParallelFineGrainedErrorHandlingTest.java  | 3 ---
 .../apache/camel/processor/MulticastParallelLastTimeoutTest.java  | 3 ---
 .../camel/processor/MulticastParallelMiddleTimeoutTest.java       | 3 ---
 .../camel/processor/MulticastParallelNoStopOnExceptionTest.java   | 3 ---
 .../camel/processor/MulticastParallelStopOnExceptionTest.java     | 3 ---
 .../apache/camel/processor/MulticastParallelStreamingTest.java    | 3 ---
 .../camel/processor/MulticastParallelStreamingTimeoutTest.java    | 3 ---
 .../camel/processor/MulticastParallelStreamingTwoTimeoutTest.java | 3 ---
 .../org/apache/camel/processor/MulticastParallelStressTest.java   | 3 ---
 .../java/org/apache/camel/processor/MulticastParallelTest.java    | 3 ---
 .../org/apache/camel/processor/MulticastParallelTimeout2Test.java | 3 ---
 .../org/apache/camel/processor/MulticastParallelTimeout3Test.java | 3 ---
 .../apache/camel/processor/MulticastParallelTimeoutAwareTest.java | 3 ---
 .../org/apache/camel/processor/MulticastParallelTimeoutTest.java  | 3 ---
 .../camel/processor/MulticastParallelTwoTimeoutMiddleTest.java    | 3 ---
 .../apache/camel/processor/MulticastParallelTwoTimeoutTest.java   | 3 ---
 .../MulticastStopOnExceptionLastWithOnExceptionTest.java          | 3 ---
 .../org/apache/camel/processor/MulticastStopOnExceptionTest.java  | 3 ---
 .../processor/MulticastStopOnExceptionWithOnExceptionTest.java    | 3 ---
 .../org/apache/camel/processor/MulticastStreamCachingTest.java    | 3 ---
 .../src/test/java/org/apache/camel/processor/MulticastTest.java   | 3 ---
 .../apache/camel/processor/MulticastThreadPoolProfileTest.java    | 3 ---
 .../java/org/apache/camel/processor/MulticastUnitOfWorkTest.java  | 2 --
 .../apache/camel/processor/MulticastWithOnExceptionFirstTest.java | 3 ---
 .../apache/camel/processor/MulticastWithOnExceptionLastTest.java  | 3 ---
 .../org/apache/camel/processor/MulticastWithOnExceptionTest.java  | 3 ---
 .../java/org/apache/camel/processor/MyAggregationStrategy.java    | 1 -
 .../org/apache/camel/processor/MyLoggingSentEventNotifer.java     | 3 ---
 .../src/test/java/org/apache/camel/processor/MyValidator.java     | 3 ---
 .../test/java/org/apache/camel/processor/NavigateRouteTest.java   | 2 --
 .../org/apache/camel/processor/NewProcessorAndServiceTest.java    | 3 ---
 .../test/java/org/apache/camel/processor/NoErrorHandlerTest.java  | 3 ---
 .../NotAllowRedeliveryWhileStoppingDeadLetterChannelTest.java     | 3 ---
 .../camel/processor/NotAllowRedeliveryWhileStoppingTest.java      | 3 ---
 .../OnCompletionAndInterceptAndOnExceptionGlobalTest.java         | 3 ---
 .../processor/OnCompletionAndInterceptGlobalSSEnabledTest.java    | 3 ---
 .../camel/processor/OnCompletionAndInterceptGlobalTest.java       | 3 ---
 .../org/apache/camel/processor/OnCompletionAndInterceptTest.java  | 3 ---
 .../java/org/apache/camel/processor/OnCompletionAsyncTest.java    | 3 ---
 .../java/org/apache/camel/processor/OnCompletionContainsTest.java | 3 ---
 .../apache/camel/processor/OnCompletionGlobalCustomPoolTest.java  | 3 ---
 .../java/org/apache/camel/processor/OnCompletionGlobalTest.java   | 3 ---
 .../apache/camel/processor/OnCompletionInvalidConfiguredTest.java | 3 ---
 .../processor/OnCompletionMoreGlobalRouteCompletionTest.java      | 3 ---
 .../org/apache/camel/processor/OnCompletionMoreGlobalTest.java    | 3 ---
 .../apache/camel/processor/OnCompletionOnCompleteOnlyTest.java    | 3 ---
 .../org/apache/camel/processor/OnCompletionOnFailureOnlyTest.java | 3 ---
 .../processor/OnCompletionRouteScopeOverrideGlobalScopeTest.java  | 3 ---
 .../org/apache/camel/processor/OnCompletionShouldBeLastTest.java  | 3 ---
 .../test/java/org/apache/camel/processor/OnCompletionTest.java    | 3 ---
 .../apache/camel/processor/OnCompletionUseOriginalBodyTest.java   | 3 ---
 .../java/org/apache/camel/processor/OnCompletionWhenTest.java     | 3 ---
 .../apache/camel/processor/OnExceptionContinueToRouteTest.java    | 3 ---
 .../src/test/java/org/apache/camel/processor/PipelineMEPTest.java | 2 --
 .../src/test/java/org/apache/camel/processor/PipelineTest.java    | 3 ---
 .../java/org/apache/camel/processor/PolicyPerProcessorTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/PolicyPerRouteTest.java  | 3 ---
 .../camel/processor/ProducerTemplateDisableEventNotifierTest.java | 3 ---
 .../camel/processor/RecipeientListWithSimpleExpressionTest.java   | 3 ---
 .../camel/processor/RecipientListAggregationStrategyTest.java     | 3 ---
 .../java/org/apache/camel/processor/RecipientListBeanTest.java    | 3 ---
 .../camel/processor/RecipientListDoNotStopOnExceptionTest.java    | 3 ---
 .../RecipientListExchangePropertyAggregationStrategyTest.java     | 3 ---
 .../apache/camel/processor/RecipientListExchangePropertyTest.java | 3 ---
 .../processor/RecipientListFineGrainedErrorHandlingTest.java      | 3 ---
 .../java/org/apache/camel/processor/RecipientListLeakTest.java    | 3 ---
 .../java/org/apache/camel/processor/RecipientListNoCacheTest.java | 3 ---
 .../RecipientListParallelAggregateThreadPoolIssueTest.java        | 3 ---
 .../RecipientListParallelFineGrainedErrorHandlingTest.java        | 3 ---
 .../RecipientListParallelStopOnExceptionWithOnExceptionTest.java  | 3 ---
 .../camel/processor/RecipientListParallelStreamingTest.java       | 3 ---
 .../org/apache/camel/processor/RecipientListParallelTest.java     | 3 ---
 .../apache/camel/processor/RecipientListParallelTimeoutTest.java  | 3 ---
 .../org/apache/camel/processor/RecipientListReturnValueTest.java  | 2 --
 .../apache/camel/processor/RecipientListStopOnExceptionTest.java  | 3 ---
 .../RecipientListStopOnExceptionWithOnExceptionTest.java          | 3 ---
 .../test/java/org/apache/camel/processor/RecipientListTest.java   | 3 ---
 .../apache/camel/processor/RecipientListWithArrayHeaderTest.java  | 3 ---
 .../apache/camel/processor/RecipientListWithDelimiterTest.java    | 3 ---
 .../processor/RecipientListWithStringDelimitedHeaderTest.java     | 3 ---
 .../processor/RecipientListWithStringDelimitedPropertyTest.java   | 3 ---
 .../camel/processor/RedeliverWithExceptionAndFaultTest.java       | 3 ---
 .../camel/processor/RedeliveryErrorHandlerBlockedDelayTest.java   | 3 ---
 .../camel/processor/RedeliveryErrorHandlerLogHandledTest.java     | 3 ---
 .../processor/RedeliveryErrorHandlerNonBlockedDelayTest.java      | 3 ---
 .../RedeliveryErrorHandlerNonBlockedRedeliveryHeaderTest.java     | 3 ---
 .../camel/processor/RedeliveryOnExceptionBlockedDelayTest.java    | 3 ---
 .../apache/camel/processor/RedeliveryPolicyDelayPatternTest.java  | 3 ---
 .../apache/camel/processor/RedeliveryPolicyPerExceptionTest.java  | 3 ---
 .../ReduceStacksNeededDuringRoutingSendProcessorTest.java         | 3 ---
 .../camel/processor/ReduceStacksNeededDuringRoutingTest.java      | 3 ---
 .../src/test/java/org/apache/camel/processor/ResequencerTest.java | 3 ---
 .../org/apache/camel/processor/RollbackCustomMessageTest.java     | 3 ---
 .../apache/camel/processor/RollbackDefaultErrorHandlerTest.java   | 3 ---
 .../org/apache/camel/processor/RollbackDefaultMessageTest.java    | 3 ---
 .../src/test/java/org/apache/camel/processor/RollbackTest.java    | 3 ---
 .../java/org/apache/camel/processor/RouteAutoStartupTest.java     | 3 ---
 .../org/apache/camel/processor/RouteContextProcessorTest.java     | 2 --
 .../java/org/apache/camel/processor/RouteFormattedUriTest.java    | 3 ---
 .../src/test/java/org/apache/camel/processor/RouteIdTest.java     | 3 ---
 .../java/org/apache/camel/processor/RouteNoAutoStartupTest.java   | 3 ---
 .../org/apache/camel/processor/RoutePerformanceCountTest.java     | 3 ---
 .../java/org/apache/camel/processor/RoutePoliciesRefTest.java     | 3 ---
 .../test/java/org/apache/camel/processor/RoutePoliciesTest.java   | 3 ---
 .../org/apache/camel/processor/RouteServicesStartupOrderTest.java | 3 ---
 .../apache/camel/processor/RouteShutdownNotReverseOrderTest.java  | 3 ---
 .../org/apache/camel/processor/RouteShutdownReverseOrderTest.java | 3 ---
 .../org/apache/camel/processor/RouteStartupOrderClashTest.java    | 3 ---
 .../camel/processor/RouteStartupOrderDirectReverseTest.java       | 3 ---
 .../org/apache/camel/processor/RouteStartupOrderDirectTest.java   | 3 ---
 .../org/apache/camel/processor/RouteStartupOrderSimpleTest.java   | 3 ---
 .../RouteStartupOrderSuspendResumeNoAutoStartupTest.java          | 3 ---
 .../camel/processor/RouteStartupOrderSuspendResumeTest.java       | 3 ---
 .../java/org/apache/camel/processor/RouteStartupOrderTest.java    | 3 ---
 .../apache/camel/processor/RouteStartupOrderWithDefaultTest.java  | 3 ---
 .../src/test/java/org/apache/camel/processor/RouteStopTest.java   | 2 --
 .../processor/RouteWithConstantFieldFromExchangeFailTest.java     | 3 ---
 .../camel/processor/RouteWithConstantFieldFromExchangeTest.java   | 3 ---
 .../org/apache/camel/processor/RoutingSlipInOutAndInOnlyTest.java | 3 ---
 .../java/org/apache/camel/processor/RoutingSlipNoCacheTest.java   | 3 ---
 .../java/org/apache/camel/processor/SamplingThrottlerTest.java    | 3 ---
 .../test/java/org/apache/camel/processor/ScriptExternalTest.java  | 3 ---
 .../src/test/java/org/apache/camel/processor/ScriptTest.java      | 3 ---
 .../org/apache/camel/processor/SendToNonExistingEndpointTest.java | 3 ---
 .../java/org/apache/camel/processor/SetBodyProcessorTest.java     | 3 ---
 .../src/test/java/org/apache/camel/processor/SetHeaderTest.java   | 3 ---
 .../apache/camel/processor/SetHeaderUsingDslExpressionsTest.java  | 3 ---
 .../org/apache/camel/processor/ShutdownCompleteAllTasksTest.java  | 3 ---
 .../camel/processor/ShutdownCompleteCurrentTaskOnlyTest.java      | 3 ---
 .../test/java/org/apache/camel/processor/ShutdownDeferTest.java   | 3 ---
 .../java/org/apache/camel/processor/ShutdownNotDeferTest.java     | 3 ---
 .../apache/camel/processor/ShutdownSedaAndDirectEndpointTest.java | 3 ---
 .../test/java/org/apache/camel/processor/SimpleDirectTest.java    | 3 ---
 .../java/org/apache/camel/processor/SimpleMockSampleTest.java     | 3 ---
 .../src/test/java/org/apache/camel/processor/SimpleMockTest.java  | 3 ---
 .../org/apache/camel/processor/SimpleProcessorIdAwareTest.java    | 3 ---
 .../test/java/org/apache/camel/processor/SimpleProcessorTest.java | 3 ---
 .../org/apache/camel/processor/SimpleProcessorTraceableTest.java  | 3 ---
 .../org/apache/camel/processor/SimpleTryCatchFinallyTest.java     | 3 ---
 .../java/org/apache/camel/processor/SimpleTryFinallyTest.java     | 3 ---
 .../camel/processor/SimpleTryThrowExceptionFinallyTest.java       | 3 ---
 .../src/test/java/org/apache/camel/processor/SimulatorTest.java   | 3 ---
 .../java/org/apache/camel/processor/SplitAggregateInOutTest.java  | 3 ---
 .../java/org/apache/camel/processor/SplitParallelTimeoutTest.java | 3 ---
 .../test/java/org/apache/camel/processor/SplitWithEndTest.java    | 3 ---
 .../org/apache/camel/processor/SplitterCompletedPropertyTest.java | 3 ---
 .../java/org/apache/camel/processor/SplitterMethodCallTest.java   | 3 ---
 .../apache/camel/processor/SplitterNoAggregationStrategyTest.java | 3 ---
 .../org/apache/camel/processor/SplitterNoStopOnExceptionTest.java | 3 ---
 .../java/org/apache/camel/processor/SplitterOnCompletionTest.java | 3 ---
 .../org/apache/camel/processor/SplitterParallelBigFileTest.java   | 3 ---
 .../camel/processor/SplitterParallelNoStopOnExceptionTest.java    | 3 ---
 .../camel/processor/SplitterParallelStopOnExceptionTest.java      | 3 ---
 .../SplitterParallelStopOnExceptionWithOnExceptionTest.java       | 3 ---
 .../test/java/org/apache/camel/processor/SplitterPojoTest.java    | 3 ---
 .../processor/SplitterShareUnitOfWorkCompletionAwareTest.java     | 3 ---
 .../org/apache/camel/processor/SplitterStopOnExceptionTest.java   | 3 ---
 .../processor/SplitterStopOnExceptionWithOnExceptionTest.java     | 3 ---
 .../java/org/apache/camel/processor/SplitterStreamCacheTest.java  | 3 ---
 .../camel/processor/SplitterStreamingErrorHandlingTest.java       | 3 ---
 .../SplitterStreamingStopOnExceptionErrorHandlingTest.java        | 3 ---
 .../org/apache/camel/processor/SplitterStreamingUoWIssueTest.java | 3 ---
 .../camel/processor/SplitterStreamingWithErrorHandlerTest.java    | 3 ---
 .../src/test/java/org/apache/camel/processor/SplitterTest.java    | 3 ---
 .../java/org/apache/camel/processor/SplitterUoWIssueTest.java     | 3 ---
 .../org/apache/camel/processor/SplitterWithDualMulticastTest.java | 3 ---
 .../org/apache/camel/processor/SplitterWithMulticastTest.java     | 3 ---
 .../org/apache/camel/processor/StreamCachingOnlyRouteTest.java    | 3 ---
 .../org/apache/camel/processor/StreamCachingPerRouteTest.java     | 3 ---
 .../StreamSourceContentBasedRouterNoErrorHandlerTest.java         | 2 --
 ...StreamSourceContentBasedRouterSSEnabledOnCamelContextTest.java | 2 --
 .../camel/processor/StreamSourceContentBasedRouterTest.java       | 2 --
 .../apache/camel/processor/ThreadsCoreAndMaxPoolInvalidTest.java  | 3 ---
 .../camel/processor/ThreadsCoreAndMaxPoolKeepAliveTimeTest.java   | 3 ---
 .../org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java     | 3 ---
 .../test/java/org/apache/camel/processor/ThreadsCorePoolTest.java | 3 ---
 .../test/java/org/apache/camel/processor/ThreadsDefaultTest.java  | 3 ---
 .../java/org/apache/camel/processor/ThreadsMaxQueueSizeTest.java  | 3 ---
 .../org/apache/camel/processor/ThreadsRejectedExecutionTest.java  | 3 ---
 .../org/apache/camel/processor/ThreadsRejectedPolicyTest.java     | 3 ---
 .../java/org/apache/camel/processor/ThreadsRequestReplyTest.java  | 3 ---
 .../apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java   | 3 ---
 .../org/apache/camel/processor/ThrottlerAsyncDelayedTest.java     | 3 ---
 .../apache/camel/processor/ThrottlerInvalidConfiguredTest.java    | 3 ---
 .../java/org/apache/camel/processor/ThrottlerMethodCallTest.java  | 3 ---
 .../java/org/apache/camel/processor/ThrottlerNullEvalTest.java    | 3 ---
 .../java/org/apache/camel/processor/ThrottlingGroupingTest.java   | 3 ---
 .../apache/camel/processor/ThrottlingInflightRoutePolicyTest.java | 3 ---
 .../org/apache/camel/processor/ThrowExceptionMessageTest.java     | 3 ---
 .../org/apache/camel/processor/ThrowExceptionNullMessageTest.java | 3 ---
 .../test/java/org/apache/camel/processor/ThrowExceptionTest.java  | 3 ---
 .../java/org/apache/camel/processor/ToEndpointPropertyTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/TraceDelayerTest.java    | 3 ---
 .../java/org/apache/camel/processor/TraceInterceptorTest.java     | 3 ---
 .../java/org/apache/camel/processor/TracePerRouteManualTest.java  | 3 ---
 .../java/org/apache/camel/processor/TracerConfigurationTest.java  | 3 ---
 .../src/test/java/org/apache/camel/processor/TransformTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/TransformViaDSLTest.java | 3 ---
 .../org/apache/camel/processor/TryCatchContinueToRouteTest.java   | 3 ---
 .../camel/processor/TryCatchMustHaveExceptionConfiguredTest.java  | 3 ---
 .../java/org/apache/camel/processor/TryCatchNestedChoiceTest.java | 3 ---
 .../processor/TypeConverterRegistryStatsPerformanceTest.java      | 3 ---
 .../java/org/apache/camel/processor/UnitOfWorkProducerTest.java   | 3 ---
 .../camel/processor/UnitOfWorkSynchronizationAdapterTest.java     | 3 ---
 .../src/test/java/org/apache/camel/processor/UnitOfWorkTest.java  | 3 ---
 .../org/apache/camel/processor/UnitOfWorkWithAsyncFlowTest.java   | 3 ---
 .../test/java/org/apache/camel/processor/ValidateRegExpTest.java  | 3 ---
 .../java/org/apache/camel/processor/ValidateSimpleRegExpTest.java | 3 ---
 .../test/java/org/apache/camel/processor/ValidateSimpleTest.java  | 3 ---
 .../src/test/java/org/apache/camel/processor/ValidationTest.java  | 3 ---
 .../org/apache/camel/processor/ValidationWithExceptionTest.java   | 3 ---
 .../apache/camel/processor/ValidationWithInFlowExceptionTest.java | 3 ---
 .../org/apache/camel/processor/ValidationWithTryCatchTest.java    | 3 ---
 .../java/org/apache/camel/processor/VerySimpleDirectTest.java     | 3 ---
 .../org/apache/camel/processor/WireTapBeanAsProcessorTest.java    | 2 --
 .../src/test/java/org/apache/camel/processor/WireTapBeanTest.java | 2 --
 .../java/org/apache/camel/processor/WireTapCustomPool2Test.java   | 2 --
 .../java/org/apache/camel/processor/WireTapCustomPoolTest.java    | 2 --
 .../java/org/apache/camel/processor/WireTapExpressionTest.java    | 2 --
 .../java/org/apache/camel/processor/WireTapNewExchangeTest.java   | 3 ---
 .../java/org/apache/camel/processor/WireTapStreamCachingTest.java | 3 ---
 .../src/test/java/org/apache/camel/processor/WireTapTest.java     | 2 --
 .../processor/WireTapUsingFireAndForgetCopyAsDefaultTest.java     | 3 ---
 .../apache/camel/processor/WireTapUsingFireAndForgetCopyTest.java | 3 ---
 .../org/apache/camel/processor/WireTapUsingFireAndForgetTest.java | 3 ---
 .../src/test/java/org/apache/camel/processor/XPathChoiceTest.java | 3 ---
 .../src/test/java/org/apache/camel/processor/XPathFilterTest.java | 3 ---
 .../XPathWithNamespaceBuilderFilterAndResultTypeTest.java         | 3 ---
 .../camel/processor/XPathWithNamespaceBuilderFilterTest.java      | 3 ---
 .../org/apache/camel/processor/XPathWithNamespacesFilterTest.java | 3 ---
 .../camel/processor/aggregator/AbstractDistributedTest.java       | 3 ---
 .../processor/aggregator/AggregateClosedCorrelationKeyTest.java   | 3 ---
 .../processor/aggregator/AggregateCompleteAllOnStopTest.java      | 3 ---
 .../processor/aggregator/AggregateCompletionIntervalTest.java     | 2 --
 .../processor/aggregator/AggregateCompletionOnlyOneTest.java      | 3 ---
 .../processor/aggregator/AggregateCompletionOnlyTwoTest.java      | 3 ---
 .../processor/aggregator/AggregateCompletionPredicateTest.java    | 3 ---
 .../aggregator/AggregateConcurrentPerCorrelationKeyTest.java      | 3 ---
 .../camel/processor/aggregator/AggregateDiscardOnTimeoutTest.java | 3 ---
 .../processor/aggregator/AggregateEagerCheckCompletionTest.java   | 3 ---
 .../processor/aggregator/AggregateExpressionSizeFallbackTest.java | 3 ---
 .../aggregator/AggregateExpressionSizeOverrideFixedTest.java      | 3 ---
 .../AggregateExpressionSizeOverrideFixedTimeoutTest.java          | 3 ---
 .../camel/processor/aggregator/AggregateExpressionSizeTest.java   | 3 ---
 .../aggregator/AggregateExpressionTimeoutFallbackTest.java        | 3 ---
 .../aggregator/AggregateExpressionTimeoutPerGroupTest.java        | 3 ---
 .../processor/aggregator/AggregateExpressionTimeoutTest.java      | 3 ---
 .../aggregator/AggregateForceCompletionOnStopParallelTest.java    | 3 ---
 .../processor/aggregator/AggregateForceCompletionOnStopTest.java  | 3 ---
 .../aggregator/AggregateIgnoreInvalidCorrelationKeysTest.java     | 3 ---
 .../camel/processor/aggregator/AggregateLostGroupIssueTest.java   | 2 --
 .../camel/processor/aggregator/AggregateMultipleSourceTest.java   | 3 ---
 .../processor/aggregator/AggregateNewExchangeAndConfirmTest.java  | 2 --
 .../processor/aggregator/AggregateParallelProcessingTest.java     | 3 ---
 .../aggregator/AggregatePreCompleteAwareStrategyTest.java         | 3 ---
 .../aggregator/AggregatePreCompleteAwareStrategyTimeoutTest.java  | 3 ---
 .../apache/camel/processor/aggregator/AggregateProcessorTest.java | 3 ---
 .../AggregateProcessorTimeoutCompletionRestartTest.java           | 2 --
 .../processor/aggregator/AggregateRepositoryReturnNullTest.java   | 3 ---
 .../aggregator/AggregateShouldSkipFilteredExchangesTest.java      | 2 --
 .../processor/aggregator/AggregateShutdownThreadPoolTest.java     | 3 ---
 .../processor/aggregator/AggregateSimplePredicateEagerTest.java   | 3 ---
 .../camel/processor/aggregator/AggregateSimplePredicateTest.java  | 3 ---
 .../camel/processor/aggregator/AggregateSimpleSizeTest.java       | 3 ---
 .../camel/processor/aggregator/AggregateSimpleTimeoutTest.java    | 3 ---
 .../processor/aggregator/AggregateThreadPoolProfileTest.java      | 3 ---
 .../camel/processor/aggregator/AggregateTimeoutManualTest.java    | 2 --
 .../camel/processor/aggregator/AggregateTimeoutOnlyTest.java      | 2 --
 .../apache/camel/processor/aggregator/AggregateTimeoutTest.java   | 3 ---
 .../aggregator/AggregateTimeoutWithExecutorServiceTest.java       | 2 --
 .../camel/processor/aggregator/AggregatorConcurrencyTest.java     | 3 ---
 .../camel/processor/aggregator/AggregatorExceptionHandleTest.java | 2 --
 .../processor/aggregator/AggregatorExceptionInPredicateTest.java  | 2 --
 .../org/apache/camel/processor/aggregator/AggregatorTest.java     | 3 ---
 .../apache/camel/processor/aggregator/AlbertoAggregatorTest.java  | 3 ---
 .../camel/processor/aggregator/BeanBeforeAggregateIssueTest.java  | 3 ---
 .../processor/aggregator/DistributedCompletionIntervalTest.java   | 2 --
 .../aggregator/DistributedConcurrentPerCorrelationKeyTest.java    | 3 ---
 .../aggregator/DistributedOptimisticLockFailingTest.java          | 3 ---
 .../apache/camel/processor/aggregator/DistributedTimeoutTest.java | 3 ---
 .../processor/aggregator/EnricherRouteNumberOfProcessorTest.java  | 3 ---
 .../processor/aggregator/SplitRouteNumberOfProcessorTest.java     | 3 ---
 .../async/AsyncDeadLetterChannelExecutorServiceRefTest.java       | 2 --
 .../apache/camel/processor/async/AsyncDeadLetterChannelTest.java  | 2 --
 .../camel/processor/async/AsyncDefaultErrorHandlerTest.java       | 2 --
 .../org/apache/camel/processor/async/AsyncEndpointCBRTest.java    | 3 ---
 .../processor/async/AsyncEndpointCustomAsyncInterceptorTest.java  | 3 ---
 .../camel/processor/async/AsyncEndpointCustomInterceptorTest.java | 2 --
 .../camel/processor/async/AsyncEndpointCustomRoutePolicyTest.java | 3 ---
 .../apache/camel/processor/async/AsyncEndpointDelayUoWTest.java   | 3 ---
 .../camel/processor/async/AsyncEndpointDualMulticastTest.java     | 3 ---
 .../processor/async/AsyncEndpointDualTopicLoadBalanceTest.java    | 3 ---
 .../apache/camel/processor/async/AsyncEndpointEnricherTest.java   | 3 ---
 .../processor/async/AsyncEndpointEventNotifierSendingTest.java    | 3 ---
 .../camel/processor/async/AsyncEndpointEventNotifierTest.java     | 3 ---
 .../async/AsyncEndpointFailOverLoadBalanceMixed2Test.java         | 3 ---
 .../async/AsyncEndpointFailOverLoadBalanceMixed3Test.java         | 3 ---
 .../async/AsyncEndpointFailOverLoadBalanceMixedTest.java          | 3 ---
 .../async/AsyncEndpointFailOverLoadBalanceOnlyAsyncTest.java      | 3 ---
 .../async/AsyncEndpointFailedAfterDeadLetterChannelTest.java      | 3 ---
 .../async/AsyncEndpointFailedAfterOnExceptionContinueTest.java    | 3 ---
 .../async/AsyncEndpointFailedAfterOnExceptionHandledTest.java     | 3 ---
 .../camel/processor/async/AsyncEndpointFailedAfterTest.java       | 3 ---
 .../async/AsyncEndpointFailureProcessorContinueTest.java          | 3 ---
 .../camel/processor/async/AsyncEndpointFailureProcessorTest.java  | 3 ---
 .../org/apache/camel/processor/async/AsyncEndpointFilterTest.java | 3 ---
 .../processor/async/AsyncEndpointIdempotentConsumerTest.java      | 3 ---
 .../org/apache/camel/processor/async/AsyncEndpointLoopTest.java   | 3 ---
 .../async/AsyncEndpointMulticastFineGrainedErrorHandlingTest.java | 3 ---
 .../apache/camel/processor/async/AsyncEndpointMulticastTest.java  | 3 ---
 .../apache/camel/processor/async/AsyncEndpointPipelineTest.java   | 3 ---
 .../org/apache/camel/processor/async/AsyncEndpointPolicyTest.java | 3 ---
 .../camel/processor/async/AsyncEndpointRecipientList2Test.java    | 3 ---
 .../camel/processor/async/AsyncEndpointRecipientList3Test.java    | 3 ---
 .../camel/processor/async/AsyncEndpointRecipientList4Test.java    | 3 ---
 .../processor/async/AsyncEndpointRecipientListBean3Test.java      | 3 ---
 .../processor/async/AsyncEndpointRecipientListBean4Test.java      | 3 ---
 .../camel/processor/async/AsyncEndpointRecipientListBeanTest.java | 3 ---
 .../AsyncEndpointRecipientListFineGrainedErrorHandlingTest.java   | 3 ---
 .../processor/async/AsyncEndpointRecipientListParallel2Test.java  | 3 ---
 .../processor/async/AsyncEndpointRecipientListParallel3Test.java  | 3 ---
 .../processor/async/AsyncEndpointRecipientListParallel4Test.java  | 3 ---
 .../processor/async/AsyncEndpointRecipientListParallel5Test.java  | 3 ---
 .../processor/async/AsyncEndpointRecipientListParallelTest.java   | 3 ---
 .../camel/processor/async/AsyncEndpointRecipientListTest.java     | 3 ---
 .../AsyncEndpointRedeliveryErrorHandlerNonBlockedDelay2Test.java  | 3 ---
 .../AsyncEndpointRedeliveryErrorHandlerNonBlockedDelay3Test.java  | 3 ---
 .../AsyncEndpointRedeliveryErrorHandlerNonBlockedDelayTest.java   | 3 ---
 .../processor/async/AsyncEndpointRoundRobinLoadBalanceTest.java   | 3 ---
 .../camel/processor/async/AsyncEndpointRoutingSlip2Test.java      | 3 ---
 .../camel/processor/async/AsyncEndpointRoutingSlip3Test.java      | 3 ---
 .../camel/processor/async/AsyncEndpointRoutingSlipBean2Test.java  | 3 ---
 .../camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java  | 3 ---
 .../async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java        | 3 ---
 .../camel/processor/async/AsyncEndpointRoutingSlipBeanTest.java   | 3 ---
 .../camel/processor/async/AsyncEndpointRoutingSlipTest.java       | 3 ---
 .../apache/camel/processor/async/AsyncEndpointSamplingTest.java   | 3 ---
 .../apache/camel/processor/async/AsyncEndpointSedaInOnlyTest.java | 3 ---
 .../org/apache/camel/processor/async/AsyncEndpointSedaTest.java   | 3 ---
 .../processor/async/AsyncEndpointSingleTopicLoadBalanceTest.java  | 3 ---
 .../async/AsyncEndpointSplitFineGrainedErrorHandlingTest.java     | 3 ---
 .../org/apache/camel/processor/async/AsyncEndpointSplitTest.java  | 3 ---
 .../async/AsyncEndpointSplitUseLatestAggregationStrategyTest.java | 3 ---
 .../org/apache/camel/processor/async/AsyncEndpointStopTest.java   | 3 ---
 .../camel/processor/async/AsyncEndpointSynchronousFalseTest.java  | 3 ---
 .../camel/processor/async/AsyncEndpointSynchronousTest.java       | 3 ---
 .../java/org/apache/camel/processor/async/AsyncEndpointTest.java  | 3 ---
 .../apache/camel/processor/async/AsyncEndpointTransformTest.java  | 3 ---
 .../camel/processor/async/AsyncEndpointTryCatchFinally2Test.java  | 3 ---
 .../camel/processor/async/AsyncEndpointTryCatchFinally3Test.java  | 3 ---
 .../camel/processor/async/AsyncEndpointTryCatchFinally4Test.java  | 3 ---
 .../camel/processor/async/AsyncEndpointTryCatchFinally5Test.java  | 3 ---
 .../camel/processor/async/AsyncEndpointTryCatchFinallyTest.java   | 3 ---
 .../apache/camel/processor/async/AsyncEndpointUoWFailedTest.java  | 3 ---
 .../org/apache/camel/processor/async/AsyncEndpointUoWTest.java    | 3 ---
 .../camel/processor/async/AsyncEndpointWithDelayerTest.java       | 3 ---
 .../camel/processor/async/AsyncEndpointWithHandleFaultTest.java   | 3 ---
 .../apache/camel/processor/async/AsyncEndpointWithJMXTest.java    | 3 ---
 .../camel/processor/async/AsyncEndpointWithStreamCachingTest.java | 3 ---
 .../camel/processor/async/AsyncEndpointWithTracingTest.java       | 3 ---
 .../async/AsyncFailureProcessorWithRedeliveryAndDelayTest.java    | 3 ---
 .../processor/async/AsyncFailureProcessorWithRedeliveryTest.java  | 3 ---
 .../org/apache/camel/processor/async/AsyncInOnlyEndpointTest.java | 3 ---
 .../test/java/org/apache/camel/processor/async/AsyncMDCTest.java  | 3 ---
 .../async/AsyncOnExceptionFailureProcessorWithRedeliveryTest.java | 3 ---
 .../processor/async/AsyncProcessorAwaitManagerInterruptTest.java  | 3 ---
 .../camel/processor/async/AsyncProcessorAwaitManagerTest.java     | 3 ---
 .../java/org/apache/camel/processor/async/AsyncProducerTest.java  | 3 ---
 .../org/apache/camel/processor/async/AsyncRouteWithErrorTest.java | 3 ---
 .../apache/camel/processor/async/AsyncSedaInOnlyEndpointTest.java | 3 ---
 .../org/apache/camel/processor/async/AsyncTwoEndpointTest.java    | 3 ---
 .../java/org/apache/camel/processor/async/MyAsyncComponent.java   | 3 ---
 .../java/org/apache/camel/processor/async/MyAsyncEndpoint.java    | 3 ---
 .../java/org/apache/camel/processor/async/MyAsyncProducer.java    | 3 ---
 .../processor/enricher/EnricherAggregateOnExceptionTest.java      | 3 ---
 .../processor/enricher/EnricherAsyncUnhandledExceptionTest.java   | 3 ---
 .../enricher/EnricherDefaultAggregationStrategyTest.java          | 3 ---
 .../java/org/apache/camel/processor/enricher/EnricherRefTest.java | 3 ---
 .../processor/enricher/PollEnricherAggregateOnExceptionTest.java  | 3 ---
 .../org/apache/camel/processor/enricher/PollEnricherRefTest.java  | 3 ---
 .../camel/processor/intercept/DualInterceptSimpleRouteTest.java   | 3 ---
 .../camel/processor/intercept/FromFileInterceptSendToIssue.java   | 2 --
 .../camel/processor/intercept/IntercepFromWithPredicateTest.java  | 3 ---
 .../apache/camel/processor/intercept/InterceptFromRouteTest.java  | 3 ---
 .../camel/processor/intercept/InterceptFromRouteTestSupport.java  | 3 ---
 .../camel/processor/intercept/InterceptFromWhenNoStopTest.java    | 3 ---
 .../apache/camel/processor/intercept/InterceptFromWhenTest.java   | 3 ---
 .../processor/intercept/InterceptFromWhenWithChoiceTest.java      | 3 ---
 .../intercept/InterceptFromWithPredicateAndProceedRouteTest.java  | 3 ---
 .../intercept/InterceptFromWithPredicateAndStopRouteTest.java     | 3 ---
 .../processor/intercept/InterceptFromWithPredicateRouteTest.java  | 3 ---
 .../camel/processor/intercept/InterceptFromWithStopRouteTest.java | 3 ---
 .../processor/intercept/InterceptFromWithoutProceedRouteTest.java | 3 ---
 .../intercept/InterceptSendToEndpointConditionalSkip2Test.java    | 2 --
 .../intercept/InterceptSendToEndpointConditionalSkip3Test.java    | 2 --
 .../intercept/InterceptSendToEndpointConditionalSkipTest.java     | 2 --
 .../processor/intercept/InterceptSendToEndpointDynamicTest.java   | 2 --
 .../processor/intercept/InterceptSendToEndpointInOnException.java | 3 ---
 .../camel/processor/intercept/InterceptSendToEndpointTest.java    | 2 --
 .../intercept/InterceptSendToEndpointWithParametersTest.java      | 3 ---
 .../processor/intercept/InterceptSendToEndpointWithStopTest.java  | 2 --
 .../camel/processor/intercept/InterceptSendToExceptionTest.java   | 3 ---
 .../camel/processor/intercept/InterceptSendToFaultTest.java       | 3 ---
 .../apache/camel/processor/intercept/InterceptSendToIssue.java    | 2 --
 .../camel/processor/intercept/InterceptSimpleRouteStopTest.java   | 3 ---
 .../camel/processor/intercept/InterceptSimpleRouteTest.java       | 3 ---
 .../processor/intercept/InterceptSimpleRouteWhenStopTest.java     | 3 ---
 .../camel/processor/intercept/InterceptSimpleRouteWhenTest.java   | 3 ---
 .../camel/processor/interceptor/AdviceWithAutoStartupTest.java    | 3 ---
 .../interceptor/AdviceWithMockEndpointsHavingParameterTest.java   | 3 ---
 .../camel/processor/interceptor/AdviceWithMockEndpointsTest.java  | 3 ---
 .../interceptor/AdviceWithMockEndpointsWithSkipTest.java          | 3 ---
 .../interceptor/AdviceWithMockMultipleEndpointsWithSkipTest.java  | 3 ---
 .../interceptor/AdviceWithRecipientListMockEndpointsTest.java     | 3 ---
 .../apache/camel/processor/interceptor/AdviceWithRouteIdTest.java | 3 ---
 .../org/apache/camel/processor/interceptor/AdviceWithTest.java    | 3 ---
 .../AdviceWithTwoRoutesContextScopedOnExceptionTest.java          | 3 ---
 .../processor/interceptor/AdviceWithTwoRoutesOnExceptionTest.java | 3 ---
 .../camel/processor/interceptor/AdviceWithTwoRoutesTest.java      | 3 ---
 .../interceptor/AuditInterceptorAsyncDelegateIssueTest.java       | 3 ---
 .../processor/interceptor/AuditInterceptorDelegateIssueTest.java  | 3 ---
 .../camel/processor/interceptor/DebugExceptionBreakpointTest.java | 3 ---
 .../processor/interceptor/DebugExceptionEventBreakpointTest.java  | 3 ---
 .../camel/processor/interceptor/DebugSingleStepConditionTest.java | 3 ---
 .../apache/camel/processor/interceptor/DebugSingleStepTest.java   | 3 ---
 .../java/org/apache/camel/processor/interceptor/DebugTest.java    | 3 ---
 .../processor/interceptor/InterceptorStrategyNotOrderedTest.java  | 3 ---
 .../processor/interceptor/InterceptorStrategyOrderedTest.java     | 3 ---
 .../apache/camel/processor/interceptor/NoStreamCachingTest.java   | 3 ---
 .../processor/onexception/DoCatchDirectDynamicRouteTest.java      | 3 ---
 .../onexception/DoCatchDirectRecipientListStreamingTest.java      | 3 ---
 .../processor/onexception/DoCatchDirectRecipientListTest.java     | 3 ---
 .../camel/processor/onexception/DoCatchDirectRouteTest.java       | 3 ---
 .../processor/onexception/ErrorOccurredInOnExceptionRoute.java    | 3 ---
 .../apache/camel/processor/onexception/OnCatchHandledTest.java    | 3 ---
 .../camel/processor/onexception/OnExceptionAfterRouteTest.java    | 3 ---
 .../OnExceptionAndDLCErrorHandlerIssueReverseTest.java            | 3 ---
 .../onexception/OnExceptionAndDLCErrorHandlerIssueTest.java       | 3 ---
 .../onexception/OnExceptionCallSubRouteNoErrorHandlerTest.java    | 3 ---
 .../processor/onexception/OnExceptionContinuePredicateTest.java   | 3 ---
 .../processor/onexception/OnExceptionContinueSubRouteTest.java    | 3 ---
 .../processor/onexception/OnExceptionContinueSubSubRouteTest.java | 3 ---
 .../camel/processor/onexception/OnExceptionContinueTest.java      | 3 ---
 .../onexception/OnExceptionContinueTwoPredicateTest.java          | 3 ---
 .../camel/processor/onexception/OnExceptionContinueTwoTest.java   | 3 ---
 .../OnExceptionGlobalAndDLCErrorHandlerIssueReverseTest.java      | 3 ---
 .../onexception/OnExceptionGlobalAndDLCErrorHandlerIssueTest.java | 3 ---
 .../processor/onexception/OnExceptionHandledAndContinueTest.java  | 3 ---
 .../camel/processor/onexception/OnExceptionHandledTest.java       | 3 ---
 .../processor/onexception/OnExceptionUseOriginalBodyTest.java     | 2 --
 .../processor/onexception/OnExceptionUseOriginalMessageTest.java  | 3 ---
 .../onexception/OnExceptionWithRouteAndContinueTest.java          | 3 ---
 .../camel/processor/onexception/OnExceptionsPerRouteTest.java     | 3 ---
 .../processor/onexception/RouteScopedOnExceptionSameTypeTest.java | 3 ---
 .../camel/processor/resequencer/ResequencerFileNameTest.java      | 3 ---
 .../processor/validation/DefaultValidationErrorHandlerTest.java   | 3 ---
 .../test/java/org/apache/camel/support/AttributedQNameTest.java   | 3 ---
 .../test/java/org/apache/camel/support/DefaultTimeoutMapTest.java | 3 ---
 .../java/org/apache/camel/support/RecordableInputStreamTest.java  | 3 ---
 .../test/java/org/apache/camel/support/RecordableReaderTest.java  | 3 ---
 .../test/java/org/apache/camel/support/ServiceSupportTest.java    | 3 ---
 .../camel/support/XMLTokenExpressionIteratorGroupingTest.java     | 3 ---
 .../src/test/java/org/apache/camel/util/AnotherExampleBean.java   | 3 ---
 .../test/java/org/apache/camel/util/CamelContextHelperTest.java   | 3 ---
 .../test/java/org/apache/camel/util/CaseInsensitiveMapTest.java   | 3 ---
 .../src/test/java/org/apache/camel/util/CollectionHelperTest.java | 3 ---
 .../java/org/apache/camel/util/CollectionStringBufferTest.java    | 3 ---
 .../src/test/java/org/apache/camel/util/EndpointHelperTest.java   | 3 ---
 .../src/test/java/org/apache/camel/util/ExchangeHelperTest.java   | 3 ---
 .../java/org/apache/camel/util/ExpressionListComparatorTest.java  | 3 ---
 camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java  | 3 ---
 camel-core/src/test/java/org/apache/camel/util/IOHelperTest.java  | 3 ---
 .../src/test/java/org/apache/camel/util/InetAddressUtilTest.java  | 3 ---
 .../src/test/java/org/apache/camel/util/KeyValueHolderTest.java   | 3 ---
 camel-core/src/test/java/org/apache/camel/util/LRUCacheTest.java  | 3 ---
 .../src/test/java/org/apache/camel/util/ObjectHelperTest.java     | 3 ---
 .../test/java/org/apache/camel/util/OrderedComparatorTest.java    | 3 ---
 .../src/test/java/org/apache/camel/util/OtherExampleBean.java     | 3 ---
 .../src/test/java/org/apache/camel/util/PackageHelperTest.java    | 3 ---
 .../java/org/apache/camel/util/PredicateAssertHelperTest.java     | 3 ---
 camel-core/src/test/java/org/apache/camel/util/TimeTest.java      | 3 ---
 .../src/test/java/org/apache/camel/util/URISupportTest.java       | 3 ---
 .../camel/util/concurrent/SubmitOrderedCompletionServiceTest.java | 3 ---
 .../camel/util/concurrent/SynchronousExecutorServiceTest.java     | 3 ---
 .../src/test/java/org/apache/camel/util/jndi/ExampleBean.java     | 3 ---
 camel-core/src/test/java/org/apache/camel/util/jndi/JndiTest.java | 3 ---
 .../java/org/apache/camel/component/ahc/ws/WsProducerTest.java    | 3 ---
 .../camel/component/ahc/ws/WsProducerUsingStreamingTest.java      | 3 ---
 .../java/org/apache/camel/component/ahc/ws/WssProducerTest.java   | 2 --
 .../apache/camel/component/ahc/HttpHeaderFilterStrategyTest.java  | 3 ---
 .../component/atmosphere/websocket/CamelWebSocketServlet.java     | 1 -
 .../main/java/org/apache/camel/component/atom/AtomProducer.java   | 2 --
 .../java/org/apache/camel/component/atom/UpdatedDateFilter.java   | 2 --
 .../main/java/org/apache/camel/component/feed/EntryFilter.java    | 2 --
 .../camel/component/atom/AtomHttpNoCamelParametersTest.java       | 3 ---
 .../apache/camel/component/atom/AtomPollingUnthrottledTest.java   | 3 ---
 .../test/java/org/apache/camel/component/atom/AtomRouteTest.java  | 3 ---
 .../java/org/apache/camel/component/aws/ec2/EC2Constants.java     | 1 -
 .../java/org/apache/camel/component/aws/kms/KMSConstants.java     | 1 -
 .../main/java/org/apache/camel/component/aws/mq/MQConstants.java  | 1 -
 .../main/java/org/apache/camel/component/aws/s3/S3Constants.java  | 1 -
 .../main/java/org/apache/camel/component/aws/sqs/SqsProducer.java | 1 -
 .../org/apache/camel/dataformat/barcode/BarcodeParameters.java    | 1 -
 .../camel/dataformat/barcode/BarcodeDataFormatCamelTest.java      | 1 -
 .../component/bean/validator/BeanValidatorConfigurationTest.java  | 3 ---
 .../camel/component/bean/validator/BeanValidatorRouteTest.java    | 3 ---
 .../bean/validator/BeanValidatorXMLConfigurationRouteTest.java    | 3 ---
 .../test/java/org/apache/camel/component/bean/validator/Car.java  | 3 ---
 .../test/java/org/apache/camel/dataformat/beanio/csv/CsvTest.java | 2 --
 .../dataformat/bindy/csv/BindyCarQuoteAndCommaDelimiterTest.java  | 3 ---
 .../apache/camel/dataformat/bindy/csv/BindyPatternLocaleTest.java | 3 ---
 .../apache/camel/dataformat/bindy/csv/BindyPipeDelimiterTest.java | 3 ---
 .../apache/camel/dataformat/bindy/csv/BindyTabSeparatorTest.java  | 3 ---
 .../camel/dataformat/bindy/model/simple/pipeline/MyData.java      | 3 ---
 .../apache/camel/dataformat/bindy/model/tab/PurchaseOrder.java    | 3 ---
 .../apache/camel/blueprint/CamelConsumerTemplateFactoryBean.java  | 2 --
 .../java/org/apache/camel/blueprint/CamelContextFactoryBean.java  | 2 --
 .../java/org/apache/camel/blueprint/CamelEndpointFactoryBean.java | 2 --
 .../camel/blueprint/CamelFluentProducerTemplateFactoryBean.java   | 2 --
 .../apache/camel/blueprint/CamelProducerTemplateFactoryBean.java  | 2 --
 .../apache/camel/blueprint/CamelRedeliveryPolicyFactoryBean.java  | 2 --
 .../org/apache/camel/blueprint/CamelThreadPoolFactoryBean.java    | 2 --
 .../org/apache/camel/blueprint/ContextScanRouteBuilderFinder.java | 2 --
 .../main/java/org/apache/camel/blueprint/ErrorHandlerType.java    | 2 --
 .../org/apache/camel/blueprint/PackageScanRouteBuilderFinder.java | 2 --
 .../java/org/apache/camel/component/boon/BoonConcurrentTest.java  | 3 ---
 .../org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java     | 3 ---
 .../camel/core/xml/AbstractCamelConsumerTemplateFactoryBean.java  | 2 --
 .../apache/camel/core/xml/AbstractCamelContextFactoryBean.java    | 2 --
 .../core/xml/AbstractCamelFluentProducerTemplateFactoryBean.java  | 2 --
 .../camel/core/xml/AbstractCamelProducerTemplateFactoryBean.java  | 2 --
 .../camel/core/xml/AbstractCamelRedeliveryPolicyFactoryBean.java  | 2 --
 .../apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java | 2 --
 .../apache/camel/core/xml/CamelPropertyPlaceholderDefinition.java | 2 --
 .../org/apache/camel/core/xml/CamelProxyFactoryDefinition.java    | 2 --
 .../org/apache/camel/core/xml/CamelServiceExporterDefinition.java | 2 --
 .../camel/core/xml/CamelStreamCachingStrategyDefinition.java      | 2 --
 .../component/crypto/cms/exception/CryptoCmsFormatException.java  | 1 -
 .../crypto/cms/exception/CryptoCmsInvalidKeyException.java        | 1 -
 .../exception/CryptoCmsNoKeyOrCertificateForAliasException.java   | 1 -
 .../exception/CryptoCmsSignatureInvalidContentHashException.java  | 1 -
 .../camel/converter/crypto/DefaultPGPPublicKeyAccessor.java       | 1 -
 .../camel/converter/crypto/DefaultPGPSecretKeyAccessor.java       | 1 -
 .../java/org/apache/camel/converter/crypto/PGPDataFormat.java     | 1 -
 .../org/apache/camel/converter/crypto/PGPKeyAccessDataFormat.java | 1 -
 .../org/apache/camel/converter/crypto/PGPPassphraseAccessor.java  | 1 -
 .../converter/crypto/PGPSecretKeyAndPrivateKeyAndUserId.java      | 1 -
 .../component/cxf/common/header/CxfHeaderFilterStrategy.java      | 2 --
 .../apache/camel/component/cxf/common/header/CxfHeaderHelper.java | 2 --
 .../component/cxf/common/header/SoapMessageHeaderFilter.java      | 2 --
 .../apache/camel/component/cxf/common/message/CxfConstants.java   | 2 --
 .../camel/component/cxf/common/message/CxfMessageMapper.java      | 2 --
 .../component/cxf/common/message/DefaultCxfMessageMapper.java     | 4 ----
 .../org/apache/camel/component/cxf/transport/CamelConduit.java    | 3 ---
 .../apache/camel/component/cxf/transport/CamelDestination.java    | 1 -
 .../camel/component/cxf/transport/CamelTransportConstants.java    | 3 ---
 .../camel/component/cxf/transport/CamelTransportFactory.java      | 3 ---
 .../src/main/java/org/apache/camel/component/cxf/CxfBinding.java  | 1 -
 .../src/main/java/org/apache/camel/component/cxf/CxfConsumer.java | 2 --
 .../src/main/java/org/apache/camel/component/cxf/CxfPayload.java  | 2 --
 .../src/main/java/org/apache/camel/component/cxf/CxfProducer.java | 2 --
 .../java/org/apache/camel/component/cxf/CxfSpringEndpoint.java    | 2 --
 .../java/org/apache/camel/component/cxf/DefaultCxfBinding.java    | 2 --
 .../org/apache/camel/component/cxf/HybridSourceDataBinding.java   | 2 --
 .../org/apache/camel/component/cxf/WSDLServiceFactoryBean.java    | 1 -
 .../org/apache/camel/component/cxf/converter/CxfConverter.java    | 2 --
 .../camel/component/cxf/converter/DelegatingXMLStreamReader.java  | 3 ---
 .../cxf/interceptors/ConfigureDocLitWrapperInterceptor.java       | 2 --
 .../java/org/apache/camel/component/cxf/jaxrs/CxfRsBinding.java   | 2 --
 .../camel/component/cxf/jaxrs/CxfRsHeaderFilterStrategy.java      | 4 ----
 .../org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java | 2 --
 .../org/apache/camel/component/cxf/jaxrs/SimpleCxfRsBinding.java  | 1 -
 .../cxf/CXFWsdlOnlyPayloadModeMultiPartNoSpringTest.java          | 2 --
 .../component/cxf/CxfConsumerPayloadFaultCauseEnabledTest.java    | 2 --
 .../apache/camel/component/cxf/CxfConsumerPayloadFaultTest.java   | 2 --
 .../test/java/org/apache/camel/component/cxf/CxfEndpointTest.java | 2 --
 .../component/cxf/CxfGreeterPayLoadWithFeatureRouterTest.java     | 2 --
 .../camel/component/cxf/CxfJavaOnlyCamelContextAwareTest.java     | 2 --
 .../apache/camel/component/cxf/CxfJavaOnlyPayloadModeTest.java    | 2 --
 .../camel/component/cxf/CxfMultipleConsumersSupportTest.java      | 3 ---
 .../component/cxf/CxfPayLoadMessageRouterAddressOverrideTest.java | 2 --
 .../apache/camel/component/cxf/CxfPayLoadMessageRouterTest.java   | 2 --
 .../org/apache/camel/component/cxf/CxfProducerOperationTest.java  | 3 ---
 .../apache/camel/component/cxf/CxfProducerProtocalHeaderTest.java | 3 ---
 .../test/java/org/apache/camel/component/cxf/CxfProducerTest.java | 3 ---
 .../org/apache/camel/component/cxf/DefaultCxfBindingTest.java     | 3 ---
 .../camel/component/cxf/LoggingInterceptorInMessageModeTest.java  | 4 ----
 .../java/org/apache/camel/component/cxf/ServiceClassRefTest.java  | 2 --
 .../component/cxf/converter/CxfPayLoadStreamCacheRouterTest.java  | 2 --
 .../apache/camel/component/cxf/jaxrs/CxfRsProducerHeaderTest.java | 1 -
 .../component/cxf/jaxrs/simplebinding/testbean/Customer.java      | 4 ----
 .../component/cxf/jaxrs/simplebinding/testbean/CustomerList.java  | 4 ----
 .../camel/component/cxf/jaxrs/simplebinding/testbean/Order.java   | 4 ----
 .../camel/component/cxf/jaxrs/simplebinding/testbean/Product.java | 4 ----
 .../org/apache/camel/component/cxf/jaxrs/testbean/Customer.java   | 4 ----
 .../camel/component/cxf/jaxrs/testbean/CustomerService.java       | 4 ----
 .../java/org/apache/camel/component/cxf/jaxrs/testbean/Order.java | 4 ----
 .../org/apache/camel/component/cxf/jaxrs/testbean/Product.java    | 4 ----
 .../camel/component/cxf/mtom/CxfMtomConsumerPayloadModeTest.java  | 6 ++----
 .../cxf/mtom/CxfMtomDisabledConsumerPayloadModeTest.java          | 8 +++-----
 .../cxf/mtom/CxfMtomDisabledProducerPayloadModeTest.java          | 1 -
 .../apache/camel/component/cxf/mtom/CxfMtomPOJOProducerTest.java  | 2 --
 .../camel/component/cxf/mtom/CxfMtomProducerPayloadModeTest.java  | 6 ++----
 .../camel/component/cxf/mtom/CxfMtomRouterPayloadMode12Test.java  | 2 --
 .../camel/component/cxf/mtom/CxfMtomRouterPayloadModeTest.java    | 2 --
 .../test/java/org/apache/camel/component/cxf/mtom/HelloImpl.java  | 1 -
 .../java/org/apache/camel/component/cxf/mtom/HelloImpl12.java     | 1 -
 .../java/org/apache/camel/component/cxf/mtom/MtomTestHelper.java  | 2 --
 .../component/cxf/soap/headers/CxfMessageHeadersRelayTest.java    | 2 --
 .../camel/component/cxf/spring/CxfEndpointBeanWithBusTest.java    | 2 --
 .../component/cxf/spring/FileToCxfMessageDataFormatTest.java      | 3 ---
 .../java/org/apache/camel/component/cxf/wsa/WSAddressingTest.java | 4 ----
 .../test/java/org/apache/camel/component/cxf/wsrm/WSRMTest.java   | 4 ----
 .../camel/component/cxf/wssecurity/client/UTPasswordCallback.java | 2 --
 .../camel/component/cxf/wssecurity/server/UTPasswordCallback.java | 2 --
 .../java/org/apache/camel/wsdl_first/PersonMultiPartImpl.java     | 2 --
 .../disruptor/DirectRequestReplyAndDisruptorInOnlyTest.java       | 3 ---
 .../camel/component/disruptor/DisruptorComplexInOutTest.java      | 3 ---
 .../disruptor/DisruptorConcurrentConsumersNPEIssueTest.java       | 3 ---
 .../component/disruptor/DisruptorConcurrentConsumersTest.java     | 3 ---
 .../apache/camel/component/disruptor/DisruptorConcurrentTest.java | 3 ---
 .../apache/camel/component/disruptor/DisruptorConfigureTest.java  | 3 ---
 .../camel/component/disruptor/DisruptorInOnlyChainedTest.java     | 3 ---
 .../org/apache/camel/component/disruptor/DisruptorInOnlyTest.java | 3 ---
 .../camel/component/disruptor/DisruptorInOutBigChainedTest.java   | 3 ---
 .../camel/component/disruptor/DisruptorInOutChainedTest.java      | 3 ---
 .../component/disruptor/DisruptorInOutChainedTimeoutTest.java     | 3 ---
 .../disruptor/DisruptorInOutChainedWithOnCompletionTest.java      | 3 ---
 .../org/apache/camel/component/disruptor/DisruptorInOutTest.java  | 3 ---
 .../disruptor/DisruptorInOutWithErrorDeadLetterChannelTest.java   | 3 ---
 .../camel/component/disruptor/DisruptorInOutWithErrorTest.java    | 3 ---
 .../camel/component/disruptor/DisruptorMultipleConsumersTest.java | 3 ---
 .../apache/camel/component/disruptor/DisruptorNoConsumerTest.java | 3 ---
 .../disruptor/DisruptorReconfigureWithBlockingProducer.java       | 3 ---
 .../component/disruptor/DisruptorRemoveRouteThenAddAgainTest.java | 3 ---
 .../apache/camel/component/disruptor/DisruptorRingBufferTest.java | 3 ---
 .../org/apache/camel/component/disruptor/DisruptorRouteTest.java  | 3 ---
 .../camel/component/disruptor/DisruptorTimeoutDisabledTest.java   | 3 ---
 .../apache/camel/component/disruptor/DisruptorTimeoutTest.java    | 3 ---
 .../component/disruptor/DisruptorWaitForTaskAsPropertyTest.java   | 3 ---
 .../component/disruptor/DisruptorWaitForTaskCompleteTest.java     | 3 ---
 .../disruptor/DisruptorWaitForTaskIfReplyExpectedTest.java        | 3 ---
 .../disruptor/DisruptorWaitForTaskNeverOnCompletionTest.java      | 3 ---
 .../camel/component/disruptor/DisruptorWaitForTaskNeverTest.java  | 3 ---
 .../disruptor/FileDisruptorShutdownCompleteAllTasksTest.java      | 3 ---
 .../disruptor/vm/DisruptorVmConcurrentConsumersTest.java          | 3 ---
 .../vm/DisruptorVmDifferentOptionsOnConsumerAndProducerTest.java  | 3 ---
 .../component/disruptor/vm/DisruptorVmInOnlyChainedTest.java      | 3 ---
 .../camel/component/disruptor/vm/DisruptorVmInOnlyTest.java       | 3 ---
 .../camel/component/disruptor/vm/DisruptorVmInOutChainedTest.java | 3 ---
 .../disruptor/vm/DisruptorVmInOutChainedTimeoutTest.java          | 3 ---
 .../apache/camel/component/disruptor/vm/DisruptorVmInOutTest.java | 3 ---
 .../component/disruptor/vm/DisruptorVmInOutWithErrorTest.java     | 3 ---
 .../disruptor/vm/DisruptorVmMultipleContextsStartStopTest.java    | 3 ---
 .../apache/camel/component/disruptor/vm/DisruptorVmQueueTest.java | 3 ---
 .../camel/component/disruptor/vm/DisruptorVmTimeoutIssueTest.java | 3 ---
 .../camel/component/disruptor/vm/DisruptorVmUseSameQueueTest.java | 3 ---
 .../disruptor/vm/DisruptorVmWaitForTaskCompleteTest.java          | 3 ---
 .../disruptor/vm/DisruptorVmWaitForTaskIfReplyExpectedTest.java   | 3 ---
 .../component/disruptor/vm/DisruptorVmWaitForTaskNewerTest.java   | 3 ---
 .../org/apache/camel/component/dozer/example/abc/ABCOrder.java    | 1 -
 .../apache/camel/component/dozer/example/abc/ObjectFactory.java   | 1 -
 .../org/apache/camel/component/dozer/example/xyz/LineItem.java    | 1 -
 .../org/apache/camel/component/dozer/example/xyz/XYZOrder.java    | 1 -
 .../main/java/org/apache/camel/component/ejb/EjbComponent.java    | 2 --
 .../main/java/org/apache/camel/component/ejb/EjbRegistryBean.java | 2 --
 .../java/org/apache/camel/component/ejb/GreaterCamelBeanTest.java | 3 ---
 .../apache/camel/component/ejb/GreaterCamelEjbPropertiesTest.java | 3 ---
 .../java/org/apache/camel/component/ejb/GreaterCamelEjbTest.java  | 3 ---
 .../src/test/java/org/apache/camel/component/ejb/GreaterImpl.java | 3 ---
 .../test/java/org/apache/camel/component/ejb/GreaterLocal.java    | 3 ---
 .../src/test/java/org/apache/camel/component/ejb/GreaterTest.java | 3 ---
 .../org/apache/camel/component/ejb/SpringGreaterCamelEjbTest.java | 3 ---
 .../camel/component/elasticsearch/ElasticsearchOperation.java     | 1 -
 .../org/apache/camel/component/flatpack/FlatpackComponent.java    | 2 --
 .../org/apache/camel/component/flatpack/FlatpackConverter.java    | 3 ---
 .../org/apache/camel/component/flatpack/FlatpackProducer.java     | 3 ---
 .../org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java  | 2 --
 .../java/org/apache/camel/component/flatpack/CharsetTest.java     | 3 ---
 .../camel/component/flatpack/DelimitedErrorWithUnmarshalTest.java | 3 ---
 .../java/org/apache/camel/component/flatpack/DelimitedTest.java   | 3 ---
 .../camel/component/flatpack/DelimitedWithNoDescriptorTest.java   | 3 ---
 .../camel/component/flatpack/DelimitedWithUnmarshalTest.java      | 3 ---
 .../apache/camel/component/flatpack/FixedLengthAllowLongTest.java | 3 ---
 .../component/flatpack/FixedLengthAllowShortAndLongTest.java      | 3 ---
 .../camel/component/flatpack/FixedLengthAllowShortTest.java       | 3 ---
 .../java/org/apache/camel/component/flatpack/FixedLengthTest.java | 3 ---
 .../camel/component/flatpack/FixedLengthWithUnmarshalTest.java    | 3 ---
 .../org/apache/camel/component/flatpack/HeaderAndTrailerTest.java | 3 ---
 .../apache/camel/component/flatpack/InvalidFixedLengthTest.java   | 3 ---
 .../java/org/apache/camel/component/flatpack/NoSplitRowsTest.java | 2 --
 .../org/apache/camel/component/flatpack/StreamedSplitTest.java    | 3 ---
 .../org/apache/camel/component/flatpack/XMLNoSplitRowsTest.java   | 2 --
 .../org/apache/camel/component/flatpack/XMLSplitRowsTest.java     | 2 --
 .../component/freemarker/FreemarkerBodyAsDomainObjectTest.java    | 2 --
 .../camel/component/freemarker/FreemarkerConcurrentTest.java      | 3 ---
 .../camel/component/freemarker/FreemarkerSetHeaderTest.java       | 3 ---
 .../component/freemarker/FreemarkerTemplateInHeaderTest.java      | 3 ---
 .../org/apache/camel/component/file/remote/FtpsComponent.java     | 2 --
 .../org/apache/camel/component/file/remote/FtpsConfiguration.java | 2 --
 .../org/apache/camel/component/file/remote/FtpsOperations.java    | 2 --
 .../file/remote/RemoteFilePollingConsumerPollStrategy.java        | 2 --
 .../file/remote/FileToFtpsExplicitSSLWithClientAuthTest.java      | 2 --
 .../file/remote/FileToFtpsExplicitSSLWithoutClientAuthTest.java   | 2 --
 .../file/remote/FileToFtpsExplicitTLSWithClientAuthTest.java      | 2 --
 .../file/remote/FileToFtpsExplicitTLSWithoutClientAuthTest.java   | 2 --
 .../file/remote/FileToFtpsImplicitSSLWithClientAuthTest.java      | 2 --
 .../file/remote/FileToFtpsImplicitSSLWithoutClientAuthTest.java   | 2 --
 .../file/remote/FileToFtpsImplicitTLSWithClientAuthTest.java      | 2 --
 .../file/remote/FileToFtpsImplicitTLSWithoutClientAuthTest.java   | 2 --
 .../FileToFtpsWithCustomKeyAndTrustStorePropertiesTest.java       | 2 --
 .../file/remote/FileToFtpsWithCustomTrustStorePropertiesTest.java | 2 --
 .../file/remote/FileToFtpsWithDefaultSettingsIPV6Test.java        | 2 --
 .../component/file/remote/FileToFtpsWithDefaultSettingsTest.java  | 2 --
 .../file/remote/FileToFtpsWithFtpClientConfigRefTest.java         | 2 --
 .../component/file/remote/FromFilePercentSignInPasswordTest.java  | 3 ---
 .../remote/FromFilePercentSignInPasswordUserInfoEncodedTest.java  | 3 ---
 .../file/remote/FromFilePercentSignInPasswordUserInfoTest.java    | 3 ---
 .../file/remote/FromFileToFtpDefaultRootRenameStrategyTest.java   | 3 ---
 .../camel/component/file/remote/FromFileToFtpDeleteTest.java      | 3 ---
 .../camel/component/file/remote/FromFileToFtpNotStepwiseTest.java | 3 ---
 .../org/apache/camel/component/file/remote/FromFileToFtpTest.java | 3 ---
 .../component/file/remote/FromFileTransferLoggingLevelTest.java   | 3 ---
 .../file/remote/FromFileTransferLoggingLevelVerboseTest.java      | 3 ---
 .../camel/component/file/remote/FromFtpActivePortRangeTest.java   | 3 ---
 .../camel/component/file/remote/FromFtpClientConfigRefTest.java   | 3 ---
 .../camel/component/file/remote/FromFtpClientDataTimeoutTest.java | 3 ---
 .../camel/component/file/remote/FromFtpClientSoTimeout2Test.java  | 3 ---
 .../camel/component/file/remote/FromFtpClientSoTimeoutTest.java   | 3 ---
 .../file/remote/FromFtpDoNotDeleteFileIfProcessFailsTest.java     | 3 ---
 ...romFtpNoEndpointPathRelativeMoveToAbsoluteNotStepwiseTest.java | 3 ---
 .../remote/FromFtpNoEndpointPathRelativeMoveToAbsoluteTest.java   | 3 ---
 .../camel/component/file/remote/FromFtpPassiveModeTest.java       | 3 ---
 .../file/remote/FromFtpRecursiveNoopNotStepwiseTest.java          | 3 ---
 .../camel/component/file/remote/FromFtpRecursiveNoopTest.java     | 3 ---
 .../file/remote/FromFtpServerLanguageCodeAndTimeoutTest.java      | 3 ---
 .../component/file/remote/FromFtpServerLanguageCodeTest.java      | 3 ---
 ...SimpleNoEndpointPathRelativeMoveToAbsoluteNotStepwiseTest.java | 3 ---
 .../FromFtpSimpleNoEndpointPathRelativeMoveToAbsoluteTest.java    | 3 ---
 ...SimpleNoEndpointPathRelativeMoveToRelativeNotStepwiseTest.java | 3 ---
 .../FromFtpSimpleNoEndpointPathRelativeMoveToRelativeTest.java    | 3 ---
 .../FromFtpSimpleRelativeMoveToAbsoluteNotStepwiseTest.java       | 3 ---
 .../file/remote/FromFtpSimpleRelativeMoveToAbsoluteTest.java      | 3 ---
 .../FromFtpSimpleRelativeMoveToRelativeNotStepwiseTest.java       | 3 ---
 .../file/remote/FromFtpSimpleRelativeMoveToRelativeTest.java      | 3 ---
 .../file/remote/FromFtpSimulateNetworkIssueRecoverTest.java       | 2 --
 .../camel/component/file/remote/FromFtpThirdPoolOkTest.java       | 3 ---
 .../org/apache/camel/component/file/remote/FromFtpToMockTest.java | 3 ---
 .../camel/component/file/remote/FtpBrowsableEndpointTest.java     | 3 ---
 .../apache/camel/component/file/remote/FtpConnectTimeoutTest.java | 3 ---
 .../camel/component/file/remote/FtpConsumerAbsolutePathTest.java  | 3 ---
 .../camel/component/file/remote/FtpConsumerAsyncStressTest.java   | 3 ---
 .../camel/component/file/remote/FtpConsumerAutoCreateTest.java    | 3 ---
 .../camel/component/file/remote/FtpConsumerBodyAsStringTest.java  | 3 ---
 .../file/remote/FtpConsumerDoneFileNameFixedStepwiseTest.java     | 3 ---
 .../component/file/remote/FtpConsumerDoneFileNameFixedTest.java   | 3 ---
 .../file/remote/FtpConsumerDoneFileNameStepwiseTest.java          | 3 ---
 .../camel/component/file/remote/FtpConsumerDoneFileNameTest.java  | 3 ---
 .../component/file/remote/FtpConsumerDualDoneFileNameTest.java    | 3 ---
 .../camel/component/file/remote/FtpConsumerFileSplitTest.java     | 3 ---
 .../component/file/remote/FtpConsumerIPV6BodyAsStringTest.java    | 3 ---
 .../remote/FtpConsumerLocalWorkDirectoryAsAbsolutePathTest.java   | 3 ---
 .../file/remote/FtpConsumerLocalWorkDirectoryDirectTest.java      | 3 ---
 .../component/file/remote/FtpConsumerLocalWorkDirectoryTest.java  | 3 ---
 .../remote/FtpConsumerLocalWorkDirectoryWorkOnPayloadTest.java    | 3 ---
 .../component/file/remote/FtpConsumerMaxMessagesPerPollTest.java  | 3 ---
 .../component/file/remote/FtpConsumerMultipleDirectoriesTest.java | 3 ---
 .../file/remote/FtpConsumerNotEagerMaxMessagesPerPollTest.java    | 3 ---
 .../component/file/remote/FtpConsumerResumeDownloadTest.java      | 3 ---
 .../component/file/remote/FtpConsumerWithNoFileOptionTest.java    | 2 --
 .../file/remote/FtpNoReconnectAttemptUnknownHostTest.java         | 3 ---
 .../camel/component/file/remote/FtpProducerConcurrentTest.java    | 2 --
 .../camel/component/file/remote/FtpProducerDoneFileNameTest.java  | 3 ---
 .../file/remote/FtpProducerFileExistAppendNoFileBeforeTest.java   | 3 ---
 .../component/file/remote/FtpProducerFileExistAppendTest.java     | 3 ---
 .../camel/component/file/remote/FtpProducerFileExistFailTest.java | 3 ---
 .../component/file/remote/FtpProducerFileExistIgnoreTest.java     | 3 ---
 .../file/remote/FtpProducerFileExistOverrideNoFileBeforeTest.java | 3 ---
 ...cerFileExistOverrideNotEagerDeleteTargetFileTwoUploadTest.java | 3 ---
 .../component/file/remote/FtpProducerFileExistOverrideTest.java   | 3 ---
 .../file/remote/FtpProducerFileExistOverrideTwoUploadTest.java    | 3 ---
 .../component/file/remote/FtpProducerFileFastExistFailTest.java   | 3 ---
 .../component/file/remote/FtpProducerRootFileExistFailTest.java   | 3 ---
 .../component/file/remote/FtpProducerTempFileExistIssueTest.java  | 3 ---
 .../file/remote/FtpReconnectAttemptServerStoppedTest.java         | 3 ---
 .../component/file/remote/FtpReconnectAttemptUnknownHostTest.java | 3 ---
 .../camel/component/file/remote/FtpRecursiveDepth2Test.java       | 3 ---
 .../camel/component/file/remote/FtpRecursiveDepth3Test.java       | 3 ---
 .../apache/camel/component/file/remote/FtpRecursiveDepthTest.java | 3 ---
 .../camel/component/file/remote/FtpSimpleConsumeAbsoluteTest.java | 3 ---
 ...impleConsumeDirectoryParseWithAbsoluteDepthNoStepwiseTest.java | 3 ---
 .../file/remote/FtpSimpleConsumeStreamingPartialReadTest.java     | 3 ---
 .../component/file/remote/FtpSimpleConsumeStreamingTest.java      | 3 ---
 .../remote/FtpSimpleConsumeStreamingWithMultipleFilesTest.java    | 3 ---
 .../remote/FtpsServerExplicitSSLWithClientAuthTestSupport.java    | 2 --
 .../remote/FtpsServerExplicitSSLWithoutClientAuthTestSupport.java | 2 --
 .../remote/FtpsServerExplicitTLSWithClientAuthTestSupport.java    | 2 --
 .../remote/FtpsServerExplicitTLSWithoutClientAuthTestSupport.java | 2 --
 .../remote/FtpsServerImplicitSSLWithClientAuthTestSupport.java    | 2 --
 .../remote/FtpsServerImplicitSSLWithoutClientAuthTestSupport.java | 2 --
 .../remote/FtpsServerImplicitTLSWithClientAuthTestSupport.java    | 2 --
 .../remote/FtpsServerImplicitTLSWithoutClientAuthTestSupport.java | 2 --
 .../apache/camel/component/file/remote/FtpsServerTestSupport.java | 2 --
 .../file/remote/RecipientListErrorHandlingIssueTest.java          | 3 ---
 .../apache/camel/component/file/remote/UriConfigurationTest.java  | 3 ---
 .../apache/camel/component/file/remote/sftp/SftpChmodTest.java    | 3 ---
 .../camel/component/file/remote/sftp/SftpConsumeTemplateTest.java | 3 ---
 .../component/file/remote/sftp/SftpConsumerAutoCreateTest.java    | 3 ---
 .../camel/component/file/remote/sftp/SftpProduceTempFileTest.java | 3 ---
 .../file/remote/sftp/SftpProducerFileWithPathNoStepwiseTest.java  | 3 ---
 .../component/file/remote/sftp/SftpProducerFileWithPathTest.java  | 3 ---
 .../camel/component/file/remote/sftp/SftpServerTestSupport.java   | 3 ---
 .../camel/component/file/remote/sftp/SftpSetCipherTest.java       | 3 ---
 .../file/remote/sftp/SftpSimpleConsumeNotStepwiseTest.java        | 3 ---
 .../remote/sftp/SftpSimpleConsumeRecursiveNotStepwiseTest.java    | 3 ---
 .../file/remote/sftp/SftpSimpleConsumeRecursiveTest.java          | 3 ---
 .../remote/sftp/SftpSimpleConsumeStreamingPartialReadTest.java    | 2 --
 .../file/remote/sftp/SftpSimpleConsumeStreamingTest.java          | 3 ---
 .../sftp/SftpSimpleConsumeStreamingWithMultipleFilesTest.java     | 3 ---
 .../camel/component/file/remote/sftp/SftpSimpleConsumeTest.java   | 3 ---
 .../component/file/remote/sftp/SftpSimpleIPV6ConsumeTest.java     | 3 ---
 .../file/remote/sftp/SftpSimpleProduceDisconnectTest.java         | 3 ---
 .../file/remote/sftp/SftpSimpleProduceNotStepwiseTest.java        | 3 ---
 .../camel/component/file/remote/sftp/SftpSimpleProduceTest.java   | 3 ---
 .../camel/component/geocoder/http/AuthenticationMethod.java       | 2 --
 .../java/org/apache/camel/language/groovy/GroovyExpression.java   | 3 ---
 .../java/org/apache/camel/language/groovy/GroovyLanguage.java     | 3 ---
 .../org/apache/camel/language/groovy/GroovyExpressionTest.java    | 3 ---
 .../org/apache/camel/language/groovy/GroovyInvokeMethodTest.java  | 3 ---
 .../java/org/apache/camel/language/groovy/GroovyLanguageTest.java | 3 ---
 .../apache/camel/language/groovy/GroovySetFixedHeaderTest.java    | 3 ---
 .../org/apache/camel/language/groovy/GroovySetHeaderTest.java     | 3 ---
 .../org/apache/camel/language/groovy/LanguageGroovyRouteTest.java | 3 ---
 .../java/org/apache/camel/processor/groovy/GroovyFilterTest.java  | 3 ---
 .../org/apache/camel/processor/groovy/GroovySumFilterTest.java    | 3 ---
 .../apache/camel/processor/groovy/InlinedGroovyScriptTest.java    | 3 ---
 .../java/org/apache/camel/component/gson/GsonConcurrentTest.java  | 3 ---
 .../apache/camel/component/gson/SpringGsonJsonDataFormatTest.java | 3 ---
 .../component/hazelcast/HazelcastSedaConcurrentConsumersTest.java | 1 -
 .../java/org/apache/camel/component/hl7/HL7XmlDataFormatTest.java | 3 ---
 .../src/main/java/org/apache/camel/http/common/HttpMessage.java   | 3 ---
 .../org/apache/camel/component/http4/HttpClientConfigurer.java    | 2 --
 .../main/java/org/apache/camel/component/http4/HttpComponent.java | 2 --
 .../main/java/org/apache/camel/component/http4/HttpConstants.java | 3 ---
 .../org/apache/camel/component/http4/HttpPollingConsumer.java     | 2 --
 .../main/java/org/apache/camel/component/http4/HttpProducer.java  | 3 ---
 .../test/java/org/apache/camel/component/http4/BaseHttpTest.java  | 4 ----
 .../test/java/org/apache/camel/component/http4/BaseHttpsTest.java | 4 ----
 .../org/apache/camel/component/http4/HttpAuthenticationTest.java  | 4 ----
 .../test/java/org/apache/camel/component/http4/HttpBodyTest.java  | 4 ----
 .../org/apache/camel/component/http4/HttpBridgeEndpointTest.java  | 4 ----
 .../org/apache/camel/component/http4/HttpCamelHeadersTest.java    | 4 ----
 .../java/org/apache/camel/component/http4/HttpCharsetTest.java    | 4 ----
 .../apache/camel/component/http4/HttpClientConfigurerTest.java    | 3 ---
 .../org/apache/camel/component/http4/HttpCompressionTest.java     | 4 ----
 .../java/org/apache/camel/component/http4/HttpConcurrentTest.java | 3 ---
 .../apache/camel/component/http4/HttpDefaultPortNumberTest.java   | 3 ---
 .../apache/camel/component/http4/HttpDisableStreamCacheTest.java  | 4 ----
 .../http4/HttpEndpointOptionsNotChangeComponentTest.java          | 2 --
 .../camel/component/http4/HttpHeaderFilterStrategyTest.java       | 3 ---
 .../camel/component/http4/HttpInvalidConfigurationTest.java       | 2 --
 .../component/http4/HttpInvalidHttpClientConfigurationTest.java   | 2 --
 .../java/org/apache/camel/component/http4/HttpMethodsTest.java    | 4 ----
 .../camel/component/http4/HttpNoConnectionRedeliveryTest.java     | 3 ---
 .../org/apache/camel/component/http4/HttpNoConnectionTest.java    | 3 ---
 .../test/java/org/apache/camel/component/http4/HttpPathTest.java  | 4 ----
 .../org/apache/camel/component/http4/HttpPollingConsumerTest.java | 4 ----
 .../camel/component/http4/HttpProducerConnectionCloseTest.java    | 2 --
 .../component/http4/HttpProducerExplicitConnectionCloseTest.java  | 2 --
 .../camel/component/http4/HttpProducerSelectMethodTest.java       | 2 --
 .../component/http4/HttpProducerWithSystemPropertiesTest.java     | 4 ----
 .../org/apache/camel/component/http4/HttpProxyServerTest.java     | 4 ----
 .../test/java/org/apache/camel/component/http4/HttpQueryTest.java | 4 ----
 .../apache/camel/component/http4/HttpReferenceParameterTest.java  | 2 --
 .../java/org/apache/camel/component/http4/HttpSOTimeoutTest.java  | 4 ----
 .../org/apache/camel/component/http4/HttpServerTestSupport.java   | 2 --
 .../camel/component/http4/HttpThrowExceptionOnFailureTest.java    | 4 ----
 .../apache/camel/component/http4/HttpWithHttpUriHeaderTest.java   | 4 ----
 .../org/apache/camel/component/http4/HttpsAuthenticationTest.java | 4 ----
 .../test/java/org/apache/camel/component/http4/HttpsGetTest.java  | 4 ----
 .../org/apache/camel/component/http4/HttpsServerTestSupport.java  | 4 ----
 .../component/http4/handler/AuthenticationValidationHandler.java  | 4 ----
 .../camel/component/http4/handler/BasicValidationHandler.java     | 4 ----
 .../camel/component/http4/handler/DelayValidationHandler.java     | 4 ----
 .../camel/component/http4/handler/HeaderValidationHandler.java    | 4 ----
 .../http4/handler/ProxyAuthenticationValidationHandler.java       | 4 ----
 .../main/java/org/apache/camel/component/irc/IrcComponent.java    | 2 --
 .../src/main/java/org/apache/camel/component/irc/IrcLogger.java   | 2 --
 .../test/java/org/apache/camel/component/irc/CodehausIrcChat.java | 3 ---
 .../org/apache/camel/component/irc/IrcMultiChannelRouteTest.java  | 3 ---
 .../test/java/org/apache/camel/component/irc/IrcOnReplyTest.java  | 3 ---
 .../test/java/org/apache/camel/component/irc/IrcPrivmsgTest.java  | 3 ---
 .../test/java/org/apache/camel/component/irc/IrcRouteTest.java    | 3 ---
 .../org/apache/camel/component/jackson/JacksonConcurrentTest.java | 3 ---
 .../camel/component/jackson/SpringJacksonEnableFeatureTest.java   | 3 ---
 .../camel/component/jackson/SpringJacksonJsonDataFormatTest.java  | 3 ---
 .../component/jackson/SpringJacksonMarshalUnmarshalListTest.java  | 3 ---
 .../apache/camel/component/jacksonxml/JacksonConcurrentTest.java  | 3 ---
 .../component/jacksonxml/SpringJacksonEnableFeatureTest.java      | 3 ---
 .../component/jacksonxml/SpringJacksonJsonDataFormatTest.java     | 3 ---
 .../jacksonxml/SpringJacksonMarshalUnmarshalListTest.java         | 3 ---
 .../src/main/java/org/apache/camel/component/jasypt/Main.java     | 3 ---
 .../camel/component/jasypt/BlueprintJasyptProperties2Test.java    | 3 ---
 .../camel/component/jasypt/BlueprintJasyptProperties3Test.java    | 3 ---
 .../camel/component/jasypt/BlueprintJasyptPropertiesTest.java     | 3 ---
 .../org/apache/camel/component/jasypt/JasyptPropertiesTest.java   | 3 ---
 .../src/test/java/org/apache/camel/component/jasypt/MainTest.java | 3 ---
 .../jasypt/SpringJasyptBridgePropertiesAutowireTest.java          | 3 ---
 .../camel/component/jasypt/SpringJasyptBridgePropertiesTest.java  | 3 ---
 .../camel/component/jasypt/SpringJasyptProperties2Test.java       | 3 ---
 .../apache/camel/component/jasypt/SpringJasyptPropertiesTest.java | 3 ---
 .../org/apache/camel/converter/jaxb/FallbackTypeConverter.java    | 3 ---
 .../main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java | 2 --
 .../java/org/apache/camel/converter/jaxb/NonXmlCharFilterer.java  | 1 -
 .../java/org/apache/camel/converter/jaxb/address/Address.java     | 1 -
 .../org/apache/camel/converter/jaxb/address/ObjectFactory.java    | 1 -
 .../org/apache/camel/converter/jaxb/person/ObjectFactory.java     | 1 -
 .../test/java/org/apache/camel/converter/jaxb/person/Person.java  | 1 -
 .../java/org/apache/camel/example/DataFormatComponentTest.java    | 3 ---
 .../java/org/apache/camel/example/DataFormatConcurrentTest.java   | 3 ---
 .../test/java/org/apache/camel/example/DataFormatDataSetTest.java | 3 ---
 .../src/test/java/org/apache/camel/example/DataFormatTest.java    | 3 ---
 .../camel/example/ExplicitEncodingAndXMLCharFilteringTest.java    | 3 ---
 .../java/org/apache/camel/example/ExplicitFileEncodingTest.java   | 3 ---
 .../test/java/org/apache/camel/example/InvalidOrderException.java | 3 ---
 .../src/test/java/org/apache/camel/example/JAXBConvertTest.java   | 3 ---
 .../org/apache/camel/example/JaxbConcurrentDataFormatTest.java    | 3 ---
 .../src/test/java/org/apache/camel/example/PurchaseOrder.java     | 3 ---
 .../java/org/apache/camel/example/RouteWithErrorHandlerTest.java  | 3 ---
 .../test/java/org/apache/camel/example/SpringDataFormatTest.java  | 3 ---
 .../apache/camel/example/SpringDataFormatWithEncodingTest.java    | 3 ---
 .../SpringDataFormatWithMarshalAndUnmarshalUsingRefTest.java      | 3 ---
 ...pringDataFormatWithMarshalAndUnmarshalUsingSpringBeanTest.java | 3 ---
 .../src/test/java/org/apache/camel/example/UnmarshalTest.java     | 3 ---
 .../src/test/java/org/apache/camel/foo/bar/ObjectFactory.java     | 1 -
 .../src/test/java/org/apache/camel/foo/bar/PersonType.java        | 1 -
 .../src/main/java/org/apache/camel/component/jcr/JcrConsumer.java | 2 --
 .../component/jcr/JcrRouteDifferentWorkspaceTestSupport.java      | 1 -
 .../java/org/apache/camel/component/jcr/JcrRouteTestSupport.java  | 2 --
 .../main/java/org/apache/camel/component/jdbc/JdbcComponent.java  | 3 ---
 .../main/java/org/apache/camel/component/jdbc/JdbcProducer.java   | 3 ---
 .../test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java  | 1 -
 .../apache/camel/component/jetty/CamelContinuationServlet.java    | 2 --
 .../org/apache/camel/component/jetty/DefaultJettyHttpBinding.java | 3 ---
 .../java/org/apache/camel/component/jetty/JettyConverter.java     | 3 ---
 .../java/org/apache/camel/component/jetty/JettyHttpBinding.java   | 2 --
 .../java/org/apache/camel/component/jetty/JettyHttpComponent.java | 2 --
 .../java/org/apache/camel/component/jetty/JettyHttpEndpoint.java  | 3 ---
 .../java/org/apache/camel/component/jetty/JettyHttpProducer.java  | 3 ---
 .../camel/component/jetty/ConvertPayloadToInputStreamTest.java    | 3 ---
 .../apache/camel/component/jetty/HttpAuthMethodPriorityTest.java  | 3 ---
 .../component/jetty/HttpBasicAuthComponentConfiguredTest.java     | 3 ---
 .../java/org/apache/camel/component/jetty/HttpBasicAuthTest.java  | 3 ---
 .../java/org/apache/camel/component/jetty/HttpConverterTest.java  | 3 ---
 .../apache/camel/component/jetty/HttpFilterCamelHeadersTest.java  | 3 ---
 .../camel/component/jetty/HttpFilterNoCamelHeadersTest.java       | 3 ---
 .../component/jetty/HttpOperationsFailedExceptionUriTest.java     | 3 ---
 .../org/apache/camel/component/jetty/HttpPollingConsumerTest.java | 3 ---
 .../org/apache/camel/component/jetty/HttpProducerByteTest.java    | 3 ---
 .../apache/camel/component/jetty/HttpProducerConcurrentTest.java  | 2 --
 .../camel/component/jetty/HttpProducerConnectionCloseTest.java    | 3 ---
 .../camel/component/jetty/HttpProducerJMXBeansIssueTest.java      | 3 ---
 .../camel/component/jetty/HttpProducerOkStatusCodeRangeTest.java  | 3 ---
 .../apache/camel/component/jetty/HttpProducerQueryParamTest.java  | 3 ---
 .../apache/camel/component/jetty/HttpProducerSOTimeoutTest.java   | 2 --
 .../apache/camel/component/jetty/HttpRedirectNoLocationTest.java  | 3 ---
 .../java/org/apache/camel/component/jetty/HttpRedirectTest.java   | 3 ---
 .../jetty/HttpReturnDataNotInputStreamConvertableTest.java        | 3 ---
 .../org/apache/camel/component/jetty/HttpReturnFaultTest.java     | 3 ---
 .../test/java/org/apache/camel/component/jetty/HttpRouteTest.java | 3 ---
 .../java/org/apache/camel/component/jetty/HttpSendFileTest.java   | 3 ---
 .../camel/component/jetty/HttpStreamCacheFileIssueTest.java       | 3 ---
 .../camel/component/jetty/HttpStreamCacheFileResponseTest.java    | 3 ---
 .../camel/component/jetty/HttpStreamCacheFileStopIssueTest.java   | 3 ---
 .../org/apache/camel/component/jetty/HttpStreamCacheFileTest.java | 3 ---
 .../org/apache/camel/component/jetty/HttpTwoEndpointTest.java     | 3 ---
 .../org/apache/camel/component/jetty/HttpTwoServerPortsTest.java  | 3 ---
 .../camel/component/jetty/JettyCallHttpThenExceptionTest.java     | 3 ---
 .../camel/component/jetty/JettyContinuationDisabledTest.java      | 3 ---
 .../component/jetty/JettyEndpointContinuationDisabledTest.java    | 3 ---
 .../java/org/apache/camel/component/jetty/JettyHandle404Test.java | 2 --
 .../apache/camel/component/jetty/JettyOnExceptionHandledTest.java | 3 ---
 .../org/apache/camel/component/jetty/JettySessionSupportTest.java | 3 ---
 .../camel/component/jetty/JettySimplifiedHandle404Test.java       | 2 --
 .../org/apache/camel/component/jetty/JettySimulateInOnlyTest.java | 3 ---
 .../org/apache/camel/component/jetty/JettySuspendResumeTest.java  | 3 ---
 .../java/org/apache/camel/component/jetty/JettySuspendTest.java   | 3 ---
 .../camel/component/jetty/JettySuspendWhileInProgressTest.java    | 3 ---
 .../apache/camel/component/jetty/MultiThreadedHttpGetTest.java    | 3 ---
 .../component/jetty/SpringJettyNoConnectionRedeliveryTest.java    | 3 ---
 .../apache/camel/component/jetty/SpringJettyNoConnectionTest.java | 3 ---
 .../org/apache/camel/component/jetty/async/JettyAsyncCBRTest.java | 3 ---
 .../component/jetty/async/JettyAsyncContinuationDisabledTest.java | 3 ---
 .../jetty/async/JettyAsyncContinuationTimeoutOkTest.java          | 3 ---
 .../component/jetty/async/JettyAsyncContinuationTimeoutTest.java  | 3 ---
 .../jetty/async/JettyAsyncDefaultContinuationTimeoutTest.java     | 3 ---
 .../apache/camel/component/jetty/async/JettyAsyncFilterTest.java  | 3 ---
 .../org/apache/camel/component/jetty/async/JettyAsyncTest.java    | 3 ---
 .../camel/component/jetty/async/JettyAsyncThrottleTest.java       | 2 --
 .../camel/component/jetty/async/JettyAsyncTransformTest.java      | 3 ---
 .../component/jetty/async/JettyAsyncTryCatchFinallyTest.java      | 3 ---
 .../org/apache/camel/component/jetty/async/MyAsyncComponent.java  | 3 ---
 .../org/apache/camel/component/jetty/async/MyAsyncEndpoint.java   | 3 ---
 .../org/apache/camel/component/jetty/async/MyAsyncProducer.java   | 3 ---
 .../apache/camel/component/jetty/javabody/HttpJavaBodyTest.java   | 3 ---
 .../org/apache/camel/component/jetty/javabody/MyCoolBean.java     | 3 ---
 .../HttpJettyProducerRecipientListCustomThreadPoolTest.java       | 3 ---
 .../jetty/jettyproducer/HttpJettyProducerRecipientListTest.java   | 3 ---
 .../jetty/jettyproducer/HttpJettyProducerTwoEndpointTest.java     | 3 ---
 .../jetty/jettyproducer/JettyHttpProderReturnFaultTest.java       | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerAsyncTimeoutTest.java    | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerAsynchronousTest.java    | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerConcurrentTest.java      | 2 --
 .../JettyHttpProducerContentTypeEncodingInQuoteTest.java          | 3 ---
 .../jettyproducer/JettyHttpProducerGoogleAsynchronousTest.java    | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerGoogleTest.java          | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerJavaBodyTest.java        | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerPutContentTest.java      | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerQueryParamTest.java      | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerRedirectTest.java        | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerSendFileTest.java        | 3 ---
 .../jettyproducer/JettyHttpProducerSimulate404ErrorTest.java      | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerSuspendResumeTest.java   | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerSuspendTest.java         | 3 ---
 .../JettyHttpProducerSuspendWhileInProgressTest.java              | 3 ---
 .../jettyproducer/JettyHttpProducerSynchronousFalseTest.java      | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerSynchronousTest.java     | 3 ---
 .../jetty/jettyproducer/JettyHttpProducerTimeoutTest.java         | 3 ---
 .../jettyproducer/JettyHttpProducerTransferExceptionTest.java     | 3 ---
 .../component/jetty/jettyproducer/JettyProducerHandle404Test.java | 2 --
 .../apache/camel/component/jetty/jettyproducer/MyCoolBean.java    | 3 ---
 .../java/org/apache/camel/component/jetty/manual/JettyManual.java | 2 --
 .../apache/camel/component/jetty/proxy/HttpClientProxyTest.java   | 3 ---
 .../jetty/proxy/HttpClientProxyTransferExceptionTest.java         | 3 ---
 .../org/apache/camel/component/jetty/proxy/MyAppException.java    | 3 ---
 .../org/apache/camel/component/jetty/proxy/MyCoolService.java     | 3 ---
 .../org/apache/camel/component/jetty/proxy/MyCoolServiceBean.java | 3 ---
 .../apache/camel/dataformat/jibx/JibxDataFormatMarshallTest.java  | 3 ---
 .../jibx/JibxDataFormatMarshallWithBindingNameTest.java           | 3 ---
 .../org/apache/camel/dataformat/jibx/model/PurchaseOrder.java     | 3 ---
 .../org/apache/camel/dataformat/jibx/model/PurchaseOrder2.java    | 3 ---
 .../org/apache/camel/component/validator/jing/JingComponent.java  | 2 --
 .../org/apache/camel/component/validator/jing/JingValidator.java  | 2 --
 .../org/apache/camel/component/validator/jing/RNCRouteTest.java   | 3 ---
 .../org/apache/camel/component/validator/jing/RNGRouteTest.java   | 3 ---
 .../main/java/org/apache/camel/component/jms/ConsumerType.java    | 3 ---
 .../apache/camel/component/jms/DefaultJmsKeyFormatStrategy.java   | 2 --
 .../camel/component/jms/DefaultJmsMessageListenerContainer.java   | 2 --
 .../apache/camel/component/jms/DefaultQueueBrowseStrategy.java    | 2 --
 .../java/org/apache/camel/component/jms/DestinationEndpoint.java  | 2 --
 .../org/apache/camel/component/jms/EndpointMessageListener.java   | 2 --
 .../src/main/java/org/apache/camel/component/jms/JmsBinding.java  | 2 --
 .../main/java/org/apache/camel/component/jms/JmsComponent.java    | 2 --
 .../java/org/apache/camel/component/jms/JmsConfiguration.java     | 3 ---
 .../src/main/java/org/apache/camel/component/jms/JmsConsumer.java | 2 --
 .../org/apache/camel/component/jms/JmsHeaderFilterStrategy.java   | 3 ---
 .../java/org/apache/camel/component/jms/JmsKeyFormatStrategy.java | 2 --
 .../src/main/java/org/apache/camel/component/jms/JmsMessage.java  | 2 --
 .../java/org/apache/camel/component/jms/JmsMessageHelper.java     | 2 --
 .../main/java/org/apache/camel/component/jms/JmsMessageType.java  | 2 --
 .../src/main/java/org/apache/camel/component/jms/JmsProducer.java | 3 ---
 .../java/org/apache/camel/component/jms/JmsProviderMetadata.java  | 2 --
 .../java/org/apache/camel/component/jms/JmsQueueEndpoint.java     | 2 --
 .../org/apache/camel/component/jms/JmsTemporaryQueueEndpoint.java | 2 --
 .../org/apache/camel/component/jms/JmsTemporaryTopicEndpoint.java | 2 --
 .../java/org/apache/camel/component/jms/MessageSentCallback.java  | 2 --
 .../camel/component/jms/PassThroughJmsKeyFormatStrategy.java      | 2 --
 .../java/org/apache/camel/component/jms/QueueBrowseStrategy.java  | 3 ---
 .../src/main/java/org/apache/camel/component/jms/ReplyToType.java | 2 --
 .../camel/component/jms/SimpleJmsMessageListenerContainer.java    | 2 --
 .../apache/camel/component/jms/reply/CorrelationTimeoutMap.java   | 2 --
 .../org/apache/camel/component/jms/reply/QueueReplyHandler.java   | 2 --
 .../org/apache/camel/component/jms/reply/QueueReplyManager.java   | 2 --
 .../java/org/apache/camel/component/jms/reply/ReplyHandler.java   | 2 --
 .../java/org/apache/camel/component/jms/reply/ReplyHolder.java    | 2 --
 .../java/org/apache/camel/component/jms/reply/ReplyManager.java   | 2 --
 .../org/apache/camel/component/jms/reply/ReplyManagerSupport.java | 2 --
 .../camel/component/jms/reply/TemporaryQueueReplyHandler.java     | 2 --
 .../camel/component/jms/reply/TemporaryQueueReplyManager.java     | 2 --
 .../jms/reply/UseMessageIdAsCorrelationIdMessageSentCallback.java | 2 --
 .../camel/component/jms/ActiveMQOriginalDestinationTest.java      | 3 ---
 .../java/org/apache/camel/component/jms/BrowsableQueueTest.java   | 3 ---
 .../java/org/apache/camel/component/jms/CamelJmsTestHelper.java   | 2 --
 .../apache/camel/component/jms/ConsumeJmsBytesMessageTest.java    | 3 ---
 .../org/apache/camel/component/jms/ConsumeJmsMapMessageTest.java  | 3 ---
 .../apache/camel/component/jms/ConsumeJmsObjectMessageTest.java   | 3 ---
 .../apache/camel/component/jms/ConsumeMessageConverterTest.java   | 3 ---
 .../camel/component/jms/ConsumerTemplateJmsSelectorTest.java      | 3 ---
 .../component/jms/DefaultJmsHeaderKeyFormatStrategyTest.java      | 3 ---
 .../apache/camel/component/jms/JmsAllowAdditionalHeadersTest.java | 3 ---
 .../java/org/apache/camel/component/jms/JmsAutoStartupTest.java   | 3 ---
 .../camel/component/jms/JmsBatchResequencerJMSPriorityTest.java   | 2 --
 .../java/org/apache/camel/component/jms/JmsClientAckTest.java     | 3 ---
 .../java/org/apache/camel/component/jms/JmsComponentTest.java     | 3 ---
 .../org/apache/camel/component/jms/JmsConsumeTemplateTest.java    | 3 ---
 .../jms/JmsConsumerRestartPickupConfigurationChangesTest.java     | 3 ---
 .../camel/component/jms/JmsCustomHeaderFilterStrategyTest.java    | 3 ---
 .../apache/camel/component/jms/JmsDeadLetterChannelInOutTest.java | 3 ---
 .../org/apache/camel/component/jms/JmsDeadLetterQueueTest.java    | 2 --
 .../jms/JmsDeadLetterQueueUsingTransferExchangeTest.java          | 2 --
 .../apache/camel/component/jms/JmsDestinationResolverTest.java    | 3 ---
 .../java/org/apache/camel/component/jms/JmsDurableTopicTest.java  | 3 ---
 .../apache/camel/component/jms/JmsEagerLoadingPropertiesTest.java | 3 ---
 .../apache/camel/component/jms/JmsEndpointConfigurationTest.java  | 3 ---
 .../test/java/org/apache/camel/component/jms/JmsFilterTest.java   | 1 -
 .../org/apache/camel/component/jms/JmsHeaderFilteringTest.java    | 4 ----
 .../camel/component/jms/JmsHeaderFilteringWithSpringTest.java     | 4 ----
 .../camel/component/jms/JmsInOnlyDisableTimeToLiveTest.java       | 3 ---
 .../camel/component/jms/JmsInOnlyWithReplyToAsHeaderTest.java     | 3 ---
 ...InOnlyWithReplyToDisabledButJMSReplyToHeaderPreservedTest.java | 3 ---
 .../camel/component/jms/JmsInOnlyWithReplyToDisabledTest.java     | 3 ---
 .../camel/component/jms/JmsInOnlyWithReplyToHeaderTest.java       | 3 ---
 .../camel/component/jms/JmsInOnlyWithReplyToHeaderTopicTest.java  | 3 ---
 .../camel/component/jms/JmsInOnlyWithReplyToNotPreservedTest.java | 3 ---
 .../org/apache/camel/component/jms/JmsInOnlyWithReplyToTest.java  | 3 ---
 .../apache/camel/component/jms/JmsInOutDisableTimeToLiveTest.java | 3 ---
 .../org/apache/camel/component/jms/JmsInOutNonPersistentTest.java | 3 ---
 .../apache/camel/component/jms/JmsInOutSynchronousFalseTest.java  | 3 ---
 .../org/apache/camel/component/jms/JmsInOutSynchronousTest.java   | 3 ---
 .../camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java      | 4 ----
 .../component/jms/JmsMessageCreatedStrategyComponentTest.java     | 3 ---
 .../component/jms/JmsMessageCreatedStrategyEndpointTest.java      | 3 ---
 .../java/org/apache/camel/component/jms/JmsMessageTypeTest.java   | 3 ---
 .../org/apache/camel/component/jms/JmsMultipleConsumersTest.java  | 3 ---
 .../camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java   | 4 ----
 .../jms/JmsOnCompletionAndInterceptAndOnExceptionTest.java        | 3 ---
 .../org/apache/camel/component/jms/JmsPollingConsumerTest.java    | 3 ---
 .../apache/camel/component/jms/JmsProducerDisableReplyToTest.java | 3 ---
 .../apache/camel/component/jms/JmsProducerWithJMSHeaderTest.java  | 3 ---
 .../org/apache/camel/component/jms/JmsProduerConcurrentTest.java  | 3 ---
 .../camel/component/jms/JmsProduerConcurrentWithReplyTest.java    | 3 ---
 .../test/java/org/apache/camel/component/jms/JmsQosRouteTest.java | 3 ---
 .../java/org/apache/camel/component/jms/JmsRemoveHeaderTest.java  | 3 ---
 .../jms/JmsRequestReplyExclusiveReplyToComponentTest.java         | 2 --
 .../jms/JmsRequestReplyExclusiveReplyToConcurrentTest.java        | 3 ---
 .../jms/JmsRequestReplyExclusiveReplyToRemoveAddRouteTest.java    | 3 ---
 .../camel/component/jms/JmsRequestReplyExclusiveReplyToTest.java  | 2 --
 .../component/jms/JmsRequestReplyFixedReplyToInEndpointTest.java  | 3 ---
 .../camel/component/jms/JmsRequestReplyManualReplyTest.java       | 3 ---
 .../component/jms/JmsRequestReplyManualWithJMSReplyToTest.java    | 3 ---
 .../JmsRequestReplyProcessRepliesConcurrentUsingThreadsTest.java  | 3 ---
 .../camel/component/jms/JmsRequestReplySharedReplyToTest.java     | 3 ---
 .../org/apache/camel/component/jms/JmsRouteRequestReplyTest.java  | 3 ---
 .../test/java/org/apache/camel/component/jms/JmsRouteTest.java    | 3 ---
 .../camel/component/jms/JmsRouteUsingDifferentHeadersTest.java    | 3 ---
 .../apache/camel/component/jms/JmsRouteUsingJMSXGroupTest.java    | 3 ---
 .../camel/component/jms/JmsRouteUsingSpringAndJmsNameTest.java    | 3 ---
 .../camel/component/jms/JmsRouteUsingSpringJMSTemplateTest.java   | 3 ---
 .../org/apache/camel/component/jms/JmsRouteUsingSpringTest.java   | 3 ---
 .../camel/component/jms/JmsRouteUsingSpringWithAutoWireTest.java  | 3 ---
 .../component/jms/JmsRouteWithCustomKeyFormatStrategyTest.java    | 2 --
 .../component/jms/JmsRouteWithCustomListenerContainerTest.java    | 2 --
 .../component/jms/JmsRouteWithDefaultKeyFormatStrategyTest.java   | 3 ---
 .../org/apache/camel/component/jms/JmsRouteWithInOnlyTest.java    | 2 --
 .../apache/camel/component/jms/JmsRouteWithObjectMessageTest.java | 3 ---
 .../jms/JmsRouteWithPassThroughKeyFormatStrategyTest.java         | 2 --
 .../java/org/apache/camel/component/jms/JmsSelectorInTest.java    | 3 ---
 .../test/java/org/apache/camel/component/jms/JmsSelectorTest.java | 3 ---
 .../test/java/org/apache/camel/component/jms/JmsSessionTest.java  | 3 ---
 .../java/org/apache/camel/component/jms/JmsSimpleHeaderTest.java  | 3 ---
 .../camel/component/jms/JmsSplitterParallelChainedTest.java       | 2 --
 .../org/apache/camel/component/jms/JmsSplitterParallelTest.java   | 3 ---
 .../java/org/apache/camel/component/jms/JmsSuspendResumeTest.java | 3 ---
 .../camel/component/jms/JmsTestConnectionOnStartupTest.java       | 3 ---
 .../camel/component/jms/JmsThrottlingInflightRoutePolicyTest.java | 3 ---
 .../src/test/java/org/apache/camel/component/jms/JmsToDTest.java  | 3 ---
 .../src/test/java/org/apache/camel/component/jms/JmsToTest.java   | 3 ---
 .../org/apache/camel/component/jms/JmsTransactedRouteTest.java    | 3 ---
 .../org/apache/camel/component/jms/JmsTransferExceptionTest.java  | 3 ---
 .../camel/component/jms/JmsTransferExchangeFromSplitterTest.java  | 3 ---
 .../org/apache/camel/component/jms/JmsTransferExchangeTest.java   | 3 ---
 .../java/org/apache/camel/component/jms/JmsTransferFaultTest.java | 3 ---
 .../test/java/org/apache/camel/component/jms/JmsXMLRouteTest.java | 2 --
 .../java/org/apache/camel/component/jms/JmsXPathHeaderTest.java   | 2 --
 .../java/org/apache/camel/component/jms/MapJmsMessageTest.java    | 3 ---
 .../camel/component/jms/PassThroughJmsKeyFormatStrategyTest.java  | 3 ---
 .../apache/camel/component/jms/ProduceMessageConverterTest.java   | 3 ---
 .../test/java/org/apache/camel/component/jms/PurchaseOrder.java   | 2 --
 .../org/apache/camel/component/jms/SpringJmsSelectorTest.java     | 3 ---
 .../org/apache/camel/component/jms/SpringJmsXPathHeaderTest.java  | 2 --
 .../org/apache/camel/component/jms/async/AsyncJmsInOutTest.java   | 3 ---
 .../apache/camel/component/jms/async/AsyncJmsProducerTest.java    | 3 ---
 .../org/apache/camel/component/jms/bind/JmsMessageBindTest.java   | 3 ---
 .../src/test/java/org/apache/camel/component/jms/bind/MyBean.java | 3 ---
 .../jms/config/JmsEndpointWithCustomDestinationTest.java          | 3 ---
 .../apache/camel/component/jms/discovery/JmsDiscoveryTest.java    | 3 ---
 .../java/org/apache/camel/component/jms/discovery/MyRegistry.java | 2 --
 .../java/org/apache/camel/component/jms/discovery/MyService.java  | 3 ---
 .../camel/component/jms/issues/ActiveMQPropagateHeadersTest.java  | 3 ---
 .../component/jms/issues/JmsAnotherCustomJMSReplyToTest.java      | 3 ---
 .../camel/component/jms/issues/JmsCustomJMSReplyToIssueTest.java  | 3 ---
 .../component/jms/issues/JmsGetHeaderKeyFormatIssueTest.java      | 3 ---
 .../JmsGetHeaderKeyFormatIssueWithContentTypeHeaderTest.java      | 2 --
 .../java/org/apache/camel/component/jms/issues/JmsHammerTest.java | 2 --
 .../org/apache/camel/component/jms/issues/JmsInOnlyIssueTest.java | 3 ---
 .../apache/camel/component/jms/issues/JmsInOnlyParameterTest.java | 3 ---
 .../jms/issues/JmsInOutExclusiveTopicRecipientListTest.java       | 3 ---
 .../camel/component/jms/issues/JmsInOutExclusiveTopicTest.java    | 3 ---
 .../org/apache/camel/component/jms/issues/JmsInOutIssueTest.java  | 3 ---
 .../apache/camel/component/jms/issues/JmsInOutParallelTest.java   | 3 ---
 .../component/jms/issues/JmsInOutPersistentReplyQueueTest.java    | 3 ---
 .../component/jms/issues/JmsInOutRepeatedInvocationsTest.java     | 3 ---
 .../camel/component/jms/issues/JmsInOutRoutingSlipTest.java       | 3 ---
 .../jms/issues/JmsInOutUseMessageIDasCorrelationIDTest.java       | 3 ---
 .../component/jms/issues/JmsInOutWithSpringRestartIssueTest.java  | 3 ---
 .../jms/issues/JmsJMSReplyToConsumerEndpointUsingInOutTest.java   | 2 --
 .../component/jms/issues/JmsJMSReplyToEndpointUsingInOutTest.java | 2 --
 .../apache/camel/component/jms/issues/JmsMQSpecialHeaderTest.java | 3 ---
 .../jms/issues/JmsMessageHeaderContentBasedRouterTest.java        | 2 --
 .../apache/camel/component/jms/issues/JmsMutateMessageTest.java   | 3 ---
 .../component/jms/issues/JmsMutateRemoveHeaderMessageTest.java    | 3 ---
 .../JmsPassThroughtJmsKeyFormatStrategyEndUserIssueTest.java      | 3 ---
 .../issues/JmsPassThroughtJmsKeyFormatStrategyEndpointTest.java   | 3 ---
 .../jms/issues/JmsPassThroughtJmsKeyFormatStrategyTest.java       | 3 ---
 ...PassThroughtJmsKeyFormatStrategyUsingJmsConfigurationTest.java | 3 ---
 .../camel/component/jms/issues/JmsReplyToLoopIssueTest.java       | 3 ---
 .../camel/component/jms/issues/JmsRoutingSlipIssueTest.java       | 3 ---
 .../issues/JmsSendToAlotOfDestinationWithSameEndpointTest.java    | 3 ---
 .../camel/component/jms/issues/JmsTypeConverterIssueTest.java     | 2 --
 .../java/org/apache/camel/component/jms/issues/LarsIssueTest.java | 2 --
 .../org/apache/camel/component/jms/issues/MQSeriesHeaderTest.java | 2 --
 .../component/jms/issues/RequestReplyWithProducerIssueTest.java   | 3 ---
 .../apache/camel/component/jms/issues/TempReplyToIssueTest.java   | 3 ---
 .../org/apache/camel/component/jms/remoting/JmsRemotingTest.java  | 3 ---
 .../java/org/apache/camel/component/jms/temp/JmsProviderTest.java | 3 ---
 .../apache/camel/component/jms/temp/TemporaryQueueRouteTest.java  | 3 ---
 .../camel/component/jms/tuning/PerformanceRoutePojoTest.java      | 3 ---
 .../apache/camel/component/jms/tuning/PerformanceRouteTest.java   | 3 ---
 .../java/org/apache/camel/component/jms/tuning/RoutePojo.java     | 3 ---
 .../apache/camel/component/jms/tx/AsyncEndpointJmsTX2Test.java    | 3 ---
 .../camel/component/jms/tx/AsyncEndpointJmsTXMulticastTest.java   | 3 ---
 .../component/jms/tx/AsyncEndpointJmsTXRecipientListTest.java     | 3 ---
 .../camel/component/jms/tx/AsyncEndpointJmsTXRollback2Test.java   | 3 ---
 .../camel/component/jms/tx/AsyncEndpointJmsTXRollbackTest.java    | 3 ---
 .../camel/component/jms/tx/AsyncEndpointJmsTXRoutingSlipTest.java | 3 ---
 .../org/apache/camel/component/jms/tx/AsyncEndpointJmsTXTest.java | 3 ---
 .../component/jms/tx/AsyncEndpointJmsTXTryCatchFinallyTest.java   | 3 ---
 .../camel/component/jms/tx/AsyncEndpointJmsTXWireTapTest.java     | 3 ---
 .../camel/component/jms/tx/JMSTXInOutPersistentQueueTest.java     | 3 ---
 .../apache/camel/component/jms/tx/JMXTXUseOriginalBodyTest.java   | 3 ---
 .../jms/tx/JMXTXUseOriginalBodyWithDLCErrorHandlerTest.java       | 3 ---
 .../jms/tx/JMXTXUseOriginalBodyWithTXErrorHandlerTest.java        | 3 ---
 .../camel/component/jms/tx/JmsToJmsTransactedSecurityTest.java    | 3 ---
 .../org/apache/camel/component/jms/tx/JmsToJmsTransactedTest.java | 3 ---
 .../org/apache/camel/component/jms/tx/RouteIdTransactedTest.java  | 3 ---
 .../camel/component/jms/tx/TransactedAsyncUsingThreadsTest.java   | 3 ---
 .../java/org/apache/camel/component/jmx/MockEndpointFixture.java  | 1 -
 .../camel/component/johnzon/SpringJohnzonJsonDataFormatTest.java  | 3 ---
 .../src/main/java/org/apache/camel/component/jpa/Callback.java    | 3 ---
 .../src/main/java/org/apache/camel/component/jpa/Consumed.java    | 2 --
 .../main/java/org/apache/camel/component/jpa/DeleteHandler.java   | 2 --
 .../main/java/org/apache/camel/component/jpa/JpaComponent.java    | 2 --
 .../main/java/org/apache/camel/component/jpa/JpaConstants.java    | 2 --
 .../src/main/java/org/apache/camel/component/jpa/JpaConsumer.java | 3 ---
 .../src/main/java/org/apache/camel/component/jpa/JpaProducer.java | 3 ---
 .../main/java/org/apache/camel/component/jpa/QueryBuilder.java    | 2 --
 .../main/java/org/apache/camel/component/jpa/QueryFactory.java    | 2 --
 .../camel/processor/idempotent/jpa/JpaMessageIdRepository.java    | 3 ---
 .../apache/camel/processor/idempotent/jpa/MessageProcessed.java   | 3 ---
 .../org/apache/camel/component/jpa/AbstractJpaMethodTest.java     | 3 ---
 .../java/org/apache/camel/component/jpa/JpaComponentTest.java     | 3 ---
 .../test/java/org/apache/camel/component/jpa/JpaEndpointTest.java | 3 ---
 .../src/test/java/org/apache/camel/component/jpa/JpaTest.java     | 3 ---
 .../test/java/org/apache/camel/component/jpa/JpaUseMergeTest.java | 3 ---
 .../java/org/apache/camel/component/jpa/JpaUsePersistTest.java    | 3 ---
 .../camel/component/jpa/JpaUsingCustomPersistenceUnitTest.java    | 3 ---
 .../org/apache/camel/component/jpa/JpaWithNamedQueryTest.java     | 3 ---
 .../org/apache/camel/component/jpa/JpaWithNativeQueryTest.java    | 3 ---
 .../component/jpa/JpaWithNativeQueryWithResultClassTest.java      | 3 ---
 .../java/org/apache/camel/component/jpa/JpaWithQueryTest.java     | 3 ---
 .../java/org/apache/camel/component/jpa/QueryBuilderTest.java     | 3 ---
 .../src/test/java/org/apache/camel/examples/Address.java          | 3 ---
 .../src/test/java/org/apache/camel/examples/Customer.java         | 3 ---
 .../src/test/java/org/apache/camel/examples/MultiSteps.java       | 2 --
 .../src/test/java/org/apache/camel/examples/SendEmail.java        | 2 --
 .../src/test/java/org/apache/camel/examples/VersionedItem.java    | 2 --
 .../test/java/org/apache/camel/processor/jpa/AbstractJpaTest.java | 3 ---
 .../java/org/apache/camel/processor/jpa/JpaBatchConsumerTest.java | 3 ---
 .../java/org/apache/camel/processor/jpa/JpaFlushOnSendTest.java   | 3 ---
 .../org/apache/camel/processor/jpa/JpaIdempotentConsumerTest.java | 3 ---
 .../java/org/apache/camel/processor/jpa/JpaNonTXRollbackTest.java | 3 ---
 .../java/org/apache/camel/processor/jpa/JpaPreConsumedTest.java   | 3 ---
 .../org/apache/camel/processor/jpa/JpaProducerConcurrentTest.java | 3 ---
 .../org/apache/camel/processor/jpa/JpaProducerNoBodyTest.java     | 3 ---
 .../camel/processor/jpa/JpaProducerPassingEntityManagerTest.java  | 3 ---
 .../org/apache/camel/processor/jpa/JpaProducerRemoveTest.java     | 3 ---
 .../apache/camel/processor/jpa/JpaRouteConsumeLockEntityTest.java | 3 ---
 .../java/org/apache/camel/processor/jpa/JpaRouteEndpointTest.java | 3 ---
 .../apache/camel/processor/jpa/JpaRouteMaximumResultsTest.java    | 3 ---
 .../camel/processor/jpa/JpaRouteSharedEntityManagerTest.java      | 3 ---
 .../apache/camel/processor/jpa/JpaRouteSkipLockedEntityTest.java  | 3 ---
 .../test/java/org/apache/camel/processor/jpa/JpaRouteTest.java    | 3 ---
 .../camel/processor/jpa/JpaRoutemaxMessagesPerPollTest.java       | 3 ---
 .../java/org/apache/camel/processor/jpa/JpaTXRollbackTest.java    | 3 ---
 .../test/java/org/apache/camel/processor/jpa/JpaWireTapTest.java  | 3 ---
 .../src/main/java/org/apache/camel/jsonpath/JsonPath.java         | 2 --
 .../main/java/org/apache/camel/component/ldap/LdapComponent.java  | 2 --
 .../main/java/org/apache/camel/component/ldap/LdapProducer.java   | 3 ---
 .../org/apache/camel/component/leveldb/LevelDBCamelCodec.java     | 3 ---
 .../leveldb/LevelDBAggregateConcurrentDifferentGroupsTest.java    | 3 ---
 .../leveldb/LevelDBAggregateConcurrentSameGroupTest.java          | 3 ---
 .../java/org/apache/camel/component/mail/ContentTypeResolver.java | 2 --
 .../main/java/org/apache/camel/component/mail/MailComponent.java  | 2 --
 .../java/org/apache/camel/component/mail/MailConfiguration.java   | 2 --
 .../main/java/org/apache/camel/component/mail/MailConverters.java | 2 --
 .../main/java/org/apache/camel/component/mail/MailMessage.java    | 2 --
 .../src/main/java/org/apache/camel/component/mail/MailUtils.java  | 2 --
 .../org/apache/camel/component/mail/FromFileSendMailTest.java     | 3 ---
 .../org/apache/camel/component/mail/MailCollectionHeaderTest.java | 3 ---
 .../camel/component/mail/MailComponentRecipientSetTest.java       | 3 ---
 .../java/org/apache/camel/component/mail/MailComponentTest.java   | 3 ---
 .../camel/component/mail/MailConsumerUnsupportedCharsetTest.java  | 3 ---
 .../java/org/apache/camel/component/mail/MailConvertersTest.java  | 3 ---
 .../org/apache/camel/component/mail/MailCustomMailSenderTest.java | 3 ---
 .../java/org/apache/camel/component/mail/MailEndpointTest.java    | 3 ---
 .../java/org/apache/camel/component/mail/MailMessageTest.java     | 3 ---
 .../apache/camel/component/mail/MailProducerConcurrentTest.java   | 2 --
 .../camel/component/mail/MailProducerUnsupportedCharsetTest.java  | 3 ---
 .../test/java/org/apache/camel/component/mail/MailRouteTest.java  | 3 ---
 .../apache/camel/component/mail/MailToMultipleEndpointsTest.java  | 3 ---
 .../org/apache/camel/component/mail/MimeMessageConsumeTest.java   | 3 ---
 .../camel/component/mail/MultipleDestinationConsumeTest.java      | 3 ---
 .../java/org/apache/camel/component/mina2/Mina2Component.java     | 2 --
 .../java/org/apache/camel/component/mina2/Mina2Constants.java     | 2 --
 .../main/java/org/apache/camel/component/mina2/Mina2Consumer.java | 2 --
 .../java/org/apache/camel/component/mina2/Mina2Converter.java     | 2 --
 .../java/org/apache/camel/component/mina2/Mina2PayloadHelper.java | 2 --
 .../main/java/org/apache/camel/component/mina2/Mina2Producer.java | 2 --
 .../camel/component/mina2/Mina2UdpProtocolCodecFactory.java       | 3 ---
 .../java/org/apache/camel/component/mina2/Mina2ComponentTest.java | 2 --
 .../component/mina2/Mina2ComponentWithConfigurationTest.java      | 3 ---
 .../java/org/apache/camel/component/mina2/Mina2ConverterTest.java | 3 ---
 .../java/org/apache/camel/component/mina2/Mina2EncodingTest.java  | 2 --
 .../camel/component/mina2/Mina2ExchangeDefaultTimeOutTest.java    | 2 --
 .../java/org/apache/camel/component/mina2/Mina2FileTcpTest.java   | 3 ---
 .../java/org/apache/camel/component/mina2/Mina2FileUdpTest.java   | 3 ---
 .../org/apache/camel/component/mina2/Mina2MaxLineLengthTest.java  | 3 ---
 .../camel/component/mina2/Mina2ProducerAnotherConcurrentTest.java | 3 ---
 .../apache/camel/component/mina2/Mina2ProducerConcurrentTest.java | 3 ---
 .../camel/component/mina2/Mina2SslContextParametersTcpTest.java   | 3 ---
 .../camel/component/mina2/Mina2SslContextParametersUdpTest.java   | 3 ---
 .../camel/component/mina2/Mina2SslContextParametersVmTest.java    | 3 ---
 .../component/mina2/Mina2SslGlobalContextParametersTcpTest.java   | 3 ---
 .../mina2/Mina2TcpLineDelimiterUsingPlainSocketTest.java          | 2 --
 .../test/java/org/apache/camel/component/mina2/Mina2TcpTest.java  | 3 ---
 .../org/apache/camel/component/mina2/Mina2TcpWithInOutTest.java   | 3 ---
 .../component/mina2/Mina2TcpWithInOutUsingPlainSocketTest.java    | 2 --
 .../camel/component/mina2/Mina2TransferExchangeOptionTest.java    | 2 --
 .../org/apache/camel/component/mina2/Mina2UdpConcurrentTest.java  | 3 ---
 .../test/java/org/apache/camel/component/mina2/Mina2UdpTest.java  | 3 ---
 .../apache/camel/component/mina2/Mina2UdpUsingTemplateTest.java   | 3 ---
 .../java/org/apache/camel/component/mina2/Mina2VMFileTcpTest.java | 3 ---
 .../camel/component/mina2/Mina2VMTransferExchangeOptionTest.java  | 2 --
 .../test/java/org/apache/camel/component/mina2/Mina2VmTest.java   | 3 ---
 .../org/apache/camel/component/mongodb/gridfs/GridFsConsumer.java | 3 ---
 .../apache/camel/component/mongodb/gridfs/GridFsConsumerTest.java | 3 ---
 .../test/java/org/apache/camel/component/mqtt/MQTTBrigeTest.java  | 2 --
 .../java/org/apache/camel/component/mqtt/MQTTDuplicatesTest.java  | 2 --
 .../apache/camel/component/validator/msv/RelaxNGRouteTest.java    | 3 ---
 .../src/main/java/org/apache/camel/language/mvel/MVEL.java        | 1 -
 .../main/java/org/apache/camel/language/mvel/MvelLanguage.java    | 2 --
 .../camel/component/mybatis/DefaultMyBatisProcessingStrategy.java | 3 ---
 .../java/org/apache/camel/component/mybatis/MyBatisComponent.java | 3 ---
 .../java/org/apache/camel/component/mybatis/MyBatisConstants.java | 2 --
 .../apache/camel/component/mybatis/MyBatisProcessingStrategy.java | 2 --
 .../java/org/apache/camel/component/mybatis/MyBatisProducer.java  | 3 ---
 .../java/org/apache/camel/component/mybatis/StatementType.java    | 2 --
 .../src/test/java/org/apache/camel/component/mybatis/Account.java | 3 ---
 .../java/org/apache/camel/component/nagios/NagiosComponent.java   | 3 ---
 .../org/apache/camel/component/nagios/NagiosConfiguration.java    | 3 ---
 .../java/org/apache/camel/component/nagios/NagiosConstants.java   | 3 ---
 .../org/apache/camel/component/nagios/NagiosEventNotifier.java    | 2 --
 .../java/org/apache/camel/component/nagios/NagiosProducer.java    | 3 ---
 .../org/apache/camel/component/nagios/NagiosAsyncSendTest.java    | 3 ---
 .../apache/camel/component/nagios/NagiosEventNotifierTest.java    | 3 ---
 .../test/java/org/apache/camel/component/nagios/NagiosTest.java   | 3 ---
 .../apache/camel/component/nagios/NagiosXorEncryptionTest.java    | 3 ---
 .../apache/camel/component/netty4/http/LogCaptureAppender.java    | 2 --
 .../java/org/apache/camel/component/netty4/NettyConstants.java    | 2 --
 .../java/org/apache/camel/component/netty4/NettyConverter.java    | 2 --
 .../main/java/org/apache/camel/component/netty4/NettyHelper.java  | 2 --
 .../org/apache/camel/component/netty4/NettyPayloadHelper.java     | 2 --
 .../java/org/apache/camel/component/netty4/TextLineDelimiter.java | 2 --
 .../org/apache/camel/component/netty4/LogCaptureAppender.java     | 2 --
 .../org/apache/camel/component/netty4/Netty2978IssueTest.java     | 3 ---
 .../component/netty4/NettyComponentWithConfigurationTest.java     | 3 ---
 .../org/apache/camel/component/netty4/NettyDisconnectTest.java    | 3 ---
 .../java/org/apache/camel/component/netty4/NettyFileTcpTest.java  | 3 ---
 .../component/netty4/NettyInOutCloseChannelWhenCompleteTest.java  | 3 ---
 .../org/apache/camel/component/netty4/NettyInOutFromSedaTest.java | 3 ---
 .../component/netty4/NettyInOutWithForcedNoResponseTest.java      | 3 ---
 .../camel/component/netty4/NettyProducerAsyncEndpointTest.java    | 3 ---
 .../camel/component/netty4/NettyProducerPoolDisabledTest.java     | 3 ---
 .../apache/camel/component/netty4/NettyRequestTimeoutTest.java    | 3 ---
 .../org/apache/camel/component/netty4/NettyReuseChannelTest.java  | 3 ---
 .../component/netty4/NettyTcpWithInOutUsingPlainSocketTest.java   | 3 ---
 .../component/netty4/NettyTextlineInOnlyNullDelimiterTest.java    | 3 ---
 .../apache/camel/component/netty4/NettyTextlineInOnlyTest.java    | 3 ---
 .../camel/component/netty4/NettyTextlineInOutNonBlockingTest.java | 3 ---
 .../component/netty4/NettyTextlineInOutSynchronousFalseTest.java  | 3 ---
 .../camel/component/netty4/NettyTextlineInOutSynchronousTest.java | 3 ---
 .../org/apache/camel/component/netty4/NettyTextlineInOutTest.java | 3 ---
 .../camel/component/netty4/NettyTransferExchangeOptionTest.java   | 3 ---
 .../component/netty4/NettyUdpWithInOutUsingPlainSocketTest.java   | 3 ---
 .../netty4/NettyUseSharedWorkerThreadPoolManyRoutesTest.java      | 3 ---
 .../component/netty4/NettyUseSharedWorkerThreadPoolTest.java      | 3 ---
 .../netty4/SpringNettyUseSharedWorkerThreadPoolTest.java          | 3 ---
 .../src/main/java/org/apache/camel/language/ognl/OGNL.java        | 2 --
 .../main/java/org/apache/camel/language/ognl/OgnlExpression.java  | 2 --
 .../main/java/org/apache/camel/language/ognl/OgnlLanguage.java    | 2 --
 .../src/main/java/org/apache/camel/language/ognl/RootObject.java  | 3 ---
 .../src/test/java/org/apache/camel/language/ognl/OgnlTest.java    | 3 ---
 .../java/org/apache/camel/language/ognl/patterns/FilterTest.java  | 3 ---
 .../apache/camel/component/quartz2/QuartzAddDynamicRouteTest.java | 3 ---
 .../quartz2/QuartzAddRoutesAfterCamelContextStartedTest.java      | 3 ---
 .../org/apache/camel/component/quartz2/QuartzAutoStartTest.java   | 3 ---
 .../org/apache/camel/component/quartz2/QuartzComponentTest.java   | 3 ---
 .../org/apache/camel/component/quartz2/QuartzCronRouteTest.java   | 1 -
 .../camel/component/quartz2/QuartzEndpointConfigureTest.java      | 3 ---
 .../org/apache/camel/component/quartz2/QuartzInterruptTest.java   | 3 ---
 .../camel/component/quartz2/QuartzJobRouteUnderscoreTest.java     | 3 ---
 .../camel/component/quartz2/QuartzManuallyTriggerJobTest.java     | 1 -
 .../camel/component/quartz2/QuartzOneCamelContextRestartTest.java | 3 ---
 .../component/quartz2/QuartzOneCamelContextSuspendResumeTest.java | 3 ---
 .../apache/camel/component/quartz2/QuartzRepeatIntervalTest.java  | 3 ---
 .../apache/camel/component/quartz2/QuartzRouteFireNowTest.java    | 3 ---
 .../apache/camel/component/quartz2/QuartzRouteRestartTest.java    | 3 ---
 .../java/org/apache/camel/component/quartz2/QuartzRouteTest.java  | 3 ---
 .../org/apache/camel/component/quartz2/QuartzSimpleRouteTest.java | 1 -
 .../org/apache/camel/component/quartz2/QuartzStopRouteTest.java   | 3 ---
 .../apache/camel/component/quartz2/QuartzSuspendRouteTest.java    | 3 ---
 .../camel/component/quartz2/QuartzTwoCamelContextRestartTest.java | 3 ---
 .../component/quartz2/QuartzTwoCamelContextSameNameClashTest.java | 3 ---
 .../component/quartz2/QuartzTwoCamelContextSuspendResumeTest.java | 3 ---
 .../apache/camel/component/quartz2/QuartzTwoCamelContextTest.java | 3 ---
 .../quartz2/SpringQuartzConsumerTwoAppsClusteredFailoverTest.java | 2 --
 .../apache/camel/component/quartz2/SpringQuartzCronRouteTest.java | 3 ---
 .../SpringQuartzPersistentStoreRestartAppChangeOptionsTest.java   | 2 --
 .../quartz2/SpringQuartzPersistentStoreRestartAppTest.java        | 3 ---
 .../quartz2/SpringQuartzPersistentStoreRestartRouteTest.java      | 3 ---
 .../camel/component/quartz2/SpringQuartzPersistentStoreTest.java  | 3 ---
 .../camel/routepolicy/quartz2/CronScheduledRoutePolicyTest.java   | 3 ---
 .../camel/routepolicy/quartz2/MultiplePoliciesOnRouteTest.java    | 3 ---
 .../camel/component/quickfixj/examples/AuthenticationExample.java | 1 -
 .../component/quickfixj/examples/SimpleMessagingExample.java      | 1 -
 .../java/org/apache/camel/component/rabbitmq/ReplyToType.java     | 2 --
 .../camel/component/rabbitmq/reply/CorrelationTimeoutMap.java     | 2 --
 .../camel/component/rabbitmq/reply/MessageSentCallback.java       | 2 --
 .../apache/camel/component/rabbitmq/reply/QueueReplyHandler.java  | 2 --
 .../org/apache/camel/component/rabbitmq/reply/ReplyHandler.java   | 2 --
 .../org/apache/camel/component/rabbitmq/reply/ReplyHolder.java    | 2 --
 .../org/apache/camel/component/rabbitmq/reply/ReplyManager.java   | 2 --
 .../component/rabbitmq/reply/TemporaryQueueReplyHandler.java      | 2 --
 .../component/rabbitmq/reply/TemporaryQueueReplyManager.java      | 2 --
 .../reply/UseMessageIdAsCorrelationIdMessageSentCallback.java     | 2 --
 .../org/apache/camel/component/restlet/MethodBasedRouter.java     | 2 --
 .../java/org/apache/camel/component/restlet/RestletBinding.java   | 2 --
 .../java/org/apache/camel/component/restlet/RestletComponent.java | 2 --
 .../java/org/apache/camel/component/restlet/RestletConstants.java | 2 --
 .../java/org/apache/camel/component/restlet/RestletConsumer.java  | 2 --
 .../camel/component/restlet/RestletHeaderFilterStrategy.java      | 2 --
 .../java/org/apache/camel/component/restlet/RestletProducer.java  | 2 --
 .../camel/component/restlet/converter/RestletConverter.java       | 4 ----
 .../java/org/apache/camel/component/restlet/AddQueryTest.java     | 4 ----
 .../restlet/RestRestletBindingInJaxbOutStringWithXmlTest.java     | 3 ---
 .../component/restlet/RestRestletBindingModeAutoWithJsonTest.java | 3 ---
 .../component/restlet/RestRestletBindingModeAutoWithXmlTest.java  | 3 ---
 .../camel/component/restlet/RestRestletBindingModeJsonTest.java   | 3 ---
 .../camel/component/restlet/RestRestletBindingModeXmlTest.java    | 3 ---
 .../component/restlet/RestRestletComponentConfigurationTest.java  | 3 ---
 .../component/restlet/RestRestletCustomDataFormatInvalidTest.java | 3 ---
 .../camel/component/restlet/RestRestletCustomDataFormatTest.java  | 3 ---
 .../apache/camel/component/restlet/RestRestletGetCorsTest.java    | 3 ---
 .../org/apache/camel/component/restlet/RestRestletGetTest.java    | 3 ---
 .../camel/component/restlet/RestRestletHttpOptionsTest.java       | 3 ---
 .../camel/component/restlet/RestRestletNoPathParameterTest.java   | 3 ---
 .../restlet/RestRestletPojoInOutCustomErrorResponseTest.java      | 3 ---
 .../apache/camel/component/restlet/RestRestletPojoInOutTest.java  | 3 ---
 .../camel/component/restlet/RestRestletPostJsonJaxbPojoTest.java  | 3 ---
 .../camel/component/restlet/RestRestletPostJsonPojoListTest.java  | 3 ---
 .../component/restlet/RestRestletPostJsonPojoOnExceptionTest.java | 3 ---
 .../camel/component/restlet/RestRestletPostJsonPojoTest.java      | 3 ---
 .../camel/component/restlet/RestRestletPostXmlJaxbPojoTest.java   | 3 ---
 .../component/restlet/RestRestletProducerGetJettyServerTest.java  | 3 ---
 .../camel/component/restlet/RestRestletProducerGetTest.java       | 3 ---
 .../component/restlet/RestRestletProducerGetUriParameterTest.java | 3 ---
 .../org/apache/camel/component/restlet/RestletAddRouteTest.java   | 3 ---
 .../apache/camel/component/restlet/RestletContentTypeTest.java    | 3 ---
 .../component/restlet/RestletEndpointUpdateEndpointUriTest.java   | 3 ---
 .../camel/component/restlet/RestletExceptionResponseTest.java     | 4 ----
 .../java/org/apache/camel/component/restlet/RestletFaultTest.java | 4 ----
 .../camel/component/restlet/RestletHeaderFilterStrategyTest.java  | 3 ---
 .../component/restlet/RestletHttpEmptyQueryParameterTest.java     | 3 ---
 .../restlet/RestletHttpsWithGlobalSSLContextParametersTest.java   | 3 ---
 .../restlet/RestletHttpsWithSSLContextParametersTest.java         | 3 ---
 .../camel/component/restlet/RestletMultiMethodsEndpointTest.java  | 2 --
 .../camel/component/restlet/RestletMultiRoutesEndpointTest.java   | 2 --
 .../component/restlet/RestletMultiUriTemplatesEndpointTest.java   | 2 --
 .../apache/camel/component/restlet/RestletPostContentTest.java    | 4 ----
 .../org/apache/camel/component/restlet/RestletPostFormTest.java   | 4 ----
 .../component/restlet/RestletPostXmlRouteAndJSONAsReturnTest.java | 3 ---
 .../apache/camel/component/restlet/RestletPostXmlRouteTest.java   | 3 ---
 .../org/apache/camel/component/restlet/RestletPostXmlTest.java    | 3 ---
 .../camel/component/restlet/RestletProducerBinaryStreamTest.java  | 3 ---
 .../camel/component/restlet/RestletProducerConcurrentTest.java    | 2 --
 .../apache/camel/component/restlet/RestletProducerGet2Test.java   | 3 ---
 .../component/restlet/RestletProducerGetResponseCodeTest.java     | 3 ---
 .../component/restlet/RestletProducerPropagateHeadersTest.java    | 3 ---
 .../restlet/RestletProducerStandardHeaderWarningTest.java         | 3 ---
 .../camel/component/restlet/RestletProducerSynchronouslyTest.java | 3 ---
 .../org/apache/camel/component/restlet/RestletProducerTest.java   | 3 ---
 .../java/org/apache/camel/component/restlet/RestletQueryTest.java | 4 ----
 .../apache/camel/component/restlet/RestletRecipientListTest.java  | 3 ---
 .../org/apache/camel/component/restlet/RestletRedirectTest.java   | 4 ----
 .../camel/component/restlet/RestletRequestAndResponseAPITest.java | 2 --
 .../org/apache/camel/component/restlet/RestletResponseTest.java   | 4 ----
 .../camel/component/restlet/RestletRestProducerPutTest.java       | 3 ---
 .../component/restlet/RestletRestProducerVerbUpperCaseTest.java   | 3 ---
 .../apache/camel/component/restlet/RestletRestartRouteTest.java   | 3 ---
 .../org/apache/camel/component/restlet/RestletSetBodyTest.java    | 3 ---
 .../org/apache/camel/component/restlet/RestletTestSupport.java    | 4 ----
 .../apache/camel/component/restlet/RestletTwoEndpointsTest.java   | 3 ---
 .../apache/camel/component/restlet/RestletValidUriQueryTest.java  | 4 ----
 .../camel/component/restlet/SpringRestRestletPojoInOutTest.java   | 3 ---
 .../apache/camel/component/restlet/route/TestRouteBuilder.java    | 2 --
 .../main/java/org/apache/camel/component/rmi/RmiComponent.java    | 3 ---
 .../src/main/java/org/apache/camel/component/rmi/RmiConsumer.java | 2 --
 .../src/main/java/org/apache/camel/component/rmi/RmiProducer.java | 3 ---
 .../main/java/org/apache/camel/component/rmi/RmiRegistryBean.java | 3 ---
 .../src/test/java/org/apache/camel/component/rmi/EchoService.java | 3 ---
 .../java/org/apache/camel/component/rmi/RmiConcurrencyTest.java   | 3 ---
 .../java/org/apache/camel/component/rmi/RmiDamnExceptionTest.java | 3 ---
 .../camel/component/rmi/RmiIllegalArgumentExceptionTest.java      | 3 ---
 .../java/org/apache/camel/component/rmi/RmiRouteEndpointTest.java | 3 ---
 .../test/java/org/apache/camel/component/rmi/RmiRouteTest.java    | 3 ---
 .../org/apache/camel/component/rss/RssUriEncodingIssueTest.java   | 3 ---
 .../main/java/org/apache/camel/component/xquery/ResultFormat.java | 3 ---
 .../src/main/java/org/apache/camel/component/xquery/XQuery.java   | 2 --
 .../camel/component/xquery/XQueryAnnotationExpressionFactory.java | 3 ---
 .../java/org/apache/camel/component/xquery/XQueryBuilder.java     | 2 --
 .../java/org/apache/camel/language/xquery/XQueryLanguage.java     | 3 ---
 .../apache/camel/builder/saxon/BeanWithXQueryInjectionTest.java   | 3 ---
 .../apache/camel/builder/saxon/XPathAnnotationResultTypeTest.java | 3 ---
 .../src/test/java/org/apache/camel/builder/saxon/XPathTest.java   | 3 ---
 .../java/org/apache/camel/builder/saxon/XQueryFilterTest.java     | 3 ---
 .../org/apache/camel/builder/saxon/XQueryRecipientListTest.java   | 3 ---
 .../src/test/java/org/apache/camel/builder/saxon/XQueryTest.java  | 3 ---
 .../java/org/apache/camel/builder/saxon/XQueryTransformTest.java  | 3 ---
 .../org/apache/camel/builder/saxon/XQueryTransformTextTest.java   | 3 ---
 .../camel/builder/saxon/XQueryWithNamespacesFilterTest.java       | 3 ---
 .../java/org/apache/camel/component/xquery/SoapPayloadBean.java   | 3 ---
 .../org/apache/camel/component/xquery/SoapPayloadBeanTest.java    | 3 ---
 .../src/test/java/org/apache/camel/component/xquery/TestBean.java | 3 ---
 .../org/apache/camel/component/xquery/XQueryEndpointTest.java     | 3 ---
 .../java/org/apache/camel/component/xquery/XQueryExampleTest.java | 3 ---
 .../org/apache/camel/component/xquery/XQueryNullHeaderTest.java   | 3 ---
 .../apache/camel/component/xquery/XQueryStripWhitespaceTest.java  | 3 ---
 .../apache/camel/component/xquery/XQueryWithExplicitTypeTest.java | 3 ---
 .../apache/camel/component/xquery/XQueryWithExtensionTest.java    | 3 ---
 .../src/main/java/org/apache/camel/builder/script/Groovy.java     | 2 --
 .../src/main/java/org/apache/camel/builder/script/JavaScript.java | 2 --
 .../main/java/org/apache/camel/builder/script/ScriptBuilder.java  | 2 --
 .../apache/camel/builder/script/ScriptEvaluationException.java    | 2 --
 .../main/java/org/apache/camel/builder/script/ScriptLanguage.java | 3 ---
 .../org/apache/camel/builder/script/ScriptLanguageResolver.java   | 3 ---
 .../src/test/java/org/apache/camel/builder/script/Jsr223Test.java | 3 ---
 .../camel/builder/script/example/AnyLanguageFilterTest.java       | 3 ---
 .../apache/camel/builder/script/example/BeanShellFilterTest.java  | 3 ---
 .../org/apache/camel/builder/script/example/GroovyFilterTest.java | 3 ---
 .../apache/camel/builder/script/example/JavaScriptFilterTest.java | 3 ---
 .../org/apache/camel/language/script/JavaScriptLanguageTest.java  | 3 ---
 .../camel/component/servlet/ServletTransferExceptionTest.java     | 3 ---
 .../org/apache/camel/component/sjms/SjmsHeaderFilterStrategy.java | 3 ---
 .../main/java/org/apache/camel/component/sjms/SjmsMessage.java    | 2 --
 .../org/apache/camel/component/sjms/jms/JmsObjectFactory.java     | 3 ---
 .../java/org/apache/camel/component/sjms/CamelJmsTestHelper.java  | 2 --
 .../java/org/apache/camel/component/sjms/JmsSelectorTest.java     | 3 ---
 .../camel/component/sjms/consumer/EmptyMessageBodyTest.java       | 3 ---
 .../camel/component/sjms/consumer/InOnlyConsumerDefaultTest.java  | 3 ---
 .../camel/component/sjms/consumer/InOnlyConsumerQueueTest.java    | 3 ---
 .../component/sjms/consumer/InOnlyConsumerTempQueueTest.java      | 3 ---
 .../camel/component/sjms/consumer/InOnlyConsumerTopicTest.java    | 3 ---
 .../component/sjms/consumer/InOutConsumerQueueAsyncTest.java      | 3 ---
 .../camel/component/sjms/consumer/InOutConsumerQueueTest.java     | 3 ---
 .../component/sjms/consumer/InOutConsumerTempQueueAsyncTest.java  | 3 ---
 .../camel/component/sjms/consumer/InOutConsumerTempQueueTest.java | 3 ---
 .../camel/component/sjms/consumer/InOutConsumerTopicTest.java     | 3 ---
 .../component/sjms/consumer/InOutSynchronousConsumerTest.java     | 3 ---
 .../org/apache/camel/component/sjms/it/ConnectionResourceIT.java  | 1 -
 .../camel/component/sjms/producer/AsyncQueueProducerTest.java     | 3 ---
 .../camel/component/sjms/producer/AsyncTopicProducerTest.java     | 3 ---
 .../main/java/org/apache/camel/component/smpp/SmppBinding.java    | 2 --
 .../main/java/org/apache/camel/component/smpp/SmppComponent.java  | 3 ---
 .../java/org/apache/camel/component/smpp/SmppConfiguration.java   | 2 --
 .../org/apache/camel/component/smpp/SmppConnectionFactory.java    | 2 --
 .../main/java/org/apache/camel/component/smpp/SmppConsumer.java   | 2 --
 .../main/java/org/apache/camel/component/smpp/SmppProducer.java   | 2 --
 .../java/org/apache/camel/component/smpp/SmppBindingTest.java     | 2 --
 .../java/org/apache/camel/component/smpp/SmppComponentTest.java   | 2 --
 .../org/apache/camel/component/smpp/SmppConfigurationTest.java    | 2 --
 .../apache/camel/component/smpp/SmppConnectionFactoryTest.java    | 2 --
 .../java/org/apache/camel/component/smpp/SmppConsumerTest.java    | 2 --
 .../java/org/apache/camel/component/smpp/SmppMessageTest.java     | 2 --
 .../camel/component/smpp/SmppProducerLazySessionCreationTest.java | 2 --
 .../java/org/apache/camel/component/smpp/SmppProducerTest.java    | 2 --
 .../component/smpp/integration/SmppComponentIntegrationTest.java  | 2 --
 .../smpp/integration/SmppComponentSpringIntegrationTest.java      | 2 --
 .../smpp/integration/SmppConsumerReconnectIntegrationTest.java    | 2 --
 .../smpp/integration/SmppProducerReconnectIntegrationTest.java    | 2 --
 .../org/apache/camel/converter/soap/name/QNameStrategyTest.java   | 3 ---
 .../java/org/apache/camel/dataformat/soap/SoapMarshalTest.java    | 3 ---
 .../org/apache/camel/dataformat/soap12/Soap12MarshalTest.java     | 3 ---
 .../java/org/apache/camel/component/solr/SolrCloudFixture.java    | 3 ---
 .../component/spring/integration/SpringIntegrationBinding.java    | 2 --
 .../component/spring/integration/SpringIntegrationComponent.java  | 2 --
 .../component/spring/integration/SpringIntegrationConsumer.java   | 2 --
 .../component/spring/integration/SpringIntegrationMessage.java    | 2 --
 .../component/spring/integration/SpringIntegrationProducer.java   | 1 -
 .../spring/integration/adapter/AbstractCamelAdapter.java          | 2 --
 .../component/spring/integration/adapter/CamelSourceAdapter.java  | 2 --
 .../component/spring/integration/adapter/CamelTargetAdapter.java  | 2 --
 .../adapter/config/AbstractCamelContextBeanDefinitionParaser.java | 2 --
 .../integration/adapter/config/CamelSourceAdapterParser.java      | 2 --
 .../integration/adapter/config/CamelTargetAdapterParser.java      | 2 --
 .../spring/integration/adapter/config/NamespaceHandler.java       | 2 --
 .../spring/integration/converter/SpringIntegrationConverter.java  | 2 --
 .../org/apache/camel/spring/javaconfig/patterns/FilterTest.java   | 2 --
 .../test/CamelSpringDelegatingTestContextLoaderTest.java          | 1 -
 .../test/java/org/apache/camel/spring/javaconfig/test/Cheese.java | 3 ---
 .../java/org/apache/camel/spring/javaconfig/test/MyConfig.java    | 3 ---
 .../org/apache/camel/spring/javaconfig/test/MyPostProcessor.java  | 2 --
 .../component/spring/security/config/BeanDefinitionParser.java    | 2 --
 .../src/test/java/net/javacrumbs/calc/model/ObjectFactory.java    | 1 -
 .../src/test/java/net/javacrumbs/calc/model/PlusRequest.java      | 1 -
 .../src/test/java/net/javacrumbs/calc/model/PlusResponse.java     | 1 -
 .../springws/test/helper/InMemoryWebServiceMessageSender2.java    | 1 -
 .../main/java/org/apache/camel/component/event/CamelEvent.java    | 2 --
 .../java/org/apache/camel/component/event/EventComponent.java     | 2 --
 .../main/java/org/apache/camel/component/event/EventConsumer.java | 2 --
 .../org/apache/camel/spring/CamelConsumerTemplateFactoryBean.java | 2 --
 .../java/org/apache/camel/spring/CamelEndpointFactoryBean.java    | 2 --
 .../camel/spring/CamelFluentProducerTemplateFactoryBean.java      | 2 --
 .../org/apache/camel/spring/CamelProducerTemplateFactoryBean.java | 2 --
 .../org/apache/camel/spring/CamelRedeliveryPolicyFactoryBean.java | 2 --
 .../java/org/apache/camel/spring/CamelRestContextFactoryBean.java | 2 --
 .../org/apache/camel/spring/CamelRouteContextFactoryBean.java     | 2 --
 .../java/org/apache/camel/spring/CamelThreadPoolFactoryBean.java  | 2 --
 .../org/apache/camel/spring/ContextScanRouteBuilderFinder.java    | 2 --
 .../main/java/org/apache/camel/spring/ErrorHandlerDefinition.java | 2 --
 .../src/main/java/org/apache/camel/spring/ErrorHandlerType.java   | 2 --
 .../org/apache/camel/spring/PackageScanRouteBuilderFinder.java    | 2 --
 .../src/main/java/org/apache/camel/spring/SpringCamelContext.java | 2 --
 .../src/main/java/org/apache/camel/spring/SpringRouteBuilder.java | 2 --
 .../org/apache/camel/spring/handler/BeanDefinitionParser.java     | 2 --
 .../org/apache/camel/spring/spi/ApplicationContextRegistry.java   | 2 --
 .../src/main/java/org/apache/camel/spring/spi/SpringInjector.java | 2 --
 .../java/org/apache/camel/spring/spi/SpringTransactionPolicy.java | 2 --
 .../java/org/apache/camel/spring/spi/TransactionErrorHandler.java | 2 --
 .../apache/camel/spring/spi/TransactionErrorHandlerBuilder.java   | 2 --
 .../org/apache/camel/spring/spi/TransactionRollbackException.java | 2 --
 .../src/main/java/org/apache/camel/spring/util/MainRunner.java    | 2 --
 .../apache/camel/component/bean/AutowireConstructorRouteTest.java | 3 ---
 .../camel/component/bean/AutowireConstructorRouteTwoTest.java     | 3 ---
 .../test/java/org/apache/camel/component/bean/BeanRouteTest.java  | 3 ---
 .../apache/camel/component/bean/BeanWithRecipientListTest.java    | 3 ---
 .../test/java/org/apache/camel/component/bean/ExampleBean.java    | 2 --
 .../src/test/java/org/apache/camel/component/bean/RouterBean.java | 2 --
 .../org/apache/camel/component/dataset/SpringDataSetTest.java     | 3 ---
 .../test/java/org/apache/camel/component/event/DummyEvent.java    | 3 ---
 .../java/org/apache/camel/component/event/EventRouteTest.java     | 3 ---
 .../org/apache/camel/component/event/MistypedPackageTest.java     | 3 ---
 .../apache/camel/component/log/CustomExchangeFormatterTest.java   | 3 ---
 .../java/org/apache/camel/component/log/SpringLogMarkerTest.java  | 3 ---
 .../java/org/apache/camel/component/log/SpringLogMaskTest.java    | 3 ---
 .../test/java/org/apache/camel/component/log/SpringLogTest.java   | 3 ---
 .../properties/SpringAttributeNewLineRouteContextRefTest.java     | 3 ---
 .../camel/component/properties/SpringAttributeNewLineTest.java    | 3 ---
 .../component/properties/SpringBuilderRefBeanInjectTest.java      | 3 ---
 .../component/properties/SpringBuilderRefPropertiesTest.java      | 3 ---
 .../component/properties/SpringBuilderRefPropertyInjectTest.java  | 3 ---
 .../SpringErrorHandlerInlinedPropertiesPlaceholderTest.java       | 3 ---
 .../properties/SpringErrorHandlerPropertiesPlaceholderTest.java   | 3 ---
 .../camel/component/properties/SpringPackagePropertiesTest.java   | 3 ---
 .../component/properties/SpringPackageScanPropertiesTest.java     | 3 ---
 .../properties/SpringPropertiesAfterTransactedDSL2Test.java       | 3 ---
 .../properties/SpringPropertiesAfterTransactedDSLTest.java        | 3 ---
 .../SpringPropertiesComponentEIPChoiceConvertBodyToTest.java      | 3 ---
 .../properties/SpringPropertiesComponentEIPConvertBodyToTest.java | 3 ---
 .../properties/SpringPropertiesComponentInterceptFromTest.java    | 3 ---
 .../properties/SpringPropertiesComponentOnExceptionRefTest.java   | 3 ---
 .../properties/SpringPropertiesComponentOnExceptionTest.java      | 3 ---
 .../component/properties/SpringPropertiesComponentRefTest.java    | 3 ---
 .../camel/component/properties/SpringPropertiesResolver2Test.java | 3 ---
 .../camel/component/properties/SpringPropertiesResolver3Test.java | 3 ---
 .../camel/component/properties/SpringPropertiesResolverTest.java  | 3 ---
 .../camel/component/properties/SpringPropertiesRouteFromTest.java | 2 --
 .../camel/component/properties/SpringPropertiesRouteIdTest.java   | 2 --
 .../properties/SpringPropertyPlaceholderOnExceptionRefTest.java   | 2 --
 .../camel/component/properties/route/SpringSimpleRoute.java       | 3 ---
 .../camel/component/properties/route2/SpringBeanInjectRoute.java  | 3 ---
 .../component/properties/route2/SpringPropertyInjectRoute.java    | 3 ---
 .../test/java/org/apache/camel/component/rest/RestRefTest.java    | 3 ---
 .../camel/component/validator/SpringValidatorRouteTest.java       | 3 ---
 .../org/apache/camel/component/xslt/SpringXsltRouteFileTest.java  | 3 ---
 .../java/org/apache/camel/component/xslt/SpringXsltRouteTest.java | 3 ---
 .../org/apache/camel/spring/ApplicationContextTestSupport.java    | 3 ---
 .../test/java/org/apache/camel/spring/CamelContextAwareBean.java  | 3 ---
 .../test/java/org/apache/camel/spring/CamelContextAwareTest.java  | 3 ---
 .../java/org/apache/camel/spring/CamelContextFactoryBeanTest.java | 3 ---
 .../apache/camel/spring/CustomProcessorWithNamespacesTest.java    | 3 ---
 .../test/java/org/apache/camel/spring/DefaultJMXAgentTest.java    | 2 --
 .../test/java/org/apache/camel/spring/DisableJmxAgentTest.java    | 1 -
 .../test/java/org/apache/camel/spring/DummyLifecycleStrategy.java | 2 --
 .../test/java/org/apache/camel/spring/EndpointReferenceTest.java  | 3 ---
 .../src/test/java/org/apache/camel/spring/InjectedBean.java       | 3 ---
 .../src/test/java/org/apache/camel/spring/InjectedBeanTest.java   | 3 ---
 .../src/test/java/org/apache/camel/spring/JMXAgentTest.java       | 2 --
 .../org/apache/camel/spring/LifecycleStrategyInjectionTest.java   | 2 --
 .../src/test/java/org/apache/camel/spring/MainExampleTest.java    | 3 ---
 .../src/test/java/org/apache/camel/spring/MainTest.java           | 3 ---
 .../src/test/java/org/apache/camel/spring/MainVetoTest.java       | 3 ---
 .../camel/spring/MultipleLifecycleStrategyInjectionTest.java      | 2 --
 .../test/java/org/apache/camel/spring/NodeIdReferenceTest.java    | 3 ---
 .../test/java/org/apache/camel/spring/RegistryInjectionTest.java  | 2 --
 .../apache/camel/spring/RoutingUsingCamelContextFactoryTest.java  | 3 ---
 .../java/org/apache/camel/spring/SpringConsumerTemplateTest.java  | 2 --
 .../java/org/apache/camel/spring/SpringEndpointPropertyTest.java  | 3 ---
 .../org/apache/camel/spring/SpringLogDebugBodyMaxCharsTest.java   | 3 ---
 .../src/test/java/org/apache/camel/spring/SpringMDCTest.java      | 3 ---
 .../apache/camel/spring/SpringMDCWithBreadcrumbDisabledTest.java  | 3 ---
 .../java/org/apache/camel/spring/SpringMDCWithBreadcrumbTest.java | 3 ---
 .../src/test/java/org/apache/camel/spring/SpringTestSupport.java  | 3 ---
 .../java/org/apache/camel/spring/aop/ExceptionInterceptor.java    | 3 ---
 .../src/test/java/org/apache/camel/spring/aop/MyCoolAopBean.java  | 3 ---
 .../apache/camel/spring/aop/SpringAopClassLevelCamelBeanTest.java | 2 --
 .../java/org/apache/camel/spring/bind/BeanAsEndpointTest.java     | 3 ---
 .../src/test/java/org/apache/camel/spring/bind/BeanInfoTest.java  | 3 ---
 .../src/test/java/org/apache/camel/spring/bind/ExampleBean.java   | 2 --
 .../org/apache/camel/spring/bind/ProcessorAsEndpointTest.java     | 3 ---
 .../src/test/java/org/apache/camel/spring/bind/ProcessorStub.java | 3 ---
 .../org/apache/camel/spring/config/AnotherCamelProxyTest.java     | 3 ---
 .../apache/camel/spring/config/CamelContextAutoStartupTest.java   | 3 ---
 .../apache/camel/spring/config/CamelContextFactoryBeanTest.java   | 3 ---
 .../test/java/org/apache/camel/spring/config/CamelProxyTest.java  | 3 ---
 .../org/apache/camel/spring/config/CamelProxyUsingRefTest.java    | 3 ---
 .../camel/spring/config/ConsumerTemplateAlreadyExistTest.java     | 3 ---
 .../camel/spring/config/ConsumerTemplateAutoRegisterTest.java     | 3 ---
 .../camel/spring/config/ConsumerTemplateHasTwoTemplatesTest.java  | 3 ---
 .../camel/spring/config/ConsumerTemplateMaximumCacheSizeTest.java | 3 ---
 .../apache/camel/spring/config/CustomExecutorServiceManager.java  | 3 ---
 .../camel/spring/config/CustomExecutorServiceManagerTest.java     | 3 ---
 .../apache/camel/spring/config/CustomThreadPoolFactoryTest.java   | 3 ---
 .../apache/camel/spring/config/DefaultErrorHandlerConfigTest.java | 3 ---
 .../camel/spring/config/DependencyInjectCamelTemplateTest.java    | 3 ---
 .../camel/spring/config/DualCamelContextEndpointOutsideTest.java  | 3 ---
 .../org/apache/camel/spring/config/DummyErrorHandlerBuilder.java  | 3 ---
 .../apache/camel/spring/config/EndpointUriSetFromSpringTest.java  | 3 ---
 .../spring/config/ErrorHandlerCamelContextRefNotFoundTest.java    | 3 ---
 .../org/apache/camel/spring/config/ErrorHandlerConfigTest.java    | 3 ---
 .../spring/config/ErrorHandlerRouteContextRefNotFoundTest.java    | 3 ---
 .../spring/config/FluentProducerTemplateAutoRegisterTest.java     | 3 ---
 .../test/java/org/apache/camel/spring/config/MyDependsOnBean.java | 3 ---
 .../org/apache/camel/spring/config/MyDependsOnRouteBuilder.java   | 3 ---
 .../test/java/org/apache/camel/spring/config/MyProduceBean.java   | 3 ---
 .../test/java/org/apache/camel/spring/config/MyProxySender.java   | 3 ---
 .../java/org/apache/camel/spring/config/NamespacePrefixTest.java  | 3 ---
 .../camel/spring/config/OnExceptionNoExceptionConfiguredTest.java | 3 ---
 .../config/OneRouteRefOnExceptionAndDLCErrorHandlerTest.java      | 3 ---
 .../config/OneRouteRefOnExceptionAndTwoDLCErrorHandlerTest.java   | 3 ---
 .../apache/camel/spring/config/OneRouteRefOnExceptionTest.java    | 3 ---
 .../OneRouteRefReverseOnExceptionAndDLCErrorHandlerTest.java      | 3 ---
 .../camel/spring/config/OneRouteRefReverseOnExceptionTest.java    | 3 ---
 .../camel/spring/config/ProducerTemplateAlreadyExistTest.java     | 3 ---
 .../config/ProducerTemplateAutoRegisterBeanIdExistsTest.java      | 3 ---
 .../camel/spring/config/ProducerTemplateAutoRegisterTest.java     | 3 ---
 .../config/ProducerTemplateAutoRegisterTwoCamelContextsTest.java  | 3 ---
 .../camel/spring/config/ProducerTemplateHasTwoTemplatesTest.java  | 3 ---
 .../camel/spring/config/ProducerTemplateMaximumCacheSizeTest.java | 3 ---
 .../ProducerTemplateMixedAutoRegisterTwoCamelContextsTest.java    | 3 ---
 .../camel/spring/config/RouteAutoStartupPropertiesTest.java       | 3 ---
 .../java/org/apache/camel/spring/config/RouteBuilderRef2Test.java | 3 ---
 .../java/org/apache/camel/spring/config/RouteBuilderRefTest.java  | 3 ---
 .../apache/camel/spring/config/RouteRefIncludeXmlFileTest.java    | 3 ---
 .../camel/spring/config/RouteRefMultipleCamelContextRefsTest.java | 3 ---
 .../org/apache/camel/spring/config/RouteRefMultipleRefsTest.java  | 3 ---
 .../apache/camel/spring/config/RouteRefMultipleRoutesTest.java    | 3 ---
 .../RouteRefPropertyPlaceholderMultipleCamelContextRefsTest.java  | 3 ---
 .../test/java/org/apache/camel/spring/config/RouteRefTest.java    | 3 ---
 .../camel/spring/config/SpringCamelContextDependsOnTest.java      | 3 ---
 .../camel/spring/config/SpringCamelContextNoDependsOnTest.java    | 3 ---
 .../camel/spring/config/SpringErrorHandlerConfigFallbackTest.java | 3 ---
 .../apache/camel/spring/config/SpringErrorHandlerConfigTest.java  | 3 ---
 .../spring/config/SpringProduceInjectedPrototypeBeanTest.java     | 3 ---
 .../spring/config/SpringProduceInjectedSingletonBeanTest.java     | 3 ---
 .../java/org/apache/camel/spring/config/TemplateUsingBean.java    | 3 ---
 .../config/TwoRouteRefOnExceptionAndDLCErrorHandlerTest.java      | 3 ---
 .../apache/camel/spring/config/TwoRouteRefOnExceptionTest.java    | 3 ---
 .../TwoRouteRefReverseOnExceptionAndDLCErrorHandlerTest.java      | 3 ---
 .../camel/spring/config/TwoRouteRefReverseOnExceptionTest.java    | 3 ---
 .../java/org/apache/camel/spring/config/XmlConfigTestSupport.java | 3 ---
 .../org/apache/camel/spring/example/AnotherFooEventConsumer.java  | 3 ---
 .../org/apache/camel/spring/example/ContentBasedRouteTest.java    | 3 ---
 .../src/test/java/org/apache/camel/spring/example/DummyBean.java  | 3 ---
 .../java/org/apache/camel/spring/example/FooEventConsumer.java    | 3 ---
 .../java/org/apache/camel/spring/example/FooEventRouteTest.java   | 3 ---
 .../java/org/apache/camel/spring/example/MyCamel1Consumer.java    | 3 ---
 .../java/org/apache/camel/spring/example/MyCamel2Consumer.java    | 3 ---
 .../org/apache/camel/spring/example/MyCamel2RecipientList.java    | 3 ---
 .../src/test/java/org/apache/camel/spring/example/MyConsumer.java | 2 --
 .../test/java/org/apache/camel/spring/example/MyProcessor.java    | 3 ---
 .../src/test/java/org/apache/camel/spring/example/MySender.java   | 2 --
 .../test/java/org/apache/camel/spring/example/MyVmConsumer.java   | 2 --
 .../java/org/apache/camel/spring/example/PojoConsumerTest.java    | 3 ---
 .../camel/spring/example/PojoDualCamelContextConsumerTest.java    | 3 ---
 .../test/java/org/apache/camel/spring/example/PojoSenderTest.java | 3 ---
 .../java/org/apache/camel/spring/example/PojoVmConsumerTest.java  | 3 ---
 .../java/org/apache/camel/spring/example/SimpleRouteTest.java     | 3 ---
 .../org/apache/camel/spring/example/SpringExpressionTrimTest.java | 3 ---
 .../org/apache/camel/spring/example/SpringXPathFilterTest.java    | 3 ---
 .../org/apache/camel/spring/example/test1/MyRouteBuilder.java     | 3 ---
 .../camel/spring/file/SpringFileAntPathMatcherFileFilterTest.java | 3 ---
 .../camel/spring/file/SpringFileConsumerPreMoveIssueTest.java     | 3 ---
 .../org/apache/camel/spring/file/SpringFileLanguageCBRTest.java   | 3 ---
 .../java/org/apache/camel/spring/file/SpringFileRouteTest.java    | 3 ---
 .../camel/spring/file/SpringSimpleFileNameWithQuoteTest.java      | 3 ---
 .../org/apache/camel/spring/interceptor/AnnotatedBookStore.java   | 3 ---
 .../org/apache/camel/spring/interceptor/AnnotatedConsume.java     | 3 ---
 .../org/apache/camel/spring/interceptor/AnnotatedConsumeImpl.java | 3 ---
 .../java/org/apache/camel/spring/interceptor/AnnotatedRoute.java  | 3 ---
 .../apache/camel/spring/interceptor/ContainerWideInterceptor.java | 3 ---
 .../camel/spring/interceptor/ContainerWideInterceptorTest.java    | 3 ---
 .../spring/interceptor/MixedStreamCachingInterceptorTest.java     | 3 ---
 .../spring/interceptor/SpringInterceptorStrategyOrderedTest.java  | 3 ---
 .../TransactionalClientDataSourceOnExceptionRedeliveryTest.java   | 3 ---
 .../interceptor/TransactionalClientDataSourceRedeliveryTest.java  | 3 ---
 ...nalClientDataSourceTransactedWithFileLocalOnExceptionTest.java | 3 ---
 ...actionalClientDataSourceTransactedWithFileOnExceptionTest.java | 3 ---
 .../TransactionalClientDataSourceTransactedWithFileTest.java      | 3 ---
 ...SourceWithTransactedErrorHandlerOnExceptionRedeliveryTest.java | 3 ---
 .../interceptor/TransactionalClientWithAnnotatedBeanTest.java     | 3 ---
 .../spring/interceptor/TransactionalClientWithRollbackTest.java   | 2 --
 .../src/test/java/org/apache/camel/spring/issues/CoolService.java | 3 ---
 .../java/org/apache/camel/spring/issues/CustomIdIssuesTest.java   | 3 ---
 .../camel/spring/issues/FileWireTapWithXMLPayloadIssueTest.java   | 3 ---
 .../src/test/java/org/apache/camel/spring/issues/MyCoolRoute.java | 3 ---
 .../src/test/java/org/apache/camel/spring/issues/MyCoolStuff.java | 3 ---
 .../org/apache/camel/spring/issues/MyInjectionRouteBuilder.java   | 3 ---
 .../test/java/org/apache/camel/spring/issues/MyRouteBuilder.java  | 3 ---
 .../test/java/org/apache/camel/spring/issues/MyStatefulBean.java  | 3 ---
 .../camel/spring/issues/ProduceSplitMethodCallIssueTest.java      | 3 ---
 .../org/apache/camel/spring/issues/SpringCatchNestedFailTest.java | 3 ---
 .../issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.java    | 3 ---
 .../apache/camel/spring/issues/SpringFinallyNestedFailTest.java   | 3 ---
 .../java/org/apache/camel/spring/issues/SpringPackageTest.java    | 3 ---
 .../issues/SpringPropertyPlaceholderFileEndpointIssueTest.java    | 3 ---
 .../camel/spring/issues/SpringPropertyPlaceholderIssueTest.java   | 3 ---
 .../camel/spring/issues/SpringRenameFileOnCommitIssueTest.java    | 3 ---
 .../camel/spring/issues/SpringSingletonScopedBeanIssueTest.java   | 3 ---
 ...ansactionErrorHandlerAndContextScopedOnExceptionIssueTest.java | 3 ---
 .../spring/issues/SpringTryCatchFinallyAndErrorHandlerTest.java   | 3 ---
 .../camel/spring/issues/SpringTryCatchWithSplitIssueTest.java     | 3 ---
 .../spring/issues/SpringTryCatchWithSplitNotHandledIssueTest.java | 3 ---
 .../org/apache/camel/spring/issues/SpringTryNestedFailTest.java   | 3 ---
 .../spring/issues/SpringTwoCamelContextDirectEndpointTest.java    | 3 ---
 .../java/org/apache/camel/spring/issues/contextscan/MyRoute.java  | 3 ---
 .../issues/contextscan/SpringRouteIsComponentAnnotatedTest.java   | 3 ---
 .../org/apache/camel/spring/issues/contextscan2/MyOtherRoute.java | 3 ---
 .../issues/contextscan2/SpringRouteIsComponentAnnotated2Test.java | 3 ---
 .../management/DualCamelContextManagedAutoAssignedNameTest.java   | 3 ---
 .../camel/spring/management/DualCamelContextManagedTest.java      | 3 ---
 .../java/org/apache/camel/spring/management/MyEventNotifier.java  | 3 ---
 .../spring/management/SpringDualLoggingEventNotifierTest.java     | 3 ---
 .../camel/spring/management/SpringJmxDumpCBRRoutesAsXmlTest.java  | 3 ---
 .../management/SpringJmxDumpRoutesAsXmlIncludeHostNameTest.java   | 3 ---
 .../camel/spring/management/SpringJmxDumpRoutesAsXmlTest.java     | 3 ---
 .../spring/management/SpringJmxEndpointInjectBeanRefTest.java     | 3 ---
 .../spring/management/SpringJmxEndpointInjectBeanRefTwoTest.java  | 3 ---
 .../camel/spring/management/SpringJmxEndpointInjectBeanTest.java  | 3 ---
 .../management/SpringJmxRecipientListRegisterAlwaysTest.java      | 3 ---
 .../camel/spring/management/SpringJmxRecipientListTest.java       | 3 ---
 .../camel/spring/management/SpringLoggingEventNotifierTest.java   | 3 ---
 .../camel/spring/management/SpringManagedCustomProcessorTest.java | 3 ---
 .../camel/spring/management/SpringManagedErrorHandlerTest.java    | 3 ---
 .../spring/management/SpringManagedNamePatternFixedTest.java      | 3 ---
 .../camel/spring/management/SpringManagedNamePatternTest.java     | 3 ---
 .../SpringManagedRouteRemoveContextScopedErrorHandlerTest.java    | 3 ---
 ...ngManagedRouteRemoveRouteAndContextScopedErrorHandlerTest.java | 3 ---
 .../SpringManagedRouteRemoveRouteScopedErrorHandlerTest.java      | 3 ---
 .../apache/camel/spring/management/SpringManagedSanitizeTest.java | 3 ---
 .../spring/management/SpringManagedStatisticsLevelOffTest.java    | 3 ---
 .../management/SpringManagedStatisticsLevelRoutesOnlyTest.java    | 3 ---
 .../camel/spring/management/SpringPublishEventNotifierTest.java   | 3 ---
 .../src/test/java/org/apache/camel/spring/mock/BeanMockTest.java  | 3 ---
 .../spring/mock/InterceptSendToMockEndpointStrategyTest.java      | 3 ---
 .../src/test/java/org/apache/camel/spring/mock/MyAssertions.java  | 2 --
 .../test/java/org/apache/camel/spring/patterns/FilterTest.java    | 4 +---
 .../postprocessor/CamelCustomPostProcessorOnRouteBuilderTest.java | 3 ---
 .../org/apache/camel/spring/postprocessor/MagicAnnotation.java    | 3 ---
 .../spring/postprocessor/MyRouteBuilderWithAutowiredPojo.java     | 3 ---
 .../PlainSpringCustomPostProcessorOnRouteBuilderTest.java         | 3 ---
 .../test/java/org/apache/camel/spring/postprocessor/TestPojo.java | 3 ---
 .../test/java/org/apache/camel/spring/processor/MyAggregator.java | 2 --
 .../test/java/org/apache/camel/spring/processor/MyCoolBean.java   | 3 ---
 .../test/java/org/apache/camel/spring/processor/MyProcessor.java  | 2 --
 .../camel/spring/processor/SpringAggregateFromWireTapTest.java    | 3 ---
 .../spring/processor/SpringAggregatorWithCustomStrategyTest.java  | 3 ---
 .../processor/SpringBatchResequencerAllowDuplicatesTest.java      | 3 ---
 .../spring/processor/SpringBatchResequencerJMSPriorityTest.java   | 3 ---
 .../camel/spring/processor/SpringCBRHeaderPredicateTest.java      | 3 ---
 .../java/org/apache/camel/spring/processor/SpringChoiceTest.java  | 3 ---
 .../camel/spring/processor/SpringComplexBlockWithEndTest.java     | 3 ---
 .../apache/camel/spring/processor/SpringCustomExpressionTest.java | 3 ---
 .../apache/camel/spring/processor/SpringCustomPredicateTest.java  | 3 ---
 .../camel/spring/processor/SpringCustomProcessorFactoryTest.java  | 3 ---
 .../SpringDeadLetterChannelLogExhaustedMessageHistoryTest.java    | 3 ---
 .../spring/processor/SpringDeadLetterChannelNoRedeliveryTest.java | 3 ---
 .../processor/SpringDeadLetterChannelUseOriginalBodyNewTest.java  | 3 ---
 .../processor/SpringDeadLetterChannelUseOriginalBodyTest.java     | 3 ---
 .../SpringDeadLetterChannelUseOriginalBodyWithFileTest.java       | 3 ---
 .../SpringDefaultErrorHandlerExchangeFormatterRefTest.java        | 3 ---
 .../SpringDefaultErrorHandlerLogExhaustedMessageHistoryTest.java  | 3 ---
 .../spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java | 3 ---
 .../apache/camel/spring/processor/SpringDelayerPerRouteTest.java  | 3 ---
 .../processor/SpringErrorHandlerRedeliveryPolicyProfileTest.java  | 3 ---
 .../processor/SpringEventNotifierExchangeSentExampleTest.java     | 3 ---
 .../processor/SpringFailoverMaximumFailoverAttemptsTest.java      | 3 ---
 .../spring/processor/SpringFailoverRoundRobinStickyTest.java      | 3 ---
 .../camel/spring/processor/SpringFailoverRoundRobinTest.java      | 3 ---
 .../apache/camel/spring/processor/SpringFilterNoChildTest.java    | 3 ---
 .../java/org/apache/camel/spring/processor/SpringFilterTest.java  | 3 ---
 .../org/apache/camel/spring/processor/SpringFromEndpointTest.java | 3 ---
 .../camel/spring/processor/SpringFromMultipleEndpointTest.java    | 3 ---
 .../camel/spring/processor/SpringHandleFaultPerRouteTest.java     | 3 ---
 .../SpringIdempotentConsumerNoSkipDuplicateFilterTest.java        | 3 ---
 .../processor/SpringIdempotentConsumerNoSkipDuplicateTest.java    | 3 ---
 .../camel/spring/processor/SpringIdempotentConsumerTest.java      | 3 ---
 .../spring/processor/SpringInheritErrorHandlerDefaultTest.java    | 3 ---
 .../spring/processor/SpringInheritErrorHandlerFalseTest.java      | 3 ---
 .../camel/spring/processor/SpringInheritErrorHandlerTrueTest.java | 3 ---
 .../processor/SpringInterceptSendToEndpointDynamicTest.java       | 3 ---
 .../processor/SpringInterceptSendToEndpointInOnExceptionTest.java | 3 ---
 .../spring/processor/SpringInterceptSendToEndpointSkipTest.java   | 3 ---
 .../camel/spring/processor/SpringInterceptSendToEndpointTest.java | 3 ---
 .../spring/processor/SpringInterceptSendToEndpointWhenTest.java   | 3 ---
 .../org/apache/camel/spring/processor/SpringLoopCopyTest.java     | 3 ---
 .../org/apache/camel/spring/processor/SpringLoopDoWhileTest.java  | 3 ---
 .../org/apache/camel/spring/processor/SpringLoopNoCopyTest.java   | 3 ---
 .../java/org/apache/camel/spring/processor/SpringLoopTest.java    | 3 ---
 .../spring/processor/SpringMessageHistoryDumpRoutingTest.java     | 3 ---
 .../org/apache/camel/spring/processor/SpringMethodCallTest.java   | 3 ---
 .../spring/processor/SpringMulticastNoStopOnExceptionTest.java    | 3 ---
 .../camel/spring/processor/SpringMulticastOnPrepareTest.java      | 3 ---
 .../spring/processor/SpringMulticastStopOnExceptionTest.java      | 3 ---
 .../camel/spring/processor/SpringMulticastSubUnitOfWorkTest.java  | 3 ---
 .../camel/spring/processor/SpringNestedChoiceIssueTest.java       | 3 ---
 .../SpringOnCompletionAndInterceptAndOnExceptionGlobalTest.java   | 3 ---
 .../processor/SpringOnCompletionAndInterceptGlobalTest.java       | 3 ---
 .../spring/processor/SpringOnCompletionAndInterceptTest.java      | 3 ---
 .../camel/spring/processor/SpringOnCompletionGlobalTest.java      | 3 ---
 .../apache/camel/spring/processor/SpringOnCompletionModeTest.java | 3 ---
 .../spring/processor/SpringOnCompletionOnCompleteOnlyTest.java    | 3 ---
 .../spring/processor/SpringOnCompletionOnFailureOnlyTest.java     | 3 ---
 .../SpringOnCompletionRouteScopeOverrideGlobalScopeTest.java      | 3 ---
 .../org/apache/camel/spring/processor/SpringOnCompletionTest.java | 3 ---
 .../spring/processor/SpringOnCompletionUseOriginalBodyTest.java   | 3 ---
 .../apache/camel/spring/processor/SpringOnCompletionWhenTest.java | 3 ---
 .../spring/processor/SpringOnExceptionContinueToRouteTest.java    | 3 ---
 .../camel/spring/processor/SpringPolicyPerProcessorTest.java      | 3 ---
 .../apache/camel/spring/processor/SpringPolicyPerRouteTest.java   | 3 ---
 .../camel/spring/processor/SpringRecipientListOnPrepareTest.java  | 3 ---
 .../spring/processor/SpringRecipientListSubUnitOfWorkTest.java    | 3 ---
 .../camel/spring/processor/SpringRedeliverToSubRouteTest.java     | 3 ---
 .../SpringRedeliveryErrorHandlerNoRedeliveryOnShutdownTest.java   | 3 ---
 .../processor/SpringResequenceStreamRejectOldExchangesTest.java   | 3 ---
 .../org/apache/camel/spring/processor/SpringResequencerTest.java  | 3 ---
 .../camel/spring/processor/SpringRouteNoAutoStartupTest.java      | 3 ---
 .../apache/camel/spring/processor/SpringRoutePoliciesTest.java    | 3 ---
 .../camel/spring/processor/SpringRouteStartupOrderSimpleTest.java | 3 ---
 .../camel/spring/processor/SpringRouteStartupOrderTest.java       | 3 ---
 .../spring/processor/SpringRouteStartupOrderWithDefaultTest.java  | 3 ---
 .../SpringRouteWithConstantFieldFromExchangeFailTest.java         | 3 ---
 .../processor/SpringRouteWithConstantFieldFromExchangeTest.java   | 3 ---
 .../apache/camel/spring/processor/SpringScriptExternalTest.java   | 3 ---
 .../java/org/apache/camel/spring/processor/SpringScriptTest.java  | 3 ---
 .../org/apache/camel/spring/processor/SpringSetFaultBodyTest.java | 3 ---
 .../spring/processor/SpringShutdownCompleteAllTasksTest.java      | 3 ---
 .../processor/SpringShutdownCompleteCurrentTaskOnlyTest.java      | 3 ---
 .../camel/spring/processor/SpringSplitCustomExpressionTest.java   | 3 ---
 .../camel/spring/processor/SpringSplitGroupMultiLinesTest.java    | 3 ---
 .../camel/spring/processor/SpringSplitGroupSkipFirstTest.java     | 3 ---
 .../camel/spring/processor/SpringSplitSubUnitOfWorkTest.java      | 3 ---
 .../spring/processor/SpringSplitTokenizerGroupDynamicTest.java    | 3 ---
 .../org/apache/camel/spring/processor/SpringSplitterBodyTest.java | 3 ---
 .../camel/spring/processor/SpringSplitterMethodCallTest.java      | 3 ---
 .../spring/processor/SpringSplitterNoStopOnExceptionTest.java     | 3 ---
 .../camel/spring/processor/SpringSplitterOnPrepareTest.java       | 3 ---
 .../camel/spring/processor/SpringSplitterStopOnExceptionTest.java | 3 ---
 .../camel/spring/processor/SpringStreamCachingPerRouteTest.java   | 3 ---
 .../camel/spring/processor/SpringStreamCachingStrategyTest.java   | 3 ---
 .../java/org/apache/camel/spring/processor/SpringTestHelper.java  | 3 ---
 .../spring/processor/SpringThrottlingInflightRoutePolicyTest.java | 3 ---
 .../camel/spring/processor/SpringThrowExceptionMessageTest.java   | 3 ---
 .../apache/camel/spring/processor/SpringThrowExceptionTest.java   | 3 ---
 .../org/apache/camel/spring/processor/SpringTokenizerTest.java    | 3 ---
 .../java/org/apache/camel/spring/processor/SpringTraceTest.java   | 3 ---
 .../camel/spring/processor/SpringTraceUsingPropertyTest.java      | 3 ---
 .../org/apache/camel/spring/processor/SpringTransformTest.java    | 3 ---
 .../apache/camel/spring/processor/SpringValidateRegExpTest.java   | 3 ---
 .../camel/spring/processor/SpringWireTapExpressionTest.java       | 3 ---
 .../apache/camel/spring/processor/SpringWireTapOnPrepareTest.java | 3 ---
 .../org/apache/camel/spring/processor/SpringXPathFilterTest.java  | 3 ---
 .../spring/processor/SpringXPathFilterWithNamespaceTest.java      | 3 ---
 .../src/test/java/org/apache/camel/spring/processor/XsltTest.java | 3 ---
 .../aggregator/SpringAggregateCompleteAllOnStopTest.java          | 3 ---
 .../aggregator/SpringAggregateCompletionIntervalTest.java         | 3 ---
 .../processor/aggregator/SpringAggregateControllerTest.java       | 3 ---
 .../processor/aggregator/SpringAggregateDiscardOnTimeoutTest.java | 3 ---
 .../aggregator/SpringAggregateExpressionSizeFallbackTest.java     | 3 ---
 .../processor/aggregator/SpringAggregateExpressionSizeTest.java   | 3 ---
 .../aggregator/SpringAggregateExpressionTimeoutFallbackTest.java  | 3 ---
 .../aggregator/SpringAggregateExpressionTimeoutPerGroupTest.java  | 3 ---
 .../aggregator/SpringAggregateExpressionTimeoutTest.java          | 3 ---
 .../aggregator/SpringAggregateForceCompletionOnStopTest.java      | 3 ---
 ...pringAggregateGroupedExchangeCompletionExpressionSizeTest.java | 3 ---
 .../aggregator/SpringAggregateSimplePredicateEagerTest.java       | 3 ---
 .../processor/aggregator/SpringAggregateSimplePredicateTest.java  | 3 ---
 .../processor/aggregator/SpringAggregateSimpleSizeTest.java       | 3 ---
 .../processor/aggregator/SpringAggregateSimpleTimeoutTest.java    | 3 ---
 .../aggregator/SpringAggregateThreadPoolProfileTest.java          | 3 ---
 .../SpringAggregationStrategyBeanAdapterAllowNullTest.java        | 3 ---
 .../SpringAggregationStrategyBeanAdapterRefMethodNameTest.java    | 3 ---
 .../aggregator/SpringAggregationStrategyBeanAdapterRefTest.java   | 3 ---
 .../camel/spring/processor/aggregator/SpringAggregatorTest.java   | 3 ---
 .../onexception/SpringOnExceptionContinueSubRouteTest.java        | 3 ---
 .../onexception/SpringOnExceptionContinueSubSubRouteTest.java     | 3 ---
 .../processor/onexception/SpringOnExceptionContinueTest.java      | 3 ---
 .../SpringOnExceptionFromChoiceUseOriginalBodyTest.java           | 3 ---
 .../onexception/SpringOnExceptionLoadBalancerDoubleIssueTest.java | 3 ---
 .../SpringOnExceptionOccurredProcessorOnExceptionTest.java        | 3 ---
 .../onexception/SpringOnExceptionOccurredProcessorTest.java       | 3 ---
 .../onexception/SpringOnExceptionUseOriginalBodyTest.java         | 3 ---
 .../onexception/SpringOnExceptionUseOriginalMessageTest.java      | 3 ---
 .../onexception/SpringOnExceptionWithRouteAndContinueTest.java    | 3 ---
 .../src/test/java/org/apache/camel/spring/produce/MyCoolBean.java | 3 ---
 .../src/test/java/org/apache/camel/spring/produce/MyListener.java | 3 ---
 .../java/org/apache/camel/spring/produce/MyListenerService.java   | 3 ---
 .../test/java/org/apache/camel/spring/produce/ProduceTest.java    | 3 ---
 .../src/test/java/org/apache/camel/spring/remoting/Echo.java      | 3 ---
 .../src/test/java/org/apache/camel/spring/remoting/EchoPojo.java  | 3 ---
 .../java/org/apache/camel/spring/remoting/EchoPojoDirect.java     | 3 ---
 .../test/java/org/apache/camel/spring/remoting/EchoService.java   | 3 ---
 .../camel/spring/remoting/EchoSpringRemotingPojoDirectTest.java   | 3 ---
 .../apache/camel/spring/remoting/EchoSpringRemotingPojoTest.java  | 3 ---
 .../remoting/EchoSpringRemotingThrowingRuntimeExceptionTest.java  | 3 ---
 ...tiArgumentsWithDefaultBindingSpringRemotingPojoDirectTest.java | 3 ---
 .../org/apache/camel/spring/remoting/MyEchoRuntimeException.java  | 3 ---
 .../remoting/MyMultiArgumentSpringRemotingPojoDirectTest.java     | 3 ---
 .../camel/spring/remoting/SpringRemotingBeanConverterTest.java    | 3 ---
 .../org/apache/camel/spring/remoting/SpringRemotingRouteTest.java | 3 ---
 .../camel/spring/remoting/SpringRemotingWithOneWayTest.java       | 3 ---
 .../SpringRemotingWithServiceExportAndNamespacesRouteTest.java    | 3 ---
 .../spring/remoting/SpringRemotingWithServiceExportRouteTest.java | 3 ---
 .../apache/camel/spring/routebuilder/CamelRouteBuilderTest.java   | 3 ---
 .../java/org/apache/camel/spring/routebuilder/MyOtherRoute.java   | 3 ---
 .../test/java/org/apache/camel/spring/routebuilder/MyRoute.java   | 3 ---
 .../java/org/apache/camel/spring/util/EndpointHelperTest.java     | 3 ---
 .../test/java/org/apache/camel/spring/util/MainRunnerTest.java    | 3 ---
 .../java/org/apache/camel/spring/xml/ConfiguredRouteBuilder.java  | 3 ---
 .../java/org/apache/camel/spring/xml/ConfiguredRouteBuilder2.java | 3 ---
 .../org/apache/camel/spring/xml/SpringXmlRouteBuilderTest.java    | 2 --
 .../main/java/org/apache/camel/component/sql/SqlComponent.java    | 1 -
 .../org/apache/camel/component/sql/SpringSqlEndpointLikeTest.java | 3 ---
 .../org/apache/camel/component/sql/SpringSqlMultilineTest.java    | 3 ---
 .../java/org/apache/camel/component/sql/SqlDataSourceRefTest.java | 3 ---
 .../java/org/apache/camel/component/sql/SqlEndpointLikeTest.java  | 3 ---
 .../test/java/org/apache/camel/component/sql/SqlEndpointTest.java | 3 ---
 .../org/apache/camel/component/sql/SqlPreserveHeaderTest.java     | 3 ---
 .../sql/SqlProducerAlwaysPopulateStatementFalseTest.java          | 3 ---
 .../component/sql/SqlProducerAlwaysPopulateStatementTest.java     | 3 ---
 .../org/apache/camel/component/sql/SqlProducerConcurrentTest.java | 3 ---
 .../camel/component/sql/SqlProducerExpressionParameterTest.java   | 3 ---
 .../org/apache/camel/component/sql/SqlProducerInsertNullTest.java | 3 ---
 .../java/org/apache/camel/component/sql/SqlProducerJSONTest.java  | 3 ---
 .../component/sql/SqlProducerNamedParameterNotExistTest.java      | 3 ---
 .../apache/camel/component/sql/SqlProducerNamedParameterTest.java | 3 ---
 .../camel/component/sql/SqlProducerNamedParametersTest.java       | 3 ---
 .../apache/camel/component/sql/SqlProducerNullBodyHeaderTest.java | 3 ---
 .../org/apache/camel/component/sql/SqlProducerNullBodyTest.java   | 3 ---
 .../camel/component/sql/SqlProducerOutputTypeSelectListTest.java  | 3 ---
 .../sql/SqlProducerOutputTypeSelectListWithClassTest.java         | 3 ---
 .../camel/component/sql/SqlProducerOutputTypeSelectOneTest.java   | 3 ---
 .../camel/component/sql/SqlProducerParametersCountTest.java       | 3 ---
 .../apache/camel/component/sql/SqlProducerReuseParameterTest.java | 3 ---
 .../org/apache/camel/component/sql/SqlProducerSeparatorTest.java  | 3 ---
 .../test/java/org/apache/camel/component/sql/SqlRouteTest.java    | 3 ---
 .../org/apache/camel/component/sql/SqlTransactedRouteTest.java    | 3 ---
 .../org/apache/camel/component/stream/StreamGroupLinesTest.java   | 3 ---
 .../camel/component/stringtemplate/StringTemplateComponent.java   | 3 ---
 .../component/stringtemplate/StringTemplateConcurrentTest.java    | 3 ---
 .../org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java | 1 -
 .../dataformat/tagsoup/TidyMarkupDataFormatAsDomNodeTest.java     | 3 ---
 .../dataformat/tagsoup/TidyMarkupDataFormatAsStringTest.java      | 3 ---
 .../java/org/apache/camel/test/junit4/ExchangeTestSupport.java    | 2 --
 .../src/main/java/org/apache/camel/test/junit4/TestSupport.java   | 2 --
 .../test/java/org/apache/camel/test/patterns/DebugJUnit4Test.java | 3 ---
 .../apache/camel/test/patterns/DebugNoLazyTypeConverterTest.java  | 3 ---
 .../src/test/java/org/apache/camel/test/patterns/DebugTest.java   | 3 ---
 .../camel/test/patterns/FilterCreateCamelContextPerClassTest.java | 2 --
 .../org/apache/camel/test/patterns/FilterFluentTemplateTest.java  | 2 --
 .../java/org/apache/camel/test/patterns/FilterJUnit4Test.java     | 2 --
 .../src/test/java/org/apache/camel/test/patterns/FilterTest.java  | 2 --
 .../camel/test/patterns/IsMockEndpointsAndSkipJUnit4Test.java     | 3 ---
 .../org/apache/camel/test/patterns/IsMockEndpointsFileTest.java   | 3 ---
 .../org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java | 3 ---
 .../java/org/apache/camel/test/patterns/IsMockEndpointsTest.java  | 3 ---
 .../org/apache/camel/component/velocity/VelocityComponent.java    | 3 ---
 .../camel/component/velocity/VelocityBodyAsDomainObjectTest.java  | 2 --
 .../apache/camel/component/velocity/VelocityConcurrentTest.java   | 3 ---
 .../org/apache/camel/component/velocity/VelocityEndpointTest.java | 3 ---
 .../apache/camel/component/velocity/VelocitySetHeaderTest.java    | 3 ---
 .../camel/component/velocity/VelocityTemplateInHeaderTest.java    | 3 ---
 .../org/apache/camel/component/vertx/VertxRequestReplyTest.java   | 3 ---
 .../org/apache/camel/component/vertx/VertxRoutePubSubTest.java    | 3 ---
 .../java/org/apache/camel/component/vertx/VertxRouteTest.java     | 3 ---
 .../apache/camel/component/weather/http/AuthenticationMethod.java | 2 --
 .../apache/camel/component/weather/http/HttpClientConfigurer.java | 2 --
 .../xmlsecurity/api/DefaultXAdESSignatureProperties.java          | 1 -
 .../camel/component/xmlsecurity/api/XAdESEncapsulatedPKIData.java | 1 -
 .../camel/component/xmlsecurity/api/XmlSignatureChecker.java      | 1 -
 .../camel/dataformat/xmlsecurity/XMLSecurityConcurrencyTest.java  | 3 ---
 .../main/java/org/apache/camel/component/xmpp/XmppComponent.java  | 3 ---
 .../org/apache/camel/component/xmpp/XmppGroupChatProducer.java    | 3 ---
 .../org/apache/camel/component/xmpp/XmppPrivateChatProducer.java  | 3 ---
 .../org/apache/camel/component/xmpp/UriConfigurationTest.java     | 3 ---
 .../org/apache/camel/component/xmpp/XmppMultiUserChatTest.java    | 3 ---
 .../apache/camel/component/xmpp/XmppProducerConcurrentTest.java   | 3 ---
 .../java/org/apache/camel/component/xmpp/XmppRouteChatTest.java   | 3 ---
 .../xmpp/XmppRouteMultipleProducersSingleConsumerTest.java        | 3 ---
 .../java/org/apache/camel/dataformat/xstream/JsonDataFormat.java  | 2 --
 .../org/apache/camel/dataformat/xstream/XStreamDataFormat.java    | 2 --
 .../java/org/apache/camel/dataformat/xstream/PurchaseOrder.java   | 3 ---
 .../dataformat/xstream/SpringMarshalDomainObjectJSONTest.java     | 3 ---
 .../camel/dataformat/xstream/SpringMarshalOmitFieldsTest.java     | 3 ---
 .../apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java | 3 ---
 .../apache/camel/dataformat/xstream/XStreamConcurrencyTest.java   | 3 ---
 .../camel/dataformat/xstream/XStreamDataFormatOmitFieldsTest.java | 3 ---
 .../org/apache/camel/dataformat/xstream/XStreamTestUtils.java     | 3 ---
 .../zookeepermaster/group/internal/ZooKeeperGroupFactory.java     | 2 --
 .../java/org/apache/camel/example/NumberAggregationStrategy.java  | 2 --
 .../main/java/org/apache/camel/example/cafe/CafeRouteBuilder.java | 2 --
 .../java/org/apache/camel/example/cafe/CafeRouteBuilderTest.java  | 3 ---
 .../main/java/org/apache/camel/example/cxf/proxy/EnrichBean.java  | 2 --
 .../src/main/java/org/apache/camel/example/cxf/proxy/MyMain.java  | 2 --
 .../org/apache/camel/example/cxf/proxy/RealWebServiceBean.java    | 2 --
 .../camel/example/cxf/proxy/ReportIncidentEndpointService.java    | 2 --
 .../src/main/java/org/apache/camel/example/cxf/CamelRoute.java    | 2 --
 .../org/apache/camel/example/cxf/incident/IncidentService.java    | 2 --
 .../apache/camel/example/cxf/incident/InputReportIncident.java    | 3 ---
 .../apache/camel/example/cxf/incident/InputStatusIncident.java    | 3 ---
 .../apache/camel/example/cxf/incident/OutputReportIncident.java   | 3 ---
 .../apache/camel/example/cxf/incident/OutputStatusIncident.java   | 3 ---
 .../java/org/apache/camel/example/management/StockService.java    | 3 ---
 .../apache/camel/example/management/ManagementExampleTest.java    | 3 ---
 .../java/org/apache/camel/example/micrometer/IntegrationTest.java | 3 ---
 .../java/org/apache/camel/example/springboot/UserService.java     | 1 -
 .../apache/camel/example/spring/javaconfig/IntegrationTest.java   | 3 ---
 .../main/java/org/apache/camel/example/spring/MyRouteBuilder.java | 2 --
 .../java/org/apache/camel/example/spring/IntegrationTest.java     | 3 ---
 .../org/apache/camel/component/cxf/jaxrs/testbean/Customer.java   | 4 ----
 .../camel/component/cxf/jaxrs/testbean/CustomerService.java       | 4 ----
 .../java/org/apache/camel/component/cxf/jaxrs/testbean/Order.java | 4 ----
 .../org/apache/camel/component/cxf/jaxrs/testbean/Product.java    | 4 ----
 .../apache/camel/itest/standalone/CamelContextStandaloneTest.java | 3 ---
 .../src/test/java/org/apache/camel/itest/CamelJmsTestHelper.java  | 2 --
 .../java/org/apache/camel/itest/async/HttpAsyncCallbackTest.java  | 3 ---
 .../test/java/org/apache/camel/itest/async/HttpAsyncDslTest.java  | 3 ---
 .../src/test/java/org/apache/camel/itest/async/HttpAsyncTest.java | 3 ---
 .../src/test/java/org/apache/camel/itest/async/HttpSyncTest.java  | 3 ---
 .../test/java/org/apache/camel/itest/async/MyAsyncComponent.java  | 3 ---
 .../test/java/org/apache/camel/itest/async/MyAsyncEndpoint.java   | 3 ---
 .../test/java/org/apache/camel/itest/async/MyAsyncProducer.java   | 3 ---
 .../org/apache/camel/itest/idempotent/IdempotentConsumerTest.java | 3 ---
 .../apache/camel/itest/idempotent/JdbcIdempotentRepository.java   | 3 ---
 .../src/test/java/org/apache/camel/itest/issues/BaseClass.java    | 3 ---
 .../org/apache/camel/itest/issues/BeanCallDerivedClassTest.java   | 3 ---
 .../src/test/java/org/apache/camel/itest/issues/DerivedClass.java | 3 ---
 .../java/org/apache/camel/itest/issues/RemoveEndpointsTest.java   | 3 ---
 .../java/org/apache/camel/itest/issues/RssToHttpIssueTest.java    | 3 ---
 .../org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java   | 3 ---
 .../org/apache/camel/itest/jetty/JettyConstantSetHeaderTest.java  | 3 ---
 .../org/apache/camel/itest/jetty/JettyFailoverRoundRobinTest.java | 3 ---
 .../org/apache/camel/itest/jetty/JettyGroovySetHeaderTest.java    | 3 ---
 .../org/apache/camel/itest/jetty/JettySimpleSetHeaderTest.java    | 3 ---
 .../camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java    | 3 ---
 .../camel/itest/jetty/JettySpringFailoverRoundRobinTest.java      | 3 ---
 .../org/apache/camel/itest/jetty/JettyValidatorStreamTest.java    | 3 ---
 .../jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java   | 3 ---
 .../java/org/apache/camel/itest/jms/InvalidOrderException.java    | 3 ---
 .../src/test/java/org/apache/camel/itest/jms/JmsHttpJmsTest.java  | 2 --
 .../java/org/apache/camel/itest/jms/JmsHttpPostIssueTest.java     | 2 --
 .../org/apache/camel/itest/jms/JmsHttpPostIssueWithMockTest.java  | 2 --
 .../test/java/org/apache/camel/itest/jms/JmsIntegrationTest.java  | 3 ---
 .../src/test/java/org/apache/camel/itest/jms/JmsJaxbTest.java     | 3 ---
 .../org/apache/camel/itest/jms/JmsMediumQueuePerformanceTest.java | 3 ---
 .../test/java/org/apache/camel/itest/jms/JmsPerformanceTest.java  | 3 ---
 .../test/java/org/apache/camel/itest/jms/JmsPollEnrichTest.java   | 3 ---
 .../java/org/apache/camel/itest/jms/JmsPollingConsumerTest.java   | 3 ---
 .../test/java/org/apache/camel/itest/jms/JmsValidatorTest.java    | 3 ---
 .../src/test/java/org/apache/camel/itest/jms/PurchaseOrder.java   | 3 ---
 .../java/org/apache/camel/itest/jms/SpringJmsValidatorTest.java   | 3 ---
 .../test/java/org/apache/camel/itest/tx/Jms2RequiresNewTest.java  | 2 --
 .../src/test/java/org/apache/camel/itest/tx/JmsToHttpRoute.java   | 2 --
 .../src/test/java/org/apache/camel/itest/tx/JmsToHttpTXTest.java  | 2 --
 ...WithOnExceptionAndNoTransactionErrorHandlerConfiguredTest.java | 2 --
 .../org/apache/camel/itest/tx/JmsToHttpTXWithOnExceptionTest.java | 2 --
 .../org/apache/camel/itest/tx/JmsToHttpTXWithRollbackTest.java    | 2 --
 ...ithOnExceptionAndNoTransactionErrorHandlerConfiguredRoute.java | 2 --
 .../org/apache/camel/itest/tx/JmsToHttpWithOnExceptionRoute.java  | 2 --
 .../org/apache/camel/itest/tx/JmsToHttpWithRollbackRoute.java     | 2 --
 .../test/java/org/apache/camel/tests/partialclasspath/MyBean.java | 3 ---
 .../java/org/apache/camel/tests/partialclasspath/MyConverter.java | 3 ---
 .../java/org/apache/camel/tests/partialclasspath/RouteTest.java   | 3 ---
 .../java/org/apache/camel/tests/typeconverterscan/MyBean.java     | 3 ---
 .../org/apache/camel/tests/typeconverterscan/MyConverter.java     | 3 ---
 .../java/org/apache/camel/tests/typeconverterscan/RouteTest.java  | 3 ---
 3764 files changed, 11 insertions(+), 10176 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java b/camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java
index 285348d..bb03615 100644
--- a/camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java
+++ b/camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Exception thrown in situations when a {@link Service} has already been stopped.
- *
- * @version 
  */
 public class AlreadyStoppedException extends CamelException {
     private static final long serialVersionUID = -8721487434390572639L;
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncCallback.java b/camel-core/src/main/java/org/apache/camel/AsyncCallback.java
index e6e6a51..a3b12b3 100644
--- a/camel-core/src/main/java/org/apache/camel/AsyncCallback.java
+++ b/camel-core/src/main/java/org/apache/camel/AsyncCallback.java
@@ -24,8 +24,6 @@ package org.apache.camel;
  * to be continued routed. This allows to implement asynchronous {@link Producer} which can continue
  * routing {@link Exchange} when all the data has been gathered. This allows to build non blocking
  * request/reply communication.
- *
- * @version 
  */
 public interface AsyncCallback {
 
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java b/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
index bf967b7..e83130e 100644
--- a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
@@ -23,8 +23,6 @@ package org.apache.camel;
  * Any processor can be coerced to have an {@link AsyncProcessor} interface by using the
  * {@link org.apache.camel.util.AsyncProcessorConverterHelper#convert AsyncProcessorConverterHelper.convert}
  * method.
- *
- * @version 
  */
 public interface AsyncProcessor extends Processor {
 
diff --git a/camel-core/src/main/java/org/apache/camel/AttachmentObjects.java b/camel-core/src/main/java/org/apache/camel/AttachmentObjects.java
index 58d376f..fb18a4d 100644
--- a/camel-core/src/main/java/org/apache/camel/AttachmentObjects.java
+++ b/camel-core/src/main/java/org/apache/camel/AttachmentObjects.java
@@ -25,8 +25,6 @@ import java.lang.annotation.Target;
 /**
  * Marks a parameter as being Map of attachments as {@link Attachment} objects
  * of an inbound {@link Message}
- * 
- * @version
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Attachments.java b/camel-core/src/main/java/org/apache/camel/Attachments.java
index d400534..773610f 100644
--- a/camel-core/src/main/java/org/apache/camel/Attachments.java
+++ b/camel-core/src/main/java/org/apache/camel/Attachments.java
@@ -25,8 +25,6 @@ import java.lang.annotation.Target;
 /**
  * Marks a parameter as being Map of attachments as
  * {@link javax.activation.DataHandler} objects of an inbound {@link Message}
- * 
- * @version
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/BatchConsumer.java b/camel-core/src/main/java/org/apache/camel/BatchConsumer.java
index 6c385b8..933d78a 100644
--- a/camel-core/src/main/java/org/apache/camel/BatchConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/BatchConsumer.java
@@ -20,8 +20,6 @@ import java.util.Queue;
 
 /**
  * A consumer of a batch of message exchanges from an {@link Endpoint}
- *
- * @version 
  */
 public interface BatchConsumer extends Consumer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/BeanInject.java b/camel-core/src/main/java/org/apache/camel/BeanInject.java
index 09e70d0..90fa5ab 100644
--- a/camel-core/src/main/java/org/apache/camel/BeanInject.java
+++ b/camel-core/src/main/java/org/apache/camel/BeanInject.java
@@ -26,8 +26,6 @@ import java.lang.annotation.Target;
  * Used to indicate an injection point of a bean obtained from the {@link org.apache.camel.spi.Registry}, into a POJO.
  *
  * If no name is specified then the lookup is anonymous and based on lookup up by the type.
- *
- * @version
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/BinaryPredicate.java b/camel-core/src/main/java/org/apache/camel/BinaryPredicate.java
index aa57323..89e087d 100644
--- a/camel-core/src/main/java/org/apache/camel/BinaryPredicate.java
+++ b/camel-core/src/main/java/org/apache/camel/BinaryPredicate.java
@@ -24,8 +24,6 @@ package org.apache.camel;
  * <p/>
  * This predicate offers the {@link #matchesReturningFailureMessage} method
  * which evaluates and returns a detailed failure message if the predicate did not match.
- *
- * @version 
  */
 public interface BinaryPredicate extends Predicate {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Body.java b/camel-core/src/main/java/org/apache/camel/Body.java
index 4a87a4d..69be06b 100644
--- a/camel-core/src/main/java/org/apache/camel/Body.java
+++ b/camel-core/src/main/java/org/apache/camel/Body.java
@@ -24,8 +24,6 @@ import java.lang.annotation.Target;
 
 /**
  * Marks a parameter as being the body of an inbound {@link Message}
- * 
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/BytesSource.java b/camel-core/src/main/java/org/apache/camel/BytesSource.java
index 1d8e652..d278663 100644
--- a/camel-core/src/main/java/org/apache/camel/BytesSource.java
+++ b/camel-core/src/main/java/org/apache/camel/BytesSource.java
@@ -27,8 +27,6 @@ import javax.xml.transform.stream.StreamSource;
 /**
  * A helper class which provides a JAXP {@link javax.xml.transform.Source
  * Source} from a byte[] which can be read as many times as required.
- * 
- * @version
  */
 public class BytesSource extends StreamSource implements Serializable {
     private static final long serialVersionUID = 124123201106542082L;
diff --git a/camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java b/camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java
index c747a18..67cce3a 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java
@@ -21,8 +21,6 @@ package org.apache.camel;
  * An exception thrown for either authentication or authorization errors occurring
  * in a Camel exchange.  Intended to be used when a user is denied an action and
  * Camel should not process the message as a result.
- *
- * @version 
  */
 public class CamelAuthorizationException extends CamelExchangeException {
     private static final long serialVersionUID = 1L;
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 2ebcb1e..3b32433 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -96,8 +96,6 @@ import org.apache.camel.util.jsse.SSLContextParameters;
  * <p/>
  * End users are advised to use suspend/resume. Using stop is for shutting down Camel and it's not guaranteed that
  * when it's being started again using the start method that Camel will operate consistently.
- *
- * @version 
  */
 public interface CamelContext extends SuspendableService, RuntimeConfiguration {
 
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContextAware.java b/camel-core/src/main/java/org/apache/camel/CamelContextAware.java
index 6118e7f..504b8d2 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContextAware.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContextAware.java
@@ -19,8 +19,6 @@ package org.apache.camel;
 /**
  * An interface to represent an object which wishes to be injected with
  * a {@link CamelContext} such as when working with Spring or Guice
- *
- * @version 
  */
 public interface CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/CamelException.java b/camel-core/src/main/java/org/apache/camel/CamelException.java
index 971e059..32c39e9 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelException.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Base class for all Camel checked exceptions typically thrown by a {@link Processor}
- *
- * @version 
  */
 public class CamelException extends Exception {
     private static final long serialVersionUID = -8721487434390572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/CamelExchangeException.java b/camel-core/src/main/java/org/apache/camel/CamelExchangeException.java
index f85be7e..0210bfb 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelExchangeException.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelExchangeException.java
@@ -19,8 +19,6 @@ package org.apache.camel;
 
 /**
  * An exception caused by a specific message {@link Exchange}
- *
- * @version 
  */
 public class CamelExchangeException extends CamelException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java b/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
index 5d8c66a..560d352 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
@@ -21,8 +21,6 @@ package org.apache.camel;
  * <p/>
  * Is usually thrown to the caller when using the {@link org.apache.camel.ProducerTemplate}
  * to send messages to Camel.
- *
- * @version 
  */
 public class CamelExecutionException extends RuntimeExchangeException {
     private static final long serialVersionUID = -5821095325248904305L;
diff --git a/camel-core/src/main/java/org/apache/camel/Channel.java b/camel-core/src/main/java/org/apache/camel/Channel.java
index 829e46c..583b672 100644
--- a/camel-core/src/main/java/org/apache/camel/Channel.java
+++ b/camel-core/src/main/java/org/apache/camel/Channel.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.RouteContext;
  * Channel acts as a channel between {@link Processor}s in the route graph.
  * <p/>
  * The channel is responsible for routing the {@link Exchange} to the next {@link Processor} in the route graph.
- *
- * @version 
  */
 public interface Channel extends AsyncProcessor, Navigate<Processor> {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Component.java b/camel-core/src/main/java/org/apache/camel/Component.java
index eae7d4d..26280a9 100644
--- a/camel-core/src/main/java/org/apache/camel/Component.java
+++ b/camel-core/src/main/java/org/apache/camel/Component.java
@@ -25,8 +25,6 @@ import org.apache.camel.component.extension.ComponentExtension;
 /**
  * A <a href="http://camel.apache.org/component.html">component</a> is
  * a factory of {@link Endpoint} objects.
- * 
- * @version 
  */
 public interface Component extends CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Consume.java b/camel-core/src/main/java/org/apache/camel/Consume.java
index 175e293..6debe24 100644
--- a/camel-core/src/main/java/org/apache/camel/Consume.java
+++ b/camel-core/src/main/java/org/apache/camel/Consume.java
@@ -30,8 +30,6 @@ import java.lang.annotation.Target;
  * When a message {@link Exchange} is received from the {@link Endpoint} then the
  * <a href="http://camel.apache.org/bean-integration.html">Bean Integration</a>
  * mechanism is used to map the incoming {@link Message} to the method parameters.
- * 
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Consumer.java b/camel-core/src/main/java/org/apache/camel/Consumer.java
index 3c4719b..89def42 100644
--- a/camel-core/src/main/java/org/apache/camel/Consumer.java
+++ b/camel-core/src/main/java/org/apache/camel/Consumer.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * A consumer of message exchanges from an {@link Endpoint}
- *
- * @version 
  */
 public interface Consumer extends Service, EndpointAware {
 }
diff --git a/camel-core/src/main/java/org/apache/camel/Converter.java b/camel-core/src/main/java/org/apache/camel/Converter.java
index 5c83841..79b2234 100644
--- a/camel-core/src/main/java/org/apache/camel/Converter.java
+++ b/camel-core/src/main/java/org/apache/camel/Converter.java
@@ -27,8 +27,6 @@ import java.lang.annotation.Target;
  * converting from a type to another type which are then auto-discovered using
  * the <a href="http://camel.apache.org/type-converter.html">Type
  * Conversion Support</a>
- * 
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/DynamicRouter.java b/camel-core/src/main/java/org/apache/camel/DynamicRouter.java
index 3b0d357..1e94c4f 100644
--- a/camel-core/src/main/java/org/apache/camel/DynamicRouter.java
+++ b/camel-core/src/main/java/org/apache/camel/DynamicRouter.java
@@ -38,7 +38,6 @@ import java.lang.annotation.Target;
  * Then for each endpoint or URI the message is routed in a pipes and filter fashion.
  *
  * @see org.apache.camel.RoutingSlip
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Endpoint.java b/camel-core/src/main/java/org/apache/camel/Endpoint.java
index 027a553..27ceceb 100644
--- a/camel-core/src/main/java/org/apache/camel/Endpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/Endpoint.java
@@ -27,7 +27,6 @@ import java.util.Map;
  *
  * @see Exchange
  * @see Message
- * @version 
  */
 public interface Endpoint extends IsSingleton, Service {
 
diff --git a/camel-core/src/main/java/org/apache/camel/EndpointInject.java b/camel-core/src/main/java/org/apache/camel/EndpointInject.java
index 0095601..a7a828e 100644
--- a/camel-core/src/main/java/org/apache/camel/EndpointInject.java
+++ b/camel-core/src/main/java/org/apache/camel/EndpointInject.java
@@ -31,8 +31,6 @@ import java.lang.annotation.Target;
  * {@link org.apache.camel.spi.Registry} such as in your Spring ApplicationContext.
  *
  * If no ref or uri is specified then the ref is defaulted from the field, property or method name.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java
index 55e14b9..2382e85 100644
--- a/camel-core/src/main/java/org/apache/camel/Exchange.java
+++ b/camel-core/src/main/java/org/apache/camel/Exchange.java
@@ -67,7 +67,6 @@ import org.apache.camel.spi.UnitOfWork;
  * <p/>
  * See this <a href="http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html">FAQ entry</a> 
  * for more details.
- * 
  */
 public interface Exchange {
 
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangePattern.java b/camel-core/src/main/java/org/apache/camel/ExchangePattern.java
index 0a04900..341da64 100644
--- a/camel-core/src/main/java/org/apache/camel/ExchangePattern.java
+++ b/camel-core/src/main/java/org/apache/camel/ExchangePattern.java
@@ -24,8 +24,6 @@ import javax.xml.bind.annotation.XmlType;
 
 /**
  * Represents the kind of message exchange pattern
- *
- * @version 
  */
 @XmlType
 @XmlEnum
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeProperties.java b/camel-core/src/main/java/org/apache/camel/ExchangeProperties.java
index f71b809..328eb8c 100644
--- a/camel-core/src/main/java/org/apache/camel/ExchangeProperties.java
+++ b/camel-core/src/main/java/org/apache/camel/ExchangeProperties.java
@@ -26,7 +26,6 @@ import java.lang.annotation.Target;
  * Marks a parameter as being an injection point of the exchange properties of an {@link Exchange}
  *
  * @see Exchange#getProperties()  
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeProperty.java b/camel-core/src/main/java/org/apache/camel/ExchangeProperty.java
index d0731ac..2d2419c 100644
--- a/camel-core/src/main/java/org/apache/camel/ExchangeProperty.java
+++ b/camel-core/src/main/java/org/apache/camel/ExchangeProperty.java
@@ -26,7 +26,6 @@ import java.lang.annotation.Target;
  * Marks a parameter as being an injection point of a property of an {@link org.apache.camel.Exchange}
  *
  * @see org.apache.camel.Exchange#getProperty(String)
- * @version
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java b/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
index 3231703..f22a546 100644
--- a/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
+++ b/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * An exception thrown if an InOut exchange times out receiving the OUT message
- *
- * @version 
  */
 public class ExchangeTimedOutException extends CamelExchangeException {
     private static final long serialVersionUID = -7899162905421788853L;
diff --git a/camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java b/camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java
index e7d9f8a..4a91379 100644
--- a/camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java
+++ b/camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java
@@ -20,8 +20,6 @@ import java.util.concurrent.ExecutorService;
 
 /**
  * Is used for easy configuration of {@link ExecutorService}.
- *
- * @version 
  */
 public interface ExecutorServiceAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java b/camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
index 9c30660..982fee8 100644
--- a/camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
+++ b/camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Thrown if the body could not be converted to the required type
- * 
- * @version 
  */
 public class ExpectedBodyTypeException extends RuntimeCamelException {
     private static final long serialVersionUID = -7121445152234363768L;
diff --git a/camel-core/src/main/java/org/apache/camel/Expression.java b/camel-core/src/main/java/org/apache/camel/Expression.java
index 950e07a8..9c229d6 100644
--- a/camel-core/src/main/java/org/apache/camel/Expression.java
+++ b/camel-core/src/main/java/org/apache/camel/Expression.java
@@ -23,8 +23,6 @@ package org.apache.camel;
  * <a href="http://camel.apache.org/xquery.html">XQuery</a>
  * or <a href="http://camel.apache.org/sql.html">SQL</a> as well
  * as any arbitrary Java expression.
- *
- * @version 
  */
 public interface Expression {
 
diff --git a/camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java b/camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java
index 023b060..013fa48 100644
--- a/camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java
+++ b/camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * An exception thrown if evaluation of the expression failed.
- *
- * @version 
  */
 public class ExpressionEvaluationException extends RuntimeCamelException {
 
diff --git a/camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java b/camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
index d88def5..7cd0693 100644
--- a/camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
+++ b/camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * An exception thrown if the expression contains illegal syntax.
- *
- * @version 
  */
 public class ExpressionIllegalSyntaxException extends RuntimeCamelException {
     private static final long serialVersionUID = 6545652894842621836L;
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java b/camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
index b89ec82..cf2a3ea 100644
--- a/camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
+++ b/camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Thrown if Camel failed to create a consumer for a given endpoint.
- *
- * @version 
  */
 public class FailedToCreateConsumerException extends RuntimeCamelException {
     private static final long serialVersionUID = 1916718168052020246L;
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java b/camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java
index 56f0328..fa31d0c 100644
--- a/camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java
+++ b/camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Thrown if Camel failed to create a producer for a given endpoint.
- *
- * @version 
  */
 public class FailedToCreateProducerException extends RuntimeCamelException {
     private static final long serialVersionUID = 1341435621084082033L;
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java b/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
index 00599b3..d6f9388 100644
--- a/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
+++ b/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
@@ -20,8 +20,6 @@ import org.apache.camel.util.URISupport;
 
 /**
  * Exception when failing to create a {@link org.apache.camel.Route}.
- *
- * @version 
  */
 public class FailedToCreateRouteException extends CamelException {
     private static final long serialVersionUID = 1L;
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java b/camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java
index 729180a..6af6704 100644
--- a/camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java
+++ b/camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Exception when failing to start a {@link Route}.
- *
- * @version 
  */
 public class FailedToStartRouteException extends CamelException {
     private static final long serialVersionUID = -6118520819865759888L;
diff --git a/camel-core/src/main/java/org/apache/camel/FallbackConverter.java b/camel-core/src/main/java/org/apache/camel/FallbackConverter.java
index 6ca5256..f3e4dae 100644
--- a/camel-core/src/main/java/org/apache/camel/FallbackConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/FallbackConverter.java
@@ -35,8 +35,6 @@ import java.lang.annotation.Target;
  * if it can not handle the types to convert from/to.
  *
  * @see org.apache.camel.component.file.GenericFileConverter GenericFileConverter for an example.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Handler.java b/camel-core/src/main/java/org/apache/camel/Handler.java
index 8b0ef8c..fa7805e 100644
--- a/camel-core/src/main/java/org/apache/camel/Handler.java
+++ b/camel-core/src/main/java/org/apache/camel/Handler.java
@@ -25,8 +25,6 @@ import java.lang.annotation.Target;
 /**
  * Marks a method on a POJO as being the preferred method to invoke when Camel looks
  * for methods to invoke using the {@link org.apache.camel.component.bean.BeanEndpoint BeanEndpoint}.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Header.java b/camel-core/src/main/java/org/apache/camel/Header.java
index b318d8d..6cf9db3 100644
--- a/camel-core/src/main/java/org/apache/camel/Header.java
+++ b/camel-core/src/main/java/org/apache/camel/Header.java
@@ -26,7 +26,6 @@ import java.lang.annotation.Target;
  * Marks a parameter as being a header on an inbound {@link Message}
  *
  * @see Message#getHeader(String) 
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Headers.java b/camel-core/src/main/java/org/apache/camel/Headers.java
index 36092f1..fbc87f0 100644
--- a/camel-core/src/main/java/org/apache/camel/Headers.java
+++ b/camel-core/src/main/java/org/apache/camel/Headers.java
@@ -26,7 +26,6 @@ import java.lang.annotation.Target;
  * Marks a parameter as being an injection point of the headers of an inbound {@link Message}
  *
  * @see Message#getHeaders()
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/InOnly.java b/camel-core/src/main/java/org/apache/camel/InOnly.java
index fa5050d..e504494 100644
--- a/camel-core/src/main/java/org/apache/camel/InOnly.java
+++ b/camel-core/src/main/java/org/apache/camel/InOnly.java
@@ -39,8 +39,6 @@ import java.lang.annotation.Target;
  * @see org.apache.camel.Exchange#getPattern()
  * @see InOut
  * @see Pattern
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/InOut.java b/camel-core/src/main/java/org/apache/camel/InOut.java
index 9132d19..bcc71ad 100644
--- a/camel-core/src/main/java/org/apache/camel/InOut.java
+++ b/camel-core/src/main/java/org/apache/camel/InOut.java
@@ -38,8 +38,6 @@ import java.lang.annotation.Target;
  * @see org.apache.camel.Exchange#getPattern()
  * @see InOnly
  * @see Pattern
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java b/camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java
index 37e6c3a..b29b7d5 100644
--- a/camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java
+++ b/camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Is thrown if the payload from the exchange could not be retrieved because of being null, wrong class type etc.
- *
- * @version
  */
 public class InvalidPayloadException extends CamelExchangeException {
 
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java b/camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
index 2b433bb..cb56b06 100644
--- a/camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
+++ b/camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Runtime version of the {@link InvalidPayloadException}.
- *
- * @version
  */
 public class InvalidPayloadRuntimeException extends RuntimeExchangeException {
 
diff --git a/camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java b/camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java
index 803c096..abef059 100644
--- a/camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java
+++ b/camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java
@@ -26,7 +26,6 @@ import java.lang.annotation.Target;
  * Marks a method as being invoked for a specific header value.
  *
  * @see Message#getHeader(String)
- * @version
  */
 @Repeatable(InvokeOnHeaders.class)
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java b/camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java
index 183dc04..c810262 100644
--- a/camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java
+++ b/camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java
@@ -25,7 +25,6 @@ import java.lang.annotation.Target;
  * Marks a method as being invoked for a specific header value.
  *
  * @see Message#getHeader(String)
- * @version
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.METHOD)
diff --git a/camel-core/src/main/java/org/apache/camel/IsSingleton.java b/camel-core/src/main/java/org/apache/camel/IsSingleton.java
index 43c3b72..dd57d72 100644
--- a/camel-core/src/main/java/org/apache/camel/IsSingleton.java
+++ b/camel-core/src/main/java/org/apache/camel/IsSingleton.java
@@ -27,8 +27,6 @@ package org.apache.camel;
  * for objects to have this value dynamically changed.
  * <p/>
  * Camel component are very often singleton based, only a few components are not.
- *
- * @version 
  */
 public interface IsSingleton {
 
diff --git a/camel-core/src/main/java/org/apache/camel/LoggingLevel.java b/camel-core/src/main/java/org/apache/camel/LoggingLevel.java
index b3c8e88..f3d8883 100644
--- a/camel-core/src/main/java/org/apache/camel/LoggingLevel.java
+++ b/camel-core/src/main/java/org/apache/camel/LoggingLevel.java
@@ -20,8 +20,6 @@ import javax.xml.bind.annotation.XmlEnum;
 
 /**
  * Used to configure the logging levels
- *
- * @version 
  */
 @XmlEnum
 public enum LoggingLevel {
diff --git a/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java b/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
index cc02bbe..e1bbfb0 100644
--- a/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
+++ b/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
@@ -20,8 +20,6 @@ import javax.xml.bind.annotation.XmlEnum;
 
 /**
  * Level of granularity for performance statistics enabled
- *
- * @version 
  */
 @XmlEnum
 public enum ManagementStatisticsLevel {
diff --git a/camel-core/src/main/java/org/apache/camel/Message.java b/camel-core/src/main/java/org/apache/camel/Message.java
index a0e1d0b..eb00b85 100644
--- a/camel-core/src/main/java/org/apache/camel/Message.java
+++ b/camel-core/src/main/java/org/apache/camel/Message.java
@@ -33,8 +33,6 @@ import org.apache.camel.spi.HeadersMapFactory;
  * is represented in Camel using a {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
  * The implementation of the map can be configured by the {@link HeadersMapFactory} which can be set
  * on the {@link CamelContext}. The default implementation uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
- *
- * @version 
  */
 public interface Message {
 
diff --git a/camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java b/camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java
index f552706..76f0c22 100644
--- a/camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java
@@ -27,8 +27,6 @@ package org.apache.camel;
  * <p/>
  * The purpose of this is to check on startup that we do not have multiple consumers
  * for the <b>same</b> endpoints. This prevents starting up with copy/paste mistakes in the Camel routes.
- *
- * @version 
  */
 public interface MultipleConsumersSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Navigate.java b/camel-core/src/main/java/org/apache/camel/Navigate.java
index 62568f1..20dc503 100644
--- a/camel-core/src/main/java/org/apache/camel/Navigate.java
+++ b/camel-core/src/main/java/org/apache/camel/Navigate.java
@@ -21,8 +21,6 @@ import java.util.List;
 /**
  * Implementations support navigating a graph where you can traverse forward and each next
  * returns a {@link List} of outputs of type <tt>T</tt> that can contain <tt>0..n</tt> nodes.
- *
- * @version 
  */
 public interface Navigate<T> {
 
diff --git a/camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java b/camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java
index e2f3fd5..46e537f 100644
--- a/camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java
@@ -20,8 +20,6 @@ import java.io.IOException;
 
 /**
  * Thrown if no factory resource is available for the given URI
- *
- * @version 
  */
 public class NoFactoryAvailableException extends IOException {
     private static final long serialVersionUID = -425141860196708627L;
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java b/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java
index 1b5d1b2..c421441 100644
--- a/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * A runtime exception if a given bean could not be found in the {@link org.apache.camel.spi.Registry}
- *
- * @version 
  */
 public class NoSuchBeanException extends RuntimeCamelException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java b/camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java
index 83c6695..6858005 100644
--- a/camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java
@@ -20,8 +20,6 @@ package org.apache.camel;
  * A runtime exception thrown if a routing processor such as a
  * {@link org.apache.camel.processor.RecipientList RecipientList} is unable to resolve an
  * {@link Endpoint} from a URI.
- *
- * @version 
  */
 public class NoSuchEndpointException extends RuntimeCamelException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java b/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
index f6c2bc0..d12f052 100644
--- a/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
@@ -21,8 +21,6 @@ package org.apache.camel;
  * {@link Exchange}
  *
  * @see org.apache.camel.util.ExchangeHelper#getMandatoryHeader(Exchange, String, Class)
- *
- * @version 
  */
 public class NoSuchHeaderException extends CamelExchangeException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java b/camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java
index d668e6e..10ceccd 100644
--- a/camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java
@@ -21,8 +21,6 @@ package org.apache.camel;
  * language definition.
  * 
  * @see org.apache.camel.CamelContext#resolveLanguage(String)
- * 
- * @version 
  */
 public class NoSuchLanguageException extends RuntimeCamelException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java b/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
index 3fe17b4..0de94e1 100644
--- a/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
@@ -21,8 +21,6 @@ package org.apache.camel;
  * {@link Exchange}
  * 
  * @see org.apache.camel.util.ExchangeHelper#getMandatoryProperty(Exchange, String, Class)
- * 
- * @version 
  */
 public class NoSuchPropertyException extends CamelExchangeException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java b/camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
index c630050..b0fe29c 100644
--- a/camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * An exception thrown if a value could not be converted to the required type
- *
- * @version 
  */
 public class NoTypeConversionAvailableException extends CamelException {
     private static final long serialVersionUID = -8721487434390572636L;
diff --git a/camel-core/src/main/java/org/apache/camel/Ordered.java b/camel-core/src/main/java/org/apache/camel/Ordered.java
index dbe5f72..955615b 100644
--- a/camel-core/src/main/java/org/apache/camel/Ordered.java
+++ b/camel-core/src/main/java/org/apache/camel/Ordered.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Interface to be implemented by objects that should be orderable, such as with a {@link java.util.Collection}.
- *
- * @version 
  */
 public interface Ordered {
 
diff --git a/camel-core/src/main/java/org/apache/camel/OutHeaders.java b/camel-core/src/main/java/org/apache/camel/OutHeaders.java
index fa4cd6b..9087fae 100644
--- a/camel-core/src/main/java/org/apache/camel/OutHeaders.java
+++ b/camel-core/src/main/java/org/apache/camel/OutHeaders.java
@@ -26,7 +26,6 @@ import java.lang.annotation.Target;
  * Marks a parameter as being an injection point of the headers of an outbound {@link Message}
  *
  * @see Message#getHeaders()
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Pattern.java b/camel-core/src/main/java/org/apache/camel/Pattern.java
index 444a001..8cbd6e5 100644
--- a/camel-core/src/main/java/org/apache/camel/Pattern.java
+++ b/camel-core/src/main/java/org/apache/camel/Pattern.java
@@ -43,8 +43,6 @@ import java.lang.annotation.Target;
  * @see InOnly
  * @see ExchangePattern
  * @see Exchange#getPattern()
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/PollingConsumer.java b/camel-core/src/main/java/org/apache/camel/PollingConsumer.java
index 45a4f98..9103490 100644
--- a/camel-core/src/main/java/org/apache/camel/PollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/PollingConsumer.java
@@ -27,8 +27,6 @@ package org.apache.camel;
  * This is needed to ensure any {@link org.apache.camel.spi.Synchronization} works is being executed.
  * For example if you consumed from a file endpoint, then the consumed file is only moved/delete when
  * you done the {@link Exchange}.
- *
- * @version 
  */
 public interface PollingConsumer extends Consumer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Predicate.java b/camel-core/src/main/java/org/apache/camel/Predicate.java
index 331cb64..2031036 100644
--- a/camel-core/src/main/java/org/apache/camel/Predicate.java
+++ b/camel-core/src/main/java/org/apache/camel/Predicate.java
@@ -24,8 +24,6 @@ package org.apache.camel;
  * languages</a>, <a href="http://camel.apache.org/xquery.html">XQuery</a>
  * or <a href="http://camel.apache.org/sql.html">SQL</a> as well as
  * any arbitrary Java expression.
- * 
- * @version 
  */
 public interface Predicate {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Processor.java b/camel-core/src/main/java/org/apache/camel/Processor.java
index 9a6be96..137955c 100644
--- a/camel-core/src/main/java/org/apache/camel/Processor.java
+++ b/camel-core/src/main/java/org/apache/camel/Processor.java
@@ -25,8 +25,6 @@ package org.apache.camel;
  * Notice if you use a {@link Processor} in a Camel route, then make sure to write the {@link Processor}
  * in a thread-safe way, as the Camel routes can potentially be executed by concurrent threads, and therefore
  * multiple threads can call the same {@link Processor} instance.
- * 
- * @version 
  */
 public interface Processor {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Produce.java b/camel-core/src/main/java/org/apache/camel/Produce.java
index e1dec57..d113d8a 100644
--- a/camel-core/src/main/java/org/apache/camel/Produce.java
+++ b/camel-core/src/main/java/org/apache/camel/Produce.java
@@ -32,8 +32,6 @@ import java.lang.annotation.Target;
  * mechanism.
  *
  * @see InOnly
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/Producer.java b/camel-core/src/main/java/org/apache/camel/Producer.java
index 89bdaa3..87b138f 100644
--- a/camel-core/src/main/java/org/apache/camel/Producer.java
+++ b/camel-core/src/main/java/org/apache/camel/Producer.java
@@ -19,8 +19,6 @@ package org.apache.camel;
 /**
  * Provides a channel on which clients can create and invoke message exchanges
  * on an {@link Endpoint}
- * 
- * @version 
  */
 public interface Producer extends Processor, Service, IsSingleton, EndpointAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java b/camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java
index 8b96a55..769e5b2 100644
--- a/camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java
+++ b/camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Exception indicating a failure while trying to create a proxy of a given type and on a given endpoint
- *
- * @version 
  */
 public class ProxyInstantiationException extends RuntimeCamelException {
     private static final long serialVersionUID = -2050115486047385506L;
diff --git a/camel-core/src/main/java/org/apache/camel/RecipientList.java b/camel-core/src/main/java/org/apache/camel/RecipientList.java
index a239520..31c13a7 100644
--- a/camel-core/src/main/java/org/apache/camel/RecipientList.java
+++ b/camel-core/src/main/java/org/apache/camel/RecipientList.java
@@ -36,8 +36,6 @@ import java.lang.annotation.Target;
  * to an {@link Endpoint} or {@link String}.
  *
  * Then for each endpoint or URI the message is forwarded a separate copy.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java b/camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
index be1e583..7f9385f 100644
--- a/camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
+++ b/camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * A runtime exception thrown if an {@link Endpoint} cannot be resolved via URI
- * 
- * @version 
  */
 public class ResolveEndpointFailedException extends RuntimeCamelException {
     private static final long serialVersionUID = -9121465713858552263L;
diff --git a/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java b/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java
index 952f62d..e80aca0 100644
--- a/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java
+++ b/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Exception used for forcing an Exchange to be rolled back.
- *
- * @version 
  */
 public class RollbackExchangeException extends CamelExchangeException {
     private static final long serialVersionUID = -7837446508365767066L;
diff --git a/camel-core/src/main/java/org/apache/camel/RoutingSlip.java b/camel-core/src/main/java/org/apache/camel/RoutingSlip.java
index e93901c..2c1dca4 100644
--- a/camel-core/src/main/java/org/apache/camel/RoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/RoutingSlip.java
@@ -38,7 +38,6 @@ import java.lang.annotation.Target;
  * Then for each endpoint or URI the message is routed in a pipes and filter fashion.
  *
  * @see org.apache.camel.DynamicRouter
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java b/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
index d74f633..7f3c4b7 100644
--- a/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
+++ b/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Base class for all Camel unchecked exceptions.
- *
- * @version 
  */
 public class RuntimeCamelException extends RuntimeException {
     private static final long serialVersionUID = 8046489554418284257L;
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java b/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
index 6124007..d23cef8 100644
--- a/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
@@ -19,8 +19,6 @@ package org.apache.camel;
 /**
  * Various runtime configuration options used by {@link org.apache.camel.CamelContext} and {@link org.apache.camel.spi.RouteContext}
  * for cross cutting functions such as tracing, delayer, stream cache and the like.
- *
- * @version 
  */
 public interface RuntimeConfiguration {
 
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java b/camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java
index b8116e8..a39497f 100644
--- a/camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java
+++ b/camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * A runtime exception caused by a specific message {@link Exchange}
- *
- * @version 
  */
 public class RuntimeExchangeException extends RuntimeCamelException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java b/camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java
index f7beb22..65db011 100644
--- a/camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java
+++ b/camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Thrown if an expression evaluation fails
- * 
- * @version 
  */
 public class RuntimeExpressionException extends RuntimeCamelException {
 
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java b/camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java
index 11e4706..0232f90 100644
--- a/camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java
+++ b/camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Thrown if a message transformation fails
- * 
- * @version 
  */
 public class RuntimeTransformException extends RuntimeCamelException {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Service.java b/camel-core/src/main/java/org/apache/camel/Service.java
index 7ad90ba..fd198e7 100644
--- a/camel-core/src/main/java/org/apache/camel/Service.java
+++ b/camel-core/src/main/java/org/apache/camel/Service.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Represents the core lifecycle API for POJOs which can be started and stopped
- * 
- * @version 
  */
 public interface Service {
 
diff --git a/camel-core/src/main/java/org/apache/camel/ServiceStatus.java b/camel-core/src/main/java/org/apache/camel/ServiceStatus.java
index 8a1115f..d481681 100644
--- a/camel-core/src/main/java/org/apache/camel/ServiceStatus.java
+++ b/camel-core/src/main/java/org/apache/camel/ServiceStatus.java
@@ -20,8 +20,6 @@ import java.io.Serializable;
 
 /**
  * Represents the status of a {@link Service} instance
- *
- * @version 
  */
 public enum ServiceStatus implements Serializable {
     Starting, Started, Stopping, Stopped, Suspending, Suspended;
diff --git a/camel-core/src/main/java/org/apache/camel/ShutdownableService.java b/camel-core/src/main/java/org/apache/camel/ShutdownableService.java
index 9e37d06..c95bdc7 100644
--- a/camel-core/src/main/java/org/apache/camel/ShutdownableService.java
+++ b/camel-core/src/main/java/org/apache/camel/ShutdownableService.java
@@ -23,8 +23,6 @@ package org.apache.camel;
  * This allows customization of behavior when stopping or shutting down.
  * <p/>
  * For example to shutdown thread pools during shutdown and <b>not</b> at CamelContext termination.
- *
- * @version 
  */
 public interface ShutdownableService extends Service {
 
diff --git a/camel-core/src/main/java/org/apache/camel/StartupListener.java b/camel-core/src/main/java/org/apache/camel/StartupListener.java
index d6da3a8..187828a 100644
--- a/camel-core/src/main/java/org/apache/camel/StartupListener.java
+++ b/camel-core/src/main/java/org/apache/camel/StartupListener.java
@@ -35,7 +35,6 @@ package org.apache.camel;
  * Instead use the {@link ExtendedStartupListener} if you wish to add new routes.
  *
  * @see ExtendedStartupListener
- * @version
  */
 public interface StartupListener {
 
diff --git a/camel-core/src/main/java/org/apache/camel/StreamCache.java b/camel-core/src/main/java/org/apache/camel/StreamCache.java
index 29f4284..040afae 100644
--- a/camel-core/src/main/java/org/apache/camel/StreamCache.java
+++ b/camel-core/src/main/java/org/apache/camel/StreamCache.java
@@ -31,8 +31,6 @@ import java.io.OutputStream;
  * <p/>
  * It is recommended in the {@link #copy(Exchange)} method to let the copied stream start from the start. If the implementation
  * does not support copy, then return <tt>null</tt>.
- *
- * @version 
  */
 public interface StreamCache {
 
diff --git a/camel-core/src/main/java/org/apache/camel/StringSource.java b/camel-core/src/main/java/org/apache/camel/StringSource.java
index 98708c9..c6464de 100644
--- a/camel-core/src/main/java/org/apache/camel/StringSource.java
+++ b/camel-core/src/main/java/org/apache/camel/StringSource.java
@@ -32,8 +32,6 @@ import javax.xml.transform.stream.StreamSource;
  * A helper class which provides a JAXP {@link javax.xml.transform.Source
  * Source} from a String which can be read as many times as required. Encoding
  * is default UTF-8.
- * 
- * @version
  */
 public class StringSource extends StreamSource implements Externalizable {
     private String text;
diff --git a/camel-core/src/main/java/org/apache/camel/TimeoutMap.java b/camel-core/src/main/java/org/apache/camel/TimeoutMap.java
index 366f5c7..99375f4 100644
--- a/camel-core/src/main/java/org/apache/camel/TimeoutMap.java
+++ b/camel-core/src/main/java/org/apache/camel/TimeoutMap.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Represents a map of values which timeout after a period of inactivity.
- *
- * @version 
  */
 public interface TimeoutMap<K, V> extends Runnable {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Traceable.java b/camel-core/src/main/java/org/apache/camel/Traceable.java
index 8b63806..a32e02d 100644
--- a/camel-core/src/main/java/org/apache/camel/Traceable.java
+++ b/camel-core/src/main/java/org/apache/camel/Traceable.java
@@ -19,8 +19,6 @@ package org.apache.camel;
 /**
  * Traceable processors allowing easier tracing using constructed labels to help identify the processor
  * and where it's defined in the route model.
- *
- * @version 
  */
 public interface Traceable {
 
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConversionException.java b/camel-core/src/main/java/org/apache/camel/TypeConversionException.java
index 075ff07..4632318 100644
--- a/camel-core/src/main/java/org/apache/camel/TypeConversionException.java
+++ b/camel-core/src/main/java/org/apache/camel/TypeConversionException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Exception when failing during type conversion.
- *
- * @version 
  */
 public class TypeConversionException extends RuntimeCamelException {
     private static final long serialVersionUID = -6118520819865759886L;
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverter.java b/camel-core/src/main/java/org/apache/camel/TypeConverter.java
index 08c83f6..1f1fe5b 100644
--- a/camel-core/src/main/java/org/apache/camel/TypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/TypeConverter.java
@@ -22,8 +22,6 @@ package org.apache.camel;
  * href="http://camel.apache.org/type-converter.html">to different
  * types</a> such as to and from String, InputStream/OutputStream,
  * Reader/Writer, Document, byte[], ByteBuffer etc
- * 
- * @version 
  */
 public interface TypeConverter {
 
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterExists.java b/camel-core/src/main/java/org/apache/camel/TypeConverterExists.java
index ba2bb19..0e0ef47 100644
--- a/camel-core/src/main/java/org/apache/camel/TypeConverterExists.java
+++ b/camel-core/src/main/java/org/apache/camel/TypeConverterExists.java
@@ -20,8 +20,6 @@ import javax.xml.bind.annotation.XmlEnum;
 
 /**
  * What to do if attempting to add a duplicate type converter
- *
- * @version 
  */
 @XmlEnum
 public enum TypeConverterExists {
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java b/camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java
index f0d85ec..9f800c7 100644
--- a/camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java
+++ b/camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java
@@ -18,8 +18,6 @@ package org.apache.camel;
 
 /**
  * Exception when failing to load type converters.
- *
- * @version 
  */
 public class TypeConverterLoaderException extends CamelException {
     private static final long serialVersionUID = -6118520819865759887L;
diff --git a/camel-core/src/main/java/org/apache/camel/ValidationException.java b/camel-core/src/main/java/org/apache/camel/ValidationException.java
index 0d1a2dc..e3648f6 100644
--- a/camel-core/src/main/java/org/apache/camel/ValidationException.java
+++ b/camel-core/src/main/java/org/apache/camel/ValidationException.java
@@ -21,8 +21,6 @@ package org.apache.camel;
  * {@link org.apache.camel.processor.validation.SchemaValidationException} so
  * that it is easy to treat all validation errors in a similar way irrespective
  * of the particular validation technology used.
- * 
- * @version 
  */
 public class ValidationException extends CamelExchangeException {
     private static final long serialVersionUID = -7485357452450907415L;
diff --git a/camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java b/camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java
index 159ce57..9ab48b8 100644
--- a/camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java
+++ b/camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java
@@ -25,8 +25,6 @@ import javax.xml.bind.annotation.XmlType;
  * The tasks is usually async tasks executed by the JDK concurrency library.
  * With these options the caller can choose whether to wait for the task to complete
  * or not before the caller thread continues.
- *
- * @version 
  */
 @XmlType
 @XmlEnum
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java b/camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java
index 821741e..d6e09d3 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java
@@ -18,8 +18,6 @@ package org.apache.camel.api.management;
 
 /**
  * Holds the instance being managed.
- *
- * @version 
  */
 public interface ManagedInstance {
 
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/PerformanceCounter.java b/camel-core/src/main/java/org/apache/camel/api/management/PerformanceCounter.java
index 91d25e1..cd61df9 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/PerformanceCounter.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/PerformanceCounter.java
@@ -20,8 +20,6 @@ import org.apache.camel.Exchange;
 
 /**
  * A counter that gathers performance metrics when an {@link org.apache.camel.Exchange} is routed in Camel.
- *
- * @version 
  */
 public interface PerformanceCounter {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/BinaryPredicateSupport.java b/camel-core/src/main/java/org/apache/camel/builder/BinaryPredicateSupport.java
index 08dfe6f..72c89bc 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/BinaryPredicateSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/BinaryPredicateSupport.java
@@ -25,8 +25,6 @@ import static org.apache.camel.util.ObjectHelper.notNull;
 
 /**
  * A useful base class for {@link Predicate} implementations
- *
- * @version 
  */
 public abstract class BinaryPredicateSupport implements BinaryPredicate {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/Builder.java b/camel-core/src/main/java/org/apache/camel/builder/Builder.java
index d0d63e5..d1e66e7 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/Builder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/Builder.java
@@ -34,8 +34,6 @@ import org.apache.camel.util.ObjectHelper;
  * Implementation of this builder should favor build expressions using the definition classes
  * from the <tt>org.apache.camel.model.language</tt> package, to build the routes using the same
  * types as it would happen when using XML DSL.
- *
- * @version 
  */
 public final class Builder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
index 51d999e..05b916d 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -34,8 +34,6 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * Base class for implementation inheritance for different clauses in the <a
  * href="http://camel.apache.org/dsl.html">Java DSL</a>
- *
- * @version
  */
 public abstract class BuilderSupport {
     private ModelCamelContext context;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
index 451c4d0..95b62e9 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
@@ -67,8 +67,6 @@ import org.apache.camel.util.jsse.KeyStoreParameters;
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}
  * options.
- *
- * @version 
  */
 public class DataFormatClause<T extends ProcessorDefinition<?>> {
     private final T processorType;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
index 594aada..d6e5ca1 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
@@ -33,8 +33,6 @@ import org.slf4j.LoggerFactory;
  * A builder of a <a
  * href="http://camel.apache.org/dead-letter-channel.html">Dead Letter
  * Channel</a>
- *
- * @version 
  */
 public class DeadLetterChannelBuilder extends DefaultErrorHandlerBuilder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
index 48bff89..b229332 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
@@ -36,8 +36,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * The default error handler builder.
- *
- * @version 
  */
 public class DefaultErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java
index 3c5a3f1..835fc4e 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * A builder of a <a href="http://camel.apache.org/error-handler.html">Error Handler</a>
- *
- * @version 
  */
 public interface ErrorHandlerBuilder extends ErrorHandlerFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
index fa997f3..cd08529 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
@@ -30,8 +30,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Represents a proxy to an error handler builder which is resolved by named reference
- *
- * @version 
  */
 public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
     public static final String DEFAULT_ERROR_HANDLER_BUILDER = "CamelDefaultErrorHandlerBuilder";
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
index fbc41b3..7d1d2ed 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
@@ -33,8 +33,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Base class for builders of error handling.
- *
- * @version 
  */
 public abstract class ErrorHandlerBuilderSupport implements ErrorHandlerBuilder {
     private Map<RouteContext, List<OnExceptionDefinition>> onExceptions = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
index 5c9a34e..5c03bbf 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
@@ -76,8 +76,6 @@ import org.apache.camel.util.StringHelper;
 
 /**
  * A helper class for working with <a href="http://camel.apache.org/expression.html">expressions</a>.
- *
- * @version
  */
 public final class ExpressionBuilder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
index 7319bbe..ae81c7b 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
@@ -32,8 +32,6 @@ import org.apache.camel.support.ExpressionAdapter;
 /**
  * Represents an expression clause within the DSL which when the expression is
  * complete the clause continues to another part of the DSL
- * 
- * @version 
  */
 public class ExpressionClause<T> extends ExpressionDefinition {
     private ExpressionClauseSupport<T> delegate;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
index b448e4f..f972764 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
@@ -43,8 +43,6 @@ import org.apache.camel.model.language.XQueryExpression;
 
 /**
  * A support class for building expression clauses.
- *
- * @version 
  */
 public class ExpressionClauseSupport<T> {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
index 1c3ad0e..45f493a 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.RouteContext;
  * <a href="http://camel.apache.org/dead-letter-channel.html">Dead Letter Channel</a> should be used
  * if you are unsure; however it can be useful sometimes to disable an error handler inside a complex route
  * so that exceptions bubble up to the parent {@link Processor}
- *
- * @version 
  */
 public class NoErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
index 41d190a..b54724b 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
@@ -54,8 +54,6 @@ import org.slf4j.LoggerFactory;
  * This builder can be used for testing purposes where you want to know when a test is supposed to be done.
  * The idea is that you can build an expression that explains when the test is done. For example when Camel
  * have finished routing 5 messages. You can then in your test await for this condition to occur.
- *
- * @version 
  */
 public class NotifyBuilder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
index b0511f8..c7427a2 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
@@ -31,8 +31,6 @@ import static org.apache.camel.util.ObjectHelper.notNull;
 
 /**
  * A helper class for working with predicates
- *
- * @version 
  */
 public final class PredicateBuilder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
index 90b9043..6e36f68 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
@@ -24,8 +24,6 @@ import org.apache.camel.Processor;
 
 /**
  * A builder of a number of different {@link Processor} implementations
- *
- * @version 
  */
 public final class ProcessorBuilder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java
index 6bee379..cabad50 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java
@@ -23,8 +23,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * A build to create Camel proxies.
- *
- * @version 
  */
 public final class ProxyBuilder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index 94f6ce9..b25adfc 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -49,8 +49,6 @@ import org.slf4j.LoggerFactory;
 /**
  * A <a href="http://camel.apache.org/dsl.html">Java DSL</a> which is
  * used to build {@link org.apache.camel.impl.DefaultRoute} instances in a {@link CamelContext} for smart routing.
- *
- * @version 
  */
 public abstract class RouteBuilder extends BuilderSupport implements RoutesBuilder {
     protected Logger log = LoggerFactory.getLogger(getClass());
diff --git a/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
index 96004f5..53a7c18 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
@@ -28,8 +28,6 @@ import org.apache.camel.util.ResourceHelper;
  * <p/>
  * This builder is available in the Java DSL from the {@link RouteBuilder} which means that using
  * simple language for {@link Expression}s or {@link Predicate}s is very easy with the help of this builder.
- *
- * @version
  */
 public class SimpleBuilder implements Predicate, Expression {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java
index 52acdb2..82f5b88 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.ThreadPoolProfile;
 
 /**
  * A builder to create thread pools.
- *
- * @version 
  */
 public final class ThreadPoolBuilder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
index d6d387f..791a382 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
@@ -31,8 +31,6 @@ import org.apache.camel.util.ExpressionToPredicateAdapter;
 
 /**
  * A builder of expressions or predicates based on values.
- * 
- * @version 
  */
 public class ValueBuilder implements Expression, Predicate {
     private Expression expression;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandler.java b/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandler.java
index 8a3109e..9a1d854 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandler.java
@@ -23,8 +23,6 @@ import org.apache.camel.Message;
 
 /**
  * Uses DOM to handle results of the transformation
- *
- * @version 
  */
 public class DomResultHandler implements ResultHandler {
     private DOMResult result = new DOMResult();
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandlerFactory.java b/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandlerFactory.java
index a7a2b20..7acac8b 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandlerFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/DomResultHandlerFactory.java
@@ -20,8 +20,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Factory for {@link DomResultHandler}
- *
- * @version 
  */
 public class DomResultHandlerFactory implements ResultHandlerFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandler.java b/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandler.java
index 51425da..bceaf0e 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandler.java
@@ -28,8 +28,6 @@ import org.apache.camel.Message;
  * <p/>
  * For example when transforming big files you can stream directly to a file output
  * to avoid consuming to much memory.
- *
- * @version 
  */
 public class FileResultHandler implements ResultHandler {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java b/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java
index 1349bee..bd6b902 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java
@@ -23,8 +23,6 @@ import org.apache.camel.util.ExchangeHelper;
 
 /**
  * Factory for {@link javax.xml.transform.stream.StreamResult} which is streamed to file.
- *
- * @version 
  */
 public class FileResultHandlerFactory implements ResultHandlerFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/InvalidXPathExpression.java b/camel-core/src/main/java/org/apache/camel/builder/xml/InvalidXPathExpression.java
index 07efc8f..c7712a8 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/InvalidXPathExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/InvalidXPathExpression.java
@@ -22,8 +22,6 @@ import org.apache.camel.RuntimeExpressionException;
 
 /**
  * An exception thrown if am XPath expression could not be parsed or evaluated
- *
- * @version 
  */
 public class InvalidXPathExpression extends RuntimeExpressionException {
     private static final long serialVersionUID = 9171451033826915273L;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java b/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java
index 20ccc66..5b8a76db 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java
@@ -39,8 +39,6 @@ import static org.apache.camel.builder.xml.Namespaces.SYSTEM_PROPERTIES_NAMESPAC
  * properties available.
  * <p/>
  * Implementations of this resolver must be thread safe
- *
- * @version 
  */
 public class MessageVariableResolver implements XPathVariableResolver {
     private static final Logger LOG = LoggerFactory.getLogger(MessageVariableResolver.class);
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java b/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java
index 359c613..3367a08 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java
@@ -31,8 +31,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * A helper class for working with namespaces or creating namespace based expressions
- *
- * @version 
  */
 public class Namespaces {
     public static final String DEFAULT_NAMESPACE = "http://camel.apache.org/schema/spring";
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandler.java b/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandler.java
index 4334d52..2bf111a 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandler.java
@@ -22,8 +22,6 @@ import org.apache.camel.Message;
 
 /**
  * A strategy for handling XSLT results
- *
- * @version 
  */
 public interface ResultHandler {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandlerFactory.java b/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandlerFactory.java
index f527d55..dc48774 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandlerFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/ResultHandlerFactory.java
@@ -20,8 +20,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Factory for {@link org.apache.camel.builder.xml.ResultHandler}
- *
- * @version 
  */
 public interface ResultHandlerFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandler.java b/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandler.java
index 8d8b120..7dd5252 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandler.java
@@ -25,8 +25,6 @@ import org.apache.camel.Message;
 
 /**
  * Processes the XSLT result as a byte[]
- *
- * @version 
  */
 public class StreamResultHandler implements ResultHandler {
     private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandlerFactory.java b/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandlerFactory.java
index 3b9462e..933e47b 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandlerFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/StreamResultHandlerFactory.java
@@ -20,8 +20,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Factory for {@link StreamResultHandler}
- *
- * @version 
  */
 public class StreamResultHandlerFactory implements ResultHandlerFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandler.java b/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandler.java
index cc6beb5..703829c 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandler.java
@@ -25,8 +25,6 @@ import org.apache.camel.Message;
 
 /**
  * Processes the XSLT result as a String
- *
- * @version 
  */
 public class StringResultHandler implements ResultHandler {
     private StringWriter buffer = new StringWriter();
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandlerFactory.java b/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandlerFactory.java
index 6a45623..d9b7a8b 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandlerFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/StringResultHandlerFactory.java
@@ -20,8 +20,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Factory for {@link StringResultHandler}
- *
- * @version 
  */
 public class StringResultHandlerFactory implements ResultHandlerFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
index 1ba741e..f4b3cb5 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
@@ -68,8 +68,6 @@ import static org.apache.camel.util.ObjectHelper.notNull;
  * <p/>
  * Will by default output the result as a String. You can chose which kind of output
  * you want using the <tt>outputXXX</tt> methods.
- *
- * @version 
  */
 public class XsltBuilder implements Processor {
     private static final Logger LOG = LoggerFactory.getLogger(XsltBuilder.class);
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java
index 912b75d..6361aee 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java
@@ -41,8 +41,6 @@ import org.slf4j.LoggerFactory;
  * ref will lookup the resource in the registry.
  * bean will call a method on a bean to be used as the resource.
  * For bean you can specify the method name after dot, eg bean:myBean.myMethod
- *
- * @version 
  */
 public class XsltUriResolver implements URIResolver {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
index f437009..d6eb750 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
@@ -31,8 +31,6 @@ import org.slf4j.LoggerFactory;
 /**
  * A {@link Processor} which converts the inbound exchange to a method
  * invocation on a POJO
- *
- * @version 
  */
 public abstract class AbstractBeanProcessor implements AsyncProcessor {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractBeanProcessor.class);
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AmbiguousMethodCallException.java b/camel-core/src/main/java/org/apache/camel/component/bean/AmbiguousMethodCallException.java
index 4c570f4..d7438ff 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AmbiguousMethodCallException.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AmbiguousMethodCallException.java
@@ -24,8 +24,6 @@ import org.apache.camel.Exchange;
 /**
  * An exception thrown if an attempted method invocation resulted in an ambiguous method
  * such that multiple methods match the inbound message exchange
- *
- * @version 
  */
 public class AmbiguousMethodCallException extends CamelExchangeException {
     private static final long serialVersionUID = -8867010485101806951L;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AnnotationExpressionFactory.java b/camel-core/src/main/java/org/apache/camel/component/bean/AnnotationExpressionFactory.java
index 574164b..3b26157 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AnnotationExpressionFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AnnotationExpressionFactory.java
@@ -25,8 +25,6 @@ import org.apache.camel.language.LanguageAnnotation;
 /**
  * A factory which creates an {@link Expression} object from an annotation on a field, property or method parameter
  * of a specified type.
- *
- * @version 
  */
 public interface AnnotationExpressionFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java
index a02a1a1..38cf875 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java
@@ -26,9 +26,6 @@ import org.apache.camel.language.bean.BeanExpression;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 
-/**
- * @version 
- */
 public class BeanAnnotationExpressionFactory extends DefaultAnnotationExpressionFactory {
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanConstants.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanConstants.java
index ce3bcfa..dd06a1d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanConstants.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanConstants.java
@@ -16,9 +16,6 @@
  */
 package org.apache.camel.component.bean;
 
-/**
- * @version 
- */
 public final class BeanConstants {
 
     public static final String BEAN_PARAMETER_MAPPING_STRATEGY = "CamelBeanParameterMappingStrategy";
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanHolder.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanHolder.java
index 5cb9dd4..119a2cb 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanHolder.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanHolder.java
@@ -21,8 +21,6 @@ import org.apache.camel.Processor;
 
 /**
  * Object holder for a bean.
- *
- * @version 
  */
 public interface BeanHolder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanTypeHolder.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanTypeHolder.java
index abe42e2..0a5b495 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanTypeHolder.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanTypeHolder.java
@@ -18,8 +18,6 @@ package org.apache.camel.component.bean;
 
 /**
  * Object holder for a bean type.
- *
- * @version 
  */
 public interface BeanTypeHolder extends BeanHolder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java b/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
index e524b48..4129b1e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
@@ -26,8 +26,6 @@ import org.apache.camel.Producer;
 /**
  * An {@link java.lang.reflect.InvocationHandler} which invokes a message
  * exchange on a camel {@link Endpoint}
- * 
- * @version
  */
 public class CamelInvocationHandler extends AbstractCamelInvocationHandler implements InvocationHandler {
     private final MethodInfoCache methodInfoCache;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
index 1965d2b..23966e2 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
@@ -23,8 +23,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * A constant (singleton) bean implementation of {@link BeanHolder}
- *
- * @version 
  */
 public class ConstantBeanHolder implements BeanHolder {
     private final Object bean;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java
index 50a2b50..45446fe 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantStaticTypeBeanHolder.java
@@ -21,8 +21,6 @@ import org.apache.camel.CamelContext;
 /**
  * A constant {@link org.apache.camel.component.bean.BeanHolder} for a class or static class
  * where the intention is to only invoke static methods, without the need for creating an instance of the type.
- *
- * @version
  */
 public class ConstantStaticTypeBeanHolder extends ConstantTypeBeanHolder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java
index a40ed15..fee1c69 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantTypeBeanHolder.java
@@ -22,8 +22,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * A constant (singleton) bean implementation of {@link org.apache.camel.component.bean.BeanTypeHolder}
- *
- * @version
  */
 public class ConstantTypeBeanHolder implements BeanTypeHolder {
     private final Class<?> type;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java b/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java
index cf961c3..41cf7b3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java
@@ -29,8 +29,6 @@ import org.apache.camel.util.PredicateToExpressionAdapter;
 
 /**
  * Default implementation of the {@link AnnotationExpressionFactory}.
- *
- * @version 
  */
 public class DefaultAnnotationExpressionFactory implements AnnotationExpressionFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java b/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
index 9ec7ba1..4e879c1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
@@ -29,8 +29,6 @@ import org.apache.camel.spi.Registry;
 
 /**
  * Represents the strategy used to figure out how to map a message exchange to a POJO method invocation
- *
- * @version 
  */
 public class DefaultParameterMappingStrategy implements ParameterMappingStrategy {
     private final Map<Class<?>, Expression> parameterTypeToExpressionMap = new ConcurrentHashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodBean.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodBean.java
index bb05c6b..f61cc95 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodBean.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodBean.java
@@ -21,8 +21,6 @@ import java.lang.reflect.Method;
 
 /**
  * Represents a {@link Serializable} version of a {@link Method}
- *
- * @version 
  */
 public class MethodBean implements Serializable {
     private static final long serialVersionUID = -789408217201706532L;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index 00e040d..c0aa7df 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -63,8 +63,6 @@ import static org.apache.camel.util.ObjectHelper.asString;
 
 /**
  * Information about a method to be used for invocation.
- *
- * @version 
  */
 public class MethodInfo {
     private static final Logger LOG = LoggerFactory.getLogger(MethodInfo.class);
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java
index 0b7c6ab..78c5389 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java
@@ -25,8 +25,6 @@ import org.apache.camel.util.LRUCacheFactory;
 /**
  * Represents a cache of {@link MethodInfo} objects to avoid the expense of introspection for each
  * invocation of a method via a proxy.
- *
- * @version 
  */
 public class MethodInfoCache {
     private final CamelContext camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInvocation.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInvocation.java
index c385950..8777510 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInvocation.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInvocation.java
@@ -23,8 +23,6 @@ import org.apache.camel.AsyncCallback;
 
 /**
  * Information used by Camel to perform method invocation.
- *
- * @version 
  */
 public interface MethodInvocation {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodNotFoundException.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodNotFoundException.java
index e31c729..6e75565 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodNotFoundException.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodNotFoundException.java
@@ -20,9 +20,6 @@ import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 public class MethodNotFoundException extends CamelExchangeException {
     private static final long serialVersionUID = -7411465307141051012L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ParameterInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/ParameterInfo.java
index 810e032..38159fa 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ParameterInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ParameterInfo.java
@@ -23,8 +23,6 @@ import org.apache.camel.Expression;
 
 /**
  * Parameter information to be used for method invocation.
- *
- * @version 
  */
 public class ParameterInfo {
     private final int index;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ParameterMappingStrategy.java b/camel-core/src/main/java/org/apache/camel/component/bean/ParameterMappingStrategy.java
index 5bcef72..3be5224 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ParameterMappingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ParameterMappingStrategy.java
@@ -20,8 +20,6 @@ import org.apache.camel.Expression;
 
 /**
  * A strategy for creating a default parameter expression for a given type
- *
- * @version 
  */
 public interface ParameterMappingStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java b/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
index 5e761a03..9cf040c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
@@ -24,8 +24,6 @@ import org.apache.camel.processor.DeferServiceFactory;
 
 /**
  * A helper class for creating proxies which delegate to Camel
- *
- * @version 
  */
 public final class ProxyHelper {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java b/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java
index 742aaa4..1863bd7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java
@@ -23,8 +23,6 @@ import org.apache.camel.spi.Registry;
 
 /**
  * An implementation of a {@link BeanHolder} which will look up a bean from the registry and act as a cache of its metadata
- *
- * @version 
  */
 public class RegistryBean implements BeanHolder {
     private final CamelContext context;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/XPathAnnotationExpressionFactory.java b/camel-core/src/main/java/org/apache/camel/component/bean/XPathAnnotationExpressionFactory.java
index 2281302..f229480 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/XPathAnnotationExpressionFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/XPathAnnotationExpressionFactory.java
@@ -27,8 +27,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Factory for the XPath expression annotations.
- *
- * @version 
  */
 public class XPathAnnotationExpressionFactory extends DefaultAnnotationExpressionFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
index 91db6bc..12233eb 100644
--- a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
@@ -29,8 +29,6 @@ import org.apache.camel.util.IntrospectionSupport;
  * The <a href="http://camel.apache.org/class.html">Class Component</a> is for binding JavaBeans to Camel message exchanges based on class name.
  * <p/>
  * This component is an extension to the {@link org.apache.camel.component.bean.BeanComponent}.
- *
- * @version 
  */
 public class ClassComponent extends BeanComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
index 767ebe6..b9f75b0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
@@ -24,8 +24,6 @@ import org.apache.camel.impl.DefaultComponent;
 /**
  * The <a href="http://camel.apache.org/browse.html">Browse Component</a> provides a simple
  * <a href="http://camel.apache.org/browsableendpoint.html">BrowsableEndpoint</a> for testing visualization or debugging.
- *
- * @version 
  */
 public class BrowseComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
index ace1b2f..e615182b5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
@@ -26,8 +26,6 @@ import org.apache.camel.util.StringHelper;
 
 /**
  * The <a href="http://camel.apache.org/dataformat-component.html">Data Format Component</a> enables using <a href="https://camel.apache.org/data-format.html">Data Format</a> as a component.
- *
- * @version
  */
 public class DataFormatComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSet.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSet.java
index 98b88a0..8f48390 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSet.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSet.java
@@ -20,8 +20,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Represents a strategy for testing endpoints with canned data.
- *
- * @version 
  */
 public interface DataSet {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
index c7b4d4c..11410fc 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
@@ -24,8 +24,6 @@ import org.apache.camel.util.CamelContextHelper;
 
 /**
  * Component for <a href="http://camel.apache.org/dataset.html">DataSet</a>.
- *
- * @version 
  */
 public class DataSetComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
index 229ba87..f279036 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
@@ -28,8 +28,6 @@ import org.apache.camel.util.URISupport;
 
 /**
  * DataSet consumer.
- *
- * @version 
  */
 public class DataSetConsumer extends DefaultConsumer {
     private final CamelContext camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetSupport.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetSupport.java
index 77c82b7..501f84d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetSupport.java
@@ -25,8 +25,6 @@ import org.apache.camel.Processor;
 
 /**
  * Base class for DataSet
- *
- * @version 
  */
 public abstract class DataSetSupport implements DataSet {
     private Map<String, Object> defaultHeaders;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/FileDataSet.java b/camel-core/src/main/java/org/apache/camel/component/dataset/FileDataSet.java
index 3fe5c83..d04f902 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/FileDataSet.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/FileDataSet.java
@@ -27,8 +27,6 @@ import org.apache.camel.util.Scanner;
  * A DataSet that reads payloads from a file that are used to create each message exchange
  * along with using a pluggable transformer to customize the messages.  The file contents may optionally
  * be split using a supplied token.
- *
- * @version
  */
 public class FileDataSet extends ListDataSet {
     private File sourceFile;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/ListDataSet.java b/camel-core/src/main/java/org/apache/camel/component/dataset/ListDataSet.java
index 5d42c9c..0407014 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/ListDataSet.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/ListDataSet.java
@@ -22,8 +22,6 @@ import java.util.List;
 /**
  * A DataSet that allows a list of static payloads to be used to create each message exchange
  * along with using a pluggable transformer to customize the messages.
- *
- * @version
  */
 public class ListDataSet extends DataSetSupport {
     private List<Object> defaultBodies;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/SimpleDataSet.java b/camel-core/src/main/java/org/apache/camel/component/dataset/SimpleDataSet.java
index d4db969..aaf42ab 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/SimpleDataSet.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/SimpleDataSet.java
@@ -19,8 +19,6 @@ package org.apache.camel.component.dataset;
 /**
  * A simple DataSet that allows a static payload to be used to create each message exchange
  * along with using a pluggable transformer to randomize the message.
- *
- * @version 
  */
 public class SimpleDataSet extends DataSetSupport {
     private Object defaultBody = "<hello>world!</hello>";
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
index b667f7b..91e4361 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
@@ -26,8 +26,6 @@ import org.apache.camel.util.ServiceHelper;
 
 /**
  * The <a href="http://camel.apache.org/direct.html">Direct Component</a> manages {@link DirectEndpoint} and holds the list of named direct endpoints.
- *
- * @version
  */
 public class DirectComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java
index debed19..cc90cd7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.ShutdownAware;
 
 /**
  * The direct consumer.
- *
- * @version 
  */
 public class DirectConsumer extends DefaultConsumer implements ShutdownAware, Suspendable {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumerNotAvailableException.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumerNotAvailableException.java
index 95178c3..564cfdf 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumerNotAvailableException.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumerNotAvailableException.java
@@ -21,8 +21,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Exception thrown when no consumers are available.
- *
- * @version
  */
 public class DirectConsumerNotAvailableException extends CamelExchangeException {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
index bd8b267..02dce63 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
@@ -24,8 +24,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * The direct producer.
- *
- * @version 
  */
 public class DirectProducer extends DefaultAsyncProducer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerNotAvailableException.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerNotAvailableException.java
index 09fed78..519e09f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerNotAvailableException.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumerNotAvailableException.java
@@ -21,8 +21,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Exception thrown when no consumers are available.
- *
- * @version
  */
 public class DirectVmConsumerNotAvailableException extends CamelExchangeException {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExist.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExist.java
index 261f250..9e7ace5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExist.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExist.java
@@ -18,8 +18,6 @@ package org.apache.camel.component.file;
 
 /**
  * Represent the kinds of options when writing a file and what to do in case of an existing file exists.
- *
- * @version 
  */
 public enum GenericFileExist {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java
index a7a460f..73e4d86 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java
@@ -29,8 +29,6 @@ import org.slf4j.LoggerFactory;
  * <p/>
  * The work is for example to move the processed file into a backup folder, delete the file or
  * in case of processing failure do a rollback. 
- *
- * @version 
  */
 public class GenericFileOnCompletion<T> implements Synchronization {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOperationFailedException.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOperationFailedException.java
index c4b2a7b..0abdce7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOperationFailedException.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOperationFailedException.java
@@ -20,8 +20,6 @@ import org.apache.camel.RuntimeCamelException;
 
 /**
  * Exception thrown in case of last file operation failed.
- *
- * @version 
  */
 public class GenericFileOperationFailedException extends RuntimeCamelException {
     private static final long serialVersionUID = -64176625836814418L;
diff --git a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
index ee7806c..a166487 100644
--- a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
@@ -29,8 +29,6 @@ import org.apache.camel.util.StringHelper;
 /**
  * The <a href="http://camel.apache.org/language-component.html">Language component</a> enables sending
  * {@link org.apache.camel.Exchange}s to a given language in order to have a script executed.
- *
- * @version 
  */
 public class LanguageComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java b/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java
index 40cdab2..8e9e9a3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java
@@ -28,8 +28,6 @@ import org.apache.camel.util.ServiceHelper;
 
 /**
  * Language producer.
- *
- * @version 
  */
 public class LanguageProducer extends DefaultProducer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 160649f..c8cedc0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -32,8 +32,6 @@ import org.slf4j.LoggerFactory;
 /**
  * The <a href="http://camel.apache.org/log.html">Log Component</a>
  * is for logging message exchanges via the underlying logging mechanism.
- *
- * @version 
  */
 public class LogComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java b/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
index 81f01ee..9a2714b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
@@ -32,8 +32,6 @@ import org.apache.camel.util.PredicateAssertHelper;
 
 /**
  * A builder of assertions on message exchanges
- *
- * @version 
  */
 public abstract class AssertionClause extends ExpressionClauseSupport<ValueBuilder> implements Runnable {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
index 27ed8d5..466ae3d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
@@ -27,8 +27,6 @@ import org.apache.camel.util.CamelLogger;
 
 /**
  * The <a href="http://camel.apache.org/mock.html">Mock Component</a> provides mock endpoints for testing.
- *
- * @version 
  */
 public class MockComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index fcdb07d..ad15812 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -89,8 +89,6 @@ import org.slf4j.LoggerFactory;
  * <b>Important:</b> If using {@link #expectedMessageCount(int)} and also {@link #expectedBodiesReceived(java.util.List)} or
  * {@link #expectedHeaderReceived(String, Object)} then the latter overrides the number of expected message based on the
  * number of values provided in the bodies/headers.
- *
- * @version 
  */
 @UriEndpoint(firstVersion = "1.0.0", scheme = "mock", title = "Mock", syntax = "mock:name", producerOnly = true, label = "core,testing", lenientProperties = true)
 public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java b/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
index 288b302..a1314fb 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
@@ -30,8 +30,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents time based clauses for setting expectations on the mocks.
  * Such as time constrains for the received messages.
- *
- * @version 
  */
 public class TimeClause extends BinaryPredicateSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java b/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java
index 4fef9dc..4628eaf 100644
--- a/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java
@@ -36,8 +36,6 @@ import org.apache.camel.util.IOHelper;
  * <p/>
  * You can denote <tt>classpath:</tt> or <tt>file:</tt> as prefix in the uri to select whether the file
  * is located in the classpath or on the file system.
- *
- * @version 
  */
 public class DefaultPropertiesResolver implements PropertiesResolver {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java
index f6923a5..25b7571 100644
--- a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java
@@ -25,8 +25,6 @@ import org.apache.camel.CamelContext;
  * A resolver to load properties from a given source such as a file from a classpath.
  * <p/>
  * Implementations can also load properties from another source source as JNDI.
- *
- * @version 
  */
 public interface PropertiesResolver {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
index da51492..1fbd38f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
@@ -31,8 +31,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * The <a href="http://camel.apache.org/seda.html">SEDA Component</a> is for asynchronous SEDA exchanges on a {@link BlockingQueue} within a CamelContext
- *
- * @version 
  */
 public class SedaComponent extends DefaultComponent {
     protected final Logger log = LoggerFactory.getLogger(getClass());
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
index 2bd21f3..50f02f1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
@@ -50,8 +50,6 @@ import org.slf4j.LoggerFactory;
  * <p/>
  * In this implementation there is a little <i>slack period</i> when you suspend/stop the consumer, by which
  * the consumer may pickup a newly arrived messages and process it. That period is up till 1 second.
- *
- * @version 
  */
 public class SedaConsumer extends ServiceSupport implements Consumer, Runnable, ShutdownAware, Suspendable {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
index 8e75292..28a5873 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
@@ -28,9 +28,6 @@ import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.camel.support.SynchronizationAdapter;
 import org.apache.camel.util.ExchangeHelper;
 
-/**
- * @version 
- */
 public class SedaProducer extends DefaultAsyncProducer {
     
     private final SedaEndpoint endpoint;
diff --git a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
index 091da43..cee04c9 100644
--- a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
@@ -28,8 +28,6 @@ import org.apache.camel.util.URISupport;
  *
  * Component for testing by polling test messages from another endpoint on startup as the expected message bodies to
  * receive during testing.
- *
- * @version 
  */
 public class TestComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
index 44aeb8e..70106e8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
@@ -32,8 +32,6 @@ import org.apache.camel.impl.DefaultComponent;
  *
  * Represents the component that manages {@link TimerEndpoint}.  It holds the
  * list of {@link TimerConsumer} objects that are started.
- *
- * @version 
  */
 public class TimerComponent extends DefaultComponent {
     private final Map<String, Timer> timers = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
index 0b99d79..dc2e150 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
@@ -34,8 +34,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * The timer consumer.
- *
- * @version 
  */
 public class TimerConsumer extends DefaultConsumer implements StartupListener, Suspendable {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
index 89dd8e8..9899501 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The <a href="http://camel.apache.org/validation.html">Validator Component</a> is for validating XML against a schema
- *
- * @version
  */
 public class ValidatorComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
index 21c8d08..dee1049 100644
--- a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
@@ -33,8 +33,6 @@ import org.apache.camel.component.seda.SedaComponent;
  * within the classloader tree containing the camel-core.jar.
  *
  * i.e. to handle communicating across CamelContext instances and possibly across web application contexts, providing that camel-core.jar is on the system classpath.
- * 
- * @version
  */
 public class VmComponent extends SedaComponent {
     protected static final Map<String, QueueReference> QUEUES = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/converter/AttachmentConverter.java b/camel-core/src/main/java/org/apache/camel/converter/AttachmentConverter.java
index 5e032d5..ef05692 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/AttachmentConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/AttachmentConverter.java
@@ -24,8 +24,6 @@ import org.apache.camel.Converter;
 /**
  * Some useful converters for {@link Attachment}
  * to a {@link DataHandler}
- *
- * @version 
  */
 @Converter
 public final class AttachmentConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/CamelConverter.java b/camel-core/src/main/java/org/apache/camel/converter/CamelConverter.java
index 497af14..21287de 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/CamelConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/CamelConverter.java
@@ -26,8 +26,6 @@ import org.apache.camel.Processor;
 /**
  * Some useful converters for Camel APIs such as to convert a {@link Predicate} or {@link Expression}
  * to a {@link Processor}
- *
- * @version 
  */
 @Converter
 public final class CamelConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java b/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java
index e573f9f..7200e24 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java
@@ -34,8 +34,6 @@ import org.apache.camel.Converter;
 /**
  * Some core java.util Collection based
  * <a href="http://camel.apache.org/type-converter.html">Type Converters</a>
- *
- * @version 
  */
 @Converter
 public final class CollectionConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
index 06f52f0..47a64ad 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
@@ -55,8 +55,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Some core java.io based <a
  * href="http://camel.apache.org/type-converter.html">Type Converters</a>
- *
- * @version 
  */
 @Converter
 public final class IOConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java b/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java
index c3b4bd0..a5ecb63 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java
@@ -32,8 +32,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Some core java.nio based
  * <a href="http://camel.apache.org/type-converter.html">Type Converters</a>
- *
- * @version 
  */
 @Converter
 public final class NIOConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
index 8eb04ca..f977417 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
@@ -27,8 +27,6 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * Some core java.lang based <a
  * href="http://camel.apache.org/type-converter.html">Type Converters</a>
- *
- * @version 
  */
 @Converter
 public final class ObjectConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java
index dc25a61..4111edb 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java
@@ -38,8 +38,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Converts from some DOM types to Java types
- *
- * @version 
  */
 @Converter
 public final class DomConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
index 7d45089..67fb470 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
@@ -48,8 +48,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * A converter of StAX objects
- *
- * @version 
  */
 @Converter
 public class StaxConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StreamSourceConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StreamSourceConverter.java
index 36e017b..59f5c5c 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StreamSourceConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StreamSourceConverter.java
@@ -25,8 +25,6 @@ import org.apache.camel.Converter;
 
 /**
  * A converter from {@link StreamSource} objects
- *
- * @version 
  */
 @Converter
 public final class StreamSourceConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
index 71b7201..46c0195 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
@@ -78,8 +78,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * A helper class to transform to and from various JAXB types such as {@link Source} and {@link Document}
- *
- * @version
  */
 @Converter
 public class XmlConverter {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java b/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
index 808b098..ca874d1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.Breakpoint;
  * A support class for {@link Breakpoint} implementations to use as base class.
  * <p/>
  * Will be in active state.
- *
- * @version 
  */
 public abstract class BreakpointSupport implements Breakpoint {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java b/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
index cb30544..b7298f7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
@@ -52,8 +52,6 @@ import org.slf4j.LoggerFactory;
  * reused by both the <a href="http://camel.apache.org/spring.html">Spring</a>,
  * <a href="http://camel.apache.org/guice.html">Guice</a> and
  * <a href="http://camel.apache.org/blueprint.html">Blueprint</a> support.
- *
- * @version
  */
 public class CamelPostProcessorHelper implements CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java b/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
index 5a966fd..54d0d3a 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.Condition;
 
 /**
  * A support class for {@link org.apache.camel.spi.Condition} implementations to use as base class.
- *
- * @version 
  */
 public class ConditionSupport implements Condition {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
index 02cf4c8..798f126 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
@@ -30,8 +30,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Cache containing created {@link org.apache.camel.Consumer}.
- *
- * @version 
  */
 public class ConsumerCache extends ServiceSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
index 652f444..b0ec87e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
@@ -25,8 +25,6 @@ import org.apache.camel.util.AsyncProcessorHelper;
 /**
  * A default implementation of {@link org.apache.camel.Producer} for implementation inheritance,
  * which can process {@link Exchange}s asynchronously.
- *
- * @version 
  */
 public abstract class DefaultAsyncProducer extends DefaultProducer implements AsyncProducer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index daf04a1..707d5fd 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -197,8 +197,6 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
 
 /**
  * Represents the context used to configure routes and the policies to use.
- *
- * @version
  */
 @SuppressWarnings("deprecation")
 public class DefaultCamelContext extends ServiceSupport implements ModelCamelContext, ManagedCamelContext, Suspendable {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContextNameStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContextNameStrategy.java
index ef5b95b..4b9fa26 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContextNameStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContextNameStrategy.java
@@ -22,8 +22,6 @@ import org.apache.camel.spi.CamelContextNameStrategy;
 
 /**
  * A default name strategy which auto assigns a name using a prefix-counter pattern.
- *
- * @version 
  */
 public class DefaultCamelContextNameStrategy implements CamelContextNameStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java
index e8044a5..de21211 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java
@@ -32,8 +32,6 @@ import org.slf4j.LoggerFactory;
  * components by using the URI scheme prefix and searching for a file of the URI
  * scheme name in the <b>META-INF/services/org/apache/camel/component/</b>
  * directory on the classpath.
- *
- * @version
  */
 public class DefaultComponentResolver implements ComponentResolver {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
index 9ab5a3d..fe22f3e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
@@ -34,8 +34,6 @@ import org.apache.camel.util.UnitOfWorkHelper;
 
 /**
  * A default consumer useful for implementation inheritance.
- *
- * @version 
  */
 public class DefaultConsumer extends ServiceSupport implements Consumer, RouteAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
index 175e6d5..ea861af 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
@@ -36,8 +36,6 @@ import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
  * Template (named like Spring's TransactionTemplate & JmsTemplate
  * et al) for working with Camel and consuming {@link org.apache.camel.Message} instances in an
  * {@link Exchange} from an {@link Endpoint}.
- *
- * @version 
  */
 public class DefaultConsumerTemplate extends ServiceSupport implements ConsumerTemplate {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java
index 571799a..0ee6570 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java
@@ -26,8 +26,6 @@ import org.apache.camel.util.ResolverHelper;
 
 /**
  * Default data format resolver
- *
- * @version
  */
 public class DefaultDataFormatResolver implements DataFormatResolver {
     public static final String DATAFORMAT_RESOURCE_PATH = "META-INF/services/org/apache/camel/dataformat/";
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
index dcd0a21..99726b0 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
@@ -48,8 +48,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * The default implementation of the {@link Debugger}.
- *
- * @version 
  */
 public class DefaultDebugger implements Debugger, CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
index d7d7632..7206ca8 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
@@ -52,8 +52,6 @@ import org.slf4j.LoggerFactory;
  * endpoint allows Camel end users to dictate whether they want the asynchronous
  * model or not. The option is default <tt>false</tt> which means asynchronous
  * processing is allowed.
- * 
- * @version
  */
 public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint, HasId, CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
index eb85d4a..c2357d4 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
@@ -39,8 +39,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * A default implementation of {@link Exchange}
- *
- * @version 
  */
 public final class DefaultExchange implements Exchange {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeHolder.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeHolder.java
index 681ff4c..ae23a06 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeHolder.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeHolder.java
@@ -61,8 +61,6 @@ import org.slf4j.LoggerFactory;
  * primitive, String, and Number types (and Exception types for exchange properties). Any other type is skipped.
  * Any message body object that is not serializable will be skipped and Camel will log this at <tt>WARN</tt> level.
  * And any message header values that is not a primitive value will be skipped and Camel will log this at <tt>DEBUG</tt> level.
- *
- * @version 
  */
 public class DefaultExchangeHolder implements Serializable {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinderResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinderResolver.java
index 51abb9b..1d2792d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinderResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinderResolver.java
@@ -22,8 +22,6 @@ import org.apache.camel.spi.FactoryFinderResolver;
 
 /**
  * Default factory finder.
- *
- * @version 
  */
 public class DefaultFactoryFinderResolver implements FactoryFinderResolver {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java
index c11a4c4..9d48719 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java
@@ -36,8 +36,6 @@ import org.apache.camel.spi.HeaderFilterStrategy;
  * to a native message like JMS and CXF message. You can see example of
  * DefaultHeaderFilterStrategy are being extended and invoked in camel-jms 
  * and camel-cxf components.
- *
- * @version 
  */
 public class DefaultHeaderFilterStrategy implements HeaderFilterStrategy {
     
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
index 102c358..9b68d09 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultInflightRepository.java
@@ -37,8 +37,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Default {@link org.apache.camel.spi.InflightRepository}.
- *
- * @version 
  */
 public class DefaultInflightRepository extends ServiceSupport implements InflightRepository {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
index b7862ce..bb51158 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
@@ -29,8 +29,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Default language resolver that looks for language factories in <b>META-INF/services/org/apache/camel/language/</b> and
  * language resolvers in <b>META-INF/services/org/apache/camel/language/resolver/</b>.
- *
- * @version
  */
 public class DefaultLanguageResolver implements LanguageResolver {
     public static final String LANGUAGE_RESOURCE_PATH = "META-INF/services/org/apache/camel/language/";
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
index 70f8b90..33c970f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
@@ -41,8 +41,6 @@ import org.apache.camel.util.ObjectHelper;
  * See more details at {@link org.apache.camel.util.CaseInsensitiveMap}.
  * The implementation of the map can be configured by the {@link HeadersMapFactory} which can be set
  * on the {@link CamelContext}. The default implementation uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
- *
- * @version 
  */
 public class DefaultMessage extends MessageSupport {
     private boolean fault;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultNodeIdFactory.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultNodeIdFactory.java
index 90acc52..cfc8d40 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultNodeIdFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultNodeIdFactory.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.NodeIdFactory;
 
 /**
  * Default id factory.
- *
- * @version 
  */
 public class DefaultNodeIdFactory implements NodeIdFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingConsumerPollStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingConsumerPollStrategy.java
index 1e54055..5d4dded 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingConsumerPollStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingConsumerPollStrategy.java
@@ -24,8 +24,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * A default implementation that will not retry on rollback.
- *
- * @version 
  */
 public class DefaultPollingConsumerPollStrategy implements PollingConsumerPollStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java
index a4a1b0b..5142a34 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultPollingEndpoint.java
@@ -22,8 +22,6 @@ import org.apache.camel.Processor;
 
 /**
  * A base class for an endpoint which the default consumer mode is to use a {@link org.apache.camel.PollingConsumer}
- *
- * @version 
  */
 public abstract class DefaultPollingEndpoint extends ScheduledPollEndpoint  {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
index 019b748..1431730 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducer.java
@@ -26,8 +26,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * A default implementation of {@link Producer} for implementation inheritance.
- *
- * @version 
  */
 public abstract class DefaultProducer extends ServiceSupport implements Producer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
index 2eceb58..19c8535 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
@@ -46,8 +46,6 @@ import org.apache.camel.util.concurrent.SynchronousExecutorService;
  * Template (named like Spring's TransactionTemplate & JmsTemplate
  * et al) for working with Camel and sending {@link Message} instances in an
  * {@link Exchange} to an {@link Endpoint}.
- *
- * @version 
  */
 public class DefaultProducerTemplate extends ServiceSupport implements ProducerTemplate {
     private final CamelContext camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
index b5cd297..10105b3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
@@ -35,8 +35,6 @@ import org.apache.camel.util.TimeUtils;
  * 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.
- *
- * @version 
  */
 public abstract class DefaultRoute extends ServiceSupport implements Route {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index 247890c..c2680d4 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -50,8 +50,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * The context used to activate new routing rules
- *
- * @version 
  */
 public class DefaultRouteContext implements RouteContext {
     private final Map<NamedNode, AtomicInteger> nodeIndex = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java
index d6b81b6..9cb3fe3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteStartupOrder.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.RouteStartupOrder;
 
 /**
  * Default implementation of {@link org.apache.camel.spi.RouteStartupOrder}.
- *
- * @version 
  */
 public class DefaultRouteStartupOrder implements RouteStartupOrder {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumer.java
index 847574d..7a9f346 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultScheduledPollConsumer.java
@@ -27,8 +27,6 @@ import org.apache.camel.util.ServiceHelper;
 /**
  * A default implementation of an event driven {@link org.apache.camel.Consumer} which uses the
  * {@link PollingConsumer}
- *
- * @version 
  */
 public class DefaultScheduledPollConsumer extends ScheduledPollConsumer {
     private PollingConsumer pollingConsumer;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
index 7d70ff6..457191e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultShutdownStrategy.java
@@ -110,8 +110,6 @@ import org.slf4j.LoggerFactory;
  * <p/>
  * This information can also be obtained from the {@link org.apache.camel.spi.InflightRepository}
  * at all time during runtime.
- *
- * @version
  */
 public class DefaultShutdownStrategy extends ServiceSupport implements ShutdownStrategy, CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java
index 6fca426..c8e5b1e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenConsumerRoute.java
@@ -38,8 +38,6 @@ import org.apache.camel.util.EndpointHelper;
  * 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.
- *
- * @version 
  */
 public class EventDrivenConsumerRoute extends DefaultRoute {
     private final Processor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java
index 1fac509..695d0c9 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EventDrivenPollingConsumer.java
@@ -39,8 +39,6 @@ import org.slf4j.LoggerFactory;
  * A default implementation of the {@link org.apache.camel.PollingConsumer} which uses the normal
  * asynchronous consumer mechanism along with a {@link BlockingQueue} to allow
  * the caller to pull messages on demand.
- *
- * @version 
  */
 public class EventDrivenPollingConsumer extends PollingConsumerSupport implements Processor, IsSingleton {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ExplicitCamelContextNameStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/ExplicitCamelContextNameStrategy.java
index 0579b50..560f30d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ExplicitCamelContextNameStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ExplicitCamelContextNameStrategy.java
@@ -21,8 +21,6 @@ import org.apache.camel.util.StringHelper;
 
 /**
  * Strategy to used an explicit (fixed) name for {@link org.apache.camel.CamelContext}.
- *
- * @version 
  */
 public class ExplicitCamelContextNameStrategy implements CamelContextNameStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
index 044d538..87d64de 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
@@ -34,8 +34,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * This is an endpoint when sending to it, is intercepted and is routed in a detour
- *
- * @version 
  */
 public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
index 3a25979..cd4e065 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
@@ -32,8 +32,6 @@ import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
  * <p/>
  * This strategy will only apply when new endpoints are being created. If you want to replace
  * existing endpoints, you will have to remove them from the {@link org.apache.camel.CamelContext} beforehand.
- *
- * @version 
  */
 public class InterceptSendToMockEndpointStrategy implements EndpointStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/LimitedPollingConsumerPollStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/LimitedPollingConsumerPollStrategy.java
index 926f8f0..6f566f2 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/LimitedPollingConsumerPollStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/LimitedPollingConsumerPollStrategy.java
@@ -30,8 +30,6 @@ import org.apache.camel.util.ServiceHelper;
  * <p/>
  * If Camel cannot successfully consumer from a given consumer, then after X consecutive failed attempts the consumer
  * will be suspended/stopped. This prevents the log to get flooded with failed attempts, for example during nightly runs.
- *
- * @version 
  */
 public class LimitedPollingConsumerPollStrategy extends DefaultPollingConsumerPollStrategy implements Service {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java b/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java
index f0f834a..a347d50 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java
@@ -27,8 +27,6 @@ import org.slf4j.MDC;
 
 /**
  * This unit of work supports <a href="http://www.slf4j.org/api/org/slf4j/MDC.html">MDC</a>.
- *
- * @version 
  */
 public class MDCUnitOfWork extends DefaultUnitOfWork {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java b/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
index 9498a7f..8360d97 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
@@ -32,8 +32,6 @@ import org.apache.camel.spi.DataTypeAware;
  *
  * Unless a specific provider wishes to do something particularly clever with
  * headers you probably want to just derive from {@link DefaultMessage}
- *
- * @version
  */
 public abstract class MessageSupport implements Message, CamelContextAware, DataTypeAware {
     private CamelContext camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java b/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java
index 14d0f06..1fb3c0c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/PollingConsumerSupport.java
@@ -26,8 +26,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * A useful base class for implementations of {@link PollingConsumer}
- * 
- * @version 
  */
 public abstract class PollingConsumerSupport extends ServiceSupport implements PollingConsumer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java
index 50f2778..f751292 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java
@@ -34,8 +34,6 @@ import org.apache.camel.Producer;
  * If your producers/consumers need more control of its lifecycle it is advised instead to extend
  * {@link org.apache.camel.impl.DefaultEndpoint}, {@link org.apache.camel.impl.DefaultProducer}
  * and {@link org.apache.camel.impl.DefaultConsumer}.
- *
- * @version 
  */
 public class ProcessorEndpoint extends DefaultPollingEndpoint {
     private Processor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProcessorPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/ProcessorPollingConsumer.java
index d3ec52b..77de158 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProcessorPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProcessorPollingConsumer.java
@@ -29,8 +29,6 @@ import org.apache.camel.util.ServiceHelper;
  * A simple implementation of {@link org.apache.camel.PollingConsumer} which just uses
  * a {@link Processor}. This implementation does not support timeout based
  * receive methods such as {@link #receive(long)}
- *
- * @version 
  */
 public class ProcessorPollingConsumer extends PollingConsumerSupport implements IsSingleton {
     private final Processor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
index 2caecb6..dfcf898 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
@@ -41,8 +41,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Cache containing created {@link Producer}.
- *
- * @version
  */
 public class ProducerCache extends ServiceSupport {
 
@@ -483,8 +481,7 @@ public class ProducerCache extends ServiceSupport {
      * Using this callback as a template pattern ensures that Camel handles the resource handling and will
      * start and stop the given producer, to avoid resource leaks.
      *
-     * @version
-     */
+         */
     public interface AsyncProducerCallback {
 
         /**
diff --git a/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java
index c6b9b22..045cba4 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/PropertyPlaceholderDelegateRegistry.java
@@ -27,8 +27,6 @@ import org.apache.camel.util.ObjectHelper;
  * A {@link Registry} which delegates to the real registry.
  * <p/>
  * This is used to ensure that Camel performs property placeholder resolution on every lookup.
- *
- * @version 
  */
 public class PropertyPlaceholderDelegateRegistry implements Registry {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
index 8baaa55..9199e62 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/RouteService.java
@@ -56,8 +56,6 @@ import static org.apache.camel.impl.MDCUnitOfWork.MDC_ROUTE_ID;
 /**
  * Represents the runtime objects for a given {@link RouteDefinition} so that it can be stopped independently
  * of other routes
- *
- * @version 
  */
 public class RouteService extends ChildServiceSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java
index e8a3fd3..5bf1c77 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java
@@ -34,8 +34,6 @@ import org.apache.camel.util.IntrospectionSupport;
 
 /**
  * A base class for {@link org.apache.camel.Endpoint} which creates a {@link ScheduledPollConsumer}
- *
- * @version
  */
 public abstract class ScheduledPollEndpoint extends DefaultEndpoint {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
index c675833..8e1cfee 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
@@ -30,8 +30,6 @@ import org.apache.camel.util.ExchangeHelper;
 /**
  * The <a href="http://camel.apache.org/data-format.html">data format</a>
  * using Java Serialization.
- *
- * @version 
  */
 public class SerializationDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat, DataFormatName {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
index 83fc313..3343676 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ServicePool.java
@@ -42,8 +42,6 @@ import sun.misc.Unsafe;
  * (the capacity) services. The pool can contain an unbounded number of keys.
  * <p/>
  * By default the capacity is set to 100.
- *
- * @version 
  */
 public class ServicePool<S extends Service> extends ServiceSupport implements NonManagedService {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
index 8003f84..bc88743 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
@@ -28,8 +28,6 @@ import org.apache.camel.util.ExchangeHelper;
 /**
  * The text based <a href="http://camel.apache.org/data-format.html">data format</a> supporting
  * charset encoding.
- *
- * @version 
  */
 public class StringDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat, DataFormatName {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java b/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java
index d68104e..53f7ddd 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SynchronousDelegateProducer.java
@@ -30,8 +30,6 @@ import org.apache.camel.Producer;
  * This delegate allows the component developers easily to support their
  * existing asynchronous producer to behave synchronously by wrapping their
  * producer in this synchronous delegate.
- *
- * @version 
  */
 public class SynchronousDelegateProducer implements Producer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
index a81c831..6792ce8 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
@@ -46,8 +46,6 @@ import org.slf4j.LoggerFactory;
  * method. If the route scope is selected then <b>no</b> {@link org.apache.camel.spi.EventNotifier} is in use, as there is already
  * a {@link org.apache.camel.spi.Synchronization} callback on the current {@link Exchange} which triggers the
  * {@link #throttle(org.apache.camel.Route, org.apache.camel.Exchange)} when the current {@link Exchange} is done.
- *
- * @version 
  */
 public class ThrottlingInflightRoutePolicy extends RoutePolicySupport implements CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
index 006aacd..6e16e4f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
@@ -62,8 +62,6 @@ import org.slf4j.LoggerFactory;
  * Therefore its recommended to specify FQN class names in the {@link #META_INF_SERVICES} file.
  * Likewise the procedure for scanning using {@link PackageScanClassResolver} may require custom implementations
  * to work in various containers such as JBoss, OSGi, etc.
- *
- * @version
  */
 public class AnnotationTypeConverterLoader implements TypeConverterLoader {
     public static final String META_INF_SERVICES = "META-INF/services/org/apache/camel/TypeConverter";
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java
index 29b795a..9bdb5bb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java
@@ -29,8 +29,6 @@ import org.apache.camel.support.TypeConverterSupport;
  * A type converter which is used to convert to and from array types
  * particularly for derived types of array component types and dealing with
  * primitive array types.
- *
- * @version 
  */
 public class ArrayTypeConverter extends TypeConverterSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
index ad011a2..af88992 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
@@ -26,8 +26,6 @@ import org.apache.camel.util.AsyncProcessorConverterHelper;
  * A simple converter that can convert any {@link Processor} to an {@link AsyncProcessor}.
  * Processing will still occur synchronously but it will provide the required
  * notifications that the caller expects.
- *
- * @version
  */
 public class AsyncProcessorTypeConverter extends TypeConverterSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index 5523604..0972686 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -59,8 +59,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Base implementation of a type converter registry used for
  * <a href="http://camel.apache.org/type-converter.html">type converters</a> in Camel.
- *
- * @version 
  */
 public abstract class BaseTypeConverterRegistry extends ServiceSupport implements TypeConverter, TypeConverterRegistry, CamelContextAware {
     protected final Logger log = LoggerFactory.getLogger(getClass());
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/CachingInjector.java b/camel-core/src/main/java/org/apache/camel/impl/converter/CachingInjector.java
index f60e986..7f987e1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/CachingInjector.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/CachingInjector.java
@@ -20,8 +20,6 @@ import org.apache.camel.spi.TypeConverterRegistry;
 
 /**
  * A caching proxy
- *
- * @version 
  */
 public class CachingInjector<T> {
     private final TypeConverterRegistry repository;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
index 0adbb16..0e23ef1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.PackageScanClassResolver;
  * <a href="http://camel.apache.org/type-converter.html">type converters</a> in Camel.
  * <p/>
  * This implementation will load type converters up-front on startup.
- *
- * @version 
  */
 public class DefaultTypeConverter extends BaseTypeConverterRegistry {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java
index 33f5261..3ed1f5e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/FutureTypeConverter.java
@@ -30,8 +30,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Future type converter.
- *
- * @version 
  */
 @Converter
 public final class FutureTypeConverter extends TypeConverterSupport {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java
index 2d6f002..3500e84 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodFallbackTypeConverter.java
@@ -27,8 +27,6 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * A {@link org.apache.camel.TypeConverter} implementation which instantiates an object
  * so that an instance method can be used as a fallback type converter
- *
- * @version 
  */
 public class InstanceMethodFallbackTypeConverter extends TypeConverterSupport {
     private final CachingInjector<?> injector;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java
index a0b329d..62ebef9 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/InstanceMethodTypeConverter.java
@@ -29,8 +29,6 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * A {@link TypeConverter} implementation which instantiates an object
  * so that an instance method can be used as a type converter
- *
- * @version 
  */
 public class InstanceMethodTypeConverter extends TypeConverterSupport {
     private final CachingInjector<?> injector;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java
index 7d07c49..2d1e8aa 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodFallbackTypeConverter.java
@@ -26,8 +26,6 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * A {@link org.apache.camel.TypeConverter} implementation which invokes a static method
  * as a fallback type converter from a type to another type
- *
- * @version 
  */
 public class StaticMethodFallbackTypeConverter extends TypeConverterSupport {
     private final Method method;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java
index 371add7..3febab2 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/StaticMethodTypeConverter.java
@@ -25,8 +25,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * A {@link TypeConverter} implementation which invokes a static method to convert from a type to another type
- *
- * @version 
  */
 public class StaticMethodTypeConverter extends TypeConverterSupport {
     private final Method method;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/AbstractTracked.java b/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/AbstractTracked.java
index f2b49e5..f58a91f 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/AbstractTracked.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/AbstractTracked.java
@@ -48,7 +48,6 @@ import java.util.Map;
  * implementation of the Tracker class.
  * 
  * @ThreadSafe
- * @version 
  * @since 1.4
  */
 abstract class AbstractTracked {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTracker.java b/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTracker.java
index ed1ce5d..0637e77 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTracker.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTracker.java
@@ -60,7 +60,6 @@ import org.osgi.framework.SynchronousBundleListener;
  * thread-safe.
  * 
  * @ThreadSafe
- * @version 
  * @since 1.4
  */
 public class BundleTracker implements BundleTrackerCustomizer {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTrackerCustomizer.java b/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTrackerCustomizer.java
index 9ea69fe..4221a30 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTrackerCustomizer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/osgi/tracker/BundleTrackerCustomizer.java
@@ -61,7 +61,6 @@ import org.osgi.framework.BundleEvent;
  * thread-safe.
  * 
  * @ThreadSafe
- * @version 
  * @since 1.4
  */
 public interface BundleTrackerCustomizer {
diff --git a/camel-core/src/main/java/org/apache/camel/language/Bean.java b/camel-core/src/main/java/org/apache/camel/language/Bean.java
index cd56fc7..d3e1ffb 100644
--- a/camel-core/src/main/java/org/apache/camel/language/Bean.java
+++ b/camel-core/src/main/java/org/apache/camel/language/Bean.java
@@ -27,8 +27,6 @@ import org.apache.camel.component.bean.BeanAnnotationExpressionFactory;
 /**
  * Used to inject a bean expression into a field, property, method or parameter when using
  * <a href="http://camel.apache.org/bean-integration.html">Bean Integration</a>.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/language/LanguageAnnotation.java b/camel-core/src/main/java/org/apache/camel/language/LanguageAnnotation.java
index cdc7df7..42550d7 100644
--- a/camel-core/src/main/java/org/apache/camel/language/LanguageAnnotation.java
+++ b/camel-core/src/main/java/org/apache/camel/language/LanguageAnnotation.java
@@ -26,8 +26,6 @@ import org.apache.camel.component.bean.DefaultAnnotationExpressionFactory;
 
 /**
  * Base annotation for languages.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/language/LanguageExpression.java b/camel-core/src/main/java/org/apache/camel/language/LanguageExpression.java
index 0f9e6f6..bcc94f6 100644
--- a/camel-core/src/main/java/org/apache/camel/language/LanguageExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/language/LanguageExpression.java
@@ -24,8 +24,6 @@ import java.lang.annotation.Target;
 
 /**
  * Base annotation for language expressions.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/language/NamespacePrefix.java b/camel-core/src/main/java/org/apache/camel/language/NamespacePrefix.java
index 6db9b0a..386ba53 100644
--- a/camel-core/src/main/java/org/apache/camel/language/NamespacePrefix.java
+++ b/camel-core/src/main/java/org/apache/camel/language/NamespacePrefix.java
@@ -24,8 +24,6 @@ import java.lang.annotation.Target;
 
 /**
  * Creates a namespace prefix for an XPath
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/language/Simple.java b/camel-core/src/main/java/org/apache/camel/language/Simple.java
index a1d01f3..88acd88 100644
--- a/camel-core/src/main/java/org/apache/camel/language/Simple.java
+++ b/camel-core/src/main/java/org/apache/camel/language/Simple.java
@@ -25,8 +25,6 @@ import java.lang.annotation.Target;
 /**
  * Used to inject a simple expression into a field, property, method or parameter when using
  * <a href="http://camel.apache.org/bean-integration.html">Bean Integration</a>.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/language/XPath.java b/camel-core/src/main/java/org/apache/camel/language/XPath.java
index edf0da1..ba11f00 100644
--- a/camel-core/src/main/java/org/apache/camel/language/XPath.java
+++ b/camel-core/src/main/java/org/apache/camel/language/XPath.java
@@ -27,8 +27,6 @@ import org.apache.camel.component.bean.XPathAnnotationExpressionFactory;
 /**
  * Used to inject an XPath expression into a field, property, method or parameter when using
  * <a href="http://camel.apache.org/bean-integration.html">Bean Integration</a>.
- *
- * @version 
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
diff --git a/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java b/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
index 58ef2f2..5f81aca 100644
--- a/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
@@ -36,8 +36,6 @@ import org.apache.camel.util.StringHelper;
  * <p/>
  * As of Camel 1.5 the bean language also supports invoking a provided bean by
  * its classname or the bean itself.
- *
- * @version 
  */
 public class BeanLanguage implements Language, IsSingleton {
 
diff --git a/camel-core/src/main/java/org/apache/camel/language/bean/RuntimeBeanExpressionException.java b/camel-core/src/main/java/org/apache/camel/language/bean/RuntimeBeanExpressionException.java
index 2cd6920..5a06525 100644
--- a/camel-core/src/main/java/org/apache/camel/language/bean/RuntimeBeanExpressionException.java
+++ b/camel-core/src/main/java/org/apache/camel/language/bean/RuntimeBeanExpressionException.java
@@ -21,8 +21,6 @@ import org.apache.camel.RuntimeExpressionException;
 
 /**
  * Exception thrown if invocation of bean failed.
- *
- * @version 
  */
 public class RuntimeBeanExpressionException extends RuntimeExpressionException {
     private static final long serialVersionUID = -7184254079414493118L;
diff --git a/camel-core/src/main/java/org/apache/camel/main/Main.java b/camel-core/src/main/java/org/apache/camel/main/Main.java
index 26a910f..0e2e0d1 100644
--- a/camel-core/src/main/java/org/apache/camel/main/Main.java
+++ b/camel-core/src/main/java/org/apache/camel/main/Main.java
@@ -29,8 +29,6 @@ import org.apache.camel.spi.Registry;
 
 /**
  * A command line tool for booting up a CamelContext
- *
- * @version 
  */
 public class Main extends MainSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
index ef14275..097e799 100644
--- a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
@@ -45,8 +45,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Base class for main implementations to allow starting up a JVM with Camel embedded.
- *
- * @version 
  */
 public abstract class MainSupport extends ServiceSupport {
     protected static final Logger LOG = LoggerFactory.getLogger(MainSupport.class);
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 3e2a133..feaa52a 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -113,7 +113,6 @@ import org.apache.camel.util.ObjectHelper;
  * {@link org.apache.camel.spi.ManagementStrategy}.
  *
  * @see org.apache.camel.spi.ManagementStrategy
- * @version 
  */
 @SuppressWarnings("deprecation")
 public class DefaultManagementLifecycleStrategy extends ServiceSupport implements LifecycleStrategy, CamelContextAware {
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
index 444722f..2ae19d4 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
@@ -37,8 +37,6 @@ import org.apache.camel.util.ServiceHelper;
  * An assembler to assemble a {@link javax.management.modelmbean.ModelMBean} which can be used
  * to register the object in JMX. The assembler is capable of using the Camel JMX annotations to
  * gather the list of JMX operations and attributes.
- *
- * @version 
  */
 public class DefaultManagementMBeanAssembler extends ServiceSupport implements ManagementMBeanAssembler {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
index 8d00550..8de5adc 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
@@ -48,7 +48,6 @@ import org.slf4j.LoggerFactory;
  * provided by Camel extends this class as well.
  *
  * @see ManagedManagementStrategy
- * @version 
  */
 public class DefaultManagementStrategy extends ServiceSupport implements ManagementStrategy, CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java b/camel-core/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java
index 0a0dbff..7a8cc12 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DelegatePerformanceCounter.java
@@ -30,8 +30,6 @@ import org.apache.camel.api.management.PerformanceCounter;
  * <p/>
  * This delegation is needed as how Camel is designed to register services in the
  * {@link org.apache.camel.spi.LifecycleStrategy} in various stages.
- *
- * @version 
  */
 public class DelegatePerformanceCounter implements PerformanceCounter {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
index a1712a1..184865e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/InstrumentationInterceptStrategy.java
@@ -34,8 +34,6 @@ import org.apache.camel.util.KeyValueHolder;
  * <p/>
  * This class looks up a map to determine which PerformanceCounter should go into the
  * InstrumentationProcessor for any particular target processor.
- *
- * @version 
  */
 public class InstrumentationInterceptStrategy implements InterceptStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java b/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
index 635cf61..5c5a7a5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
@@ -34,8 +34,6 @@ import org.slf4j.LoggerFactory;
  * <p/>
  * This implementation has been optimised to work in dual mode, either as an advice or as a processor.
  * The former is faster and the latter is required when the error handler has been configured with redelivery enabled.
- *
- * @version 
  */
 public class InstrumentationProcessor extends DelegateAsyncProcessor implements CamelInternalProcessorAdvice<StopWatch>, Ordered {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
index d2a05c4..850be7d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
@@ -30,8 +30,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * A JMX based {@link EventNotifier} which broadcasts JMX {@link Notification}s.
- *
- * @version 
  */
 public class JmxNotificationEventNotifier extends EventNotifierSupport implements JmxNotificationBroadcasterAware {
     private static final Logger LOG = LoggerFactory.getLogger(JmxNotificationEventNotifier.class);
diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java b/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
index 8fc9040..75aba15 100644
--- a/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
+++ b/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
@@ -18,8 +18,6 @@ package org.apache.camel.management;
 
 /**
  * This module contains jmx related system property key constants.
- *
- * @version 
  */
 public final class JmxSystemPropertyKeys {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
index 5c0d336..8b82ec2 100644
--- a/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
@@ -25,8 +25,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Logging event notifier that only notifies if <tt>INFO</tt> log level has
  * been configured for its logger.
- *
- * @version 
  */
 public class LoggingEventNotifier extends EventNotifierSupport {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index 97686df..f6211a5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -51,7 +51,6 @@ import org.slf4j.LoggerFactory;
  *
  * @see org.apache.camel.spi.ManagementStrategy
  * @see org.apache.camel.management.DefaultManagementStrategy
- * @version 
  */
 public class ManagedManagementStrategy extends DefaultManagementStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
index 17d0ed9..79b5ec5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
@@ -35,8 +35,6 @@ import org.apache.camel.util.URISupport;
  * This notifier is only enabled when {@link CamelContext} is started. This avoids problems when
  * sending notifications during start/shutdown of {@link CamelContext} which causes problems by
  * sending those events to Camel routes by this notifier.
- *
- * @version 
  */
 public class PublishEventNotifier extends EventNotifierSupport implements CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
index cd3540e..6daa2ef 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
@@ -22,8 +22,6 @@ import org.apache.camel.CamelContext;
 
 /**
  * Base class for {@link CamelContext} events.
- *
- * @version 
  */
 public abstract class AbstractContextEvent extends EventObject {
     private static final long serialVersionUID = 1L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
index 715e3a7..5573ce7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
@@ -22,8 +22,6 @@ import org.apache.camel.Exchange;
 
 /**
  * Base class for {@link Exchange} events.
- *
- * @version 
  */
 public abstract class AbstractExchangeEvent extends EventObject {
     private static final long serialVersionUID = 1L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
index 8de3be8..be0ce89 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
@@ -23,8 +23,6 @@ import org.apache.camel.Route;
 
 /**
  * Base class for {@link CamelContext} events.
- *
- * @version 
  */
 public abstract class AbstractRouteEvent extends EventObject {
     private static final long serialVersionUID = 1L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
index c2f4df2..a13718f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextResumeFailureEvent extends AbstractContextEvent implements FailureEvent {
     private static final long serialVersionUID = -4271899927507894566L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
index 5baa430..1c0fee6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextResumedEvent extends AbstractContextEvent {
     private static final long serialVersionUID = 6761726800283234512L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
index d788b4a..e7d4375 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextResumingEvent extends AbstractContextEvent {
     private static final long serialVersionUID = 6761726800283234511L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
index 2086be5..5ee2aeb 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextStartedEvent extends AbstractContextEvent {
     private static final long serialVersionUID = 6761726800283073490L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
index de5b9a7..769d5e8 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextStartingEvent extends AbstractContextEvent {
     private static final long serialVersionUID = -1120225323715688981L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
index 11f31a2..243913f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextStartupFailureEvent extends AbstractContextEvent implements FailureEvent {
     private static final long serialVersionUID = -4271899927507894567L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
index 9dc4365..cee25d0 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextStopFailureEvent extends AbstractContextEvent implements FailureEvent {
     private static final long serialVersionUID = -802046840118188292L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
index 86e64e3..d2862b6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextStoppedEvent extends AbstractContextEvent {
     private static final long serialVersionUID = -8406258841784891998L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
index 59b63db..10723ff 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextStoppingEvent extends AbstractContextEvent {
     private static final long serialVersionUID = -1074581102102126334L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
index 8c54d71..98219d5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextSuspendedEvent extends AbstractContextEvent {
     private static final long serialVersionUID = 6761726800283072242L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
index 4c8cce1..c10c42b 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class CamelContextSuspendingEvent extends AbstractContextEvent {
     private static final long serialVersionUID = 6761726800283072241L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java b/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
index 4bf7f7f..696437b 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.EventFactory;
 
 /**
  * Default implementation of the {@link org.apache.camel.spi.EventFactory}.
- *
- * @version 
  */
 public class DefaultEventFactory implements EventFactory {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
index 43a0cb7..f73aab1 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
 
-/**
- * @version 
- */
 public class ExchangeCompletedEvent extends AbstractExchangeEvent {
     private static final long serialVersionUID = -3231801412021356098L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
index d60c314..761354f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
@@ -24,8 +24,6 @@ import org.apache.camel.Exchange;
  * <b>Notice:</b> This event may be emitted after an {@link ExchangeSendingEvent}, and
  * therefore its not guaranteed this event is the first event being send for a given {@link Exchange}
  * lifecycle.
- *
- * @version 
  */
 public class ExchangeCreatedEvent extends AbstractExchangeEvent {
     private static final long serialVersionUID = -19248832613958243L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
index f6cf273..1a4bd3a 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
 
-/**
- * @version 
- */
 public class ExchangeFailedEvent extends AbstractExchangeEvent implements FailureEvent {
     private static final long serialVersionUID = -8484326904627268101L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
index 862fb3a..b4ad79e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
@@ -20,9 +20,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 public class ExchangeFailureHandledEvent extends AbstractExchangeEvent {
     private static final long serialVersionUID = -7554809462006009548L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
index 614b308..99e5093 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
@@ -20,9 +20,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 public class ExchangeFailureHandlingEvent extends AbstractExchangeEvent {
     private static final long serialVersionUID = -7554809462006009549L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
index 727a55f..c5af078 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
 
-/**
- * @version 
- */
 public class ExchangeRedeliveryEvent extends AbstractExchangeEvent {
     private static final long serialVersionUID = -19248832613958122L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
index 10a9004..9a502b5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
@@ -36,7 +36,6 @@ import org.apache.camel.Exchange;
  * method to receive events for either of them.
  *
  * @see ExchangeSentEvent
- * @version 
  */
 public class ExchangeSendingEvent extends AbstractExchangeEvent {
     private static final long serialVersionUID = -19248832613958122L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
index e6dc10d..aba3f7a 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
@@ -30,7 +30,6 @@ import org.apache.camel.Exchange;
  * method to receive events for either of them.
  *
  * @see ExchangeSendingEvent
- * @version
  */
 public class ExchangeSentEvent extends AbstractExchangeEvent {
     private static final long serialVersionUID = -19248832613958123L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java
index 70ff950..6c9a6f7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java
@@ -20,7 +20,6 @@ package org.apache.camel.management.event;
  * This interface is implemented by all events that contain an exception and is used to
  * retrieve the exception in a universal way.
  *  
- * @version
  */
 public interface FailureEvent {
     Throwable getCause();
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
index 52f67e9..095eb30 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
 
-/**
- * @version 
- */
 public class RouteAddedEvent extends AbstractRouteEvent {
 
     private static final long serialVersionUID = 9155960708789798708L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
index f4f5c66..f579be4 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
 
-/**
- * @version 
- */
 public class RouteRemovedEvent extends AbstractRouteEvent {
 
     private static final long serialVersionUID = 7966471393751298719L;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
index bafa273..b26a9d3 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
 
-/**
- * @version 
- */
 public class RouteStartedEvent extends AbstractRouteEvent {
     private static final long serialVersionUID = 1330257282431407329L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
index 4b1bc96..ba0d0a6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
@@ -18,9 +18,6 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
 
-/**
- * @version 
- */
 public class RouteStoppedEvent extends AbstractRouteEvent {
     private static final long serialVersionUID = -4466503512787398888L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
index 3a47fc5..94c2a88 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
@@ -20,9 +20,6 @@ import java.util.EventObject;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class ServiceStartupFailureEvent extends EventObject implements FailureEvent {
     private static final long serialVersionUID = -9171964933795931862L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
index b37d4ea..98bf097 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
@@ -20,9 +20,6 @@ import java.util.EventObject;
 
 import org.apache.camel.CamelContext;
 
-/**
- * @version 
- */
 public class ServiceStopFailureEvent extends EventObject implements FailureEvent {
     private static final long serialVersionUID = 4139591666998762617L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
index 4c96df1..052fe49 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java
@@ -25,9 +25,6 @@ import org.apache.camel.model.AggregateDefinition;
 import org.apache.camel.processor.aggregate.AggregateProcessor;
 import org.apache.camel.spi.ManagementStrategy;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed AggregateProcessor")
 public class ManagedAggregateProcessor extends ManagedProcessor implements ManagedAggregateProcessorMBean {
     private final AggregateProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
index 7defbe7..6482d64 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
@@ -25,9 +25,6 @@ import org.apache.camel.api.management.mbean.ManagedBacklogTracerMBean;
 import org.apache.camel.processor.interceptor.BacklogTracer;
 import org.apache.camel.spi.ManagementStrategy;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed BacklogTracer")
 public class ManagedBacklogTracer implements ManagedBacklogTracerMBean {
     private final CamelContext camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
index 5133b16..d1e55e0 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBeanProcessor.java
@@ -24,9 +24,6 @@ import org.apache.camel.component.bean.BeanProcessor;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Bean Processor")
 public class ManagedBeanProcessor extends ManagedProcessor implements ManagedBeanMBean {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
index a1e0c59..5b236e6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
@@ -25,9 +25,6 @@ import org.apache.camel.api.management.mbean.ManagedBrowsableEndpointMBean;
 import org.apache.camel.spi.BrowsableEndpoint;
 import org.apache.camel.util.MessageHelper;
 
-/**
- * @version
- */
 @ManagedResource(description = "Managed BrowsableEndpoint")
 public class ManagedBrowsableEndpoint extends ManagedEndpoint implements ManagedBrowsableEndpointMBean {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
index 70cf3eb..6a6af16 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
@@ -64,9 +64,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 
-/**
- * @version
- */
 @ManagedResource(description = "Managed CamelContext")
 public class ManagedCamelContext extends ManagedPerformanceCounter implements TimerListener, ManagedCamelContextMBean {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
index 2eb247e..f56e34f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedChoice.java
@@ -35,9 +35,6 @@ import org.apache.camel.processor.ChoiceProcessor;
 import org.apache.camel.processor.FilterProcessor;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Choice")
 public class ManagedChoice extends ManagedProcessor implements ManagedChoiceMBean {
     private final ChoiceProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
index 9857260..7d1a459 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedClaimCheck.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedClaimCheckMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.ClaimCheckProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Claim Check")
 public class ManagedClaimCheck extends ManagedProcessor implements ManagedClaimCheckMBean {
     private final ClaimCheckProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
index a13ac0e..6d72c71 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
@@ -42,9 +42,6 @@ import org.apache.camel.util.CastUtils;
 import org.apache.camel.util.JsonSchemaHelper;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Component")
 public class ManagedComponent implements ManagedInstance, ManagedComponentMBean {
     private final Component component;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
index bcc9967..7b65093 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java
@@ -21,9 +21,6 @@ import org.apache.camel.Consumer;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedConsumerMBean;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Consumer")
 public class ManagedConsumer extends ManagedService implements ManagedConsumerMBean {
     private final Consumer consumer;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
index c8fc158..8ccf129 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConsumerCache.java
@@ -21,9 +21,6 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedConsumerCacheMBean;
 import org.apache.camel.impl.ConsumerCache;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ConsumerCache")
 public class ManagedConsumerCache extends ManagedService implements ManagedConsumerCacheMBean {
     private final ConsumerCache consumerCache;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
index 01aae9f..57424d3 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedConvertBody.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedConvertBodyMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.ConvertBodyProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ConvertBody")
 public class ManagedConvertBody extends ManagedProcessor implements ManagedConvertBodyMBean {
     private final ConvertBodyProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
index 3fa414d..f85380c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCustomLoadBalancer.java
@@ -24,9 +24,6 @@ import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Custom LoadBalancer")
 public class ManagedCustomLoadBalancer extends ManagedProcessor implements ManagedCustomLoadBalancerMBean {
     private final LoadBalancer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
index ef83388..d8a0c44 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDelayer.java
@@ -24,9 +24,6 @@ import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.Delayer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Delayer")
 public class ManagedDelayer extends ManagedProcessor implements ManagedDelayerMBean {
     private final Delayer delayer;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
index a1f5f38..8663158 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
@@ -35,9 +35,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed DynamicRouter")
 public class ManagedDynamicRouter extends ManagedProcessor implements ManagedDynamicRouterMBean {
     private final DynamicRouter processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
index 32f211d..bee9b87 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
@@ -34,9 +34,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed EndpointRegistry")
 public class ManagedEndpointRegistry extends ManagedService implements ManagedEndpointRegistryMBean {
     private final EndpointRegistry endpointRegistry;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
index b3c3107..f1ad3d0 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEnricher.java
@@ -35,9 +35,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Enricher")
 public class ManagedEnricher extends ManagedProcessor implements ManagedEnricherMBean {
     private final Enricher processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
index 314891f..4f4e318 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
@@ -26,9 +26,6 @@ import org.apache.camel.processor.RedeliveryErrorHandler;
 import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ErrorHandler")
 public class ManagedErrorHandler implements ManagedErrorHandlerMBean {
     private final RouteContext routeContext;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
index 07d02c0..fd52ecb 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
@@ -27,9 +27,6 @@ import org.apache.camel.api.management.JmxNotificationBroadcasterAware;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementStrategy;
 
-/**
- * @version 
- */
 public class ManagedEventNotifier extends NotificationBroadcasterSupport implements ManagedEventNotifierMBean {
     private final CamelContext context;
     private final EventNotifier eventNotifier;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
index 7fdea32..81d9b30 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFailoverLoadBalancer.java
@@ -36,9 +36,6 @@ import org.apache.camel.processor.loadbalancer.FailOverLoadBalancer;
 import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Failover LoadBalancer")
 public class ManagedFailoverLoadBalancer extends ManagedProcessor implements ManagedFailoverLoadBalancerMBean {
     private final FailOverLoadBalancer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
index 4b01d79..7568898 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedFilterMBean;
 import org.apache.camel.model.ExpressionNode;
 import org.apache.camel.processor.FilterProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Filter")
 public class ManagedFilter extends ManagedProcessor implements ManagedFilterMBean {
     private final FilterProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLog.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
index 242e9d0..8f3fbca 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLog.java
@@ -24,9 +24,6 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.LogProcessor;
 import org.slf4j.Marker;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Log")
 public class ManagedLog extends ManagedProcessor implements ManagedLogMBean {
     private final LogProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
index 73ee7dd..9b1cfc7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedLoopMBean;
 import org.apache.camel.model.LoopDefinition;
 import org.apache.camel.processor.LoopProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Loop")
 public class ManagedLoop extends ManagedProcessor implements ManagedLoopMBean {
     private final LoopProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
index 29b69dc..f9fde8e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMarshal.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedMarshalMBean;
 import org.apache.camel.model.MarshalDefinition;
 import org.apache.camel.processor.MarshalProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Marshal")
 public class ManagedMarshal extends ManagedProcessor implements ManagedMarshalMBean {
     private final MarshalProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
index ea72a46..2c736eb 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedMulticastMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.MulticastProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Multicast")
 public class ManagedMulticast extends ManagedProcessor implements ManagedMulticastMBean {
     private final MulticastProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
index d166d25..1d18878 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPollEnricher.java
@@ -35,9 +35,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed PollEnricher")
 public class ManagedPollEnricher extends ManagedProcessor implements ManagedPollEnricherMBean {
     private final PollEnricher processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
index 34720fa..823de9e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcess.java
@@ -24,9 +24,6 @@ import org.apache.camel.api.management.mbean.ManagedProcessMBean;
 import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Process")
 public class ManagedProcess extends ManagedProcessor implements ManagedProcessMBean {
     private final Processor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
index 23373a3..e562d4f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
@@ -41,9 +41,6 @@ import org.apache.camel.util.JsonSchemaHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ServiceHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Processor")
 public class ManagedProcessor extends ManagedPerformanceCounter implements ManagedInstance, ManagedProcessorMBean {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
index da77e2c..81bd85c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java
@@ -21,9 +21,6 @@ import org.apache.camel.Producer;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedProducerMBean;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Producer")
 public class ManagedProducer extends ManagedService implements ManagedProducerMBean {
     private final Producer producer;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
index ef07077..e72dc3c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducerCache.java
@@ -21,9 +21,6 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedProducerCacheMBean;
 import org.apache.camel.impl.ProducerCache;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ProducerCache")
 public class ManagedProducerCache extends ManagedService implements ManagedProducerCacheMBean {
     private final ProducerCache producerCache;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
index 17f3c66..1bfed77 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRandomLoadBalancer.java
@@ -23,9 +23,6 @@ import org.apache.camel.model.LoadBalanceDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.loadbalancer.RandomLoadBalancer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Random LoadBalancer")
 public class ManagedRandomLoadBalancer extends ManagedProcessor implements ManagedRandomLoadBalancerMBean {
     private final RandomLoadBalancer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
index 72c1a20..428852d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
@@ -35,9 +35,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RecipientList")
 public class ManagedRecipientList extends ManagedProcessor implements ManagedRecipientListMBean {
     private final RecipientList processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
index 069255e..35e000b 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeader.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedRemoveHeaderMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.RemoveHeaderProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RemoveHeader")
 public class ManagedRemoveHeader extends ManagedProcessor implements ManagedRemoveHeaderMBean {
     private final RemoveHeaderProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
index ae5d333..2fea3fd 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveHeaders.java
@@ -24,9 +24,6 @@ import org.apache.camel.api.management.mbean.ManagedRemoveHeadersMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.RemoveHeadersProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RemoveHeaders")
 public class ManagedRemoveHeaders extends ManagedProcessor implements ManagedRemoveHeadersMBean {
     private final RemoveHeadersProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
index f843b77..6b9652f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperties.java
@@ -24,9 +24,6 @@ import org.apache.camel.api.management.mbean.ManagedRemovePropertiesMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.RemovePropertiesProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RemoveProperties")
 public class ManagedRemoveProperties extends ManagedProcessor implements ManagedRemovePropertiesMBean {
     private final RemovePropertiesProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
index 61eaa790..31faf3e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRemoveProperty.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedRemovePropertyMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.RemovePropertyProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RemoveProperty")
 public class ManagedRemoveProperty extends ManagedProcessor implements ManagedRemovePropertyMBean {
     private final RemovePropertyProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
index a3429cc..d7ad120 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedResequencer.java
@@ -23,9 +23,6 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.Resequencer;
 import org.apache.camel.processor.StreamResequencer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Resequencer")
 public class ManagedResequencer extends ManagedProcessor implements ManagedResequencerMBean {
     private final Resequencer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
index 6342590..9e6e1a6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRollback.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedRollbackMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.RollbackProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Rollback")
 public class ManagedRollback extends ManagedProcessor implements ManagedRollbackMBean {
     private final RollbackProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
index 369c782..80dbf0d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoundRobinLoadBalancer.java
@@ -23,9 +23,6 @@ import org.apache.camel.model.LoadBalanceDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RoundRobin LoadBalancer")
 public class ManagedRoundRobinLoadBalancer extends ManagedProcessor implements ManagedRoundRobinLoadBalancerMBean {
     private final RoundRobinLoadBalancer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
index 23f0e83..9121670 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
@@ -35,9 +35,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RoutingSlip")
 public class ManagedRoutingSlip extends ManagedProcessor implements ManagedRoutingSlipMBean {
     private final RoutingSlip processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
index 6a99656..5587a9e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRuntimeCamelCatalog.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedRuntimeCamelCatalogMBean;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.ManagementStrategy;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed RuntimeCamelCatalog")
 public class ManagedRuntimeCamelCatalog extends ManagedService implements ManagedRuntimeCamelCatalogMBean {
     private final CamelContext camelContext;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
index 5e5cac8..9638b5d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSamplingThrottler.java
@@ -24,9 +24,6 @@ import org.apache.camel.api.management.mbean.ManagedSamplingThrottlerMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.SamplingThrottler;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed SamplingThrottler")
 public class ManagedSamplingThrottler extends ManagedProcessor implements ManagedSamplingThrottlerMBean {
     private final SamplingThrottler processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
index 64694fd..80e03a0 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
@@ -23,9 +23,6 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedSchedulePollConsumerMBean;
 import org.apache.camel.impl.ScheduledPollConsumer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Scheduled Polling Consumer")
 public class ManagedScheduledPollConsumer extends ManagedConsumer implements ManagedSchedulePollConsumerMBean {
     private final ScheduledPollConsumer consumer;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScript.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
index 51ea141..a36dc06 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScript.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedScriptMBean;
 import org.apache.camel.model.ScriptDefinition;
 import org.apache.camel.processor.ScriptProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Script")
 public class ManagedScript extends ManagedProcessor implements ManagedScriptMBean {
     private final ScriptProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
index 70e34a7..e756ae3 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendDynamicProcessor.java
@@ -35,9 +35,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed SendDynamicProcessor")
 public class ManagedSendDynamicProcessor extends ManagedProcessor implements ManagedSendDynamicProcessorMBean {
     private final SendDynamicProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
index d58f9ee..5fcf508 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
@@ -32,9 +32,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed SendProcessor")
 public class ManagedSendProcessor extends ManagedProcessor implements ManagedSendProcessorMBean {
     private final SendProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
index 0a2c5c9..95b5544 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetBody.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedSetBodyMBean;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.processor.SetBodyProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed SetBody")
 public class ManagedSetBody extends ManagedProcessor implements ManagedSetBodyMBean {
     private final SetBodyProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
index 204c901..2fd9520 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetExchangePattern.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedSetExchangePatternMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.ExchangePatternProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed SetExchangePattern")
 public class ManagedSetExchangePattern extends ManagedProcessor implements ManagedSetExchangePatternMBean {
     private final ExchangePatternProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
index ac65967..807f43a 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetHeader.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedSetHeaderMBean;
 import org.apache.camel.model.SetHeaderDefinition;
 import org.apache.camel.processor.SetHeaderProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed SetHeader")
 public class ManagedSetHeader extends ManagedProcessor implements ManagedSetHeaderMBean {
     private final SetHeaderProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
index 2b5e6cf..ed95553 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSetProperty.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedSetPropertyMBean;
 import org.apache.camel.model.SetPropertyDefinition;
 import org.apache.camel.processor.SetPropertyProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed SetProperty")
 public class ManagedSetProperty extends ManagedProcessor implements ManagedSetPropertyMBean {
     private final SetPropertyProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
index 857b99e..6f8e1dc 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSplitter.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedSplitterMBean;
 import org.apache.camel.model.SplitDefinition;
 import org.apache.camel.processor.Splitter;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Splitter")
 public class ManagedSplitter extends ManagedMulticast implements ManagedSplitterMBean {
     private final Splitter processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
index a073165..6a8cd99 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStickyLoadBalancer.java
@@ -24,9 +24,6 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.StickyLoadBalancer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Sticky LoadBalancer")
 public class ManagedStickyLoadBalancer extends ManagedProcessor implements ManagedStickyLoadBalancerMBean {
     private final StickyLoadBalancer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStop.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
index 8eff563..fe3a1e9 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStop.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedStopMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.StopProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Stop")
 public class ManagedStop extends ManagedProcessor implements ManagedStopMBean {
     private final StopProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
index 817a153..4332ee1 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreadPool.java
@@ -24,9 +24,6 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedThreadPoolMBean;
 import org.apache.camel.spi.ManagementStrategy;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ThreadPool")
 public class ManagedThreadPool implements ManagedThreadPoolMBean {
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
index fe78b10..07e3ee0 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java
@@ -26,9 +26,6 @@ import org.apache.camel.api.management.mbean.ManagedThreadsMBean;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.ThreadsProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Threads")
 public class ManagedThreads extends ManagedProcessor implements ManagedThreadsMBean {
     private final ThreadsProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
index 6c5e977..65a85e9 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottler.java
@@ -24,9 +24,6 @@ import org.apache.camel.processor.Throttler;
 
 import static org.apache.camel.builder.Builder.constant;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Throttler")
 public class ManagedThrottler extends ManagedProcessor implements ManagedThrottlerMBean {
     private final Throttler throttler;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
index ab02d26..f8c1c74 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrottlingInflightRoutePolicy.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedThrottlingInflightRoutePolicyMBean;
 import org.apache.camel.impl.ThrottlingInflightRoutePolicy;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ThrottlingInflightRoutePolicy")
 public class ManagedThrottlingInflightRoutePolicy extends ManagedService implements ManagedThrottlingInflightRoutePolicyMBean {
     private final ThrottlingInflightRoutePolicy policy;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
index ee23988..035cfe6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThrowException.java
@@ -23,9 +23,6 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.ThrowExceptionProcessor;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ThrowException")
 public class ManagedThrowException extends ManagedProcessor implements ManagedThrowExceptionMBean {
     private final ThrowExceptionProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
index ce5cc64..51fd5fc 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTopicLoadBalancer.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedTopicLoadBalancerMBean;
 import org.apache.camel.model.LoadBalanceDefinition;
 import org.apache.camel.processor.loadbalancer.TopicLoadBalancer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Topic LoadBalancer")
 public class ManagedTopicLoadBalancer extends ManagedProcessor implements ManagedTopicLoadBalancerMBean {
     private final TopicLoadBalancer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
index 970aaa7..85ffa70 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformer.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedTransformMBean;
 import org.apache.camel.model.TransformDefinition;
 import org.apache.camel.processor.TransformProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Transformer")
 public class ManagedTransformer extends ManagedProcessor implements ManagedTransformMBean {
     private final TransformProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
index f916a10..7477604 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
@@ -34,9 +34,6 @@ import org.apache.camel.spi.Transformer;
 import org.apache.camel.spi.TransformerRegistry;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed TransformerRegistry")
 public class ManagedTransformerRegistry extends ManagedService implements ManagedTransformerRegistryMBean {
     private final TransformerRegistry transformerRegistry;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
index aacb19f..132326b 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedUnmarshal.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedUnmarshalMBean;
 import org.apache.camel.model.UnmarshalDefinition;
 import org.apache.camel.processor.UnmarshalProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Unmarshal")
 public class ManagedUnmarshal extends ManagedProcessor implements ManagedUnmarshalMBean {
     private final UnmarshalProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
index bead620..d101128 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidate.java
@@ -22,9 +22,6 @@ import org.apache.camel.api.management.mbean.ManagedValidateMBean;
 import org.apache.camel.model.ValidateDefinition;
 import org.apache.camel.processor.validation.PredicateValidatingProcessor;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Validate")
 public class ManagedValidate extends ManagedProcessor implements ManagedValidateMBean {
     private final PredicateValidatingProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
index e2d6317..398db4f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedValidatorRegistry.java
@@ -34,9 +34,6 @@ import org.apache.camel.spi.Validator;
 import org.apache.camel.spi.ValidatorRegistry;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed ValidatorRegistry")
 public class ManagedValidatorRegistry extends ManagedService implements ManagedValidatorRegistryMBean {
     private final ValidatorRegistry validatorRegistry;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
index ca0bb69..5647da8 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWeightedLoadBalancer.java
@@ -24,9 +24,6 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.WeightedLoadBalancer;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed Weighted LoadBalancer")
 public class ManagedWeightedLoadBalancer extends ManagedProcessor implements ManagedWeightedBalancerMBean {
     private final WeightedLoadBalancer processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
index 438eb03..3f9ff2a 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedWireTapProcessor.java
@@ -35,9 +35,6 @@ import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 
-/**
- * @version 
- */
 @ManagedResource(description = "Managed WireTapProcessor")
 public class ManagedWireTapProcessor extends ManagedProcessor implements ManagedWireTapMBean {
     private final WireTapProcessor processor;
diff --git a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
index 4e5e191..3bad006 100644
--- a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
@@ -52,8 +52,6 @@ import org.apache.camel.util.concurrent.SynchronousExecutorService;
 
 /**
  * Aggregates many messages into a single message
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "aggregate")
diff --git a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java b/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
index 62b78f4..ea5d43e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
@@ -38,8 +38,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Calls a java bean
- *
- * @version 
  */
 @Metadata(label = "eip,endpoint")
 @XmlRootElement(name = "bean")
diff --git a/camel-core/src/main/java/org/apache/camel/model/Block.java b/camel-core/src/main/java/org/apache/camel/model/Block.java
index f5a7797..e82cad6 100644
--- a/camel-core/src/main/java/org/apache/camel/model/Block.java
+++ b/camel-core/src/main/java/org/apache/camel/model/Block.java
@@ -18,8 +18,6 @@ package org.apache.camel.model;
 
 /**
  * Interface to add block featuring to the XML element type.
- *
- * @version 
  */
 public interface Block {
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java b/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
index c5b3a5d..41e9780 100644
--- a/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
@@ -36,8 +36,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Catches exceptions as part of a try, catch, finally block
- *
- * @version 
  */
 @Metadata(label = "error")
 @XmlRootElement(name = "doCatch")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
index 7756df8..7df7d3c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
@@ -40,8 +40,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Routes messages based on a series of predicates
- *
- * @version
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "choice")
diff --git a/camel-core/src/main/java/org/apache/camel/model/Constants.java b/camel-core/src/main/java/org/apache/camel/model/Constants.java
index f86c2d9..2a29a9d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/Constants.java
+++ b/camel-core/src/main/java/org/apache/camel/model/Constants.java
@@ -18,8 +18,6 @@ package org.apache.camel.model;
 
 /**
  * Various constants.
- *
- * @version 
  */
 public final class Constants {
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java b/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
index 53cc7d5..64ec97e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
@@ -35,8 +35,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Delays processing for a specified length of time
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "delay")
diff --git a/camel-core/src/main/java/org/apache/camel/model/DescriptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/DescriptionDefinition.java
index 65f99de..6bf0ee0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/DescriptionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/DescriptionDefinition.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To provide comments about the node.
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "description")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ExecutorServiceAwareDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ExecutorServiceAwareDefinition.java
index 9a25505..3425048 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ExecutorServiceAwareDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ExecutorServiceAwareDefinition.java
@@ -22,8 +22,6 @@ import org.apache.camel.ExecutorServiceAware;
 
 /**
  * Enables definitions to support concurrency using {@link java.util.concurrent.ExecutorService}
- *
- * @version 
  */
 public interface ExecutorServiceAwareDefinition<Type extends ProcessorDefinition<?>> extends ExecutorServiceAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java b/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
index 51237a5..bf46b3c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
@@ -34,8 +34,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * A base class for nodes which contain an expression and a number of outputs
- *
- * @version
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlTransient
diff --git a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
index 2853b2e..f1c1e3b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
@@ -30,8 +30,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Filter out messages based using a predicate
- *
- * @version 
  */
 @Metadata(label = "eip,routing") @AsPredicate
 @XmlRootElement(name = "filter")
diff --git a/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
index 4e63409..8e7a943 100644
--- a/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Path traversed when a try, catch, finally block exits
- *
- * @version 
  */
 @Metadata(label = "error")
 @XmlRootElement(name = "doFinally")
diff --git a/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java b/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java
index 656e9c1..2d35887 100644
--- a/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Act as a message source as input to a route
- *
- * @version 
  */
 @Metadata(label = "eip,endpoint,routing")
 @XmlRootElement(name = "from")
diff --git a/camel-core/src/main/java/org/apache/camel/model/IdentifiedType.java b/camel-core/src/main/java/org/apache/camel/model/IdentifiedType.java
index c3da7ea..1552834 100644
--- a/camel-core/src/main/java/org/apache/camel/model/IdentifiedType.java
+++ b/camel-core/src/main/java/org/apache/camel/model/IdentifiedType.java
@@ -35,8 +35,6 @@ import javax.xml.bind.annotation.XmlType;
  *   &lt;/complexContent>
  * &lt;/complexType>
  * </pre>
- *
- * @version 
  */
 @XmlType(name = "identifiedType")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/camel-core/src/main/java/org/apache/camel/model/InOnlyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InOnlyDefinition.java
index 93fdd1c..ae8e682 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InOnlyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InOnlyDefinition.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * Marks the exchange pattern for the route to one way
- *
- * @version 
  */
 @Metadata(label = "eip,endpoint,routing")
 @XmlRootElement(name = "inOnly")
diff --git a/camel-core/src/main/java/org/apache/camel/model/InOutDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InOutDefinition.java
index f3c17b3..efbc742 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InOutDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InOutDefinition.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * Marks the exchange pattern for the route to request/reply
- *
- * @version 
  */
 @Metadata(label = "eip,endpoint,routing")
 @XmlRootElement(name = "inOut")
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
index 4f1b786..a6ebd76 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
@@ -36,8 +36,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Intercepts a message at each step in the route
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "intercept")
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
index 6921128..ffcf3ef 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
@@ -29,8 +29,6 @@ import org.apache.camel.support.ExpressionAdapter;
 
 /**
  * Intercepts incoming messages
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "interceptFrom")
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
index efe90cb..c34ce25 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
@@ -38,8 +38,6 @@ import org.apache.camel.util.URISupport;
 
 /**
  * Intercepts messages being sent to an endpoint
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "interceptSendToEndpoint")
diff --git a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
index d41a83e..72b2ddb 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
@@ -42,8 +42,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Logs the defined message to the logger
- *
- * @version 
  */
 @Metadata(label = "eip,configuration")
 @XmlRootElement(name = "log")
diff --git a/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
index 66aa427..68100f9 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
@@ -31,8 +31,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Processes a message multiple times
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "loop")
diff --git a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
index fa516e4..569cd66 100644
--- a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
@@ -69,8 +69,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Marshals data into a specified format for transmission over a transport or component
- *
- * @version
  */
 @Metadata(label = "eip,transformation")
 @XmlRootElement(name = "marshal")
diff --git a/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java b/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
index 2dfb28f..ebe0083 100644
--- a/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
@@ -41,8 +41,6 @@ import org.apache.camel.util.CamelContextHelper;
 
 /**
  *  Routes the same message to multiple paths either sequentially or in parallel.
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "multicast")
diff --git a/camel-core/src/main/java/org/apache/camel/model/NoOutputExpressionNode.java b/camel-core/src/main/java/org/apache/camel/model/NoOutputExpressionNode.java
index cb90886..d9dbed4 100644
--- a/camel-core/src/main/java/org/apache/camel/model/NoOutputExpressionNode.java
+++ b/camel-core/src/main/java/org/apache/camel/model/NoOutputExpressionNode.java
@@ -31,8 +31,6 @@ import org.apache.camel.model.language.ExpressionDefinition;
  * <p/>
  * This node is to be extended by definitions which need to support an expression but the definition should not
  * contain any outputs, such as {@link org.apache.camel.model.TransformDefinition}.
- *
- * @version 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 public abstract class NoOutputExpressionNode extends ExpressionNode {
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
index 906765d..6ce0781 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
@@ -42,8 +42,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Route to be executed when normal route processing completes
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "onCompletion")
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
index 21939e1..537118f 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
@@ -51,8 +51,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Route to be executed when an exception is thrown
- *
- * @version 
  */
 @Metadata(label = "error")
 @XmlRootElement(name = "onException")
diff --git a/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java
index 7815125..15b2733 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To configure optimistic locking
- *
- * @version
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "optimisticLockRetryPolicy")
diff --git a/camel-core/src/main/java/org/apache/camel/model/OptionalIdentifiedDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OptionalIdentifiedDefinition.java
index be3b065..9845546 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OptionalIdentifiedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OptionalIdentifiedDefinition.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.NodeIdFactory;
 
 /**
  * Allows an element to have an optional ID specified
- *
- * @version 
  */
 @XmlType(name = "optionalIdentifiedDefinition")
 @XmlAccessorType(XmlAccessType.PROPERTY)
diff --git a/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java
index 7b7d208..3866242 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java
@@ -29,8 +29,6 @@ import org.apache.camel.util.CollectionStringBuffer;
 
 /**
  * Route to be executed when all other choices evaluate to <tt>false</tt>
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "otherwise")
diff --git a/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java
index 9dec267..3441e39 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * A useful base class for output types
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlType(name = "output")
diff --git a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
index 9a6e738..b0a102a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Routes the message to a sequence of processors.
- *
- * @version
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "pipeline")
diff --git a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
index 925b78e..df5a63a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
@@ -33,8 +33,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Defines a policy the route will use
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "policy")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
index 84e34ec..31c6da3 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
@@ -33,8 +33,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Calls a Camel processor
- *
- * @version 
  */
 @Metadata(label = "eip,endpoint")
 @XmlRootElement(name = "process")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index a102dbd..2d6e282 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -80,8 +80,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Base class for processor types that most XML types extend.
- *
- * @version 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>> extends OptionalIdentifiedDefinition<Type> implements Block, OtherAttributesAware {
diff --git a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
index 1ebbe91..99326b1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
@@ -44,8 +44,6 @@ import org.apache.camel.util.CamelContextHelper;
 
 /**
  * Routes messages to a number of dynamically specified recipients (dynamic to)
- *
- * @version 
  */
 @Metadata(label = "eip,endpoint,routing")
 @XmlRootElement(name = "recipientList")
diff --git a/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
index 11a2966..c54b327 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
@@ -30,8 +30,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * To configure re-delivery for error handling
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "redeliveryPolicy")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
index 5c5cf48..7bb5448 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
@@ -44,8 +44,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Resequences (re-order) messages based on an expression
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "resequence")
diff --git a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java
index 6c98516..243e196 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To refer to an XML file with rest services defined using the rest-dsl
- *
- * @version 
  */
 @Metadata(label = "configuration,rest")
 @XmlRootElement(name = "restContextRef")
diff --git a/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
index 13d06e5..e96db8a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Rethrow an exception inside a catch block
- *
- * @version 
  */
 @Metadata(label = "error")
 @XmlRootElement(name = "rethrow")
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java
index 0b3e581..5df42fc 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java
@@ -30,8 +30,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * To refer to a Java {@link org.apache.camel.builder.RouteBuilder} instance to use.
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "routeBuilder")
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteContainer.java b/camel-core/src/main/java/org/apache/camel/model/RouteContainer.java
index 6eeef8d..ad255b9 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteContainer.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteContainer.java
@@ -22,8 +22,6 @@ import javax.xml.bind.annotation.XmlElementRef;
 
 /**
  * Container to hold {@link org.apache.camel.model.RouteDefinition Route}.
- *
- * @version 
  */
 public interface RouteContainer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java
index 348d09b..9875b8a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To refer to an XML file with routes defined using the xml-dsl
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "routeContextRef")
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index 76b69df..e808835 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -62,8 +62,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * A Camel route
- *
- * @version
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "route")
diff --git a/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
index d26f0e6..555e458 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
@@ -32,8 +32,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * A series of Camel routes
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "routes")
diff --git a/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java
index 754d782..66dac06 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java
@@ -47,8 +47,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Enables sagas on the route
- *
- * @version
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "saga")
diff --git a/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java
index b27fb93..1fc64f7 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java
@@ -33,8 +33,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Extract a sample of the messages passing through a route
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "sample")
diff --git a/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
index 575e011..fdb4db5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
@@ -31,8 +31,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Sends the message to an endpoint
- *
- * @version 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 public abstract class SendDefinition<Type extends ProcessorDefinition<Type>> extends NoOutputDefinition<Type> implements EndpointRequiredDefinition {
diff --git a/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java
index 7493481..69357d5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java
@@ -30,8 +30,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Sets the exchange pattern on the message exchange
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "setExchangePattern")
diff --git a/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
index 80abba4..a2fb46a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
@@ -38,8 +38,6 @@ import org.apache.camel.util.CamelContextHelper;
 
 /**
  * Splits a single message into many sub-messages.
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "split")
diff --git a/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java b/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java
index 61079f2..8b58b16 100644
--- a/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Stops the processing of the current message
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "stop")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
index e80202d..785b3f1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
@@ -31,8 +31,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To configure thread pools
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "threadPoolProfile")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
index 6059fe5..fa24a45 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
@@ -41,8 +41,6 @@ import org.apache.camel.spi.ThreadPoolProfile;
 
 /**
  * Specifies that all steps after this node are processed asynchronously
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "threads")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
index e4a616f..7d32bfc 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
@@ -37,8 +37,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Controls the rate at which messages are passed to the next node in the route
- *
- * @version 
  */
 @Metadata(label = "eip,routing")
 @XmlRootElement(name = "throttle")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java
index 6c5df76..7659ab7 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ToDefinition.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * Sends the message to a static endpoint
- *
- * @version 
  */
 @Metadata(label = "eip,endpoint,routing")
 @XmlRootElement(name = "to")
diff --git a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
index 691aadd..5773dab 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
@@ -41,8 +41,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Enables transaction on the route
- *
- * @version 
  */
 @Metadata(label = "configuration")
 @XmlRootElement(name = "transacted")
diff --git a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
index 9e5a12e..756f4fa 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
@@ -39,8 +39,6 @@ import org.apache.camel.util.ExpressionToPredicateAdapter;
 
 /**
  * Marks the beginning of a try, catch, finally block
- *
- * @version 
  */
 @Metadata(label = "error")
 @XmlRootElement(name = "doTry")
diff --git a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
index feca13a..f4195fc 100644
--- a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
@@ -68,8 +68,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Converts the message data received from the wire into a format that Apache Camel processors can consume
- *
- * @version
  */
 @Metadata(label = "eip,transformation")
 @XmlRootElement(name = "unmarshal")
diff --git a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
index babd01c..960ccc0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
@@ -30,8 +30,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Validates a message based on an expression
- *
- * @version 
  */
 @Metadata(label = "eip,transformation") @AsPredicate
 @XmlRootElement(name = "validate")
diff --git a/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
index bfa8c70..34b2f58 100644
--- a/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
@@ -27,8 +27,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * Triggers a route when an expression evaluates to <tt>true</tt>
- * 
- * @version 
  */
 @Metadata(label = "eip,routing") @AsPredicate
 @XmlRootElement(name = "when")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java
index ab301fe..a5eaa9d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java
@@ -29,8 +29,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The Avro data format is used for serialization and deserialization of messages using Apache Avro binary dataformat.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.14.0", label = "dataformat,transformation", title = "Avro")
 @XmlRootElement(name = "avro")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java
index be2500a..62155e8 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The Barcode data format is used for creating barccode images (such as QR-Code)
- *
- * @version 
  */
 @Metadata(firstVersion = "2.14.0", label = "dataformat,transformation", title = "Barcode")
 @XmlRootElement(name = "barcode")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java
index d6b2e13..dcaa987 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The Base64 data format is used for base64 encoding and decoding.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.11.0", label = "dataformat,transformation", title = "Base64")
 @XmlRootElement(name = "base64")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/BeanioDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/BeanioDataFormat.java
index 2fcec60..1007c27 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/BeanioDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/BeanioDataFormat.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The BeanIO data format is used for working with flat payloads (such as CSV, delimited, or fixed length formats).
- *
- * @version 
  */
 @Metadata(firstVersion = "2.10.0", label = "dataformat,transformation,csv", title = "BeanIO")
 @XmlRootElement(name = "beanio")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
index 4826f91..30bc28f 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
@@ -31,8 +31,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * The Bindy data format is used for working with flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
- *
- * @version 
  */
 @Metadata(firstVersion = "2.0.0", label = "dataformat,transformation,csv", title = "Bindy")
 @XmlRootElement(name = "bindy")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyType.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyType.java
index b5a1b38..3ef1ecc 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyType.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyType.java
@@ -21,8 +21,6 @@ import javax.xml.bind.annotation.XmlType;
 
 /**
  * Represents the different types of bindy data formats.
- *
- * @version 
  */
 @XmlType
 @XmlEnum
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
index 1ae45ab..507e312 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
@@ -34,8 +34,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * Crypto data format is used for encrypting and decrypting of messages using Java Cryptographic Extension.
- *
- * @version
  */
 @Metadata(firstVersion = "2.3.0", label = "dataformat,transformation,security", title = "Crypto (Java Cryptographic Extension)")
 @XmlRootElement(name = "crypto")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java
index a9528e3..0a04e39 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/CustomDataFormat.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * To use a custom data format implementation that does not come out of the box from Apache Camel.
- *
- * @version
  */
 @Metadata(label = "dataformat,transformation", title = "Custom")
 @XmlRootElement(name = "customDataFormat")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java
index 35baeea..78c503b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/GzipDataFormat.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * The GZip data format is a message compression and de-compression format (which works with the popular gzip/gunzip tools).
- *
- * @version 
  */
 @Metadata(firstVersion = "2.0.0", label = "dataformat,transformation", title = "GZip")
 @XmlRootElement(name = "gzip")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java
index 0a93fe9..42b8785 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java
@@ -29,8 +29,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The HL7 data format can be used to marshal or unmarshal HL7 (Health Care) model objects.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.0.0", label = "dataformat,transformation,hl7", title = "HL7")
 @XmlRootElement(name = "hl7")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
index 9fad9ea..7bdfe89 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
@@ -31,8 +31,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * JacksonXML data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
- *
- * @version
  */
 @Metadata(firstVersion = "2.16.0", label = "dataformat,transformation,xml", title = "JacksonXML")
 @XmlRootElement(name = "jacksonxml")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
index 38d58b8..b486c65 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
@@ -33,8 +33,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * JAXB data format uses the JAXB2 XML marshalling standard to unmarshal an XML payload into Java objects or to marshal Java objects into an XML payload.
- *
- * @version 
  */
 @Metadata(firstVersion = "1.0.0", label = "dataformat,transformation,xml", title = "JAXB")
 @XmlRootElement(name = "jaxb")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
index 4d9bc6e..6735158 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
@@ -33,8 +33,6 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * JSon data format is used for unmarshal a JSon payload to POJO or to marshal
  * POJO back to JSon payload.
- *
- * @version
  */
 @Metadata(label = "dataformat,transformation,json", title = "JSon")
 @XmlRootElement(name = "json")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonLibrary.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonLibrary.java
index c86bc04..5edd4f3 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonLibrary.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonLibrary.java
@@ -21,8 +21,6 @@ import javax.xml.bind.annotation.XmlType;
 
 /**
  * Represents the concrete Json libraries Camel supports.
- *
- * @version 
  */
 @XmlType
 @XmlEnum
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
index 864ebcd..ba077a9 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
@@ -29,8 +29,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The Protobuf data format is used for serializing between Java objects and the Google Protobuf protocol.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.2.0", label = "dataformat,transformation", title = "Protobuf")
 @XmlRootElement(name = "protobuf")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java
index 7d88c37..cd7b5c1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/SerializationDataFormat.java
@@ -26,8 +26,6 @@ import org.apache.camel.spi.RouteContext;
 /**
  * Serialization is a data format which uses the standard Java Serialization mechanism
  * to unmarshal a binary payload into Java objects or to marshal Java objects into a binary blob.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.12.0", label = "dataformat,transformation,core", title = "Java Object Serialization")
 @XmlRootElement(name = "serialization")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java
index da23c67..76b98b0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/StringDataFormat.java
@@ -28,8 +28,6 @@ import org.apache.camel.spi.RouteContext;
 
 /**
  * String data format is a textual based format that supports character encoding.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.12.0", label = "dataformat,transformation,core", title = "String Encoding")
 @XmlRootElement(name = "string")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/SyslogDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/SyslogDataFormat.java
index 1df9a64..583a510 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/SyslogDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/SyslogDataFormat.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The Syslog dataformat is used for working with RFC3164 and RFC5424 messages (logging and monitoring).
- *
- * @version 
  */
 @Metadata(firstVersion = "2.6.0", label = "dataformat,transformation,monitoring", title = "Syslog")
 @XmlRootElement(name = "syslog")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java
index 1d9ee1b..8ed97be 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java
@@ -29,8 +29,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * The Thrift data format is used for serialization and deserialization of messages using Apache Thrift binary dataformat.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.20.0", label = "dataformat,transformation", title = "Thrift")
 @XmlRootElement(name = "thrift")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
index 4062476..5b2db56 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
@@ -44,8 +44,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * XSTream data format is used for unmarshal a XML payload to POJO or to marshal POJO back to XML payload.
- *
- * @version 
  */
 @Metadata(firstVersion = "1.3.0", label = "dataformat,transformation,xml,json", title = "XStream")
 @XmlRootElement(name = "xstream")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java
index a1c26708..f2e44f8 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java
@@ -35,8 +35,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * YAML is a data format to marshal and unmarshal Java objects to and from YAML.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.17.0", label = "dataformat,transformation,yaml", title = "YAML")
 @XmlRootElement(name = "yaml")
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLLibrary.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLLibrary.java
index 75b3bb6..465f092 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLLibrary.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/YAMLLibrary.java
@@ -21,8 +21,6 @@ import javax.xml.bind.annotation.XmlType;
 
 /**
  * Represents the concrete Yaml libraries Camel supports.
- *
- * @version 
  */
 @XmlType
 @XmlEnum
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/ExchangePropertyExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/ExchangePropertyExpression.java
index 7a80a0f..2f44056 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/ExchangePropertyExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/ExchangePropertyExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use a Camel Exchange property in expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.0.0", label = "language,core", title = "ExchangeProperty")
 @XmlRootElement(name = "exchangeProperty")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/GroovyExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/GroovyExpression.java
index f0c7336..9025973 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/GroovyExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/GroovyExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use Groovy scripts in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "1.3.0", label = "language,script", title = "Groovy")
 @XmlRootElement(name = "groovy")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/HeaderExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/HeaderExpression.java
index 2da6002..3f6a4f0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/HeaderExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/HeaderExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use a Camel Message header in expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "1.5.0", label = "language,core", title = "Header")
 @XmlRootElement(name = "header")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/JavaScriptExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/JavaScriptExpression.java
index 160161a..a29b172 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/JavaScriptExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/JavaScriptExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use JavaScript in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "1.0.0", label = "language,script", title = "JavaScript")
 @XmlRootElement(name = "javaScript")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/JsonPathExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/JsonPathExpression.java
index d289437..2e1a099 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/JsonPathExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/JsonPathExpression.java
@@ -30,8 +30,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * To use JsonPath in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.13.0", label = "language,json", title = "JsonPath")
 @XmlRootElement(name = "jsonpath")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java
index bc3a628..2131a09 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java
@@ -25,8 +25,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use the specified language in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(label = "language,core", title = "Language")
 @XmlRootElement(name = "language")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
index 6ca924e..e842f8c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
@@ -39,8 +39,6 @@ import org.apache.camel.util.OgnlHelper;
 
 /**
  * To use a Java bean (aka method call) in Camel expressions or predicates.
- *
- * @version
  */
 @Metadata(firstVersion = "1.3.0", label = "language,core,java", title = "Bean method")
 @XmlRootElement(name = "method")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/MvelExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/MvelExpression.java
index 1840bb6..d806d2e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/MvelExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/MvelExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use MVEL scripts in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.0.0", label = "language,java", title = "MVEL")
 @XmlRootElement(name = "mvel")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/NamespaceAwareExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/NamespaceAwareExpression.java
index 053883e..7d7c21e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/NamespaceAwareExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/NamespaceAwareExpression.java
@@ -30,8 +30,6 @@ import org.apache.camel.spi.NamespaceAware;
 /**
  * A useful base class for any expression which may be namespace or XML content aware
  * such as {@link XPathExpression} or {@link XQueryExpression}
- *
- * @version 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 public abstract class NamespaceAwareExpression extends ExpressionDefinition implements NamespaceAware {
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/OgnlExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/OgnlExpression.java
index 8255166..fc8c13c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/OgnlExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/OgnlExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use OGNL scripts in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "1.1.0", label = "language,java", title = "OGNL")
 @XmlRootElement(name = "ognl")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
index adebce0..a5fd8a0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
@@ -31,8 +31,6 @@ import org.apache.camel.util.ObjectHelper;
 
 /**
  * To use Camels built-in Simple language in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "1.1.0", label = "language,core,java", title = "Simple")
 @XmlRootElement(name = "simple")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/SpELExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/SpELExpression.java
index 7954dd3..55f664c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/SpELExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/SpELExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use Spring Expression Language (SpEL) in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.7.0", label = "language,spring", title = "SpEL")
 @XmlRootElement(name = "spel")
diff --git a/camel-core/src/main/java/org/apache/camel/model/language/TerserExpression.java b/camel-core/src/main/java/org/apache/camel/model/language/TerserExpression.java
index e4eff89..b3b8581 100644
--- a/camel-core/src/main/java/org/apache/camel/model/language/TerserExpression.java
+++ b/camel-core/src/main/java/org/apache/camel/model/language/TerserExpression.java
@@ -24,8 +24,6 @@ import org.apache.camel.spi.Metadata;
 
 /**
  * To use HL7 terser scripts in Camel expressions or predicates.
- *
- * @version 
  */
 @Metadata(firstVersion = "2.11.0", label = "language,hl7", title = "HL7 Terser")
... 45381 lines suppressed ...


[camel] 35/44: Introduce CamelEvent spi interface

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 21378f2a7d4a2f9e75beeeb697ccb8751458986f
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Oct 8 14:24:58 2018 +0200

    Introduce CamelEvent spi interface
---
 .../java/org/apache/camel/StartupListener.java     |   2 +-
 .../main/java/org/apache/camel/spi/Breakpoint.java |   7 +-
 .../main/java/org/apache/camel/spi/CamelEvent.java | 282 +++++++++++++++++++++
 .../main/java/org/apache/camel/spi/Condition.java  |   9 +-
 .../main/java/org/apache/camel/spi/Debugger.java   |   6 +-
 .../java/org/apache/camel/spi/EventFactory.java    | 104 ++++----
 .../java/org/apache/camel/spi/EventNotifier.java   |   6 +-
 .../org/apache/camel/spi/ManagementStrategy.java   |   3 +-
 .../org/apache/camel/builder/NotifyBuilder.java    |  14 +-
 .../org/apache/camel/impl/BreakpointSupport.java   |   3 +-
 .../org/apache/camel/impl/ConditionSupport.java    |   5 +-
 .../org/apache/camel/impl/DefaultDebugger.java     |  26 +-
 .../camel/impl/DefaultRuntimeEndpointRegistry.java |  14 +-
 .../camel/impl/SupervisingRouteController.java     |   8 +-
 .../camel/impl/cluster/ClusteredRoutePolicy.java   |   8 +-
 .../camel/main/MainDurationEventNotifier.java      |  12 +-
 .../management/DefaultManagementStrategy.java      |   4 +-
 .../management/JmxNotificationEventNotifier.java   |   6 +-
 .../camel/management/LoggingEventNotifier.java     |   7 +-
 .../camel/management/PublishEventNotifier.java     |   5 +-
 .../management/event/AbstractContextEvent.java     |   3 +-
 .../management/event/AbstractExchangeEvent.java    |   3 +-
 .../camel/management/event/AbstractRouteEvent.java |   3 +-
 .../event/CamelContextResumeFailureEvent.java      |   3 +-
 .../management/event/CamelContextResumedEvent.java |   3 +-
 .../event/CamelContextResumingEvent.java           |   3 +-
 .../management/event/CamelContextStartedEvent.java |   3 +-
 .../event/CamelContextStartingEvent.java           |   3 +-
 .../event/CamelContextStartupFailureEvent.java     |   3 +-
 .../event/CamelContextStopFailureEvent.java        |   3 +-
 .../management/event/CamelContextStoppedEvent.java |   3 +-
 .../event/CamelContextStoppingEvent.java           |   3 +-
 .../event/CamelContextSuspendedEvent.java          |   3 +-
 .../event/CamelContextSuspendingEvent.java         |   3 +-
 .../management/event/DefaultEventFactory.java      |  53 ++--
 .../management/event/ExchangeCompletedEvent.java   |   3 +-
 .../management/event/ExchangeCreatedEvent.java     |   3 +-
 .../management/event/ExchangeFailedEvent.java      |   3 +-
 .../event/ExchangeFailureHandledEvent.java         |   3 +-
 .../event/ExchangeFailureHandlingEvent.java        |   3 +-
 .../management/event/ExchangeRedeliveryEvent.java  |   3 +-
 .../management/event/ExchangeSendingEvent.java     |   5 +-
 .../camel/management/event/ExchangeSentEvent.java  |   7 +-
 .../camel/management/event/FailureEvent.java       |  26 --
 .../camel/management/event/RouteAddedEvent.java    |   3 +-
 .../camel/management/event/RouteRemovedEvent.java  |   3 +-
 .../camel/management/event/RouteStartedEvent.java  |   3 +-
 .../camel/management/event/RouteStoppedEvent.java  |   3 +-
 .../event/ServiceStartupFailureEvent.java          |   3 +-
 .../management/event/ServiceStopFailureEvent.java  |   3 +-
 .../processor/interceptor/BacklogDebugger.java     |  12 +-
 .../java/org/apache/camel/support/EventHelper.java |  54 ++--
 .../throttling/ThrottlingInflightRoutePolicy.java  |   8 +-
 .../camel/impl/FileWatcherReloadStrategyTest.java  |  12 +-
 .../issues/SentExchangeEventNotifierIssueTest.java |   9 +-
 .../SentExchangeEventNotifierTwoIssueTest.java     |   7 +-
 .../camel/management/AddEventNotifierTest.java     |   7 +-
 .../camel/management/EventNotifierEventsTest.java  |   7 +-
 .../EventNotifierExchangeCompletedTest.java        |   9 +-
 .../EventNotifierExchangeSentParallelTest.java     |   5 +-
 .../management/EventNotifierExchangeSentTest.java  |  11 +-
 .../EventNotifierFailureHandledEventsTest.java     |   7 +-
 .../EventNotifierRedeliveryEventsTest.java         |   9 +-
 ...ventNotifierServiceStoppingFailedEventTest.java |   7 +-
 .../management/ManagedCamelContextRestartTest.java |   6 +-
 .../MultipleEventNotifierEventsTest.java           |  13 +-
 .../camel/management/RemoveEventNotifierTest.java  |   9 +-
 .../processor/EventNotifierExchangeSentTest.java   |   2 +-
 .../camel/processor/MyLoggingSentEventNotifer.java |   9 +-
 .../camel/processor/MySentEventNotifier.java       |  12 +-
 .../camel/processor/PipelineStepWithEventTest.java |  10 +
 ...litterUseOriginalNotPropagateExceptionTest.java |   9 +-
 .../camel/processor/UnitOfWorkProducerTest.java    |  11 +-
 .../AsyncEndpointEventNotifierSendingTest.java     |  12 +-
 .../async/AsyncEndpointEventNotifierTest.java      |   8 +-
 .../processor/enricher/EnricherSendEventTest.java  |   9 +-
 .../DebugExceptionEventBreakpointTest.java         |  14 +-
 .../camel/processor/interceptor/DebugTest.java     |   9 +-
 .../DynamicRouterEventNotifierTest.java            |  11 +-
 .../RecipientListEventNotifierTest.java            |  11 +-
 .../routingslip/RoutingSlipEventNotifierTest.java  |  11 +-
 .../org/apache/camel/util/EventHelperTest.java     |  16 +-
 .../camel/component/aws/xray/XRayTracer.java       |  13 +-
 .../org/apache/camel/cdi/CdiCamelExtension.java    |   6 +-
 .../org/apache/camel/cdi/CdiEventConsumer.java     |   6 +-
 .../org/apache/camel/cdi/CdiEventNotifier.java     |  22 +-
 .../camel/cdi/test/CamelEventEndpointTest.java     |  13 +-
 .../camel/cdi/test/CamelEventNotifierTest.java     |  22 +-
 .../cdi/test/CamelRouteEventNotifierTest.java      |  52 ++--
 .../cdi/test/MultiContextEventNotifierTest.java    |  30 +--
 .../camel/core/osgi/OsgiCamelContextPublisher.java |  22 +-
 .../camel/core/osgi/OsgiEventAdminNotifier.java    |  15 +-
 .../AbstractMicrometerEventNotifier.java           |   8 +-
 .../MicrometerExchangeEventNotifier.java           |  25 +-
 ...rometerExchangeEventNotifierNamingStrategy.java |   6 +-
 .../MicrometerRouteEventNotifier.java              |  19 +-
 ...MicrometerRouteEventNotifierNamingStrategy.java |   6 +-
 .../component/nagios/NagiosEventNotifier.java      |  23 +-
 .../camel/opentracing/OpenTracingTracer.java       |   9 +-
 .../apache/camel/spring/boot/RoutesCollector.java  |  12 +-
 .../boot/actuate/endpoint/CamelRoutesEndpoint.java |   2 +-
 .../camel/spring/boot/model/RouteDetails.java      |   2 +-
 .../camel/spring/boot/CamelEventNotifierTest.java  |   6 +-
 .../camel/spring/StartAndStopEventNotifier.java    |  14 +-
 .../camel/spring/management/MyEventNotifier.java   |  10 +-
 .../test/spring/RouteCoverageEventNotifier.java    |   9 +-
 .../java/org/apache/camel/zipkin/ZipkinTracer.java |  27 +-
 .../en/release-notes/camel-2170-release.adoc       |   2 +-
 .../camel/example/cdi/metrics/Application.java     |   3 +-
 .../camel/example/cdi/properties/Application.java  |   2 +-
 .../example/cdi/properties/CdiPropertiesTest.java  |   2 +-
 .../apache/camel/example/cdi/test/Application.java |   4 +-
 .../apache/camel/example/cdi/test/AdviceTest.java  |   2 +-
 .../apache/camel/example/cdi/xml/Application.java  |   2 +-
 .../apache/camel/example/cdi/xml/CdiXmlTest.java   |   3 +-
 .../main/java/sample/camel/ClientApplication.java  |   2 +-
 .../main/java/sample/camel/ClientApplication.java  |   2 +-
 117 files changed, 870 insertions(+), 579 deletions(-)

diff --git a/camel-api/src/main/java/org/apache/camel/StartupListener.java b/camel-api/src/main/java/org/apache/camel/StartupListener.java
index 187828a..4184dcb 100644
--- a/camel-api/src/main/java/org/apache/camel/StartupListener.java
+++ b/camel-api/src/main/java/org/apache/camel/StartupListener.java
@@ -31,7 +31,7 @@ package org.apache.camel;
  * <p/>
  * <b>Important:</b> You cannot use this listener to add and start new routes to the {@link CamelContext} as this is not
  * supported by design, as this listener plays a role during starting up routes. Instead you can use an {@link org.apache.camel.spi.EventNotifier}
- * and listen on the {@link org.apache.camel.management.event.CamelContextStartedEvent} event and then add and start new routes from there.
+ * and listen on the {@link org.apache.camel.spi.CamelEvent.CamelContextStartedEvent} event and then add and start new routes from there.
  * Instead use the {@link ExtendedStartupListener} if you wish to add new routes.
  *
  * @see ExtendedStartupListener
diff --git a/camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java b/camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java
index 04b3798..bbe9873 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java
@@ -21,6 +21,7 @@ import java.util.EventObject;
 import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 
 /**
  * {@link org.apache.camel.spi.Breakpoint} are used by the {@link org.apache.camel.spi.Debugger} API.
@@ -81,11 +82,11 @@ public interface Breakpoint {
      * Callback invoked when the breakpoint was hit and any of the {@link Exchange} {@link EventObject event}s occurred.
      *
      * @param exchange   the {@link Exchange}
-     * @param event      the event (instance of {@link org.apache.camel.management.event.AbstractExchangeEvent}
+     * @param event      the event (instance of {@link ExchangeEvent}
      * @param definition the {@link NamedNode} definition of the last processor executed,
      *                   may be <tt>null</tt> if not possible to resolve from tracing
-     * @see org.apache.camel.management.event.AbstractExchangeEvent
+     * @see ExchangeEvent
      */
-    void onEvent(Exchange exchange, EventObject event, NamedNode definition);
+    void onEvent(Exchange exchange, ExchangeEvent event, NamedNode definition);
 
 }
diff --git a/camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java b/camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java
new file mode 100644
index 0000000..c8a2ac2
--- /dev/null
+++ b/camel-api/src/main/java/org/apache/camel/spi/CamelEvent.java
@@ -0,0 +1,282 @@
+/**
+ * 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 org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.Route;
+
+/**
+ * This interface is implemented by all events.
+ */
+public interface CamelEvent {
+
+    enum Type {
+        CamelContextResumed,
+        CamelContextResumeFailure,
+        CamelContextResuming,
+        CamelContextStarted,
+        CamelContextStarting,
+        CamelContextStartupFailure,
+        CamelContextStopFailure,
+        CamelContextStopped,
+        CamelContextStopping,
+        CamelContextSuspended,
+        CamelContextSuspending,
+        ExchangeCompleted,
+        ExchangeCreated,
+        ExchangeFailed,
+        ExchangeFailureHandled,
+        ExchangeFailureHandling,
+        ExchangeRedelivery,
+        ExchangeSending,
+        ExchangeSent,
+        RouteAdded,
+        RouteRemoved,
+        RouteStarted,
+        RouteStopped,
+        ServiceStartupFailure,
+        ServiceStopFailure,
+        Custom
+    }
+
+    Type getType();
+
+    Object getSource();
+
+    /**
+     * This interface is implemented by all events that contain an exception and is used to
+     * retrieve the exception in a universal way.
+     */
+    interface FailureEvent extends CamelEvent {
+
+        Throwable getCause();
+
+    }
+
+    interface CamelContextEvent extends CamelEvent {
+
+        CamelContext getContext();
+
+        default Object getSource() {
+            return getContext();
+        }
+
+    }
+
+    interface CamelContextResumedEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextResumed;
+        }
+    }
+
+    interface CamelContextResumeFailureEvent extends CamelContextEvent, FailureEvent {
+        default Type getType() {
+            return Type.CamelContextResumeFailure;
+        }
+    }
+
+    interface CamelContextResumingEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextResuming;
+        }
+    }
+
+    interface CamelContextStartedEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextStarted;
+        }
+    }
+
+    interface CamelContextStartingEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextStarting;
+        }
+    }
+
+    interface CamelContextStartupFailureEvent extends CamelContextEvent, FailureEvent {
+        default Type getType() {
+            return Type.CamelContextStartupFailure;
+        }
+    }
+
+    interface CamelContextStopFailureEvent extends CamelContextEvent, FailureEvent {
+        default Type getType() {
+            return Type.CamelContextStopFailure;
+        }
+    }
+
+    interface CamelContextStoppedEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextStopped;
+        }
+    }
+
+    interface CamelContextStoppingEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextStopping;
+        }
+    }
+
+    interface CamelContextSuspendedEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextSuspended;
+        }
+    }
+
+    interface CamelContextSuspendingEvent extends CamelContextEvent {
+        default Type getType() {
+            return Type.CamelContextSuspending;
+        }
+    }
+
+    interface ExchangeEvent extends CamelEvent {
+
+        Exchange getExchange();
+
+        default Object getSource() {
+            return getExchange();
+        }
+    }
+
+    interface ExchangeCompletedEvent extends ExchangeEvent {
+        default Type getType() {
+            return Type.ExchangeCompleted;
+        }
+    }
+
+    interface ExchangeCreatedEvent extends ExchangeEvent {
+        default Type getType() {
+            return Type.ExchangeCreated;
+        }
+    }
+
+    interface ExchangeFailedEvent extends ExchangeEvent, FailureEvent {
+        default Type getType() {
+            return Type.ExchangeFailed;
+        }
+
+    }
+
+    interface ExchangeFailureEvent extends ExchangeEvent {
+
+        Processor getFailureHandler();
+
+        boolean isDeadLetterChannel();
+
+        String getDeadLetterUri();
+
+    }
+
+    interface ExchangeFailureHandledEvent extends ExchangeFailureEvent {
+        default Type getType() {
+            return Type.ExchangeFailureHandled;
+        }
+    }
+
+    interface ExchangeFailureHandlingEvent extends ExchangeFailureEvent {
+        default Type getType() {
+            return Type.ExchangeFailureHandling;
+        }
+    }
+
+    interface ExchangeRedeliveryEvent extends ExchangeEvent {
+
+        int getAttempt();
+
+        default Type getType() {
+            return Type.ExchangeRedelivery;
+        }
+    }
+
+    interface ExchangeSendingEvent extends ExchangeEvent {
+
+        Endpoint getEndpoint();
+
+        default Type getType() {
+            return Type.ExchangeSending;
+        }
+    }
+
+    interface ExchangeSentEvent extends ExchangeEvent {
+
+        Endpoint getEndpoint();
+
+        long getTimeTaken();
+
+        default Type getType() {
+            return Type.ExchangeSent;
+        }
+    }
+
+    interface RouteEvent extends CamelEvent {
+
+        Route getRoute();
+
+        default Object getSource() {
+            return getRoute();
+        }
+    }
+
+    interface RouteAddedEvent extends RouteEvent {
+        default Type getType() {
+            return Type.RouteAdded;
+        }
+    }
+
+    interface RouteRemovedEvent extends RouteEvent {
+        default Type getType() {
+            return Type.RouteRemoved;
+        }
+    }
+
+    interface RouteStartedEvent extends RouteEvent {
+        default Type getType() {
+            return Type.RouteStarted;
+        }
+    }
+
+    interface RouteStoppedEvent extends RouteEvent {
+        default Type getType() {
+            return Type.RouteStopped;
+        }
+    }
+
+    interface ServiceEvent extends CamelEvent {
+
+        Object getService();
+
+        default Object getSource() {
+            return getService();
+        }
+    }
+
+    interface ServiceStartupFailureEvent extends ServiceEvent, FailureEvent {
+        default Type getType() {
+            return Type.ServiceStartupFailure;
+        }
+    }
+
+    interface ServiceStopFailureEvent extends ServiceEvent, FailureEvent {
+        default Type getType() {
+            return Type.ServiceStopFailure;
+        }
+    }
+
+}
diff --git a/camel-api/src/main/java/org/apache/camel/spi/Condition.java b/camel-api/src/main/java/org/apache/camel/spi/Condition.java
index afb81ad..c39891e 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/Condition.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/Condition.java
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.spi;
 
-import java.util.EventObject;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 
 /**
  * A condition to define when a given {@link Exchange} matches when is being routed.
@@ -44,10 +43,10 @@ public interface Condition {
      * Does the condition match
      *
      * @param exchange the exchange
-     * @param event    the event (instance of {@link org.apache.camel.management.event.AbstractExchangeEvent}
+     * @param event    the event (instance of {@link ExchangeEvent}
      * @return <tt>true</tt> to match, <tt>false</tt> otherwise
-     * @see org.apache.camel.management.event.AbstractExchangeEvent
+     * @see ExchangeEvent
      */
-    boolean matchEvent(Exchange exchange, EventObject event);
+    boolean matchEvent(Exchange exchange, ExchangeEvent event);
 
 }
diff --git a/camel-api/src/main/java/org/apache/camel/spi/Debugger.java b/camel-api/src/main/java/org/apache/camel/spi/Debugger.java
index 6930d59..1a28f84 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/Debugger.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/Debugger.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.spi;
 
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContextAware;
@@ -24,6 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.Service;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 
 /**
  * A debugger which allows tooling to attach breakpoints which is is being invoked
@@ -136,9 +136,9 @@ public interface Debugger extends Service, CamelContextAware {
      * to notify breakpoints.
      *
      * @param exchange the exchange
-     * @param event    the event (instance of {@link org.apache.camel.management.event.AbstractExchangeEvent}
+     * @param event    the event (instance of {@link ExchangeEvent}
      * @return <tt>true</tt> if any breakpoint was hit, <tt>false</tt> if not breakpoint was hit
      */
-    boolean onEvent(Exchange exchange, EventObject event);
+    boolean onEvent(Exchange exchange, ExchangeEvent event);
 
 }
diff --git a/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java b/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
index 84e443b..f699a48 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.spi;
 
-import java.util.EventObject;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -25,140 +23,140 @@ import org.apache.camel.Processor;
 import org.apache.camel.Route;
 
 /**
- * Factory to create {@link java.util.EventObject events} that are emitted when such an event occur.
+ * Factory to create {@link CamelEvent events} that are emitted when such an event occur.
  * <p/>
  * For example when an {@link Exchange} is being created and then later when its done.
  */
 public interface EventFactory {
 
     /**
-     * Creates an {@link EventObject} for Camel is starting.
+     * Creates an {@link CamelEvent} for Camel is starting.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextStartingEvent(CamelContext context);
+    CamelEvent createCamelContextStartingEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for Camel has been started successfully.
+     * Creates an {@link CamelEvent} for Camel has been started successfully.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextStartedEvent(CamelContext context);
+    CamelEvent createCamelContextStartedEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for Camel failing to start
+     * Creates an {@link CamelEvent} for Camel failing to start
      *
      * @param context camel context
      * @param cause   the cause exception
      * @return the created event
      */
-    EventObject createCamelContextStartupFailureEvent(CamelContext context, Throwable cause);
+    CamelEvent createCamelContextStartupFailureEvent(CamelContext context, Throwable cause);
 
     /**
-     * Creates an {@link EventObject} for Camel failing to stop cleanly
+     * Creates an {@link CamelEvent} for Camel failing to stop cleanly
      *
      * @param context camel context
      * @param cause   the cause exception
      * @return the created event
      */
-    EventObject createCamelContextStopFailureEvent(CamelContext context, Throwable cause);
+    CamelEvent createCamelContextStopFailureEvent(CamelContext context, Throwable cause);
 
     /**
-     * Creates an {@link EventObject} for Camel is stopping.
+     * Creates an {@link CamelEvent} for Camel is stopping.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextStoppingEvent(CamelContext context);
+    CamelEvent createCamelContextStoppingEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for Camel has been stopped successfully.
+     * Creates an {@link CamelEvent} for Camel has been stopped successfully.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextStoppedEvent(CamelContext context);
+    CamelEvent createCamelContextStoppedEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for a Service failed to start cleanly
+     * Creates an {@link CamelEvent} for a Service failed to start cleanly
      *
      * @param context camel context
      * @param service the service
      * @param cause   the cause exception
      * @return the created event
      */
-    EventObject createServiceStartupFailureEvent(CamelContext context, Object service, Throwable cause);
+    CamelEvent createServiceStartupFailureEvent(CamelContext context, Object service, Throwable cause);
 
     /**
-     * Creates an {@link EventObject} for a Service failed to stop cleanly
+     * Creates an {@link CamelEvent} for a Service failed to stop cleanly
      *
      * @param context camel context
      * @param service the service
      * @param cause   the cause exception
      * @return the created event
      */
-    EventObject createServiceStopFailureEvent(CamelContext context, Object service, Throwable cause);
+    CamelEvent createServiceStopFailureEvent(CamelContext context, Object service, Throwable cause);
 
     /**
-     * Creates an {@link EventObject} for {@link Route} has been started successfully.
+     * Creates an {@link CamelEvent} for {@link Route} has been started successfully.
      *
      * @param route the route
      * @return the created event
      */
-    EventObject createRouteStartedEvent(Route route);
+    CamelEvent createRouteStartedEvent(Route route);
 
     /**
-     * Creates an {@link EventObject} for {@link Route} has been stopped successfully.
+     * Creates an {@link CamelEvent} for {@link Route} has been stopped successfully.
      *
      * @param route the route
      * @return the created event
      */
-    EventObject createRouteStoppedEvent(Route route);
+    CamelEvent createRouteStoppedEvent(Route route);
 
     /**
-     * Creates an {@link EventObject} for {@link Route} has been added successfully.
+     * Creates an {@link CamelEvent} for {@link Route} has been added successfully.
      *
      * @param route the route
      * @return the created event
      */
-    EventObject createRouteAddedEvent(Route route);
+    CamelEvent createRouteAddedEvent(Route route);
 
     /**
-     * Creates an {@link EventObject} for {@link Route} has been removed successfully.
+     * Creates an {@link CamelEvent} for {@link Route} has been removed successfully.
      *
      * @param route the route
      * @return the created event
      */
-    EventObject createRouteRemovedEvent(Route route);
+    CamelEvent createRouteRemovedEvent(Route route);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has been created
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} has been created
      *
      * @param exchange the exchange
      * @return the created event
      */
-    EventObject createExchangeCreatedEvent(Exchange exchange);
+    CamelEvent createExchangeCreatedEvent(Exchange exchange);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has been completed successfully
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} has been completed successfully
      *
      * @param exchange the exchange
      * @return the created event
      */
-    EventObject createExchangeCompletedEvent(Exchange exchange);
+    CamelEvent createExchangeCompletedEvent(Exchange exchange);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has failed
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} has failed
      *
      * @param exchange the exchange
      * @return the created event
      */
-    EventObject createExchangeFailedEvent(Exchange exchange);
+    CamelEvent createExchangeFailedEvent(Exchange exchange);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has failed
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} has failed
      * but is being handled by the Camel error handlers such as an dead letter channel, or a doTry .. doCatch block.
      * <p/>
      * This event is triggered <b>before</b> sending the failure handler, where as
@@ -170,11 +168,11 @@ public interface EventFactory {
      * @param deadLetterUri     the dead letter uri, if its a dead letter channel
      * @return the created event
      */
-    EventObject createExchangeFailureHandlingEvent(Exchange exchange, Processor failureHandler,
+    CamelEvent createExchangeFailureHandlingEvent(Exchange exchange, Processor failureHandler,
                                                    boolean deadLetterChannel, String deadLetterUri);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has failed
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} has failed
      * but was handled by the Camel error handlers such as an dead letter channel, or a doTry .. doCatch block.
      * <p/>
      * This event is triggered <b>after</b> the exchange was sent to failure handler, where as
@@ -186,76 +184,76 @@ public interface EventFactory {
      * @param deadLetterUri     the dead letter uri, if its a dead letter channel
      * @return the created event
      */
-    EventObject createExchangeFailureHandledEvent(Exchange exchange, Processor failureHandler,
+    CamelEvent createExchangeFailureHandledEvent(Exchange exchange, Processor failureHandler,
                                                   boolean deadLetterChannel, String deadLetterUri);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} is about to be redelivered
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} is about to be redelivered
      *
      * @param exchange the exchange
      * @param attempt  the current redelivery attempt (starts from 1)
      * @return the created event
      */
-    EventObject createExchangeRedeliveryEvent(Exchange exchange, int attempt);
+    CamelEvent createExchangeRedeliveryEvent(Exchange exchange, int attempt);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} is about to be sent to the endpoint (eg before).
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} is about to be sent to the endpoint (eg before).
      *
      * @param exchange  the exchange
      * @param endpoint  the destination
      * @return the created event
      */
-    EventObject createExchangeSendingEvent(Exchange exchange, Endpoint endpoint);
+    CamelEvent createExchangeSendingEvent(Exchange exchange, Endpoint endpoint);
 
     /**
-     * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has completely been sent to the endpoint (eg after).
+     * Creates an {@link CamelEvent} when an {@link org.apache.camel.Exchange} has completely been sent to the endpoint (eg after).
      *
      * @param exchange  the exchange
      * @param endpoint  the destination
      * @param timeTaken time in millis taken
      * @return the created event
      */
-    EventObject createExchangeSentEvent(Exchange exchange, Endpoint endpoint, long timeTaken);
+    CamelEvent createExchangeSentEvent(Exchange exchange, Endpoint endpoint, long timeTaken);
 
     /**
-     * Creates an {@link EventObject} for Camel is suspending.
+     * Creates an {@link CamelEvent} for Camel is suspending.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextSuspendingEvent(CamelContext context);
+    CamelEvent createCamelContextSuspendingEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for Camel has been suspended successfully.
+     * Creates an {@link CamelEvent} for Camel has been suspended successfully.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextSuspendedEvent(CamelContext context);
+    CamelEvent createCamelContextSuspendedEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for Camel is resuming.
+     * Creates an {@link CamelEvent} for Camel is resuming.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextResumingEvent(CamelContext context);
+    CamelEvent createCamelContextResumingEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for Camel has been resumed successfully.
+     * Creates an {@link CamelEvent} for Camel has been resumed successfully.
      *
      * @param context camel context
      * @return the created event
      */
-    EventObject createCamelContextResumedEvent(CamelContext context);
+    CamelEvent createCamelContextResumedEvent(CamelContext context);
 
     /**
-     * Creates an {@link EventObject} for Camel failing to resume
+     * Creates an {@link CamelEvent} for Camel failing to resume
      *
      * @param context camel context
      * @param cause   the cause exception
      * @return the created event
      */
-    EventObject createCamelContextResumeFailureEvent(CamelContext context, Throwable cause);
+    CamelEvent createCamelContextResumeFailureEvent(CamelContext context, Throwable cause);
 
 }
diff --git a/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java b/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java
index b372dbf..863ec02 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.spi;
 
-import java.util.EventObject;
-
 /**
  * Notifier to send {@link java.util.EventObject events}.
  *
@@ -31,7 +29,7 @@ public interface EventNotifier {
      * @param event the event
      * @throws Exception can be thrown if notification failed
      */
-    void notify(EventObject event) throws Exception;
+    void notify(CamelEvent event) throws Exception;
 
     /**
      * Checks whether notification for the given event is enabled.
@@ -41,7 +39,7 @@ public interface EventNotifier {
      * @param event the event
      * @return <tt>true</tt> if the event should be sent, <tt>false</tt> to silently ignore it
      */
-    boolean isEnabled(EventObject event);
+    boolean isEnabled(CamelEvent event);
 
     /**
      * Checks whether notification is disabled for all events
diff --git a/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
index 3f70951..7fb8d47 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.spi;
 
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.NamedNode;
@@ -99,7 +98,7 @@ public interface ManagementStrategy extends Service {
      * @param event the event
      * @throws Exception can be thrown if the notification failed
      */
-    void notify(EventObject event) throws Exception;
+    void notify(CamelEvent event) throws Exception;
 
     /**
      * Gets the event notifiers.
diff --git a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
index 05fc8fd..cbf4f2c 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
@@ -18,7 +18,6 @@ package org.apache.camel.builder;
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.EventObject;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -36,10 +35,11 @@ import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.direct.DirectEndpoint;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+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.support.EndpointHelper;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.ServiceHelper;
@@ -1322,7 +1322,7 @@ public class NotifyBuilder {
      */
     private final class ExchangeNotifier extends EventNotifierSupport {
 
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             if (event instanceof ExchangeCreatedEvent) {
                 onExchangeCreated((ExchangeCreatedEvent) event);
             } else if (event instanceof ExchangeCompletedEvent) {
@@ -1337,7 +1337,7 @@ public class NotifyBuilder {
             computeMatches();
         }
 
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return true;
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java b/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
index ca874d1..dfb6179 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/BreakpointSupport.java
@@ -22,6 +22,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.Breakpoint;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 
 /**
  * A support class for {@link Breakpoint} implementations to use as base class.
@@ -52,7 +53,7 @@ public abstract class BreakpointSupport implements Breakpoint {
         // noop
     }
 
-    public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
+    public void onEvent(Exchange exchange, ExchangeEvent event, NamedNode definition) {
         // noop
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java b/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
index 54d0d3a..cbdef83 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConditionSupport.java
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.impl;
 
-import java.util.EventObject;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 import org.apache.camel.spi.Condition;
 
 /**
@@ -32,7 +31,7 @@ public class ConditionSupport implements Condition {
         return false;
     }
 
-    public boolean matchEvent(Exchange exchange, EventObject event) {
+    public boolean matchEvent(Exchange exchange, ExchangeEvent event) {
         return false;
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
index 9306b43..1a8ea52 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
@@ -19,7 +19,6 @@ package org.apache.camel.impl;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.EventObject;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -32,11 +31,12 @@ import org.apache.camel.Exchange;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
-import org.apache.camel.management.event.AbstractExchangeEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.Breakpoint;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 import org.apache.camel.spi.Condition;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.EventNotifier;
@@ -144,7 +144,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
             }
 
             @Override
-            public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
+            public void onEvent(Exchange exchange, ExchangeEvent event, NamedNode definition) {
                 if (event instanceof ExchangeCreatedEvent) {
                     exchange.getContext().getDebugger().startSingleStepExchange(exchange.getExchangeId(), this);
                 } else if (event instanceof ExchangeCompletedEvent) {
@@ -259,7 +259,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
     }
 
     @Override
-    public boolean onEvent(Exchange exchange, EventObject event) {
+    public boolean onEvent(Exchange exchange, ExchangeEvent event) {
         // is the exchange in single step mode?
         Breakpoint singleStep = singleSteps.get(exchange.getExchangeId());
         if (singleStep != null) {
@@ -299,7 +299,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
     }
 
     @SuppressWarnings("unchecked")
-    protected void onEvent(Exchange exchange, EventObject event, Breakpoint breakpoint) {
+    protected void onEvent(Exchange exchange, ExchangeEvent event, Breakpoint breakpoint) {
         ProcessorDefinition<?> definition = null;
 
         // try to get the last known definition
@@ -328,7 +328,7 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         return true;
     }
 
-    private boolean matchConditions(Exchange exchange, EventObject event, BreakpointConditions breakpoint) {
+    private boolean matchConditions(Exchange exchange, ExchangeEvent event, BreakpointConditions breakpoint) {
         for (Condition condition : breakpoint.getConditions()) {
             if (!condition.matchEvent(exchange, event)) {
                 return false;
@@ -367,10 +367,10 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         }
 
         @Override
-        public void notify(EventObject event) throws Exception {
-            AbstractExchangeEvent aee = (AbstractExchangeEvent) event;
+        public void notify(CamelEvent event) throws Exception {
+            ExchangeEvent aee = (ExchangeEvent) event;
             Exchange exchange = aee.getExchange();
-            onEvent(exchange, event);
+            onEvent(exchange, aee);
 
             if (event instanceof ExchangeCompletedEvent) {
                 // fail safe to ensure we remove single steps when the Exchange is complete
@@ -379,8 +379,8 @@ public class DefaultDebugger implements Debugger, CamelContextAware {
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
-            return event instanceof AbstractExchangeEvent;
+        public boolean isEnabled(CamelEvent event) {
+            return event instanceof ExchangeEvent;
         }
 
         @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java
index d2689ca..3257a2b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRuntimeEndpointRegistry.java
@@ -18,7 +18,6 @@ package org.apache.camel.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.EventObject;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -29,10 +28,11 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.RouteAddedEvent;
-import org.apache.camel.management.event.RouteRemovedEvent;
+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;
@@ -212,7 +212,7 @@ public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport impleme
 
     @Override
     @SuppressWarnings("unchecked")
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         if (event instanceof RouteAddedEvent) {
             RouteAddedEvent rse = (RouteAddedEvent) event;
             Endpoint endpoint = rse.getRoute().getEndpoint();
@@ -288,7 +288,7 @@ public class DefaultRuntimeEndpointRegistry extends EventNotifierSupport impleme
     }
 
     @Override
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return enabled && event instanceof ExchangeCreatedEvent
                 || event instanceof ExchangeSendingEvent
                 || event instanceof RouteAddedEvent
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
index a607c0a..c9658a4 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
@@ -20,7 +20,6 @@ import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.EventObject;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -43,9 +42,10 @@ import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StartupListener;
-import org.apache.camel.management.event.CamelContextStartedEvent;
 import org.apache.camel.meta.Experimental;
 import org.apache.camel.model.RouteDefinition;
+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;
@@ -693,12 +693,12 @@ public class SupervisingRouteController extends DefaultRouteController {
 
     private class CamelContextStartupListener extends EventNotifierSupport implements StartupListener {
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             onCamelContextStarted();
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof CamelContextStartedEvent;
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
index 29a7d67..57330bb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java
@@ -17,7 +17,6 @@
 package org.apache.camel.impl.cluster;
 
 import java.time.Duration;
-import java.util.EventObject;
 import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
@@ -38,9 +37,10 @@ import org.apache.camel.cluster.CamelClusterMember;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.cluster.CamelClusterView;
 import org.apache.camel.cluster.ClusterServiceSelectors;
-import org.apache.camel.management.event.CamelContextStartedEvent;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.cluster.ClusterServiceHelper;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.util.ObjectHelper;
@@ -301,12 +301,12 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca
 
     private class CamelContextStartupListener extends EventNotifierSupport implements StartupListener {
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             onCamelContextStarted();
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof CamelContextStartedEvent;
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java b/camel-core/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java
index b50d3de..6fe6eb9 100644
--- a/camel-core/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java
@@ -16,16 +16,16 @@
  */
 package org.apache.camel.main;
 
-import java.util.EventObject;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeFailedEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
@@ -60,7 +60,7 @@ public class MainDurationEventNotifier extends EventNotifierSupport {
     }
 
     @Override
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         boolean begin = event instanceof ExchangeCreatedEvent;
         boolean complete = event instanceof ExchangeCompletedEvent || event instanceof ExchangeFailedEvent;
 
@@ -96,7 +96,7 @@ public class MainDurationEventNotifier extends EventNotifierSupport {
     }
 
     @Override
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return event instanceof ExchangeCompletedEvent || event instanceof ExchangeFailedEvent;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
index d259d55..262822e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.management;
 
-import java.util.EventObject;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -24,6 +23,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.NamedNode;
 import org.apache.camel.management.event.DefaultEventFactory;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventFactory;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementAgent;
@@ -157,7 +157,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         this.camelContext = camelContext;
     }
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         if (eventNotifiers != null && !eventNotifiers.isEmpty()) {
             for (EventNotifier notifier : eventNotifiers) {
                 if (notifier.isEnabled(event)) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
index 850be7d..db4c1b4 100644
--- a/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/JmxNotificationEventNotifier.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.management;
 
-import java.util.EventObject;
 import java.util.concurrent.atomic.AtomicLong;
 
 import javax.management.Notification;
 import javax.management.NotificationBroadcasterSupport;
 
 import org.apache.camel.api.management.JmxNotificationBroadcasterAware;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.support.EventNotifierSupport;
 import org.slf4j.Logger;
@@ -41,7 +41,7 @@ public class JmxNotificationEventNotifier extends EventNotifierSupport implement
         notificationBroadcaster = broadcaster;
     }
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         if (notificationBroadcaster != null) {
             // its recommended to send light weight events and we don't want to have the entire Exchange/CamelContext etc
             // serialized as these are the typical source of the EventObject. So we use our own source which is just
@@ -55,7 +55,7 @@ public class JmxNotificationEventNotifier extends EventNotifierSupport implement
         }
     }
 
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
index 8b82ec2..8eb9832 100644
--- a/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/LoggingEventNotifier.java
@@ -16,8 +16,7 @@
  */
 package org.apache.camel.management;
 
-import java.util.EventObject;
-
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,7 +30,7 @@ public class LoggingEventNotifier extends EventNotifierSupport {
     private Logger log = LoggerFactory.getLogger(LoggingEventNotifier.class);
     private String logName;
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         log.info("Event: {}", event);
     }
 
@@ -40,7 +39,7 @@ public class LoggingEventNotifier extends EventNotifierSupport {
         return !log.isInfoEnabled();
     }
 
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return log.isInfoEnabled();
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java b/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
index 6fec3ab..ace59cb 100644
--- a/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
+++ b/camel-core/src/main/java/org/apache/camel/management/PublishEventNotifier.java
@@ -23,6 +23,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Producer;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -43,7 +44,7 @@ public class PublishEventNotifier extends EventNotifierSupport implements CamelC
     private String endpointUri;
     private Producer producer;
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         // only notify when we are started
         if (!isStarted()) {
             log.debug("Cannot publish event as notifier is not started: {}", event);
@@ -71,7 +72,7 @@ public class PublishEventNotifier extends EventNotifierSupport implements CamelC
         }
     }
 
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
index 6daa2ef..bda88b2 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
@@ -19,11 +19,12 @@ package org.apache.camel.management.event;
 import java.util.EventObject;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent.CamelContextEvent;
 
 /**
  * Base class for {@link CamelContext} events.
  */
-public abstract class AbstractContextEvent extends EventObject {
+public abstract class AbstractContextEvent extends EventObject implements CamelContextEvent {
     private static final long serialVersionUID = 1L;
     private CamelContext context;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
index 5573ce7..cba4d30 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
@@ -19,11 +19,12 @@ package org.apache.camel.management.event;
 import java.util.EventObject;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 
 /**
  * Base class for {@link Exchange} events.
  */
-public abstract class AbstractExchangeEvent extends EventObject {
+public abstract class AbstractExchangeEvent extends EventObject implements ExchangeEvent {
     private static final long serialVersionUID = 1L;
     private final Exchange exchange;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
index be0ce89..b003264 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
@@ -20,11 +20,12 @@ import java.util.EventObject;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Route;
+import org.apache.camel.spi.CamelEvent.RouteEvent;
 
 /**
  * Base class for {@link CamelContext} events.
  */
-public abstract class AbstractRouteEvent extends EventObject {
+public abstract class AbstractRouteEvent extends EventObject implements RouteEvent {
     private static final long serialVersionUID = 1L;
     private Route route;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
index a13718f..f5c8e1b 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextResumeFailureEvent extends AbstractContextEvent implements FailureEvent {
+public class CamelContextResumeFailureEvent extends AbstractContextEvent implements CamelEvent.CamelContextResumeFailureEvent {
     private static final long serialVersionUID = -4271899927507894566L;
 
     private Throwable cause;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
index 1c0fee6..ad736a7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextResumedEvent extends AbstractContextEvent {
+public class CamelContextResumedEvent extends AbstractContextEvent implements CamelEvent.CamelContextResumedEvent {
     private static final long serialVersionUID = 6761726800283234512L;
 
     public CamelContextResumedEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
index e7d4375..05c2793 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextResumingEvent extends AbstractContextEvent {
+public class CamelContextResumingEvent extends AbstractContextEvent implements CamelEvent.CamelContextResumingEvent {
     private static final long serialVersionUID = 6761726800283234511L;
 
     public CamelContextResumingEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
index 5ee2aeb..865a61d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextStartedEvent extends AbstractContextEvent {
+public class CamelContextStartedEvent extends AbstractContextEvent implements CamelEvent.CamelContextStartedEvent {
     private static final long serialVersionUID = 6761726800283073490L;
 
     public CamelContextStartedEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
index 769d5e8..6422da7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextStartingEvent extends AbstractContextEvent {
+public class CamelContextStartingEvent extends AbstractContextEvent implements CamelEvent.CamelContextStartingEvent {
     private static final long serialVersionUID = -1120225323715688981L;
 
     public CamelContextStartingEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
index 243913f..4392fa1 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextStartupFailureEvent extends AbstractContextEvent implements FailureEvent {
+public class CamelContextStartupFailureEvent extends AbstractContextEvent implements CamelEvent.CamelContextStartupFailureEvent {
     private static final long serialVersionUID = -4271899927507894567L;
 
     private Throwable cause;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
index cee25d0..ed53ada 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextStopFailureEvent extends AbstractContextEvent implements FailureEvent {
+public class CamelContextStopFailureEvent extends AbstractContextEvent implements CamelEvent.CamelContextStopFailureEvent {
     private static final long serialVersionUID = -802046840118188292L;
 
     private Throwable cause;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
index d2862b6..9ff2c2f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextStoppedEvent extends AbstractContextEvent {
+public class CamelContextStoppedEvent extends AbstractContextEvent implements CamelEvent.CamelContextStoppedEvent {
     private static final long serialVersionUID = -8406258841784891998L;
 
     public CamelContextStoppedEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
index 10723ff..9a38c35 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextStoppingEvent extends AbstractContextEvent {
+public class CamelContextStoppingEvent extends AbstractContextEvent implements CamelEvent.CamelContextStoppingEvent {
     private static final long serialVersionUID = -1074581102102126334L;
 
     public CamelContextStoppingEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
index 98219d5..697df31 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextSuspendedEvent extends AbstractContextEvent {
+public class CamelContextSuspendedEvent extends AbstractContextEvent implements CamelEvent.CamelContextSuspendedEvent {
     private static final long serialVersionUID = 6761726800283072242L;
 
     public CamelContextSuspendedEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
index c10c42b..26ecafb 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class CamelContextSuspendingEvent extends AbstractContextEvent {
+public class CamelContextSuspendingEvent extends AbstractContextEvent implements CamelEvent.CamelContextSuspendingEvent{
     private static final long serialVersionUID = 6761726800283072241L;
 
     public CamelContextSuspendingEvent(CamelContext source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java b/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
index 696437b..53aa7ac 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
@@ -16,14 +16,13 @@
  */
 package org.apache.camel.management.event;
 
-import java.util.EventObject;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.DelegateProcessor;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventFactory;
 
 /**
@@ -31,67 +30,67 @@ import org.apache.camel.spi.EventFactory;
  */
 public class DefaultEventFactory implements EventFactory {
 
-    public EventObject createCamelContextStartingEvent(CamelContext context) {
+    public CamelEvent createCamelContextStartingEvent(CamelContext context) {
         return new CamelContextStartingEvent(context);
     }
 
-    public EventObject createCamelContextStartedEvent(CamelContext context) {
+    public CamelEvent createCamelContextStartedEvent(CamelContext context) {
         return new CamelContextStartedEvent(context);
     }
 
-    public EventObject createCamelContextStoppingEvent(CamelContext context) {
+    public CamelEvent createCamelContextStoppingEvent(CamelContext context) {
         return new CamelContextStoppingEvent(context);
     }
 
-    public EventObject createCamelContextStoppedEvent(CamelContext context) {
+    public CamelEvent createCamelContextStoppedEvent(CamelContext context) {
         return new CamelContextStoppedEvent(context);
     }
 
-    public EventObject createCamelContextStartupFailureEvent(CamelContext context, Throwable cause) {
+    public CamelEvent createCamelContextStartupFailureEvent(CamelContext context, Throwable cause) {
         return new CamelContextStartupFailureEvent(context, cause);
     }
 
-    public EventObject createCamelContextStopFailureEvent(CamelContext context, Throwable cause) {
+    public CamelEvent createCamelContextStopFailureEvent(CamelContext context, Throwable cause) {
         return new CamelContextStopFailureEvent(context, cause);
     }
 
-    public EventObject createServiceStartupFailureEvent(CamelContext context, Object service, Throwable cause) {
+    public CamelEvent createServiceStartupFailureEvent(CamelContext context, Object service, Throwable cause) {
         return new ServiceStartupFailureEvent(context, service, cause);
     }
 
-    public EventObject createServiceStopFailureEvent(CamelContext context, Object service, Throwable cause) {
+    public CamelEvent createServiceStopFailureEvent(CamelContext context, Object service, Throwable cause) {
         return new ServiceStopFailureEvent(context, service, cause);
     }
 
-    public EventObject createRouteStartedEvent(Route route) {
+    public CamelEvent createRouteStartedEvent(Route route) {
         return new RouteStartedEvent(route);
     }
 
-    public EventObject createRouteStoppedEvent(Route route) {
+    public CamelEvent createRouteStoppedEvent(Route route) {
         return new RouteStoppedEvent(route);
     }
 
-    public EventObject createRouteAddedEvent(Route route) {
+    public CamelEvent createRouteAddedEvent(Route route) {
         return new RouteAddedEvent(route);
     }
 
-    public EventObject createRouteRemovedEvent(Route route) {
+    public CamelEvent createRouteRemovedEvent(Route route) {
         return new RouteRemovedEvent(route);
     }
 
-    public EventObject createExchangeCreatedEvent(Exchange exchange) {
+    public CamelEvent createExchangeCreatedEvent(Exchange exchange) {
         return new ExchangeCreatedEvent(exchange);
     }
 
-    public EventObject createExchangeCompletedEvent(Exchange exchange) {
+    public CamelEvent createExchangeCompletedEvent(Exchange exchange) {
         return new ExchangeCompletedEvent(exchange);
     }
 
-    public EventObject createExchangeFailedEvent(Exchange exchange) {
+    public CamelEvent createExchangeFailedEvent(Exchange exchange) {
         return new ExchangeFailedEvent(exchange);
     }
 
-    public EventObject createExchangeFailureHandlingEvent(Exchange exchange, Processor failureHandler, boolean deadLetterChannel, String deadLetterUri) {
+    public CamelEvent createExchangeFailureHandlingEvent(Exchange exchange, Processor failureHandler, boolean deadLetterChannel, String deadLetterUri) {
         // unwrap delegate processor
         Processor handler = failureHandler;
         if (handler instanceof DelegateProcessor) {
@@ -100,7 +99,7 @@ public class DefaultEventFactory implements EventFactory {
         return new ExchangeFailureHandlingEvent(exchange, handler, deadLetterChannel, deadLetterUri);
     }
 
-    public EventObject createExchangeFailureHandledEvent(Exchange exchange, Processor failureHandler,
+    public CamelEvent createExchangeFailureHandledEvent(Exchange exchange, Processor failureHandler,
                                                          boolean deadLetterChannel, String deadLetterUri) {
         // unwrap delegate processor
         Processor handler = failureHandler;
@@ -110,35 +109,35 @@ public class DefaultEventFactory implements EventFactory {
         return new ExchangeFailureHandledEvent(exchange, handler, deadLetterChannel, deadLetterUri);
     }
 
-    public EventObject createExchangeRedeliveryEvent(Exchange exchange, int attempt) {
+    public CamelEvent createExchangeRedeliveryEvent(Exchange exchange, int attempt) {
         return new ExchangeRedeliveryEvent(exchange, attempt);
     }
 
-    public EventObject createExchangeSendingEvent(Exchange exchange, Endpoint endpoint) {
+    public CamelEvent createExchangeSendingEvent(Exchange exchange, Endpoint endpoint) {
         return new ExchangeSendingEvent(exchange, endpoint);
     }
 
-    public EventObject createExchangeSentEvent(Exchange exchange, Endpoint endpoint, long timeTaken) {
+    public CamelEvent createExchangeSentEvent(Exchange exchange, Endpoint endpoint, long timeTaken) {
         return new ExchangeSentEvent(exchange, endpoint, timeTaken);
     }
 
-    public EventObject createCamelContextSuspendingEvent(CamelContext context) {
+    public CamelEvent createCamelContextSuspendingEvent(CamelContext context) {
         return new CamelContextSuspendingEvent(context);
     }
 
-    public EventObject createCamelContextSuspendedEvent(CamelContext context) {
+    public CamelEvent createCamelContextSuspendedEvent(CamelContext context) {
         return new CamelContextSuspendedEvent(context);
     }
 
-    public EventObject createCamelContextResumingEvent(CamelContext context) {
+    public CamelEvent createCamelContextResumingEvent(CamelContext context) {
         return new CamelContextResumingEvent(context);
     }
 
-    public EventObject createCamelContextResumedEvent(CamelContext context) {
+    public CamelEvent createCamelContextResumedEvent(CamelContext context) {
         return new CamelContextResumedEvent(context);
     }
 
-    public EventObject createCamelContextResumeFailureEvent(CamelContext context, Throwable cause) {
+    public CamelEvent createCamelContextResumeFailureEvent(CamelContext context, Throwable cause) {
         return new CamelContextResumeFailureEvent(context, cause);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
index f73aab1..1b1ad57 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelEvent;
 
-public class ExchangeCompletedEvent extends AbstractExchangeEvent {
+public class ExchangeCompletedEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeCompletedEvent {
     private static final long serialVersionUID = -3231801412021356098L;
 
     public ExchangeCompletedEvent(Exchange source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
index 761354f..1b7f1d5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
@@ -17,6 +17,7 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelEvent;
 
 /**
  * Event after an {@link Exchange} has been created.
@@ -25,7 +26,7 @@ import org.apache.camel.Exchange;
  * therefore its not guaranteed this event is the first event being send for a given {@link Exchange}
  * lifecycle.
  */
-public class ExchangeCreatedEvent extends AbstractExchangeEvent {
+public class ExchangeCreatedEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeCreatedEvent {
     private static final long serialVersionUID = -19248832613958243L;
 
     public ExchangeCreatedEvent(Exchange source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
index 1a4bd3a..0dcf2cb 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelEvent;
 
-public class ExchangeFailedEvent extends AbstractExchangeEvent implements FailureEvent {
+public class ExchangeFailedEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeFailedEvent  {
     private static final long serialVersionUID = -8484326904627268101L;
 
     public ExchangeFailedEvent(Exchange source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
index b4ad79e..7e683f0 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
@@ -18,9 +18,10 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.util.URISupport;
 
-public class ExchangeFailureHandledEvent extends AbstractExchangeEvent {
+public class ExchangeFailureHandledEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeFailureHandledEvent {
     private static final long serialVersionUID = -7554809462006009548L;
 
     private final transient Processor failureHandler;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
index 99e5093..1c2228e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
@@ -18,9 +18,10 @@ package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.util.URISupport;
 
-public class ExchangeFailureHandlingEvent extends AbstractExchangeEvent {
+public class ExchangeFailureHandlingEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeFailureHandlingEvent  {
     private static final long serialVersionUID = -7554809462006009549L;
 
     private final transient Processor failureHandler;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
index c5af078..53910e9 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelEvent;
 
-public class ExchangeRedeliveryEvent extends AbstractExchangeEvent {
+public class ExchangeRedeliveryEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeRedeliveryEvent {
     private static final long serialVersionUID = -19248832613958122L;
 
     private final int attempt;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
index 9a502b5..23d9702 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
@@ -20,6 +20,7 @@ import java.util.EventObject;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelEvent;
 
 /**
  * Event for <b>before</b> sending an {@link Exchange} to an {@link Endpoint}.
@@ -32,12 +33,12 @@ import org.apache.camel.Exchange;
  * The {@link ExchangeSentEvent} is an event which is emitted <b>after</b> the sending is done.
  * <p/>
  * These two events (sending and sent) come in a pair, and therefore you need to make sure to return
- * <tt>true</tt> for both events in the {@link org.apache.camel.spi.EventNotifier#isEnabled(EventObject)}
+ * <tt>true</tt> for both events in the {@link org.apache.camel.spi.EventNotifier#isEnabled(CamelEvent)}
  * method to receive events for either of them.
  *
  * @see ExchangeSentEvent
  */
-public class ExchangeSendingEvent extends AbstractExchangeEvent {
+public class ExchangeSendingEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeSendingEvent {
     private static final long serialVersionUID = -19248832613958122L;
 
     private final Endpoint endpoint;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
index aba3f7a..3805eb6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
@@ -16,22 +16,21 @@
  */
 package org.apache.camel.management.event;
 
-import java.util.EventObject;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelEvent;
 
 /**
  * Event for <b>after</b> an {@link Exchange} has been sent to an {@link Endpoint}.
  * The {@link ExchangeSentEvent} is an event which is emitted <b>after</b> the sending is done.
  * <p/>
  * These two events (sending and sent) come in a pair, and therefore you need to make sure to return
- * <tt>true</tt> for both events in the {@link org.apache.camel.spi.EventNotifier#isEnabled(EventObject)}
+ * <tt>true</tt> for both events in the {@link org.apache.camel.spi.EventNotifier#isEnabled(CamelEvent)}
  * method to receive events for either of them.
  *
  * @see ExchangeSendingEvent
  */
-public class ExchangeSentEvent extends AbstractExchangeEvent {
+public class ExchangeSentEvent extends AbstractExchangeEvent implements CamelEvent.ExchangeSentEvent {
     private static final long serialVersionUID = -19248832613958123L;
 
     private final Endpoint endpoint;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java
deleted file mode 100644
index 6c9a6f7..0000000
--- a/camel-core/src/main/java/org/apache/camel/management/event/FailureEvent.java
+++ /dev/null
@@ -1,26 +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.management.event;
-
-/**
- * This interface is implemented by all events that contain an exception and is used to
- * retrieve the exception in a universal way.
- *  
- */
-public interface FailureEvent {
-    Throwable getCause();
-}
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
index 095eb30..df5adf8 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
+import org.apache.camel.spi.CamelEvent;
 
-public class RouteAddedEvent extends AbstractRouteEvent {
+public class RouteAddedEvent extends AbstractRouteEvent implements CamelEvent.RouteAddedEvent {
 
     private static final long serialVersionUID = 9155960708789798708L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
index f579be4..d8ca90c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
+import org.apache.camel.spi.CamelEvent;
 
-public class RouteRemovedEvent extends AbstractRouteEvent {
+public class RouteRemovedEvent extends AbstractRouteEvent implements CamelEvent.RouteRemovedEvent {
 
     private static final long serialVersionUID = 7966471393751298719L;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
index b26a9d3..758d884 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
+import org.apache.camel.spi.CamelEvent;
 
-public class RouteStartedEvent extends AbstractRouteEvent {
+public class RouteStartedEvent extends AbstractRouteEvent implements CamelEvent.RouteStartedEvent {
     private static final long serialVersionUID = 1330257282431407329L;
 
     public RouteStartedEvent(Route source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
index ba0d0a6..ddb60fd 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
@@ -17,8 +17,9 @@
 package org.apache.camel.management.event;
 
 import org.apache.camel.Route;
+import org.apache.camel.spi.CamelEvent;
 
-public class RouteStoppedEvent extends AbstractRouteEvent {
+public class RouteStoppedEvent extends AbstractRouteEvent implements CamelEvent.RouteStoppedEvent {
     private static final long serialVersionUID = -4466503512787398888L;
 
     public RouteStoppedEvent(Route source) {
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
index 94c2a88..c3b3256 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
@@ -19,8 +19,9 @@ package org.apache.camel.management.event;
 import java.util.EventObject;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class ServiceStartupFailureEvent extends EventObject implements FailureEvent {
+public class ServiceStartupFailureEvent extends EventObject implements CamelEvent.ServiceStartupFailureEvent {
     private static final long serialVersionUID = -9171964933795931862L;
 
     private CamelContext context;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
index 98bf097..1486a54 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
@@ -19,8 +19,9 @@ package org.apache.camel.management.event;
 import java.util.EventObject;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
 
-public class ServiceStopFailureEvent extends EventObject implements FailureEvent {
+public class ServiceStopFailureEvent extends EventObject implements CamelEvent.ServiceStopFailureEvent {
     private static final long serialVersionUID = 4139591666998762617L;
 
     private CamelContext context;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index 0e72013..ff58f45 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -17,7 +17,6 @@
 package org.apache.camel.processor.interceptor;
 
 import java.util.Date;
-import java.util.EventObject;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
@@ -39,9 +38,10 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.api.management.mbean.BacklogTracerEventMessage;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.DefaultDebugger;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 import org.apache.camel.spi.Condition;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.InterceptStrategy;
@@ -590,7 +590,7 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
         }
 
         @Override
-        public boolean matchEvent(Exchange exchange, EventObject event) {
+        public boolean matchEvent(Exchange exchange, ExchangeEvent event) {
             return false;
         }
     }
@@ -637,15 +637,15 @@ public class BacklogDebugger extends ServiceSupport implements InterceptStrategy
         }
 
         @Override
-        public boolean matchEvent(Exchange exchange, EventObject event) {
+        public boolean matchEvent(Exchange exchange, ExchangeEvent event) {
             return event instanceof ExchangeCompletedEvent;
         }
 
         @Override
-        public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
+        public void onEvent(Exchange exchange, ExchangeEvent event, NamedNode definition) {
             // when the exchange is complete, we need to turn off single step mode if we were debug stepping the exchange
             if (event instanceof ExchangeCompletedEvent) {
-                String completedId = ((ExchangeCompletedEvent) event).getExchange().getExchangeId();
+                String completedId = event.getExchange().getExchangeId();
 
                 if (singleStepExchangeId != null && singleStepExchangeId.equals(completedId)) {
                     logger.log("ExchangeId: " + completedId + " is completed, so exiting single step mode.");
diff --git a/camel-core/src/main/java/org/apache/camel/support/EventHelper.java b/camel-core/src/main/java/org/apache/camel/support/EventHelper.java
index 79e651c..fb29075 100644
--- a/camel-core/src/main/java/org/apache/camel/support/EventHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/support/EventHelper.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.support;
 
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
@@ -25,6 +24,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.StatefulService;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventFactory;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementStrategy;
@@ -58,7 +58,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -97,7 +97,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -136,7 +136,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -175,7 +175,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -214,7 +214,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -253,7 +253,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -292,7 +292,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -331,7 +331,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -370,7 +370,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -409,7 +409,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -448,7 +448,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -487,7 +487,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -531,7 +531,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -577,7 +577,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -623,7 +623,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -670,7 +670,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -717,7 +717,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -763,7 +763,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -809,7 +809,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -855,7 +855,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         // optimise for loop using index access to avoid creating iterator object
         for (int i = 0; i < notifiers.size(); i++) {
             EventNotifier notifier = notifiers.get(i);
@@ -896,7 +896,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -935,7 +935,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -974,7 +974,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -1013,7 +1013,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -1052,7 +1052,7 @@ public final class EventHelper {
         }
 
         boolean answer = false;
-        EventObject event = null;
+        CamelEvent event = null;
         for (EventNotifier notifier : notifiers) {
             if (notifier.isDisabled()) {
                 continue;
@@ -1074,7 +1074,7 @@ public final class EventHelper {
         return answer;
     }
 
-    private static boolean doNotifyEvent(EventNotifier notifier, EventObject event) {
+    private static boolean doNotifyEvent(EventNotifier notifier, CamelEvent event) {
         // only notify if notifier is started
         boolean started = true;
         if (notifier instanceof StatefulService) {
diff --git a/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
index d662c50..5ecfa27 100644
--- a/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/throttling/ThrottlingInflightRoutePolicy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.throttling;
 
-import java.util.EventObject;
 import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.concurrent.locks.Lock;
@@ -28,7 +27,8 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Route;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.RoutePolicySupport;
@@ -277,7 +277,7 @@ public class ThrottlingInflightRoutePolicy extends RoutePolicySupport implements
     private class ContextScopedEventNotifier extends EventNotifierSupport {
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             ExchangeCompletedEvent completedEvent = (ExchangeCompletedEvent) event;
             for (Route route : routes) {
                 throttle(route, completedEvent.getExchange());
@@ -285,7 +285,7 @@ public class ThrottlingInflightRoutePolicy extends RoutePolicySupport implements
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeCompletedEvent;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/impl/FileWatcherReloadStrategyTest.java b/camel-core/src/test/java/org/apache/camel/impl/FileWatcherReloadStrategyTest.java
index 661e2c3..fca6202 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/FileWatcherReloadStrategyTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/FileWatcherReloadStrategyTest.java
@@ -17,14 +17,14 @@
 package org.apache.camel.impl;
 
 import java.io.File;
-import java.util.EventObject;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.event.RouteAddedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.RouteAddedEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.util.FileUtil;
 import org.junit.Test;
@@ -85,12 +85,12 @@ public class FileWatcherReloadStrategyTest extends ContextTestSupport {
         final CountDownLatch latch = new CountDownLatch(2);
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
             @Override
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 latch.countDown();
             }
 
             @Override
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return event instanceof RouteAddedEvent;
             }
         });
@@ -141,12 +141,12 @@ public class FileWatcherReloadStrategyTest extends ContextTestSupport {
         final CountDownLatch latch = new CountDownLatch(2);
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
             @Override
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 latch.countDown();
             }
 
             @Override
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return event instanceof RouteAddedEvent;
             }
         });
diff --git a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java
index f1b6017..1a9769c 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierIssueTest.java
@@ -16,14 +16,13 @@
  */
 package org.apache.camel.issues;
 
-import java.util.EventObject;
-
 import org.apache.camel.CamelContext;
 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.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.DefaultExchange;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
@@ -37,12 +36,12 @@ public class SentExchangeEventNotifierIssueTest extends ContextTestSupport {
         private int counter;
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             counter++;
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeSentEvent;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java
index 320114c..304e3e3 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/SentExchangeEventNotifierTwoIssueTest.java
@@ -23,7 +23,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.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.DefaultExchange;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
@@ -37,12 +38,12 @@ public class SentExchangeEventNotifierTwoIssueTest extends ContextTestSupport {
         private int counter;
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             counter++;
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeSentEvent;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
index ed2714c..a4e1405 100644
--- a/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/AddEventNotifierTest.java
@@ -21,6 +21,7 @@ import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
@@ -28,7 +29,7 @@ import org.junit.Test;
 
 public class AddEventNotifierTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
     private EventNotifier notifier;
 
     @Override
@@ -48,11 +49,11 @@ public class AddEventNotifierTest extends ContextTestSupport {
 
         // we should be able to add after CamelContext has been started
         notifier = new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
index 8ddbcc3..cd2dada 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
@@ -40,13 +40,14 @@ import org.apache.camel.management.event.RouteAddedEvent;
 import org.apache.camel.management.event.RouteRemovedEvent;
 import org.apache.camel.management.event.RouteStartedEvent;
 import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
 
 public class EventNotifierEventsTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
 
     @Override
     @Before
@@ -59,11 +60,11 @@ public class EventNotifierEventsTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java
index 218b32b..120faa0 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 package org.apache.camel.management;
+
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
@@ -25,13 +25,14 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.management.event.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
 
 public class EventNotifierExchangeCompletedTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
 
     @Override
     @Before
@@ -44,11 +45,11 @@ public class EventNotifierExchangeCompletedTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 // we only want the completed event
                 return event instanceof ExchangeCompletedEvent;
                 // you can add additional filtering such as the exchange
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java
index d031fba..aa32660 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java
@@ -16,10 +16,9 @@
  */
 package org.apache.camel.management;
 
-import java.util.EventObject;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.management.event.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.junit.Test;
 
 public class EventNotifierExchangeSentParallelTest extends EventNotifierExchangeSentTest {
@@ -42,7 +41,7 @@ public class EventNotifierExchangeSentParallelTest extends EventNotifierExchange
         // we run parallel so just assert we got 6 sending and 6 sent events
         int sent = 0;
         int sending = 0;
-        for (EventObject event : events) {
+        for (CamelEvent event : events) {
             if (event instanceof ExchangeSendingEvent) {
                 sending++;
             } else {
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
index b4cc8c6..bdd12ef 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
@@ -15,8 +15,8 @@
  * limitations under the License.
  */
 package org.apache.camel.management;
+
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
@@ -26,6 +26,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
@@ -34,7 +35,7 @@ import static org.awaitility.Awaitility.await;
 
 public class EventNotifierExchangeSentTest extends ContextTestSupport {
 
-    protected static List<EventObject> events = new ArrayList<>();
+    protected static List<CamelEvent> events = new ArrayList<>();
 
     @Override
     @Before
@@ -47,11 +48,11 @@ public class EventNotifierExchangeSentTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
@@ -163,7 +164,7 @@ public class EventNotifierExchangeSentTest extends ContextTestSupport {
         // which runs async so they can be in random order
         boolean found = false;
         boolean found2 = false;
-        for (EventObject event : events) {
+        for (CamelEvent event : events) {
             if (event instanceof ExchangeSendingEvent) {
                 ExchangeSendingEvent sending = (ExchangeSendingEvent) event;
                 String uri = sending.getEndpoint().getEndpointUri();
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
index 2b6f1e4..7e041d9 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
@@ -34,13 +34,14 @@ import org.apache.camel.management.event.ExchangeSentEvent;
 import org.apache.camel.management.event.RouteAddedEvent;
 import org.apache.camel.management.event.RouteStartedEvent;
 import org.apache.camel.processor.SendProcessor;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
 
 public class EventNotifierFailureHandledEventsTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
 
     @Override
     @Before
@@ -58,11 +59,11 @@ public class EventNotifierFailureHandledEventsTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java
index f057cb2..18670e8 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java
@@ -15,8 +15,8 @@
  * limitations under the License.
  */
 package org.apache.camel.management;
+
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
@@ -30,13 +30,14 @@ import org.apache.camel.management.event.ExchangeFailureHandlingEvent;
 import org.apache.camel.management.event.ExchangeRedeliveryEvent;
 import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
 
 public class EventNotifierRedeliveryEventsTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
 
     @Override
     @Before
@@ -54,11 +55,11 @@ public class EventNotifierRedeliveryEventsTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java b/camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java
index 5e08efb..88e59ac 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java
@@ -27,13 +27,14 @@ import org.apache.camel.management.event.CamelContextStartingEvent;
 import org.apache.camel.management.event.CamelContextStoppedEvent;
 import org.apache.camel.management.event.CamelContextStoppingEvent;
 import org.apache.camel.management.event.ServiceStopFailureEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
 
 public class EventNotifierServiceStoppingFailedEventTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
     private static String stopOrder;
 
     @Override
@@ -51,11 +52,11 @@ public class EventNotifierServiceStoppingFailedEventTest extends ContextTestSupp
         context.addService(new MyService("C", false));
 
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
index a8c6fb0..24f6a027 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextRestartTest.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 package org.apache.camel.management;
-import java.util.EventObject;
 
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
@@ -39,11 +39,11 @@ public class ManagedCamelContextRestartTest extends ManagementTestSupport {
 
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
             @Override
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 // Empty.
             }
             @Override
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
             @Override
diff --git a/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
index a66f81c..199f0b7 100644
--- a/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
@@ -36,14 +36,15 @@ import org.apache.camel.management.event.RouteAddedEvent;
 import org.apache.camel.management.event.RouteRemovedEvent;
 import org.apache.camel.management.event.RouteStartedEvent;
 import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
 import org.junit.Test;
 
 public class MultipleEventNotifierEventsTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
-    private static List<EventObject> events2 = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
+    private static List<CamelEvent> events2 = new ArrayList<>();
 
     @Override
     protected boolean useJmx() {
@@ -62,11 +63,11 @@ public class MultipleEventNotifierEventsTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
@@ -79,11 +80,11 @@ public class MultipleEventNotifierEventsTest extends ContextTestSupport {
             }
         });
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events2.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
index ac847d9..9cd573e 100644
--- a/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/RemoveEventNotifierTest.java
@@ -15,14 +15,15 @@
  * limitations under the License.
  */
 package org.apache.camel.management;
+
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
@@ -30,7 +31,7 @@ import org.junit.Test;
 
 public class RemoveEventNotifierTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
     private EventNotifier notifier;
 
     @Override
@@ -45,11 +46,11 @@ public class RemoveEventNotifierTest extends ContextTestSupport {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
 
         notifier = new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return true;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentTest.java b/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentTest.java
index ad37466..41a09ba 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/EventNotifierExchangeSentTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.junit.Test;
 
 public class EventNotifierExchangeSentTest extends ContextTestSupport {
diff --git a/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java b/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java
index f6ff8ae..d958be7 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/MyLoggingSentEventNotifer.java
@@ -16,15 +16,14 @@
  */
 package org.apache.camel.processor;
 
-import java.util.EventObject;
-
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.EventNotifierSupport;
 
 // START SNIPPET: e1
 public class MyLoggingSentEventNotifer extends EventNotifierSupport {
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         // react only when its the sent event
         if (event instanceof ExchangeSentEvent) {
             ExchangeSentEvent sent = (ExchangeSentEvent) event;
@@ -33,7 +32,7 @@ public class MyLoggingSentEventNotifer extends EventNotifierSupport {
 
     }
 
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java b/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java
index 815eb36..1ee8d5d 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/MySentEventNotifier.java
@@ -17,27 +17,27 @@
 package org.apache.camel.processor;
 
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.EventNotifierSupport;
 
 public class MySentEventNotifier extends EventNotifierSupport {
 
-    private final List<EventObject> events = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
 
-    public List<EventObject> getEvents() {
+    public List<CamelEvent> getEvents() {
         return events;
     }
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         if (event instanceof ExchangeSentEvent) {
             events.add(event);
         }
     }
 
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java b/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
index d93e482..b2f6247 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
@@ -185,6 +185,11 @@ public class PipelineStepWithEventTest extends ContextTestSupport {
             this.id = id;
         }
 
+        @Override
+        public Type getType() {
+            return Type.Custom;
+        }
+
         public String getId() {
             return id;
         }
@@ -201,6 +206,11 @@ public class PipelineStepWithEventTest extends ContextTestSupport {
             this.timeTaken = timeTaken;
         }
 
+        @Override
+        public Type getType() {
+            return Type.Custom;
+        }
+
         public String getId() {
             return id;
         }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java b/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java
index cc28514..347c103 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/SplitterUseOriginalNotPropagateExceptionTest.java
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.processor;
 
-import java.util.EventObject;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.AggregationStrategies;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.event.ExchangeFailedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeFailedEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
 
@@ -78,12 +77,12 @@ public class SplitterUseOriginalNotPropagateExceptionTest extends ContextTestSup
         private int errors;
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             errors++;
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeFailedEvent;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java b/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java
index 7905776..25a52fb 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/UnitOfWorkProducerTest.java
@@ -15,32 +15,33 @@
  * limitations under the License.
  */
 package org.apache.camel.processor;
+
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.After;
 import org.junit.Test;
 
 public class UnitOfWorkProducerTest extends ContextTestSupport {
 
-    private static List<EventObject> events = new ArrayList<>();
+    private static List<CamelEvent> events = new ArrayList<>();
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return event instanceof ExchangeCompletedEvent;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java
index d4d75a4..d195735 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierSendingTest.java
@@ -17,21 +17,21 @@
 package org.apache.camel.processor.async;
 
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
 
 public class AsyncEndpointEventNotifierSendingTest extends ContextTestSupport {
 
-    private final List<EventObject> events = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
 
     @Test
     public void testAsyncEndpointEventNotifier() throws Exception {
@@ -59,11 +59,11 @@ public class AsyncEndpointEventNotifierSendingTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 events.add(event);
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
             }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java
index 2e1d9cb..ad619a8 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointEventNotifierTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.processor.async;
 
-import java.util.EventObject;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
@@ -25,7 +24,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
 
@@ -55,7 +55,7 @@ public class AsyncEndpointEventNotifierTest extends ContextTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
         context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
-            public void notify(EventObject event) throws Exception {
+            public void notify(CamelEvent event) throws Exception {
                 try {
                     ExchangeSentEvent sent = (ExchangeSentEvent) event;
                     time.set(sent.getTimeTaken());
@@ -64,7 +64,7 @@ public class AsyncEndpointEventNotifierTest extends ContextTestSupport {
                 }
             }
 
-            public boolean isEnabled(EventObject event) {
+            public boolean isEnabled(CamelEvent event) {
                 // we only want the async endpoint
                 if (event instanceof ExchangeSentEvent) {
                     ExchangeSentEvent sent = (ExchangeSentEvent) event;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java
index 120431a..f631ecf 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherSendEventTest.java
@@ -24,9 +24,10 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.management.DefaultManagementStrategy;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
 import org.apache.camel.processor.async.MyAsyncComponent;
+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.ManagementStrategy;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.support.EventNotifierSupport;
@@ -94,7 +95,7 @@ public class EnricherSendEventTest extends ContextTestSupport {
       
         
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             
             if (event instanceof ExchangeSendingEvent) {
                 exchangeSendingEvent.incrementAndGet();
@@ -104,7 +105,7 @@ public class EnricherSendEventTest extends ContextTestSupport {
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return true;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
index 0486794..8f5449d 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
@@ -27,9 +27,10 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.ConditionSupport;
 import org.apache.camel.impl.DefaultDebugger;
-import org.apache.camel.management.event.AbstractExchangeEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
 import org.apache.camel.spi.Breakpoint;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
+import org.apache.camel.spi.CamelEvent.Type;
 import org.apache.camel.spi.Condition;
 import org.junit.Before;
 import org.junit.Test;
@@ -47,16 +48,15 @@ public class DebugExceptionEventBreakpointTest extends ContextTestSupport {
         super.setUp();
 
         breakpoint = new BreakpointSupport() {
-            public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
-                AbstractExchangeEvent aee = (AbstractExchangeEvent) event;
-                Exception e = aee.getExchange().getException();
+            public void onEvent(Exchange exchange, ExchangeEvent event, NamedNode definition) {
+                Exception e = event.getExchange().getException();
                 logs.add("Breakpoint at " + definition + " caused by: " + e.getClass().getSimpleName() + "[" + e.getMessage() + "]");
             }
         };
 
         exceptionCondition = new ConditionSupport() {
-            public boolean matchEvent(Exchange exchange, EventObject event) {
-                return event instanceof ExchangeFailedEvent;
+            public boolean matchEvent(Exchange exchange, ExchangeEvent event) {
+                return event.getType() == Type.ExchangeFailed;
             }
         };
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
index b25db3f..6d9aced 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
@@ -28,9 +28,10 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.BreakpointSupport;
 import org.apache.camel.impl.ConditionSupport;
 import org.apache.camel.impl.DefaultDebugger;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.spi.Breakpoint;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
+import org.apache.camel.spi.CamelEvent.Type;
 import org.apache.camel.spi.Condition;
 import org.junit.Before;
 import org.junit.Test;
@@ -55,7 +56,7 @@ public class DebugTest extends ContextTestSupport {
                 logs.add("Breakpoint at " + definition + " with body: " + body);
             }
 
-            public void onEvent(Exchange exchange, EventObject event, NamedNode definition) {
+            public void onEvent(Exchange exchange, ExchangeEvent event, NamedNode definition) {
                 String body = exchange.getIn().getBody(String.class);
                 logs.add("Breakpoint event " + event.getClass().getSimpleName() + " with body: " + body);
             }
@@ -80,8 +81,8 @@ public class DebugTest extends ContextTestSupport {
 
         doneCondition = new ConditionSupport() {
             @Override
-            public boolean matchEvent(Exchange exchange, EventObject event) {
-                return event instanceof ExchangeCompletedEvent;
+            public boolean matchEvent(Exchange exchange, ExchangeEvent event) {
+                return event.getType() == Type.ExchangeCompleted;
             }
         };
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java
index 6ed510e..7d57743 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/DynamicRouterEventNotifierTest.java
@@ -16,16 +16,15 @@
  */
 package org.apache.camel.processor.routingslip;
 
-import java.util.EventObject;
-
 import org.apache.camel.Body;
 import org.apache.camel.CamelContext;
 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.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
 
@@ -82,7 +81,7 @@ public class DynamicRouterEventNotifierTest extends ContextTestSupport {
         private int sent;
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             if (event instanceof ExchangeSendingEvent) {
                 log.info("Sending: {}", event);
                 sending++;
@@ -92,7 +91,7 @@ public class DynamicRouterEventNotifierTest extends ContextTestSupport {
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java
index ee01ce8..b1e10d5 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RecipientListEventNotifierTest.java
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.processor.routingslip;
 
-import java.util.EventObject;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
 
@@ -66,7 +65,7 @@ public class RecipientListEventNotifierTest extends ContextTestSupport {
         private int sent;
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             if (event instanceof ExchangeSendingEvent) {
                 sending++;
             } else {
@@ -75,7 +74,7 @@ public class RecipientListEventNotifierTest extends ContextTestSupport {
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java
index 22adf3f..ba55a70 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipEventNotifierTest.java
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.processor.routingslip;
 
-import java.util.EventObject;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
 
@@ -66,7 +65,7 @@ public class RoutingSlipEventNotifierTest extends ContextTestSupport {
         private int sent;
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             if (event instanceof ExchangeSendingEvent) {
                 log.info("Sending: {}", event);
                 sending++;
@@ -76,7 +75,7 @@ public class RoutingSlipEventNotifierTest extends ContextTestSupport {
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
diff --git a/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java
index 113b4fa..6a6d87b 100644
--- a/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java
@@ -16,15 +16,13 @@
  */
 package org.apache.camel.util;
 
-import java.util.EventObject;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
-import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.Type;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Test;
 
@@ -130,18 +128,18 @@ public class EventHelperTest {
         AtomicInteger camelContextStoppingEvent = new AtomicInteger();
         
         @Override
-        public void notify(EventObject event) throws Exception {
-            if (event instanceof RouteStartedEvent) {
+        public void notify(CamelEvent event) throws Exception {
+            if (event.getType() == Type.RouteStarted) {
                 routeStartedEvent.incrementAndGet();
-            } else if (event instanceof RouteStoppedEvent) {
+            } else if (event.getType() == Type.RouteStopped) {
                 routeStoppedEvent.incrementAndGet();
-            } else if (event instanceof CamelContextStoppingEvent) {
+            } else if (event.getType() == Type.CamelContextStopping) {
                 camelContextStoppingEvent.incrementAndGet();
             }
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return true;
         }
 
diff --git a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
index bbf0ed4..af584d9 100644
--- a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
+++ b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
@@ -41,8 +41,9 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StaticService;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+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.InterceptStrategy;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
@@ -246,8 +247,8 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
      * information collected by AWS XRay will not be available within that new thread!
      * <p/>
      * As  {@link ExchangeSendingEvent} and {@link ExchangeSentEvent} both are executed within the
-     * invoking thread (in contrast to {@link org.apache.camel.management.event.ExchangeCreatedEvent
-     * ExchangeCreatedEvent} and {@link org.apache.camel.management.event.ExchangeCompletedEvent
+     * invoking thread (in contrast to {@link org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent
+     * ExchangeCreatedEvent} and {@link org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent
      * ExchangeCompletedEvent} which both run in the context of the spawned thread), adding further
      * subsegments by this {@link org.apache.camel.spi.EventNotifier EventNotifier} implementation
      * should be safe.
@@ -255,7 +256,7 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
     private final class XRayEventNotifier extends EventNotifierSupport {
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
 
             if (event instanceof ExchangeSendingEvent) {
                 ExchangeSendingEvent ese = (ExchangeSendingEvent) event;
@@ -323,7 +324,7 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             // listen for either when an exchange invoked an other endpoint
             return event instanceof ExchangeSendingEvent
                     || event instanceof ExchangeSentEvent;
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
index 8830514..a6255d6 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
@@ -76,9 +76,9 @@ import org.apache.camel.RoutesBuilder;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.AbstractExchangeEvent;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteContainer;
+import org.apache.camel.spi.CamelEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -204,11 +204,11 @@ public class CdiCamelExtension implements Extension {
                 .collect(toSet())));
     }
 
-    private <T extends EventObject> void camelEventNotifiers(@Observes ProcessObserverMethod<T, ?> pom) {
+    private <T extends CamelEvent> void camelEventNotifiers(@Observes ProcessObserverMethod<T, ?> pom) {
         // Only activate Camel event notifiers for explicit Camel event observers, that is, an observer method for a super type won't activate notifiers.
         Type type = pom.getObserverMethod().getObservedType();
         // Camel events are raw types
-        if (type instanceof Class && Class.class.cast(type).getPackage().equals(AbstractExchangeEvent.class.getPackage())) {
+        if (type instanceof Class && CamelEvent.class.isAssignableFrom(Class.class.cast(type))) {
             Set<Annotation> qualifiers = pom.getObserverMethod().getObservedQualifiers();
             if (qualifiers.isEmpty()) {
                 eventQualifiers.add(ANY);
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventConsumer.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventConsumer.java
index 4345c45..ac2ad76 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventConsumer.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventConsumer.java
@@ -19,8 +19,8 @@ package org.apache.camel.cdi;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
 import org.apache.camel.support.DefaultConsumer;
-import org.apache.camel.management.event.AbstractExchangeEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,7 +55,7 @@ final class CdiEventConsumer<T> extends DefaultConsumer {
         exchange.getIn().setBody(event);
 
         // Avoid infinite loop of exchange events
-        if (event instanceof AbstractExchangeEvent) {
+        if (event instanceof ExchangeEvent) {
             exchange.setProperty(Exchange.NOTIFY_EVENT, Boolean.TRUE);
         }
         try {
@@ -63,7 +63,7 @@ final class CdiEventConsumer<T> extends DefaultConsumer {
         } catch (Exception cause) {
             throw new RuntimeExchangeException("Error while processing CDI event", exchange, cause);
         } finally {
-            if (event instanceof AbstractExchangeEvent) {
+            if (event instanceof ExchangeEvent) {
                 exchange.setProperty(Exchange.NOTIFY_EVENT, Boolean.FALSE);
             }
         }
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventNotifier.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventNotifier.java
index 1fba23b..19f6572 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventNotifier.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiEventNotifier.java
@@ -20,14 +20,12 @@ import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.EventObject;
 import java.util.List;
+
 import javax.enterprise.inject.spi.BeanManager;
 
-import org.apache.camel.management.event.RouteAddedEvent;
-import org.apache.camel.management.event.RouteRemovedEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
-import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.RouteEvent;
 import org.apache.camel.support.EventNotifierSupport;
 
 import static org.apache.camel.util.ObjectHelper.isNotEmpty;
@@ -45,17 +43,11 @@ final class CdiEventNotifier extends EventNotifierSupport {
     }
 
     @Override
-    public void notify(EventObject event) {
+    public void notify(CamelEvent event) {
         String id = null;
 
-        if (event instanceof RouteAddedEvent) {
-            id = ((RouteAddedEvent) event).getRoute().getId();
-        } else if (event instanceof RouteStartedEvent) {
-            id = ((RouteStartedEvent) event).getRoute().getId();
-        } else if (event instanceof RouteStoppedEvent) {
-            id = ((RouteStoppedEvent) event).getRoute().getId();
-        } else if (event instanceof RouteRemovedEvent) {
-            id = ((RouteRemovedEvent) event).getRoute().getId();
+        if (event instanceof RouteEvent) {
+            id = ((RouteEvent) event).getRoute().getId();
         }
 
         if (isNotEmpty(id)) {
@@ -69,7 +61,7 @@ final class CdiEventNotifier extends EventNotifierSupport {
     }
 
     @Override
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 }
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventEndpointTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventEndpointTest.java
index f298546..634eae5 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventEndpointTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventEndpointTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.cdi.test;
 
 import java.util.EventObject;
+
 import javax.inject.Inject;
 
 import org.apache.camel.builder.RouteBuilder;
@@ -24,12 +25,12 @@ import org.apache.camel.cdi.CdiCamelExtension;
 import org.apache.camel.cdi.CdiEventEndpoint;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent.RouteStartedEvent;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.Archive;
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventNotifierTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventNotifierTest.java
index 8b7d64d..6221171 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventNotifierTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelEventNotifierTest.java
@@ -30,15 +30,15 @@ import org.apache.camel.cdi.CdiCamelExtension;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.cdi.bean.SimpleCamelRoute;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.event.AbstractExchangeEvent;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStartingEvent;
-import org.apache.camel.management.event.CamelContextStoppedEvent;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartingEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStoppedEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStoppingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.arquillian.junit.InSequence;
@@ -76,8 +76,8 @@ public class CamelEventNotifierTest {
         events.add(CamelContextStartedEvent.class);
     }
 
-    private void onExchangeEvent(@Observes AbstractExchangeEvent event, List<Class> events) {
-        events.add(event.getClass());
+    private void onExchangeEvent(@Observes ExchangeEvent event, List<Class> events) {
+        events.add(event.getClass().getInterfaces()[0]);
     }
 
     private void onCamelContextStoppingEvent(@Observes CamelContextStoppingEvent event, List<Class> events) {
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelRouteEventNotifierTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelRouteEventNotifierTest.java
index 30e159c..2866f6a 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelRouteEventNotifierTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/CamelRouteEventNotifierTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.cdi.test;
 
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import javax.enterprise.context.ApplicationScoped;
@@ -29,10 +28,11 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.cdi.CdiCamelExtension;
 import org.apache.camel.cdi.bean.OtherCamelRoute;
 import org.apache.camel.cdi.bean.SimpleCamelRoute;
-import org.apache.camel.management.event.RouteAddedEvent;
-import org.apache.camel.management.event.RouteRemovedEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
-import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.RouteAddedEvent;
+import org.apache.camel.spi.CamelEvent.RouteRemovedEvent;
+import org.apache.camel.spi.CamelEvent.RouteStartedEvent;
+import org.apache.camel.spi.CamelEvent.RouteStoppedEvent;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.arquillian.junit.InSequence;
@@ -57,75 +57,75 @@ public class CamelRouteEventNotifierTest {
     @Produces
     @Named("all")
     @ApplicationScoped
-    private List<EventObject> allFiredEvents = new ArrayList<>();
+    private List<CamelEvent> allFiredEvents = new ArrayList<>();
 
     @Produces
     @Named("simple")
     @ApplicationScoped
-    private List<EventObject> simpleFiredEvents = new ArrayList<>();
+    private List<CamelEvent> simpleFiredEvents = new ArrayList<>();
 
     @Produces
     @Named("other")
     @ApplicationScoped
-    private List<EventObject> otherFiredEvents = new ArrayList<>();
+    private List<CamelEvent> otherFiredEvents = new ArrayList<>();
 
     private void onRouteAddedEventEventAll(@Observes RouteAddedEvent event,
-                                           @Named("all") List<EventObject> events) {
+                                           @Named("all") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteAddedEventEventSimple(@Observes @Named("simple") RouteAddedEvent event,
-                                              @Named("simple") List<EventObject> events) {
+                                              @Named("simple") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteAddedEventEventOther(@Observes @Named("other") RouteAddedEvent event,
-                                             @Named("other") List<EventObject> events) {
+                                             @Named("other") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteStartedEventEventAll(@Observes RouteStartedEvent event,
-                                             @Named("all") List<EventObject> events) {
+                                             @Named("all") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteStartedEventEventSimple(@Observes @Named("simple") RouteStartedEvent event,
-                                                @Named("simple") List<EventObject> events) {
+                                                @Named("simple") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteStartedEventEventOther(@Observes @Named("other") RouteStartedEvent event,
-                                               @Named("other") List<EventObject> events) {
+                                               @Named("other") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteStoppedEventEventAll(@Observes RouteStoppedEvent event,
-                                             @Named("all") List<EventObject> events) {
+                                             @Named("all") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteStoppedEventEventSimple(@Observes @Named("simple") RouteStoppedEvent event,
-                                                @Named("simple") List<EventObject> events) {
+                                                @Named("simple") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteStoppedEventEventOther(@Observes @Named("other") RouteStoppedEvent event,
-                                               @Named("other") List<EventObject> events) {
+                                               @Named("other") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteRemovedEventEventAll(@Observes RouteRemovedEvent event,
-                                             @Named("all") List<EventObject> events) {
+                                             @Named("all") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteRemovedEventEventSimple(@Observes @Named("simple") RouteRemovedEvent event,
-                                                @Named("simple") List<EventObject> events) {
+                                                @Named("simple") List<CamelEvent> events) {
         events.add(event);
     }
 
     private void onRouteRemovedEventEventOther(@Observes @Named("other") RouteRemovedEvent event,
-                                               @Named("other") List<EventObject> events) {
+                                               @Named("other") List<CamelEvent> events) {
         events.add(event);
     }
 
@@ -142,9 +142,9 @@ public class CamelRouteEventNotifierTest {
 
     @Test
     @InSequence(1)
-    public void startedCamelContext(@Named("all") List<EventObject> all,
-                                    @Named("simple") List<EventObject> simple,
-                                    @Named("other") List<EventObject> other) {
+    public void startedCamelContext(@Named("all") List<CamelEvent> all,
+                                    @Named("simple") List<CamelEvent> simple,
+                                    @Named("other") List<CamelEvent> other) {
         assertThat("Events fired are incorrect!", all,
             contains(
                 both(
@@ -186,9 +186,9 @@ public class CamelRouteEventNotifierTest {
     @Test
     @InSequence(3)
     public void stopCamelContext(CamelContext context,
-                                 @Named("all") List<EventObject> all,
-                                 @Named("simple") List<EventObject> simple,
-                                 @Named("other") List<EventObject> other) throws Exception {
+                                 @Named("all") List<CamelEvent> all,
+                                 @Named("simple") List<CamelEvent> simple,
+                                 @Named("other") List<CamelEvent> other) throws Exception {
         context.stop();
 
         assertThat("Events fired are incorrect!", all,
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextEventNotifierTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextEventNotifierTest.java
index 21c65da..54b94f2 100644
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextEventNotifierTest.java
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextEventNotifierTest.java
@@ -38,13 +38,13 @@ import org.apache.camel.cdi.bean.FirstCamelContextRoute;
 import org.apache.camel.cdi.bean.SecondCamelContextBean;
 import org.apache.camel.cdi.bean.UriEndpointRoute;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.event.AbstractExchangeEvent;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStartingEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSendingEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.arquillian.junit.InSequence;
@@ -118,8 +118,8 @@ public class MultiContextEventNotifierTest {
         events.add(CamelContextStartedEvent.class);
     }
 
-    private void onAnyExchangeEvent(@Observes AbstractExchangeEvent event, @Named("anyContext") List<Class> events) {
-        events.add(event.getClass());
+    private void onAnyExchangeEvent(@Observes ExchangeEvent event, @Named("anyContext") List<Class> events) {
+        events.add(event.getClass().getInterfaces()[0]);
     }
 
 
@@ -131,8 +131,8 @@ public class MultiContextEventNotifierTest {
         events.add(CamelContextStartedEvent.class);
     }
 
-    private void onDefaultExchangeEvent(@Observes @Default AbstractExchangeEvent event, @Named("defaultContext") List<Class> events) {
-        events.add(event.getClass());
+    private void onDefaultExchangeEvent(@Observes @Default ExchangeEvent event, @Named("defaultContext") List<Class> events) {
+        events.add(event.getClass().getInterfaces()[0]);
     }
 
 
@@ -144,8 +144,8 @@ public class MultiContextEventNotifierTest {
         events.add(CamelContextStartedEvent.class);
     }
 
-    private void onFirstExchangeEvent(@Observes @ContextName("first") AbstractExchangeEvent event, @ContextName("first") List<Class> events) {
-        events.add(event.getClass());
+    private void onFirstExchangeEvent(@Observes @ContextName("first") ExchangeEvent event, @ContextName("first") List<Class> events) {
+        events.add(event.getClass().getInterfaces()[0]);
     }
 
 
@@ -157,8 +157,8 @@ public class MultiContextEventNotifierTest {
         events.add(CamelContextStartedEvent.class);
     }
 
-    private void onSecondExchangeEvent(@Observes @ContextName("second") AbstractExchangeEvent event, @ContextName("second") List<Class> events) {
-        events.add(event.getClass());
+    private void onSecondExchangeEvent(@Observes @ContextName("second") ExchangeEvent event, @ContextName("second") List<Class> events) {
+        events.add(event.getClass().getInterfaces()[0]);
     }
 
     @Deployment
diff --git a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java
index 26ca21c..560b6b8 100644
--- a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java
+++ b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextPublisher.java
@@ -23,8 +23,9 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextEvent;
+import org.apache.camel.spi.CamelEvent.Type;
 import org.apache.camel.support.EventNotifierSupport;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -53,12 +54,12 @@ public class OsgiCamelContextPublisher extends EventNotifierSupport {
         this.bundleContext = bundleContext;
     }
 
-    public void notify(EventObject event) throws Exception {
-        if (event instanceof CamelContextStartedEvent) {
-            CamelContext context = ((CamelContextStartedEvent) event).getContext();
+    public void notify(CamelEvent event) throws Exception {
+        if (event.getType() == Type.CamelContextStarted) {
+            CamelContext context = ((CamelContextEvent) event).getContext();
             registerCamelContext(context);
-        } else if (event instanceof CamelContextStoppingEvent) {
-            CamelContext context = ((CamelContextStoppingEvent) event).getContext();
+        } else if (event.getType() == Type.CamelContextStopping) {
+            CamelContext context = ((CamelContextEvent) event).getContext();
             ServiceRegistration<?> reg = registrations.remove(context);
             if (reg != null) {
                 if (log.isDebugEnabled()) {
@@ -73,11 +74,8 @@ public class OsgiCamelContextPublisher extends EventNotifierSupport {
         }
     }
 
-    public boolean isEnabled(EventObject event) {
-        if (event instanceof CamelContextStartedEvent || event instanceof CamelContextStoppingEvent) {
-            return true;
-        }
-        return false;
+    public boolean isEnabled(CamelEvent event) {
+        return event.getType() == Type.CamelContextStarted || event.getType() == Type.CamelContextStopping;
     }
 
     @Override
diff --git a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiEventAdminNotifier.java b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiEventAdminNotifier.java
index e9b79f0..63aa677 100644
--- a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiEventAdminNotifier.java
+++ b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiEventAdminNotifier.java
@@ -20,6 +20,7 @@ import java.util.Dictionary;
 import java.util.EventObject;
 import java.util.Hashtable;
 
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 
 import org.osgi.framework.Bundle;
@@ -60,7 +61,7 @@ public class OsgiEventAdminNotifier extends EventNotifierSupport {
         setIgnoreExchangeEvents(true);
     }
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         EventAdmin eventAdmin = tracker.getService();
         if (eventAdmin == null) {
             return;
@@ -82,7 +83,7 @@ public class OsgiEventAdminNotifier extends EventNotifierSupport {
         eventAdmin.postEvent(new Event(getTopic(event), props));
     }
 
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 
@@ -108,15 +109,11 @@ public class OsgiEventAdminNotifier extends EventNotifierSupport {
         return sb.toString();
     }
 
-    public static String getType(EventObject event) {
-        String type = event.getClass().getSimpleName();
-        if (type.endsWith("Event")) {
-            type = type.substring(0, type.length() - "Event".length());
-        }
-        return type;
+    public static String getType(CamelEvent event) {
+        return event.getType().name();
     }
 
-    public static String getTopic(EventObject event) {
+    public static String getTopic(CamelEvent event) {
         String topic;
         String type = getType(event);
         if (type.startsWith("CamelContext")) {
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/AbstractMicrometerEventNotifier.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/AbstractMicrometerEventNotifier.java
index 8c7f5eb..07b519c 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/AbstractMicrometerEventNotifier.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/AbstractMicrometerEventNotifier.java
@@ -16,20 +16,22 @@
  */
 package org.apache.camel.component.micrometer.eventnotifier;
 
-import java.util.EventObject;
 import java.util.concurrent.TimeUnit;
+
 import io.micrometer.core.instrument.MeterRegistry;
 import io.micrometer.core.instrument.Tags;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.micrometer.MicrometerUtils;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.apache.camel.support.ServiceHelper;
+
 import static org.apache.camel.component.micrometer.MicrometerConstants.METRICS_REGISTRY_NAME;
 import static org.apache.camel.component.micrometer.MicrometerConstants.SERVICE_NAME;
 
-public abstract class AbstractMicrometerEventNotifier<T extends EventObject> extends EventNotifierSupport implements CamelContextAware {
+public abstract class AbstractMicrometerEventNotifier<T extends CamelEvent> extends EventNotifierSupport implements CamelContextAware {
 
     private final Class<T> eventType;
 
@@ -78,7 +80,7 @@ public abstract class AbstractMicrometerEventNotifier<T extends EventObject> ext
     }
 
     @Override
-    public boolean isEnabled(EventObject eventObject) {
+    public boolean isEnabled(CamelEvent eventObject) {
         return eventType.isAssignableFrom(eventObject.getClass());
     }
 
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java
index a7a1158..35f7894 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifier.java
@@ -16,25 +16,26 @@
  */
 package org.apache.camel.component.micrometer.eventnotifier;
 
-import java.util.EventObject;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Predicate;
+
 import io.micrometer.core.instrument.Tags;
 import io.micrometer.core.instrument.Timer;
 import org.apache.camel.Exchange;
-import org.apache.camel.management.event.AbstractExchangeEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeCreatedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeFailedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeSentEvent;
 
-public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNotifier<AbstractExchangeEvent> {
+public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNotifier<ExchangeEvent> {
 
     private Predicate<Exchange> ignoreExchanges = exchange -> false;
     private MicrometerExchangeEventNotifierNamingStrategy namingStrategy = MicrometerExchangeEventNotifierNamingStrategy.DEFAULT;
 
     public MicrometerExchangeEventNotifier() {
-        super(AbstractExchangeEvent.class);
+        super(ExchangeEvent.class);
     }
 
     public void setIgnoreExchanges(Predicate<Exchange> ignoreExchanges) {
@@ -54,14 +55,14 @@ public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNoti
     }
 
     @Override
-    public void notify(EventObject eventObject) {
-        if (!(getIgnoreExchanges().test(((AbstractExchangeEvent) eventObject).getExchange()))) {
+    public void notify(CamelEvent eventObject) {
+        if (!(getIgnoreExchanges().test(((ExchangeEvent) eventObject).getExchange()))) {
             if (eventObject instanceof ExchangeSentEvent) {
                 handleSentEvent((ExchangeSentEvent) eventObject);
             } else if (eventObject instanceof ExchangeCreatedEvent) {
                 handleCreatedEvent((ExchangeCreatedEvent) eventObject);
             } else if (eventObject instanceof ExchangeCompletedEvent || eventObject instanceof ExchangeFailedEvent) {
-                handleDoneEvent((AbstractExchangeEvent) eventObject);
+                handleDoneEvent((ExchangeEvent) eventObject);
             }
         }
     }
@@ -77,7 +78,7 @@ public class MicrometerExchangeEventNotifier extends AbstractMicrometerEventNoti
         createdEvent.getExchange().setProperty("eventTimer:" + name, Timer.start(getMeterRegistry()));
     }
 
-    protected void handleDoneEvent(AbstractExchangeEvent doneEvent) {
+    protected void handleDoneEvent(ExchangeEvent doneEvent) {
         String name = namingStrategy.getName(doneEvent.getExchange(), doneEvent.getExchange().getFromEndpoint());
         Tags tags = namingStrategy.getTags(doneEvent, doneEvent.getExchange().getFromEndpoint());
         // Would have preferred LongTaskTimer, but you cannot set the FAILED_TAG once it is registered
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifierNamingStrategy.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifierNamingStrategy.java
index 483a51c..3e078d9 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifierNamingStrategy.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerExchangeEventNotifierNamingStrategy.java
@@ -17,11 +17,13 @@
 package org.apache.camel.component.micrometer.eventnotifier;
 
 import java.util.function.Predicate;
+
 import io.micrometer.core.instrument.Meter;
 import io.micrometer.core.instrument.Tags;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.management.event.AbstractExchangeEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeEvent;
+
 import static org.apache.camel.component.micrometer.MicrometerConstants.CAMEL_CONTEXT_TAG;
 import static org.apache.camel.component.micrometer.MicrometerConstants.DEFAULT_CAMEL_EXCHANGE_EVENT_METER_NAME;
 import static org.apache.camel.component.micrometer.MicrometerConstants.ENDPOINT_NAME;
@@ -36,7 +38,7 @@ public interface MicrometerExchangeEventNotifierNamingStrategy {
 
     String getName(Exchange exchange, Endpoint endpoint);
 
-    default Tags getTags(AbstractExchangeEvent event, Endpoint endpoint) {
+    default Tags getTags(ExchangeEvent event, Endpoint endpoint) {
         return Tags.of(
                 CAMEL_CONTEXT_TAG, event.getExchange().getContext().getName(),
                 SERVICE_NAME, MicrometerEventNotifierService.class.getSimpleName(),
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifier.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifier.java
index 4b9d337..3bb0ebf 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifier.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifier.java
@@ -16,24 +16,25 @@
  */
 package org.apache.camel.component.micrometer.eventnotifier;
 
-import java.util.EventObject;
 import java.util.concurrent.atomic.AtomicLong;
+
 import io.micrometer.core.instrument.Gauge;
-import org.apache.camel.management.event.AbstractRouteEvent;
-import org.apache.camel.management.event.RouteAddedEvent;
-import org.apache.camel.management.event.RouteRemovedEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
-import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.RouteAddedEvent;
+import org.apache.camel.spi.CamelEvent.RouteEvent;
+import org.apache.camel.spi.CamelEvent.RouteRemovedEvent;
+import org.apache.camel.spi.CamelEvent.RouteStartedEvent;
+import org.apache.camel.spi.CamelEvent.RouteStoppedEvent;
 
 
-public class MicrometerRouteEventNotifier extends AbstractMicrometerEventNotifier<AbstractRouteEvent> {
+public class MicrometerRouteEventNotifier extends AbstractMicrometerEventNotifier<RouteEvent> {
 
     private final AtomicLong routesAdded = new AtomicLong();
     private final AtomicLong routesRunning = new AtomicLong();
     private MicrometerRouteEventNotifierNamingStrategy namingStrategy = MicrometerRouteEventNotifierNamingStrategy.DEFAULT;
 
     public MicrometerRouteEventNotifier() {
-        super(AbstractRouteEvent.class);
+        super(RouteEvent.class);
     }
 
     public MicrometerRouteEventNotifierNamingStrategy getNamingStrategy() {
@@ -58,7 +59,7 @@ public class MicrometerRouteEventNotifier extends AbstractMicrometerEventNotifie
     }
 
     @Override
-    public void notify(EventObject eventObject) {
+    public void notify(CamelEvent eventObject) {
         if (eventObject instanceof RouteAddedEvent) {
             routesAdded.incrementAndGet();
         } else if (eventObject instanceof RouteRemovedEvent) {
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifierNamingStrategy.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifierNamingStrategy.java
index 6966047..83cfdc9 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifierNamingStrategy.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/eventnotifier/MicrometerRouteEventNotifierNamingStrategy.java
@@ -17,10 +17,12 @@
 package org.apache.camel.component.micrometer.eventnotifier;
 
 import java.util.function.Predicate;
+
 import io.micrometer.core.instrument.Meter;
 import io.micrometer.core.instrument.Tags;
 import org.apache.camel.CamelContext;
-import org.apache.camel.management.event.AbstractRouteEvent;
+import org.apache.camel.spi.CamelEvent.RouteEvent;
+
 import static org.apache.camel.component.micrometer.MicrometerConstants.CAMEL_CONTEXT_TAG;
 import static org.apache.camel.component.micrometer.MicrometerConstants.DEFAULT_CAMEL_ROUTES_ADDED;
 import static org.apache.camel.component.micrometer.MicrometerConstants.DEFAULT_CAMEL_ROUTES_RUNNING;
@@ -49,6 +51,6 @@ public interface MicrometerRouteEventNotifierNamingStrategy {
         return Tags.of(
                 SERVICE_NAME, MicrometerEventNotifierService.class.getSimpleName(),
                 CAMEL_CONTEXT_TAG, camelContext.getName(),
-                EVENT_TYPE_TAG, AbstractRouteEvent.class.getSimpleName());
+                EVENT_TYPE_TAG, RouteEvent.class.getSimpleName());
     }
 }
diff --git a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java
index fbe6dd7..801c5f0 100644
--- a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java
+++ b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java
@@ -16,20 +16,19 @@
  */
 package org.apache.camel.component.nagios;
 
-import java.util.EventObject;
-
 import com.googlecode.jsendnsca.Level;
 import com.googlecode.jsendnsca.MessagePayload;
 import com.googlecode.jsendnsca.NagiosPassiveCheckSender;
 import com.googlecode.jsendnsca.NagiosSettings;
 import com.googlecode.jsendnsca.PassiveCheckSender;
-import org.apache.camel.management.event.CamelContextStartupFailureEvent;
-import org.apache.camel.management.event.CamelContextStopFailureEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
-import org.apache.camel.management.event.ExchangeFailureHandledEvent;
-import org.apache.camel.management.event.ExchangeRedeliveryEvent;
-import org.apache.camel.management.event.ServiceStartupFailureEvent;
-import org.apache.camel.management.event.ServiceStopFailureEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartupFailureEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStopFailureEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeFailedEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeFailureHandledEvent;
+import org.apache.camel.spi.CamelEvent.ExchangeRedeliveryEvent;
+import org.apache.camel.spi.CamelEvent.ServiceStartupFailureEvent;
+import org.apache.camel.spi.CamelEvent.ServiceStopFailureEvent;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 
 /**
@@ -51,7 +50,7 @@ public class NagiosEventNotifier extends EventNotifierSupport {
         this.sender = sender;
     }
 
-    public void notify(EventObject eventObject) throws Exception {
+    public void notify(CamelEvent eventObject) throws Exception {
         // create message payload to send
         String message = eventObject.toString();
         Level level = determineLevel(eventObject);
@@ -64,11 +63,11 @@ public class NagiosEventNotifier extends EventNotifierSupport {
         log.trace("Sending notification done");
     }
 
-    public boolean isEnabled(EventObject eventObject) {
+    public boolean isEnabled(CamelEvent eventObject) {
         return true;
     }
 
-    protected Level determineLevel(EventObject eventObject) {
+    protected Level determineLevel(CamelEvent eventObject) {
         // failures is considered critical
         if (eventObject instanceof ExchangeFailedEvent
                 || eventObject instanceof CamelContextStartupFailureEvent
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index 9b6f00d..27473bb 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -39,8 +39,9 @@ import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StaticService;
 import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+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.CamelLogger;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.RoutePolicy;
@@ -227,7 +228,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
     private final class OpenTracingEventNotifier extends EventNotifierSupport {
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             try {
                 if (event instanceof ExchangeSendingEvent) {
                     ExchangeSendingEvent ese = (ExchangeSendingEvent)event;
@@ -276,7 +277,7 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return event instanceof ExchangeSendingEvent || event instanceof ExchangeSentEvent;
         }
 
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java
index 2222076..14739ab 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java
@@ -19,7 +19,6 @@ package org.apache.camel.spring.boot;
 import java.io.FileNotFoundException;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
@@ -31,16 +30,17 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.StartupListener;
 import org.apache.camel.main.MainDurationEventNotifier;
-import org.apache.camel.management.event.CamelContextStartedEvent;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.Type;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.support.EventNotifierSupport;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.ApplicationContext;
@@ -230,7 +230,7 @@ public class RoutesCollector implements ApplicationListener<ContextRefreshedEven
                     // so use an event notifier to trigger when this happens
                     camelContext.getManagementStrategy().addEventNotifier(new EventNotifierSupport() {
                         @Override
-                        public void notify(EventObject eventObject) throws Exception {
+                        public void notify(CamelEvent eventObject) throws Exception {
                             for (CamelContextConfiguration camelContextConfiguration : camelContextConfigurations) {
                                 log.debug("CamelContextConfiguration found. Invoking afterApplicationStart: {}", camelContextConfiguration);
                                 try {
@@ -242,8 +242,8 @@ public class RoutesCollector implements ApplicationListener<ContextRefreshedEven
                         }
 
                         @Override
-                        public boolean isEnabled(EventObject eventObject) {
-                            return eventObject instanceof CamelContextStartedEvent;
+                        public boolean isEnabled(CamelEvent eventObject) {
+                            return eventObject.getType() == Type.CamelContextStarted;
                         }
                     });
                 }
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
index b6b9a7d..f2a4d7d 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
@@ -33,11 +33,11 @@ import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.api.management.mbean.RouteError;
 import org.apache.camel.management.ManagedCamelContext;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.spi.RouteError;
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
 import org.springframework.boot.actuate.endpoint.annotation.Selector;
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetails.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetails.java
index f41fcb5..f68544a 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetails.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/model/RouteDetails.java
@@ -20,7 +20,7 @@ import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
-import org.apache.camel.spi.RouteError;
+import org.apache.camel.api.management.mbean.RouteError;
 
 @JsonInclude(JsonInclude.Include.NON_EMPTY)
 public class RouteDetails {
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java
index 397c989..4aa80bf 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelEventNotifierTest.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.spring.boot;
 
-import java.util.EventObject;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Assert;
@@ -87,12 +87,12 @@ public class CamelEventNotifierTest extends Assert {
         private final AtomicInteger counter = new AtomicInteger();
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             counter.incrementAndGet();
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
+        public boolean isEnabled(CamelEvent event) {
             return true;
         }
 
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/StartAndStopEventNotifier.java b/components/camel-spring/src/test/java/org/apache/camel/spring/StartAndStopEventNotifier.java
index b6de441..d9f4a5b 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/StartAndStopEventNotifier.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/StartAndStopEventNotifier.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.spring;
 
-import java.util.EventObject;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.ProducerTemplate;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.Type;
 import org.apache.camel.support.EventNotifierSupport;
 
 /**
@@ -43,14 +41,14 @@ public class StartAndStopEventNotifier extends EventNotifierSupport implements C
     }
 
     @Override
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         // Note: there is also a CamelContextStartingEvent which is send first
         // and then Camel is starting. And when all that is done this event
         // (CamelContextStartedEvent) is send
-        if (event instanceof CamelContextStartedEvent) {
+        if (event.getType() == Type.CamelContextStarted) {
             log.info("Sending a message on startup...");
             template.sendBody("file:target/startandstop/start.txt", "Starting");
-        } else if (event instanceof CamelContextStoppingEvent) {
+        } else if (event.getType() == Type.CamelContextStopping) {
             // Note: there is also a CamelContextStoppedEvent which is send
             // afterwards, when Camel has been fully stopped.
             log.info("Sending a message on stopping...");
@@ -59,7 +57,7 @@ public class StartAndStopEventNotifier extends EventNotifierSupport implements C
     }
 
     @Override
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
index 28586cf..b40be29 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/MyEventNotifier.java
@@ -17,24 +17,24 @@
 package org.apache.camel.spring.management;
 
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
+import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 
 public class MyEventNotifier extends EventNotifierSupport {
 
-    private List<EventObject> events = new ArrayList<>();
+    private List<CamelEvent> events = new ArrayList<>();
 
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         events.add(event);
     }
 
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return true;
     }
 
-    public List<EventObject> getEvents() {
+    public List<CamelEvent> getEvents() {
         return events;
     }
 
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageEventNotifier.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageEventNotifier.java
index d8306af..be693f6 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageEventNotifier.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/spring/RouteCoverageEventNotifier.java
@@ -16,11 +16,12 @@
  */
 package org.apache.camel.test.spring;
 
-import java.util.EventObject;
 import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStoppingEvent;
 import org.apache.camel.support.EventNotifierSupport;
 
 public class RouteCoverageEventNotifier extends EventNotifierSupport {
@@ -36,12 +37,12 @@ public class RouteCoverageEventNotifier extends EventNotifierSupport {
     }
 
     @Override
-    public boolean isEnabled(EventObject event) {
+    public boolean isEnabled(CamelEvent event) {
         return event instanceof CamelContextStoppingEvent;
     }
 
     @Override
-    public void notify(EventObject event) throws Exception {
+    public void notify(CamelEvent event) throws Exception {
         CamelContext context = ((CamelContextStoppingEvent) event).getContext();
         String testName = (String) testMethodName.apply(this);
         RouteCoverageDumper.dumpRouteCoverage(context, testClassName, testName);
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 f728423..bf9f04e 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
@@ -48,11 +48,9 @@ import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.component.properties.ServiceHostPropertiesFunction;
 import org.apache.camel.component.properties.ServicePortPropertiesFunction;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+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.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
 import org.apache.camel.support.EventNotifierSupport;
@@ -719,7 +717,7 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
     private final class ZipkinEventNotifier extends EventNotifierSupport {
 
         @Override
-        public void notify(EventObject event) throws Exception {
+        public void notify(CamelEvent event) throws Exception {
             // use event notifier to track events when Camel messages to endpoints
             // these events corresponds to Zipkin client events
 
@@ -742,12 +740,17 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
         }
 
         @Override
-        public boolean isEnabled(EventObject event) {
-            return event instanceof ExchangeSendingEvent
-                    || event instanceof ExchangeSentEvent
-                    || event instanceof ExchangeCreatedEvent
-                    || event instanceof ExchangeCompletedEvent
-                    || event instanceof ExchangeFailedEvent;
+        public boolean isEnabled(CamelEvent event) {
+            switch (event.getType()) {
+                case ExchangeSending:
+                case ExchangeSent:
+                case ExchangeCreated:
+                case ExchangeCompleted:
+                case ExchangeFailed:
+                    return true;
+                default:
+                    return false;
+            }
         }
 
         @Override
diff --git a/docs/user-manual/en/release-notes/camel-2170-release.adoc b/docs/user-manual/en/release-notes/camel-2170-release.adoc
index 5aa545f..0566d18 100644
--- a/docs/user-manual/en/release-notes/camel-2170-release.adoc
+++ b/docs/user-manual/en/release-notes/camel-2170-release.adoc
@@ -98,7 +98,7 @@ using link:stream-caching.html[Stream caching]
 * The link:cdi.html[Camel CDI] component has been improved to better fit
 into the CDI programming model, cover a larger set of containers, and
 provide these new features:
-** The Camel events from the `org.apache.camel.management.event` package
+** The Camel events from the `org.apache.camel.spi.CamelEvent` class
 (like `CamelContextStartedEvent`) can be observed as CDI events
 ** The new CDI event Camel endpoint enable CDI events to be seamlessly
 consumed from (respectively produced by) Camel consumers (respectively
diff --git a/examples/camel-example-cdi-metrics/src/main/java/org/apache/camel/example/cdi/metrics/Application.java b/examples/camel-example-cdi-metrics/src/main/java/org/apache/camel/example/cdi/metrics/Application.java
index 2202d45..38c8be9 100644
--- a/examples/camel-example-cdi-metrics/src/main/java/org/apache/camel/example/cdi/metrics/Application.java
+++ b/examples/camel-example-cdi-metrics/src/main/java/org/apache/camel/example/cdi/metrics/Application.java
@@ -17,6 +17,7 @@
 package org.apache.camel.example.cdi.metrics;
 
 import java.util.concurrent.TimeUnit;
+
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.Disposes;
 import javax.enterprise.inject.Produces;
@@ -34,7 +35,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cdi.ContextName;
 import org.apache.camel.component.metrics.MetricsConstants;
-import org.apache.camel.management.event.CamelContextStartedEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
 
 /**
  * This example registers the following meters into the Metrics registry:
diff --git a/examples/camel-example-cdi-properties/src/main/java/org/apache/camel/example/cdi/properties/Application.java b/examples/camel-example-cdi-properties/src/main/java/org/apache/camel/example/cdi/properties/Application.java
index 8113bc7..892330e 100644
--- a/examples/camel-example-cdi-properties/src/main/java/org/apache/camel/example/cdi/properties/Application.java
+++ b/examples/camel-example-cdi-properties/src/main/java/org/apache/camel/example/cdi/properties/Application.java
@@ -29,7 +29,7 @@ import org.apache.camel.cdi.Uri;
 import org.apache.camel.component.properties.DefaultPropertiesParser;
 import org.apache.camel.component.properties.PropertiesComponent;
 import org.apache.camel.component.properties.PropertiesParser;
-import org.apache.camel.management.event.CamelContextStartedEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
 import org.apache.deltaspike.core.api.config.ConfigProperty;
 import org.apache.deltaspike.core.api.config.ConfigResolver;
 
diff --git a/examples/camel-example-cdi-properties/src/test/java/org/apache/camel/example/cdi/properties/CdiPropertiesTest.java b/examples/camel-example-cdi-properties/src/test/java/org/apache/camel/example/cdi/properties/CdiPropertiesTest.java
index 535473b..79d2c61 100644
--- a/examples/camel-example-cdi-properties/src/test/java/org/apache/camel/example/cdi/properties/CdiPropertiesTest.java
+++ b/examples/camel-example-cdi-properties/src/test/java/org/apache/camel/example/cdi/properties/CdiPropertiesTest.java
@@ -21,8 +21,8 @@ import javax.enterprise.event.Observes;
 import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.event.CamelContextStartingEvent;
 import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.spi.CamelEvent.CamelContextStartingEvent;
 import org.apache.camel.test.cdi.CamelCdiRunner;
 import org.apache.deltaspike.core.api.config.ConfigProperty;
 import org.junit.Test;
diff --git a/examples/camel-example-cdi-test/src/main/java/org/apache/camel/example/cdi/test/Application.java b/examples/camel-example-cdi-test/src/main/java/org/apache/camel/example/cdi/test/Application.java
index 847f2e0..705420d 100644
--- a/examples/camel-example-cdi-test/src/main/java/org/apache/camel/example/cdi/test/Application.java
+++ b/examples/camel-example-cdi-test/src/main/java/org/apache/camel/example/cdi/test/Application.java
@@ -25,8 +25,8 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cdi.ContextName;
 import org.apache.camel.cdi.Uri;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartedEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStoppingEvent;
 
 /**
  * Our CDI Camel application
diff --git a/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/AdviceTest.java b/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/AdviceTest.java
index c853a37..80c2763 100644
--- a/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/AdviceTest.java
+++ b/examples/camel-example-cdi-test/src/test/java/org/apache/camel/example/cdi/test/AdviceTest.java
@@ -23,8 +23,8 @@ import javax.enterprise.event.Observes;
 import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.event.CamelContextStartingEvent;
 import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.spi.CamelEvent.CamelContextStartingEvent;
 import org.apache.camel.test.cdi.CamelCdiRunner;
 import org.junit.ClassRule;
 import org.junit.Test;
diff --git a/examples/camel-example-cdi-xml/src/main/java/org/apache/camel/example/cdi/xml/Application.java b/examples/camel-example-cdi-xml/src/main/java/org/apache/camel/example/cdi/xml/Application.java
index 2549f5a..507c973 100644
--- a/examples/camel-example-cdi-xml/src/main/java/org/apache/camel/example/cdi/xml/Application.java
+++ b/examples/camel-example-cdi-xml/src/main/java/org/apache/camel/example/cdi/xml/Application.java
@@ -28,7 +28,7 @@ import org.apache.camel.CamelException;
 import org.apache.camel.Handler;
 import org.apache.camel.Processor;
 import org.apache.camel.cdi.ImportResource;
-import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.spi.CamelEvent.RouteStoppedEvent;
 
 import static org.apache.camel.builder.Builder.simple;
 
diff --git a/examples/camel-example-cdi-xml/src/test/java/org/apache/camel/example/cdi/xml/CdiXmlTest.java b/examples/camel-example-cdi-xml/src/test/java/org/apache/camel/example/cdi/xml/CdiXmlTest.java
index 2510c95..6b7ad57 100644
--- a/examples/camel-example-cdi-xml/src/test/java/org/apache/camel/example/cdi/xml/CdiXmlTest.java
+++ b/examples/camel-example-cdi-xml/src/test/java/org/apache/camel/example/cdi/xml/CdiXmlTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.example.cdi.xml;
 
 import java.util.concurrent.TimeUnit;
+
 import javax.enterprise.event.Observes;
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -29,8 +30,8 @@ import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cdi.Uri;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.management.event.CamelContextStartingEvent;
 import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.spi.CamelEvent.CamelContextStartingEvent;
 import org.apache.camel.test.cdi.CamelCdiRunner;
 import org.apache.camel.test.cdi.Order;
 import org.awaitility.Awaitility;
diff --git a/examples/camel-example-opentracing/client/src/main/java/sample/camel/ClientApplication.java b/examples/camel-example-opentracing/client/src/main/java/sample/camel/ClientApplication.java
index c46431c..42beeee 100644
--- a/examples/camel-example-opentracing/client/src/main/java/sample/camel/ClientApplication.java
+++ b/examples/camel-example-opentracing/client/src/main/java/sample/camel/ClientApplication.java
@@ -19,8 +19,8 @@ package sample.camel;
 import javax.enterprise.event.Observes;
 
 import org.apache.camel.cdi.ContextName;
-import org.apache.camel.management.event.CamelContextStartingEvent;
 import org.apache.camel.opentracing.OpenTracingTracer;
+import org.apache.camel.spi.CamelEvent.CamelContextStartingEvent;
 
 @ContextName("Server1")
 public class ClientApplication {
diff --git a/examples/camel-example-zipkin/client/src/main/java/sample/camel/ClientApplication.java b/examples/camel-example-zipkin/client/src/main/java/sample/camel/ClientApplication.java
index 6376157..13afdaa 100644
--- a/examples/camel-example-zipkin/client/src/main/java/sample/camel/ClientApplication.java
+++ b/examples/camel-example-zipkin/client/src/main/java/sample/camel/ClientApplication.java
@@ -19,7 +19,7 @@ package sample.camel;
 import javax.enterprise.event.Observes;
 
 import org.apache.camel.cdi.ContextName;
-import org.apache.camel.management.event.CamelContextStartingEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStartingEvent;
 import org.apache.camel.zipkin.ZipkinTracer;
 
 @ContextName("Server1")


[camel] 44/44: Reifiers

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit daa5f9a3504d5b0457e08074781035b6c1556170
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Sep 5 12:59:09 2018 +0200

    Reifiers
---
 .../org/apache/camel/impl/DefaultCamelContext.java |   3 +-
 .../org/apache/camel/impl/DefaultRouteContext.java |   6 +-
 .../camel/impl/DefaultTransformerRegistry.java     |   3 +-
 .../camel/impl/DefaultValidatorRegistry.java       |   3 +-
 .../apache/camel/model/AggregateDefinition.java    | 171 ------
 .../org/apache/camel/model/BeanDefinition.java     | 131 +----
 .../org/apache/camel/model/CatchDefinition.java    |  48 --
 .../org/apache/camel/model/ChoiceDefinition.java   |  30 --
 .../apache/camel/model/ClaimCheckDefinition.java   |  92 ----
 .../apache/camel/model/ConvertBodyDefinition.java  |  30 --
 .../org/apache/camel/model/DelayDefinition.java    |  34 --
 .../camel/model/DynamicRouterDefinition.java       |  30 --
 .../org/apache/camel/model/EnrichDefinition.java   |  54 +-
 .../org/apache/camel/model/ExpressionNode.java     |  46 +-
 .../org/apache/camel/model/FilterDefinition.java   |  15 -
 .../org/apache/camel/model/FinallyDefinition.java  |  13 -
 .../org/apache/camel/model/HystrixDefinition.java  |   9 +-
 .../camel/model/IdempotentConsumerDefinition.java  |  37 --
 .../apache/camel/model/InterceptDefinition.java    |  48 +-
 .../camel/model/InterceptFromDefinition.java       |  27 -
 .../model/InterceptSendToEndpointDefinition.java   |  71 ---
 .../apache/camel/model/LoadBalanceDefinition.java  |  44 +-
 .../apache/camel/model/LoadBalancerDefinition.java |  31 +-
 .../java/org/apache/camel/model/LogDefinition.java |  73 ---
 .../org/apache/camel/model/LoopDefinition.java     |  19 -
 .../org/apache/camel/model/MarshalDefinition.java  |  10 -
 .../apache/camel/model/MulticastDefinition.java    |  83 ---
 .../apache/camel/model/OnCompletionDefinition.java |  62 +--
 .../apache/camel/model/OnExceptionDefinition.java  | 136 +----
 .../apache/camel/model/OnFallbackDefinition.java   |   7 -
 .../apache/camel/model/OtherwiseDefinition.java    |   7 -
 .../org/apache/camel/model/PipelineDefinition.java |   5 -
 .../org/apache/camel/model/PolicyDefinition.java   |  42 +-
 .../apache/camel/model/PollEnrichDefinition.java   |  58 ---
 .../org/apache/camel/model/ProcessDefinition.java  |  30 +-
 .../apache/camel/model/ProcessorDefinition.java    | 380 +-------------
 .../camel/model/RecipientListDefinition.java       | 119 -----
 .../apache/camel/model/RemoveHeaderDefinition.java |  10 -
 .../camel/model/RemoveHeadersDefinition.java       |  16 -
 .../camel/model/RemovePropertiesDefinition.java    |  16 -
 .../camel/model/RemovePropertyDefinition.java      |  10 -
 .../apache/camel/model/ResequenceDefinition.java   | 103 ----
 .../org/apache/camel/model/RethrowDefinition.java  |  10 -
 .../org/apache/camel/model/RollbackDefinition.java |  19 -
 .../org/apache/camel/model/RouteDefinition.java    | 283 +---------
 .../apache/camel/model/RoutingSlipDefinition.java  |  29 --
 .../org/apache/camel/model/SagaDefinition.java     |  78 ---
 .../org/apache/camel/model/SamplingDefinition.java |  18 -
 .../org/apache/camel/model/ScriptDefinition.java   |   9 -
 .../org/apache/camel/model/SendDefinition.java     |  18 -
 .../org/apache/camel/model/SetBodyDefinition.java  |   9 -
 .../camel/model/SetExchangePatternDefinition.java  |  16 +-
 .../apache/camel/model/SetFaultBodyDefinition.java |   9 -
 .../apache/camel/model/SetHeaderDefinition.java    |  12 -
 .../apache/camel/model/SetPropertyDefinition.java  |  12 -
 .../org/apache/camel/model/SortDefinition.java     |  29 --
 .../org/apache/camel/model/SplitDefinition.java    |  65 ---
 .../org/apache/camel/model/StopDefinition.java     |   8 -
 .../org/apache/camel/model/ThreadsDefinition.java  |  97 +---
 .../org/apache/camel/model/ThrottleDefinition.java |  48 --
 .../camel/model/ThrowExceptionDefinition.java      |  24 -
 .../apache/camel/model/ToDynamicDefinition.java    | 145 ------
 .../apache/camel/model/TransactedDefinition.java   | 127 +----
 .../apache/camel/model/TransformDefinition.java    |   9 -
 .../java/org/apache/camel/model/TryDefinition.java |  34 +-
 .../apache/camel/model/UnmarshalDefinition.java    |   9 -
 .../org/apache/camel/model/ValidateDefinition.java |   8 -
 .../org/apache/camel/model/WhenDefinition.java     |   7 -
 .../model/WhenSkipSendToEndpointDefinition.java    |  23 -
 .../org/apache/camel/model/WireTapDefinition.java  |  67 +--
 .../camel/model/cloud/ServiceCallDefinition.java   | 426 ---------------
 .../loadbalancer/CustomLoadBalancerDefinition.java |  21 +-
 .../FailoverLoadBalancerDefinition.java            |  42 --
 .../loadbalancer/RandomLoadBalancerDefinition.java |   7 -
 .../RoundRobinLoadBalancerDefinition.java          |   7 -
 .../loadbalancer/StickyLoadBalancerDefinition.java |   8 -
 .../loadbalancer/TopicLoadBalancerDefinition.java  |   7 -
 .../WeightedLoadBalancerDefinition.java            |  33 --
 .../camel/model/rest/RestBindingDefinition.java    | 182 +------
 .../transformer/CustomTransformerDefinition.java   |  29 --
 .../DataFormatTransformerDefinition.java           |  17 +-
 .../transformer/EndpointTransformerDefinition.java |  24 +-
 .../model/transformer/TransformerDefinition.java   |  12 +-
 .../model/validator/CustomValidatorDefinition.java |  27 -
 .../validator/EndpointValidatorDefinition.java     |  19 +-
 .../validator/PredicateValidatorDefinition.java    |  17 +-
 .../camel/model/validator/ValidatorDefinition.java |   7 -
 .../org/apache/camel/reifier/AggregateReifier.java | 208 ++++++++
 .../BeanReifier.java}                              | 151 +-----
 .../org/apache/camel/reifier/CatchReifier.java     |  81 +++
 .../org/apache/camel/reifier/ChoiceReifier.java    |  64 +++
 .../apache/camel/reifier/ClaimCheckReifier.java    | 123 +++++
 .../apache/camel/reifier/ConvertBodyReifier.java   |  58 +++
 .../org/apache/camel/reifier/DelayReifier.java     |  66 +++
 .../apache/camel/reifier/DynamicRouterReifier.java |  59 +++
 .../org/apache/camel/reifier/EnrichReifier.java    |  80 +++
 .../apache/camel/reifier/ExpressionReifier.java    |  53 ++
 .../FilterReifier.java}                            |  37 +-
 .../FinallyReifier.java}                           |  36 +-
 .../org/apache/camel/reifier/HystrixReifier.java   |  22 +-
 .../camel/reifier/IdempotentConsumerReifier.java   |  67 +++
 .../InterceptFromReifier.java}                     |  65 +--
 .../org/apache/camel/reifier/InterceptReifier.java |  72 +++
 .../reifier/InterceptSendToEndpointReifier.java    | 100 ++++
 .../apache/camel/reifier/LoadBalanceReifier.java   |  74 +++
 .../LogDefinition.java => reifier/LogReifier.java} | 155 +-----
 .../java/org/apache/camel/reifier/LoopReifier.java |  49 ++
 .../MarshalReifier.java}                           |  38 +-
 .../org/apache/camel/reifier/MulticastReifier.java | 116 +++++
 .../apache/camel/reifier/OnCompletionReifier.java  |  90 ++++
 .../apache/camel/reifier/OnExceptionReifier.java   | 164 ++++++
 .../apache/camel/reifier/OnFallbackReifier.java    |  22 +-
 .../org/apache/camel/reifier/OtherwiseReifier.java |  21 +-
 .../org/apache/camel/reifier/PipelineReifier.java  |  21 +-
 .../org/apache/camel/reifier/PolicyReifier.java    |  63 +++
 .../apache/camel/reifier/PollEnrichReifier.java    |  87 ++++
 .../org/apache/camel/reifier/ProcessReifier.java   |  56 ++
 .../org/apache/camel/reifier/ProcessorReifier.java | 579 +++++++++++++++++++++
 .../apache/camel/reifier/RecipientListReifier.java | 153 ++++++
 .../RemoveHeaderReifier.java}                      |  36 +-
 .../RemoveHeadersReifier.java}                     |  53 +-
 .../RemovePropertiesReifier.java}                  |  53 +-
 .../RemovePropertyReifier.java}                    |  36 +-
 .../apache/camel/reifier/ResequenceReifier.java    | 136 +++++
 .../org/apache/camel/reifier/RethrowReifier.java   |  25 +
 .../org/apache/camel/reifier/RollbackReifier.java  |  47 ++
 .../org/apache/camel/reifier/RouteReifier.java     | 339 ++++++++++++
 .../apache/camel/reifier/RoutingSlipReifier.java   |  59 +++
 .../java/org/apache/camel/reifier/SagaReifier.java | 113 ++++
 .../org/apache/camel/reifier/SamplingReifier.java  |  46 ++
 .../ScriptReifier.java}                            |  36 +-
 .../SendReifier.java}                              |  41 +-
 .../apache/camel/reifier/ServiceCallReifier.java   | 462 ++++++++++++++++
 .../SetBodyReifier.java}                           |  36 +-
 .../camel/reifier/SetExchangePatternReifier.java   |  22 +-
 .../SetFaultBodyReifier.java}                      |  36 +-
 .../SetHeaderReifier.java}                         |  40 +-
 .../SetPropertyReifier.java}                       |  40 +-
 .../java/org/apache/camel/reifier/SortReifier.java |  65 +++
 .../org/apache/camel/reifier/SplitReifier.java     |  99 ++++
 .../java/org/apache/camel/reifier/StopReifier.java |  22 +-
 .../org/apache/camel/reifier/ThreadsReifier.java   | 127 +++++
 .../org/apache/camel/reifier/ThrottleReifier.java  |  80 +++
 .../camel/reifier/ThrowExceptionReifier.java       |  52 ++
 .../ToDynamicReifier.java}                         | 157 +-----
 .../TransactedReifier.java}                        | 149 +-----
 .../TransformReifier.java}                         |  36 +-
 .../java/org/apache/camel/reifier/TryReifier.java  |  65 +++
 .../UnmarshalReifier.java}                         |  39 +-
 .../org/apache/camel/reifier/ValidateReifier.java  |  23 +-
 .../java/org/apache/camel/reifier/WhenReifier.java |  21 +-
 .../WhenSkipSendToEndpointReifier.java}            |  36 +-
 .../org/apache/camel/reifier/WireTapReifier.java   | 100 ++++
 .../loadbalancer/CustomLoadBalancerReifier.java}   |  35 +-
 .../loadbalancer/FailoverLoadBalancerReifier.java  |  73 +++
 .../reifier/loadbalancer/LoadBalancerReifier.java  |  86 +++
 .../loadbalancer/RandomLoadBalancerReifier.java    |  23 +-
 .../RoundRobinLoadBalancerReifier.java             |  23 +-
 .../loadbalancer/StickyLoadBalancerReifier.java    |  23 +-
 .../loadbalancer/TopicLoadBalancerReifier.java     |  23 +-
 .../loadbalancer/WeightedLoadBalancerReifier.java  |  62 +++
 .../rest/RestBindingReifier.java}                  | 276 +---------
 .../transformer/CustomTransformeReifier.java}      |  76 +--
 .../transformer/DataFormatTransformeReifier.java   |  41 ++
 .../transformer/EndpointTransformeReifier.java     |  46 ++
 .../reifier/transformer/TransformerReifier.java    |  61 +++
 .../validator/CustomValidatorReifier.java}         |  72 +--
 .../validator/EndpointValidatorReifier.java        |  44 ++
 .../validator/PredicateValidatorReifier.java       |  42 ++
 .../camel/reifier/validator/ValidatorReifier.java  |  61 +++
 .../RandomLoadBalanceJavaDSLBuilderTest.java       |   2 +-
 .../JtaTransactionErrorHandlerBuilder.java         |   4 +-
 .../hystrix/processor/HystrixProcessorFactory.java | 217 +-------
 ...ixProcessorFactory.java => HystrixReifier.java} |  38 +-
 .../processor/HystrixHierarchicalConfigTest.java   |  51 +-
 .../SpringHystrixRouteHierarchicalConfigTest.java  |   4 +-
 .../HystrixHierarchicalConfigurationTest.java      |   4 +-
 177 files changed, 5478 insertions(+), 5935 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 5ab0dc1..25fdfdf 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -110,6 +110,7 @@ import org.apache.camel.model.transformer.TransformerDefinition;
 import org.apache.camel.model.validator.ValidatorDefinition;
 import org.apache.camel.processor.interceptor.Debug;
 import org.apache.camel.processor.interceptor.HandleFault;
+import org.apache.camel.reifier.RouteReifier;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
@@ -1136,7 +1137,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             route.prepare(this);
 
             List<Route> routes = new ArrayList<>();
-            List<RouteContext> routeContexts = route.addRoutes(this, routes);
+            List<RouteContext> routeContexts = new RouteReifier(route).addRoutes(this, routes);
             RouteService routeService = new RouteService(this, route, routeContexts, routes);
             startRouteService(routeService, true);
         } finally {
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
index 95e334f..1f3175b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
@@ -39,6 +39,8 @@ import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.CamelInternalProcessorAdvice;
 import org.apache.camel.processor.ContractAdvice;
 import org.apache.camel.processor.Pipeline;
+import org.apache.camel.reifier.RouteReifier;
+import org.apache.camel.reifier.rest.RestBindingReifier;
 import org.apache.camel.spi.Contract;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.ManagementInterceptStrategy;
@@ -112,7 +114,7 @@ public class DefaultRouteContext implements RouteContext {
     }
 
     public Endpoint resolveEndpoint(String uri) {
-        return route.resolveEndpoint(getCamelContext(), uri);
+        return new RouteReifier(route).resolveEndpoint(getCamelContext(), uri);
     }
 
     public Endpoint resolveEndpoint(String uri, String ref) {
@@ -203,7 +205,7 @@ public class DefaultRouteContext implements RouteContext {
             // wrap in REST binding
             if (route.getRestBindingDefinition() != null) {
                 try {
-                    internal.addAdvice(route.getRestBindingDefinition().createRestBindingAdvice(this));
+                    internal.addAdvice(new RestBindingReifier(route.getRestBindingDefinition()).createRestBindingAdvice(this));
                 } catch (Exception e) {
                     throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
index f039585..06a9d62 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.model.transformer.TransformerDefinition;
+import org.apache.camel.reifier.transformer.TransformerReifier;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Transformer;
 import org.apache.camel.spi.TransformerRegistry;
@@ -45,7 +46,7 @@ public class DefaultTransformerRegistry extends AbstractDynamicRegistry<Transfor
         super(context, CamelContextHelper.getMaximumTransformerCacheSize(context));
         this.aliasMap = new ConcurrentHashMap<>();
         for (TransformerDefinition def : definitions) {
-            Transformer transformer = def.createTransformer(context);
+            Transformer transformer = TransformerReifier.reifier(def).createTransformer(context);
             context.addService(transformer);
             put(createKey(def), transformer);
         }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
index 6619000..1332801 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultValidatorRegistry.java
@@ -21,6 +21,7 @@ import java.util.List;
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.validator.ValidatorKey;
 import org.apache.camel.model.validator.ValidatorDefinition;
+import org.apache.camel.reifier.validator.ValidatorReifier;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Validator;
 import org.apache.camel.spi.ValidatorRegistry;
@@ -39,7 +40,7 @@ public class DefaultValidatorRegistry extends AbstractDynamicRegistry<ValidatorK
     public DefaultValidatorRegistry(CamelContext context, List<ValidatorDefinition> definitions) throws Exception {
         this(context);
         for (ValidatorDefinition def : definitions) {
-            Validator validator = def.createValidator(context);
+            Validator validator = ValidatorReifier.reifier(def).createValidator(context);
             context.addService(validator);
             put(createKey(def), validator);
         }
diff --git a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
index 3bad006..dd57145 100644
--- a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
@@ -29,26 +29,19 @@ import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.AggregationStrategyClause;
 import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.builder.PredicateClause;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.CamelInternalProcessor;
 import org.apache.camel.processor.aggregate.AggregateController;
-import org.apache.camel.processor.aggregate.AggregateProcessor;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.processor.aggregate.ClosedCorrelationKeyException;
 import org.apache.camel.processor.aggregate.OptimisticLockRetryPolicy;
 import org.apache.camel.spi.AggregationRepository;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.concurrent.SynchronousExecutorService;
 
 /**
  * Aggregates many messages into a single message
@@ -170,133 +163,6 @@ public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return createAggregator(routeContext);
-    }
-
-    protected AggregateProcessor createAggregator(RouteContext routeContext) throws Exception {
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-
-        // wrap the aggregate route in a unit of work processor
-        CamelInternalProcessor internal = new CamelInternalProcessor(childProcessor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
-
-        Expression correlation = getExpression().createExpression(routeContext);
-        AggregationStrategy strategy = createAggregationStrategy(routeContext);
-
-        boolean parallel = getParallelProcessing() != null && getParallelProcessing();
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, parallel);
-        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "Aggregator", this, parallel);
-        if (threadPool == null && !parallel) {
-            // executor service is mandatory for the Aggregator
-            // we do not run in parallel mode, but use a synchronous executor, so we run in current thread
-            threadPool = new SynchronousExecutorService();
-            shutdownThreadPool = true;
-        }
-
-        AggregateProcessor answer = new AggregateProcessor(routeContext.getCamelContext(), internal,
-                correlation, strategy, threadPool, shutdownThreadPool);
-
-        AggregationRepository repository = createAggregationRepository(routeContext);
-        if (repository != null) {
-            answer.setAggregationRepository(repository);
-        }
-
-        if (getAggregateController() == null && getAggregateControllerRef() != null) {
-            setAggregateController(routeContext.mandatoryLookup(getAggregateControllerRef(), AggregateController.class));
-        }
-
-        // this EIP supports using a shared timeout checker thread pool or fallback to create a new thread pool
-        boolean shutdownTimeoutThreadPool = false;
-        ScheduledExecutorService timeoutThreadPool = timeoutCheckerExecutorService;
-        if (timeoutThreadPool == null && timeoutCheckerExecutorServiceRef != null) {
-            // lookup existing thread pool
-            timeoutThreadPool = routeContext.getCamelContext().getRegistry().lookupByNameAndType(timeoutCheckerExecutorServiceRef, ScheduledExecutorService.class);
-            if (timeoutThreadPool == null) {
-                // then create a thread pool assuming the ref is a thread pool profile id
-                timeoutThreadPool = routeContext.getCamelContext().getExecutorServiceManager().newScheduledThreadPool(this,
-                        AggregateProcessor.AGGREGATE_TIMEOUT_CHECKER, timeoutCheckerExecutorServiceRef);
-                if (timeoutThreadPool == null) {
-                    throw new IllegalArgumentException("ExecutorServiceRef " + timeoutCheckerExecutorServiceRef 
-                            + " not found in registry (as an ScheduledExecutorService instance) or as a thread pool profile.");
-                }
-                shutdownTimeoutThreadPool = true;
-            }
-        }
-        answer.setTimeoutCheckerExecutorService(timeoutThreadPool);
-        answer.setShutdownTimeoutCheckerExecutorService(shutdownTimeoutThreadPool);
-
-        // set other options
-        answer.setParallelProcessing(parallel);
-        if (getOptimisticLocking() != null) {
-            answer.setOptimisticLocking(getOptimisticLocking());
-        }
-        if (getCompletionPredicate() != null) {
-            Predicate predicate = getCompletionPredicate().createPredicate(routeContext);
-            answer.setCompletionPredicate(predicate);
-        } else if (strategy instanceof Predicate) {
-            // if aggregation strategy implements predicate and was not configured then use as fallback
-            log.debug("Using AggregationStrategy as completion predicate: {}", strategy);
-            answer.setCompletionPredicate((Predicate) strategy);
-        }
-        if (getCompletionTimeoutExpression() != null) {
-            Expression expression = getCompletionTimeoutExpression().createExpression(routeContext);
-            answer.setCompletionTimeoutExpression(expression);
-        }
-        if (getCompletionTimeout() != null) {
-            answer.setCompletionTimeout(getCompletionTimeout());
-        }
-        if (getCompletionInterval() != null) {
-            answer.setCompletionInterval(getCompletionInterval());
-        }
-        if (getCompletionSizeExpression() != null) {
-            Expression expression = getCompletionSizeExpression().createExpression(routeContext);
-            answer.setCompletionSizeExpression(expression);
-        }
-        if (getCompletionSize() != null) {
-            answer.setCompletionSize(getCompletionSize());
-        }
-        if (getCompletionFromBatchConsumer() != null) {
-            answer.setCompletionFromBatchConsumer(getCompletionFromBatchConsumer());
-        }
-        if (getCompletionOnNewCorrelationGroup() != null) {
-            answer.setCompletionOnNewCorrelationGroup(getCompletionOnNewCorrelationGroup());
-        }
-        if (getEagerCheckCompletion() != null) {
-            answer.setEagerCheckCompletion(getEagerCheckCompletion());
-        }
-        if (getIgnoreInvalidCorrelationKeys() != null) {
-            answer.setIgnoreInvalidCorrelationKeys(getIgnoreInvalidCorrelationKeys());
-        }
-        if (getCloseCorrelationKeyOnCompletion() != null) {
-            answer.setCloseCorrelationKeyOnCompletion(getCloseCorrelationKeyOnCompletion());
-        }
-        if (getDiscardOnCompletionTimeout() != null) {
-            answer.setDiscardOnCompletionTimeout(getDiscardOnCompletionTimeout());
-        }
-        if (getForceCompletionOnStop() != null) {
-            answer.setForceCompletionOnStop(getForceCompletionOnStop());
-        }
-        if (getCompleteAllOnStop() != null) {
-            answer.setCompleteAllOnStop(getCompleteAllOnStop());
-        }
-        if (optimisticLockRetryPolicy == null) {
-            if (getOptimisticLockRetryPolicyDefinition() != null) {
-                answer.setOptimisticLockRetryPolicy(getOptimisticLockRetryPolicyDefinition().createOptimisticLockRetryPolicy());
-            }
-        } else {
-            answer.setOptimisticLockRetryPolicy(optimisticLockRetryPolicy);
-        }
-        if (getAggregateController() != null) {
-            answer.setAggregateController(getAggregateController());
-        }
-        if (getCompletionTimeoutCheckerInterval() != null) {
-            answer.setCompletionTimeoutCheckerInterval(getCompletionTimeoutCheckerInterval());
-        }
-        return answer;
-    }
-
-    @Override
     public void configureChild(ProcessorDefinition<?> output) {
         if (expression instanceof ExpressionClause) {
             ExpressionClause<?> clause = (ExpressionClause<?>) expression;
@@ -314,43 +180,6 @@ public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition
         }
     }
 
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
-        AggregationStrategy strategy = getAggregationStrategy();
-        if (strategy == null && strategyRef != null) {
-            Object aggStrategy = routeContext.lookup(strategyRef, Object.class);
-            if (aggStrategy instanceof AggregationStrategy) {
-                strategy = (AggregationStrategy) aggStrategy;
-            } else if (aggStrategy != null) {
-                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, getAggregationStrategyMethodName());
-                if (getStrategyMethodAllowNull() != null) {
-                    adapter.setAllowNullNewExchange(getStrategyMethodAllowNull());
-                    adapter.setAllowNullOldExchange(getStrategyMethodAllowNull());
-                }
-                strategy = adapter;
-            } else {
-                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + strategyRef);
-            }
-        }
-
-        if (strategy == null) {
-            throw new IllegalArgumentException("AggregationStrategy or AggregationStrategyRef must be set on " + this);
-        }
-
-        if (strategy instanceof CamelContextAware) {
-            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
-        }
-
-        return strategy;
-    }
-
-    private AggregationRepository createAggregationRepository(RouteContext routeContext) {
-        AggregationRepository repository = getAggregationRepository();
-        if (repository == null && aggregationRepositoryRef != null) {
-            repository = routeContext.mandatoryLookup(aggregationRepositoryRef, AggregationRepository.class);
-        }
-        return repository;
-    }
-
     public AggregationStrategy getAggregationStrategy() {
         return aggregationStrategy;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java b/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
index 9557204..b03c05b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
@@ -22,20 +22,7 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.bean.BeanHolder;
-import org.apache.camel.component.bean.BeanInfo;
-import org.apache.camel.component.bean.BeanProcessor;
-import org.apache.camel.component.bean.ConstantBeanHolder;
-import org.apache.camel.component.bean.ConstantStaticTypeBeanHolder;
-import org.apache.camel.component.bean.ConstantTypeBeanHolder;
-import org.apache.camel.component.bean.MethodNotFoundException;
-import org.apache.camel.component.bean.RegistryBean;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Calls a java bean
@@ -131,6 +118,10 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
         this.bean = bean;
     }
 
+    public Object getBean() {
+        return bean;
+    }
+
     public String getBeanType() {
         return beanType;
     }
@@ -142,6 +133,10 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
         this.beanType = beanType;
     }
 
+    public Class<?> getBeanClass() {
+        return beanClass;
+    }
+
     /**
      * Sets the Class of the bean
      */
@@ -163,114 +158,4 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
     // Fluent API
     //-------------------------------------------------------------------------
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        BeanProcessor answer;
-        Class<?> clazz = bean != null ? bean.getClass() : null;
-        BeanHolder beanHolder;
-
-        if (ObjectHelper.isNotEmpty(ref)) {
-            // lets cache by default
-            if (isCacheBean()) {
-                // cache the registry lookup which avoids repeat lookup in the registry
-                beanHolder = new RegistryBean(routeContext.getCamelContext(), ref).createCacheHolder();
-                // bean holder will check if the bean exists
-                bean = beanHolder.getBean();
-            } else {
-                // we do not cache so we invoke on-demand
-                beanHolder = new RegistryBean(routeContext.getCamelContext(), ref);
-            }
-            answer = new BeanProcessor(beanHolder);
-        } else {
-            if (bean == null) {
-                
-                if (beanType == null && beanClass == null) {
-                    throw new IllegalArgumentException("bean, ref or beanType must be provided");
-                }
-
-                // the clazz is either from beanType or beanClass
-                if (beanType != null) {
-                    try {
-                        clazz = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(beanType);
-                    } catch (ClassNotFoundException e) {
-                        throw RuntimeCamelException.wrapRuntimeCamelException(e);
-                    }
-                } else {
-                    clazz = beanClass;
-                }
-
-                // attempt to create bean using injector which supports auto-wiring
-                if (isCacheBean() && routeContext.getCamelContext().getInjector().supportsAutoWiring()) {
-                    try {
-                        log.debug("Attempting to create new bean instance from class: {} via auto-wiring enabled", clazz);
-                        bean = CamelContextHelper.newInstance(routeContext.getCamelContext(), clazz);
-                    } catch (Throwable e) {
-                        log.debug("Error creating new bean instance from class: " + clazz + ". This exception is ignored", e);
-                    }
-                }
-
-                // create a bean if there is a default public no-arg constructor
-                if (bean == null && isCacheBean() && ObjectHelper.hasDefaultPublicNoArgConstructor(clazz)) {
-                    log.debug("Class has default no-arg constructor so creating a new bean instance: {}", clazz);
-                    bean = CamelContextHelper.newInstance(routeContext.getCamelContext(), clazz);
-                    ObjectHelper.notNull(bean, "bean", this);
-                }
-            }
-
-            // validate the bean type is not from java so you by mistake think its a reference
-            // to a bean name but the String is being invoke instead
-            if (bean instanceof String) {
-                throw new IllegalArgumentException("The bean instance is a java.lang.String type: " + bean
-                    + ". We suppose you want to refer to a bean instance by its id instead. Please use ref.");
-            }
-
-            // the holder should either be bean or type based
-            if (bean != null) {
-                beanHolder = new ConstantBeanHolder(bean, routeContext.getCamelContext());
-            } else {
-                if (isCacheBean() && ObjectHelper.hasDefaultPublicNoArgConstructor(clazz)) {
-                    // we can only cache if we can create an instance of the bean, and for that we need a public constructor
-                    beanHolder = new ConstantTypeBeanHolder(clazz, routeContext.getCamelContext()).createCacheHolder();
-                } else {
-                    if (ObjectHelper.hasDefaultPublicNoArgConstructor(clazz)) {
-                        beanHolder = new ConstantTypeBeanHolder(clazz, routeContext.getCamelContext());
-                    } else {
-                        // this is only for invoking static methods on the bean
-                        beanHolder = new ConstantStaticTypeBeanHolder(clazz, routeContext.getCamelContext());
-                    }
-                }
-            }
-            answer = new BeanProcessor(beanHolder);
-        }
-        
-        // check for method exists
-        if (method != null) {
-            answer.setMethod(method);
-
-            // check there is a method with the given name, and leverage BeanInfo for that
-            // which we only do if we are caching the bean as otherwise we will create a bean instance for this check
-            // which we only want to do if we cache the bean
-            if (isCacheBean()) {
-                BeanInfo beanInfo = beanHolder.getBeanInfo();
-                if (bean != null) {
-                    // there is a bean instance, so check for any methods
-                    if (!beanInfo.hasMethod(method)) {
-                        throw RuntimeCamelException.wrapRuntimeCamelException(new MethodNotFoundException(null, bean, method));
-                    }
-                } else if (clazz != null) {
-                    // there is no bean instance, so check for static methods only
-                    if (!beanInfo.hasStaticMethod(method)) {
-                        throw RuntimeCamelException.wrapRuntimeCamelException(new MethodNotFoundException(null, clazz, method, true));
-                    }
-                }
-            }
-        }
-
-        return answer;
-    }
-
-    private boolean isCacheBean() {
-        return cache == null || cache;
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java b/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
index 41e9780..dccc118 100644
--- a/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
@@ -26,13 +26,9 @@ import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.CatchProcessor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Catches exceptions as part of a try, catch, finally block
@@ -82,39 +78,6 @@ public class CatchDefinition extends ProcessorDefinition<CatchDefinition> {
     }
 
     @Override
-    public CatchProcessor createProcessor(RouteContext routeContext) throws Exception {
-        // create and load exceptions if not done
-        if (exceptionClasses == null) {
-            exceptionClasses = createExceptionClasses(routeContext.getCamelContext());
-        }
-
-        // must have at least one exception
-        if (exceptionClasses.isEmpty()) {
-            throw new IllegalArgumentException("At least one Exception must be configured to catch");
-        }
-
-        // parent must be a try
-        if (!(getParent() instanceof TryDefinition)) {
-            throw new IllegalArgumentException("This doCatch should have a doTry as its parent on " + this);
-        }
-
-        // do catch does not mandate a child processor
-        Processor childProcessor = this.createChildProcessor(routeContext, false);
-
-        Predicate when = null;
-        if (onWhen != null) {
-            when = onWhen.getExpression().createPredicate(routeContext);
-        }
-
-        Predicate handle = handledPolicy;
-        if (handled != null) {
-            handle = handled.createPredicate(routeContext);
-        }
-
-        return new CatchProcessor(exceptionClasses, childProcessor, when, handle);
-    }
-
-    @Override
     public List<ProcessorDefinition<?>> getOutputs() {
         return outputs;
     }
@@ -224,15 +187,4 @@ public class CatchDefinition extends ProcessorDefinition<CatchDefinition> {
         this.handled = handled;
     }
 
-    protected List<Class<? extends Throwable>> createExceptionClasses(CamelContext context) 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 etc.
-        List<String> list = getExceptions();
-        List<Class<? extends Throwable>> answer = new ArrayList<>(list.size());
-        for (String name : list) {
-            Class<Throwable> type = context.getClassResolver().resolveMandatoryClass(name, Throwable.class);
-            answer.add(type);
-        }
-        return answer;
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
index 7df7d3c..eea5789 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
@@ -27,14 +27,9 @@ import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionClause;
-import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.ChoiceProcessor;
-import org.apache.camel.processor.FilterProcessor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
@@ -130,31 +125,6 @@ public class ChoiceDefinition extends ProcessorDefinition<ChoiceDefinition> {
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        List<FilterProcessor> filters = new ArrayList<>();
-        for (WhenDefinition whenClause : whenClauses) {
-            // also resolve properties and constant fields on embedded expressions in the when clauses
-            ExpressionNode exp = whenClause;
-            ExpressionDefinition expressionDefinition = exp.getExpression();
-            if (expressionDefinition != null) {
-                // resolve properties before we create the processor
-                ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), expressionDefinition);
-
-                // resolve constant fields (eg Exchange.FILE_NAME)
-                ProcessorDefinitionHelper.resolveKnownConstantFields(expressionDefinition);
-            }
-
-            FilterProcessor filter = (FilterProcessor) createProcessor(routeContext, whenClause);
-            filters.add(filter);
-        }
-        Processor otherwiseProcessor = null;
-        if (otherwise != null) {
-            otherwiseProcessor = createProcessor(routeContext, otherwise);
-        }
-        return new ChoiceProcessor(filters, otherwiseProcessor);
-    }
-
-    @Override
     public void addOutput(ProcessorDefinition<?> output) {
         if (onlyWhenOrOtherwise) {
             if (output instanceof WhenDefinition || output instanceof OtherwiseDefinition) {
diff --git a/camel-core/src/main/java/org/apache/camel/model/ClaimCheckDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ClaimCheckDefinition.java
index 4896f5a..334ad6c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ClaimCheckDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ClaimCheckDefinition.java
@@ -22,15 +22,9 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.ClaimCheckProcessor;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.EndpointHelper;
-import org.apache.camel.support.ObjectHelper;
 
 /**
  * The Claim Check EIP allows you to replace message content with a claim check (a unique key),
@@ -76,92 +70,6 @@ public class ClaimCheckDefinition extends NoOutputDefinition<ClaimCheckDefinitio
         return "claimCheck";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        org.apache.camel.util.ObjectHelper.notNull(operation, "operation", this);
-
-        ClaimCheckProcessor claim = new ClaimCheckProcessor();
-        claim.setOperation(operation.name());
-        claim.setKey(getKey());
-        claim.setFilter(getFilter());
-
-        AggregationStrategy strategy = createAggregationStrategy(routeContext);
-        if (strategy != null) {
-            claim.setAggregationStrategy(strategy);
-        }
-
-        // only filter or aggregation strategy can be configured not both
-        if (getFilter() != null && strategy != null) {
-            throw new IllegalArgumentException("Cannot use both filter and custom aggregation strategy on ClaimCheck EIP");
-        }
-
-        // validate filter, we cannot have both +/- at the same time
-        if (getFilter() != null) {
-            Iterable<?> it = ObjectHelper.createIterable(filter, ",");
-            boolean includeBody = false;
-            boolean excludeBody = false;
-            for (Object o : it) {
-                String pattern = o.toString();
-                if ("body".equals(pattern) || "+body".equals(pattern)) {
-                    includeBody = true;
-                } else if ("-body".equals(pattern)) {
-                    excludeBody = true;
-                }
-            }
-            if (includeBody && excludeBody) {
-                throw new IllegalArgumentException("Cannot have both include and exclude body at the same time in the filter: " + filter);
-            }
-            boolean includeHeaders = false;
-            boolean excludeHeaders = false;
-            for (Object o : it) {
-                String pattern = o.toString();
-                if ("headers".equals(pattern) || "+headers".equals(pattern)) {
-                    includeHeaders = true;
-                } else if ("-headers".equals(pattern)) {
-                    excludeHeaders = true;
-                }
-            }
-            if (includeHeaders && excludeHeaders) {
-                throw new IllegalArgumentException("Cannot have both include and exclude headers at the same time in the filter: " + filter);
-            }
-            boolean includeHeader = false;
-            boolean excludeHeader = false;
-            for (Object o : it) {
-                String pattern = o.toString();
-                if (pattern.startsWith("header:") || pattern.startsWith("+header:")) {
-                    includeHeader = true;
-                } else if (pattern.startsWith("-header:")) {
-                    excludeHeader = true;
-                }
-            }
-            if (includeHeader && excludeHeader) {
-                throw new IllegalArgumentException("Cannot have both include and exclude header at the same time in the filter: " + filter);
-            }
-        }
-
-        return claim;
-    }
-
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
-        AggregationStrategy strategy = getAggregationStrategy();
-        if (strategy == null && aggregationStrategyRef != null) {
-            Object aggStrategy = routeContext.lookup(aggregationStrategyRef, Object.class);
-            if (aggStrategy instanceof AggregationStrategy) {
-                strategy = (AggregationStrategy) aggStrategy;
-            } else if (aggStrategy != null) {
-                strategy = new AggregationStrategyBeanAdapter(aggStrategy, getAggregationStrategyMethodName());
-            } else {
-                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + aggregationStrategyRef);
-            }
-        }
-
-        if (strategy instanceof CamelContextAware) {
-            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
-        }
-
-        return strategy;
-    }
-
     // Fluent API
     //-------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java
index 09b8b30..dcedc9b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ConvertBodyDefinition.java
@@ -16,19 +16,13 @@
  */
 package org.apache.camel.model;
 
-import java.nio.charset.Charset;
-import java.nio.charset.UnsupportedCharsetException;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.ConvertBodyProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Converts the message body to another type
@@ -77,30 +71,6 @@ public class ConvertBodyDefinition extends NoOutputDefinition<ConvertBodyDefinit
         return "convertBodyTo[" + getType() + "]";
     }
     
-    public static void validateCharset(String charset) throws UnsupportedCharsetException {
-        if (charset != null) {
-            if (Charset.isSupported(charset)) {
-                Charset.forName(charset);
-                return;
-            }
-        }
-        throw new UnsupportedCharsetException(charset);
-    }
-
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        if (typeClass == null && type != null) {
-            typeClass = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(type);
-        }
-
-        // validate charset
-        if (charset != null) {
-            validateCharset(charset);
-        }
-
-        return new ConvertBodyProcessor(getTypeClass(), getCharset());
-    }
-
     public String getType() {
         return type;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java b/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
index 64ec97e..574de03 100644
--- a/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
@@ -17,7 +17,6 @@
 package org.apache.camel.model;
 
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ScheduledExecutorService;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -26,12 +25,9 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.Delayer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Delays processing for a specified length of time
@@ -74,36 +70,6 @@ public class DelayDefinition extends ExpressionNode implements ExecutorServiceAw
         return "Delay[" + getExpression() + " -> " + getOutputs() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor childProcessor = this.createChildProcessor(routeContext, false);
-        Expression delay = createAbsoluteTimeDelayExpression(routeContext);
-
-        boolean async = getAsyncDelayed() != null && getAsyncDelayed();
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, async);
-        ScheduledExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredScheduledExecutorService(routeContext, "Delay", this, async);
-
-        Delayer answer = new Delayer(routeContext.getCamelContext(), childProcessor, delay, threadPool, shutdownThreadPool);
-        if (getAsyncDelayed() != null) {
-            answer.setAsyncDelayed(getAsyncDelayed());
-        }
-        if (getCallerRunsWhenRejected() == null) {
-            // should be default true
-            answer.setCallerRunsWhenRejected(true);
-        } else {
-            answer.setCallerRunsWhenRejected(getCallerRunsWhenRejected());
-        }
-        return answer;
-    }
-
-    private Expression createAbsoluteTimeDelayExpression(RouteContext routeContext) {
-        ExpressionDefinition expr = getExpression();
-        if (expr != null) {
-            return expr.createExpression(routeContext);
-        }
-        return null;
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
index f2307f6..a4c2073 100644
--- a/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
@@ -24,15 +24,9 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.AsyncProcessor;
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
-import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.DynamicRouter;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Routes messages based on dynamic rules
@@ -78,30 +72,6 @@ public class DynamicRouterDefinition<Type extends ProcessorDefinition<Type>> ext
         return Collections.emptyList();
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Expression expression = getExpression().createExpression(routeContext);
-        String delimiter = getUriDelimiter() != null ? getUriDelimiter() : DEFAULT_DELIMITER;
-
-        DynamicRouter dynamicRouter = new DynamicRouter(routeContext.getCamelContext(), expression, delimiter);
-        if (getIgnoreInvalidEndpoints() != null) {
-            dynamicRouter.setIgnoreInvalidEndpoints(getIgnoreInvalidEndpoints());
-        }
-        if (getCacheSize() != null) {
-            dynamicRouter.setCacheSize(getCacheSize());
-        }
-
-        // and wrap this in an error handler
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
-        // create error handler (create error handler directly to keep it light weight,
-        // instead of using ProcessorDefinition.wrapInErrorHandler)
-        AsyncProcessor errorHandler = (AsyncProcessor) builder.createErrorHandler(routeContext, dynamicRouter.newRoutingSlipProcessorForErrorHandler());
-        dynamicRouter.setErrorHandler(errorHandler);
-
-        return dynamicRouter;
-    }
-
     /**
      * Expression to call that returns the endpoint(s) to route to in the dynamic routing.
      * <p/>
diff --git a/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java b/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
index 95011d2..fc8c1d0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
@@ -22,21 +22,14 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Expression;
-import org.apache.camel.Processor;
-import org.apache.camel.impl.DefaultProducerCache;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.Enricher;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Enriches a message with data from a secondary resource
  *
- * @see Enricher
+ * @see org.apache.camel.processor.Enricher
  */
 @Metadata(label = "eip,transformation")
 @XmlRootElement(name = "enrich")
@@ -82,51 +75,6 @@ public class EnrichDefinition extends NoOutputExpressionNode {
         return "enrich[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-
-        Expression exp = getExpression().createExpression(routeContext);
-        boolean isShareUnitOfWork = getShareUnitOfWork() != null && getShareUnitOfWork();
-        boolean isIgnoreInvalidEndpoint = getIgnoreInvalidEndpoint() != null && getIgnoreInvalidEndpoint();
-
-        Enricher enricher = new Enricher(exp);
-        enricher.setShareUnitOfWork(isShareUnitOfWork);
-        enricher.setIgnoreInvalidEndpoint(isIgnoreInvalidEndpoint);
-        AggregationStrategy strategy = createAggregationStrategy(routeContext);
-        if (strategy != null) {
-            enricher.setAggregationStrategy(strategy);
-        }
-        if (aggregateOnException != null) {
-            enricher.setAggregateOnException(aggregateOnException);
-        }
-        return enricher;
-    }
-
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
-        AggregationStrategy strategy = getAggregationStrategy();
-        if (strategy == null && aggregationStrategyRef != null) {
-            Object aggStrategy = routeContext.lookup(aggregationStrategyRef, Object.class);
-            if (aggStrategy instanceof AggregationStrategy) {
-                strategy = (AggregationStrategy) aggStrategy;
-            } else if (aggStrategy != null) {
-                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, getAggregationStrategyMethodName());
-                if (getAggregationStrategyMethodAllowNull() != null) {
-                    adapter.setAllowNullNewExchange(getAggregationStrategyMethodAllowNull());
-                    adapter.setAllowNullOldExchange(getAggregationStrategyMethodAllowNull());
-                }
-                strategy = adapter;
-            } else {
-                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + aggregationStrategyRef);
-            }
-        }
-
-        if (strategy instanceof CamelContextAware) {
-            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
-        }
-
-        return strategy;
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java b/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
index bf46b3c..edd0dd9 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
@@ -26,11 +26,8 @@ import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * A base class for nodes which contain an expression and a number of outputs
@@ -93,28 +90,6 @@ public abstract class ExpressionNode extends ProcessorDefinition<ExpressionNode>
         return getExpression().getLabel();
     }
 
-    /**
-     * Creates the {@link FilterProcessor} from the expression node.
-     *
-     * @param routeContext  the route context
-     * @return the created {@link FilterProcessor}
-     * @throws Exception is thrown if error creating the processor
-     */
-    protected FilterProcessor createFilterProcessor(RouteContext routeContext) throws Exception {
-        Processor childProcessor = createOutputsProcessor(routeContext);
-        return new FilterProcessor(createPredicate(routeContext), childProcessor);
-    }
-
-    /**
-     * Creates the {@link Predicate} from the expression node.
-     *
-     * @param routeContext  the route context
-     * @return the created predicate
-     */
-    protected Predicate createPredicate(RouteContext routeContext) {
-        return getExpression().createPredicate(routeContext);
-    }
-
     @Override
     public void configureChild(ProcessorDefinition<?> output) {
         // reuse the logic from pre create processor
@@ -122,10 +97,10 @@ public abstract class ExpressionNode extends ProcessorDefinition<ExpressionNode>
     }
 
     @Override
-    protected void preCreateProcessor() {
-        Expression exp = expression;
-        if (expression != null && expression.getExpressionValue() != null) {
-            exp = expression.getExpressionValue();
+    public void preCreateProcessor() {
+        Expression exp = getExpression();
+        if (getExpression() != null && getExpression().getExpressionValue() != null) {
+            exp = getExpression().getExpressionValue();
         }
 
         if (exp instanceof ExpressionClause) {
@@ -135,17 +110,18 @@ public abstract class ExpressionNode extends ProcessorDefinition<ExpressionNode>
                 // ExpressionClause which is a fancy builder to define expressions and predicates
                 // using fluent builders in the DSL. However we need afterwards a callback to
                 // reset the expression to the expression type the ExpressionClause did build for us
-                expression = clause.getExpressionType();
+                setExpression(clause.getExpressionType());
             }
         }
 
-        if (expression != null && expression.getExpression() == null) {
+        if (getExpression() != null && getExpression().getExpression() == null) {
             // use toString from predicate or expression so we have some information to show in the route model
-            if (expression.getPredicate() != null) {
-                expression.setExpression(expression.getPredicate().toString());
-            } else if (expression.getExpressionValue() != null) {
-                expression.setExpression(expression.getExpressionValue().toString());
+            if (getExpression().getPredicate() != null) {
+                getExpression().setExpression(getExpression().getPredicate().toString());
+            } else if (getExpression().getExpressionValue() != null) {
+                getExpression().setExpression(getExpression().getExpressionValue().toString());
             }
         }
     }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
index f1c1e3b..9bd2c2e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
@@ -21,12 +21,9 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.FilterProcessor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Filter out messages based using a predicate
@@ -62,18 +59,6 @@ public class FilterDefinition extends ExpressionNode {
         return "filter[" + getExpression() + "]";
     }
     
-    @Override
-    public FilterProcessor createProcessor(RouteContext routeContext) throws Exception {
-        return createFilterProcessor(routeContext);
-    }
-    
-    @Override
-    protected FilterProcessor createFilterProcessor(RouteContext routeContext) throws Exception {
-        // filter EIP should have child outputs
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-        return new FilterProcessor(createPredicate(routeContext), childProcessor);
-    }
-
     /**
      * Expression to determine if the message should be filtered or not. If the expression returns an empty value or <tt>false</tt>
      * then the message is filtered (dropped), otherwise the message is continued being routed.
diff --git a/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
index 8e7a943..4db9ee1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
@@ -20,10 +20,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.FinallyProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Path traversed when a try, catch, finally block exits
@@ -48,14 +45,4 @@ public class FinallyDefinition extends OutputDefinition<FinallyDefinition> {
         return "doFinally";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // parent must be a try
-        if (!(getParent() instanceof TryDefinition)) {
-            throw new IllegalArgumentException("This doFinally should have a doTry as its parent on " + this);
-        }
-
-        // do finally does mandate a child processor
-        return new FinallyProcessor(this.createChildProcessor(routeContext, false));
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java b/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java
index ed024c4..6271dda 100644
--- a/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java
@@ -28,9 +28,7 @@ import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Processor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Hystrix Circuit Breaker EIP
@@ -67,11 +65,6 @@ public class HystrixDefinition extends ProcessorDefinition<HystrixDefinition> {
         return "hystrix";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        throw new IllegalStateException("Cannot find camel-hystrix on the classpath.");
-    }
-
     public List<ProcessorDefinition<?>> getOutputs() {
         return outputs;
     }
@@ -111,7 +104,7 @@ public class HystrixDefinition extends ProcessorDefinition<HystrixDefinition> {
         return super.end();
     }
 
-    protected void preCreateProcessor() {
+    public void preCreateProcessor() {
         // move the fallback from outputs to fallback which we need to ensure
         // such as when using the XML DSL
         Iterator<ProcessorDefinition<?>> it = outputs.iterator();
diff --git a/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
index 5c84ae9..82d983a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
@@ -23,13 +23,9 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.idempotent.IdempotentConsumer;
 import org.apache.camel.spi.IdempotentRepository;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Filters out duplicate messages
@@ -221,37 +217,4 @@ public class IdempotentConsumerDefinition extends ExpressionNode {
         this.completionEager = completionEager;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-
-        IdempotentRepository<String> idempotentRepository = resolveMessageIdRepository(routeContext);
-        ObjectHelper.notNull(idempotentRepository, "idempotentRepository", this);
-
-        Expression expression = getExpression().createExpression(routeContext);
-
-        // these boolean should be true by default
-        boolean eager = getEager() == null || getEager();
-        boolean duplicate = getSkipDuplicate() == null || getSkipDuplicate();
-        boolean remove = getRemoveOnFailure() == null || getRemoveOnFailure();
-
-        // these boolean should be false by default
-        boolean completionEager = getCompletionEager() != null && getCompletionEager();
-
-        return new IdempotentConsumer(expression, idempotentRepository, eager, completionEager, duplicate, remove, childProcessor);
-    }
-
-    /**
-     * Strategy method to resolve the {@link org.apache.camel.spi.IdempotentRepository} to use
-     *
-     * @param routeContext route context
-     * @return the repository
-     */
-    @SuppressWarnings("unchecked")
-    protected <T> IdempotentRepository<T> resolveMessageIdRepository(RouteContext routeContext) {
-        if (messageIdRepositoryRef != null) {
-            idempotentRepository = routeContext.mandatoryLookup(messageIdRepositoryRef, IdempotentRepository.class);
-        }
-        return (IdempotentRepository<T>)idempotentRepository;
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
index a6ebd76..1a265c1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
@@ -24,15 +24,10 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.NamedNode;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
-import org.apache.camel.processor.Pipeline;
 import org.apache.camel.spi.AsPredicate;
-import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Intercepts a message at each step in the route
@@ -42,8 +37,6 @@ import org.apache.camel.spi.RouteContext;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class InterceptDefinition extends OutputDefinition<InterceptDefinition> {
     @XmlTransient
-    protected Processor output;
-    @XmlTransient
     protected final List<Processor> intercepted = new ArrayList<>();
 
     public InterceptDefinition() {
@@ -74,43 +67,6 @@ public class InterceptDefinition extends OutputDefinition<InterceptDefinition> {
         return true;
     }
 
-    @Override
-    public Processor createProcessor(final RouteContext routeContext) throws Exception {
-        // create the output processor
-        output = this.createChildProcessor(routeContext, true);
-
-        // add the output as a intercept strategy to the route context so its invoked on each processing step
-        routeContext.getInterceptStrategies().add(new InterceptStrategy() {
-            private Processor interceptedTarget;
-
-            public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
-                                                         Processor target, Processor nextTarget) throws Exception {
-                // store the target we are intercepting
-                this.interceptedTarget = target;
-
-                // remember the target that was intercepted
-                intercepted.add(interceptedTarget);
-
-                if (interceptedTarget != null) {
-                    // wrap in a pipeline so we continue routing to the next
-                    return Pipeline.newInstance(context, output, interceptedTarget);
-                } else {
-                    return output;
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "intercept[" + (interceptedTarget != null ? interceptedTarget : output) + "]";
-            }
-        });
-
-        // remove me from the route so I am not invoked in a regular route path
-        ((RouteDefinition) routeContext.getRoute()).getOutputs().remove(this);
-        // and return no processor to invoke next from me
-        return null;
-    }
-
     /**
      * Applies this interceptor only if the given predicate is true
      *
@@ -151,6 +107,10 @@ public class InterceptDefinition extends OutputDefinition<InterceptDefinition> {
         }
     }
 
+    public List<Processor> getIntercepted() {
+        return intercepted;
+    }
+
     public Processor getInterceptedProcessor(int index) {
         // avoid out of bounds
         if (index <= intercepted.size() - 1) {
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
index ffcf3ef..c945ae1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
@@ -21,11 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.ExpressionAdapter;
 
 /**
  * Intercepts incoming messages
@@ -69,29 +65,6 @@ public class InterceptFromDefinition extends InterceptDefinition {
         return true;
     }
 
-    @Override
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // insert a set header definition so we can set the intercepted endpoint uri as a header
-        // this allows us to use the same header for both the interceptFrom and interceptSendToEndpoint
-        SetHeaderDefinition headerDefinition = new SetHeaderDefinition(Exchange.INTERCEPTED_ENDPOINT, new ExpressionAdapter() {
-            public Object evaluate(Exchange exchange, Class type) {
-                if (exchange.getFromEndpoint() != null) {
-                    return exchange.getFromEndpoint().getEndpointUri();
-                } else {
-                    return null;
-                }
-            }
-
-            public String toString() {
-                return "";
-            }
-        });
-        getOutputs().add(0, headerDefinition);
-
-        return this.createChildProcessor(routeContext, true);
-    }
-
     public String getUri() {
         return uri;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
index 88cc783..44f68a8 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
@@ -16,25 +16,14 @@
  */
 package org.apache.camel.model;
 
-import java.util.List;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
-import org.apache.camel.impl.InterceptSendToEndpoint;
-import org.apache.camel.processor.InterceptEndpointProcessor;
 import org.apache.camel.spi.AsPredicate;
-import org.apache.camel.spi.EndpointStrategy;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.EndpointHelper;
-import org.apache.camel.util.URISupport;
 
 /**
  * Intercepts messages being sent to an endpoint
@@ -88,66 +77,6 @@ public class InterceptSendToEndpointDefinition extends OutputDefinition<Intercep
         return true;
     }
 
-    @Override
-    public Processor createProcessor(final RouteContext routeContext) throws Exception {
-        // create the detour
-        final Processor detour = this.createChildProcessor(routeContext, true);
-        final String matchURI = getUri();
-
-        // register endpoint callback so we can proxy the endpoint
-        routeContext.getCamelContext().addRegisterEndpointCallback(new EndpointStrategy() {
-            public Endpoint registerEndpoint(String uri, Endpoint endpoint) {
-                if (endpoint instanceof InterceptSendToEndpoint) {
-                    // endpoint already decorated
-                    return endpoint;
-                } else if (matchURI == null || matchPattern(routeContext.getCamelContext(), uri, matchURI)) {
-                    // only proxy if the uri is matched decorate endpoint with our proxy
-                    // should be false by default
-                    boolean skip = getSkipSendToOriginalEndpoint() != null && getSkipSendToOriginalEndpoint();
-                    InterceptSendToEndpoint proxy = new InterceptSendToEndpoint(endpoint, skip);
-                    proxy.setDetour(detour);
-                    return proxy;
-                } else {
-                    // no proxy so return regular endpoint
-                    return endpoint;
-                }
-            }
-        });
-
-
-        // remove the original intercepted route from the outputs as we do not intercept as the regular interceptor
-        // 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();
-        List<ProcessorDefinition<?>> outputs = route.getOutputs();
-        outputs.remove(this);
-
-        return new InterceptEndpointProcessor(matchURI, detour);
-    }
-
-    /**
-     * 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) {
-        // match using the pattern as-is
-        boolean match = EndpointHelper.matchEndpoint(camelContext, uri, pattern);
-        if (!match) {
-            try {
-                // the pattern could be an uri, so we need to normalize it before matching again
-                pattern = URISupport.normalizeUri(pattern);
-                match = EndpointHelper.matchEndpoint(camelContext, uri, pattern);
-            } catch (Exception e) {
-                // ignore
-            }
-        }
-        return match;
-    }
-
     /**
      * Applies this interceptor only if the given predicate is true
      *
diff --git a/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
index d1ca72b..09b2a07 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
@@ -28,7 +28,6 @@ import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition;
@@ -38,7 +37,6 @@ import org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition;
 import org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CollectionStringBuffer;
 
 /**
@@ -97,46 +95,6 @@ public class LoadBalanceDefinition extends ProcessorDefinition<LoadBalanceDefini
         loadBalancerType = loadbalancer;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // the load balancer is stateful so we should only create it once in case its used from a context scoped error handler
-
-        LoadBalancer loadBalancer = loadBalancerType.getLoadBalancer(routeContext);
-        if (loadBalancer == null) {
-            // then create it and reuse it
-            loadBalancer = loadBalancerType.createLoadBalancer(routeContext);
-            loadBalancerType.setLoadBalancer(loadBalancer);
-
-            // some load balancer can only support a fixed number of outputs
-            int max = loadBalancerType.getMaximumNumberOfOutputs();
-            int size = getOutputs().size();
-            if (size > max) {
-                throw new IllegalArgumentException("To many outputs configured on " + loadBalancerType + ": " + size + " > " + max);
-            }
-
-            for (ProcessorDefinition<?> processorType : getOutputs()) {
-                // output must not be another load balancer
-                // check for instanceof as the code below as there is compilation errors on earlier versions of JDK6
-                // on Windows boxes or with IBM JDKs etc.
-                if (LoadBalanceDefinition.class.isInstance(processorType)) {
-                    throw new IllegalArgumentException("Loadbalancer already configured to: " + loadBalancerType + ". Cannot set it to: " + processorType);
-                }
-                Processor processor = createProcessor(routeContext, processorType);
-                processor = wrapChannel(routeContext, processor, processorType);
-                loadBalancer.addProcessor(processor);
-            }
-        }
-
-        Boolean inherit = inheritErrorHandler;
-        if (loadBalancerType instanceof FailoverLoadBalancerDefinition) {
-            // special for failover load balancer where you can configure it to not inherit error handler for its children
-            // but the load balancer itself should inherit so Camels error handler can react afterwards
-            inherit = true;
-        }
-        Processor target = wrapChannel(routeContext, loadBalancer, this, inherit);
-        return target;
-    }
-    
     // Fluent API
     // -------------------------------------------------------------------------
 
@@ -148,7 +106,7 @@ public class LoadBalanceDefinition extends ProcessorDefinition<LoadBalanceDefini
      */
     public LoadBalanceDefinition loadBalance(LoadBalancer loadBalancer) {
         CustomLoadBalancerDefinition def = new CustomLoadBalancerDefinition();
-        def.setLoadBalancer(loadBalancer);
+        def.setCustomLoadBalancer(loadBalancer);
         setLoadBalancerType(def);
         return this;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java
index 778a949..b20df21 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LoadBalancerDefinition.java
@@ -27,9 +27,7 @@ import javax.xml.namespace.QName;
 
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.IntrospectionSupport;
-import org.apache.camel.util.StringHelper;
 
 /**
  * Balances message processing among a number of nodes
@@ -71,17 +69,17 @@ public class LoadBalancerDefinition extends IdentifiedType implements OtherAttri
     /**
      * Maximum number of outputs, as some load balancers only support 1 processor
      */
-    protected int getMaximumNumberOfOutputs() {
+    public int getMaximumNumberOfOutputs() {
         return Integer.MAX_VALUE;
     }
 
     /**
      * Allows derived classes to customize the load balancer
      */
-    protected void configureLoadBalancer(LoadBalancer loadBalancer) {
+    public void configureLoadBalancer(LoadBalancer loadBalancer) {
     }
 
-    public LoadBalancer getLoadBalancer(RouteContext routeContext) {
+    public LoadBalancer getLoadBalancer() {
         return loadBalancer;
     }
 
@@ -89,6 +87,10 @@ public class LoadBalancerDefinition extends IdentifiedType implements OtherAttri
         this.loadBalancer = loadBalancer;
     }
 
+    public String getLoadBalancerTypeName() {
+        return loadBalancerTypeName;
+    }
+
     @Override
     public Map<QName, Object> getOtherAttributes() {
         return otherAttributes;
@@ -99,25 +101,6 @@ public class LoadBalancerDefinition extends IdentifiedType implements OtherAttri
         this.otherAttributes = otherAttributes;
     }
 
-    /**
-     * Factory method to create the load balancer from the loadBalancerTypeName
-     */
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        StringHelper.notEmpty(loadBalancerTypeName, "loadBalancerTypeName", this);
-
-        LoadBalancer answer = null;
-        if (loadBalancerTypeName != null) {
-            Class<?> type = routeContext.getCamelContext().getClassResolver().resolveClass(loadBalancerTypeName, LoadBalancer.class);
-            if (type == null) {
-                throw new IllegalArgumentException("Cannot find class: " + loadBalancerTypeName + " in the classpath");
-            }
-            answer = (LoadBalancer) routeContext.getCamelContext().getInjector().newInstance(type);
-            configureLoadBalancer(answer);
-        }
-
-        return answer;
-    }
-
     @Override
     public String toString() {
         if (loadBalancer != null) {
diff --git a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
index e6b28d5..a482bf4 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
@@ -16,27 +16,14 @@
  */
 package org.apache.camel.model;
 
-import java.util.Map;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.DefaultMaskingFormatter;
-import org.apache.camel.processor.LogProcessor;
-import org.apache.camel.spi.MaskingFormatter;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.spi.CamelLogger;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -85,66 +72,6 @@ public class LogDefinition extends NoOutputDefinition<LogDefinition> {
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        StringHelper.notEmpty(message, "message", this);
-
-        // use simple language for the message string to give it more power
-        Expression exp = routeContext.getCamelContext().resolveLanguage("simple").createExpression(message);
-
-        // get logger explicitely set in the definition
-        Logger logger = this.getLogger();
-
-        // get logger which may be set in XML definition
-        if (logger == null && ObjectHelper.isNotEmpty(loggerRef)) {
-            logger = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), loggerRef, 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);
-            if (availableLoggers.size() == 1) {
-                logger = availableLoggers.values().iterator().next();
-                LOG.debug("Using custom Logger: {}", logger);
-            } else if (availableLoggers.size() > 1) {
-                // we should log about this somewhere...
-                LOG.debug("More than one {} instance found in the registry. Falling back to create logger by name.", Logger.class.getName());
-            }
-        }
-
-        if (logger == null) {
-            String name = getLogName();
-            if (name == null) {
-                name = routeContext.getCamelContext().getGlobalOption(Exchange.LOG_EIP_NAME);
-                if (name != null) {
-                    LOG.debug("Using logName from CamelContext properties: {}", name);
-                }
-            }
-            if (name == null) {
-                name = routeContext.getRoute().getId();
-                LOG.debug("LogName is not configured, using route id as logName: {}", name);
-            }
-            logger = LoggerFactory.getLogger(name);
-        }
-
-        // should be INFO by default
-        LoggingLevel level = getLoggingLevel() != null ? getLoggingLevel() : LoggingLevel.INFO;
-        CamelLogger camelLogger = new CamelLogger(logger, level, getMarker());
-
-        return new LogProcessor(exp, camelLogger, getMaskingFormatter(routeContext), routeContext.getCamelContext().getLogListeners());
-    }
-
-    private MaskingFormatter getMaskingFormatter(RouteContext routeContext) {
-        if (routeContext.isLogMask()) {
-            MaskingFormatter formatter = routeContext.getCamelContext().getRegistry().lookupByNameAndType(Constants.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
-            if (formatter == null) {
-                formatter = new DefaultMaskingFormatter();
-            }
-            return formatter;
-        }
-        return null;
-    }
-
-    @Override
     public void addOutput(ProcessorDefinition<?> output) {
         // add outputs on parent as this log does not support outputs
         getParent().addOutput(output);
diff --git a/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
index 68100f9..f53c3c6 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
@@ -23,11 +23,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.LoopProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Processes a message multiple times
@@ -108,22 +105,6 @@ public class LoopDefinition extends ExpressionNode {
         return "loop[" + getExpression() + "]";
     }
     
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor output = this.createChildProcessor(routeContext, true);
-        boolean isCopy = getCopy() != null && getCopy();
-        boolean isWhile = getDoWhile() != null && getDoWhile();
-
-        Predicate predicate = null;
-        Expression expression = null;
-        if (isWhile) {
-            predicate = getExpression().createPredicate(routeContext);
-        } else {
-            expression = getExpression().createExpression(routeContext);
-        }
-        return new LoopProcessor(output, expression, predicate, isCopy);
-    }
-
     /**
      * Expression to define how many times we should loop. Notice the expression is only evaluated once, and should return
      * a number as how many times to loop. A value of zero or negative means no looping. The loop is like a for-loop fashion,
diff --git a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
index 569cd66..7f4fe38 100644
--- a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
@@ -18,12 +18,10 @@ package org.apache.camel.model;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
 import org.apache.camel.model.dataformat.ASN1DataFormat;
 import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
@@ -62,10 +60,7 @@ import org.apache.camel.model.dataformat.XmlRpcDataFormat;
 import org.apache.camel.model.dataformat.YAMLDataFormat;
 import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
-import org.apache.camel.processor.MarshalProcessor;
-import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Marshals data into a specified format for transmission over a transport or component
@@ -157,9 +152,4 @@ public class MarshalDefinition extends NoOutputDefinition<MarshalDefinition> {
         this.dataFormatType = dataFormatType;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) {
-        DataFormat dataFormat = DataFormatDefinition.getDataFormat(routeContext, getDataFormatType(), null);
-        return new MarshalProcessor(dataFormat);
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java b/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
index aa19733..7c35301 100644
--- a/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.model;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.ExecutorService;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -26,18 +24,11 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.AggregationStrategyClause;
 import org.apache.camel.builder.ProcessClause;
-import org.apache.camel.processor.MulticastProcessor;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-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.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 /**
  *  Routes the same message to multiple paths either sequentially or in parallel.
@@ -95,19 +86,6 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i
         return "multicast";
     }
     
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor answer = this.createChildProcessor(routeContext, true);
-
-        // force the answer as a multicast processor even if there is only one child processor in the multicast
-        if (!(answer instanceof MulticastProcessor)) {
-            List<Processor> list = new ArrayList<>(1);
-            list.add(answer);
-            answer = createCompositeProcessor(routeContext, list);
-        }
-        return answer;
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
@@ -326,67 +304,6 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i
         return this;
     }
 
-    protected Processor createCompositeProcessor(RouteContext routeContext, List<Processor> list) throws Exception {
-        final AggregationStrategy strategy = createAggregationStrategy(routeContext);
-
-        boolean isParallelProcessing = getParallelProcessing() != null && getParallelProcessing();
-        boolean isShareUnitOfWork = getShareUnitOfWork() != null && getShareUnitOfWork();
-        boolean isStreaming = getStreaming() != null && getStreaming();
-        boolean isStopOnException = getStopOnException() != null && getStopOnException();
-        boolean isParallelAggregate = getParallelAggregate() != null && getParallelAggregate();
-        boolean isStopOnAggregateException = getStopOnAggregateException() != null && getStopOnAggregateException();
-
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, isParallelProcessing);
-        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "Multicast", this, isParallelProcessing);
-
-        long timeout = getTimeout() != null ? getTimeout() : 0;
-        if (timeout > 0 && !isParallelProcessing) {
-            throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
-        }
-        if (onPrepareRef != null) {
-            onPrepare = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), onPrepareRef, Processor.class);
-        }
-
-        MulticastProcessor answer = new MulticastProcessor(routeContext.getCamelContext(), list, strategy, isParallelProcessing,
-                                      threadPool, shutdownThreadPool, isStreaming, isStopOnException, timeout, onPrepare, isShareUnitOfWork, isParallelAggregate, isStopOnAggregateException);
-        return answer;
-    }
-
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
-        AggregationStrategy strategy = getAggregationStrategy();
-        if (strategy == null && strategyRef != null) {
-            Object aggStrategy = routeContext.lookup(strategyRef, Object.class);
-            if (aggStrategy instanceof AggregationStrategy) {
-                strategy = (AggregationStrategy) aggStrategy;
-            } else if (aggStrategy != null) {
-                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, getStrategyMethodName());
-                if (getStrategyMethodAllowNull() != null) {
-                    adapter.setAllowNullNewExchange(getStrategyMethodAllowNull());
-                    adapter.setAllowNullOldExchange(getStrategyMethodAllowNull());
-                }
-                strategy = adapter;
-            } else {
-                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + strategyRef);
-            }
-        }
-
-        if (strategy == null) {
-            // default to use latest aggregation strategy
-            strategy = new UseLatestAggregationStrategy();
-        }
-
-        if (strategy instanceof CamelContextAware) {
-            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
-        }
-
-        if (shareUnitOfWork != null && shareUnitOfWork) {
-            // wrap strategy in share unit of work
-            strategy = new ShareUnitOfWorkAggregationStrategy(strategy);
-        }
-
-        return strategy;
-    }
-
     public AggregationStrategy getAggregationStrategy() {
         return aggregationStrategy;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
index 6ce0781..eb28c3a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
@@ -34,11 +34,8 @@ import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
-import org.apache.camel.processor.CamelInternalProcessor;
-import org.apache.camel.processor.OnCompletionProcessor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Route to be executed when normal route processing completes
@@ -79,6 +76,10 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi
         return routeScoped != null ? routeScoped : false;
     }
 
+    public Boolean getRouteScoped() {
+        return routeScoped;
+    }
+
     public Processor getOnCompletion(String routeId) {
         return onCompletions.get(routeId);
     }
@@ -87,6 +88,10 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi
         return onCompletions.values();
     }
 
+    public void setOnCompletion(String routeId, Processor processor) {
+        onCompletions.put(routeId, processor);
+    }
+
     @Override
     public String toString() {
         return "onCompletion[" + getOutputs() + "]";
@@ -112,57 +117,6 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi
         return true;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // assign whether this was a route scoped onCompletion or not
-        // we need to know this later when setting the parent, as only route scoped should have parent
-        // Note: this logic can possible be removed when the Camel routing engine decides at runtime
-        // to apply onCompletion in a more dynamic fashion than current code base
-        // and therefore is in a better position to decide among context/route scoped OnCompletion at runtime
-        if (routeScoped == null) {
-            routeScoped = super.getParent() != null;
-        }
-
-        boolean isOnCompleteOnly = getOnCompleteOnly() != null && getOnCompleteOnly();
-        boolean isOnFailureOnly = getOnFailureOnly() != null && getOnFailureOnly();
-        boolean isParallelProcessing = getParallelProcessing() != null && getParallelProcessing();
-        boolean original = getUseOriginalMessagePolicy() != null && getUseOriginalMessagePolicy();
-
-        if (isOnCompleteOnly && isOnFailureOnly) {
-            throw new IllegalArgumentException("Both onCompleteOnly and onFailureOnly cannot be true. Only one of them can be true. On node: " + this);
-        }
-        if (original) {
-            // ensure allow original is turned on
-            routeContext.setAllowUseOriginalMessage(true);
-        }
-
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        String routeId = route.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
-
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-
-        // wrap the on completion route in a unit of work processor
-        CamelInternalProcessor internal = new CamelInternalProcessor(childProcessor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
-
-        onCompletions.put(routeId, internal);
-
-        Predicate when = null;
-        if (onWhen != null) {
-            when = onWhen.getExpression().createPredicate(routeContext);
-        }
-
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, isParallelProcessing);
-        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "OnCompletion", this, isParallelProcessing);
-
-        // should be after consumer by default
-        boolean afterConsumer = mode == null || mode == OnCompletionMode.AfterConsumer;
-
-        OnCompletionProcessor answer = new OnCompletionProcessor(routeContext.getCamelContext(), internal,
-                threadPool, shutdownThreadPool, isOnCompleteOnly, isOnFailureOnly, when, original, afterConsumer);
-        return answer;
-    }
-
     /**
      * Removes all existing {@link org.apache.camel.model.OnCompletionDefinition} from the definition.
      * <p/>
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
index 80e69f6..df3e8e7 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
@@ -35,16 +35,10 @@ import org.apache.camel.Expression;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
-import org.apache.camel.Route;
-import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ExpressionBuilder;
-import org.apache.camel.processor.CatchProcessor;
-import org.apache.camel.processor.FatalFallbackErrorHandler;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.spi.AsPredicate;
-import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.apache.camel.util.ObjectHelper;
@@ -119,6 +113,10 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
         return routeScoped != null ? routeScoped : false;
     }
 
+    public Boolean getRouteScoped() {
+        return routeScoped;
+    }
+
     @Override
     public String toString() {
         return "OnException[" + description() + " -> " + getOutputs() + "]";
@@ -175,81 +173,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
         }
     }
 
-    public void addRoutes(RouteContext routeContext, Collection<Route> routes) throws Exception {
-        // assign whether this was a route scoped onException or not
-        // we need to know this later when setting the parent, as only route scoped should have parent
-        // Note: this logic can possible be removed when the Camel routing engine decides at runtime
-        // to apply onException in a more dynamic fashion than current code base
-        // and therefore is in a better position to decide among context/route scoped OnException at runtime
-        if (routeScoped == null) {
-            routeScoped = super.getParent() != null;
-        }
-
-        setHandledFromExpressionType(routeContext);
-        setContinuedFromExpressionType(routeContext);
-        setRetryWhileFromExpressionType(routeContext);
-        setOnRedeliveryFromRedeliveryRef(routeContext);
-        setOnExceptionOccurredFromOnExceptionOccurredRef(routeContext);
-
-        // load exception classes
-        if (exceptions != null && !exceptions.isEmpty()) {
-            exceptionClasses = createExceptionClasses(routeContext.getCamelContext().getClassResolver());
-        }
-
-        // must validate configuration before creating processor
-        validateConfiguration();
-
-        if (useOriginalMessagePolicy != null && useOriginalMessagePolicy) {
-            // ensure allow original is turned on
-            routeContext.setAllowUseOriginalMessage(true);
-        }
-
-        // lets attach this on exception to the route error handler
-        Processor child = createOutputsProcessor(routeContext);
-        if (child != null) {
-            // wrap in our special safe fallback error handler if OnException have child output
-            Processor errorHandler = new FatalFallbackErrorHandler(child);
-            String id = routeContext.getRoute().getId();
-            errorHandlers.put(id, errorHandler);
-        }
-        // lookup the error handler builder
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) route.getErrorHandlerBuilder();
-        // and add this as error handlers
-        builder.addErrorHandlers(routeContext, this);
-    }
-
-    @Override
-    public CatchProcessor createProcessor(RouteContext routeContext) throws Exception {
-        // load exception classes
-        if (exceptions != null && !exceptions.isEmpty()) {
-            exceptionClasses = createExceptionClasses(routeContext.getCamelContext().getClassResolver());
-        }
-
-        if (useOriginalMessagePolicy != null && useOriginalMessagePolicy) {
-            // ensure allow original is turned on
-            routeContext.setAllowUseOriginalMessage(true);
-        }
-
-        // must validate configuration before creating processor
-        validateConfiguration();
-
-        Processor childProcessor = this.createChildProcessor(routeContext, false);
-
-        Predicate when = null;
-        if (onWhen != null) {
-            when = onWhen.getExpression().createPredicate(routeContext);
-        }
-
-        Predicate handle = null;
-        if (handled != null) {
-            handle = handled.createPredicate(routeContext);
-        }
-
-        return new CatchProcessor(getExceptionClasses(), childProcessor, when, handle);
-    }
-
-    protected void validateConfiguration() {
+    public void validateConfiguration() {
         if (isInheritErrorHandler() != null && isInheritErrorHandler()) {
             throw new IllegalArgumentException(this + " cannot have the inheritErrorHandler option set to true");
         }
@@ -871,6 +795,10 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
         return errorHandlers.values();
     }
 
+    public void setErrorHandler(String routeId, Processor errorHandler) {
+        errorHandlers.put(routeId, errorHandler);
+    }
+
     public RedeliveryPolicyDefinition getRedeliveryPolicy() {
         return redeliveryPolicyType;
     }
@@ -1008,50 +936,4 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
         return redeliveryPolicyType;
     }
 
-    protected List<Class<? extends Throwable>> createExceptionClasses(ClassResolver resolver) throws ClassNotFoundException {
-        List<String> list = getExceptions();
-        List<Class<? extends Throwable>> answer = new ArrayList<>(list.size());
-        for (String name : list) {
-            Class<? extends Throwable> type = resolver.resolveMandatoryClass(name, Throwable.class);
-            answer.add(type);
-        }
-        return answer;
-    }
-
-    private void setHandledFromExpressionType(RouteContext routeContext) {
-        if (getHandled() != null && handledPolicy == null && routeContext != null) {
-            handled(getHandled().createPredicate(routeContext));
-        }
-    }
-
-    private void setContinuedFromExpressionType(RouteContext routeContext) {
-        if (getContinued() != null && continuedPolicy == null && routeContext != null) {
-            continued(getContinued().createPredicate(routeContext));
-        }
-    }
-
-    private void setRetryWhileFromExpressionType(RouteContext routeContext) {
-        if (getRetryWhile() != null && retryWhilePolicy == null && routeContext != null) {
-            retryWhile(getRetryWhile().createPredicate(routeContext));
-        }
-    }
-
-    private void setOnRedeliveryFromRedeliveryRef(RouteContext routeContext) {
-        // lookup onRedelivery if ref is provided
-        if (ObjectHelper.isNotEmpty(onRedeliveryRef)) {
-            // if ref is provided then use mandatory lookup to fail if not found
-            Processor onRedelivery = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), onRedeliveryRef, Processor.class);
-            setOnRedelivery(onRedelivery);
-        }
-    }
-
-    private void setOnExceptionOccurredFromOnExceptionOccurredRef(RouteContext routeContext) {
-        // lookup onRedelivery if ref is provided
-        if (ObjectHelper.isNotEmpty(onExceptionOccurredRef)) {
-            // if ref is provided then use mandatory lookup to fail if not found
-            Processor onExceptionOccurred = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), onExceptionOccurredRef, Processor.class);
-            setOnExceptionOccurred(onExceptionOccurred);
-        }
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnFallbackDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnFallbackDefinition.java
index 637b6c6..5d460fd 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnFallbackDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnFallbackDefinition.java
@@ -23,9 +23,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CollectionStringBuffer;
 
 /**
@@ -53,11 +51,6 @@ public class OnFallbackDefinition extends OutputDefinition<OnFallbackDefinition>
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return this.createChildProcessor(routeContext, false);
-    }
-
-    @Override
     public String getShortName() {
         return "onFallback";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java
index 3866242..e03f7a2 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OtherwiseDefinition.java
@@ -22,9 +22,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CollectionStringBuffer;
 
 /**
@@ -44,11 +42,6 @@ public class OtherwiseDefinition extends OutputDefinition<OtherwiseDefinition> {
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return this.createChildProcessor(routeContext, false);
-    }
-
-    @Override
     public String getShortName() {
         return "otherwise";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
index b0a102a..1b6efd2 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
@@ -20,9 +20,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Routes the message to a sequence of processors.
@@ -45,7 +43,4 @@ public class PipelineDefinition extends OutputDefinition<PipelineDefinition> {
         return "pipeline";
     }
 
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return this.createChildProcessor(routeContext, true);
-    }
 }
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
index df5a63a..edc6e5a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
@@ -22,14 +22,9 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Processor;
-import org.apache.camel.Service;
-import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Defines a policy the route will use
@@ -61,6 +56,14 @@ public class PolicyDefinition extends OutputDefinition<PolicyDefinition> {
         return "Policy[" + description() + "]";
     }
     
+    public Policy getPolicy() {
+        return policy;
+    }
+
+    public Class<? extends Policy> getType() {
+        return type;
+    }
+
     protected String description() {
         if (policy != null) {
             return policy.toString();
@@ -133,33 +136,4 @@ public class PolicyDefinition extends OutputDefinition<PolicyDefinition> {
         return this;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Policy policy = resolvePolicy(routeContext);
-        ObjectHelper.notNull(policy, "policy", this);
-
-        // before wrap
-        policy.beforeWrap(routeContext, this);
-
-        // create processor after the before wrap
-        Processor childProcessor = this.createChildProcessor(routeContext, 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;
-    }
-
-    protected Policy resolvePolicy(RouteContext routeContext) {
-        if (policy != null) {
-            return policy;
-        }
-        // reuse code on transacted definition to do the resolution
-        return TransactedDefinition.doResolvePolicy(routeContext, getRef(), type);
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
index 87647d0..e1d375d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
@@ -22,16 +22,10 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumerCache;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.PollEnricher;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Enriches messages with data polled from a secondary resource
@@ -82,58 +76,6 @@ public class PollEnrichDefinition extends NoOutputExpressionNode {
         return "pollEnrich[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-
-        // if no timeout then we should block, and there use a negative timeout
-        long time = timeout != null ? timeout : -1;
-        boolean isIgnoreInvalidEndpoint = getIgnoreInvalidEndpoint() != null && getIgnoreInvalidEndpoint();
-        Expression exp = getExpression().createExpression(routeContext);
-
-        PollEnricher enricher = new PollEnricher(exp, time);
-
-        AggregationStrategy strategy = createAggregationStrategy(routeContext);
-        if (strategy == null) {
-            enricher.setDefaultAggregationStrategy();
-        } else {
-            enricher.setAggregationStrategy(strategy);
-        }
-        if (getAggregateOnException() != null) {
-            enricher.setAggregateOnException(getAggregateOnException());
-        }
-        if (getCacheSize() != null) {
-            enricher.setCacheSize(getCacheSize());
-        }
-        enricher.setIgnoreInvalidEndpoint(isIgnoreInvalidEndpoint);
-
-        return enricher;
-    }
-
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
-        AggregationStrategy strategy = getAggregationStrategy();
-        if (strategy == null && aggregationStrategyRef != null) {
-            Object aggStrategy = routeContext.lookup(aggregationStrategyRef, Object.class);
-            if (aggStrategy instanceof AggregationStrategy) {
-                strategy = (AggregationStrategy) aggStrategy;
-            } else if (aggStrategy != null) {
-                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, getAggregationStrategyMethodName());
-                if (getAggregationStrategyMethodAllowNull() != null) {
-                    adapter.setAllowNullNewExchange(getAggregationStrategyMethodAllowNull());
-                    adapter.setAllowNullOldExchange(getAggregationStrategyMethodAllowNull());
-                }
-                strategy = adapter;
-            } else {
-                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + aggregationStrategyRef);
-            }
-        }
-
-        if (strategy instanceof CamelContextAware) {
-            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
-        }
-
-        return strategy;
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
index 31c6da3..4e2829d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java
@@ -22,13 +22,8 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Processor;
-import org.apache.camel.Service;
-import org.apache.camel.processor.DelegateAsyncProcessor;
-import org.apache.camel.processor.DelegateSyncProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -79,6 +74,10 @@ public class ProcessDefinition extends NoOutputDefinition<ProcessDefinition> {
         }
     }
 
+    public Processor getProcessor() {
+        return processor;
+    }
+
     public String getRef() {
         return ref;
     }
@@ -90,25 +89,4 @@ public class ProcessDefinition extends NoOutputDefinition<ProcessDefinition> {
         this.ref = ref;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) {
-        Processor answer = processor;
-        if (processor == null) {
-            ObjectHelper.notNull(ref, "ref", this);
-            answer = routeContext.mandatoryLookup(getRef(), Processor.class);
-        }
-
-        // ensure its wrapped in a Service so we can manage it from eg. JMX
-        // (a Processor must be a Service to be enlisted in JMX)
-        if (!(answer instanceof Service)) {
-            if (answer instanceof AsyncProcessor) {
-                // the processor is async by nature so use the async delegate
-                answer = new DelegateAsyncProcessor(answer);
-            } else {
-                // the processor is sync by nature so use the sync delegate
-                answer = new DelegateSyncProcessor(answer);
-            }
-        }
-        return answer;
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 9094494..4e5eda6 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -36,16 +36,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.namespace.QName;
 
-import org.apache.camel.Channel;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
-import org.apache.camel.Route;
 import org.apache.camel.builder.DataFormatClause;
 import org.apache.camel.builder.EnrichClause;
 import org.apache.camel.builder.ExpressionBuilder;
@@ -58,21 +55,14 @@ import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.model.language.LanguageExpression;
 import org.apache.camel.model.rest.RestDefinition;
-import org.apache.camel.processor.InterceptEndpointProcessor;
-import org.apache.camel.processor.Pipeline;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-import org.apache.camel.processor.interceptor.DefaultChannel;
-import org.apache.camel.processor.interceptor.HandleFault;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.AsEndpointUri;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.DataFormat;
-import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.IdempotentRepository;
 import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.Policy;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.ExpressionAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -164,47 +154,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
         return false;
     }
 
-    /**
-     * Override this in definition class and implement logic to create the processor
-     * based on the definition model.
-     */
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        throw new UnsupportedOperationException("Not implemented yet for class: " + getClass().getName());
-    }
-
-    /**
-     * Prefer to use {#link #createChildProcessor}.
-     */
-    public Processor createOutputsProcessor(RouteContext routeContext) throws Exception {
-        Collection<ProcessorDefinition<?>> outputs = getOutputs();
-        return createOutputsProcessor(routeContext, outputs);
-    }
-
-    /**
-     * Creates the child processor (outputs) from the current definition
-     *
-     * @param routeContext   the route context
-     * @param mandatory      whether or not children is mandatory (ie the definition should have outputs)
-     * @return the created children, or <tt>null</tt> if definition had no output
-     * @throws Exception is thrown if error creating the child or if it was mandatory and there was no output defined on definition
-     */
-    public Processor createChildProcessor(RouteContext routeContext, boolean mandatory) throws Exception {
-        Processor children = null;
-        // at first use custom factory
-        if (routeContext.getCamelContext().getProcessorFactory() != null) {
-            children = routeContext.getCamelContext().getProcessorFactory().createChildProcessor(routeContext, this, mandatory);
-        }
-        // fallback to default implementation if factory did not create the child
-        if (children == null) {
-            children = createOutputsProcessor(routeContext);
-        }
-
-        if (children == null && mandatory) {
-            throw new IllegalArgumentException("Definition has no children on " + this);
-        }
-        return children;
-    }
-
     @Override
     public void addOutput(ProcessorDefinition<?> output) {
         if (!blocks.isEmpty()) {
@@ -230,335 +179,10 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
         blocks.clear();
     }
 
-    public void addRoutes(RouteContext routeContext, Collection<Route> routes) throws Exception {
-        Processor processor = makeProcessor(routeContext);
-        if (processor == null) {
-            // no processor to add
-            return;
-        }
-
-        if (!routeContext.isRouteAdded()) {
-            boolean endpointInterceptor = false;
-
-            // 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
-            if (processor instanceof Channel) {
-                Channel channel = (Channel) processor;
-                Processor next = channel.getNextProcessor();
-                if (next instanceof InterceptEndpointProcessor) {
-                    endpointInterceptor = true;
-                }
-            }
-
-            // 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);
-            }
-
-        }
-    }
-
-    /**
-     * Wraps the child processor in whatever necessary interceptors and error handlers
-     */
-    public Processor wrapProcessor(RouteContext routeContext, Processor processor) throws Exception {
-        // dont double wrap
-        if (processor instanceof Channel) {
-            return processor;
-        }
-        return wrapChannel(routeContext, processor, null);
-    }
-
-    protected Processor wrapChannel(RouteContext routeContext, Processor processor, ProcessorDefinition<?> child) throws Exception {
-        return wrapChannel(routeContext, processor, child, isInheritErrorHandler());
-    }
-
-    protected Processor wrapChannel(RouteContext routeContext, Processor processor, ProcessorDefinition<?> child, Boolean inheritErrorHandler) throws Exception {
-        // put a channel in between this and each output to control the route flow logic
-        ModelChannel channel = createChannel(routeContext);
-        channel.setNextProcessor(processor);
-
-        // add interceptor strategies to the channel must be in this order: camel context, route context, local
-        addInterceptStrategies(routeContext, channel, routeContext.getCamelContext().getInterceptStrategies());
-        addInterceptStrategies(routeContext, channel, routeContext.getInterceptStrategies());
-        addInterceptStrategies(routeContext, channel, this.getInterceptStrategies());
-
-        // must do this ugly cast to avoid compiler error on AIX/HP-UX
-        ProcessorDefinition<?> defn = (ProcessorDefinition<?>) this;
-
-        // set the child before init the channel
-        channel.setChildDefinition(child);
-        channel.initChannel(defn, routeContext);
-
-        // set the error handler, must be done after init as we can set the error handler as first in the chain
-        if (defn instanceof TryDefinition || defn instanceof CatchDefinition || defn instanceof FinallyDefinition) {
-            // do not use error handler for try .. catch .. finally blocks as it will handle errors itself
-            log.trace("{} is part of doTry .. doCatch .. doFinally so no error handler is applied", defn);
-        } else if (ProcessorDefinitionHelper.isParentOfType(TryDefinition.class, defn, true)
-                || ProcessorDefinitionHelper.isParentOfType(CatchDefinition.class, defn, true)
-                || ProcessorDefinitionHelper.isParentOfType(FinallyDefinition.class, defn, true)) {
-            // do not use error handler for try .. catch .. finally blocks as it will handle errors itself
-            // by checking that any of our parent(s) is not a try .. catch or finally type
-            log.trace("{} is part of doTry .. doCatch .. doFinally so no error handler is applied", defn);
-        } else if (defn instanceof OnExceptionDefinition || ProcessorDefinitionHelper.isParentOfType(OnExceptionDefinition.class, defn, true)) {
-            log.trace("{} is part of OnException so no error handler is applied", defn);
-            // do not use error handler for onExceptions blocks as it will handle errors itself
-        } else if (defn instanceof HystrixDefinition || ProcessorDefinitionHelper.isParentOfType(HystrixDefinition.class, defn, true)) {
-            // do not use error handler for hystrix as it offers circuit breaking with fallback for its outputs
-            // however if inherit error handler is enabled, we need to wrap an error handler on the hystrix parent
-            if (inheritErrorHandler != null && inheritErrorHandler && child == null) {
-                // only wrap the parent (not the children of the hystrix)
-                wrapChannelInErrorHandler(channel, routeContext, inheritErrorHandler);
-            } else {
-                log.trace("{} is part of HystrixCircuitBreaker so no error handler is applied", defn);
-            }
-        } else if (defn instanceof MulticastDefinition) {
-            // do not use error handler for multicast as it offers fine grained error handlers for its outputs
-            // however if share unit of work is enabled, we need to wrap an error handler on the multicast parent
-            MulticastDefinition def = (MulticastDefinition) defn;
-            boolean isShareUnitOfWork = def.getShareUnitOfWork() != null && def.getShareUnitOfWork();
-            if (isShareUnitOfWork && child == null) {
-                // only wrap the parent (not the children of the multicast)
-                wrapChannelInErrorHandler(channel, routeContext, inheritErrorHandler);
-            } else {
-                log.trace("{} is part of multicast which have special error handling so no error handler is applied", defn);
-            }
-        } else {
-            // use error handler by default or if configured to do so
-            wrapChannelInErrorHandler(channel, routeContext, inheritErrorHandler);
-        }
-
-        // do post init at the end
-        channel.postInitChannel(defn, routeContext);
-        log.trace("{} wrapped in Channel: {}", defn, channel);
-
-        return channel;
-    }
-
-    /**
-     * Wraps the given channel in error handler (if error handler is inherited)
-     *
-     * @param channel             the channel
-     * @param routeContext        the route context
-     * @param inheritErrorHandler whether to inherit error handler
-     * @throws Exception can be thrown if failed to create error handler builder
-     */
-    private void wrapChannelInErrorHandler(Channel channel, RouteContext routeContext, Boolean inheritErrorHandler) throws Exception {
-        if (inheritErrorHandler == null || inheritErrorHandler) {
-            log.trace("{} is configured to inheritErrorHandler", this);
-            Processor output = channel.getOutput();
-            Processor errorHandler = wrapInErrorHandler(routeContext, output);
-            // set error handler on channel
-            channel.setErrorHandler(errorHandler);
-        } else {
-            log.debug("{} is configured to not inheritErrorHandler.", this);
-        }
-    }
-
-    /**
-     * Wraps the given output in an error handler
-     *
-     * @param routeContext the route context
-     * @param output the output
-     * @return the output wrapped with the error handler
-     * @throws Exception can be thrown if failed to create error handler builder
-     */
-    protected Processor wrapInErrorHandler(RouteContext routeContext, Processor output) throws Exception {
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
-        // create error handler
-        Processor errorHandler = builder.createErrorHandler(routeContext, output);
-
-        // invoke lifecycles so we can manage this error handler builder
-        for (LifecycleStrategy strategy : routeContext.getCamelContext().getLifecycleStrategies()) {
-            strategy.onErrorHandlerAdd(routeContext, errorHandler, builder);
-        }
-
-        return errorHandler;
-    }
-
-    /**
-     * Adds the given list of interceptors to the channel.
-     *
-     * @param routeContext  the route context
-     * @param channel       the channel to add strategies
-     * @param strategies    list of strategies to add.
-     */
-    protected void addInterceptStrategies(RouteContext routeContext, Channel channel, List<InterceptStrategy> strategies) {
-        for (InterceptStrategy strategy : strategies) {
-            if (!routeContext.isHandleFault() && strategy instanceof HandleFault) {
-                // handle fault is disabled so we should not add it
-                continue;
-            }
-
-            // add strategy
-            channel.addInterceptStrategy(strategy);
-        }
-    }
-
-    /**
-     * Creates a new instance of some kind of composite processor which defaults
-     * to using a {@link Pipeline} but derived classes could change the behaviour
-     */
-    protected Processor createCompositeProcessor(RouteContext routeContext, List<Processor> list) throws Exception {
-        return Pipeline.newInstance(routeContext.getCamelContext(), list);
-    }
-
-    /**
-     * Creates a new instance of the {@link Channel}.
-     */
-    protected ModelChannel createChannel(RouteContext routeContext) throws Exception {
-        return new DefaultChannel();
-    }
-
-    protected Processor createOutputsProcessor(RouteContext routeContext, Collection<ProcessorDefinition<?>> outputs) throws Exception {
-        // We will save list of actions to restore the outputs back to the original state.
-        Runnable propertyPlaceholdersChangeReverter = ProcessorDefinitionHelper.createPropertyPlaceholdersChangeReverter();
-        try {
-            return createOutputsProcessorImpl(routeContext, outputs);
-        } finally {
-            propertyPlaceholdersChangeReverter.run();
-        }
-    }
-
-    protected Processor createOutputsProcessorImpl(RouteContext routeContext, Collection<ProcessorDefinition<?>> outputs) throws Exception {
-        List<Processor> list = new ArrayList<>();
-        for (ProcessorDefinition<?> output : outputs) {
-
-            // allow any custom logic before we create the processor
-            output.preCreateProcessor();
-
-            // resolve properties before we create the processor
-            ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), output);
-
-            // resolve constant fields (eg Exchange.FILE_NAME)
-            ProcessorDefinitionHelper.resolveKnownConstantFields(output);
-
-            // also resolve properties and constant fields on embedded expressions
-            ProcessorDefinition<?> me = (ProcessorDefinition<?>) output;
-            if (me instanceof ExpressionNode) {
-                ExpressionNode exp = (ExpressionNode) me;
-                ExpressionDefinition expressionDefinition = exp.getExpression();
-                if (expressionDefinition != null) {
-                    // resolve properties before we create the processor
-                    ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), expressionDefinition);
-
-                    // resolve constant fields (eg Exchange.FILE_NAME)
-                    ProcessorDefinitionHelper.resolveKnownConstantFields(expressionDefinition);
-                }
-            }
-
-            Processor processor = createProcessor(routeContext, output);
-
-            // inject id
-            if (processor instanceof IdAware) {
-                String id = output.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
-                ((IdAware) processor).setId(id);
-            }
-
-            if (output instanceof Channel && processor == null) {
-                continue;
-            }
-
-            Processor channel = wrapChannel(routeContext, processor, output);
-            list.add(channel);
-        }
-
-        // if more than one output wrap than in a composite processor else just keep it as is
-        Processor processor = null;
-        if (!list.isEmpty()) {
-            if (list.size() == 1) {
-                processor = list.get(0);
-            } else {
-                processor = createCompositeProcessor(routeContext, list);
-            }
-        }
-
-        return processor;
-    }
-
-    protected Processor createProcessor(RouteContext routeContext, ProcessorDefinition<?> output) throws Exception {
-        Processor processor = null;
-        // at first use custom factory
-        if (routeContext.getCamelContext().getProcessorFactory() != null) {
-            processor = routeContext.getCamelContext().getProcessorFactory().createProcessor(routeContext, output);
-        }
-        // fallback to default implementation if factory did not create the processor
-        if (processor == null) {
-            processor = output.createProcessor(routeContext);
-        }
-        return processor;
-    }
-
-    /**
-     * Creates the processor and wraps it in any necessary interceptors and error handlers
-     */
-    protected Processor makeProcessor(RouteContext routeContext) throws Exception {
-        // We will save list of actions to restore the definition back to the original state.
-        Runnable propertyPlaceholdersChangeReverter = ProcessorDefinitionHelper.createPropertyPlaceholdersChangeReverter();
-        try {
-            return makeProcessorImpl(routeContext);
-        } finally {
-            // Lets restore
-            propertyPlaceholdersChangeReverter.run();
-        }
-    }
-
-    private Processor makeProcessorImpl(RouteContext routeContext) throws Exception {
-        Processor processor = null;
-
-        // allow any custom logic before we create the processor
-        preCreateProcessor();
-
-        // resolve properties before we create the processor
-        ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), this);
-
-        // resolve constant fields (eg Exchange.FILE_NAME)
-        ProcessorDefinitionHelper.resolveKnownConstantFields(this);
-
-        // also resolve properties and constant fields on embedded expressions
-        ProcessorDefinition<?> me = (ProcessorDefinition<?>) this;
-        if (me instanceof ExpressionNode) {
-            ExpressionNode exp = (ExpressionNode) me;
-            ExpressionDefinition expressionDefinition = exp.getExpression();
-            if (expressionDefinition != null) {
-                // resolve properties before we create the processor
-                ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), expressionDefinition);
-
-                // resolve constant fields (eg Exchange.FILE_NAME)
-                ProcessorDefinitionHelper.resolveKnownConstantFields(expressionDefinition);
-            }
-        }
-
-        // at first use custom factory
-        if (routeContext.getCamelContext().getProcessorFactory() != null) {
-            processor = routeContext.getCamelContext().getProcessorFactory().createProcessor(routeContext, this);
-        }
-        // fallback to default implementation if factory did not create the processor
-        if (processor == null) {
-            processor = createProcessor(routeContext);
-        }
-
-        // inject id
-        if (processor instanceof IdAware) {
-            String id = this.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
-            ((IdAware) processor).setId(id);
-        }
-
-        if (processor == null) {
-            // no processor to make
-            return null;
-        }
-        return wrapProcessor(routeContext, processor);
-    }
-
     /**
      * Strategy to execute any custom logic before the {@link Processor} is created.
      */
-    protected void preCreateProcessor() {
+    public void preCreateProcessor() {
         // noop
     }
 
@@ -1155,7 +779,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
 
     /**
      * <a href="http://camel.apache.org/pipes-nd-filters.html">Pipes and Filters EIP:</a>
-     * Creates a {@link Pipeline} so that the message
+     * Creates a {@link org.apache.camel.processor.Pipeline} so that the message
      * will get processed by each endpoint in turn and for request/response the
      * output of one endpoint will be the input of the next endpoint
      *
diff --git a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
index 48bc007..99ad81f 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.model;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.ExecutorService;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -26,21 +24,12 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.ProcessClause;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.EvaluateExpressionProcessor;
-import org.apache.camel.processor.Pipeline;
-import org.apache.camel.processor.RecipientList;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-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.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 /**
  * Routes messages to a number of dynamically specified recipients (dynamic to)
@@ -112,114 +101,6 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext
         return "recipientList[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        final Expression expression = getExpression().createExpression(routeContext);
-
-        boolean isParallelProcessing = getParallelProcessing() != null && getParallelProcessing();
-        boolean isStreaming = getStreaming() != null && getStreaming();
-        boolean isParallelAggregate = getParallelAggregate() != null && getParallelAggregate();
-        boolean isShareUnitOfWork = getShareUnitOfWork() != null && getShareUnitOfWork();
-        boolean isStopOnException = getStopOnException() != null && getStopOnException();
-        boolean isIgnoreInvalidEndpoints = getIgnoreInvalidEndpoints() != null && getIgnoreInvalidEndpoints();
-        boolean isStopOnAggregateException = getStopOnAggregateException() != null && getStopOnAggregateException();
-
-        RecipientList answer;
-        if (delimiter != null) {
-            answer = new RecipientList(routeContext.getCamelContext(), expression, delimiter);
-        } else {
-            answer = new RecipientList(routeContext.getCamelContext(), expression);
-        }
-        answer.setAggregationStrategy(createAggregationStrategy(routeContext));
-        answer.setParallelProcessing(isParallelProcessing);
-        answer.setParallelAggregate(isParallelAggregate);
-        answer.setStreaming(isStreaming);
-        answer.setShareUnitOfWork(isShareUnitOfWork);
-        answer.setStopOnException(isStopOnException);
-        answer.setIgnoreInvalidEndpoints(isIgnoreInvalidEndpoints);
-        answer.setStopOnAggregateException(isStopOnAggregateException);
-        if (getCacheSize() != null) {
-            answer.setCacheSize(getCacheSize());
-        }
-        if (onPrepareRef != null) {
-            onPrepare = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), onPrepareRef, Processor.class);
-        }
-        if (onPrepare != null) {
-            answer.setOnPrepare(onPrepare);
-        }
-        if (getTimeout() != null) {
-            answer.setTimeout(getTimeout());
-        }
-
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, isParallelProcessing);
-        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "RecipientList", this, isParallelProcessing);
-        answer.setExecutorService(threadPool);
-        answer.setShutdownExecutorService(shutdownThreadPool);
-        long timeout = getTimeout() != null ? getTimeout() : 0;
-        if (timeout > 0 && !isParallelProcessing) {
-            throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
-        }
-
-        // create a pipeline with two processors
-        // the first is the eval processor which evaluates the expression to use
-        // the second is the recipient list
-        List<Processor> pipe = new ArrayList<>(2);
-
-        // the eval processor must be wrapped in error handler, so in case there was an
-        // error during evaluation, the error handler can deal with it
-        // the recipient list is not in error handler, as its has its own special error handling
-        // when sending to the recipients individually
-        Processor evalProcessor = new EvaluateExpressionProcessor(expression);
-        evalProcessor = super.wrapInErrorHandler(routeContext, evalProcessor);
-
-        pipe.add(evalProcessor);
-        pipe.add(answer);
-
-        // wrap in nested pipeline so this appears as one processor
-        // (threads definition does this as well)
-        return new Pipeline(routeContext.getCamelContext(), pipe) {
-            @Override
-            public String toString() {
-                return "RecipientList[" + expression + "]";
-            }
-        };
-    }
-
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
-        AggregationStrategy strategy = getAggregationStrategy();
-        if (strategy == null && strategyRef != null) {
-            Object aggStrategy = routeContext.lookup(strategyRef, Object.class);
-            if (aggStrategy instanceof AggregationStrategy) {
-                strategy = (AggregationStrategy) aggStrategy;
-            } else if (aggStrategy != null) {
-                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, getStrategyMethodName());
-                if (getStrategyMethodAllowNull() != null) {
-                    adapter.setAllowNullNewExchange(getStrategyMethodAllowNull());
-                    adapter.setAllowNullOldExchange(getStrategyMethodAllowNull());
-                }
-                strategy = adapter;
-            } else {
-                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + strategyRef);
-            }
-        }
-
-        if (strategy == null) {
-            // default to use latest aggregation strategy
-            strategy = new UseLatestAggregationStrategy();
-        }
-
-        if (strategy instanceof CamelContextAware) {
-            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
-        }
-
-        if (shareUnitOfWork != null && shareUnitOfWork) {
-            // wrap strategy in share unit of work
-            strategy = new ShareUnitOfWorkAggregationStrategy(strategy);
-        }
-
-        return strategy;
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java
index a141983..834a3d9 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java
@@ -21,11 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.RemoveHeaderProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Removes a named header from the message
@@ -59,12 +55,6 @@ public class RemoveHeaderDefinition extends NoOutputDefinition<RemoveHeaderDefin
         return "removeHeader[" + getHeaderName() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        ObjectHelper.notNull(getHeaderName(), "headerName", this);
-        return new RemoveHeaderProcessor(getHeaderName());
-    }
-
     /**
      * Name of header to remove
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java
index 673eb5c..76042a0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java
@@ -22,11 +22,7 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.RemoveHeadersProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Removes message headers whose name matches a specified pattern
@@ -70,18 +66,6 @@ public class RemoveHeadersDefinition extends NoOutputDefinition<RemoveHeadersDef
         return "removeHeaders[" + getPattern() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        ObjectHelper.notNull(getPattern(), "patterns", this);
-        if (getExcludePatterns() != null) {
-            return new RemoveHeadersProcessor(getPattern(), getExcludePatterns());
-        } else if (getExcludePattern() != null) {
-            return new RemoveHeadersProcessor(getPattern(), new String[]{getExcludePattern()});
-        } else {
-            return new RemoveHeadersProcessor(getPattern(), null);
-        }
-    }
-
     /**
      * Name or pattern of headers to remove
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java
index f1f68e4..acbc733 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java
@@ -22,11 +22,7 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.RemovePropertiesProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Removes message exchange properties whose name matches a specified pattern
@@ -70,18 +66,6 @@ public class RemovePropertiesDefinition extends NoOutputDefinition<RemovePropert
         return "removeProperties[" + getPattern() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        ObjectHelper.notNull(getPattern(), "patterns", this);
-        if (getExcludePatterns() != null) {
-            return new RemovePropertiesProcessor(getPattern(), getExcludePatterns());
-        } else if (getExcludePattern() != null) {
-            return new RemovePropertiesProcessor(getPattern(), new String[]{getExcludePattern()});
-        } else {
-            return new RemovePropertiesProcessor(getPattern(), null);
-        }
-    }
-
     /**
      * Name or pattern of properties to remove
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java
index b5bf77e..6441f4e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java
@@ -21,11 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.RemovePropertyProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Removes a named property from the message exchange
@@ -59,12 +55,6 @@ public class RemovePropertyDefinition extends NoOutputDefinition<RemovePropertyD
         return "removeProperty[" + getPropertyName() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        ObjectHelper.notNull(getPropertyName(), "propertyName", this);
-        return new RemovePropertyProcessor(getPropertyName());
-    }
-
     /**
      * Name of property to remove
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
index 921f79a..750b2d8 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
@@ -28,19 +28,12 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.model.config.BatchResequencerConfig;
 import org.apache.camel.model.config.ResequencerConfig;
 import org.apache.camel.model.config.StreamResequencerConfig;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.CamelInternalProcessor;
-import org.apache.camel.processor.Resequencer;
-import org.apache.camel.processor.StreamResequencer;
 import org.apache.camel.processor.resequencer.ExpressionResultComparator;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Resequences (re-order) messages based on an expression
@@ -338,100 +331,4 @@ public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefiniti
         this.expression = expression;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // if configured from XML then streamConfig has been set with the configuration
-        if (resequencerConfig != null) {
-            if (resequencerConfig instanceof StreamResequencerConfig) {
-                streamConfig = (StreamResequencerConfig) resequencerConfig;
-            } else {
-                batchConfig = (BatchResequencerConfig) resequencerConfig;
-            }
-        }
-
-        if (streamConfig != null) {
-            return createStreamResequencer(routeContext, streamConfig);
-        } else {
-            if (batchConfig == null) {
-                // default as batch mode
-                batch();
-            }
-            return createBatchResequencer(routeContext, batchConfig);
-        }
-    }
-
-    /**
-     * 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
-     */
-    protected Resequencer createBatchResequencer(RouteContext routeContext,
-                                                 BatchResequencerConfig config) throws Exception {
-        Processor processor = this.createChildProcessor(routeContext, true);
-        Expression expression = getExpression().createExpression(routeContext);
-
-        // and wrap in unit of work
-        CamelInternalProcessor internal = new CamelInternalProcessor(processor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
-
-        ObjectHelper.notNull(config, "config", this);
-        ObjectHelper.notNull(expression, "expression", this);
-
-        boolean isReverse = config.getReverse() != null && config.getReverse();
-        boolean isAllowDuplicates = config.getAllowDuplicates() != null && config.getAllowDuplicates();
-
-        Resequencer resequencer = new Resequencer(routeContext.getCamelContext(), internal, expression, isAllowDuplicates, isReverse);
-        resequencer.setBatchSize(config.getBatchSize());
-        resequencer.setBatchTimeout(config.getBatchTimeout());
-        resequencer.setReverse(isReverse);
-        resequencer.setAllowDuplicates(isAllowDuplicates);
-        if (config.getIgnoreInvalidExchanges() != null) {
-            resequencer.setIgnoreInvalidExchanges(config.getIgnoreInvalidExchanges());
-        }
-        return resequencer;
-    }
-
-    /**
-     * 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 {
-        Processor processor = this.createChildProcessor(routeContext, true);
-        Expression expression = getExpression().createExpression(routeContext);
-
-        CamelInternalProcessor internal = new CamelInternalProcessor(processor);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
-
-        ObjectHelper.notNull(config, "config", this);
-        ObjectHelper.notNull(expression, "expression", this);
-
-        ExpressionResultComparator comparator;
-        if (config.getComparatorRef() != null) {
-            comparator = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), config.getComparatorRef(), ExpressionResultComparator.class);
-        } else {
-            comparator = config.getComparator();
-        }
-        comparator.setExpression(expression);
-
-        StreamResequencer resequencer = new StreamResequencer(routeContext.getCamelContext(), internal, comparator, expression);
-        resequencer.setTimeout(config.getTimeout());
-        if (config.getDeliveryAttemptInterval() != null) {
-            resequencer.setDeliveryAttemptInterval(config.getDeliveryAttemptInterval());
-        }
-        resequencer.setCapacity(config.getCapacity());
-        resequencer.setRejectOld(config.getRejectOld());
-        if (config.getIgnoreInvalidExchanges() != null) {
-            resequencer.setIgnoreInvalidExchanges(config.getIgnoreInvalidExchanges());
-        }
-        return resequencer;
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
index e96db8a..96a32e1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RethrowDefinition.java
@@ -51,14 +51,4 @@ public class RethrowDefinition extends NoOutputDefinition<RethrowDefinition> {
         return "rethrow[]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return exchange -> {
-            Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
-            if (e != null) {
-                throw e;
-            }
-        };
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
index 1b8231a..3a6853d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
@@ -21,10 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.RollbackProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Forces a rollback by stopping routing the message
@@ -66,22 +63,6 @@ public class RollbackDefinition extends NoOutputDefinition<RollbackDefinition> {
         return "rollback";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) {
-        boolean isMarkRollbackOnly = getMarkRollbackOnly() != null && getMarkRollbackOnly();
-        boolean isMarkRollbackOnlyLast = getMarkRollbackOnlyLast() != null && getMarkRollbackOnlyLast();
-
-        // validate that only either mark rollbacks is chosen and not both
-        if (isMarkRollbackOnly && isMarkRollbackOnlyLast) {
-            throw new IllegalArgumentException("Only either one of markRollbackOnly and markRollbackOnlyLast is possible to select as true");
-        }
-
-        RollbackProcessor answer = new RollbackProcessor(message);
-        answer.setMarkRollbackOnly(isMarkRollbackOnly);
-        answer.setMarkRollbackOnlyLast(isMarkRollbackOnlyLast);
-        return answer;
-    }
-
     public String getMessage() {
         return message;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index 23ab610..21caa60 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -17,9 +17,7 @@
 package org.apache.camel.model;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
-import java.util.StringTokenizer;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -34,30 +32,18 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.FailedToCreateRouteException;
-import org.apache.camel.NoSuchEndpointException;
-import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.ShutdownRoute;
 import org.apache.camel.ShutdownRunningTask;
-import org.apache.camel.builder.AdviceWithRouteBuilder;
-import org.apache.camel.builder.AdviceWithTask;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.DefaultRouteContext;
 import org.apache.camel.model.rest.RestBindingDefinition;
 import org.apache.camel.model.rest.RestDefinition;
-import org.apache.camel.processor.interceptor.HandleFault;
+import org.apache.camel.reifier.RouteReifier;
 import org.apache.camel.spi.AsEndpointUri;
-import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RoutePolicy;
-import org.apache.camel.spi.RoutePolicyFactory;
-import org.apache.camel.spi.Transformer;
-import org.apache.camel.spi.Validator;
 import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * A Camel route
@@ -165,6 +151,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Returns the status of the route if it has been registered with a {@link CamelContext}
      */
+    @Deprecated
     public ServiceStatus getStatus(CamelContext camelContext) {
         if (camelContext != null) {
             ServiceStatus answer = camelContext.getRouteController().getRouteStatus(this.getId());
@@ -176,6 +163,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         return null;
     }
 
+    @Deprecated
     public boolean isStartable(CamelContext camelContext) {
         ServiceStatus status = getStatus(camelContext);
         if (status == null) {
@@ -185,6 +173,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         }
     }
 
+    @Deprecated
     public boolean isStoppable(CamelContext camelContext) {
         ServiceStatus status = getStatus(camelContext);
         if (status == null) {
@@ -194,35 +183,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         }
     }
 
-    public List<RouteContext> addRoutes(ModelCamelContext camelContext, Collection<Route> routes) throws Exception {
-        List<RouteContext> answer = new ArrayList<>();
-
-        ErrorHandlerFactory handler = camelContext.getErrorHandlerFactory();
-        if (handler != null) {
-            setErrorHandlerBuilderIfNull(handler);
-        }
-
-        for (FromDefinition fromType : inputs) {
-            RouteContext routeContext;
-            try {
-                routeContext = addRoutes(camelContext, routes, fromType);
-            } catch (FailedToCreateRouteException e) {
-                throw e;
-            } catch (Exception e) {
-                // wrap in exception which provide more details about which route was failing
-                throw new FailedToCreateRouteException(getId(), RouteDefinitionHelper.getRouteMessage(toString()), e);
-            }
-            answer.add(routeContext);
-        }
-        return answer;
-    }
-
-
-    public Endpoint resolveEndpoint(CamelContext camelContext, String uri) throws NoSuchEndpointException {
-        ObjectHelper.notNull(camelContext, "CamelContext");
-        return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
-    }
-
     public RouteDefinition adviceWith(CamelContext camelContext, RouteBuilder builder) throws Exception {
         return adviceWith(camelContext.adapt(ModelCamelContext.class), builder);
     }
@@ -249,64 +209,10 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
      * @param builder      the route builder
      * @return a new route which is this route merged with the route builder
      * @throws Exception can be thrown from the route builder
-     * @see AdviceWithRouteBuilder
+     * @see org.apache.camel.builder.AdviceWithRouteBuilder
      */
     public RouteDefinition adviceWith(ModelCamelContext camelContext, RouteBuilder builder) throws Exception {
-        ObjectHelper.notNull(camelContext, "CamelContext");
-        ObjectHelper.notNull(builder, "RouteBuilder");
-
-        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
-        if (builder instanceof AdviceWithRouteBuilder) {
-            ((AdviceWithRouteBuilder) builder).setOriginalRoute(this);
-        }
-
-        // configure and prepare the routes from the builder
-        RoutesDefinition routes = builder.configureRoutes(camelContext);
-
-        log.debug("AdviceWith routes: {}", routes);
-
-        // we can only advice with a route builder without any routes
-        if (!builder.getRouteCollection().getRoutes().isEmpty()) {
-            throw new IllegalArgumentException("You can only advice from a RouteBuilder which has no existing routes."
-                    + " Remove all routes from the route builder.");
-        }
-        // we can not advice with error handlers (if you added a new error handler in the route builder)
-        // we must check the error handler on builder is not the same as on camel context, as that would be the default
-        // context scoped error handler, in case no error handlers was configured
-        if (builder.getRouteCollection().getErrorHandlerFactory() != null
-                && camelContext.getErrorHandlerFactory() != builder.getRouteCollection().getErrorHandlerFactory()) {
-            throw new IllegalArgumentException("You can not advice with error handlers. Remove the error handlers from the route builder.");
-        }
-
-        String beforeAsXml = ModelHelper.dumpModelAsXml(camelContext, this);
-
-        // stop and remove this existing route
-        camelContext.removeRouteDefinition(this);
-
-        // any advice with tasks we should execute first?
-        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 mixed in correctly as well
-        RouteDefinition merged = routes.route(this);
-
-        // add the new merged route
-        camelContext.addRouteDefinition(merged);
-
-        // log the merged route at info level to make it easier to end users to spot any mistakes they may have made
-        log.info("AdviceWith route after: {}", merged);
-
-        String afterAsXml = ModelHelper.dumpModelAsXml(camelContext, merged);
-        log.info("Adviced route before/after as XML:\n{}\n{}", beforeAsXml, afterAsXml);
-
-        return merged;
+        return new RouteReifier(this).adviceWith(camelContext, builder);
     }
 
     // Fluent API
@@ -672,7 +578,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
 
     /**
      * Declare the expected data type of the input message. If the actual message type is different
-     * at runtime, camel look for a required {@link Transformer} and apply if exists.
+     * at runtime, camel look for a required {@link org.apache.camel.spi.Transformer} and apply if exists.
      * The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name'
      * is a fully qualified class name. For example {@code java:java.lang.String}, {@code json:ABCOrder}.
      *
@@ -691,7 +597,8 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Declare the expected data type of the input message with content validation enabled.
      * If the actual message type is different at runtime, camel look for a required
-     * {@link Transformer} and apply if exists, and then applies {@link Validator} as well.
+     * {@link org.apache.camel.spi.Transformer} and apply if exists, and then applies
+     * {@link org.apache.camel.spi.Validator} as well.
      * The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name'
      * is a fully qualified class name. For example {@code java:java.lang.String}, {@code json:ABCOrder}.
      *
@@ -711,7 +618,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Declare the expected data type of the input message by Java class.
      * If the actual message type is different at runtime, camel look for a required
-     * {@link Transformer} and apply if exists.
+     * {@link org.apache.camel.spi.Transformer} and apply if exists.
      *
      * @see org.apache.camel.spi.Transformer
      *
@@ -728,7 +635,8 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Declare the expected data type of the input message by Java class with content validation enabled.
      * If the actual message type is different at runtime, camel look for a required
-     * {@link Transformer} and apply if exists, and then applies {@link Validator} as well.
+     * {@link org.apache.camel.spi.Transformer} and apply if exists, and then applies
+     * {@link org.apache.camel.spi.Validator} as well.
      *
      * @see org.apache.camel.spi.Transformer
      * @see org.apache.camel.spi.Validator
@@ -745,7 +653,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
 
     /**
      * Declare the expected data type of the output message. If the actual message type is different
-     * at runtime, camel look for a required {@link Transformer} and apply if exists.
+     * at runtime, camel look for a required {@link org.apache.camel.spi.Transformer} and apply if exists.
      * The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name'
      * is a fully qualified class name. For example {@code java:java.lang.String}, {@code json:ABCOrder}.
      *
@@ -764,7 +672,8 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Declare the expected data type of the output message with content validation enabled.
      * If the actual message type is different at runtime, Camel look for a required
-     * {@link Transformer} and apply if exists, and then applies {@link Validator} as well.
+     * {@link org.apache.camel.spi.Transformer} and apply if exists, and then applies
+     * {@link org.apache.camel.spi.Validator} as well.
      * The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name'
      * is a fully qualified class name. For example {@code java:java.lang.String}, {@code json:ABCOrder}.
      * 
@@ -784,7 +693,7 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Declare the expected data type of the output message by Java class.
      * If the actual message type is different at runtime, camel look for a required
-     * {@link Transformer} and apply if exists.
+     * {@link org.apache.camel.spi.Transformer} and apply if exists.
      *
      * @see org.apache.camel.spi.Transformer
      *
@@ -801,7 +710,8 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
     /**
      * Declare the expected data type of the ouput message by Java class with content validation enabled.
      * If the actual message type is different at runtime, camel look for a required
-     * {@link Transformer} and apply if exists, and then applies {@link Validator} as well.
+     * {@link org.apache.camel.spi.Transformer} and apply if exists, and then applies
+     * {@link org.apache.camel.spi.Validator} as well.
      * 
      * @see org.apache.camel.spi.Transformer
      * @see org.apache.camel.spi.Validator
@@ -987,6 +897,10 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         return autoStartup;
     }
 
+    /**
+     * TODO: move this somewhere else
+     */
+    @Deprecated
     public boolean isAutoStartup(CamelContext camelContext) throws Exception {
         if (getAutoStartup() == null) {
             // should auto startup by default
@@ -1192,159 +1106,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
         this.routeProperties = routeProperties;
     }
 
-    // Implementation methods
-    // -------------------------------------------------------------------------
-    protected RouteContext addRoutes(CamelContext camelContext, Collection<Route> routes, FromDefinition fromType) throws Exception {
-        RouteContext routeContext = new DefaultRouteContext(camelContext, this, fromType, routes);
-
-        // configure tracing
-        if (trace != null) {
-            Boolean isTrace = CamelContextHelper.parseBoolean(camelContext, getTrace());
-            if (isTrace != null) {
-                routeContext.setTracing(isTrace);
-                if (isTrace) {
-                    log.debug("Tracing is enabled on route: {}", getId());
-                    // tracing is added in the DefaultChannel so we can enable it on the fly
-                }
-            }
-        }
-
-        // configure message history
-        if (messageHistory != null) {
-            Boolean isMessageHistory = CamelContextHelper.parseBoolean(camelContext, getMessageHistory());
-            if (isMessageHistory != null) {
-                routeContext.setMessageHistory(isMessageHistory);
-                if (isMessageHistory) {
-                    log.debug("Message history is enabled on route: {}", getId());
-                }
-            }
-        }
-
-        // configure Log EIP mask
-        if (logMask != null) {
-            Boolean isLogMask = CamelContextHelper.parseBoolean(camelContext, getLogMask());
-            if (isLogMask != null) {
-                routeContext.setLogMask(isLogMask);
-                if (isLogMask) {
-                    log.debug("Security mask for Logging is enabled on route: {}", getId());
-                }
-            }
-        }
-
-        // configure stream caching
-        if (streamCache != null) {
-            Boolean isStreamCache = CamelContextHelper.parseBoolean(camelContext, getStreamCache());
-            if (isStreamCache != null) {
-                routeContext.setStreamCaching(isStreamCache);
-                if (isStreamCache) {
-                    log.debug("StreamCaching is enabled on route: {}", getId());
-                }
-            }
-        }
-
-        // configure handle fault
-        if (handleFault != null) {
-            Boolean isHandleFault = CamelContextHelper.parseBoolean(camelContext, getHandleFault());
-            if (isHandleFault != null) {
-                routeContext.setHandleFault(isHandleFault);
-                if (isHandleFault) {
-                    log.debug("HandleFault is enabled on route: {}", getId());
-                    // only add a new handle fault if not already a global configured on camel context
-                    if (HandleFault.getHandleFault(camelContext) == null) {
-                        addInterceptStrategy(new HandleFault());
-                    }
-                }
-            }
-        }
-
-        // configure delayer
-        if (delayer != null) {
-            Long delayer = CamelContextHelper.parseLong(camelContext, getDelayer());
-            if (delayer != null) {
-                routeContext.setDelayer(delayer);
-                if (delayer > 0) {
-                    log.debug("Delayer is enabled with: {} ms. on route: {}", delayer, getId());
-                } else {
-                    log.debug("Delayer is disabled on route: {}", getId());
-                }
-            }
-        }
-
-        // configure route policy
-        if (routePolicies != null && !routePolicies.isEmpty()) {
-            for (RoutePolicy policy : routePolicies) {
-                log.debug("RoutePolicy is enabled: {} on route: {}", policy, getId());
-                routeContext.getRoutePolicyList().add(policy);
-            }
-        }
-        if (routePolicyRef != null) {
-            StringTokenizer policyTokens = new StringTokenizer(routePolicyRef, ",");
-            while (policyTokens.hasMoreTokens()) {
-                String ref = policyTokens.nextToken().trim();
-                RoutePolicy policy = CamelContextHelper.mandatoryLookup(camelContext, ref, RoutePolicy.class);
-                log.debug("RoutePolicy is enabled: {} on route: {}", policy, getId());
-                routeContext.getRoutePolicyList().add(policy);
-            }
-        }
-        if (camelContext.getRoutePolicyFactories() != null) {
-            for (RoutePolicyFactory factory : camelContext.getRoutePolicyFactories()) {
-                RoutePolicy policy = factory.createRoutePolicy(camelContext, getId(), this);
-                if (policy != null) {
-                    log.debug("RoutePolicy is enabled: {} on route: {}", policy, getId());
-                    routeContext.getRoutePolicyList().add(policy);
-                }
-            }
-        }
-
-        // configure auto startup
-        Boolean isAutoStartup = CamelContextHelper.parseBoolean(camelContext, getAutoStartup());
-        if (isAutoStartup != null) {
-            log.debug("Using AutoStartup {} on route: {}", isAutoStartup, getId());
-            routeContext.setAutoStartup(isAutoStartup);
-        }
-
-        // configure shutdown
-        if (shutdownRoute != null) {
-            log.debug("Using ShutdownRoute {} on route: {}", getShutdownRoute(), getId());
-            routeContext.setShutdownRoute(getShutdownRoute());
-        }
-        if (shutdownRunningTask != null) {
-            log.debug("Using ShutdownRunningTask {} on route: {}", getShutdownRunningTask(), getId());
-            routeContext.setShutdownRunningTask(getShutdownRunningTask());
-        }
-
-        // should inherit the intercept strategies we have defined
-        routeContext.setInterceptStrategies(this.getInterceptStrategies());
-        // force endpoint resolution
-        routeContext.getEndpoint();
-        for (LifecycleStrategy strategy : camelContext.getLifecycleStrategies()) {
-            strategy.onRouteContextCreate(routeContext);
-        }
-
-        // validate route has output processors
-        if (!ProcessorDefinitionHelper.hasOutputs(outputs, true)) {
-            RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-            String at = fromType.toString();
-            Exception cause = new IllegalArgumentException("Route " + route.getId() + " has no output processors."
-                    + " You need to add outputs to the route such as to(\"log:foo\").");
-            throw new FailedToCreateRouteException(route.getId(), RouteDefinitionHelper.getRouteMessage(route.toString()), at, cause);
-        }
-
-        List<ProcessorDefinition<?>> list = new ArrayList<>(outputs);
-        for (ProcessorDefinition<?> output : list) {
-            try {
-                output.addRoutes(routeContext, routes);
-            } catch (Exception e) {
-                RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-                throw new FailedToCreateRouteException(route.getId(), RouteDefinitionHelper.getRouteMessage(route.toString()), output.toString(), e);
-            }
-        }
-
-        routeContext.commit();
-        return routeContext;
-    }
-
-
     // ****************************
     // Static helpers
     // ****************************
diff --git a/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
index b8495ce..f99c1fc 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
@@ -24,15 +24,10 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-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.language.ExpressionDefinition;
 import org.apache.camel.model.language.HeaderExpression;
-import org.apache.camel.processor.RoutingSlip;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Routes a message through a series of steps that are pre-determined (the slip)
@@ -88,30 +83,6 @@ public class RoutingSlipDefinition<Type extends ProcessorDefinition<Type>> exten
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Expression expression = getExpression().createExpression(routeContext);
-        String delimiter = getUriDelimiter() != null ? getUriDelimiter() : DEFAULT_DELIMITER;
-
-        RoutingSlip routingSlip = new RoutingSlip(routeContext.getCamelContext(), expression, delimiter);
-        if (getIgnoreInvalidEndpoints() != null) {
-            routingSlip.setIgnoreInvalidEndpoints(getIgnoreInvalidEndpoints());
-        }
-        if (getCacheSize() != null) {
-            routingSlip.setCacheSize(getCacheSize());
-        }
-
-        // and wrap this in an error handler
-        RouteDefinition route = (RouteDefinition) routeContext.getRoute();
-        ErrorHandlerFactory builder = route.getErrorHandlerBuilder();
-        // create error handler (create error handler directly to keep it light weight,
-        // instead of using ProcessorDefinition.wrapInErrorHandler)
-        AsyncProcessor errorHandler = (AsyncProcessor) builder.createErrorHandler(routeContext, routingSlip.newRoutingSlipProcessorForErrorHandler());
-        routingSlip.setErrorHandler(errorHandler);
-
-        return routingSlip;
-    }
-
-    @Override
     public List<ProcessorDefinition<?>> getOutputs() {
         return Collections.emptyList();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java
index 93917aa..cb21e36 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SagaDefinition.java
@@ -18,9 +18,6 @@ package org.apache.camel.model;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.TreeMap;
 import java.util.concurrent.TimeUnit;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -30,17 +27,9 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.processor.saga.SagaProcessorBuilder;
 import org.apache.camel.saga.CamelSagaService;
-import org.apache.camel.saga.CamelSagaStep;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -82,54 +71,6 @@ public class SagaDefinition extends OutputDefinition<SagaDefinition> {
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Optional<Endpoint> compensationEndpoint = Optional.ofNullable(this.compensation)
-                .map(SagaActionUriDefinition::getUri)
-                .map(routeContext::resolveEndpoint);
-
-        Optional<Endpoint> completionEndpoint = Optional.ofNullable(this.completion)
-                .map(SagaActionUriDefinition::getUri)
-                .map(routeContext::resolveEndpoint);
-
-        Map<String, Expression> optionsMap = new TreeMap<>();
-        if (this.options != null) {
-            for (SagaOptionDefinition optionDef : this.options) {
-                String optionName = optionDef.getOptionName();
-                Expression expr = optionDef.getExpression();
-                optionsMap.put(optionName, expr);
-            }
-        }
-
-        CamelSagaStep step = new CamelSagaStep(compensationEndpoint, completionEndpoint, optionsMap, Optional.ofNullable(timeoutInMilliseconds));
-
-        SagaPropagation propagation = this.propagation;
-        if (propagation == null) {
-            // default propagation mode
-            propagation = SagaPropagation.REQUIRED;
-        }
-
-        SagaCompletionMode completionMode = this.completionMode;
-        if (completionMode == null) {
-            // default completion mode
-            completionMode = SagaCompletionMode.defaultCompletionMode();
-        }
-
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-        CamelSagaService camelSagaService = findSagaService(routeContext.getCamelContext());
-
-        camelSagaService.registerStep(step);
-
-        return new SagaProcessorBuilder()
-                .camelContext(routeContext.getCamelContext())
-                .childProcessor(childProcessor)
-                .sagaService(camelSagaService)
-                .step(step)
-                .propagation(propagation)
-                .completionMode(completionMode)
-                .build();
-    }
-
-    @Override
     public boolean isAbstract() {
         return true;
     }
@@ -306,25 +247,6 @@ public class SagaDefinition extends OutputDefinition<SagaDefinition> {
 
     // Utils
 
-    protected CamelSagaService findSagaService(CamelContext context) {
-        CamelSagaService sagaService = getSagaService();
-        if (sagaService != null) {
-            return sagaService;
-        }
-
-        sagaService = context.hasService(CamelSagaService.class);
-        if (sagaService != null) {
-            return sagaService;
-        }
-
-        sagaService = CamelContextHelper.findByType(context, CamelSagaService.class);
-        if (sagaService != null) {
-            return sagaService;
-        }
-
-        throw new RuntimeCamelException("Cannot find a CamelSagaService");
-    }
-
     protected String description() {
         StringBuilder desc = new StringBuilder();
         addField(desc, "compensation", compensation);
diff --git a/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java
index 1fc64f7..69a9a4e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java
@@ -25,11 +25,8 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import org.apache.camel.Processor;
 import org.apache.camel.builder.xml.TimeUnitAdapter;
-import org.apache.camel.processor.SamplingThrottler;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Extract a sample of the messages passing through a route
@@ -82,21 +79,6 @@ public class SamplingDefinition extends OutputDefinition<SamplingDefinition> {
         return "sample[" + description() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-        
-        if (messageFrequency != null) {
-            return new SamplingThrottler(childProcessor, messageFrequency);
-        } else {
-            // should default be 1 sample period
-            long time = getSamplePeriod() != null ? getSamplePeriod() : 1L;
-            // should default be in seconds
-            TimeUnit tu = getUnits() != null ? getUnits() : TimeUnit.SECONDS;
-            return new SamplingThrottler(childProcessor, time, tu);
-        }
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java
index 1dcb0f8..536c7fa 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java
@@ -21,11 +21,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.ScriptProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Executes a script from a language which does not change the message body.
@@ -57,12 +54,6 @@ public class ScriptDefinition extends NoOutputExpressionNode {
         return "script[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Expression expr = getExpression().createExpression(routeContext);
-        return new ScriptProcessor(expr);
-    }
-
     /**
      * Expression to return the transformed message body (the new message body to use)
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
index fdb4db5..487db7f 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
@@ -23,11 +23,7 @@ import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Sends the message to an endpoint
@@ -47,20 +43,6 @@ public abstract class SendDefinition<Type extends ProcessorDefinition<Type>> ext
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Endpoint endpoint = resolveEndpoint(routeContext);
-        return new SendProcessor(endpoint, getPattern());
-    }
-
-    public Endpoint resolveEndpoint(RouteContext context) {
-        if (endpoint == null) {
-            return context.resolveEndpoint(getUri());
-        } else {
-            return endpoint;
-        }
-    }
-
-    @Override
     public String getEndpointUri() {
         if (uri != null) {
             return uri;
diff --git a/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java
index 83b561c..688fc23 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java
@@ -21,11 +21,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.SetBodyProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Sets the contents of the message body
@@ -57,12 +54,6 @@ public class SetBodyDefinition extends NoOutputExpressionNode {
         return "setBody[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Expression expr = getExpression().createExpression(routeContext);
-        return new SetBodyProcessor(expr);
-    }
-
     /**
      * Expression that returns the new body to use
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java
index 69357d5..dd6e3da 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java
@@ -20,13 +20,9 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.ExchangePatternProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Sets the exchange pattern on the message exchange
@@ -37,9 +33,7 @@ import org.apache.camel.spi.RouteContext;
 public class SetExchangePatternDefinition extends NoOutputDefinition<SetExchangePatternDefinition> {
     @XmlAttribute(required = true)
     private ExchangePattern pattern;
-    @XmlTransient
-    private ExchangePatternProcessor processor;
-    
+
     public SetExchangePatternDefinition() {
     }
 
@@ -78,12 +72,4 @@ public class SetExchangePatternDefinition extends NoOutputDefinition<SetExchange
         return "setExchangePattern[" + pattern + "]";
     }
    
-    @Override
-    public Processor createProcessor(RouteContext routeContext) {
-        if (processor == null) {
-            processor = new ExchangePatternProcessor(getPattern());
-        }
-        return processor;
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java
index 7005bad..01a19b5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java
@@ -21,11 +21,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.ProcessorBuilder;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  *  Sets the contents of a fault message's body
@@ -57,12 +54,6 @@ public class SetFaultBodyDefinition extends NoOutputExpressionNode {
         return "setFaultBody[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Expression expr = getExpression().createExpression(routeContext);
-        return ProcessorBuilder.setFaultBody(expr);
-    }
-
     /**
      * Expression that returns the new fault body to use
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
index 401135d..0de90c6 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
@@ -22,13 +22,9 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.SetHeaderProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Sets the value of a message header
@@ -73,14 +69,6 @@ public class SetHeaderDefinition extends NoOutputExpressionNode {
         return "setHeader[" + getHeaderName() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        ObjectHelper.notNull(headerName, "headerName");
-        Expression expr = getExpression().createExpression(routeContext);
-        Expression nameExpr = ExpressionBuilder.parseSimpleOrFallbackToConstantExpression(getHeaderName(), routeContext.getCamelContext());
-        return new SetHeaderProcessor(nameExpr, expr);
-    }
-
     /**
      * Expression to return the value of the header
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
index 73430b0..b8cbf0a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
@@ -22,13 +22,9 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.SetPropertyProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Sets a named property on the message exchange
@@ -73,14 +69,6 @@ public class SetPropertyDefinition extends NoOutputExpressionNode {
         return "setProperty[" + getPropertyName() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        ObjectHelper.notNull(getPropertyName(), "propertyName", this);
-        Expression expr = getExpression().createExpression(routeContext);
-        Expression nameExpr = ExpressionBuilder.parseSimpleOrFallbackToConstantExpression(getPropertyName(), routeContext.getCamelContext());
-        return new SetPropertyProcessor(nameExpr, expr);
-    }
-
     /**
      * Expression to return the value of the message exchange property
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
index ae4739e..e175c50 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
@@ -25,14 +25,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.SortProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.ObjectHelper;
-
-import static org.apache.camel.builder.ExpressionBuilder.bodyExpression;
 
 /**
  * Sorts the contents of the message
@@ -73,29 +67,6 @@ public class SortDefinition<T> extends NoOutputExpressionNode {
         return "sort[" + getExpression() + "]";
     }
 
-    @Override
-    @SuppressWarnings("unchecked")
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // lookup in registry
-        if (org.apache.camel.util.ObjectHelper.isNotEmpty(comparatorRef)) {
-            comparator = routeContext.getCamelContext().getRegistry().lookupByNameAndType(comparatorRef, Comparator.class);
-        }
-
-        // if no comparator then default on to string representation
-        if (comparator == null) {
-            comparator = (Comparator<T>) ObjectHelper::compare;
-        }
-
-        // if no expression provided then default to body expression
-        Expression exp;
-        if (getExpression() == null) {
-            exp = bodyExpression();
-        } else {
-            exp = getExpression().createExpression(routeContext);
-        }
-        return new SortProcessor<T>(exp, getComparator());
-    }
-
     /**
      * Optional expression to sort by something else than the message body
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
index 12c490d..9f6d25d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
@@ -24,17 +24,11 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.Splitter;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
-import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
-import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 /**
  * Splits a single message into many sub-messages.
@@ -100,65 +94,6 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw
         return "split[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-        aggregationStrategy = createAggregationStrategy(routeContext);
-
-        boolean isParallelProcessing = getParallelProcessing() != null && getParallelProcessing();
-        boolean isStreaming = getStreaming() != null && getStreaming();
-        boolean isShareUnitOfWork = getShareUnitOfWork() != null && getShareUnitOfWork();
-        boolean isParallelAggregate = getParallelAggregate() != null && getParallelAggregate();
-        boolean isStopOnAggregateException = getStopOnAggregateException() != null && getStopOnAggregateException();
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, isParallelProcessing);
-        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "Split", this, isParallelProcessing);
-
-        long timeout = getTimeout() != null ? getTimeout() : 0;
-        if (timeout > 0 && !isParallelProcessing) {
-            throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
-        }
-        if (onPrepareRef != null) {
-            onPrepare = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), onPrepareRef, Processor.class);
-        }
-
-        Expression exp = getExpression().createExpression(routeContext);
-
-        Splitter answer = new Splitter(routeContext.getCamelContext(), exp, childProcessor, aggregationStrategy,
-                            isParallelProcessing, threadPool, shutdownThreadPool, isStreaming, isStopOnException(),
-                            timeout, onPrepare, isShareUnitOfWork, isParallelAggregate, isStopOnAggregateException);
-        return answer;
-    }
-
-    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
-        AggregationStrategy strategy = getAggregationStrategy();
-        if (strategy == null && strategyRef != null) {
-            Object aggStrategy = routeContext.lookup(strategyRef, Object.class);
-            if (aggStrategy instanceof AggregationStrategy) {
-                strategy = (AggregationStrategy) aggStrategy;
-            } else if (aggStrategy != null) {
-                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, getStrategyMethodName());
-                if (getStrategyMethodAllowNull() != null) {
-                    adapter.setAllowNullNewExchange(getStrategyMethodAllowNull());
-                    adapter.setAllowNullOldExchange(getStrategyMethodAllowNull());
-                }
-                strategy = adapter;
-            } else {
-                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + strategyRef);
-            }
-        }
-
-        if (strategy instanceof CamelContextAware) {
-            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
-        }
-
-        if (strategy != null && shareUnitOfWork != null && shareUnitOfWork) {
-            // wrap strategy in share unit of work
-            strategy = new ShareUnitOfWorkAggregationStrategy(strategy);
-        }
-
-        return strategy;
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
diff --git a/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java b/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java
index 8b58b16..9c47cc5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/StopDefinition.java
@@ -20,10 +20,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
-import org.apache.camel.processor.StopProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Stops the processing of the current message
@@ -37,11 +34,6 @@ public class StopDefinition extends NoOutputDefinition<StopDefinition> {
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return new StopProcessor();
-    }
-
-    @Override
     public String getShortName() {
         return "stop";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
index a6114ce..5d7eb62 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.model;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 
@@ -28,16 +26,9 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import org.apache.camel.Processor;
-import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy;
-import org.apache.camel.builder.ThreadPoolProfileBuilder;
 import org.apache.camel.builder.xml.TimeUnitAdapter;
-import org.apache.camel.processor.Pipeline;
-import org.apache.camel.processor.ThreadsProcessor;
-import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.ThreadPoolProfile;
+import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy;
 
 /**
  * Specifies that all steps after this node are processed asynchronously
@@ -78,92 +69,6 @@ public class ThreadsDefinition extends OutputDefinition<ThreadsDefinition> imple
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // the threads name
-        String name = getThreadName() != null ? getThreadName() : "Threads";
-        // prefer any explicit configured executor service
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, true);
-        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, name, this, false);
-
-        // resolve what rejected policy to use
-        ThreadPoolRejectedPolicy policy = resolveRejectedPolicy(routeContext);
-        if (policy == null) {
-            if (callerRunsWhenRejected == null || callerRunsWhenRejected) {
-                // should use caller runs by default if not configured
-                policy = ThreadPoolRejectedPolicy.CallerRuns;
-            } else {
-                policy = ThreadPoolRejectedPolicy.Abort;
-            }
-        }
-        log.debug("Using ThreadPoolRejectedPolicy: {}", policy);
-
-        // if no explicit then create from the options
-        if (threadPool == null) {
-            ExecutorServiceManager manager = routeContext.getCamelContext().getExecutorServiceManager();
-            // create the thread pool using a builder
-            ThreadPoolProfile profile = new ThreadPoolProfileBuilder(name)
-                    .poolSize(getPoolSize())
-                    .maxPoolSize(getMaxPoolSize())
-                    .keepAliveTime(getKeepAliveTime(), getTimeUnit())
-                    .maxQueueSize(getMaxQueueSize())
-                    .rejectedPolicy(policy)
-                    .allowCoreThreadTimeOut(getAllowCoreThreadTimeOut())
-                    .build();
-            threadPool = manager.newThreadPool(this, name, profile);
-            shutdownThreadPool = true;
-        } else {
-            if (getThreadName() != null && !getThreadName().equals("Threads")) {
-                throw new IllegalArgumentException("ThreadName and executorServiceRef options cannot be used together.");
-            }
-            if (getPoolSize() != null) {
-                throw new IllegalArgumentException("PoolSize and executorServiceRef options cannot be used together.");
-            }
-            if (getMaxPoolSize() != null) {
-                throw new IllegalArgumentException("MaxPoolSize and executorServiceRef options cannot be used together.");
-            }
-            if (getKeepAliveTime() != null) {
-                throw new IllegalArgumentException("KeepAliveTime and executorServiceRef options cannot be used together.");
-            }
-            if (getTimeUnit() != null) {
-                throw new IllegalArgumentException("TimeUnit and executorServiceRef options cannot be used together.");
-            }
-            if (getMaxQueueSize() != null) {
-                throw new IllegalArgumentException("MaxQueueSize and executorServiceRef options cannot be used together.");
-            }
-            if (getRejectedPolicy() != null) {
-                throw new IllegalArgumentException("RejectedPolicy and executorServiceRef options cannot be used together.");
-            }
-            if (getAllowCoreThreadTimeOut() != null) {
-                throw new IllegalArgumentException("AllowCoreThreadTimeOut and executorServiceRef options cannot be used together.");
-            }
-        }
-
-        ThreadsProcessor thread = new ThreadsProcessor(routeContext.getCamelContext(), threadPool, shutdownThreadPool, policy);
-
-        List<Processor> pipe = new ArrayList<>(2);
-        pipe.add(thread);
-        pipe.add(createChildProcessor(routeContext, true));
-        // wrap in nested pipeline so this appears as one processor
-        // (recipient list definition does this as well)
-        return new Pipeline(routeContext.getCamelContext(), pipe) {
-            @Override
-            public String toString() {
-                return "Threads[" + getOutputs() + "]";
-            }
-        };
-    }
-
-    protected ThreadPoolRejectedPolicy resolveRejectedPolicy(RouteContext routeContext) {
-        if (getExecutorServiceRef() != null && getRejectedPolicy() == null) {
-            ThreadPoolProfile threadPoolProfile = routeContext.getCamelContext().getExecutorServiceManager().getThreadPoolProfile(getExecutorServiceRef());
-            if (threadPoolProfile != null) {
-                return threadPoolProfile.getRejectedPolicy();
-            }
-        }
-        return getRejectedPolicy();
-    }
-
-    @Override
     public String getShortName() {
         return "threads";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
index 7d32bfc..068e9fa 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
@@ -17,7 +17,6 @@
 package org.apache.camel.model;
 
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ScheduledExecutorService;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -28,12 +27,9 @@ import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.Throttler;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Controls the rate at which messages are passed to the next node in the route
@@ -98,50 +94,6 @@ public class ThrottleDefinition extends ExpressionNode implements ExecutorServic
         return "throttle[" + description() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor childProcessor = this.createChildProcessor(routeContext, true);
-
-        boolean async = getAsyncDelayed() != null && getAsyncDelayed();
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, true);
-        ScheduledExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredScheduledExecutorService(routeContext, "Throttle", this, true);
-        
-        // should be default 1000 millis
-        long period = getTimePeriodMillis() != null ? getTimePeriodMillis() : 1000L;
-
-        // max requests per period is mandatory
-        Expression maxRequestsExpression = createMaxRequestsPerPeriodExpression(routeContext);
-        if (maxRequestsExpression == null) {
-            throw new IllegalArgumentException("MaxRequestsPerPeriod expression must be provided on " + this);
-        }
-        
-        Expression correlation = null;
-        if (correlationExpression != null) {
-            correlation = correlationExpression.createExpression(routeContext);
-        }
-
-        boolean reject = getRejectExecution() != null && getRejectExecution();
-        Throttler answer = new Throttler(routeContext.getCamelContext(), childProcessor, maxRequestsExpression, period, threadPool, shutdownThreadPool, reject, correlation);
-
-        answer.setAsyncDelayed(async);
-        if (getCallerRunsWhenRejected() == null) {
-            // should be true by default
-            answer.setCallerRunsWhenRejected(true);
-        } else {
-            answer.setCallerRunsWhenRejected(getCallerRunsWhenRejected());
-        }
-
-        return answer;
-    }
-
-    private Expression createMaxRequestsPerPeriodExpression(RouteContext routeContext) {
-        ExpressionDefinition expr = getExpression();
-        if (expr != null) {
-            return expr.createExpression(routeContext);
-        }
-        return null;
-    }
-    
     // Fluent API
     // -------------------------------------------------------------------------
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java
index 415677d..e39cd84 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java
@@ -22,11 +22,7 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.processor.ThrowExceptionProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Throws an exception
@@ -68,26 +64,6 @@ public class ThrowExceptionDefinition extends NoOutputDefinition<ThrowExceptionD
         return "throwException[" + description() + "]";
     }
     
-    @Override
-    public Processor createProcessor(RouteContext routeContext) {
-        if (ref != null && exception == null) {
-            this.exception = routeContext.getCamelContext().getRegistry().lookupByNameAndType(ref, Exception.class);
-        }
-
-        if (exceptionType != null && exceptionClass == null) {
-            try {
-                this.exceptionClass = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(exceptionType, Exception.class);
-            } catch (ClassNotFoundException e) {
-                throw RuntimeCamelException.wrapRuntimeCamelException(e);
-            }
-        }
-
-        if (exception == null && exceptionClass == null) {
-            throw new IllegalArgumentException("exception or exceptionClass/exceptionType must be configured on: " + this);
-        }
-        return new ThrowExceptionProcessor(exception, exceptionClass, message);
-    }
-
     public String getRef() {
         return ref;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java
index 11aea0b..d635f3c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ToDynamicDefinition.java
@@ -16,26 +16,13 @@
  */
 package org.apache.camel.model;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.Expression;
-import org.apache.camel.NoSuchLanguageException;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.ExpressionBuilder;
-import org.apache.camel.processor.SendDynamicProcessor;
-import org.apache.camel.spi.Language;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.StringHelper;
 
 /**
  * Sends the message to a dynamic endpoint
@@ -51,8 +38,6 @@ import org.apache.camel.util.StringHelper;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class ToDynamicDefinition extends NoOutputDefinition<ToDynamicDefinition> {
 
-    private static final Pattern RAW_PATTERN = Pattern.compile("RAW\\([^\\)]+\\)");
-
     @XmlAttribute @Metadata(required = "true")
     private String uri;
     @XmlAttribute
@@ -72,64 +57,6 @@ public class ToDynamicDefinition extends NoOutputDefinition<ToDynamicDefinition>
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        StringHelper.notEmpty(uri, "uri", this);
-
-        Expression exp = createExpression(routeContext);
-
-        SendDynamicProcessor processor = new SendDynamicProcessor(uri, exp);
-        processor.setCamelContext(routeContext.getCamelContext());
-        processor.setPattern(pattern);
-        if (cacheSize != null) {
-            processor.setCacheSize(cacheSize);
-        }
-        if (ignoreInvalidEndpoint != null) {
-            processor.setIgnoreInvalidEndpoint(ignoreInvalidEndpoint);
-        }
-        return processor;
-    }
-
-    protected Expression createExpression(RouteContext routeContext) {
-        List<Expression> list = new ArrayList<>();
-
-        String[] parts = safeSplitRaw(uri);
-        for (String part : parts) {
-            // the part may have optional language to use, so you can mix languages
-            String value = StringHelper.after(part, "language:");
-            if (value != null) {
-                String before = StringHelper.before(value, ":");
-                String after = StringHelper.after(value, ":");
-                if (before != null && after != null) {
-                    // maybe its a language, must have language: as prefix
-                    try {
-                        Language partLanguage = routeContext.getCamelContext().resolveLanguage(before);
-                        if (partLanguage != null) {
-                            Expression exp = partLanguage.createExpression(after);
-                            list.add(exp);
-                            continue;
-                        }
-                    } catch (NoSuchLanguageException e) {
-                        // ignore
-                    }
-                }
-            }
-            // fallback and use simple language
-            Language lan = routeContext.getCamelContext().resolveLanguage("simple");
-            Expression exp = lan.createExpression(part);
-            list.add(exp);
-        }
-
-        Expression exp;
-        if (list.size() == 1) {
-            exp = list.get(0);
-        } else {
-            exp = ExpressionBuilder.concatExpression(list);
-        }
-
-        return exp;
-    }
-
-    @Override
     public String getShortName() {
         return "toD";
     }
@@ -227,76 +154,4 @@ public class ToDynamicDefinition extends NoOutputDefinition<ToDynamicDefinition>
         this.allowOptimisedComponents = allowOptimisedComponents;
     }
 
-    // Utilities
-    // -------------------------------------------------------------------------
-
-    private static class Pair {
-        int left;
-        int right;
-        Pair(int left, int right) {
-            this.left = left;
-            this.right = right;
-        }
-    }
-
-    private static List<Pair> checkRAW(String s) {
-        Matcher matcher = RAW_PATTERN.matcher(s);
-        List<Pair> answer = new ArrayList<>();
-        // Check all occurrences
-        while (matcher.find()) {
-            answer.add(new Pair(matcher.start(), matcher.end() - 1));
-        }
-        return answer;
-    }
-
-    private static boolean isRaw(int index, List<Pair>pairs) {
-        for (Pair pair : pairs) {
-            if (index < pair.left) {
-                return false;
-            } else {
-                if (index >= pair.left) {
-                    if (index <= pair.right) {
-                        return true;
-                    } else {
-                        continue;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * We need to split the string safely for each + sign, but avoid splitting within RAW(...).
-     */
-    private static String[] safeSplitRaw(String s) {
-        List<String> list = new ArrayList<>();
-
-        if (!s.contains("+")) {
-            // no plus sign so there is only one part, so no need to split
-            list.add(s);
-        } else {
-            // there is a plus sign so we need to split in a safe manner
-            List<Pair> rawPairs = checkRAW(s);
-            StringBuilder sb = new StringBuilder();
-            char chars[] = s.toCharArray();
-            for (int i = 0; i < chars.length; i++) {
-                char ch = chars[i];
-                if (ch != '+' || isRaw(i, rawPairs)) {
-                    sb.append(ch);
-                } else {
-                    list.add(sb.toString());
-                    sb.setLength(0);
-                }
-            }
-            // any leftover?
-            if (sb.length() > 0) {
-                list.add(sb.toString());
-                sb.setLength(0);
-            }
-        }
-
-        return list.toArray(new String[list.size()]);
-    }
-
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
index 6bbb3b6..00e465c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
@@ -16,28 +16,16 @@
  */
 package org.apache.camel.model;
 
-import java.lang.reflect.Method;
-import java.util.Map;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.Service;
-import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Metadata;
 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.apache.camel.support.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
 
 /**
  * Enables transaction on the route
@@ -55,8 +43,6 @@ public class TransactedDefinition extends OutputDefinition<TransactedDefinition>
     @XmlTransient
     public static final String PROPAGATION_REQUIRED = "PROPAGATION_REQUIRED";
 
-    private static final Logger LOG = LoggerFactory.getLogger(TransactedDefinition.class);
-
     @XmlTransient
     protected Class<? extends Policy> type = TransactedPolicy.class;
     @XmlAttribute
@@ -122,6 +108,10 @@ public class TransactedDefinition extends OutputDefinition<TransactedDefinition>
         return true;
     }
 
+    public Policy getPolicy() {
+        return policy;
+    }
+
     public String getRef() {
         return ref;
     }
@@ -130,6 +120,10 @@ public class TransactedDefinition extends OutputDefinition<TransactedDefinition>
         this.ref = ref;
     }
 
+    public Class<? extends Policy> getType() {
+        return type;
+    }
+
     /**
      * Sets a policy type that this definition should scope within.
      * <p/>
@@ -157,107 +151,4 @@ public class TransactedDefinition extends OutputDefinition<TransactedDefinition>
         return this;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Policy policy = resolvePolicy(routeContext);
-        org.apache.camel.util.ObjectHelper.notNull(policy, "policy", this);
-
-        // before wrap
-        policy.beforeWrap(routeContext, this);
-
-        // create processor after the before wrap
-        Processor childProcessor = this.createChildProcessor(routeContext, 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;
-    }
-
-    protected Policy resolvePolicy(RouteContext routeContext) {
-        if (policy != null) {
-            return policy;
-        }
-        return doResolvePolicy(routeContext, getRef(), type);
-    }
-
-    protected static Policy doResolvePolicy(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 = 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);
-                        }
-                        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/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java b/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java
index e5b79e2..a708ea1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java
@@ -21,11 +21,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.TransformProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Transforms the message body based on an expression
@@ -57,12 +54,6 @@ public class TransformDefinition extends NoOutputExpressionNode {
         return "transform[" + getExpression() + "]";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Expression expr = getExpression().createExpression(routeContext);
-        return new TransformProcessor(expr);
-    }
-
     /**
      * Expression to return the transformed message body (the new message body to use)
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
index 9e01d84..9a85bc1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java
@@ -27,11 +27,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Predicate;
-import org.apache.camel.Processor;
-import org.apache.camel.processor.TryProcessor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Marks the beginning of a try, catch, finally block
@@ -67,35 +64,6 @@ public class TryDefinition extends OutputDefinition<TryDefinition> {
         return "doTry";
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Processor tryProcessor = createOutputsProcessor(routeContext, getOutputsWithoutCatches());
-        if (tryProcessor == null) {
-            throw new IllegalArgumentException("Definition has no children on " + this);
-        }
-
-        List<Processor> catchProcessors = new ArrayList<>();
-        if (catchClauses != null) {
-            for (CatchDefinition catchClause : catchClauses) {
-                catchProcessors.add(createProcessor(routeContext, catchClause));
-            }
-        }
-
-        FinallyDefinition finallyDefinition = finallyClause;
-        if (finallyDefinition == null) {
-            finallyDefinition = new FinallyDefinition();
-            finallyDefinition.setParent(this);
-        }
-        Processor finallyProcessor = createProcessor(routeContext, finallyDefinition);
-
-        // must have either a catch or finally
-        if (finallyClause == null && catchClauses == null) {
-            throw new IllegalArgumentException("doTry must have one or more catch or finally blocks on " + this);
-        }
-
-        return new TryProcessor(tryProcessor, catchProcessors, finallyProcessor);
-    }
-
     // Fluent API
     // -------------------------------------------------------------------------
 
@@ -208,7 +176,7 @@ public class TryDefinition extends OutputDefinition<TryDefinition> {
     }
 
     @Override
-    protected void preCreateProcessor() {
+    public void preCreateProcessor() {
         // force re-creating initialization to ensure its up-to-date
         initialized = false;
         checkInitialized();
diff --git a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
index f4195fc..18d1987 100644
--- a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
@@ -22,7 +22,6 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Processor;
 import org.apache.camel.model.dataformat.ASN1DataFormat;
 import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
@@ -61,10 +60,7 @@ import org.apache.camel.model.dataformat.XmlRpcDataFormat;
 import org.apache.camel.model.dataformat.YAMLDataFormat;
 import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
-import org.apache.camel.processor.UnmarshalProcessor;
-import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Converts the message data received from the wire into a format that Apache Camel processors can consume
@@ -160,9 +156,4 @@ public class UnmarshalDefinition extends NoOutputDefinition<UnmarshalDefinition>
         this.dataFormatType = dataFormatType;
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) {
-        DataFormat dataFormat = DataFormatDefinition.getDataFormat(routeContext, getDataFormatType(), null);
-        return new UnmarshalProcessor(dataFormat);
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
index 960ccc0..d7df9a7 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
@@ -23,10 +23,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.validation.PredicateValidatingProcessor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Validates a message based on an expression
@@ -62,12 +60,6 @@ public class ValidateDefinition extends NoOutputExpressionNode {
         return "validate[" + getExpression() + "]";
     }
 
-    @Override
-    public PredicateValidatingProcessor createProcessor(RouteContext routeContext) throws Exception {
-        Predicate pred = getExpression().createPredicate(routeContext);
-        return new PredicateValidatingProcessor(pred);
-    }
-
     /**
      * Expression to use for validation as a predicate. The expression should return either <tt>true</tt> or <tt>false</tt>.
      * If returning <tt>false</tt> the message is invalid and an exception is thrown.
diff --git a/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
index 34b2f58..7940366 100644
--- a/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
@@ -20,10 +20,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Predicate;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.FilterProcessor;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Triggers a route when an expression evaluates to <tt>true</tt>
@@ -73,11 +71,6 @@ public class WhenDefinition extends ExpressionNode {
         return "when[" + description() + "]";
     }
 
-    @Override
-    public FilterProcessor createProcessor(RouteContext routeContext) throws Exception {
-        return createFilterProcessor(routeContext);
-    }
-
     /**
      * Expression used as the predicate to evaluate whether this when should trigger and route the message or not.
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java
index 77b88fd..46f2ee5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java
@@ -18,12 +18,9 @@ package org.apache.camel.model;
 
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Predicate;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.spi.AsPredicate;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Predicate to determine if the message should be sent or not to the endpoint, when using interceptSentToEndpoint.
@@ -36,26 +33,6 @@ public class WhenSkipSendToEndpointDefinition extends WhenDefinition {
         return "whenSkipSendToEndpoint";
     }
 
-    @Override
-    protected Predicate createPredicate(RouteContext routeContext) {
-        // we need to keep track whether the when matches or not, so delegate
-        // the predicate and add the matches result as a property on the exchange
-        final Predicate delegate = super.createPredicate(routeContext);
-        return new Predicate() {
-            @Override
-            public boolean matches(Exchange exchange) {
-                boolean matches = delegate.matches(exchange);
-                exchange.setProperty(Exchange.INTERCEPT_SEND_TO_ENDPOINT_WHEN_MATCHED, matches);
-                return matches;
-            }
-
-            @Override
-            public String toString() {
-                return delegate.toString();
-            }
-        };
-    }
-
     /**
      * Expression used as the predicate to evaluate whether the message should be sent or not to the endpoint
      */
diff --git a/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
index d152cf4..9798b44 100644
--- a/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java
@@ -31,13 +31,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
-import org.apache.camel.builder.ExpressionBuilder;
-import org.apache.camel.processor.CamelInternalProcessor;
-import org.apache.camel.processor.SendDynamicProcessor;
-import org.apache.camel.processor.WireTapProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
 
 /**
  * Routes a copy of a message (or creates a new message) to a secondary destination while continue routing the original message.
@@ -70,66 +64,7 @@ public class WireTapDefinition<Type extends ProcessorDefinition<Type>> extends T
     public WireTapDefinition() {
     }
 
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        // executor service is mandatory for wire tap
-        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, true);
-        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "WireTap", this, true);
-
-        // must use InOnly for WireTap
-        setPattern(ExchangePattern.InOnly);
-
-        // create the send dynamic producer to send to the wire tapped endpoint
-        SendDynamicProcessor dynamicTo = (SendDynamicProcessor) super.createProcessor(routeContext);
-
-        // create error handler we need to use for processing the wire tapped
-        Processor target = wrapInErrorHandler(routeContext, dynamicTo);
-
-        // and wrap in unit of work
-        CamelInternalProcessor internal = new CamelInternalProcessor(target);
-        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
-
-        // is true bt default
-        boolean isCopy = getCopy() == null || getCopy();
-
-        WireTapProcessor answer = new WireTapProcessor(dynamicTo, internal, getPattern(), threadPool, shutdownThreadPool, isDynamic());
-        answer.setCopy(isCopy);
-        if (newExchangeProcessorRef != null) {
-            newExchangeProcessor = routeContext.mandatoryLookup(newExchangeProcessorRef, Processor.class);
-        }
-        if (newExchangeProcessor != null) {
-            answer.addNewExchangeProcessor(newExchangeProcessor);
-        }
-        if (newExchangeExpression != null) {
-            answer.setNewExchangeExpression(newExchangeExpression.createExpression(routeContext));
-        }
-        if (headers != null && !headers.isEmpty()) {
-            for (SetHeaderDefinition header : headers) {
-                Processor processor = createProcessor(routeContext, header);
-                answer.addNewExchangeProcessor(processor);
-            }
-        }
-        if (onPrepareRef != null) {
-            onPrepare = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), onPrepareRef, Processor.class);
-        }
-        if (onPrepare != null) {
-            answer.setOnPrepare(onPrepare);
-        }
-
-        return answer;
-    }
-
-    @Override
-    protected Expression createExpression(RouteContext routeContext) {
-        // whether to use dynamic or static uri
-        if (isDynamic()) {
-            return super.createExpression(routeContext);
-        } else {
-            return ExpressionBuilder.constantExpression(getUri());
-        }
-    }
-
-    private boolean isDynamic() {
+    public boolean isDynamic() {
         // its dynamic by default
         return dynamicUri == null || dynamicUri;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java
index 53a40c8..30fb272 100644
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java
@@ -16,10 +16,6 @@
  */
 package org.apache.camel.model.cloud;
 
-import java.util.Optional;
-import java.util.function.Function;
-import java.util.function.Supplier;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
@@ -28,38 +24,15 @@ import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.cloud.ServiceChooser;
-import org.apache.camel.cloud.ServiceChooserAware;
 import org.apache.camel.cloud.ServiceDiscovery;
-import org.apache.camel.cloud.ServiceDiscoveryAware;
-import org.apache.camel.cloud.ServiceExpressionFactory;
 import org.apache.camel.cloud.ServiceFilter;
-import org.apache.camel.cloud.ServiceFilterAware;
 import org.apache.camel.cloud.ServiceLoadBalancer;
-import org.apache.camel.impl.cloud.DefaultServiceCallExpression;
-import org.apache.camel.impl.cloud.DefaultServiceCallProcessor;
-import org.apache.camel.impl.cloud.DefaultServiceLoadBalancer;
-import org.apache.camel.impl.cloud.HealthyServiceFilter;
-import org.apache.camel.impl.cloud.PassThroughServiceFilter;
-import org.apache.camel.impl.cloud.RandomServiceChooser;
-import org.apache.camel.impl.cloud.RoundRobinServiceChooser;
-import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.NoOutputDefinition;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.function.Suppliers;
-import org.apache.camel.util.function.ThrowingHelper;
-
-import static org.apache.camel.support.CamelContextHelper.findByType;
-import static org.apache.camel.support.CamelContextHelper.lookup;
 
 /**
  * To call remote services
@@ -754,403 +727,4 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
         return this;
     }
 
-    // *****************************
-    // Processor Factory
-    // *****************************
-
-    @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        final CamelContext camelContext = routeContext.getCamelContext();
-        final ServiceDiscovery serviceDiscovery = retrieveServiceDiscovery(camelContext);
-        final ServiceFilter serviceFilter = retrieveServiceFilter(camelContext);
-        final ServiceChooser serviceChooser = retrieveServiceChooser(camelContext);
-        final ServiceLoadBalancer loadBalancer = retrieveLoadBalancer(camelContext);
-
-        CamelContextAware.trySetCamelContext(serviceDiscovery, camelContext);
-        CamelContextAware.trySetCamelContext(serviceFilter, camelContext);
-        CamelContextAware.trySetCamelContext(serviceChooser, camelContext);
-        CamelContextAware.trySetCamelContext(loadBalancer, camelContext);
-
-        if (loadBalancer instanceof ServiceDiscoveryAware) {
-            ((ServiceDiscoveryAware) loadBalancer).setServiceDiscovery(serviceDiscovery);
-        }
-        if (loadBalancer instanceof ServiceFilterAware) {
-            ((ServiceFilterAware) loadBalancer).setServiceFilter(serviceFilter);
-        }
-        if (loadBalancer instanceof ServiceChooserAware) {
-            ((ServiceChooserAware) loadBalancer).setServiceChooser(serviceChooser);
-        }
-
-        // The component is used to configure the default scheme to use (eg camel component name).
-        // The component configured on EIP takes precedence vs configured on configuration.
-        String endpointScheme = this.component;
-        if (endpointScheme == null) {
-            ServiceCallConfigurationDefinition conf = retrieveConfig(camelContext);
-            if (conf != null) {
-                endpointScheme = conf.getComponent();
-            }
-        }
-        if (endpointScheme == null) {
-            ServiceCallConfigurationDefinition conf = retrieveDefaultConfig(camelContext);
-            if (conf != null) {
-                endpointScheme = conf.getComponent();
-            }
-        }
-
-        // The uri is used to tweak the uri.
-        // The uri configured on EIP takes precedence vs configured on configuration.
-        String endpointUri = this.uri;
-        if (endpointUri == null) {
-            ServiceCallConfigurationDefinition conf = retrieveConfig(camelContext);
-            if (conf != null) {
-                endpointUri = conf.getUri();
-            }
-        }
-        if (endpointUri == null) {
-            ServiceCallConfigurationDefinition conf = retrieveDefaultConfig(camelContext);
-            if (conf != null) {
-                endpointUri = conf.getUri();
-            }
-        }
-
-        // Service name is mandatory
-        ObjectHelper.notNull(name, "Service name");
-
-        endpointScheme = ThrowingHelper.applyIfNotEmpty(endpointScheme, camelContext::resolvePropertyPlaceholders, () -> ServiceCallDefinitionConstants.DEFAULT_COMPONENT);
-        endpointUri = ThrowingHelper.applyIfNotEmpty(endpointUri, camelContext::resolvePropertyPlaceholders, () -> null);
-
-        return new DefaultServiceCallProcessor(
-            camelContext,
-            camelContext.resolvePropertyPlaceholders(name),
-            endpointScheme,
-            endpointUri,
-            pattern,
-            loadBalancer,
-            retrieveExpression(camelContext, endpointScheme));
-    }
-
-    // *****************************
-    // Helpers
-    // *****************************
-
-    private ServiceCallConfigurationDefinition retrieveDefaultConfig(CamelContext camelContext) {
-        // check if a default configuration is bound to the registry
-        ServiceCallConfigurationDefinition config = camelContext.adapt(ModelCamelContext.class).getServiceCallConfiguration(null);
-
-        if (config == null) {
-            // Or if it is in the registry
-            config = lookup(
-                camelContext,
-                ServiceCallDefinitionConstants.DEFAULT_SERVICE_CALL_CONFIG_ID,
-                ServiceCallConfigurationDefinition.class);
-        }
-
-        if (config == null) {
-            // If no default is set either by searching by name or bound to the
-            // camel context, assume that if there is a single instance in the
-            // registry, that is the default one
-            config = findByType(camelContext, ServiceCallConfigurationDefinition.class);
-        }
-
-        return config;
-    }
-
-    private ServiceCallConfigurationDefinition retrieveConfig(CamelContext camelContext) {
-        ServiceCallConfigurationDefinition config = null;
-        if (configurationRef != null) {
-            // lookup in registry firstNotNull
-            config = lookup(camelContext, configurationRef, ServiceCallConfigurationDefinition.class);
-            if (config == null) {
-                // and fallback as service configuration
-                config = camelContext.adapt(ModelCamelContext.class).getServiceCallConfiguration(configurationRef);
-            }
-        }
-
-        return config;
-    }
-
-    // ******************************************
-    // ServiceDiscovery
-    // ******************************************
-
-    private ServiceDiscovery retrieveServiceDiscovery(CamelContext camelContext, Function<CamelContext, ServiceCallConfigurationDefinition> function) throws Exception {
-        ServiceDiscovery answer = null;
-
-        ServiceCallConfigurationDefinition config = function.apply(camelContext);
-        if (config != null) {
-            if (config.getServiceDiscoveryConfiguration() != null) {
-                answer = config.getServiceDiscoveryConfiguration().newInstance(camelContext);
-            } else {
-                answer = retrieve(
-                    ServiceDiscovery.class,
-                    camelContext,
-                    config::getServiceDiscovery,
-                    config::getServiceDiscoveryRef
-                );
-            }
-        }
-
-        return answer;
-    }
-
-    private ServiceDiscovery retrieveServiceDiscovery(CamelContext camelContext) throws Exception {
-        return Suppliers.firstNotNull(
-            () -> (serviceDiscoveryConfiguration != null) ? serviceDiscoveryConfiguration.newInstance(camelContext) : null,
-            // Local configuration
-            () -> retrieve(ServiceDiscovery.class, camelContext, this::getServiceDiscovery, this::getServiceDiscoveryRef),
-            // Linked configuration
-            () -> retrieveServiceDiscovery(camelContext, this::retrieveConfig),
-            // Default configuration
-            () -> retrieveServiceDiscovery(camelContext, this::retrieveDefaultConfig),
-            // Check if there is a single instance in the registry
-            () -> findByType(camelContext, ServiceDiscovery.class),
-            // From registry
-            () -> lookup(camelContext, ServiceCallDefinitionConstants.DEFAULT_SERVICE_DISCOVERY_ID, ServiceDiscovery.class)
-        ).orElseGet(
-            // Default, that's s little ugly but a load balancer may live without
-            // (i.e. the Ribbon one) so let's delegate the null check to the actual
-            // impl.
-            () -> null
-        );
-    }
-
-    // ******************************************
-    // ServiceFilter
-    // ******************************************
-
-    private ServiceFilter retrieveServiceFilter(CamelContext camelContext, Function<CamelContext, ServiceCallConfigurationDefinition> function) throws Exception {
-        ServiceFilter answer = null;
-
-        ServiceCallConfigurationDefinition config = function.apply(camelContext);
-        if (config != null) {
-            if (config.getServiceFilterConfiguration() != null) {
-                answer = config.getServiceFilterConfiguration().newInstance(camelContext);
-            } else {
-                answer = retrieve(
-                    ServiceFilter.class,
-                    camelContext,
-                    config::getServiceFilter,
-                    config::getServiceFilterRef
-                );
-            }
-
-            if (answer == null) {
-                String ref = config.getServiceFilterRef();
-                if (ObjectHelper.equal("healthy", ref, true)) {
-                    answer = new HealthyServiceFilter();
-                } else if (ObjectHelper.equal("pass-through", ref, true)) {
-                    answer = new PassThroughServiceFilter();
-                } else if (ObjectHelper.equal("passthrough", ref, true)) {
-                    answer = new PassThroughServiceFilter();
-                }
-            }
-        }
-
-        return answer;
-    }
-
-    private ServiceFilter retrieveServiceFilter(CamelContext camelContext) throws Exception {
-        return Suppliers.firstNotNull(
-            () -> (serviceFilterConfiguration != null) ? serviceFilterConfiguration.newInstance(camelContext) : null,
-            // Local configuration
-            () -> retrieve(ServiceFilter.class, camelContext, this::getServiceFilter, this::getServiceFilterRef),
-            // Linked configuration
-            () -> retrieveServiceFilter(camelContext, this::retrieveConfig),
-            // Default configuration
-            () -> retrieveServiceFilter(camelContext, this::retrieveDefaultConfig),
-            // Check if there is a single instance in the registry
-            () -> findByType(camelContext, ServiceFilter.class),
-            // From registry
-            () -> lookup(camelContext, ServiceCallDefinitionConstants.DEFAULT_SERVICE_FILTER_ID, ServiceFilter.class)
-        ).orElseGet(
-            // Default
-            () -> new HealthyServiceFilter()
-        );
-    }
-
-    // ******************************************
-    // ServiceChooser
-    // ******************************************
-
-    private ServiceChooser retrieveServiceChooser(CamelContext camelContext, Function<CamelContext, ServiceCallConfigurationDefinition> function) throws Exception {
-        ServiceChooser answer = null;
-
-        ServiceCallConfigurationDefinition config = function.apply(camelContext);
-        if (config != null) {
-            answer = retrieve(
-                ServiceChooser.class,
-                camelContext,
-                config::getServiceChooser,
-                config::getServiceChooserRef
-            );
-
-            if (answer == null) {
-                String ref = config.getServiceChooserRef();
-                if (ObjectHelper.equal("roundrobin", ref, true)) {
-                    answer = new RoundRobinServiceChooser();
-                } else if (ObjectHelper.equal("round-robin", ref, true)) {
-                    answer = new RoundRobinServiceChooser();
-                } else if (ObjectHelper.equal("random", ref, true)) {
-                    answer = new RandomServiceChooser();
-                }
-            }
-        }
-
-        return answer;
-    }
-
-    private ServiceChooser retrieveServiceChooser(CamelContext camelContext) throws Exception {
-        return Suppliers.firstNotNull(
-            // Local configuration
-            () -> retrieve(ServiceChooser.class, camelContext, this::getServiceChooser, this::getServiceChooserRef),
-            // Linked configuration
-            () -> retrieveServiceChooser(camelContext, this::retrieveConfig),
-            // Default configuration
-            () -> retrieveServiceChooser(camelContext, this::retrieveDefaultConfig),
-            // Check if there is a single instance in the registry
-            () -> findByType(camelContext, ServiceChooser.class),
-            // From registry
-            () -> lookup(camelContext, ServiceCallDefinitionConstants.DEFAULT_SERVICE_CHOOSER_ID, ServiceChooser.class)
-        ).orElseGet(
-            // Default
-            () -> new RoundRobinServiceChooser()
-        );
-    }
-
-    // ******************************************
-    // LoadBalancer
-    // ******************************************
-
-    private ServiceLoadBalancer retrieveLoadBalancer(CamelContext camelContext, Function<CamelContext, ServiceCallConfigurationDefinition> function) throws Exception {
-        ServiceLoadBalancer answer = null;
-
-        ServiceCallConfigurationDefinition config = function.apply(camelContext);
-        if (config != null) {
-            if (config.getLoadBalancerConfiguration() != null) {
-                answer = config.getLoadBalancerConfiguration().newInstance(camelContext);
-            } else {
-                answer = retrieve(
-                    ServiceLoadBalancer.class,
-                    camelContext,
-                    config::getLoadBalancer,
-                    config::getLoadBalancerRef
-                );
-            }
-        }
-
-        return answer;
-    }
-
-    private ServiceLoadBalancer retrieveLoadBalancer(CamelContext camelContext) throws Exception {
-        return Suppliers.firstNotNull(
-            () -> (loadBalancerConfiguration != null) ? loadBalancerConfiguration.newInstance(camelContext) : null,
-            // Local configuration
-            () -> retrieve(ServiceLoadBalancer.class, camelContext, this::getLoadBalancer, this::getLoadBalancerRef),
-            // Linked configuration
-            () -> retrieveLoadBalancer(camelContext, this::retrieveConfig),
-            // Default configuration
-            () -> retrieveLoadBalancer(camelContext, this::retrieveDefaultConfig),
-            // Check if there is a single instance in the registry
-            () -> findByType(camelContext, ServiceLoadBalancer.class),
-            // From registry
-            () -> lookup(camelContext, ServiceCallDefinitionConstants.DEFAULT_LOAD_BALANCER_ID, ServiceLoadBalancer.class)
-        ).orElseGet(
-            // Default
-            () -> new DefaultServiceLoadBalancer()
-        );
-    }
-
-    // ******************************************
-    // Expression
-    // ******************************************
-
-    private Expression retrieveExpression(CamelContext camelContext, Function<CamelContext, ServiceCallConfigurationDefinition> function) throws Exception {
-        Expression answer = null;
-
-        ServiceCallConfigurationDefinition config = function.apply(camelContext);
-        if (config != null) {
-            if (config.getExpressionConfiguration() != null) {
-                answer = config.getExpressionConfiguration().newInstance(camelContext);
-            } else {
-                answer = retrieve(
-                    Expression.class,
-                    camelContext,
-                    config::getExpression,
-                    config::getExpressionRef
-                );
-            }
-        }
-
-        return answer;
-    }
-
-    private Expression retrieveExpression(CamelContext camelContext, String component) throws Exception {
-        Optional<Expression> expression = Suppliers.firstNotNull(
-            () -> (expressionConfiguration != null) ? expressionConfiguration.newInstance(camelContext) : null,
-            // Local configuration
-            () -> retrieve(Expression.class, camelContext, this::getExpression, this::getExpressionRef),
-            // Linked configuration
-            () -> retrieveExpression(camelContext, this::retrieveConfig),
-            // Default configuration
-            () -> retrieveExpression(camelContext, this::retrieveDefaultConfig),
-            // From registry
-            () -> lookup(camelContext, ServiceCallDefinitionConstants.DEFAULT_SERVICE_CALL_EXPRESSION_ID, Expression.class)
-        );
-
-        if (expression.isPresent()) {
-            return expression.get();
-        } else {
-            String lookupName = component + "-service-expression";
-            // First try to find the factory from the registry.
-            ServiceExpressionFactory factory = CamelContextHelper.lookup(camelContext, lookupName, ServiceExpressionFactory.class);
-            if (factory != null) {
-                // If a factory is found in the registry do not re-configure it as
-                // it should be pre-configured.
-                return factory.newInstance(camelContext);
-            } else {
-
-                Class<?> type = null;
-
-                try {
-                    // Then use Service factory.
-                    type = camelContext.getFactoryFinder(ServiceCallDefinitionConstants.RESOURCE_PATH).findClass(lookupName);
-                } catch (Exception e) {
-                }
-
-                if (ObjectHelper.isNotEmpty(type)) {
-                    if (ServiceExpressionFactory.class.isAssignableFrom(type)) {
-                        factory = (ServiceExpressionFactory) camelContext.getInjector().newInstance(type);
-                    } else {
-                        throw new IllegalArgumentException(
-                            "Resolving Expression: " + lookupName + " detected type conflict: Not a ServiceExpressionFactory implementation. Found: " + type.getName());
-                    }
-                } else {
-                    // If no factory is found, returns the default
-                    factory = context -> new DefaultServiceCallExpression();
-                }
-
-                return factory.newInstance(camelContext);
-            }
-        }
-    }
-
-    // ************************************
-    // Helpers
-    // ************************************
-
-    private <T> T retrieve(Class<T> type, CamelContext camelContext, Supplier<T> instanceSupplier, Supplier<String> refSupplier) {
-        T answer = null;
-        if (instanceSupplier != null) {
-            answer = instanceSupplier.get();
-        }
-
-        if (answer == null && refSupplier != null) {
-            String ref = refSupplier.get();
-            if (ref != null) {
-                answer = lookup(camelContext, ref, type);
-            }
-        }
-
-        return answer;
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java
index 9fca2f2..5990be8 100644
--- a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/CustomLoadBalancerDefinition.java
@@ -25,9 +25,6 @@ import javax.xml.bind.annotation.XmlTransient;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.util.StringHelper;
 
 /**
  * Custom load balancer
@@ -56,31 +53,21 @@ public class CustomLoadBalancerDefinition extends LoadBalancerDefinition {
         this.ref = ref;
     }
 
-    public LoadBalancer getLoadBalancer() {
+    public LoadBalancer getCustomLoadBalancer() {
         return loadBalancer;
     }
 
     /**
      * The custom load balancer to use.
      */
-    public void setLoadBalancer(LoadBalancer loadBalancer) {
+    public void setCustomLoadBalancer(LoadBalancer loadBalancer) {
         this.loadBalancer = loadBalancer;
     }
 
     @Override
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        if (loadBalancer != null) {
-            return loadBalancer;
-        }
-
-        StringHelper.notEmpty(ref, "ref", this);
-        return CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), ref, LoadBalancer.class);
-    }
-
-    @Override
     public String toString() {
-        if (loadBalancer != null) {
-            return "CustomLoadBalancer[" + loadBalancer + "]";
+        if (getCustomLoadBalancer() != null) {
+            return "CustomLoadBalancer[" + getCustomLoadBalancer() + "]";
         } else {
             return "CustomLoadBalancer[" + ref + "]";
         }
diff --git a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/FailoverLoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/FailoverLoadBalancerDefinition.java
index af6cd5c..b9df87a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/FailoverLoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/FailoverLoadBalancerDefinition.java
@@ -27,11 +27,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.model.LoadBalancerDefinition;
-import org.apache.camel.processor.loadbalancer.FailOverLoadBalancer;
-import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Failover load balancer
@@ -59,44 +55,6 @@ public class FailoverLoadBalancerDefinition extends LoadBalancerDefinition {
     public FailoverLoadBalancerDefinition() {
     }
 
-    @Override
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        FailOverLoadBalancer answer;
-
-        List<Class<?>> classes = new ArrayList<>();
-        if (!exceptionTypes.isEmpty()) {
-            classes.addAll(exceptionTypes);
-        } else if (!exceptions.isEmpty()) {
-            for (String name : exceptions) {
-                Class<?> type = routeContext.getCamelContext().getClassResolver().resolveClass(name);
-                if (type == null) {
-                    throw new IllegalArgumentException("Cannot find class: " + name + " in the classpath");
-                }
-                if (!ObjectHelper.isAssignableFrom(Throwable.class, type)) {
-                    throw new IllegalArgumentException("Class is not an instance of Throwable: " + type);
-                }
-                classes.add(type);
-            }
-        }
-        if (classes.isEmpty()) {
-            answer = new FailOverLoadBalancer();
-        } else {
-            answer = new FailOverLoadBalancer(classes);
-        }
-
-        if (getMaximumFailoverAttempts() != null) {
-            answer.setMaximumFailoverAttempts(getMaximumFailoverAttempts());
-        }
-        if (roundRobin != null) {
-            answer.setRoundRobin(roundRobin);
-        }
-        if (sticky != null) {
-            answer.setSticky(sticky);
-        }
-
-        return answer;
-    }
-
     public List<String> getExceptions() {
         return exceptions;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java
index 236101f..a225d33 100644
--- a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RandomLoadBalancerDefinition.java
@@ -21,9 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.model.LoadBalancerDefinition;
-import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Random load balancer
@@ -39,11 +37,6 @@ public class RandomLoadBalancerDefinition extends LoadBalancerDefinition {
     }
 
     @Override
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        return new org.apache.camel.processor.loadbalancer.RandomLoadBalancer();
-    }
-
-    @Override
     public String toString() {
         return "RandomLoadBalancer";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RoundRobinLoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RoundRobinLoadBalancerDefinition.java
index c6353bd..a7740a3 100644
--- a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RoundRobinLoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/RoundRobinLoadBalancerDefinition.java
@@ -21,9 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.model.LoadBalancerDefinition;
-import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Round robin load balancer
@@ -40,11 +38,6 @@ public class RoundRobinLoadBalancerDefinition extends LoadBalancerDefinition {
     }
 
     @Override
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        return new org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer();
-    }
-
-    @Override
     public String toString() {
         return "RoundRobinLoadBalancer";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalancerDefinition.java
index 813060a..9d545e1 100644
--- a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalancerDefinition.java
@@ -26,10 +26,7 @@ import org.apache.camel.model.ExpressionNodeHelper;
 import org.apache.camel.model.ExpressionSubElementDefinition;
 import org.apache.camel.model.LoadBalancerDefinition;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.loadbalancer.LoadBalancer;
-import org.apache.camel.processor.loadbalancer.StickyLoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Sticky load balancer
@@ -47,11 +44,6 @@ public class StickyLoadBalancerDefinition extends LoadBalancerDefinition {
     public StickyLoadBalancerDefinition() {
     }
 
-    @Override
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        return new StickyLoadBalancer(correlationExpression.createExpression(routeContext));
-    }
-
     public ExpressionSubElementDefinition getCorrelationExpression() {
         return correlationExpression;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalancerDefinition.java
index 6e15723..2ca98cf 100644
--- a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalancerDefinition.java
@@ -21,9 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.model.LoadBalancerDefinition;
-import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Topic load balancer
@@ -39,11 +37,6 @@ public class TopicLoadBalancerDefinition extends LoadBalancerDefinition {
     }
 
     @Override
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        return new org.apache.camel.processor.loadbalancer.TopicLoadBalancer();
-    }
-
-    @Override
     public String toString() {
         return "TopicLoadBalancer";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java
index cc567ea..0ff9373 100644
--- a/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java
@@ -16,22 +16,13 @@
  */
 package org.apache.camel.model.loadbalancer;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.LoadBalancerDefinition;
-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.Metadata;
-import org.apache.camel.spi.RouteContext;
 
 /**
  * Weighted load balancer
@@ -54,30 +45,6 @@ public class WeightedLoadBalancerDefinition extends LoadBalancerDefinition {
     public WeightedLoadBalancerDefinition() {
     }
 
-    @Override
-    protected LoadBalancer createLoadBalancer(RouteContext routeContext) {
-        WeightedLoadBalancer loadBalancer;
-        List<Integer> distributionRatioList = new ArrayList<>();
-        
-        try {
-            String[] ratios = distributionRatio.split(getDistributionRatioDelimiter());
-            for (String ratio : ratios) {
-                distributionRatioList.add(new Integer(ratio.trim()));
-            }
-
-            boolean isRoundRobin = getRoundRobin() != null && getRoundRobin();
-            if (isRoundRobin) {
-                loadBalancer = new WeightedRoundRobinLoadBalancer(distributionRatioList);
-            } else {
-                loadBalancer = new WeightedRandomLoadBalancer(distributionRatioList);
-            }
-        } catch (Exception e) {
-            throw RuntimeCamelException.wrapRuntimeCamelException(e);
-        }
-
-        return loadBalancer;
-    }
-
     public Boolean getRoundRobin() {
         return roundRobin;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
index e16801d..df48cdd 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
@@ -21,22 +21,14 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import javax.xml.bind.JAXBContext;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.model.OptionalIdentifiedDefinition;
-import org.apache.camel.processor.RestBindingAdvice;
-import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.RestConfiguration;
-import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.EndpointHelper;
-import org.apache.camel.support.IntrospectionSupport;
 
 /**
  * To configure rest binding
@@ -94,172 +86,6 @@ public class RestBindingDefinition extends OptionalIdentifiedDefinition<RestBind
         return "RestBinding";
     }
 
-    public RestBindingAdvice createRestBindingAdvice(RouteContext routeContext) throws Exception {
-
-        CamelContext context = routeContext.getCamelContext();
-        RestConfiguration config = context.getRestConfiguration(component, true);
-
-        // these options can be overridden per rest verb
-        String mode = config.getBindingMode().name();
-        if (bindingMode != null) {
-            mode = bindingMode.name();
-        }
-        boolean cors = config.isEnableCORS();
-        if (enableCORS != null) {
-            cors = enableCORS;
-        }
-        boolean skip = config.isSkipBindingOnErrorCode();
-        if (skipBindingOnErrorCode != null) {
-            skip = skipBindingOnErrorCode;
-        }
-        boolean validation = config.isClientRequestValidation();
-        if (clientRequestValidation != null) {
-            validation = clientRequestValidation;
-        }
-
-        // cors headers
-        Map<String, String> corsHeaders = config.getCorsHeaders();
-
-        if (mode == null || "off".equals(mode)) {
-            // binding mode is off, so create a off mode binding processor
-            return new RestBindingAdvice(context, null, null, null, null, consumes, produces, mode, skip, validation,
-                cors, corsHeaders, defaultValues, requiredBody != null ? requiredBody : false, requiredQueryParameters, requiredHeaders);
-        }
-
-        // setup json data format
-        DataFormat json = null;
-        DataFormat outJson = null;
-        if (mode.contains("json") || "auto".equals(mode)) {
-            String name = config.getJsonDataFormat();
-            if (name != null) {
-                // must only be a name, not refer to an existing instance
-                Object instance = context.getRegistry().lookupByName(name);
-                if (instance != null) {
-                    throw new IllegalArgumentException("JsonDataFormat name: " + name + " must not be an existing bean instance from the registry");
-                }
-            } else {
-                name = "json-jackson";
-            }
-            // this will create a new instance as the name was not already pre-created
-            json = context.resolveDataFormat(name);
-            outJson = context.resolveDataFormat(name);
-
-            if (json != null) {
-                Class<?> clazz = null;
-                if (type != null) {
-                    String typeName = type.endsWith("[]") ? type.substring(0, type.length() - 2) : type;
-                    clazz = context.getClassResolver().resolveMandatoryClass(typeName);
-                }
-                if (clazz != null) {
-                    IntrospectionSupport.setProperty(context.getTypeConverter(), json, "unmarshalType", clazz);
-                    IntrospectionSupport.setProperty(context.getTypeConverter(), json, "useList", type.endsWith("[]"));
-                }
-                setAdditionalConfiguration(config, context, json, "json.in.");
-
-                Class<?> outClazz = null;
-                if (outType != null) {
-                    String typeName = outType.endsWith("[]") ? outType.substring(0, outType.length() - 2) : outType;
-                    outClazz = context.getClassResolver().resolveMandatoryClass(typeName);
-                }
-                if (outClazz != null) {
-                    IntrospectionSupport.setProperty(context.getTypeConverter(), outJson, "unmarshalType", outClazz);
-                    IntrospectionSupport.setProperty(context.getTypeConverter(), outJson, "useList", outType.endsWith("[]"));
-                }
-                setAdditionalConfiguration(config, context, outJson, "json.out.");
-            }
-        }
-
-        // setup xml data format
-        DataFormat jaxb = null;
-        DataFormat outJaxb = null;
-        if (mode.contains("xml") || "auto".equals(mode)) {
-            String name = config.getXmlDataFormat();
-            if (name != null) {
-                // must only be a name, not refer to an existing instance
-                Object instance = context.getRegistry().lookupByName(name);
-                if (instance != null) {
-                    throw new IllegalArgumentException("XmlDataFormat name: " + name + " must not be an existing bean instance from the registry");
-                }
-            } else {
-                name = "jaxb";
-            }
-            // this will create a new instance as the name was not already pre-created
-            jaxb = context.resolveDataFormat(name);
-            outJaxb = context.resolveDataFormat(name);
-
-            // is xml binding required?
-            if (mode.contains("xml") && jaxb == null) {
-                throw new IllegalArgumentException("XML DataFormat " + name + " not found.");
-            }
-
-            if (jaxb != null) {
-                Class<?> clazz = null;
-                if (type != null) {
-                    String typeName = type.endsWith("[]") ? type.substring(0, type.length() - 2) : type;
-                    clazz = context.getClassResolver().resolveMandatoryClass(typeName);
-                }
-                if (clazz != null) {
-                    JAXBContext jc = JAXBContext.newInstance(clazz);
-                    IntrospectionSupport.setProperty(context.getTypeConverter(), jaxb, "context", jc);
-                }
-                setAdditionalConfiguration(config, context, jaxb, "xml.in.");
-
-                Class<?> outClazz = null;
-                if (outType != null) {
-                    String typeName = outType.endsWith("[]") ? outType.substring(0, outType.length() - 2) : outType;
-                    outClazz = context.getClassResolver().resolveMandatoryClass(typeName);
-                }
-                if (outClazz != null) {
-                    JAXBContext jc = JAXBContext.newInstance(outClazz);
-                    IntrospectionSupport.setProperty(context.getTypeConverter(), outJaxb, "context", jc);
-                } else if (clazz != null) {
-                    // fallback and use the context from the input
-                    JAXBContext jc = JAXBContext.newInstance(clazz);
-                    IntrospectionSupport.setProperty(context.getTypeConverter(), outJaxb, "context", jc);
-                }
-                setAdditionalConfiguration(config, context, outJaxb, "xml.out.");
-            }
-        }
-
-        return new RestBindingAdvice(context, json, jaxb, outJson, outJaxb, consumes, produces, mode, skip, validation,
-            cors, corsHeaders, defaultValues, requiredBody != null ? requiredBody : false, requiredQueryParameters, requiredHeaders);
-    }
-
-    private void setAdditionalConfiguration(RestConfiguration config, CamelContext context,
-                                            DataFormat dataFormat, String prefix) throws Exception {
-        if (config.getDataFormatProperties() != null && !config.getDataFormatProperties().isEmpty()) {
-            // must use a copy as otherwise the options gets removed during introspection setProperties
-            Map<String, Object> copy = new HashMap<>();
-
-            // filter keys on prefix
-            // - either its a known prefix and must match the prefix parameter
-            // - or its a common configuration that we should always use
-            for (Map.Entry<String, Object> entry : config.getDataFormatProperties().entrySet()) {
-                String key = entry.getKey();
-                String copyKey;
-                boolean known = isKeyKnownPrefix(key);
-                if (known) {
-                    // remove the prefix from the key to use
-                    copyKey = key.substring(prefix.length());
-                } else {
-                    // use the key as is
-                    copyKey = key;
-                }
-                if (!known || key.startsWith(prefix)) {
-                    copy.put(copyKey, entry.getValue());
-                }
-            }
-
-            // set reference properties first as they use # syntax that fools the regular properties setter
-            EndpointHelper.setReferenceProperties(context, dataFormat, copy);
-            EndpointHelper.setProperties(context, dataFormat, copy);
-        }
-    }
-
-    private boolean isKeyKnownPrefix(String key) {
-        return key.startsWith("json.in.") || key.startsWith("json.out.") || key.startsWith("xml.in.") || key.startsWith("xml.out.");
-    }
-
     public String getConsumes() {
         return consumes;
     }
@@ -289,6 +115,10 @@ public class RestBindingDefinition extends OptionalIdentifiedDefinition<RestBind
         requiredQueryParameters.add(paramName);
     }
 
+    public Set<String> getRequiredQueryParameters() {
+        return requiredQueryParameters;
+    }
+
     /**
      * Adds a required HTTP header
      *
@@ -301,6 +131,10 @@ public class RestBindingDefinition extends OptionalIdentifiedDefinition<RestBind
         requiredHeaders.add(headerName);
     }
 
+    public Set<String> getRequiredHeaders() {
+        return requiredHeaders;
+    }
+
     public Boolean getRequiredBody() {
         return requiredBody;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
index 4fb4d8d..431503e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
@@ -21,7 +21,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Transformer;
 
@@ -42,34 +41,6 @@ public class CustomTransformerDefinition extends TransformerDefinition {
     @XmlAttribute
     private String className;
 
-    @Override
-    protected Transformer doCreateTransformer(CamelContext context) throws Exception {
-        if (ref == null && className == null) {
-            throw new IllegalArgumentException("'ref' or 'className' must be specified for customTransformer");
-        }
-        Transformer transformer;
-        if (ref != null) {
-            transformer = context.getRegistry().lookupByNameAndType(ref, Transformer.class);
-            if (transformer == null) {
-                throw new IllegalArgumentException("Cannot find transformer with ref:" + ref);
-            }
-            if (transformer.getModel() != null || transformer.getFrom() != null || transformer.getTo() != null) {
-                throw new IllegalArgumentException(String.format("Transformer '%s' is already in use. Please check if duplicate transformer exists.", ref));
-            }
-        } else {
-            Class<Transformer> transformerClass = context.getClassResolver().resolveMandatoryClass(className, Transformer.class);
-            if (transformerClass == null) {
-                throw new IllegalArgumentException("Cannot find transformer class: " + className);
-            }
-            transformer = context.getInjector().newInstance(transformerClass);
-
-        }
-        transformer.setCamelContext(context);
-        return transformer.setModel(getScheme())
-                          .setFrom(getFromType())
-                          .setTo(getToType());
-    }
-
     public String getRef() {
         return ref;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
index e4cacd0..e200c25 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
@@ -23,8 +23,6 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.transformer.DataFormatTransformer;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.dataformat.ASN1DataFormat;
 import org.apache.camel.model.dataformat.AvroDataFormat;
@@ -67,12 +65,11 @@ import org.apache.camel.model.dataformat.XmlRpcDataFormat;
 import org.apache.camel.model.dataformat.YAMLDataFormat;
 import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
-import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.Transformer;
 
 /**
- * Represents a {@link DataFormatTransformer} which leverages {@link DataFormat} to perform
+ * Represents a {@link org.apache.camel.impl.transformer.DataFormatTransformer} which leverages
+ * {@link org.apache.camel.spi.DataFormat} to perform
  * transformation. One of the DataFormat 'ref' or DataFormat 'type' needs to be specified.
  * 
  * {@see TransformerDefinition}
@@ -132,16 +129,6 @@ public class DataFormatTransformerDefinition extends TransformerDefinition {
     @XmlAttribute
     private String ref;
 
-    @Override
-    protected Transformer doCreateTransformer(CamelContext context) {
-        return new DataFormatTransformer(context)
-                .setDataFormatType(dataFormatType)
-                .setDataFormatRef(ref)
-                .setModel(getScheme())
-                .setFrom(getFromType())
-                .setTo(getToType());
-    }
-
     public String getRef() {
         return ref;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
index a5b1acc..5b2e041 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
@@ -21,18 +21,12 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.impl.transformer.ProcessorTransformer;
-import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.Transformer;
 
 /**
- * Represents an endpoint {@link Transformer} which leverages camel {@link Endpoint} to
- * perform transformation. A {@link ProcessorTransformer} will be created internally
- * with a {@link SendProcessor} which forwards the message to the specified Endpoint.
+ * Represents an endpoint {@link org.apache.camel.spi.Transformer} which leverages camel {@link org.apache.camel.Endpoint} to
+ * perform transformation. A {@link org.apache.camel.impl.transformer.ProcessorTransformer} will be created internally
+ * with a {@link org.apache.camel.processor.SendProcessor} which forwards the message to the specified Endpoint.
  * One of the Endpoint 'ref' or 'uri' needs to be specified.
  * 
  * {@see TransformerDefinition}
@@ -48,18 +42,6 @@ public class EndpointTransformerDefinition extends TransformerDefinition {
     @XmlAttribute
     private String uri;
 
-    @Override
-    protected Transformer doCreateTransformer(CamelContext context) throws Exception {
-        Endpoint endpoint = uri != null ? context.getEndpoint(uri)
-            : context.getRegistry().lookupByNameAndType(ref, Endpoint.class);
-        SendProcessor processor = new SendProcessor(endpoint, ExchangePattern.InOut);
-        return new ProcessorTransformer(context)
-            .setProcessor(processor)
-            .setModel(getScheme())
-            .setFrom(getFromType())
-            .setTo(getToType());
-    }
-
     public String getRef() {
         return ref;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
index 834bd8d..e3d439d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
@@ -21,15 +21,13 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.model.InputTypeDefinition;
 import org.apache.camel.model.OutputTypeDefinition;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.Transformer;
 
 /**
- * <p>Represents a {@link Transformer} which declaratively transforms message content
+ * <p>Represents a {@link org.apache.camel.spi.Transformer} which declaratively transforms message content
  * according to the input type declared by {@link InputTypeDefinition} and/or output type
  * declared by {@link OutputTypeDefinition}.</p>
  * <p>If you specify from='java:com.example.ABC' and to='xml:XYZ', the transformer
@@ -40,7 +38,7 @@ import org.apache.camel.spi.Transformer;
  * Also it's possible to specify scheme='xml' so that the transformer will be picked up
  * for all of java to xml and xml to java transformation.</p>
  * 
- * {@see Transformer}
+ * {@see org.apache.camel.spi.Transformer}
  * {@see InputTypeDefinition}
  * {@see OutputTypeDefinition}
  */
@@ -56,12 +54,6 @@ public abstract class TransformerDefinition {
     @XmlAttribute
     private String toType;
 
-    public Transformer createTransformer(CamelContext context) throws Exception {
-        return doCreateTransformer(context);
-    };
-
-    protected abstract Transformer doCreateTransformer(CamelContext context) throws Exception;
-
     public String getScheme() {
         return scheme;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java
index befbc02..09c1f2b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java
@@ -21,7 +21,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Validator;
 
@@ -42,32 +41,6 @@ public class CustomValidatorDefinition extends ValidatorDefinition {
     @XmlAttribute
     private String className;
 
-    @Override
-    protected Validator doCreateValidator(CamelContext context) throws Exception {
-        if (ref == null && className == null) {
-            throw new IllegalArgumentException("'ref' or 'type' must be specified for customValidator");
-        }
-        Validator validator;
-        if (ref != null) {
-            validator = context.getRegistry().lookupByNameAndType(ref, Validator.class);
-            if (validator == null) {
-                throw new IllegalArgumentException("Cannot find validator with ref:" + ref);
-            }
-            if (validator.getType() != null) {
-                throw new IllegalArgumentException(String.format("Validator '%s' is already in use. Please check if duplicate validator exists.", ref));
-            }
-        } else {
-            Class<Validator> validatorClass = context.getClassResolver().resolveMandatoryClass(className, Validator.class);
-            if (validatorClass == null) {
-                throw new IllegalArgumentException("Cannot find validator class: " + className);
-            }
-            validator = context.getInjector().newInstance(validatorClass);
-
-        }
-        validator.setCamelContext(context);
-        return validator.setType(getType());
-    }
-
     public String getRef() {
         return ref;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java
index 3f5b636..31df8a7 100644
--- a/camel-core/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java
@@ -21,11 +21,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.impl.validator.ProcessorValidator;
-import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Validator;
 
@@ -33,8 +28,8 @@ import org.apache.camel.spi.Validator;
  * Represents an endpoint {@link Validator} which leverages camel validator component such as
  * <a href="http://camel.apache.org/validation.html">Validator Component</a> and 
  * <a href="http://camel.apache.org/bean-validation.html">Bean Validator Component</a> to
- * perform content validation. A {@link ProcessorValidator} will be created internally
- * with a {@link SendProcessor} which forwards the message to the validator Endpoint.
+ * perform content validation. A {@link org.apache.camel.impl.validator.ProcessorValidator} will be created internally
+ * with a {@link org.apache.camel.processor.SendProcessor} which forwards the message to the validator Endpoint.
  * 
  * {@see ValidatorDefinition}
  * {@see Validator}
@@ -49,16 +44,6 @@ public class EndpointValidatorDefinition extends ValidatorDefinition {
     @XmlAttribute
     private String uri;
 
-    @Override
-    protected Validator doCreateValidator(CamelContext context) throws Exception {
-        Endpoint endpoint = uri != null ? context.getEndpoint(uri)
-            : context.getRegistry().lookupByNameAndType(ref, Endpoint.class);
-        SendProcessor processor = new SendProcessor(endpoint, ExchangePattern.InOut);
-        return new ProcessorValidator(context)
-            .setProcessor(processor)
-            .setType(getType());
-    }
-
     public String getRef() {
         return ref;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java
index ea484df..946917d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java
@@ -21,20 +21,18 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.impl.validator.ProcessorValidator;
 import org.apache.camel.model.ExpressionNodeHelper;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.processor.validation.PredicateValidatingProcessor;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Validator;
 
 /**
  * Represents a predicate {@link Validator} which leverages expression or predicates to
- * perform content validation. A {@link ProcessorValidator} will be created internally
- * with a {@link PredicateValidatingProcessor} which validates the message according to specified expression/predicates.
+ * perform content validation. A {@link org.apache.camel.impl.validator.ProcessorValidator}
+ * will be created internally with a {@link org.apache.camel.processor.validation.PredicateValidatingProcessor}
+ * which validates the message according to specified expression/predicates.
  * 
  * {@see ValidatorDefinition}
  * {@see Validator}
@@ -47,15 +45,6 @@ public class PredicateValidatorDefinition extends ValidatorDefinition {
     @XmlElementRef
     private ExpressionDefinition expression;
 
-    @Override
-    protected Validator doCreateValidator(CamelContext context) throws Exception {
-        Predicate pred = getExpression().createPredicate(context);
-        PredicateValidatingProcessor processor = new PredicateValidatingProcessor(pred);
-        return new ProcessorValidator(context)
-            .setProcessor(processor)
-            .setType(getType());
-    }
-
     public ExpressionDefinition getExpression() {
         return expression;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java
index 89a903d..ba75d54 100644
--- a/camel-core/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java
@@ -21,7 +21,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.model.InputTypeDefinition;
 import org.apache.camel.model.OutputTypeDefinition;
 import org.apache.camel.spi.DataType;
@@ -48,12 +47,6 @@ public abstract class ValidatorDefinition {
     @XmlAttribute
     private String type;
 
-    public Validator createValidator(CamelContext context) throws Exception {
-        return doCreateValidator(context);
-    };
-
-    protected abstract Validator doCreateValidator(CamelContext context) throws Exception;
-
     public String getType() {
         return type;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java
new file mode 100644
index 0000000..cb9fb40
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/AggregateReifier.java
@@ -0,0 +1,208 @@
+/**
+ * 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.reifier;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
+
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+import org.apache.camel.Processor;
+import org.apache.camel.model.AggregateDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.processor.CamelInternalProcessor;
+import org.apache.camel.processor.aggregate.AggregateController;
+import org.apache.camel.processor.aggregate.AggregateProcessor;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
+import org.apache.camel.spi.AggregationRepository;
+import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.concurrent.SynchronousExecutorService;
+
+class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
+
+    AggregateReifier(ProcessorDefinition<?> definition) {
+        super(AggregateDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        return createAggregator(routeContext);
+    }
+
+    protected AggregateProcessor createAggregator(RouteContext routeContext) throws Exception {
+        Processor childProcessor = this.createChildProcessor(routeContext, true);
+
+        // wrap the aggregate route in a unit of work processor
+        CamelInternalProcessor internal = new CamelInternalProcessor(childProcessor);
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
+
+        Expression correlation = definition.getExpression().createExpression(routeContext);
+        AggregationStrategy strategy = createAggregationStrategy(routeContext);
+
+        boolean parallel = definition.getParallelProcessing() != null && definition.getParallelProcessing();
+        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, definition, parallel);
+        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "Aggregator", definition, parallel);
+        if (threadPool == null && !parallel) {
+            // executor service is mandatory for the Aggregator
+            // we do not run in parallel mode, but use a synchronous executor, so we run in current thread
+            threadPool = new SynchronousExecutorService();
+            shutdownThreadPool = true;
+        }
+
+        AggregateProcessor answer = new AggregateProcessor(routeContext.getCamelContext(), internal,
+                correlation, strategy, threadPool, shutdownThreadPool);
+
+        AggregationRepository repository = createAggregationRepository(routeContext);
+        if (repository != null) {
+            answer.setAggregationRepository(repository);
+        }
+
+        if (definition.getAggregateController() == null && definition.getAggregateControllerRef() != null) {
+            definition.setAggregateController(routeContext.mandatoryLookup(definition.getAggregateControllerRef(), AggregateController.class));
+        }
+
+        // this EIP supports using a shared timeout checker thread pool or fallback to create a new thread pool
+        boolean shutdownTimeoutThreadPool = false;
+        ScheduledExecutorService timeoutThreadPool = definition.getTimeoutCheckerExecutorService();
+        if (timeoutThreadPool == null && definition.getTimeoutCheckerExecutorServiceRef() != null) {
+            // lookup existing thread pool
+            timeoutThreadPool = routeContext.getCamelContext().getRegistry().lookupByNameAndType(definition.getTimeoutCheckerExecutorServiceRef(), ScheduledExecutorService.class);
+            if (timeoutThreadPool == null) {
+                // then create a thread pool assuming the ref is a thread pool profile id
+                timeoutThreadPool = routeContext.getCamelContext().getExecutorServiceManager().newScheduledThreadPool(this,
+                        AggregateProcessor.AGGREGATE_TIMEOUT_CHECKER, definition.getTimeoutCheckerExecutorServiceRef());
+                if (timeoutThreadPool == null) {
+                    throw new IllegalArgumentException("ExecutorServiceRef " + definition.getTimeoutCheckerExecutorServiceRef()
+                            + " not found in registry (as an ScheduledExecutorService instance) or as a thread pool profile.");
+                }
+                shutdownTimeoutThreadPool = true;
+            }
+        }
+        answer.setTimeoutCheckerExecutorService(timeoutThreadPool);
+        answer.setShutdownTimeoutCheckerExecutorService(shutdownTimeoutThreadPool);
+
+        // set other options
+        answer.setParallelProcessing(parallel);
+        if (definition.getOptimisticLocking() != null) {
+            answer.setOptimisticLocking(definition.getOptimisticLocking());
+        }
+        if (definition.getCompletionPredicate() != null) {
+            Predicate predicate = definition.getCompletionPredicate().createPredicate(routeContext);
+            answer.setCompletionPredicate(predicate);
+        } else if (strategy instanceof Predicate) {
+            // if aggregation strategy implements predicate and was not configured then use as fallback
+            log.debug("Using AggregationStrategy as completion predicate: {}", strategy);
+            answer.setCompletionPredicate((Predicate) strategy);
+        }
+        if (definition.getCompletionTimeoutExpression() != null) {
+            Expression expression = definition.getCompletionTimeoutExpression().createExpression(routeContext);
+            answer.setCompletionTimeoutExpression(expression);
+        }
+        if (definition.getCompletionTimeout() != null) {
+            answer.setCompletionTimeout(definition.getCompletionTimeout());
+        }
+        if (definition.getCompletionInterval() != null) {
+            answer.setCompletionInterval(definition.getCompletionInterval());
+        }
+        if (definition.getCompletionSizeExpression() != null) {
+            Expression expression = definition.getCompletionSizeExpression().createExpression(routeContext);
+            answer.setCompletionSizeExpression(expression);
+        }
+        if (definition.getCompletionSize() != null) {
+            answer.setCompletionSize(definition.getCompletionSize());
+        }
+        if (definition.getCompletionFromBatchConsumer() != null) {
+            answer.setCompletionFromBatchConsumer(definition.getCompletionFromBatchConsumer());
+        }
+        if (definition.getCompletionOnNewCorrelationGroup() != null) {
+            answer.setCompletionOnNewCorrelationGroup(definition.getCompletionOnNewCorrelationGroup());
+        }
+        if (definition.getEagerCheckCompletion() != null) {
+            answer.setEagerCheckCompletion(definition.getEagerCheckCompletion());
+        }
+        if (definition.getIgnoreInvalidCorrelationKeys() != null) {
+            answer.setIgnoreInvalidCorrelationKeys(definition.getIgnoreInvalidCorrelationKeys());
+        }
+        if (definition.getCloseCorrelationKeyOnCompletion() != null) {
+            answer.setCloseCorrelationKeyOnCompletion(definition.getCloseCorrelationKeyOnCompletion());
+        }
+        if (definition.getDiscardOnCompletionTimeout() != null) {
+            answer.setDiscardOnCompletionTimeout(definition.getDiscardOnCompletionTimeout());
+        }
+        if (definition.getForceCompletionOnStop() != null) {
+            answer.setForceCompletionOnStop(definition.getForceCompletionOnStop());
+        }
+        if (definition.getCompleteAllOnStop() != null) {
+            answer.setCompleteAllOnStop(definition.getCompleteAllOnStop());
+        }
+        if (definition.getOptimisticLockRetryPolicy() == null) {
+            if (definition.getOptimisticLockRetryPolicyDefinition() != null) {
+                answer.setOptimisticLockRetryPolicy(definition.getOptimisticLockRetryPolicyDefinition().createOptimisticLockRetryPolicy());
+            }
+        } else {
+            answer.setOptimisticLockRetryPolicy(definition.getOptimisticLockRetryPolicy());
+        }
+        if (definition.getAggregateController() != null) {
+            answer.setAggregateController(definition.getAggregateController());
+        }
+        if (definition.getCompletionTimeoutCheckerInterval() != null) {
+            answer.setCompletionTimeoutCheckerInterval(definition.getCompletionTimeoutCheckerInterval());
+        }
+        return answer;
+    }
+
+    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+        AggregationStrategy strategy = definition.getAggregationStrategy();
+        if (strategy == null && definition.getStrategyRef() != null) {
+            Object aggStrategy = routeContext.lookup(definition.getStrategyRef(), Object.class);
+            if (aggStrategy instanceof AggregationStrategy) {
+                strategy = (AggregationStrategy) aggStrategy;
+            } else if (aggStrategy != null) {
+                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, definition.getAggregationStrategyMethodName());
+                if (definition.getStrategyMethodAllowNull() != null) {
+                    adapter.setAllowNullNewExchange(definition.getStrategyMethodAllowNull());
+                    adapter.setAllowNullOldExchange(definition.getStrategyMethodAllowNull());
+                }
+                strategy = adapter;
+            } else {
+                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + definition.getStrategyRef());
+            }
+        }
+
+        if (strategy == null) {
+            throw new IllegalArgumentException("AggregationStrategy or AggregationStrategyRef must be set on " + this);
+        }
+
+        if (strategy instanceof CamelContextAware) {
+            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
+        }
+
+        return strategy;
+    }
+
+    private AggregationRepository createAggregationRepository(RouteContext routeContext) {
+        AggregationRepository repository = definition.getAggregationRepository();
+        if (repository == null && definition.getAggregationRepositoryRef() != null) {
+            repository = routeContext.mandatoryLookup(definition.getAggregationRepositoryRef(), AggregationRepository.class);
+        }
+        return repository;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/BeanReifier.java
similarity index 68%
copy from camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/BeanReifier.java
index 9557204..134229e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/BeanDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/BeanReifier.java
@@ -14,13 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.model;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
+package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
@@ -32,139 +26,26 @@ import org.apache.camel.component.bean.ConstantStaticTypeBeanHolder;
 import org.apache.camel.component.bean.ConstantTypeBeanHolder;
 import org.apache.camel.component.bean.MethodNotFoundException;
 import org.apache.camel.component.bean.RegistryBean;
-import org.apache.camel.spi.Metadata;
+import org.apache.camel.model.BeanDefinition;
+import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
-/**
- * Calls a java bean
- */
-@Metadata(label = "eip,endpoint")
-@XmlRootElement(name = "bean")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
-    @XmlAttribute
-    private String ref;
-    @XmlAttribute
-    private String method;
-    @XmlAttribute
-    private String beanType;
-    @XmlAttribute @Metadata(defaultValue = "true")
-    private Boolean cache;
-    @XmlTransient
-    private Class<?> beanClass;
-    @XmlTransient
-    private Object bean;
-
-    public BeanDefinition() {
-    }
+class BeanReifier extends ProcessorReifier<BeanDefinition> {
 
-    public BeanDefinition(String ref) {
-        this.ref = ref;
-    }
-
-    public BeanDefinition(String ref, String method) {
-        this.ref = ref;
-        this.method = method;
-    }
-
-    @Override
-    public String toString() {
-        return "Bean[" + description() + "]";
-    }
-    
-    public String description() {
-        if (ref != null) {
-            String methodText = "";
-            if (method != null) {
-                methodText = " method:" + method;
-            }
-            return "ref:" + ref + methodText;
-        } else if (bean != null) {
-            return bean.toString();
-        } else if (beanClass != null) {
-            return beanClass.getName();
-        } else if (beanType != null) {
-            return beanType;
-        } else {
-            return "";
-        }
-    }
-    
-    @Override
-    public String getShortName() {
-        return "bean";
+    BeanReifier(ProcessorDefinition<?> definition) {
+        super(BeanDefinition.class.cast(definition));
     }
 
     @Override
-    public String getLabel() {
-        return "bean[" + description() + "]";
-    }
-
-    public String getRef() {
-        return ref;
-    }
-
-    /**
-     * Sets a reference to a bean to use
-     */
-    public void setRef(String ref) {
-        this.ref = ref;
-    }
-
-    public String getMethod() {
-        return method;
-    }
-
-    /**
-     * Sets the method name on the bean to use
-     */
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-    /**
-     * Sets an instance of the bean to use
-     */
-    public void setBean(Object bean) {
-        this.bean = bean;
-    }
-
-    public String getBeanType() {
-        return beanType;
-    }
-
-    /**
-     * Sets the Class of the bean
-     */
-    public void setBeanType(String beanType) {
-        this.beanType = beanType;
-    }
-
-    /**
-     * Sets the Class of the bean
-     */
-    public void setBeanType(Class<?> beanType) {
-        this.beanClass = beanType;
-    }
-
-    public Boolean getCache() {
-        return cache;
-    }
-
-    /**
-     * Caches the bean lookup, to avoid lookup up bean on every usage.
-     */
-    public void setCache(Boolean cache) {
-        this.cache = cache;
-    }
-
-    // Fluent API
-    //-------------------------------------------------------------------------
-
-    @Override
     public Processor createProcessor(RouteContext routeContext) throws Exception {
+        Object bean = definition.getBean();
+        String ref = definition.getRef();
+        String method = definition.getMethod();
+        String beanType = definition.getBeanType();
+        Class<?> beanClass = definition.getBeanClass();
+
         BeanProcessor answer;
         Class<?> clazz = bean != null ? bean.getClass() : null;
         BeanHolder beanHolder;
@@ -183,7 +64,7 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
             answer = new BeanProcessor(beanHolder);
         } else {
             if (bean == null) {
-                
+
                 if (beanType == null && beanClass == null) {
                     throw new IllegalArgumentException("bean, ref or beanType must be provided");
                 }
@@ -221,7 +102,7 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
             // to a bean name but the String is being invoke instead
             if (bean instanceof String) {
                 throw new IllegalArgumentException("The bean instance is a java.lang.String type: " + bean
-                    + ". We suppose you want to refer to a bean instance by its id instead. Please use ref.");
+                        + ". We suppose you want to refer to a bean instance by its id instead. Please use ref.");
             }
 
             // the holder should either be bean or type based
@@ -242,7 +123,7 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
             }
             answer = new BeanProcessor(beanHolder);
         }
-        
+
         // check for method exists
         if (method != null) {
             answer.setMethod(method);
@@ -270,7 +151,7 @@ public class BeanDefinition extends NoOutputDefinition<BeanDefinition> {
     }
 
     private boolean isCacheBean() {
-        return cache == null || cache;
+        return definition.getCache() == null || definition.getCache();
     }
 
 }
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/CatchReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/CatchReifier.java
new file mode 100644
index 0000000..d14adfa
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/CatchReifier.java
@@ -0,0 +1,81 @@
+/**
+ * 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.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;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.TryDefinition;
+import org.apache.camel.processor.CatchProcessor;
+import org.apache.camel.spi.RouteContext;
+
+class CatchReifier extends ProcessorReifier<CatchDefinition> {
+
+    CatchReifier(ProcessorDefinition<?> definition) {
+        super(CatchDefinition.class.cast(definition));
+    }
+
+    @Override
+    public CatchProcessor createProcessor(RouteContext routeContext) throws Exception {
+        // create and load exceptions if not done
+        if (definition.getExceptionClasses() == null) {
+            definition.setExceptionClasses(createExceptionClasses(routeContext.getCamelContext()));
+        }
+
+        // must have at least one exception
+        if (definition.getExceptionClasses().isEmpty()) {
+            throw new IllegalArgumentException("At least one Exception must be configured to catch");
+        }
+
+        // parent must be a try
+        if (!(definition.getParent() instanceof TryDefinition)) {
+            throw new IllegalArgumentException("This doCatch should have a doTry as its parent on " + this);
+        }
+
+        // do catch does not mandate a child processor
+        Processor childProcessor = this.createChildProcessor(routeContext, false);
+
+        Predicate when = null;
+        if (definition.getOnWhen() != null) {
+            when = definition.getOnWhen().getExpression().createPredicate(routeContext);
+        }
+
+        Predicate handle = definition.getHandledPolicy();
+        if (definition.getHandled() != null) {
+            handle = definition.getHandled().createPredicate(routeContext);
+        }
+
+        return new CatchProcessor(definition.getExceptionClasses(), childProcessor, when, handle);
+    }
+
+    protected List<Class<? extends Throwable>> createExceptionClasses(CamelContext context) 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 etc.
+        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);
+            answer.add(type);
+        }
+        return answer;
+    }
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/ChoiceReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
new file mode 100644
index 0000000..faccb37
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/ChoiceReifier.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.reifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.Processor;
+import org.apache.camel.model.ChoiceDefinition;
+import org.apache.camel.model.ExpressionNode;
+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;
+
+class ChoiceReifier extends ProcessorReifier<ChoiceDefinition> {
+
+    ChoiceReifier(ProcessorDefinition<?> definition) {
+        super(ChoiceDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        List<FilterProcessor> filters = new ArrayList<>();
+        for (WhenDefinition whenClause : definition.getWhenClauses()) {
+            // also resolve properties and constant fields on embedded expressions in the when clauses
+            ExpressionNode exp = whenClause;
+            ExpressionDefinition expressionDefinition = exp.getExpression();
+            if (expressionDefinition != null) {
+                // resolve properties before we create the processor
+                ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), expressionDefinition);
+
+                // resolve constant fields (eg Exchange.FILE_NAME)
+                ProcessorDefinitionHelper.resolveKnownConstantFields(expressionDefinition);
+            }
+
+            FilterProcessor filter = (FilterProcessor) createProcessor(routeContext, whenClause);
+            filters.add(filter);
+        }
+        Processor otherwiseProcessor = null;
+        if (definition.getOtherwise() != null) {
+            otherwiseProcessor = createProcessor(routeContext, definition.getOtherwise());
+        }
+        return new ChoiceProcessor(filters, otherwiseProcessor);
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
new file mode 100644
index 0000000..1a38249
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
@@ -0,0 +1,123 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.Processor;
+import org.apache.camel.model.ClaimCheckDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.ClaimCheckProcessor;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+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;
+
+class ClaimCheckReifier extends ProcessorReifier<ClaimCheckDefinition> {
+
+    ClaimCheckReifier(ProcessorDefinition<?> definition) {
+        super(ClaimCheckDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        notNull(definition.getOperation(), "operation", this);
+
+        ClaimCheckProcessor claim = new ClaimCheckProcessor();
+        claim.setOperation(definition.getOperation().name());
+        claim.setKey(definition.getKey());
+        claim.setFilter(definition.getFilter());
+
+        AggregationStrategy strategy = createAggregationStrategy(routeContext);
+        if (strategy != null) {
+            claim.setAggregationStrategy(strategy);
+        }
+
+        // only filter or aggregation strategy can be configured not both
+        if (definition.getFilter() != null && strategy != null) {
+            throw new IllegalArgumentException("Cannot use both filter and custom aggregation strategy on ClaimCheck EIP");
+        }
+
+        // validate filter, we cannot have both +/- at the same time
+        if (definition.getFilter() != null) {
+            Iterable it = ObjectHelper.createIterable(definition.getFilter(), ",");
+            boolean includeBody = false;
+            boolean excludeBody = false;
+            for (Object o : it) {
+                String pattern = o.toString();
+                if ("body".equals(pattern) || "+body".equals(pattern)) {
+                    includeBody = true;
+                } else if ("-body".equals(pattern)) {
+                    excludeBody = true;
+                }
+            }
+            if (includeBody && excludeBody) {
+                throw new IllegalArgumentException("Cannot have both include and exclude body at the same time in the filter: " + definition.getFilter());
+            }
+            boolean includeHeaders = false;
+            boolean excludeHeaders = false;
+            for (Object o : it) {
+                String pattern = o.toString();
+                if ("headers".equals(pattern) || "+headers".equals(pattern)) {
+                    includeHeaders = true;
+                } else if ("-headers".equals(pattern)) {
+                    excludeHeaders = true;
+                }
+            }
+            if (includeHeaders && excludeHeaders) {
+                throw new IllegalArgumentException("Cannot have both include and exclude headers at the same time in the filter: " + definition.getFilter());
+            }
+            boolean includeHeader = false;
+            boolean excludeHeader = false;
+            for (Object o : it) {
+                String pattern = o.toString();
+                if (pattern.startsWith("header:") || pattern.startsWith("+header:")) {
+                    includeHeader = true;
+                } else if (pattern.startsWith("-header:")) {
+                    excludeHeader = true;
+                }
+            }
+            if (includeHeader && excludeHeader) {
+                throw new IllegalArgumentException("Cannot have both include and exclude header at the same time in the filter: " + definition.getFilter());
+            }
+        }
+
+        return claim;
+    }
+
+    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+        AggregationStrategy strategy = definition.getAggregationStrategy();
+        if (strategy == null && definition.getAggregationStrategyRef() != null) {
+            Object aggStrategy = routeContext.lookup(definition.getAggregationStrategyRef(), Object.class);
+            if (aggStrategy instanceof AggregationStrategy) {
+                strategy = (AggregationStrategy) aggStrategy;
+            } else if (aggStrategy != null) {
+                strategy = new AggregationStrategyBeanAdapter(aggStrategy, definition.getAggregationStrategyMethodName());
+            } else {
+                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + definition.getAggregationStrategyRef());
+            }
+        }
+
+        if (strategy instanceof CamelContextAware) {
+            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
+        }
+
+        return strategy;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java
new file mode 100644
index 0000000..a9dc65b
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/ConvertBodyReifier.java
@@ -0,0 +1,58 @@
+/**
+ * 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.reifier;
+
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+
+import org.apache.camel.Processor;
+import org.apache.camel.model.ConvertBodyDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.ConvertBodyProcessor;
+import org.apache.camel.spi.RouteContext;
+
+class ConvertBodyReifier extends ProcessorReifier<ConvertBodyDefinition> {
+
+    ConvertBodyReifier(ProcessorDefinition<?> definition) {
+        super(ConvertBodyDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        if (definition.getTypeClass() == null && definition.getType() != null) {
+            definition.setTypeClass(routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(definition.getType()));
+        }
+
+        // validate charset
+        if (definition.getCharset() != null) {
+            validateCharset(definition.getCharset());
+        }
+
+        return new ConvertBodyProcessor(definition.getTypeClass(), definition.getCharset());
+    }
+
+    public static void validateCharset(String charset) throws UnsupportedCharsetException {
+        if (charset != null) {
+            if (Charset.isSupported(charset)) {
+                Charset.forName(charset);
+                return;
+            }
+        }
+        throw new UnsupportedCharsetException(charset);
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/DelayReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/DelayReifier.java
new file mode 100644
index 0000000..645fe67
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/DelayReifier.java
@@ -0,0 +1,66 @@
+/**
+ * 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.reifier;
+
+import java.util.concurrent.ScheduledExecutorService;
+
+import org.apache.camel.Expression;
+import org.apache.camel.Processor;
+import org.apache.camel.model.DelayDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.model.language.ExpressionDefinition;
+import org.apache.camel.processor.Delayer;
+import org.apache.camel.spi.RouteContext;
+
+class DelayReifier extends ExpressionReifier<DelayDefinition> {
+
+    DelayReifier(ProcessorDefinition<?> definition) {
+        super(DelayDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        Processor childProcessor = this.createChildProcessor(routeContext, false);
+        Expression delay = createAbsoluteTimeDelayExpression(routeContext);
+
+        boolean async = definition.getAsyncDelayed() != null && definition.getAsyncDelayed();
+        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, definition, async);
+        ScheduledExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredScheduledExecutorService(routeContext, "Delay", definition, async);
+
+        Delayer answer = new Delayer(routeContext.getCamelContext(), childProcessor, delay, threadPool, shutdownThreadPool);
+        if (definition.getAsyncDelayed() != null) {
+            answer.setAsyncDelayed(definition.getAsyncDelayed());
+        }
+        if (definition.getCallerRunsWhenRejected() == null) {
+            // should be default true
+            answer.setCallerRunsWhenRejected(true);
+        } else {
+            answer.setCallerRunsWhenRejected(definition.getCallerRunsWhenRejected());
+        }
+        return answer;
+    }
+
+    private Expression createAbsoluteTimeDelayExpression(RouteContext routeContext) {
+        ExpressionDefinition expr = definition.getExpression();
+        if (expr != null) {
+            return expr.createExpression(routeContext);
+        }
+        return null;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
new file mode 100644
index 0000000..af4dfea
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/DynamicRouterReifier.java
@@ -0,0 +1,59 @@
+/**
+ * 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.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.model.RouteDefinition;
+import org.apache.camel.processor.DynamicRouter;
+import org.apache.camel.spi.RouteContext;
+
+class DynamicRouterReifier extends ExpressionReifier<DynamicRouterDefinition<?>> {
+
+    DynamicRouterReifier(ProcessorDefinition<?> definition) {
+        super(DynamicRouterDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        Expression expression = definition.getExpression().createExpression(routeContext);
+        String delimiter = definition.getUriDelimiter() != null ? definition.getUriDelimiter() : DynamicRouterDefinition.DEFAULT_DELIMITER;
+
+        DynamicRouter dynamicRouter = new DynamicRouter(routeContext.getCamelContext(), expression, delimiter);
+        if (definition.getIgnoreInvalidEndpoints() != null) {
+            dynamicRouter.setIgnoreInvalidEndpoints(definition.getIgnoreInvalidEndpoints());
+        }
+        if (definition.getCacheSize() != null) {
+            dynamicRouter.setCacheSize(definition.getCacheSize());
+        }
+
+        // and wrap this in an error handler
+        ErrorHandlerFactory builder = ((RouteDefinition) routeContext.getRoute()).getErrorHandlerBuilder();
+        // create error handler (create error handler directly to keep it light weight,
+        // instead of using ProcessorDefinition.wrapInErrorHandler)
+        AsyncProcessor errorHandler = (AsyncProcessor) builder.createErrorHandler(routeContext, dynamicRouter.newRoutingSlipProcessorForErrorHandler());
+        dynamicRouter.setErrorHandler(errorHandler);
+
+        return dynamicRouter;
+    }
+
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/EnrichReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/EnrichReifier.java
new file mode 100644
index 0000000..a9ec09a
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/EnrichReifier.java
@@ -0,0 +1,80 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.Expression;
+import org.apache.camel.Processor;
+import org.apache.camel.model.EnrichDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.Enricher;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
+import org.apache.camel.spi.RouteContext;
+
+class EnrichReifier extends ExpressionReifier<EnrichDefinition> {
+
+    EnrichReifier(ProcessorDefinition<?> definition) {
+        super(EnrichDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+
+        Expression exp = definition.getExpression().createExpression(routeContext);
+        boolean isShareUnitOfWork = definition.getShareUnitOfWork() != null && definition.getShareUnitOfWork();
+        boolean isIgnoreInvalidEndpoint = definition.getIgnoreInvalidEndpoint() != null && definition.getIgnoreInvalidEndpoint();
+
+        Enricher enricher = new Enricher(exp);
+        enricher.setShareUnitOfWork(isShareUnitOfWork);
+        enricher.setIgnoreInvalidEndpoint(isIgnoreInvalidEndpoint);
+        AggregationStrategy strategy = createAggregationStrategy(routeContext);
+        if (strategy != null) {
+            enricher.setAggregationStrategy(strategy);
+        }
+        if (definition.getAggregateOnException() != null) {
+            enricher.setAggregateOnException(definition.getAggregateOnException());
+        }
+        return enricher;
+    }
+
+    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+        AggregationStrategy strategy = definition.getAggregationStrategy();
+        if (strategy == null && definition.getAggregationStrategyRef() != null) {
+            Object aggStrategy = routeContext.lookup(definition.getAggregationStrategyRef(), Object.class);
+            if (aggStrategy instanceof AggregationStrategy) {
+                strategy = (AggregationStrategy) aggStrategy;
+            } else if (aggStrategy != null) {
+                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, definition.getAggregationStrategyMethodName());
+                if (definition.getAggregationStrategyMethodAllowNull() != null) {
+                    adapter.setAllowNullNewExchange(definition.getAggregationStrategyMethodAllowNull());
+                    adapter.setAllowNullOldExchange(definition.getAggregationStrategyMethodAllowNull());
+                }
+                strategy = adapter;
+            } else {
+                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + definition.getAggregationStrategyRef());
+            }
+        }
+
+        if (strategy instanceof CamelContextAware) {
+            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
+        }
+
+        return strategy;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/ExpressionReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
new file mode 100644
index 0000000..541b20d
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/ExpressionReifier.java
@@ -0,0 +1,53 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.Predicate;
+import org.apache.camel.Processor;
+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(T definition) {
+        super(definition);
+    }
+
+    /**
+     * Creates the {@link FilterProcessor} from the expression node.
+     *
+     * @param routeContext  the route context
+     * @return the created {@link FilterProcessor}
+     * @throws Exception is thrown if error creating the processor
+     */
+    protected FilterProcessor createFilterProcessor(RouteContext routeContext) throws Exception {
+        Processor childProcessor = createOutputsProcessor(routeContext);
+        return new FilterProcessor(createPredicate(routeContext), childProcessor);
+    }
+
+    /**
+     * Creates the {@link Predicate} from the expression node.
+     *
+     * @param routeContext  the route context
+     * @return the created predicate
+     */
+    protected Predicate createPredicate(RouteContext routeContext) {
+        return definition.getExpression().createPredicate(routeContext);
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/FilterReifier.java
similarity index 53%
copy from camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/FilterReifier.java
index b0a102a..1268705 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/FilterReifier.java
@@ -14,38 +14,31 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.model;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
-import org.apache.camel.spi.Metadata;
+import org.apache.camel.model.FilterDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.FilterProcessor;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * Routes the message to a sequence of processors.
- */
-@Metadata(label = "eip,routing")
-@XmlRootElement(name = "pipeline")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class PipelineDefinition extends OutputDefinition<PipelineDefinition> {
+class FilterReifier extends ExpressionReifier<FilterDefinition> {
 
-    public PipelineDefinition() {
+    FilterReifier(ProcessorDefinition<?> definition) {
+        super(FilterDefinition.class.cast(definition));
     }
 
     @Override
-    public String getShortName() {
-        return "pipeline";
+    public FilterProcessor createProcessor(RouteContext routeContext) throws Exception {
+        return createFilterProcessor(routeContext);
     }
 
     @Override
-    public String getLabel() {
-        return "pipeline";
+    protected FilterProcessor createFilterProcessor(RouteContext routeContext) throws Exception {
+        // filter EIP should have child outputs
+        Processor childProcessor = this.createChildProcessor(routeContext, true);
+        return new FilterProcessor(createPredicate(routeContext), childProcessor);
     }
 
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return this.createChildProcessor(routeContext, true);
-    }
-}
\ No newline at end of file
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/FinallyReifier.java
similarity index 63%
copy from camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/FinallyReifier.java
index 8e7a943..d3f79f7 100644
--- a/camel-core/src/main/java/org/apache/camel/model/FinallyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/FinallyReifier.java
@@ -14,48 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.model;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
+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.Metadata;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * Path traversed when a try, catch, finally block exits
- */
-@Metadata(label = "error")
-@XmlRootElement(name = "doFinally")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class FinallyDefinition extends OutputDefinition<FinallyDefinition> {
-
-    @Override
-    public String toString() {
-        return "DoFinally[" + getOutputs() + "]";
-    }
-    
-    @Override
-    public String getShortName() {
-        return "doFinally";
-    }
+class FinallyReifier extends ProcessorReifier<FinallyDefinition> {
 
-    @Override
-    public String getLabel() {
-        return "doFinally";
+    FinallyReifier(ProcessorDefinition<?> definition) {
+        super(FinallyDefinition.class.cast(definition));
     }
 
     @Override
     public Processor createProcessor(RouteContext routeContext) throws Exception {
         // parent must be a try
-        if (!(getParent() instanceof TryDefinition)) {
+        if (!(definition.getParent() instanceof TryDefinition)) {
             throw new IllegalArgumentException("This doFinally should have a doTry as its parent on " + this);
         }
 
         // do finally does mandate a child processor
         return new FinallyProcessor(this.createChildProcessor(routeContext, false));
     }
+
 }
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/HystrixReifier.java
similarity index 62%
copy from components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/HystrixReifier.java
index c3d102e..8aae7a0 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/HystrixReifier.java
@@ -14,20 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.cdi.transaction;
+package org.apache.camel.reifier;
 
-import org.apache.camel.spi.Policy;
+import org.apache.camel.Processor;
+import org.apache.camel.model.HystrixDefinition;
+import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * Used to expose the method &apos;resolvePolicy&apos; used by
- * {@link JtaTransactionErrorHandlerBuilder} to resolve configured policy
- * references.
- */
-public class TransactedDefinition extends org.apache.camel.model.TransactedDefinition {
+class HystrixReifier extends ProcessorReifier<HystrixDefinition> {
+
+    HystrixReifier(ProcessorDefinition<?> definition) {
+        super(HystrixDefinition.class.cast(definition));
+    }
 
     @Override
-    public Policy resolvePolicy(RouteContext routeContext) {
-        return super.resolvePolicy(routeContext);
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        throw new IllegalStateException("Cannot find camel-hystrix on the classpath.");
     }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
new file mode 100644
index 0000000..9b2bc34
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
@@ -0,0 +1,67 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.Expression;
+import org.apache.camel.Processor;
+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;
+
+class IdempotentConsumerReifier extends ExpressionReifier<IdempotentConsumerDefinition> {
+
+    IdempotentConsumerReifier(ProcessorDefinition<?> definition) {
+        super(IdempotentConsumerDefinition.class.cast(definition));
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        Processor childProcessor = this.createChildProcessor(routeContext, true);
+
+        IdempotentRepository<String> idempotentRepository = resolveMessageIdRepository(routeContext);
+        ObjectHelper.notNull(idempotentRepository, "idempotentRepository", this);
+
+        Expression expression = definition.getExpression().createExpression(routeContext);
+
+        // these boolean should be true by default
+        boolean eager = definition.getEager() == null || definition.getEager();
+        boolean duplicate = definition.getSkipDuplicate() == null || definition.getSkipDuplicate();
+        boolean remove = definition.getRemoveOnFailure() == null || definition.getRemoveOnFailure();
+
+        // these boolean should be false by default
+        boolean completionEager = definition.getCompletionEager() != null && definition.getCompletionEager();
+
+        return new IdempotentConsumer(expression, idempotentRepository, eager, completionEager, duplicate, remove, childProcessor);
+    }
+
+    /**
+     * Strategy method to resolve the {@link org.apache.camel.spi.IdempotentRepository} to use
+     *
+     * @param routeContext route context
+     * @return the repository
+     */
+    @SuppressWarnings("unchecked")
+    protected <T> IdempotentRepository<T> resolveMessageIdRepository(RouteContext routeContext) {
+        if (definition.getMessageIdRepositoryRef() != null) {
+            definition.setMessageIdRepository(routeContext.mandatoryLookup(definition.getMessageIdRepositoryRef(), IdempotentRepository.class));
+        }
+        return (IdempotentRepository<T>) definition.getMessageIdRepository();
+    }
+}
diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
similarity index 57%
copy from camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
index ffcf3ef..8f222d2 100644
--- a/camel-core/src/main/java/org/apache/camel/model/InterceptFromDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
@@ -14,59 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.model;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
+package org.apache.camel.reifier;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.spi.Metadata;
+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;
 
-/**
- * Intercepts incoming messages
- */
-@Metadata(label = "configuration")
-@XmlRootElement(name = "interceptFrom")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class InterceptFromDefinition extends InterceptDefinition {
-    @XmlAttribute
-    protected String uri;
-
-    public InterceptFromDefinition() {
-    }
-
-    public InterceptFromDefinition(String uri) {
-        this.uri = uri;
-    }
-
-    @Override
-    public String toString() {
-        return "InterceptFrom[" + getOutputs() + "]";
-    }
-
-    @Override
-    public String getShortName() {
-        return "interceptFrom";
-    }
-
-    @Override
-    public String getLabel() {
-        return "interceptFrom";
-    }
+class InterceptFromReifier extends InterceptReifier<InterceptFromDefinition> {
 
-    @Override
-    public boolean isAbstract() {
-        return true;
-    }
-
-    @Override
-    public boolean isTopLevelOnly() {
-        return true;
+    InterceptFromReifier(ProcessorDefinition<?> definition) {
+        super((InterceptFromDefinition) definition);
     }
 
     @Override
@@ -87,20 +48,10 @@ public class InterceptFromDefinition extends InterceptDefinition {
                 return "";
             }
         });
-        getOutputs().add(0, headerDefinition);
+        definition.getOutputs().add(0, headerDefinition);
 
         return this.createChildProcessor(routeContext, true);
     }
 
-    public String getUri() {
-        return uri;
-    }
 
-    /**
-     * Intercept incoming messages from the uri or uri pattern.
-     * If this option is not configured, then all incoming messages is intercepted.
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/InterceptReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/InterceptReifier.java
new file mode 100644
index 0000000..f11a0e6
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/InterceptReifier.java
@@ -0,0 +1,72 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
+import org.apache.camel.Processor;
+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;
+
+class InterceptReifier<T extends InterceptDefinition> extends ProcessorReifier<T> {
+
+    InterceptReifier(ProcessorDefinition<?> definition) {
+        super((T) definition);
+    }
+
+    @Override
+    public Processor createProcessor(final RouteContext routeContext) throws Exception {
+        // create the output processor
+        Processor output = this.createChildProcessor(routeContext, true);
+
+        // add the output as a intercept strategy to the route context so its invoked on each processing step
+        routeContext.getInterceptStrategies().add(new InterceptStrategy() {
+            private Processor interceptedTarget;
+
+            public Processor wrapProcessorInInterceptors(CamelContext context, NamedNode definition,
+                                                         Processor target, Processor nextTarget) throws Exception {
+                // store the target we are intercepting
+                this.interceptedTarget = target;
+
+                // remember the target that was intercepted
+                InterceptReifier.this.definition.getIntercepted().add(interceptedTarget);
+
+                if (interceptedTarget != null) {
+                    // wrap in a pipeline so we continue routing to the next
+                    return Pipeline.newInstance(context, output, interceptedTarget);
+                } else {
+                    return output;
+                }
+            }
+
+            @Override
+            public String toString() {
+                return "intercept[" + (interceptedTarget != null ? interceptedTarget : output) + "]";
+            }
+        });
+
+        // remove me from the route so I am not invoked in a regular route path
+        ((RouteDefinition) routeContext.getRoute()).getOutputs().remove(this);
+        // and return no processor to invoke next from me
+        return null;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
new file mode 100644
index 0000000..0462fa9
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
@@ -0,0 +1,100 @@
+/**
+ * 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.reifier;
+
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Processor;
+import org.apache.camel.impl.InterceptSendToEndpoint;
+import org.apache.camel.model.InterceptSendToEndpointDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
+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;
+
+class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSendToEndpointDefinition> {
+
+    InterceptSendToEndpointReifier(ProcessorDefinition<?> definition) {
+        super((InterceptSendToEndpointDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(final RouteContext routeContext) throws Exception {
+        // create the detour
+        final Processor detour = this.createChildProcessor(routeContext, true);
+        final String matchURI = definition.getUri();
+
+        // register endpoint callback so we can proxy the endpoint
+        routeContext.getCamelContext().addRegisterEndpointCallback(new EndpointStrategy() {
+            public Endpoint registerEndpoint(String uri, Endpoint endpoint) {
+                if (endpoint instanceof InterceptSendToEndpoint) {
+                    // endpoint already decorated
+                    return endpoint;
+                } else if (matchURI == null || matchPattern(routeContext.getCamelContext(), uri, matchURI)) {
+                    // only proxy if the uri is matched decorate endpoint with our proxy
+                    // should be false by default
+                    boolean skip = definition.getSkipSendToOriginalEndpoint() != null && definition.getSkipSendToOriginalEndpoint();
+                    InterceptSendToEndpoint proxy = new InterceptSendToEndpoint(endpoint, skip);
+                    proxy.setDetour(detour);
+                    return proxy;
+                } else {
+                    // no proxy so return regular endpoint
+                    return endpoint;
+                }
+            }
+        });
+
+
+        // remove the original intercepted route from the outputs as we do not intercept as the regular interceptor
+        // 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();
+        List<ProcessorDefinition<?>> outputs = route.getOutputs();
+        outputs.remove(this);
+
+        return new InterceptEndpointProcessor(matchURI, detour);
+    }
+
+    /**
+     * 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) {
+        // match using the pattern as-is
+        boolean match = EndpointHelper.matchEndpoint(camelContext, uri, pattern);
+        if (!match) {
+            try {
+                // the pattern could be an uri, so we need to normalize it before matching again
+                pattern = URISupport.normalizeUri(pattern);
+                match = EndpointHelper.matchEndpoint(camelContext, uri, pattern);
+            } catch (Exception e) {
+                // ignore
+            }
+        }
+        return match;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java
new file mode 100644
index 0000000..625dc6f
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/LoadBalanceReifier.java
@@ -0,0 +1,74 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.Processor;
+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;
+
+class LoadBalanceReifier extends ProcessorReifier<LoadBalanceDefinition> {
+
+    LoadBalanceReifier(ProcessorDefinition<?> definition) {
+        super((LoadBalanceDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        // the load balancer is stateful so we should only create it once in case its used from a context scoped error handler
+
+        LoadBalancer loadBalancer = definition.getLoadBalancerType().getLoadBalancer();
+        if (loadBalancer == null) {
+            // then create it and reuse it
+            loadBalancer = LoadBalancerReifier.reifier(definition.getLoadBalancerType()).createLoadBalancer(routeContext);
+            definition.getLoadBalancerType().setLoadBalancer(loadBalancer);
+
+            // some load balancer can only support a fixed number of outputs
+            int max = definition.getLoadBalancerType().getMaximumNumberOfOutputs();
+            int size = definition.getOutputs().size();
+            if (size > max) {
+                throw new IllegalArgumentException("To many outputs configured on " + definition.getLoadBalancerType() + ": " + size + " > " + max);
+            }
+
+            for (ProcessorDefinition<?> processorType : definition.getOutputs()) {
+                // output must not be another load balancer
+                // check for instanceof as the code below as there is compilation errors on earlier versions of JDK6
+                // on Windows boxes or with IBM JDKs etc.
+                if (LoadBalanceDefinition.class.isInstance(processorType)) {
+                    throw new IllegalArgumentException("Loadbalancer already configured to: " + definition.getLoadBalancerType() + ". Cannot set it to: " + processorType);
+                }
+                Processor processor = createProcessor(routeContext, processorType);
+                processor = wrapChannel(routeContext, processor, processorType);
+                loadBalancer.addProcessor(processor);
+            }
+        }
+
+        Boolean inherit = definition.isInheritErrorHandler();
+        if (definition.getLoadBalancerType() instanceof FailoverLoadBalancerDefinition) {
+            // special for failover load balancer where you can configure it to not inherit error handler for its children
+            // but the load balancer itself should inherit so Camels error handler can react afterwards
+            inherit = true;
+        }
+        Processor target = wrapChannel(routeContext, loadBalancer, definition, inherit);
+        return target;
+    }
+
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java
similarity index 50%
copy from camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java
index e6b28d5..cf41dba 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/LogReifier.java
@@ -14,89 +14,47 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.model;
+package org.apache.camel.reifier;
 
 import java.util.Map;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
+import org.apache.camel.model.Constants;
+import org.apache.camel.model.LogDefinition;
+import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.DefaultMaskingFormatter;
 import org.apache.camel.processor.LogProcessor;
+import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.MaskingFormatter;
-import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * Logs the defined message to the logger
- */
-@Metadata(label = "eip,configuration")
-@XmlRootElement(name = "log")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class LogDefinition extends NoOutputDefinition<LogDefinition> {
-    @XmlTransient
-    private static final Logger LOG = LoggerFactory.getLogger(LogDefinition.class);
-    @XmlAttribute(required = true)
-    private String message;
-    @XmlAttribute @Metadata(defaultValue = "INFO")
-    private LoggingLevel loggingLevel;
-    @XmlAttribute
-    private String logName;
-    @XmlAttribute
-    private String marker;
-    @XmlAttribute
-    private String loggerRef;
-    @XmlTransient
-    private Logger logger;
+class LogReifier extends ProcessorReifier<LogDefinition> {
 
-    public LogDefinition() {
-    }
-
-    public LogDefinition(String message) {
-        this.message = message;
-    }
-
-    @Override
-    public String toString() {
-        return "Log[" + message + "]";
-    }
-    
-    @Override
-    public String getShortName() {
-        return "log";
-    }
-
-    @Override
-    public String getLabel() {
-        return "log";
+    LogReifier(ProcessorDefinition<?> definition) {
+        super((LogDefinition) definition);
     }
 
     @Override
     public Processor createProcessor(RouteContext routeContext) throws Exception {
-        StringHelper.notEmpty(message, "message", this);
+        StringHelper.notEmpty(definition.getMessage(), "message", this);
 
         // use simple language for the message string to give it more power
-        Expression exp = routeContext.getCamelContext().resolveLanguage("simple").createExpression(message);
+        Expression exp = routeContext.getCamelContext().resolveLanguage("simple").createExpression(definition.getMessage());
 
         // get logger explicitely set in the definition
-        Logger logger = this.getLogger();
+        Logger logger = definition.getLogger();
 
         // get logger which may be set in XML definition
-        if (logger == null && ObjectHelper.isNotEmpty(loggerRef)) {
-            logger = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), loggerRef, Logger.class);
+        if (logger == null && ObjectHelper.isNotEmpty(definition.getLoggerRef())) {
+            logger = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), definition.getLoggerRef(), Logger.class);
         }
 
         if (logger == null) {
@@ -104,31 +62,31 @@ public class LogDefinition extends NoOutputDefinition<LogDefinition> {
             Map<String, Logger> availableLoggers = routeContext.lookupByType(Logger.class);
             if (availableLoggers.size() == 1) {
                 logger = availableLoggers.values().iterator().next();
-                LOG.debug("Using custom Logger: {}", logger);
+                log.debug("Using custom Logger: {}", logger);
             } else if (availableLoggers.size() > 1) {
                 // we should log about this somewhere...
-                LOG.debug("More than one {} instance found in the registry. Falling back to create logger by name.", Logger.class.getName());
+                log.debug("More than one {} instance found in the registry. Falling back to create logger by name.", Logger.class.getName());
             }
         }
 
         if (logger == null) {
-            String name = getLogName();
+            String name = definition.getLogName();
             if (name == null) {
                 name = routeContext.getCamelContext().getGlobalOption(Exchange.LOG_EIP_NAME);
                 if (name != null) {
-                    LOG.debug("Using logName from CamelContext properties: {}", name);
+                    log.debug("Using logName from CamelContext properties: {}", name);
                 }
             }
             if (name == null) {
                 name = routeContext.getRoute().getId();
-                LOG.debug("LogName is not configured, using route id as logName: {}", name);
+                log.debug("LogName is not configured, using route id as logName: {}", name);
             }
             logger = LoggerFactory.getLogger(name);
         }
 
         // should be INFO by default
-        LoggingLevel level = getLoggingLevel() != null ? getLoggingLevel() : LoggingLevel.INFO;
-        CamelLogger camelLogger = new CamelLogger(logger, level, getMarker());
+        LoggingLevel level = definition.getLoggingLevel() != null ? definition.getLoggingLevel() : LoggingLevel.INFO;
+        CamelLogger camelLogger = new CamelLogger(logger, level, definition.getMarker());
 
         return new LogProcessor(exp, camelLogger, getMaskingFormatter(routeContext), routeContext.getCamelContext().getLogListeners());
     }
@@ -144,77 +102,4 @@ public class LogDefinition extends NoOutputDefinition<LogDefinition> {
         return null;
     }
 
-    @Override
-    public void addOutput(ProcessorDefinition<?> output) {
-        // add outputs on parent as this log does not support outputs
-        getParent().addOutput(output);
-    }
-
-    public LoggingLevel getLoggingLevel() {
-        return loggingLevel;
-    }
-
-    /**
-     * Sets the logging level.
-     * <p/>
-     * The default value is INFO
-     */
-    public void setLoggingLevel(LoggingLevel loggingLevel) {
-        this.loggingLevel = loggingLevel;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     * Sets the log message (uses simple language)
-     */
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    public String getLogName() {
-        return logName;
-    }
-
-    /**
-     * Sets the name of the logger
-     */
-    public void setLogName(String logName) {
-        this.logName = logName;
-    }
-
-    public String getMarker() {
-        return marker;
-    }
-
-    /**
-     * To use slf4j marker
-     */
-    public void setMarker(String marker) {
-        this.marker = marker;
-    }
-
-    public String getLoggerRef() {
-        return loggerRef;
-    }
-
-    /**
-     * To refer to a custom logger instance to lookup from the registry.
-     */
-    public void setLoggerRef(String loggerRef) {
-        this.loggerRef = loggerRef;
-    }
-
-    public Logger getLogger() {
-        return logger;
-    }
-
-    /**
-     * To use a custom logger instance
-     */
-    public void setLogger(Logger logger) {
-        this.logger = logger;
-    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/LoopReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/LoopReifier.java
new file mode 100644
index 0000000..4f5cfcb
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/LoopReifier.java
@@ -0,0 +1,49 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+import org.apache.camel.Processor;
+import org.apache.camel.model.LoopDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.LoopProcessor;
+import org.apache.camel.spi.RouteContext;
+
+class LoopReifier extends ExpressionReifier<LoopDefinition> {
+
+    LoopReifier(ProcessorDefinition<?> definition) {
+        super((LoopDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        Processor output = this.createChildProcessor(routeContext, true);
+        boolean isCopy = definition.getCopy() != null && definition.getCopy();
+        boolean isWhile = definition.getDoWhile() != null && definition.getDoWhile();
+
+        Predicate predicate = null;
+        Expression expression = null;
+        if (isWhile) {
+            predicate = definition.getExpression().createPredicate(routeContext);
+        } else {
+            expression = definition.getExpression().createExpression(routeContext);
+        }
+        return new LoopProcessor(output, expression, predicate, isCopy);
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java
similarity index 57%
copy from camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java
index b0a102a..924c486 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PipelineDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/MarshalReifier.java
@@ -14,38 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.model;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+package org.apache.camel.reifier;
 
 import org.apache.camel.Processor;
-import org.apache.camel.spi.Metadata;
+import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.model.MarshalDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.MarshalProcessor;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * Routes the message to a sequence of processors.
- */
-@Metadata(label = "eip,routing")
-@XmlRootElement(name = "pipeline")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class PipelineDefinition extends OutputDefinition<PipelineDefinition> {
+class MarshalReifier extends ProcessorReifier<MarshalDefinition> {
 
-    public PipelineDefinition() {
+    MarshalReifier(ProcessorDefinition<?> definition) {
+        super((MarshalDefinition) definition);
     }
 
     @Override
-    public String getShortName() {
-        return "pipeline";
+    public Processor createProcessor(RouteContext routeContext) {
+        DataFormat dataFormat = DataFormatDefinition.getDataFormat(routeContext, definition.getDataFormatType(), null);
+        return new MarshalProcessor(dataFormat);
     }
 
-    @Override
-    public String getLabel() {
-        return "pipeline";
-    }
-
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
-        return this.createChildProcessor(routeContext, true);
-    }
-}
\ No newline at end of file
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/MulticastReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/MulticastReifier.java
new file mode 100644
index 0000000..794b073
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/MulticastReifier.java
@@ -0,0 +1,116 @@
+/**
+ * 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.reifier;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.Processor;
+import org.apache.camel.model.MulticastDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.processor.MulticastProcessor;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+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;
+
+class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
+
+    MulticastReifier(ProcessorDefinition<?> definition) {
+        super((MulticastDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        Processor answer = this.createChildProcessor(routeContext, true);
+
+        // force the answer as a multicast processor even if there is only one child processor in the multicast
+        if (!(answer instanceof MulticastProcessor)) {
+            List<Processor> list = new ArrayList<>(1);
+            list.add(answer);
+            answer = createCompositeProcessor(routeContext, list);
+        }
+        return answer;
+    }
+
+    protected Processor createCompositeProcessor(RouteContext routeContext, List<Processor> list) throws Exception {
+        final AggregationStrategy strategy = createAggregationStrategy(routeContext);
+
+        boolean isParallelProcessing = definition.getParallelProcessing() != null && definition.getParallelProcessing();
+        boolean isShareUnitOfWork = definition.getShareUnitOfWork() != null && definition.getShareUnitOfWork();
+        boolean isStreaming = definition.getStreaming() != null && definition.getStreaming();
+        boolean isStopOnException = definition.getStopOnException() != null && definition.getStopOnException();
+        boolean isParallelAggregate = definition.getParallelAggregate() != null && definition.getParallelAggregate();
+        boolean isStopOnAggregateException = definition.getStopOnAggregateException() != null && definition.getStopOnAggregateException();
+
+        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, definition, isParallelProcessing);
+        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "Multicast", definition, isParallelProcessing);
+
+        long timeout = definition.getTimeout() != null ? definition.getTimeout() : 0;
+        if (timeout > 0 && !isParallelProcessing) {
+            throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
+        }
+        if (definition.getOnPrepareRef() != null) {
+            definition.setOnPrepare(CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), definition.getOnPrepareRef(), Processor.class));
+        }
+
+        MulticastProcessor answer = new MulticastProcessor(routeContext.getCamelContext(), list, strategy, isParallelProcessing,
+                threadPool, shutdownThreadPool, isStreaming, isStopOnException, timeout, definition.getOnPrepare(), isShareUnitOfWork, isParallelAggregate, isStopOnAggregateException);
+        return answer;
+    }
+
+    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+        AggregationStrategy strategy = definition.getAggregationStrategy();
+        if (strategy == null && definition.getStrategyRef() != null) {
+            Object aggStrategy = routeContext.lookup(definition.getStrategyRef(), Object.class);
+            if (aggStrategy instanceof AggregationStrategy) {
+                strategy = (AggregationStrategy) aggStrategy;
+            } else if (aggStrategy != null) {
+                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, definition.getStrategyMethodName());
+                if (definition.getStrategyMethodAllowNull() != null) {
+                    adapter.setAllowNullNewExchange(definition.getStrategyMethodAllowNull());
+                    adapter.setAllowNullOldExchange(definition.getStrategyMethodAllowNull());
+                }
+                strategy = adapter;
+            } else {
+                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + definition.getStrategyRef());
+            }
+        }
+
+        if (strategy == null) {
+            // default to use latest aggregation strategy
+            strategy = new UseLatestAggregationStrategy();
+        }
+
+        if (strategy instanceof CamelContextAware) {
+            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
+        }
+
+        if (definition.getShareUnitOfWork() != null && definition.getShareUnitOfWork()) {
+            // wrap strategy in share unit of work
+            strategy = new ShareUnitOfWorkAggregationStrategy(strategy);
+        }
+
+        return strategy;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
new file mode 100644
index 0000000..a9fd2ac
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
@@ -0,0 +1,90 @@
+/**
+ * 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.reifier;
+
+import java.util.concurrent.ExecutorService;
+
+import org.apache.camel.Predicate;
+import org.apache.camel.Processor;
+import org.apache.camel.model.OnCompletionDefinition;
+import org.apache.camel.model.OnCompletionMode;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.processor.CamelInternalProcessor;
+import org.apache.camel.processor.OnCompletionProcessor;
+import org.apache.camel.spi.RouteContext;
+
+class OnCompletionReifier extends ProcessorReifier<OnCompletionDefinition> {
+
+    OnCompletionReifier(ProcessorDefinition<?> definition) {
+        super((OnCompletionDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        // assign whether this was a route scoped onCompletion or not
+        // we need to know this later when setting the parent, as only route scoped should have parent
+        // Note: this logic can possible be removed when the Camel routing engine decides at runtime
+        // to apply onCompletion in a more dynamic fashion than current code base
+        // and therefore is in a better position to decide among context/route scoped OnCompletion at runtime
+        Boolean routeScoped = definition.getRouteScoped();
+        if (routeScoped == null) {
+            routeScoped = definition.getParent() != null;
+        }
+
+        boolean isOnCompleteOnly = definition.getOnCompleteOnly() != null && definition.getOnCompleteOnly();
+        boolean isOnFailureOnly = definition.getOnFailureOnly() != null && definition.getOnFailureOnly();
+        boolean isParallelProcessing = definition.getParallelProcessing() != null && definition.getParallelProcessing();
+        boolean original = definition.getUseOriginalMessagePolicy() != null && definition.getUseOriginalMessagePolicy();
+
+        if (isOnCompleteOnly && isOnFailureOnly) {
+            throw new IllegalArgumentException("Both onCompleteOnly and onFailureOnly cannot be true. Only one of them can be true. On node: " + this);
+        }
+        if (original) {
+            // ensure allow original is turned on
+            routeContext.setAllowUseOriginalMessage(true);
+        }
+
+        String routeId = ((RouteDefinition) routeContext.getRoute()).idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
+
+        Processor childProcessor = this.createChildProcessor(routeContext, true);
+
+        // wrap the on completion route in a unit of work processor
+        CamelInternalProcessor internal = new CamelInternalProcessor(childProcessor);
+        internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext));
+
+        definition.setOnCompletion(routeId, internal);
+
+        Predicate when = null;
+        if (definition.getOnWhen() != null) {
+            when = definition.getOnWhen().getExpression().createPredicate(routeContext);
+        }
+
+        boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, definition, isParallelProcessing);
+        ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "OnCompletion", definition, isParallelProcessing);
+
+        // should be after consumer by default
+        boolean afterConsumer = definition.getMode() == null || definition.getMode() == OnCompletionMode.AfterConsumer;
+
+        OnCompletionProcessor answer = new OnCompletionProcessor(routeContext.getCamelContext(), internal,
+                threadPool, shutdownThreadPool, isOnCompleteOnly, isOnFailureOnly, when, original, afterConsumer);
+        return answer;
+    }
+
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
new file mode 100644
index 0000000..8549aca
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/OnExceptionReifier.java
@@ -0,0 +1,164 @@
+/**
+ * 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.reifier;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.camel.Predicate;
+import org.apache.camel.Processor;
+import org.apache.camel.Route;
+import org.apache.camel.builder.ErrorHandlerBuilder;
+import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.processor.CatchProcessor;
+import org.apache.camel.processor.FatalFallbackErrorHandler;
+import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.spi.RouteContext;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.util.ObjectHelper;
+
+class OnExceptionReifier extends ProcessorReifier<OnExceptionDefinition> {
+
+    OnExceptionReifier(ProcessorDefinition<?> definition) {
+        super((OnExceptionDefinition) definition);
+    }
+
+    @Override
+    public void addRoutes(RouteContext routeContext, Collection<Route> routes) throws Exception {
+        // assign whether this was a route scoped onException or not
+        // we need to know this later when setting the parent, as only route scoped should have parent
+        // Note: this logic can possible be removed when the Camel routing engine decides at runtime
+        // to apply onException in a more dynamic fashion than current code base
+        // and therefore is in a better position to decide among context/route scoped OnException at runtime
+        if (definition.getRouteScoped() == null) {
+            definition.setRouteScoped(definition.getParent() != null);
+        }
+
+        setHandledFromExpressionType(routeContext);
+        setContinuedFromExpressionType(routeContext);
+        setRetryWhileFromExpressionType(routeContext);
+        setOnRedeliveryFromRedeliveryRef(routeContext);
+        setOnExceptionOccurredFromOnExceptionOccurredRef(routeContext);
+
+        // load exception classes
+        if (definition.getExceptions() != null && !definition.getExceptions().isEmpty()) {
+            definition.setExceptionClasses(createExceptionClasses(routeContext.getCamelContext().getClassResolver()));
+        }
+
+        // must validate configuration before creating processor
+        definition.validateConfiguration();
+
+        if (definition.getUseOriginalMessagePolicy() != null && definition.getUseOriginalMessagePolicy()) {
+            // ensure allow original is turned on
+            routeContext.setAllowUseOriginalMessage(true);
+        }
+
+        // lets attach this on exception to the route error handler
+        Processor child = createOutputsProcessor(routeContext);
+        if (child != null) {
+            // wrap in our special safe fallback error handler if OnException have child output
+            Processor errorHandler = new FatalFallbackErrorHandler(child);
+            String id = routeContext.getRoute().getId();
+            definition.setErrorHandler(id, errorHandler);
+        }
+        // lookup the error handler builder
+        ErrorHandlerBuilder builder = (ErrorHandlerBuilder) ((RouteDefinition) routeContext.getRoute()).getErrorHandlerBuilder();
+        // and add this as error handlers
+        builder.addErrorHandlers(routeContext, definition);
+    }
+
+    @Override
+    public CatchProcessor createProcessor(RouteContext routeContext) throws Exception {
+        // load exception classes
+        if (definition.getExceptions() != null && !definition.getExceptions().isEmpty()) {
+            definition.setExceptionClasses(createExceptionClasses(routeContext.getCamelContext().getClassResolver()));
+        }
+
+        if (definition.getUseOriginalMessagePolicy() != null && definition.getUseOriginalMessagePolicy()) {
+            // ensure allow original is turned on
+            routeContext.setAllowUseOriginalMessage(true);
+        }
+
+        // must validate configuration before creating processor
+        definition.validateConfiguration();
+
+        Processor childProcessor = this.createChildProcessor(routeContext, false);
+
+        Predicate when = null;
+        if (definition.getOnWhen() != null) {
+            when = definition.getOnWhen().getExpression().createPredicate(routeContext);
+        }
+
+        Predicate handle = null;
+        if (definition.getHandled() != null) {
+            handle = definition.getHandled().createPredicate(routeContext);
+        }
+
+        return new CatchProcessor(definition.getExceptionClasses(), childProcessor, when, handle);
+    }
+
+    protected List<Class<? extends Throwable>> createExceptionClasses(ClassResolver resolver) throws ClassNotFoundException {
+        List<String> list = definition.getExceptions();
+        List<Class<? extends Throwable>> answer = new ArrayList<>(list.size());
+        for (String name : list) {
+            Class<? extends Throwable> type = resolver.resolveMandatoryClass(name, Throwable.class);
+            answer.add(type);
+        }
+        return answer;
+    }
+
+    private void setHandledFromExpressionType(RouteContext routeContext) {
+        if (definition.getHandled() != null && definition.getHandledPolicy() == null && routeContext != null) {
+            definition.handled(definition.getHandled().createPredicate(routeContext));
+        }
+    }
+
+    private void setContinuedFromExpressionType(RouteContext routeContext) {
+        if (definition.getContinued() != null && definition.getContinuedPolicy() == null && routeContext != null) {
+            definition.continued(definition.getContinued().createPredicate(routeContext));
+        }
+    }
+
+    private void setRetryWhileFromExpressionType(RouteContext routeContext) {
+        if (definition.getRetryWhile() != null && definition.getRetryWhilePolicy() == null && routeContext != null) {
+            definition.retryWhile(definition.getRetryWhile().createPredicate(routeContext));
+        }
+    }
+
+    private void setOnRedeliveryFromRedeliveryRef(RouteContext routeContext) {
+        // lookup onRedelivery if ref is provided
+        if (ObjectHelper.isNotEmpty(definition.getOnRedeliveryRef())) {
+            // if ref is provided then use mandatory lookup to fail if not found
+            Processor onRedelivery = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), definition.getOnRedeliveryRef(), Processor.class);
+            definition.setOnRedelivery(onRedelivery);
+        }
+    }
+
+    private void setOnExceptionOccurredFromOnExceptionOccurredRef(RouteContext routeContext) {
+        // lookup onRedelivery if ref is provided
+        if (ObjectHelper.isNotEmpty(definition.getOnExceptionOccurredRef())) {
+            // if ref is provided then use mandatory lookup to fail if not found
+            Processor onExceptionOccurred = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), definition.getOnExceptionOccurredRef(), Processor.class);
+            definition.setOnExceptionOccurred(onExceptionOccurred);
+        }
+    }
+
+
+}
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java
similarity index 63%
copy from components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java
index c3d102e..2db41fb 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/OnFallbackReifier.java
@@ -14,20 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.cdi.transaction;
+package org.apache.camel.reifier;
 
-import org.apache.camel.spi.Policy;
+import org.apache.camel.Processor;
+import org.apache.camel.model.OnFallbackDefinition;
+import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * Used to expose the method &apos;resolvePolicy&apos; used by
- * {@link JtaTransactionErrorHandlerBuilder} to resolve configured policy
- * references.
- */
-public class TransactedDefinition extends org.apache.camel.model.TransactedDefinition {
+class OnFallbackReifier extends ProcessorReifier<OnFallbackDefinition> {
+
+    OnFallbackReifier(ProcessorDefinition<?> definition) {
+        super((OnFallbackDefinition) definition);
+    }
 
     @Override
-    public Policy resolvePolicy(RouteContext routeContext) {
-        return super.resolvePolicy(routeContext);
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        return this.createChildProcessor(routeContext, false);
     }
+
 }
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java
similarity index 62%
copy from components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java
index c3d102e..8696aee 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/OtherwiseReifier.java
@@ -14,20 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.cdi.transaction;
+package org.apache.camel.reifier;
 
-import org.apache.camel.spi.Policy;
+import org.apache.camel.Processor;
+import org.apache.camel.model.OtherwiseDefinition;
+import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * Used to expose the method &apos;resolvePolicy&apos; used by
- * {@link JtaTransactionErrorHandlerBuilder} to resolve configured policy
- * references.
- */
-public class TransactedDefinition extends org.apache.camel.model.TransactedDefinition {
+class OtherwiseReifier extends ProcessorReifier<OtherwiseDefinition> {
+
+    OtherwiseReifier(ProcessorDefinition<?> definition) {
+        super(OtherwiseDefinition.class.cast(definition));
+    }
 
     @Override
-    public Policy resolvePolicy(RouteContext routeContext) {
-        return super.resolvePolicy(routeContext);
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        return this.createChildProcessor(routeContext, false);
     }
 }
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java b/camel-core/src/main/java/org/apache/camel/reifier/PipelineReifier.java
similarity index 63%
copy from components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
copy to camel-core/src/main/java/org/apache/camel/reifier/PipelineReifier.java
index c3d102e..79f2df8 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/PipelineReifier.java
@@ -14,20 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.cdi.transaction;
+package org.apache.camel.reifier;
 
-import org.apache.camel.spi.Policy;
+import org.apache.camel.Processor;
+import org.apache.camel.model.PipelineDefinition;
+import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.spi.RouteContext;
 
-/**
- * Used to expose the method &apos;resolvePolicy&apos; used by
- * {@link JtaTransactionErrorHandlerBuilder} to resolve configured policy
- * references.
- */
-public class TransactedDefinition extends org.apache.camel.model.TransactedDefinition {
+class PipelineReifier extends ProcessorReifier<PipelineDefinition> {
+
+    PipelineReifier(ProcessorDefinition<?> definition) {
+        super(PipelineDefinition.class.cast(definition));
+    }
 
     @Override
-    public Policy resolvePolicy(RouteContext routeContext) {
-        return super.resolvePolicy(routeContext);
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        return this.createChildProcessor(routeContext, true);
     }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/PolicyReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/PolicyReifier.java
new file mode 100644
index 0000000..2f58708
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/PolicyReifier.java
@@ -0,0 +1,63 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.Processor;
+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;
+
+class PolicyReifier extends ProcessorReifier<PolicyDefinition> {
+
+    PolicyReifier(ProcessorDefinition<?> definition) {
+        super((PolicyDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+        Policy policy = resolvePolicy(routeContext);
+        ObjectHelper.notNull(policy, "policy", definition);
+
+        // before wrap
+        policy.beforeWrap(routeContext, definition);
+
+        // create processor after the before wrap
+        Processor childProcessor = this.createChildProcessor(routeContext, 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;
+    }
+
+    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());
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
new file mode 100644
index 0000000..82fd9a7
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
@@ -0,0 +1,87 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.Expression;
+import org.apache.camel.Processor;
+import org.apache.camel.model.PollEnrichDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.PollEnricher;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
+import org.apache.camel.spi.RouteContext;
+
+class PollEnrichReifier extends ProcessorReifier<PollEnrichDefinition> {
+
+    PollEnrichReifier(ProcessorDefinition<?> definition) {
+        super((PollEnrichDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) throws Exception {
+
+        // if no timeout then we should block, and there use a negative timeout
+        long time = definition.getTimeout() != null ? definition.getTimeout() : -1;
+        boolean isIgnoreInvalidEndpoint = definition.getIgnoreInvalidEndpoint() != null && definition.getIgnoreInvalidEndpoint();
+        Expression exp = definition.getExpression().createExpression(routeContext);
+
+        PollEnricher enricher = new PollEnricher(exp, time);
+
+        AggregationStrategy strategy = createAggregationStrategy(routeContext);
+        if (strategy == null) {
+            enricher.setDefaultAggregationStrategy();
+        } else {
+            enricher.setAggregationStrategy(strategy);
+        }
+        if (definition.getAggregateOnException() != null) {
+            enricher.setAggregateOnException(definition.getAggregateOnException());
+        }
+        if (definition.getCacheSize() != null) {
+            enricher.setCacheSize(definition.getCacheSize());
+        }
+        enricher.setIgnoreInvalidEndpoint(isIgnoreInvalidEndpoint);
+
+        return enricher;
+    }
+
+    private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+        AggregationStrategy strategy = definition.getAggregationStrategy();
+        if (strategy == null && definition.getAggregationStrategyRef() != null) {
+            Object aggStrategy = routeContext.lookup(definition.getAggregationStrategyRef(), Object.class);
+            if (aggStrategy instanceof AggregationStrategy) {
+                strategy = (AggregationStrategy) aggStrategy;
+            } else if (aggStrategy != null) {
+                AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(aggStrategy, definition.getAggregationStrategyMethodName());
+                if (definition.getAggregationStrategyMethodAllowNull() != null) {
+                    adapter.setAllowNullNewExchange(definition.getAggregationStrategyMethodAllowNull());
+                    adapter.setAllowNullOldExchange(definition.getAggregationStrategyMethodAllowNull());
+                }
+                strategy = adapter;
+            } else {
+                throw new IllegalArgumentException("Cannot find AggregationStrategy in Registry with name: " + definition.getAggregationStrategyRef());
+            }
+        }
+
+        if (strategy instanceof CamelContextAware) {
+            ((CamelContextAware) strategy).setCamelContext(routeContext.getCamelContext());
+        }
+
+        return strategy;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/ProcessReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/ProcessReifier.java
new file mode 100644
index 0000000..350bb74
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/ProcessReifier.java
@@ -0,0 +1,56 @@
+/**
+ * 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.reifier;
+
+import org.apache.camel.AsyncProcessor;
+import org.apache.camel.Processor;
+import org.apache.camel.Service;
+import org.apache.camel.model.ProcessDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.DelegateAsyncProcessor;
+import org.apache.camel.processor.DelegateSyncProcessor;
+import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.ObjectHelper;
+
+class ProcessReifier extends ProcessorReifier<ProcessDefinition> {
+
+    ProcessReifier(ProcessorDefinition<?> definition) {
+        super((ProcessDefinition) definition);
+    }
+
+    @Override
+    public Processor createProcessor(RouteContext routeContext) {
+        Processor answer = definition.getProcessor();
+        if (answer == null) {
+            ObjectHelper.notNull(definition.getRef(), "ref", definition);
+            answer = routeContext.mandatoryLookup(definition.getRef(), Processor.class);
+        }
+
+        // ensure its wrapped in a Service so we can manage it from eg. JMX
+        // (a Processor must be a Service to be enlisted in JMX)
+        if (!(answer instanceof Service)) {
+            if (answer instanceof AsyncProcessor) {
+                // the processor is async by nature so use the async delegate
+                answer = new DelegateAsyncProcessor(answer);
+            } else {
+                // the processor is sync by nature so use the sync delegate
+                answer = new DelegateSyncProcessor(answer);
+            }
+        }
+        return answer;
+    }
+}
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
new file mode 100644
index 0000000..2b788cd
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -0,0 +1,579 @@
+/**
+ * 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.reifier;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+import org.apache.camel.Channel;
+import org.apache.camel.ErrorHandlerFactory;
+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;
+import org.apache.camel.model.ChoiceDefinition;
+import org.apache.camel.model.ClaimCheckDefinition;
+import org.apache.camel.model.ConvertBodyDefinition;
+import org.apache.camel.model.DelayDefinition;
+import org.apache.camel.model.DynamicRouterDefinition;
+import org.apache.camel.model.EnrichDefinition;
+import org.apache.camel.model.ExpressionNode;
+import org.apache.camel.model.FilterDefinition;
+import org.apache.camel.model.FinallyDefinition;
+import org.apache.camel.model.HystrixDefinition;
+import org.apache.camel.model.IdempotentConsumerDefinition;
+import org.apache.camel.model.InOnlyDefinition;
+import org.apache.camel.model.InOutDefinition;
+import org.apache.camel.model.InterceptDefinition;
+import org.apache.camel.model.InterceptFromDefinition;
+import org.apache.camel.model.InterceptSendToEndpointDefinition;
+import org.apache.camel.model.LoadBalanceDefinition;
+import org.apache.camel.model.LogDefinition;
+import org.apache.camel.model.LoopDefinition;
+import org.apache.camel.model.MarshalDefinition;
+import org.apache.camel.model.ModelChannel;
+import org.apache.camel.model.MulticastDefinition;
+import org.apache.camel.model.OnCompletionDefinition;
+import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.OnFallbackDefinition;
+import org.apache.camel.model.OtherwiseDefinition;
+import org.apache.camel.model.PipelineDefinition;
+import org.apache.camel.model.PolicyDefinition;
+import org.apache.camel.model.PollEnrichDefinition;
+import org.apache.camel.model.ProcessDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ProcessorDefinitionHelper;
+import org.apache.camel.model.RecipientListDefinition;
+import org.apache.camel.model.RemoveHeaderDefinition;
+import org.apache.camel.model.RemoveHeadersDefinition;
+import org.apache.camel.model.RemovePropertiesDefinition;
+import org.apache.camel.model.RemovePropertyDefinition;
+import org.apache.camel.model.ResequenceDefinition;
+import org.apache.camel.model.RethrowDefinition;
+import org.apache.camel.model.RollbackDefinition;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.RoutingSlipDefinition;
+import org.apache.camel.model.SagaDefinition;
+import org.apache.camel.model.SamplingDefinition;
+import org.apache.camel.model.ScriptDefinition;
+import org.apache.camel.model.SetBodyDefinition;
+import org.apache.camel.model.SetExchangePatternDefinition;
+import org.apache.camel.model.SetFaultBodyDefinition;
+import org.apache.camel.model.SetHeaderDefinition;
+import org.apache.camel.model.SetPropertyDefinition;
+import org.apache.camel.model.SortDefinition;
+import org.apache.camel.model.SplitDefinition;
+import org.apache.camel.model.StopDefinition;
+import org.apache.camel.model.ThreadsDefinition;
+import org.apache.camel.model.ThrottleDefinition;
+import org.apache.camel.model.ThrowExceptionDefinition;
+import org.apache.camel.model.ToDefinition;
+import org.apache.camel.model.ToDynamicDefinition;
+import org.apache.camel.model.TransactedDefinition;
+import org.apache.camel.model.TransformDefinition;
+import org.apache.camel.model.TryDefinition;
+import org.apache.camel.model.UnmarshalDefinition;
+import org.apache.camel.model.ValidateDefinition;
+import org.apache.camel.model.WhenDefinition;
+import org.apache.camel.model.WhenSkipSendToEndpointDefinition;
+import org.apache.camel.model.WireTapDefinition;
+import org.apache.camel.model.cloud.ServiceCallDefinition;
+import org.apache.camel.model.language.ExpressionDefinition;
+import org.apache.camel.processor.InterceptEndpointProcessor;
+import org.apache.camel.processor.Pipeline;
+import org.apache.camel.processor.interceptor.DefaultChannel;
+import org.apache.camel.processor.interceptor.HandleFault;
+import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.InterceptStrategy;
+import org.apache.camel.spi.LifecycleStrategy;
+import org.apache.camel.spi.RouteContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> {
+
+    private static final Map<Class<?>, Function<ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> PROCESSORS;
+    static {
+        Map<Class<?>, Function<ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>>> map = new HashMap<>();
+        map.put(AggregateDefinition.class, AggregateReifier::new);
+        map.put(BeanDefinition.class, BeanReifier::new);
+        map.put(CatchDefinition.class, CatchReifier::new);
+        map.put(ChoiceDefinition.class, ChoiceReifier::new);
+        map.put(ClaimCheckDefinition.class, ClaimCheckReifier::new);
+        map.put(ConvertBodyDefinition.class, ConvertBodyReifier::new);
+        map.put(DelayDefinition.class, DelayReifier::new);
+        map.put(DynamicRouterDefinition.class, DynamicRouterReifier::new);
+        map.put(EnrichDefinition.class, EnrichReifier::new);
+        map.put(FilterDefinition.class, FilterReifier::new);
+        map.put(FinallyDefinition.class, FinallyReifier::new);
+        map.put(HystrixDefinition.class, HystrixReifier::new);
+        map.put(IdempotentConsumerDefinition.class, IdempotentConsumerReifier::new);
+        map.put(InOnlyDefinition.class, SendReifier::new);
+        map.put(InOutDefinition.class, SendReifier::new);
+        map.put(InterceptDefinition.class, InterceptReifier::new);
+        map.put(InterceptFromDefinition.class, InterceptFromReifier::new);
+        map.put(InterceptSendToEndpointDefinition.class, InterceptSendToEndpointReifier::new);
+        map.put(LoadBalanceDefinition.class, LoadBalanceReifier::new);
+        map.put(LogDefinition.class, LogReifier::new);
+        map.put(LoopDefinition.class, LoopReifier::new);
+        map.put(MarshalDefinition.class, MarshalReifier::new);
+        map.put(MulticastDefinition.class, MulticastReifier::new);
+        map.put(OnCompletionDefinition.class, OnCompletionReifier::new);
+        map.put(OnExceptionDefinition.class, OnExceptionReifier::new);
+        map.put(OnFallbackDefinition.class, OnFallbackReifier::new);
+        map.put(OtherwiseDefinition.class, OtherwiseReifier::new);
+        map.put(PipelineDefinition.class, PipelineReifier::new);
+        map.put(PolicyDefinition.class, PolicyReifier::new);
+        map.put(PollEnrichDefinition.class, PollEnrichReifier::new);
+        map.put(ProcessDefinition.class, ProcessReifier::new);
+        map.put(RecipientListDefinition.class, RecipientListReifier::new);
+        map.put(RemoveHeaderDefinition.class, RemoveHeaderReifier::new);
+        map.put(RemoveHeadersDefinition.class, RemoveHeadersReifier::new);
+        map.put(RemovePropertiesDefinition.class, RemovePropertiesReifier::new);
+        map.put(RemovePropertyDefinition.class, RemovePropertyReifier::new);
+        map.put(ResequenceDefinition.class, ResequenceReifier::new);
+        map.put(RethrowDefinition.class, RethrowReifier::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);
+        map.put(ScriptDefinition.class, ScriptReifier::new);
+        map.put(ServiceCallDefinition.class, ServiceCallReifier::new);
+        map.put(SetBodyDefinition.class, SetBodyReifier::new);
+        map.put(SetExchangePatternDefinition.class, SetExchangePatternReifier::new);
+        map.put(SetFaultBodyDefinition.class, SetFaultBodyReifier::new);
+        map.put(SetHeaderDefinition.class, SetHeaderReifier::new);
+        map.put(SetPropertyDefinition.class, SetPropertyReifier::new);
+        map.put(SortDefinition.class, SortReifier::new);
+        map.put(SplitDefinition.class, SplitReifier::new);
+        map.put(StopDefinition.class, StopReifier::new);
+        map.put(ThreadsDefinition.class, ThreadsReifier::new);
+        map.put(ThrottleDefinition.class, ThrottleReifier::new);
+        map.put(ThrowExceptionDefinition.class, ThrowExceptionReifier::new);
+        map.put(ToDefinition.class, SendReifier::new);
+        map.put(ToDynamicDefinition.class, ToDynamicReifier::new);
+        map.put(TransactedDefinition.class, TransactedReifier::new);
+        map.put(TransformDefinition.class, TransformReifier::new);
+        map.put(TryDefinition.class, TryReifier::new);
+        map.put(UnmarshalDefinition.class, UnmarshalReifier::new);
+        map.put(ValidateDefinition.class, ValidateReifier::new);
+        map.put(WireTapDefinition.class, WireTapReifier::new);
+        map.put(WhenSkipSendToEndpointDefinition.class, WhenSkipSendToEndpointReifier::new);
+        map.put(WhenDefinition.class, WhenReifier::new);
+        PROCESSORS = map;
+    }
+
+    public static ProcessorReifier<? extends ProcessorDefinition<?>> reifier(ProcessorDefinition<?> definition) {
+        Function<ProcessorDefinition<?>, ProcessorReifier<? extends ProcessorDefinition<?>>> reifier = PROCESSORS.get(definition.getClass());
+        if (reifier != null) {
+            return reifier.apply(definition);
+        }
+        throw new IllegalStateException("Unsupported definition: " + definition);
+    }
+
+    protected final Logger log = LoggerFactory.getLogger(getClass());
+
+    protected final T definition;
+
+    public ProcessorReifier(T definition) {
+        this.definition = definition;
+    }
+
+    /**
+     * Override this in definition class and implement logic to create the processor
+     * based on the definition model.
+     */
+    public abstract Processor createProcessor(RouteContext routeContext) throws Exception;
+
+    /**
+     * Prefer to use {#link #createChildProcessor}.
+     */
+    protected Processor createOutputsProcessor(RouteContext routeContext) throws Exception {
+        Collection<ProcessorDefinition<?>> outputs = definition.getOutputs();
+        return createOutputsProcessor(routeContext, outputs);
+    }
+
+    /**
+     * Creates the child processor (outputs) from the current definition
+     *
+     * @param routeContext   the route context
+     * @param mandatory      whether or not children is mandatory (ie the definition should have outputs)
+     * @return the created children, or <tt>null</tt> if definition had no output
+     * @throws Exception is thrown if error creating the child or if it was mandatory and there was no output defined on definition
+     */
+    protected Processor createChildProcessor(RouteContext routeContext, boolean mandatory) throws Exception {
+        Processor children = null;
+        // at first use custom factory
+        if (routeContext.getCamelContext().getProcessorFactory() != null) {
+            children = routeContext.getCamelContext().getProcessorFactory().createChildProcessor(routeContext, definition, mandatory);
+        }
+        // fallback to default implementation if factory did not create the child
+        if (children == null) {
+            children = createOutputsProcessor(routeContext);
+        }
+
+        if (children == null && mandatory) {
+            throw new IllegalArgumentException("Definition has no children on " + this);
+        }
+        return children;
+    }
+
+    public void addRoutes(RouteContext routeContext, Collection<Route> routes) throws Exception {
+        Processor processor = makeProcessor(routeContext);
+        if (processor == null) {
+            // no processor to add
+            return;
+        }
+
+        if (!routeContext.isRouteAdded()) {
+            boolean endpointInterceptor = false;
+
+            // 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
+            if (processor instanceof Channel) {
+                Channel channel = (Channel) processor;
+                Processor next = channel.getNextProcessor();
+                if (next instanceof InterceptEndpointProcessor) {
+                    endpointInterceptor = true;
+                }
+            }
+
+            // 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);
+            }
+
+        }
+    }
+
+    /**
+     * Wraps the child processor in whatever necessary interceptors and error handlers
+     */
+    public Processor wrapProcessor(RouteContext routeContext, Processor processor) throws Exception {
+        // dont double wrap
+        if (processor instanceof Channel) {
+            return processor;
+        }
+        return wrapChannel(routeContext, processor, null);
+    }
+
+    protected Processor wrapChannel(RouteContext routeContext, Processor processor, ProcessorDefinition<?> child) throws Exception {
+        return wrapChannel(routeContext, processor, child, definition.isInheritErrorHandler());
+    }
+
+    protected Processor wrapChannel(RouteContext routeContext, Processor processor, ProcessorDefinition<?> child, Boolean inheritErrorHandler) throws Exception {
+        // put a channel in between this and each output to control the route flow logic
+        ModelChannel channel = createChannel(routeContext);
+        channel.setNextProcessor(processor);
+
+        // add interceptor strategies to the channel must be in this order: camel context, route context, local
+        addInterceptStrategies(routeContext, channel, routeContext.getCamelContext().getInterceptStrategies());
+        addInterceptStrategies(routeContext, channel, routeContext.getInterceptStrategies());
+        addInterceptStrategies(routeContext, channel, definition.getInterceptStrategies());
+
+        // set the child before init the channel
+        channel.setChildDefinition(child);
+        channel.initChannel(definition, routeContext);
+
+        // set the error handler, must be done after init as we can set the error handler as first in the chain
+        if (definition instanceof TryDefinition || definition instanceof CatchDefinition || definition instanceof FinallyDefinition) {
+            // do not use error handler for try .. catch .. finally blocks as it will handle errors itself
+            log.trace("{} is part of doTry .. doCatch .. doFinally so no error handler is applied", definition);
+        } else if (ProcessorDefinitionHelper.isParentOfType(TryDefinition.class, definition, true)
+                || ProcessorDefinitionHelper.isParentOfType(CatchDefinition.class, definition, true)
+                || ProcessorDefinitionHelper.isParentOfType(FinallyDefinition.class, definition, true)) {
+            // do not use error handler for try .. catch .. finally blocks as it will handle errors itself
+            // by checking that any of our parent(s) is not a try .. catch or finally type
+            log.trace("{} is part of doTry .. doCatch .. doFinally so no error handler is applied", definition);
+        } else if (definition instanceof OnExceptionDefinition || ProcessorDefinitionHelper.isParentOfType(OnExceptionDefinition.class, definition, true)) {
+            log.trace("{} is part of OnException so no error handler is applied", definition);
+            // do not use error handler for onExceptions blocks as it will handle errors itself
+        } else if (definition instanceof HystrixDefinition || ProcessorDefinitionHelper.isParentOfType(HystrixDefinition.class, definition, true)) {
+            // do not use error handler for hystrix as it offers circuit breaking with fallback for its outputs
+            // however if inherit error handler is enabled, we need to wrap an error handler on the hystrix parent
+            if (inheritErrorHandler != null && inheritErrorHandler && child == null) {
+                // only wrap the parent (not the children of the hystrix)
+                wrapChannelInErrorHandler(channel, routeContext, inheritErrorHandler);
+            } else {
+                log.trace("{} is part of HystrixCircuitBreaker so no error handler is applied", definition);
+            }
+        } else if (definition instanceof MulticastDefinition) {
+            // do not use error handler for multicast as it offers fine grained error handlers for its outputs
+            // however if share unit of work is enabled, we need to wrap an error handler on the multicast parent
+            MulticastDefinition def = (MulticastDefinition) definition;
+            boolean isShareUnitOfWork = def.getShareUnitOfWork() != null && def.getShareUnitOfWork();
+            if (isShareUnitOfWork && child == null) {
+                // only wrap the parent (not the children of the multicast)
+                wrapChannelInErrorHandler(channel, routeContext, inheritErrorHandler);
+            } else {
+                log.trace("{} is part of multicast which have special error handling so no error handler is applied", definition);
+            }
+        } else {
+            // use error handler by default or if configured to do so
+            wrapChannelInErrorHandler(channel, routeContext, inheritErrorHandler);
+        }
+
+        // do post init at the end
+        channel.postInitChannel(definition, routeContext);
+        log.trace("{} wrapped in Channel: {}", definition, channel);
+
+        return channel;
+    }
+
+    /**
+     * Wraps the given channel in error handler (if error handler is inherited)
+     *
+     * @param channel             the channel
+     * @param routeContext        the route context
+     * @param inheritErrorHandler whether to inherit error handler
+     * @throws Exception can be thrown if failed to create error handler builder
+     */
+    private void wrapChannelInErrorHandler(Channel channel, RouteContext routeContext, Boolean inheritErrorHandler) throws Exception {
+        if (inheritErrorHandler == null || inheritErrorHandler) {
+            log.trace("{} is configured to inheritErrorHandler", this);
+            Processor output = channel.getOutput();
+            Processor errorHandler = wrapInErrorHandler(routeContext, output);
+            // set error handler on channel
+            channel.setErrorHandler(errorHandler);
+        } else {
+            log.debug("{} is configured to not inheritErrorHandler.", this);
+        }
+    }
+
+    /**
+     * Wraps the given output in an error handler
+     *
+     * @param routeContext the route context
+     * @param output the output
+     * @return the output wrapped with the error handler
+     * @throws Exception can be thrown if failed to create error handler builder
+     */
+    protected Processor wrapInErrorHandler(RouteContext routeContext, Processor output) throws Exception {
+        ErrorHandlerFactory builder = ((RouteDefinition) routeContext.getRoute()).getErrorHandlerBuilder();
+        // create error handler
+        Processor errorHandler = builder.createErrorHandler(routeContext, output);
+
+        // invoke lifecycles so we can manage this error handler builder
+        for (LifecycleStrategy strategy : routeContext.getCamelContext().getLifecycleStrategies()) {
+            strategy.onErrorHandlerAdd(routeContext, errorHandler, builder);
+        }
+
+        return errorHandler;
+    }
+
+    /**
+     * Adds the given list of interceptors to the channel.
+     *
+     * @param routeContext  the route context
+     * @param channel       the channel to add strategies
+     * @param strategies    list of strategies to add.
+     */
+    protected void addInterceptStrategies(RouteContext routeContext, Channel channel, List<InterceptStrategy> strategies) {
+        for (InterceptStrategy strategy : strategies) {
+            if (!routeContext.isHandleFault() && strategy instanceof HandleFault) {
+                // handle fault is disabled so we should not add it
+                continue;
+            }
+
+            // add strategy
+            channel.addInterceptStrategy(strategy);
+        }
+    }
+
+    /**
+     * Creates a new instance of some kind of composite processor which defaults
+     * to using a {@link Pipeline} but derived classes could change the behaviour
+     */
+    protected Processor createCompositeProcessor(RouteContext routeContext, List<Processor> list) throws Exception {
+        return Pipeline.newInstance(routeContext.getCamelContext(), list);
+    }
+
+    /**
+     * Creates a new instance of the {@link Channel}.
+     */
+    protected ModelChannel createChannel(RouteContext routeContext) throws Exception {
+        return new DefaultChannel();
+    }
+
+    protected Processor createOutputsProcessor(RouteContext routeContext, Collection<ProcessorDefinition<?>> outputs) throws Exception {
+        // We will save list of actions to restore the outputs back to the original state.
+        Runnable propertyPlaceholdersChangeReverter = ProcessorDefinitionHelper.createPropertyPlaceholdersChangeReverter();
+        try {
+            return createOutputsProcessorImpl(routeContext, outputs);
+        } finally {
+            propertyPlaceholdersChangeReverter.run();
+        }
+    }
+
+    protected Processor createOutputsProcessorImpl(RouteContext routeContext, Collection<ProcessorDefinition<?>> outputs) throws Exception {
+        List<Processor> list = new ArrayList<>();
+        for (ProcessorDefinition<?> output : outputs) {
+
+            // allow any custom logic before we create the processor
+            reifier(output).preCreateProcessor();
+
+            // resolve properties before we create the processor
+            ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), output);
+
+            // resolve constant fields (eg Exchange.FILE_NAME)
+            ProcessorDefinitionHelper.resolveKnownConstantFields(output);
+
+            // also resolve properties and constant fields on embedded expressions
+            ProcessorDefinition<?> me = (ProcessorDefinition<?>) output;
+            if (me instanceof ExpressionNode) {
+                ExpressionNode exp = (ExpressionNode) me;
+                ExpressionDefinition expressionDefinition = exp.getExpression();
+                if (expressionDefinition != null) {
+                    // resolve properties before we create the processor
+                    ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), expressionDefinition);
+
+                    // resolve constant fields (eg Exchange.FILE_NAME)
+                    ProcessorDefinitionHelper.resolveKnownConstantFields(expressionDefinition);
+                }
+            }
+
+            Processor processor = createProcessor(routeContext, output);
+
+            // inject id
+            if (processor instanceof IdAware) {
+                String id = output.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
+                ((IdAware) processor).setId(id);
+            }
+
+            if (output instanceof Channel && processor == null) {
+                continue;
+            }
+
+            Processor channel = wrapChannel(routeContext, processor, output);
+            list.add(channel);
+        }
+
+        // if more than one output wrap than in a composite processor else just keep it as is
+        Processor processor = null;
+        if (!list.isEmpty()) {
+            if (list.size() == 1) {
+                processor = list.get(0);
+            } else {
+                processor = createCompositeProcessor(routeContext, list);
+            }
+        }
+
+        return processor;
+    }
+
+    protected Processor createProcessor(RouteContext routeContext, ProcessorDefinition<?> output) throws Exception {
+        Processor processor = null;
+        // at first use custom factory
+        if (routeContext.getCamelContext().getProcessorFactory() != null) {
+            processor = routeContext.getCamelContext().getProcessorFactory().createProcessor(routeContext, output);
+        }
+        // fallback to default implementation if factory did not create the processor
+        if (processor == null) {
+            processor = reifier(output).createProcessor(routeContext);
+        }
+        return processor;
+    }
+
+    /**
+     * Creates the processor and wraps it in any necessary interceptors and error handlers
+     */
+    protected Processor makeProcessor(RouteContext routeContext) throws Exception {
+        // We will save list of actions to restore the definition back to the original state.
+        Runnable propertyPlaceholdersChangeReverter = ProcessorDefinitionHelper.createPropertyPlaceholdersChangeReverter();
+        try {
+            return makeProcessorImpl(routeContext);
+        } finally {
+            // Lets restore
+            propertyPlaceholdersChangeReverter.run();
+        }
+    }
+
+    private Processor makeProcessorImpl(RouteContext routeContext) throws Exception {
+        Processor processor = null;
+
+        // allow any custom logic before we create the processor
+        preCreateProcessor();
+
+        // resolve properties before we create the processor
+        ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), definition);
+
+        // resolve constant fields (eg Exchange.FILE_NAME)
+        ProcessorDefinitionHelper.resolveKnownConstantFields(definition);
+
+        // also resolve properties and constant fields on embedded expressions
+        ProcessorDefinition<?> me = (ProcessorDefinition<?>) definition;
+        if (me instanceof ExpressionNode) {
+            ExpressionNode exp = (ExpressionNode) me;
+            ExpressionDefinition expressionDefinition = exp.getExpression();
+            if (expressionDefinition != null) {
+                // resolve properties before we create the processor
+                ProcessorDefinitionHelper.resolvePropertyPlaceholders(routeContext.getCamelContext(), expressionDefinition);
+
+                // resolve constant fields (eg Exchange.FILE_NAME)
+                ProcessorDefinitionHelper.resolveKnownConstantFields(expressionDefinition);
+            }
+        }
+
+        // at first use custom factory
+        if (routeContext.getCamelContext().getProcessorFactory() != null) {
+            processor = routeContext.getCamelContext().getProcessorFactory().createProcessor(routeContext, definition);
+        }
+        // fallback to default implementation if factory did not create the processor
+        if (processor == null) {
+            processor = createProcessor(routeContext);
+        }
+
+        // inject id
+        if (processor instanceof IdAware) {
+            String id = definition.idOrCreate(routeContext.getCamelContext().getNodeIdFactory());
+            ((IdAware) processor).setId(id);
+        }
+
+        if (processor == null) {
... 5356 lines suppressed ...


[camel] 29/44: Move stuff around to isolate o.a.c.util from o.a.c and o.a.c.support from o.a.c.impl

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f8014990d99751c3f8672a5590a7db0437e86e79
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Oct 3 10:38:46 2018 +0200

    Move stuff around to isolate o.a.c.util from o.a.c and o.a.c.support from o.a.c.impl
---
 .../src/main/java/__name__Component.java           |    2 +-
 .../src/main/java/__name__Consumer.java            |    2 +-
 .../src/main/java/__name__Endpoint.java            |    6 +-
 .../src/main/java/__name__Producer.java            |    2 +-
 .../java/internal/__name__PropertiesHelper.java    |    2 +-
 .../src/test/java/Abstract__name__TestSupport.java |    2 +-
 camel-core/src/main/docs/eips/aggregate-eip.adoc   |    2 +-
 .../main/java/org/apache/camel/AsyncProcessor.java |    2 +-
 .../main/java/org/apache/camel/CamelContext.java   |    6 +-
 .../java/org/apache/camel/CamelContextAware.java   |   13 +-
 .../org/apache/camel/CamelExecutionException.java  |   16 +
 .../src/main/java/org/apache/camel/Component.java  |   12 +
 .../src/main/java/org/apache/camel/Exchange.java   |    2 +-
 .../apache/camel/FailedToCreateRouteException.java |    9 +-
 .../org/apache/camel/LoadPropertiesException.java  |   36 +
 .../src/main/java/org/apache/camel/Message.java    |    4 +-
 .../org/apache/camel/NoSuchHeaderException.java    |    2 +-
 .../org/apache/camel/NoSuchPropertyException.java  |    3 +-
 .../camel/PollingConsumerPollingStrategy.java      |    2 +-
 .../src/main/java/org/apache/camel/Rejectable.java |   29 -
 .../org/apache/camel/RuntimeCamelException.java    |   16 +
 .../apache/camel/SSLContextParametersAware.java    |    2 +-
 .../org/apache/camel/ThreadPoolRejectedPolicy.java |  101 --
 .../main/java/org/apache/camel/ValueHolder.java    |   55 +
 .../camel/api/management/PerformanceCounter.java   |   66 --
 .../camel/builder/AdviceWithRouteBuilder.java      |   17 +-
 .../org/apache/camel/builder/AdviceWithTasks.java  |    2 +-
 .../camel/builder/AggregationStrategies.java       |  152 +++
 .../org/apache/camel/builder/BuilderSupport.java   |    3 +-
 .../org/apache/camel/builder/DataFormatClause.java |    2 +-
 .../camel/builder/DeadLetterChannelBuilder.java    |    2 +-
 .../camel/builder/DefaultErrorHandlerBuilder.java  |    4 +-
 .../builder/DefaultFluentProducerTemplate.java     |    4 +-
 .../org/apache/camel/builder/ExchangeBuilder.java  |    2 +-
 .../apache/camel/builder/ExpressionBuilder.java    |   44 +-
 .../camel/builder/FlexibleAggregationStrategy.java |  437 ++++++++
 .../org/apache/camel/builder/NotifyBuilder.java    |   25 +-
 .../org/apache/camel/builder/PredicateBuilder.java |    4 +-
 .../org/apache/camel/builder/SimpleBuilder.java    |    8 +-
 .../apache/camel/builder/ThreadPoolBuilder.java    |    2 +-
 .../camel/builder/ThreadPoolProfileBuilder.java    |    2 +-
 .../org/apache/camel/builder/ValueBuilder.java     |    2 +-
 .../camel/builder/XsltAggregationStrategy.java     |  251 +++++
 .../builder/xml/FileResultHandlerFactory.java      |    2 +-
 .../org/apache/camel/builder/xml/XPathBuilder.java |   11 +-
 .../org/apache/camel/builder/xml/XsltBuilder.java  |    2 +-
 .../apache/camel/builder/xml/XsltUriResolver.java  |    2 +-
 .../apache/camel/component/ResourceEndpoint.java   |    4 +-
 .../component/bean/AbstractBeanProcessor.java      |    4 +-
 .../bean/AbstractCamelInvocationHandler.java       |    2 +-
 .../bean/BeanAnnotationExpressionFactory.java      |    4 +-
 .../apache/camel/component/bean/BeanComponent.java |   10 +-
 .../apache/camel/component/bean/BeanEndpoint.java  |    2 +-
 .../org/apache/camel/component/bean/BeanInfo.java  |   30 +-
 .../camel/component/bean/BeanInvocation.java       |    5 +-
 .../apache/camel/component/bean/BeanProducer.java  |    4 +-
 .../camel/component/bean/ConstantBeanHolder.java   |    2 +-
 .../bean/DefaultAnnotationExpressionFactory.java   |    4 +-
 .../apache/camel/component/bean/MethodInfo.java    |   37 +-
 .../camel/component/bean/MethodInfoCache.java      |    2 +-
 .../camel/component/bean/PojoProxyHelper.java      |    2 +-
 .../camel/component/beanclass/ClassComponent.java  |    2 +-
 .../camel/component/browse/BrowseComponent.java    |    2 +-
 .../camel/component/browse/BrowseEndpoint.java     |    4 +-
 .../component/controlbus/ControlBusComponent.java  |    2 +-
 .../component/controlbus/ControlBusEndpoint.java   |    4 +-
 .../component/controlbus/ControlBusProducer.java   |    6 +-
 .../component/dataformat/DataFormatComponent.java  |    4 +-
 .../component/dataformat/DataFormatEndpoint.java   |    6 +-
 .../camel/component/dataset/DataSetComponent.java  |    4 +-
 .../camel/component/dataset/DataSetConsumer.java   |    4 +-
 .../camel/component/dataset/DataSetEndpoint.java   |    4 +-
 .../camel/component/direct/DirectComponent.java    |    4 +-
 .../camel/component/direct/DirectConsumer.java     |    2 +-
 .../camel/component/direct/DirectEndpoint.java     |    2 +-
 .../camel/component/direct/DirectProducer.java     |    4 +-
 .../directvm/DirectVmBlockingProducer.java         |    4 +-
 .../component/directvm/DirectVmComponent.java      |    2 +-
 .../camel/component/directvm/DirectVmConsumer.java |    2 +-
 .../camel/component/directvm/DirectVmEndpoint.java |    2 +-
 .../component/directvm/DirectVmProcessor.java      |    4 +-
 .../camel/component/directvm/DirectVmProducer.java |    2 +-
 .../extension/ComponentVerifierExtension.java      |   18 +-
 .../DefaultComponentVerifierExtension.java         |    6 +-
 .../apache/camel/component/file/GenericFile.java   |    3 +-
 .../camel/component/file/GenericFileComponent.java |    6 +-
 .../camel/component/file/GenericFileConsumer.java  |   10 +-
 .../component/file/GenericFileDefaultSorter.java   |    2 +-
 .../camel/component/file/GenericFileEndpoint.java  |   13 +-
 .../camel/component/file/GenericFileMessage.java   |    2 +-
 .../component/file/GenericFilePollingConsumer.java |   12 +-
 .../camel/component/file/GenericFileProducer.java  |    8 +-
 .../FileChangedExclusiveReadLockStrategy.java      |    2 +-
 ...dempotentChangedRepositoryReadLockStrategy.java |    4 +-
 ...IdempotentRenameRepositoryReadLockStrategy.java |    4 +-
 .../FileIdempotentRepositoryReadLockStrategy.java  |    4 +-
 .../FileLockExclusiveReadLockStrategy.java         |    2 +-
 .../strategy/GenericFileDeleteProcessStrategy.java |    2 +-
 .../GenericFileProcessStrategySupport.java         |    4 +-
 ...GenericFileRenameExclusiveReadLockStrategy.java |    2 +-
 .../strategy/GenericFileRenameProcessStrategy.java |    2 +-
 .../component/language/LanguageComponent.java      |    4 +-
 .../camel/component/language/LanguageEndpoint.java |    2 +-
 .../camel/component/language/LanguageProducer.java |    6 +-
 .../apache/camel/component/log/LogComponent.java   |    5 +-
 .../apache/camel/component/log/LogEndpoint.java    |    6 +-
 .../apache/camel/component/log/LogProducer.java    |    4 +-
 .../camel/component/mock/AssertionClause.java      |    2 +-
 .../apache/camel/component/mock/MockComponent.java |    4 +-
 .../apache/camel/component/mock/MockEndpoint.java  |   12 +-
 .../java/org/apache/camel/component/mock/Time.java |   50 +
 .../apache/camel/component/mock/TimeClause.java    |    1 -
 .../component/properties/PropertiesComponent.java  |    6 +-
 .../component/properties/PropertiesEndpoint.java   |    2 +-
 .../apache/camel/component/ref/RefComponent.java   |    2 +-
 .../apache/camel/component/ref/RefEndpoint.java    |    4 +-
 .../camel/component/rest/RestApiComponent.java     |    2 +-
 .../camel/component/rest/RestApiEndpoint.java      |    2 +-
 .../camel/component/rest/RestApiProducer.java      |    4 +-
 .../apache/camel/component/rest/RestComponent.java |    6 +-
 .../apache/camel/component/rest/RestEndpoint.java  |    4 +-
 .../apache/camel/component/rest/RestProducer.java  |   10 +-
 .../rest/RestProducerBindingProcessor.java         |    4 +-
 .../apache/camel/component/saga/SagaComponent.java |    2 +-
 .../apache/camel/component/saga/SagaEndpoint.java  |    2 +-
 .../apache/camel/component/saga/SagaProducer.java  |    4 +-
 .../component/scheduler/SchedulerComponent.java    |    2 +-
 .../component/scheduler/SchedulerConsumer.java     |    2 +-
 .../component/scheduler/SchedulerEndpoint.java     |    2 +-
 .../apache/camel/component/seda/SedaComponent.java |    2 +-
 .../apache/camel/component/seda/SedaConsumer.java  |    8 +-
 .../apache/camel/component/seda/SedaEndpoint.java  |    6 +-
 .../camel/component/seda/SedaPollingConsumer.java  |    8 +-
 .../apache/camel/component/seda/SedaProducer.java  |    4 +-
 .../apache/camel/component/test/TestComponent.java |    4 +-
 .../apache/camel/component/test/TestEndpoint.java  |    8 +-
 .../camel/component/timer/TimerComponent.java      |    2 +-
 .../camel/component/timer/TimerConsumer.java       |    4 +-
 .../camel/component/timer/TimerEndpoint.java       |    2 +-
 .../validator/DefaultLSResourceResolver.java       |    5 +-
 .../component/validator/ValidatorComponent.java    |    2 +-
 .../component/validator/ValidatorEndpoint.java     |    2 +-
 .../component/validator/ValidatorProducer.java     |    4 +-
 .../org/apache/camel/component/vm/VmConsumer.java  |    2 +-
 .../apache/camel/component/xslt/XsltComponent.java |    8 +-
 .../apache/camel/component/xslt/XsltEndpoint.java  |    8 +-
 .../org/apache/camel/converter/IOConverter.java    |   18 +-
 .../apache/camel/converter/ObjectConverter.java    |   11 +-
 .../camel/converter/ObjectConverterOptimised.java  |    2 +-
 .../apache/camel/converter/jaxp/DomConverter.java  |   12 +-
 .../apache/camel/converter/jaxp/StaxConverter.java |   15 +-
 .../apache/camel/converter/jaxp/XmlConverter.java  |    5 +-
 .../converter/stream/OutputStreamBuilder.java      |    2 +-
 .../apache/camel/impl/AbstractDynamicRegistry.java |  199 ++++
 .../apache/camel/impl/BaseSelectorProducer.java    |    1 +
 .../impl/BridgeExceptionHandlerToErrorHandler.java |   87 --
 .../camel/impl/CamelPostProcessorHelper.java       |   23 +-
 .../org/apache/camel/impl/CompoundIterator.java    |   64 ++
 .../java/org/apache/camel/impl/ConsumerCache.java  |    6 +-
 .../impl/DefaultAsyncProcessorAwaitManager.java    |    8 +-
 .../apache/camel/impl/DefaultAsyncProducer.java    |   38 -
 .../org/apache/camel/impl/DefaultAttachment.java   |  125 ---
 .../camel/impl/DefaultCamelBeanPostProcessor.java  |    7 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |   35 +-
 .../org/apache/camel/impl/DefaultComponent.java    |  503 ---------
 .../camel/impl/DefaultComponentResolver.java       |    2 +-
 .../org/apache/camel/impl/DefaultConsumer.java     |  164 ---
 .../apache/camel/impl/DefaultConsumerTemplate.java |   10 +-
 .../camel/impl/DefaultDataFormatResolver.java      |    2 +-
 .../org/apache/camel/impl/DefaultDebugger.java     |    2 +-
 .../org/apache/camel/impl/DefaultEndpoint.java     |  482 ---------
 .../apache/camel/impl/DefaultEndpointRegistry.java |  167 +--
 .../impl/DefaultEndpointUtilizationStatistics.java |    2 +-
 .../org/apache/camel/impl/DefaultExchange.java     |  557 ----------
 .../camel/impl/DefaultExecutorServiceManager.java  |    2 +-
 .../org/apache/camel/impl/DefaultInjector.java     |   23 +-
 .../apache/camel/impl/DefaultLanguageResolver.java |    2 +-
 .../java/org/apache/camel/impl/DefaultMessage.java |  401 -------
 .../impl/DefaultPackageScanClassResolver.java      |    2 +-
 .../impl/DefaultPollingConsumerPollStrategy.java   |   45 -
 .../apache/camel/impl/DefaultPollingEndpoint.java  |   40 -
 .../org/apache/camel/impl/DefaultProducer.java     |   79 --
 .../apache/camel/impl/DefaultProducerTemplate.java |    6 +-
 .../org/apache/camel/impl/DefaultRestRegistry.java |    5 +-
 .../org/apache/camel/impl/DefaultRouteContext.java |   10 +-
 .../camel/impl/DefaultRuntimeEndpointRegistry.java |    4 +-
 .../camel/impl/DefaultScheduledPollConsumer.java   |  107 --
 .../DefaultScheduledPollConsumerScheduler.java     |  197 ----
 .../apache/camel/impl/DefaultShutdownStrategy.java |    9 +-
 .../camel/impl/DefaultTransformerRegistry.java     |  171 +--
 .../org/apache/camel/impl/DefaultUnitOfWork.java   |    6 +-
 .../camel/impl/DefaultValidatorRegistry.java       |  170 +--
 .../java/org/apache/camel/impl/DeferProducer.java  |    3 +-
 .../camel/impl/DeferServiceStartupListener.java    |    2 +-
 .../camel/impl/DurationRoutePolicyFactory.java     |    2 +-
 .../java/org/apache/camel/impl/EndpointKey.java    |    8 +-
 .../camel/impl/EventDrivenConsumerRoute.java       |    2 +-
 .../camel/impl/EventDrivenPollingConsumer.java     |  247 -----
 .../apache/camel/impl/EventNotifierCallback.java   |    2 +-
 .../org/apache/camel/impl/FileStateRepository.java |    9 +-
 .../camel/impl/FileWatcherReloadStrategy.java      |    9 +-
 .../camel/impl/HeaderFilterStrategyComponent.java  |    1 +
 .../apache/camel/impl/InterceptSendToEndpoint.java |    2 +-
 .../impl/InterceptSendToEndpointProcessor.java     |    8 +-
 .../impl/InterceptSendToMockEndpointStrategy.java  |    4 +-
 .../java/org/apache/camel/impl/JndiRegistry.java   |    4 +-
 .../impl/LimitedPollingConsumerPollStrategy.java   |    3 +-
 .../java/org/apache/camel/impl/MessageSupport.java |  320 ------
 .../apache/camel/impl/PollingConsumerSupport.java  |   65 --
 .../org/apache/camel/impl/ProcessorEndpoint.java   |  100 --
 .../camel/impl/ProcessorPollingConsumer.java       |   77 --
 .../java/org/apache/camel/impl/ProducerCache.java  |    8 +-
 .../impl/PropertyPlaceholderDelegateRegistry.java  |    6 +-
 .../camel/impl/ProvisionalEndpointRegistry.java    |    3 +-
 .../java/org/apache/camel/impl/RouteService.java   |    9 +-
 .../camel/impl/ScheduledBatchPollingConsumer.java  |  127 ---
 .../apache/camel/impl/ScheduledPollConsumer.java   |  511 ---------
 .../apache/camel/impl/ScheduledPollEndpoint.java   |  424 --------
 .../apache/camel/impl/SerializationDataFormat.java |    2 +-
 .../java/org/apache/camel/impl/ServicePool.java    |    6 +-
 .../org/apache/camel/impl/SimpleUuidGenerator.java |   34 -
 .../org/apache/camel/impl/StringDataFormat.java    |    2 +-
 .../camel/impl/SubscribeMethodProcessor.java       |    4 +-
 .../camel/impl/ThrottlingInflightRoutePolicy.java  |    4 +-
 .../impl/cloud/DefaultServiceCallProcessor.java    |    4 +-
 .../impl/cloud/DefaultServiceLoadBalancer.java     |    2 +-
 .../impl/cluster/ClusteredRouteConfiguration.java  |    4 +-
 .../impl/cluster/ClusteredRouteController.java     |    5 +-
 .../camel/impl/cluster/ClusteredRouteFilters.java  |    4 +-
 .../converter/AsyncProcessorTypeConverter.java     |    2 +-
 .../impl/converter/BaseTypeConverterRegistry.java  |   11 +-
 .../camel/impl/converter/EnumTypeConverter.java    |    2 +-
 .../camel/impl/converter/FutureTypeConverter.java  |    2 +-
 .../InstanceMethodFallbackTypeConverter.java       |    4 +-
 .../converter/InstanceMethodTypeConverter.java     |    4 +-
 .../StaticMethodFallbackTypeConverter.java         |    4 +-
 .../impl/converter/StaticMethodTypeConverter.java  |    4 +-
 .../impl/transformer/DataFormatTransformer.java    |    2 +-
 .../impl/transformer/ProcessorTransformer.java     |    4 +-
 .../camel/impl/transformer/TransformerKey.java     |    2 +-
 .../camel/impl/validator/ProcessorValidator.java   |    4 +-
 .../apache/camel/impl/validator/ValidatorKey.java  |    2 +-
 .../apache/camel/language/bean/BeanExpression.java |    2 +-
 .../apache/camel/language/bean/BeanLanguage.java   |    8 +-
 .../camel/language/constant/ConstantLanguage.java  |    2 +-
 .../camel/language/header/HeaderLanguage.java      |    2 +-
 .../property/ExchangePropertyLanguage.java         |    2 +-
 .../org/apache/camel/language/ref/RefLanguage.java |    4 +-
 .../camel/language/simple/SimpleLanguage.java      |    8 +-
 .../language/simple/SimplePredicateParser.java     |    2 +-
 .../language/simple/ast/BinaryExpression.java      |    8 +-
 .../language/simple/ast/LogicalExpression.java     |    2 +-
 .../camel/language/simple/ast/UnaryExpression.java |    9 +-
 .../camel/language/tokenizer/TokenizeLanguage.java |    2 +-
 .../language/tokenizer/XMLTokenizeLanguage.java    |    2 +-
 .../java/org/apache/camel/main/MainSupport.java    |    2 +-
 .../management/CompositePerformanceCounter.java    |    1 -
 .../camel/management/DefaultManagementAgent.java   |    2 +-
 .../DefaultManagementLifecycleStrategy.java        |    6 +-
 .../DefaultManagementMBeanAssembler.java           |    2 +-
 .../DefaultManagementObjectStrategy.java           |    2 +-
 .../management/DefaultManagementStrategy.java      |    3 +-
 .../management/DelegatePerformanceCounter.java     |    3 +-
 .../InstrumentationInterceptStrategy.java          |    1 -
 .../camel/management/InstrumentationProcessor.java |    1 -
 .../camel/management/MBeanInfoAssembler.java       |    6 +-
 .../camel/management/PerformanceCounter.java       |   66 ++
 .../camel/management/PublishEventNotifier.java     |    2 +-
 .../mbean/ManagedAsyncProcessorAwaitManager.java   |    4 +-
 .../management/mbean/ManagedBacklogDebugger.java   |    8 +-
 .../management/mbean/ManagedBrowsableEndpoint.java |    2 +-
 .../management/mbean/ManagedCamelContext.java      |   11 +-
 .../camel/management/mbean/ManagedCamelHealth.java |    4 +-
 .../camel/management/mbean/ManagedChoice.java      |    4 +-
 .../camel/management/mbean/ManagedComponent.java   |    6 +-
 .../camel/management/mbean/ManagedDataFormat.java  |    4 +-
 .../management/mbean/ManagedDynamicRouter.java     |    4 +-
 .../camel/management/mbean/ManagedEndpoint.java    |    4 +-
 .../management/mbean/ManagedEndpointRegistry.java  |    4 +-
 .../camel/management/mbean/ManagedEnricher.java    |    4 +-
 .../mbean/ManagedFailoverLoadBalancer.java         |    3 +-
 .../mbean/ManagedInflightRepository.java           |    4 +-
 .../mbean/ManagedPerformanceCounter.java           |    4 +-
 .../management/mbean/ManagedPollEnricher.java      |    4 +-
 .../camel/management/mbean/ManagedProcessor.java   |    6 +-
 .../management/mbean/ManagedRecipientList.java     |    4 +-
 .../management/mbean/ManagedRestRegistry.java      |    4 +-
 .../camel/management/mbean/ManagedRoute.java       |    3 +-
 .../camel/management/mbean/ManagedRoutingSlip.java |    4 +-
 .../mbean/ManagedRuntimeEndpointRegistry.java      |    4 +-
 .../mbean/ManagedScheduledPollConsumer.java        |    2 +-
 .../mbean/ManagedSendDynamicProcessor.java         |    4 +-
 .../management/mbean/ManagedSendProcessor.java     |    4 +-
 .../mbean/ManagedTransformerRegistry.java          |    4 +-
 .../mbean/ManagedTypeConverterRegistry.java        |    6 +-
 .../management/mbean/ManagedValidatorRegistry.java |    4 +-
 .../management/mbean/ManagedWireTapProcessor.java  |    4 +-
 .../org/apache/camel/model/BeanDefinition.java     |    9 +-
 .../apache/camel/model/ClaimCheckDefinition.java   |    8 +-
 .../apache/camel/model/DataFormatDefinition.java   |    4 +-
 .../model/InterceptSendToEndpointDefinition.java   |    2 +-
 .../apache/camel/model/LoadBalancerDefinition.java |    2 +-
 .../java/org/apache/camel/model/LogDefinition.java |    4 +-
 .../apache/camel/model/MulticastDefinition.java    |    2 +-
 .../apache/camel/model/OnExceptionDefinition.java  |    4 +-
 .../camel/model/ProcessorDefinitionHelper.java     |    4 +-
 .../camel/model/RecipientListDefinition.java       |    2 +-
 .../camel/model/RedeliveryPolicyDefinition.java    |    8 +-
 .../apache/camel/model/ResequenceDefinition.java   |    2 +-
 .../model/RestContextRefDefinitionHelper.java      |    5 +-
 .../apache/camel/model/RouteBuilderDefinition.java |    2 +-
 .../model/RouteContextRefDefinitionHelper.java     |    5 +-
 .../org/apache/camel/model/RouteDefinition.java    |    9 +-
 .../apache/camel/model/RouteDefinitionHelper.java  |   22 +-
 .../org/apache/camel/model/SagaDefinition.java     |    2 +-
 .../org/apache/camel/model/SortDefinition.java     |    4 +-
 .../org/apache/camel/model/SplitDefinition.java    |    2 +-
 .../camel/model/ThreadPoolProfileDefinition.java   |    2 +-
 .../org/apache/camel/model/ThreadsDefinition.java  |    2 +-
 .../camel/model/ThrowExceptionDefinition.java      |    4 +-
 .../apache/camel/model/TransactedDefinition.java   |   12 +-
 .../java/org/apache/camel/model/TryDefinition.java |    4 -
 .../org/apache/camel/model/WireTapDefinition.java  |    2 +-
 ...ulServiceCallServiceDiscoveryConfiguration.java |    2 +-
 ...cdServiceCallServiceDiscoveryConfiguration.java |    2 +-
 .../camel/model/cloud/ServiceCallDefinition.java   |   15 +-
 .../cloud/ServiceCallExpressionConfiguration.java  |    4 +-
 .../ServiceCallServiceChooserConfiguration.java    |    4 +-
 .../ServiceCallServiceDiscoveryConfiguration.java  |    4 +-
 .../ServiceCallServiceFilterConfiguration.java     |    4 +-
 ...erviceCallServiceLoadBalancerConfiguration.java |    4 +-
 .../camel/model/dataformat/BindyDataFormat.java    |    4 +-
 .../camel/model/dataformat/BoonDataFormat.java     |    4 +-
 .../camel/model/dataformat/CryptoDataFormat.java   |    2 +-
 .../camel/model/dataformat/CsvDataFormat.java      |    2 +-
 .../camel/model/dataformat/FlatpackDataFormat.java |    2 +-
 .../model/dataformat/JacksonXMLDataFormat.java     |    6 +-
 .../camel/model/dataformat/JaxbDataFormat.java     |    2 +-
 .../camel/model/dataformat/JibxDataFormat.java     |    4 +-
 .../camel/model/dataformat/JsonDataFormat.java     |    6 +-
 .../model/dataformat/TidyMarkupDataFormat.java     |    4 +-
 .../model/dataformat/XMLSecurityDataFormat.java    |    2 +-
 .../camel/model/dataformat/XStreamDataFormat.java  |    2 +-
 .../camel/model/dataformat/YAMLDataFormat.java     |    3 +-
 .../camel/model/language/ExpressionDefinition.java |    6 +-
 .../camel/model/language/JsonPathExpression.java   |    4 +-
 .../camel/model/language/MethodCallExpression.java |    9 +-
 .../camel/model/language/SimpleExpression.java     |    4 +-
 .../camel/model/language/TokenizerExpression.java  |    2 +-
 .../camel/model/language/XPathExpression.java      |    7 +-
 .../camel/model/language/XQueryExpression.java     |    3 +-
 .../loadbalancer/CustomLoadBalancerDefinition.java |    2 +-
 .../WeightedLoadBalancerDefinition.java            |    4 +-
 .../camel/model/rest/RestBindingDefinition.java    |    4 +-
 .../model/rest/RestConfigurationDefinition.java    |    7 +-
 .../apache/camel/model/rest/RestDefinition.java    |   13 +-
 .../camel/processor/CamelInternalProcessor.java    |    8 +-
 .../apache/camel/processor/CamelLogProcessor.java  |    4 +-
 .../org/apache/camel/processor/CatchProcessor.java |    6 +-
 .../apache/camel/processor/ChoiceProcessor.java    |    8 +-
 .../processor/ClaimCheckAggregationStrategy.java   |   14 +-
 .../camel/processor/ClaimCheckProcessor.java       |    8 +-
 .../camel/processor/ConvertBodyProcessor.java      |    6 +-
 .../apache/camel/processor/DeadLetterChannel.java  |    2 +-
 .../camel/processor/DefaultErrorHandler.java       |    2 +-
 .../camel/processor/DefaultExchangeFormatter.java  |    2 +-
 .../camel/processor/DelegateAsyncProcessor.java    |    6 +-
 .../apache/camel/processor/DelegateProcessor.java  |    2 +-
 .../camel/processor/DelegateSyncProcessor.java     |    2 +-
 .../org/apache/camel/processor/DynamicRouter.java  |    2 +-
 .../java/org/apache/camel/processor/Enricher.java  |   16 +-
 .../processor/EvaluateExpressionProcessor.java     |    2 +-
 .../camel/processor/ExchangePatternProcessor.java  |    2 +-
 .../apache/camel/processor/FilterProcessor.java    |    4 +-
 .../apache/camel/processor/FinallyProcessor.java   |    4 +-
 .../InterceptorToAsyncProcessorBridge.java         |    4 +-
 .../org/apache/camel/processor/LogProcessor.java   |    6 +-
 .../org/apache/camel/processor/LoopProcessor.java  |    4 +-
 .../apache/camel/processor/MarshalProcessor.java   |    4 +-
 .../apache/camel/processor/MulticastProcessor.java |   56 +-
 .../camel/processor/OnCompletionProcessor.java     |    8 +-
 .../java/org/apache/camel/processor/Pipeline.java  |    8 +-
 .../org/apache/camel/processor/PipelineHelper.java |    2 +-
 .../org/apache/camel/processor/PollEnricher.java   |   16 +-
 .../org/apache/camel/processor/RecipientList.java  |   14 +-
 .../camel/processor/RecipientListProcessor.java    |   20 +-
 .../camel/processor/RedeliveryErrorHandler.java    |   19 +-
 .../camel/processor/RemoveHeaderProcessor.java     |    2 +-
 .../camel/processor/RemoveHeadersProcessor.java    |    2 +-
 .../camel/processor/RemovePropertiesProcessor.java |    2 +-
 .../camel/processor/RemovePropertyProcessor.java   |    2 +-
 .../org/apache/camel/processor/Resequencer.java    |    6 +-
 .../apache/camel/processor/RestBindingAdvice.java  |    4 +-
 .../apache/camel/processor/RollbackProcessor.java  |    2 +-
 .../org/apache/camel/processor/RoutingSlip.java    |   16 +-
 .../apache/camel/processor/ScriptProcessor.java    |    2 +-
 .../camel/processor/SendDynamicProcessor.java      |   10 +-
 .../org/apache/camel/processor/SendProcessor.java  |   13 +-
 .../apache/camel/processor/SetBodyProcessor.java   |    6 +-
 .../apache/camel/processor/SetHeaderProcessor.java |    2 +-
 .../camel/processor/SetPropertyProcessor.java      |    2 +-
 .../processor/SharedCamelInternalProcessor.java    |    2 +-
 .../org/apache/camel/processor/SortProcessor.java  |    2 +-
 .../java/org/apache/camel/processor/Splitter.java  |    4 +-
 .../org/apache/camel/processor/StopProcessor.java  |    2 +-
 .../apache/camel/processor/StreamResequencer.java  |    6 +-
 .../apache/camel/processor/ThreadsProcessor.java   |    8 +-
 .../java/org/apache/camel/processor/Throttler.java |    4 +-
 .../apache/camel/processor/ThroughputLogger.java   |    4 +-
 .../camel/processor/ThrowExceptionProcessor.java   |    2 +-
 .../apache/camel/processor/TransformProcessor.java |    6 +-
 .../org/apache/camel/processor/TryProcessor.java   |   10 +-
 .../apache/camel/processor/UnitOfWorkProducer.java |    5 +-
 .../apache/camel/processor/UnmarshalProcessor.java |    4 +-
 .../apache/camel/processor/WireTapProcessor.java   |   15 +-
 .../org/apache/camel/processor/WrapProcessor.java  |    2 +-
 .../processor/aggregate/AggregateProcessor.java    |   10 +-
 .../aggregate/AggregationStrategyBeanAdapter.java  |    2 +-
 .../GroupedExchangeAggregationStrategy.java        |    2 +-
 .../GroupedMessageAggregationStrategy.java         |    2 +-
 .../ShareUnitOfWorkAggregationStrategy.java        |    4 +-
 .../aggregate/UseLatestAggregationStrategy.java    |    2 +-
 .../idempotent/FileIdempotentRepository.java       |   67 +-
 .../processor/idempotent/IdempotentConsumer.java   |    8 +-
 .../idempotent/IdempotentOnCompletion.java         |    2 +-
 .../idempotent/MemoryIdempotentRepository.java     |    4 +-
 .../processor/interceptor/BacklogDebugger.java     |   12 +-
 .../camel/processor/interceptor/BacklogTracer.java |    4 +-
 .../processor/interceptor/DefaultChannel.java      |    6 +-
 .../loadbalancer/FailOverLoadBalancer.java         |    4 +-
 .../loadbalancer/LoadBalancerConsumer.java         |    2 +-
 .../loadbalancer/LoadBalancerSupport.java          |    4 +-
 .../camel/processor/validation/SchemaReader.java   |    2 +-
 .../processor/validation/ValidatingProcessor.java  |    2 +-
 .../org/apache/camel/spi/EndpointRegistry.java     |    3 +-
 .../main/java/org/apache/camel/spi/Injector.java   |   10 -
 .../java/org/apache/camel/spi/LogListener.java     |    2 +-
 .../org/apache/camel/spi/RestConfiguration.java    |    4 +-
 .../camel/spi/RestProducerFactoryHelper.java       |    4 +-
 .../camel/spi/ScheduledPollConsumerScheduler.java  |    6 +-
 .../org/apache/camel/spi/ThreadPoolProfile.java    |    2 +-
 .../org/apache/camel/spi/TransformerRegistry.java  |    3 +-
 .../org/apache/camel/spi/ValidatorRegistry.java    |    3 +-
 .../support/AsyncProcessorConverterHelper.java     |  178 +++
 .../apache/camel/support/AsyncProcessorHelper.java |   68 ++
 .../org/apache/camel/support/AttachmentMap.java    |  141 +++
 .../BridgeExceptionHandlerToErrorHandler.java      |   85 ++
 .../apache/camel/support/CamelContextHelper.java   |  822 ++++++++++++++
 .../java/org/apache/camel/support/CamelLogger.java |  265 +++++
 .../camel/support/CamelObjectInputStream.java      |   46 +
 .../apache/camel/support/ChildServiceSupport.java  |    2 -
 .../apache/camel/support/DefaultAsyncProducer.java |   36 +
 .../apache/camel/support/DefaultAttachment.java    |  125 +++
 .../org/apache/camel/support/DefaultComponent.java |  502 +++++++++
 .../org/apache/camel/support/DefaultConsumer.java  |  159 +++
 .../org/apache/camel/support/DefaultEndpoint.java  |  476 ++++++++
 .../org/apache/camel/support/DefaultExchange.java  |  556 ++++++++++
 .../org/apache/camel/support/DefaultMessage.java   |  399 +++++++
 .../DefaultPollingConsumerPollStrategy.java        |   45 +
 .../camel/support/DefaultPollingEndpoint.java      |   40 +
 .../org/apache/camel/support/DefaultProducer.java  |   76 ++
 .../support/DefaultScheduledPollConsumer.java      |  106 ++
 .../DefaultScheduledPollConsumerScheduler.java     |  194 ++++
 .../org/apache/camel/support/EndpointHelper.java   |  496 +++++++++
 .../camel/support/EventDrivenPollingConsumer.java  |  243 +++++
 .../java/org/apache/camel/support/EventHelper.java | 1102 +++++++++++++++++++
 .../org/apache/camel/support/ExchangeHelper.java   | 1032 ++++++++++++++++++
 .../apache/camel/support/ExpressionComparator.java |   41 +
 .../camel/support/ExpressionListComparator.java    |   48 +
 .../support/ExpressionToPredicateAdapter.java      |   72 ++
 .../java/org/apache/camel/support/GZIPHelper.java  |  111 ++
 .../org/apache/camel/support/GroupIterator.java    |  131 +++
 .../apache/camel/support/GroupTokenIterator.java   |  162 +++
 .../apache/camel/support/IntrospectionSupport.java |  760 +++++++++++++
 .../java/org/apache/camel/support/LRUCache.java    |  282 +++++
 .../org/apache/camel/support/LRUCacheFactory.java  |  221 ++++
 .../org/apache/camel/support/LRUSoftCache.java     |   74 ++
 .../org/apache/camel/support/LRUWeakCache.java     |   70 ++
 .../org/apache/camel/support/LanguageSupport.java  |    1 -
 .../camel/support/LoggingExceptionHandler.java     |    3 +-
 .../java/org/apache/camel/support/MessageDump.java |  144 +++
 .../org/apache/camel/support/MessageHelper.java    |  604 +++++++++++
 .../org/apache/camel/support/MessageSupport.java   |  320 ++++++
 .../org/apache/camel/support/ObjectHelper.java     |  655 +++++++++++
 .../apache/camel/support/OrderedComparator.java    |   73 ++
 .../org/apache/camel/support/PlatformHelper.java   |   51 +
 .../camel/support/PollingConsumerSupport.java      |   61 ++
 .../camel/support/PredicateAssertHelper.java       |   59 +
 .../support/PredicateToExpressionAdapter.java      |   51 +
 .../apache/camel/support/ProcessorEndpoint.java    |  100 ++
 .../camel/support/ProcessorPollingConsumer.java    |   76 ++
 .../camel/support/ReloadStrategySupport.java       |    8 +-
 .../org/apache/camel/support/ResolverHelper.java   |  153 +++
 .../org/apache/camel/support/ResourceHelper.java   |  371 +++++++
 .../apache/camel/support/RoutePolicySupport.java   |    3 -
 .../support/ScheduledBatchPollingConsumer.java     |  125 +++
 .../camel/support/ScheduledPollConsumer.java       |  507 +++++++++
 .../camel/support/ScheduledPollEndpoint.java       |  421 ++++++++
 .../support/ServiceCallExpressionSupport.java      |    5 +-
 .../org/apache/camel/support/ServiceHelper.java    |  467 ++++++++
 .../org/apache/camel/support/ServiceSupport.java   |    3 -
 .../apache/camel/support/SimpleUuidGenerator.java  |   34 +
 .../camel/support/TokenPairExpressionIterator.java |    2 +-
 .../camel/support/TokenXMLExpressionIterator.java  |    2 +-
 .../org/apache/camel/support/UnitOfWorkHelper.java |  150 +++
 .../camel/support/XMLTokenExpressionIterator.java  |    2 +-
 .../support/component/AbstractApiComponent.java    |  126 +++
 .../support/component/AbstractApiConsumer.java     |  114 ++
 .../support/component/AbstractApiEndpoint.java     |  303 ++++++
 .../support/component/AbstractApiProducer.java     |  196 ++++
 .../camel/support/component/ApiCollection.java     |   83 ++
 .../camel/support/component/ApiConsumerHelper.java |  149 +++
 .../apache/camel/support/component/ApiMethod.java  |   56 +
 .../camel/support/component/ApiMethodArg.java      |   60 +
 .../camel/support/component/ApiMethodHelper.java   |  522 +++++++++
 .../camel/support/component/ApiMethodImpl.java     |  121 +++
 .../camel/support/component/ApiMethodParser.java   |  360 ++++++
 .../component/ApiMethodPropertiesHelper.java       |  116 ++
 .../apache/camel/support/component/ApiName.java    |   29 +
 .../component/ArgumentSubstitutionParser.java      |  209 ++++
 .../support/component/PropertiesInterceptor.java   |   32 +
 .../component/PropertyNamesInterceptor.java        |   32 +
 .../camel/support/component/ResultInterceptor.java |   39 +
 .../camel/{util => support}/component/package.html |    0
 .../support/jndi/CamelInitialContextFactory.java   |   55 +
 .../jndi/CamelSingletonInitialContextFactory.java  |   51 +
 .../org/apache/camel/support/jndi/JndiContext.java |  434 ++++++++
 .../camel/{util => support}/jndi/package.html      |    0
 .../jsse/AliasedX509ExtendedKeyManager.java        |   81 ++
 .../support/jsse/BaseSSLContextParameters.java     | 1141 ++++++++++++++++++++
 .../camel/support/jsse/CipherSuitesParameters.java |   57 +
 .../camel/support/jsse/ClientAuthentication.java   |   36 +
 .../camel/support/jsse/FilterParameters.java       |  153 +++
 .../jsse/GlobalSSLContextParametersSupplier.java   |   25 +
 .../apache/camel/support/jsse/JsseParameters.java  |  194 ++++
 .../camel/support/jsse/KeyManagersParameters.java  |  209 ++++
 .../camel/support/jsse/KeyStoreParameters.java     |  207 ++++
 .../support/jsse/SSLContextClientParameters.java   |  113 ++
 .../camel/support/jsse/SSLContextParameters.java   |  428 ++++++++
 .../support/jsse/SSLContextServerParameters.java   |  192 ++++
 .../camel/support/jsse/SecureRandomParameters.java |  128 +++
 .../jsse/SecureSocketProtocolsParameters.java      |   57 +
 .../support/jsse/TrustManagersParameters.java      |  195 ++++
 .../camel/{util => support}/jsse/package.html      |    0
 .../camel/util/AsyncProcessorConverterHelper.java  |  178 ---
 .../apache/camel/util/AsyncProcessorHelper.java    |   68 --
 .../java/org/apache/camel/util/AttachmentMap.java  |  142 ---
 .../org/apache/camel/util/CamelContextHelper.java  |  796 --------------
 .../java/org/apache/camel/util/CamelLogger.java    |  264 -----
 .../apache/camel/util/CamelObjectInputStream.java  |   46 -
 .../org/apache/camel/util/CollectionHelper.java    |   19 +-
 .../org/apache/camel/util/CompoundIterator.java    |   64 --
 .../java/org/apache/camel/util/EndpointHelper.java |  493 ---------
 .../java/org/apache/camel/util/EventHelper.java    | 1102 -------------------
 .../java/org/apache/camel/util/ExchangeHelper.java |  940 ----------------
 .../apache/camel/util/ExpressionComparator.java    |   41 -
 .../camel/util/ExpressionListComparator.java       |   48 -
 .../camel/util/ExpressionToPredicateAdapter.java   |   71 --
 .../java/org/apache/camel/util/GZIPHelper.java     |  110 --
 .../java/org/apache/camel/util/GroupIterator.java  |  129 ---
 .../org/apache/camel/util/GroupTokenIterator.java  |  160 ---
 .../main/java/org/apache/camel/util/IOHelper.java  |   92 +-
 .../apache/camel/util/IntrospectionSupport.java    |  758 -------------
 .../java/org/apache/camel/util/KeyValueHolder.java |   32 +-
 .../main/java/org/apache/camel/util/LRUCache.java  |  281 -----
 .../org/apache/camel/util/LRUCacheFactory.java     |  220 ----
 .../java/org/apache/camel/util/LRUSoftCache.java   |   72 --
 .../java/org/apache/camel/util/LRUWeakCache.java   |   68 --
 .../apache/camel/util/LoadPropertiesException.java |   38 -
 .../java/org/apache/camel/util/MessageDump.java    |  144 ---
 .../java/org/apache/camel/util/MessageHelper.java  |  602 -----------
 .../java/org/apache/camel/util/ObjectHelper.java   |  728 +------------
 .../org/apache/camel/util/OrderedComparator.java   |   73 --
 .../java/org/apache/camel/util/PlatformHelper.java |   51 -
 .../apache/camel/util/PredicateAssertHelper.java   |   58 -
 .../camel/util/PredicateToExpressionAdapter.java   |   51 -
 .../org/apache/camel/util/ReferenceCounted.java    |   38 -
 .../org/apache/camel/util/ReflectionInjector.java  |   47 -
 .../java/org/apache/camel/util/ResolverHelper.java |  153 ---
 .../java/org/apache/camel/util/ResourceHelper.java |  368 -------
 .../main/java/org/apache/camel/util/Scanner.java   |   28 +-
 .../java/org/apache/camel/util/ServiceHelper.java  |  467 --------
 .../java/org/apache/camel/util/SkipIterator.java   |   10 +-
 .../java/org/apache/camel/util/StringHelper.java   |    6 +-
 .../src/main/java/org/apache/camel/util/Time.java  |   87 --
 .../org/apache/camel/util/UnitOfWorkHelper.java    |  150 ---
 .../java/org/apache/camel/util/ValueHolder.java    |   55 -
 .../org/apache/camel/util/WeakThreadLocal.java     |   51 -
 .../camel/util/component/AbstractApiComponent.java |  126 ---
 .../camel/util/component/AbstractApiConsumer.java  |  116 --
 .../camel/util/component/AbstractApiEndpoint.java  |  303 ------
 .../camel/util/component/AbstractApiProducer.java  |  197 ----
 .../apache/camel/util/component/ApiCollection.java |   83 --
 .../camel/util/component/ApiConsumerHelper.java    |  149 ---
 .../org/apache/camel/util/component/ApiMethod.java |   56 -
 .../apache/camel/util/component/ApiMethodArg.java  |   60 -
 .../camel/util/component/ApiMethodHelper.java      |  522 ---------
 .../apache/camel/util/component/ApiMethodImpl.java |  121 ---
 .../camel/util/component/ApiMethodParser.java      |  360 ------
 .../util/component/ApiMethodPropertiesHelper.java  |  116 --
 .../org/apache/camel/util/component/ApiName.java   |   29 -
 .../util/component/ArgumentSubstitutionParser.java |  209 ----
 .../util/component/PropertiesInterceptor.java      |   32 -
 .../util/component/PropertyNamesInterceptor.java   |   32 -
 .../camel/util/component/ResultInterceptor.java    |   39 -
 .../camel/util/concurrent/AtomicException.java     |   28 -
 .../camel/util/concurrent/AtomicExchange.java      |   30 -
 .../apache/camel/util/concurrent/Rejectable.java   |   29 +
 .../util/concurrent/RejectableFutureTask.java      |    2 -
 .../RejectableScheduledThreadPoolExecutor.java     |   12 +-
 .../concurrent/RejectableThreadPoolExecutor.java   |   12 +-
 .../util/concurrent/ThreadPoolRejectedPolicy.java  |  101 ++
 .../org/apache/camel/util/function/Predicates.java |    7 +-
 .../util/jndi/CamelInitialContextFactory.java      |   55 -
 .../jndi/CamelSingletonInitialContextFactory.java  |   51 -
 .../org/apache/camel/util/jndi/JndiContext.java    |  437 --------
 .../util/jsse/AliasedX509ExtendedKeyManager.java   |   81 --
 .../camel/util/jsse/BaseSSLContextParameters.java  | 1138 -------------------
 .../camel/util/jsse/CipherSuitesParameters.java    |   57 -
 .../camel/util/jsse/ClientAuthentication.java      |   36 -
 .../apache/camel/util/jsse/FilterParameters.java   |  153 ---
 .../jsse/GlobalSSLContextParametersSupplier.java   |   25 -
 .../org/apache/camel/util/jsse/JsseParameters.java |  194 ----
 .../camel/util/jsse/KeyManagersParameters.java     |  209 ----
 .../apache/camel/util/jsse/KeyStoreParameters.java |  207 ----
 .../util/jsse/SSLContextClientParameters.java      |  113 --
 .../camel/util/jsse/SSLContextParameters.java      |  428 --------
 .../util/jsse/SSLContextServerParameters.java      |  192 ----
 .../camel/util/jsse/SecureRandomParameters.java    |  128 ---
 .../util/jsse/SecureSocketProtocolsParameters.java |   57 -
 .../camel/util/jsse/TrustManagersParameters.java   |  195 ----
 .../camel/util/toolbox/AggregationStrategies.java  |  152 ---
 .../util/toolbox/FlexibleAggregationStrategy.java  |  438 --------
 .../util/toolbox/XsltAggregationStrategy.java      |  251 -----
 .../org/apache/camel/util/toolbox/package.html     |   27 -
 .../org/apache/camel/BodyAndHeaderConvertTest.java |    5 +-
 .../java/org/apache/camel/CamelExceptionsTest.java |    2 +-
 .../java/org/apache/camel/ContextTestSupport.java  |    2 +-
 .../java/org/apache/camel/ExchangeTestSupport.java |    2 +-
 .../org/apache/camel/InjectorDefaultsTest.java     |   14 -
 .../test/java/org/apache/camel/TestSupport.java    |    4 +-
 .../apache/camel/ThreadPoolRejectedPolicyTest.java |    2 +
 .../apache/camel/builder/ExchangeBuilderTest.java  |    2 +-
 .../camel/builder/ExpressionBuilderTest.java       |    2 +-
 .../apache/camel/builder/ExpressionClauseTest.java |    2 +-
 .../camel/builder/NotifyBuilderFromRouteTest.java  |    4 +-
 .../builder/PredicateBinaryCoerceTypeTest.java     |    2 +-
 .../builder/PredicateBuilderConcurrentTest.java    |    2 +-
 .../apache/camel/builder/PredicateBuilderTest.java |    2 +-
 .../apache/camel/builder/SimpleBuilderTest.java    |    2 +-
 .../camel/builder/ThreadPoolBuilderTest.java       |    2 +-
 .../apache/camel/builder/xml/XsltBuilderTest.java  |    5 +-
 .../camel/component/ComponentDiscoveryTest.java    |    2 +-
 .../apache/camel/component/bar/BarComponent.java   |    2 +-
 .../apache/camel/component/bar/BarEndpoint.java    |    2 +-
 .../apache/camel/component/bar/BarProducer.java    |    2 +-
 .../BeanExchangeAsReturnTypeNotAllowedTest.java    |    2 +-
 .../component/bean/BeanExcludedMethodTest.java     |    2 +-
 .../component/bean/BeanHandlerMethodTest.java      |    2 +-
 .../component/bean/BeanImplicitMethodTest.java     |    2 +-
 .../camel/component/bean/BeanInPipelineTest.java   |    2 +-
 .../bean/BeanInfoAMoreComplexOverloadedTest.java   |    4 +-
 .../component/bean/BeanInfoInheritanceTest.java    |    2 +-
 .../component/bean/BeanInfoOverloadedTest.java     |    4 +-
 .../bean/BeanInfoWithBridgedMethodTest.java        |    2 +-
 .../bean/BeanLookupUsingJndiRegistryIssueTest.java |    2 +-
 .../component/bean/BeanMethodWithExchangeTest.java |    4 +-
 .../camel/component/bean/BeanPipelineTest.java     |    2 +-
 .../bean/BeanReturnCallableReturnNullTest.java     |    2 +-
 .../component/bean/BeanReturnCallableTest.java     |    2 +-
 .../bean/BeanWithAnnotationAndExchangeTest.java    |    2 +-
 .../bean/BeanWithAnnotationInheritedTest.java      |    2 +-
 .../bean/BeanWithAttachmentAnnotationTest.java     |    4 +-
 .../BeanWithExchangeExceptionAnnotationTest.java   |    2 +-
 .../BeanWithExpressionInjectionPredicateTest.java  |    2 +-
 .../bean/BeanWithExpressionInjectionTest.java      |    2 +-
 .../camel/component/bean/BeanWithHeaderTest.java   |    2 +-
 .../bean/BeanWithHeadersAndBodyInject2Test.java    |    2 +-
 .../bean/BeanWithHeadersAndBodyInject3Test.java    |    2 +-
 .../bean/BeanWithHeadersAndBodyInjectionTest.java  |    2 +-
 .../component/bean/BeanWithMethodHeaderTest.java   |    2 +-
 ...thPropertiesAndHeadersAndBodyInjectionTest.java |    2 +-
 .../BeanWithPropertiesAndHeadersInjectionTest.java |    2 +-
 ...BeanWithXPathInjectionUsingHeaderValueTest.java |    2 +-
 .../BeanWithXPathInjectionUsingResultTypeTest.java |    2 +-
 .../BodyAnnotationToDisambiguateMethodsTest.java   |    2 +-
 ...ressionAnnotationToDisambiguateMethodsTest.java |    2 +-
 .../camel/component/bean/NewInstanceTest.java      |    2 +-
 .../camel/component/bean/PredicateAsBeanTest.java  |    2 +-
 .../camel/component/dataset/CustomDataSetTest.java |    2 +-
 .../directvm/AbstractDirectVmTestSupport.java      |    2 +-
 .../directvm/DirectVmConsumerExpressionTest.java   |    2 +-
 .../camel/component/file/BeanToFileTest.java       |    2 +-
 ...FileConsumerPollStrategyStopOnRollbackTest.java |    4 +-
 .../camel/component/log/LogListenerTest.java       |    2 +-
 .../apache/camel/component/log/LogMaskTest.java    |    2 +-
 .../component/rest/DummyRestConsumerFactory.java   |    2 +-
 .../rest/RestComponentVerifierExtensionTest.java   |    2 +-
 .../component/rest/RestComponentVerifierTest.java  |    2 +-
 .../camel/component/rest/RestEndpointTest.java     |    2 +-
 .../rest/RestProducerBindingProcessorTest.java     |    4 +-
 .../camel/component/rest/RestProducerTest.java     |    2 +-
 .../component/scheduler/SchedulerRouteTest.java    |    2 +-
 .../component/seda/SedaAsyncProducerTest.java      |    2 +-
 .../seda/SedaConsumerSuspendResumeTest.java        |    2 +-
 .../camel/component/test/TestEndpointTest.java     |    4 +-
 .../camel/component/timer/TimerAsyncTest.java      |    2 +-
 .../camel/component/timer/TimerRouteTest.java      |    2 +-
 .../ValidatorWithResourceResolverRouteTest.java    |    2 +-
 .../camel/component/vm/AbstractVmTestSupport.java  |    2 +-
 .../xslt/XsltCustomizeURIResolverTest.java         |    2 +-
 .../apache/camel/component/xslt/XsltDTDTest.java   |    2 +-
 .../component/xslt/XsltReferenceParameterTest.java |    4 +-
 .../apache/camel/converter/CamelConverterTest.java |    2 +-
 .../org/apache/camel/converter/ConverterTest.java  |    7 +-
 .../apache/camel/converter/EnumConverterTest.java  |    2 +-
 .../camel/converter/FutureConverterTest.java       |    2 +-
 .../apache/camel/converter/IOConverterTest.java    |    2 +-
 .../converter/InstanceFallbackConverterTest.java   |    2 +-
 .../java/org/apache/camel/converter/JaxpTest.java  |    3 +-
 .../converter/StaticFallbackConverterTest.java     |    2 +-
 .../apache/camel/converter/StringSourceTest.java   |    3 +-
 .../camel/converter/jaxp/StAX2SAXSourceTest.java   |    2 +-
 .../camel/converter/jaxp/StaxConverterTest.java    |    2 +-
 .../camel/converter/jaxp/XmlConverterTest.java     |    2 +-
 .../converter/stream/CachedOutputStreamTest.java   |    3 +-
 .../converter/stream/StreamCacheConverterTest.java |    2 +-
 .../converter/stream/StreamSourceCacheTest.java    |    2 +-
 .../CamelCustomDefaultThreadPoolProfileTest.java   |    2 +-
 .../camel/impl/CamelPostProcessorHelperTest.java   |    9 +-
 .../DefaultAsyncProcessorAwaitManagerTest.java     |    1 +
 .../DefaultCamelContextEndpointCacheLimitTest.java |   67 --
 .../impl/DefaultCamelContextEndpointCacheTest.java |   59 -
 .../impl/DefaultCamelContextResolverTest.java      |    1 +
 .../apache/camel/impl/DefaultCamelContextTest.java |    2 +-
 .../DefaultComponentReferencePropertiesTest.java   |    3 +
 .../apache/camel/impl/DefaultComponentTest.java    |    1 +
 .../camel/impl/DefaultConsumerTemplateTest.java    |    1 +
 .../org/apache/camel/impl/DefaultEndpointTest.java |   77 --
 .../camel/impl/DefaultExchangeHolderTest.java      |    1 +
 .../org/apache/camel/impl/DefaultExchangeTest.java |    5 +-
 .../impl/DefaultExecutorServiceManagerTest.java    |    2 +-
 .../impl/DefaultHeaderFilterStrategyTest.java      |    1 +
 .../camel/impl/DefaultInflightRepositoryTest.java  |    1 +
 .../camel/impl/DefaultMessageHeaderTest.java       |    2 +
 .../org/apache/camel/impl/DefaultMessageTest.java  |   39 -
 .../camel/impl/DefaultProducerCacheTest.java       |    3 +
 .../impl/DefaultProducerTemplateAsyncTest.java     |    1 +
 .../apache/camel/impl/DefaultUnitOfWorkTest.java   |    2 +
 .../camel/impl/EndpointShutdownOnceTest.java       |    2 +
 .../EventDrivenPollingConsumerQueueSizeTest.java   |    6 +-
 .../apache/camel/impl/ExpressionAdapterTest.java   |    1 +
 .../apache/camel/impl/ExpressionSupportTest.java   |    1 +
 .../impl/HeaderFilterStrategyComponentTest.java    |    1 +
 .../org/apache/camel/impl/JndiRegistryTest.java    |    4 +-
 .../impl/LifecycleStrategyFailOnStartupTest.java   |    2 +-
 .../camel/impl/LifecycleStrategyServiceTest.java   |    2 +-
 .../LimitedPollingConsumerPollStrategyTest.java    |    2 +-
 .../org/apache/camel/impl/MessageSupportTest.java  |    3 +
 .../camel/impl/Mock321ScheduledPollConsumer.java   |    1 +
 .../camel/impl/MockScheduledPollConsumer.java      |    2 +
 .../camel/impl/MultipleConsumersSupportTest.java   |    2 +
 .../camel/impl/MultipleLifecycleStrategyTest.java  |    2 +-
 .../camel/impl/ProducerCacheNonSingletonTest.java  |    3 +
 .../java/org/apache/camel/impl/RegistryTest.java   |    2 +-
 ...edPollEndpointConfigureConsumerRestartTest.java |    3 +
 .../apache/camel/impl/SimpleUuidGeneratorTest.java |    1 +
 .../org/apache/camel/impl/ZipDataFormatTest.java   |    1 +
 .../impl/transformer/TransformerRouteTest.java     |    8 +-
 .../camel/impl/validator/ValidatorRouteTest.java   |    8 +-
 .../apache/camel/issues/Camel4857UriIssueTest.java |    4 +-
 .../camel/issues/ComponentUseRawUriTest.java       |    4 +-
 .../issues/EndpointWithRawUriParameterTest.java    |    6 +-
 .../MessageWithAttachmentRedeliveryIssueTest.java  |    2 +-
 ...etryRouteScopedUntilRecipientListIssueTest.java |    4 +-
 .../issues/SentExchangeEventNotifierIssueTest.java |    2 +-
 .../SentExchangeEventNotifierTwoIssueTest.java     |    2 +-
 ...ThreadsRejectedExecutionWithDeadLetterTest.java |    2 +-
 .../apache/camel/language/simple/SimpleTest.java   |    2 +-
 .../language/simple/SimpleWithPropertiesTest.java  |    2 +-
 .../DualManagedThreadPoolProfileTest.java          |    2 +-
 .../JmxInstrumentationCustomMBeanTest.java         |    2 +-
 .../camel/management/ManagedComponentTest.java     |    2 +-
 .../management/ManagedRouteAddFromRouteTest.java   |    2 +-
 .../management/ManagedThreadPoolProfileTest.java   |    2 +-
 .../apache/camel/model/ModelSanityCheckerTest.java |    2 +-
 .../BeanOgnMethodWithXPathInjectionTest.java       |    2 +-
 .../BeanProcessorSpecializedMessageTest.java       |    2 +-
 .../BeanRecipientListInterfaceAnnotationTest.java  |    2 +-
 .../camel/processor/BeanRecipientListTest.java     |    2 +-
 .../processor/BeanRecipientListTimeoutTest.java    |    2 +-
 .../org/apache/camel/processor/BeanRouteTest.java  |    2 +-
 .../camel/processor/BeanWithExceptionTest.java     |    2 +-
 .../processor/BeanWithXPathInjectionTest.java      |    2 +-
 ...tConsumerBridgeErrorHandlerOnExceptionTest.java |    6 +-
 .../DefaultConsumerBridgeErrorHandlerTest.java     |    6 +-
 .../processor/DefaultExchangeFormatterTest.java    |    4 +-
 ...cheduledPollConsumerBridgeErrorHandlerTest.java |    6 +-
 .../apache/camel/processor/DynamicRouter4Test.java |    2 +-
 ...point2MustBeStartedBeforeSendProcessorTest.java |    6 +-
 ...dpointMustBeStartedBeforeSendProcessorTest.java |    6 +-
 .../apache/camel/processor/LogEipListenerTest.java |    2 +-
 .../org/apache/camel/processor/LogEipMaskTest.java |    2 +-
 .../MulticastKeepOriginalMessageUnchangedTest.java |    2 +-
 .../MulticastParallelFailureEndpointTest.java      |    2 +-
 .../org/apache/camel/processor/NormalizerTest.java |    2 +-
 ...StacksNeededDuringRoutingSendProcessorTest.java |    4 +-
 .../camel/processor/SetBodyProcessorTest.java      |    2 +-
 .../org/apache/camel/processor/SimulatorTest.java  |    2 +-
 .../apache/camel/processor/SortExpressionTest.java |    2 +-
 .../apache/camel/processor/SplitterPojoTest.java   |    2 +-
 ...litterUseOriginalNotPropagateExceptionTest.java |    2 +-
 .../camel/processor/StreamResequencerTest.java     |    2 +-
 .../camel/processor/ThreadsInvalidConfigTest.java  |    2 +-
 .../processor/ThreadsRejectedExecutionTest.java    |    2 +-
 .../camel/processor/ThreadsRejectedPolicyTest.java |    2 +-
 .../camel/processor/ThroughPutLoggerTest.java      |    4 +-
 .../camel/processor/UnmarshalProcessorTest.java    |    2 +-
 .../camel/processor/WireTapOnExceptionTest.java    |    4 +-
 .../aggregator/AbstractDistributedTest.java        |    2 +-
 .../AggregateGroupedExchangeBackwardsCompTest.java |    3 +-
 ...roupedExchangeCompletionExpressionSizeTest.java |    2 +-
 .../aggregator/AggregateProcessorTest.java         |    3 +-
 ...egateProcessorTimeoutCompletionRestartTest.java |    3 +-
 .../aggregator/AggregateThreadPoolProfileTest.java |    2 +-
 ...ggregationStrategyBeanAdapterAllowNullTest.java |    2 +-
 ...tionStrategyBeanAdapterNonStaticMethodTest.java |    2 +-
 ...ggregationStrategyBeanAdapterOneMethodTest.java |    2 +-
 ...gregationStrategyBeanAdapterPollEnrichTest.java |    2 +-
 ...egationStrategyBeanAdapterStaticMethodTest.java |    2 +-
 .../AggregationStrategyBeanAdapterTest.java        |    2 +-
 ...egyBeanAdapterWithHeadersAndPropertiesTest.java |    2 +-
 ...regationStrategyBeanAdapterWithHeadersTest.java |    2 +-
 .../processor/async/AsyncEndpointPolicyTest.java   |    4 +-
 ...syncEndpointRoutingSlipBeanNonBlockingTest.java |    4 +-
 ...sorAwaitManagerInterruptWithRedeliveryTest.java |    2 +-
 .../camel/processor/async/MyAsyncComponent.java    |    2 +-
 .../camel/processor/async/MyAsyncEndpoint.java     |    2 +-
 .../camel/processor/async/MyAsyncProducer.java     |    2 +-
 .../processor/enricher/PollEnricherRefTest.java    |    2 +-
 .../OnExceptionWrappedExceptionTest.java           |    2 +-
 .../RoutingSlipDataModificationTest.java           |    2 +-
 .../routingslip/RoutingSlipWithExceptionTest.java  |    2 +-
 .../DefaultValidationErrorHandlerTest.java         |    2 +-
 .../DefaultCamelContextEndpointCacheLimitTest.java |   67 ++
 .../DefaultCamelContextEndpointCacheTest.java      |   59 +
 .../apache/camel/support/DefaultEndpointTest.java  |   77 ++
 .../apache/camel/support/DefaultMessageTest.java   |   40 +
 .../camel/support/GroupTokenIteratorTest.java      |  113 ++
 .../camel/support/IntrospectionSupportTest.java    |  476 ++++++++
 .../support/component/ApiMethodHelperTest.java     |  228 ++++
 .../component/ApiMethodPropertiesHelperTest.java   |  135 +++
 .../component/ArgumentSubstitutionParserTest.java  |  101 ++
 .../apache/camel/support/component/TestProxy.java  |  104 ++
 .../org/apache/camel/support/jndi/ExampleBean.java |   51 +
 ...ndiCamelSingletonInitialContextFactoryTest.java |   83 ++
 .../org/apache/camel/support/jndi/JndiTest.java    |   74 ++
 .../support/jsse/AbstractJsseParametersTest.java   |  118 ++
 .../camel/support/jsse/FilterParametersTest.java   |  119 ++
 .../support/jsse/KeyManagersParametersTest.java    |  159 +++
 .../camel/support/jsse/KeyStoreParametersTest.java |  164 +++
 .../support/jsse/SSLContextParametersTest.java     |  848 +++++++++++++++
 .../support/jsse/SecureRandomParametersTest.java   |   99 ++
 .../support/jsse/TrustManagersParametersTest.java  |  142 +++
 .../apache/camel/util/CamelContextHelperTest.java  |    1 +
 .../apache/camel/util/CollectionHelperTest.java    |   17 +-
 .../org/apache/camel/util/EndpointHelperTest.java  |    1 +
 .../org/apache/camel/util/ExchangeHelperTest.java  |    3 +-
 .../camel/util/ExpressionListComparatorTest.java   |    3 +-
 .../java/org/apache/camel/util/GZIPHelperTest.java |    3 +-
 .../apache/camel/util/GroupTokenIteratorTest.java  |  112 --
 .../java/org/apache/camel/util/IOHelperTest.java   |    9 +-
 .../camel/util/IntrospectionSupportTest.java       |  474 --------
 .../java/org/apache/camel/util/LRUCacheTest.java   |    1 +
 .../org/apache/camel/util/LRUSoftCacheTest.java    |    1 +
 .../org/apache/camel/util/MessageHelperTest.java   |    6 +-
 .../org/apache/camel/util/ObjectHelperTest.java    |  274 ++---
 .../apache/camel/util/OrderedComparatorTest.java   |    1 +
 .../org/apache/camel/util/PlatformHelperTest.java  |    2 +-
 .../camel/util/PredicateAssertHelperTest.java      |    3 +-
 .../org/apache/camel/util/ReflectionInjector.java  |   37 +
 .../org/apache/camel/util/ResourceHelperTest.java  |    1 +
 .../test/java/org/apache/camel/util/TimeTest.java  |   21 +-
 .../camel/util/component/ApiMethodHelperTest.java  |  228 ----
 .../component/ApiMethodPropertiesHelperTest.java   |  135 ---
 .../component/ArgumentSubstitutionParserTest.java  |  101 --
 .../org/apache/camel/util/component/TestProxy.java |  104 --
 .../org/apache/camel/util/jndi/ExampleBean.java    |   51 -
 ...ndiCamelSingletonInitialContextFactoryTest.java |   83 --
 .../java/org/apache/camel/util/jndi/JndiTest.java  |   74 --
 .../util/jsse/AbstractJsseParametersTest.java      |  118 --
 .../camel/util/jsse/FilterParametersTest.java      |  119 --
 .../camel/util/jsse/KeyManagersParametersTest.java |  159 ---
 .../camel/util/jsse/KeyStoreParametersTest.java    |  164 ---
 .../camel/util/jsse/SSLContextParametersTest.java  |  848 ---------------
 .../util/jsse/SecureRandomParametersTest.java      |   99 --
 .../util/jsse/TrustManagersParametersTest.java     |  142 ---
 .../toolbox/FlexibleAggregationStrategiesTest.java |    6 +-
 .../src/test/resources/jndi-example.properties     |    4 +-
 .../camel/{util => support}/jsse/localhost.ks      |  Bin
 .../org/apache/camel/support/jsse/test.properties  |   28 +
 .../org/apache/camel/util/jsse/test.properties     |   28 -
 .../src/main/docs/ahc-ws-component.adoc            |    6 +-
 .../apache/camel/component/ahc/ws/WsConsumer.java  |    2 +-
 .../apache/camel/component/ahc/ws/WsProducer.java  |    2 +-
 .../camel/component/ahc/ws/WssProducerTest.java    |   12 +-
 .../camel-ahc/src/main/docs/ahc-component.adoc     |    6 +-
 .../apache/camel/component/ahc/AhcComponent.java   |    8 +-
 .../apache/camel/component/ahc/AhcEndpoint.java    |    6 +-
 .../apache/camel/component/ahc/AhcProducer.java    |    2 +-
 .../camel/component/ahc/DefaultAhcBinding.java     |    8 +-
 ...ponentClientConfigSslContextParametersTest.java |    2 +-
 .../apache/camel/component/ahc/BaseAhcTest.java    |   12 +-
 .../ahc/HttpHeaderFilterStrategyTest.java          |    2 +-
 .../camel-apns/src/main/docs/apns-component.adoc   |    2 +-
 .../apache/camel/component/apns/ApnsComponent.java |    2 +-
 .../apache/camel/component/apns/ApnsConsumer.java  |    2 +-
 .../apache/camel/component/apns/ApnsEndpoint.java  |    4 +-
 .../apache/camel/component/apns/ApnsProducer.java  |    2 +-
 .../component/apns/factory/ApnsServiceFactory.java |    9 +-
 .../factory/ConfiguredApnsServiceFactoryTest.java  |    2 +-
 .../camel/component/apns/util/ApnsUtils.java       |    8 +-
 .../apache/camel/component/as2/AS2Component.java   |    2 +-
 .../apache/camel/component/as2/AS2Consumer.java    |    8 +-
 .../apache/camel/component/as2/AS2Endpoint.java    |    6 +-
 .../apache/camel/component/as2/AS2Producer.java    |    2 +-
 .../as2/internal/AS2PropertiesHelper.java          |    2 +-
 .../component/as2/AbstractAS2TestSupport.java      |    2 +-
 .../camel/dataformat/asn1/ASN1MessageIterator.java |    2 +-
 .../component/asterisk/AsteriskComponent.java      |    2 +-
 .../camel/component/asterisk/AsteriskConsumer.java |    2 +-
 .../camel/component/asterisk/AsteriskEndpoint.java |    2 +-
 .../camel/component/asterisk/AsteriskProducer.java |    2 +-
 .../camel/component/atmos/AtmosComponent.java      |    2 +-
 .../camel/component/atmos/AtmosEndpoint.java       |    2 +-
 .../consumer/AtmosScheduledPollConsumer.java       |    4 +-
 .../atmos/integration/producer/AtmosProducer.java  |    2 +-
 .../atmosphere/websocket/WebsocketProducer.java    |    2 +-
 .../apache/camel/component/atom/AtomProducer.java  |    2 +-
 .../apache/camel/component/feed/FeedComponent.java |    3 +-
 .../apache/camel/component/feed/FeedEndpoint.java  |    2 +-
 .../camel/component/feed/FeedPollingConsumer.java  |    2 +-
 .../atom/AtomEntryPollingConsumerTest.java         |    2 +-
 .../camel/component/atom/AtomEntrySortTest.java    |    2 +-
 .../client/AbstractAtomixClientComponent.java      |    6 +-
 .../client/AbstractAtomixClientConsumer.java       |    2 +-
 .../client/AbstractAtomixClientEndpoint.java       |    2 +-
 .../client/AbstractAtomixClientProducer.java       |    6 +-
 .../atomix/client/AtomixClientHelper.java          |    2 +-
 .../atomix/cluster/AtomixClusterHelper.java        |    2 +-
 .../apache/camel/component/avro/AvroComponent.java |    2 +-
 .../apache/camel/component/avro/AvroConsumer.java  |    2 +-
 .../apache/camel/component/avro/AvroEndpoint.java  |    2 +-
 .../apache/camel/component/avro/AvroListener.java  |    2 +-
 .../apache/camel/component/avro/AvroProducer.java  |    2 +-
 .../camel/component/aws/xray/XRayTracer.java       |    5 +-
 .../aws/xray/component/TestXRayComponent.java      |    2 +-
 .../aws/xray/component/TestXRayEndpoint.java       |    2 +-
 .../aws/xray/component/TestXRayProducer.java       |    2 +-
 .../apache/camel/component/aws/cw/CwComponent.java |    2 +-
 .../apache/camel/component/aws/cw/CwEndpoint.java  |    2 +-
 .../apache/camel/component/aws/cw/CwProducer.java  |    2 +-
 .../camel/component/aws/ddb/DdbComponent.java      |    2 +-
 .../camel/component/aws/ddb/DdbEndpoint.java       |    2 +-
 .../camel/component/aws/ddb/DdbProducer.java       |    2 +-
 .../aws/ddbstream/DdbStreamComponent.java          |    2 +-
 .../component/aws/ddbstream/DdbStreamConsumer.java |    2 +-
 .../component/aws/ddbstream/DdbStreamEndpoint.java |    2 +-
 .../camel/component/aws/ec2/EC2Component.java      |    2 +-
 .../camel/component/aws/ec2/EC2Endpoint.java       |    2 +-
 .../camel/component/aws/ec2/EC2Producer.java       |    2 +-
 .../aws/firehose/KinesisFirehoseComponent.java     |    2 +-
 .../aws/firehose/KinesisFirehoseEndpoint.java      |    2 +-
 .../aws/firehose/KinesisFirehoseProducer.java      |    2 +-
 .../camel/component/aws/iam/IAMComponent.java      |    2 +-
 .../camel/component/aws/iam/IAMEndpoint.java       |    2 +-
 .../camel/component/aws/iam/IAMProducer.java       |    2 +-
 .../component/aws/kinesis/KinesisComponent.java    |    2 +-
 .../component/aws/kinesis/KinesisConsumer.java     |    2 +-
 .../component/aws/kinesis/KinesisEndpoint.java     |    2 +-
 .../component/aws/kinesis/KinesisProducer.java     |    2 +-
 .../camel/component/aws/kms/KMSComponent.java      |    2 +-
 .../camel/component/aws/kms/KMSEndpoint.java       |    2 +-
 .../camel/component/aws/kms/KMSProducer.java       |    2 +-
 .../component/aws/lambda/LambdaComponent.java      |    2 +-
 .../camel/component/aws/lambda/LambdaEndpoint.java |    2 +-
 .../camel/component/aws/lambda/LambdaProducer.java |    2 +-
 .../apache/camel/component/aws/mq/MQComponent.java |    2 +-
 .../apache/camel/component/aws/mq/MQEndpoint.java  |    2 +-
 .../apache/camel/component/aws/mq/MQProducer.java  |    2 +-
 .../apache/camel/component/aws/s3/S3Component.java |    2 +-
 .../apache/camel/component/aws/s3/S3Consumer.java  |    2 +-
 .../apache/camel/component/aws/s3/S3Endpoint.java  |    2 +-
 .../apache/camel/component/aws/s3/S3Producer.java  |    2 +-
 .../camel/component/aws/sdb/SdbComponent.java      |    2 +-
 .../camel/component/aws/sdb/SdbEndpoint.java       |    2 +-
 .../camel/component/aws/sdb/SdbProducer.java       |    2 +-
 .../camel/component/aws/ses/SesComponent.java      |    2 +-
 .../camel/component/aws/ses/SesEndpoint.java       |    2 +-
 .../camel/component/aws/ses/SesProducer.java       |    2 +-
 .../camel/component/aws/sns/SnsComponent.java      |    2 +-
 .../camel/component/aws/sns/SnsEndpoint.java       |    2 +-
 .../camel/component/aws/sns/SnsProducer.java       |    2 +-
 .../camel/component/aws/sqs/SqsComponent.java      |    2 +-
 .../camel/component/aws/sqs/SqsConsumer.java       |    2 +-
 .../camel/component/aws/sqs/SqsEndpoint.java       |    4 +-
 .../camel/component/aws/sqs/SqsProducer.java       |    2 +-
 .../component/aws/swf/SWFActivityConsumer.java     |    2 +-
 .../component/aws/swf/SWFActivityProducer.java     |    2 +-
 .../camel/component/aws/swf/SWFComponent.java      |    4 +-
 .../camel/component/aws/swf/SWFEndpoint.java       |    6 +-
 .../component/aws/swf/SWFWorkflowConsumer.java     |    2 +-
 .../component/aws/swf/SWFWorkflowProducer.java     |    4 +-
 .../component/aws/common/AwsExchangeUtilTest.java  |    2 +-
 .../aws/ddb/BatchGetItemsCommandTest.java          |    2 +-
 .../component/aws/ddb/DeleteItemCommandTest.java   |    2 +-
 .../component/aws/ddb/DeleteTableCommandTest.java  |    2 +-
 .../aws/ddb/DescribeTableCommandTest.java          |    2 +-
 .../component/aws/ddb/GetItemCommandTest.java      |    2 +-
 .../component/aws/ddb/PutItemCommandTest.java      |    2 +-
 .../camel/component/aws/ddb/QueryCommandTest.java  |    2 +-
 .../camel/component/aws/ddb/ScanCommandTest.java   |    2 +-
 .../component/aws/ddb/UpdateItemCommandTest.java   |    2 +-
 .../component/aws/ddb/UpdateTableCommandTest.java  |    2 +-
 .../component/aws/sdb/AbstractSdbCommandTest.java  |    2 +-
 .../aws/sdb/BatchDeleteAttributesCommandTest.java  |    2 +-
 .../aws/sdb/BatchPutAttributesCommandTest.java     |    2 +-
 .../aws/sdb/DeleteAttributesCommandTest.java       |    2 +-
 .../component/aws/sdb/DeleteDomainCommandTest.java |    2 +-
 .../aws/sdb/DomainMetadataCommandTest.java         |    2 +-
 .../aws/sdb/GetAttributesCommandTest.java          |    2 +-
 .../component/aws/sdb/ListDomainsCommandTest.java  |    2 +-
 .../aws/sdb/PutAttributesCommandTest.java          |    2 +-
 .../camel/component/aws/sdb/SelectCommandTest.java |    2 +-
 .../component/azure/blob/BlobServiceComponent.java |    2 +-
 .../component/azure/blob/BlobServiceConsumer.java  |    2 +-
 .../component/azure/blob/BlobServiceEndpoint.java  |    2 +-
 .../component/azure/blob/BlobServiceProducer.java  |    2 +-
 .../azure/queue/QueueServiceComponent.java         |    2 +-
 .../azure/queue/QueueServiceConsumer.java          |    2 +-
 .../azure/queue/QueueServiceEndpoint.java          |    2 +-
 .../azure/queue/QueueServiceProducer.java          |    2 +-
 .../azure/queue/QueueServiceProducerTest.java      |    2 +-
 .../dataformat/barcode/BarcodeDataFormat.java      |    2 +-
 .../camel/dataformat/base64/Base64DataFormat.java  |    2 +-
 .../bean/validator/BeanValidatorComponent.java     |    2 +-
 .../bean/validator/BeanValidatorEndpoint.java      |    4 +-
 .../bean/validator/BeanValidatorProducer.java      |    2 +-
 .../camel/dataformat/beanio/BeanIODataFormat.java  |   12 +-
 .../camel/dataformat/beanio/BeanIOSplitter.java    |    5 +-
 .../component/beanstalk/BeanstalkComponent.java    |    2 +-
 .../component/beanstalk/BeanstalkConsumer.java     |    2 +-
 .../component/beanstalk/BeanstalkEndpoint.java     |    2 +-
 .../beanstalk/BeanstalkExchangeHelper.java         |    2 +-
 .../component/beanstalk/BeanstalkProducer.java     |    2 +-
 .../beanstalk/processors/DefaultCommand.java       |    2 +-
 .../beanstalk/processors/TouchCommand.java         |    2 +-
 .../dataformat/bindy/BindyAbstractFactory.java     |    4 +-
 .../camel/dataformat/bindy/BindyCsvFactory.java    |   14 +-
 .../dataformat/bindy/BindyFixedLengthFactory.java  |    4 +-
 .../dataformat/bindy/csv/BindyCsvDataFormat.java   |   15 +-
 .../bindy/fixed/BindyFixedLengthDataFormat.java    |   18 +-
 .../bindy/kvp/BindyKeyValuePairDataFormat.java     |   14 +-
 .../camel/blueprint/BlueprintCamelContext.java     |    2 +-
 .../blueprint/BlueprintComponentResolver.java      |    2 +-
 .../camel/blueprint/BlueprintPropertiesParser.java |    2 +-
 .../camel/blueprint/CamelProxyFactoryBean.java     |    2 +-
 .../blueprint/handler/CamelNamespaceHandler.java   |   16 +-
 .../camel/component/bonita/BonitaComponent.java    |    2 +-
 .../camel/component/bonita/BonitaEndpoint.java     |    2 +-
 .../component/bonita/producer/BonitaProducer.java  |    2 +-
 .../camel/component/boon/BoonDataFormat.java       |    5 +-
 .../apache/camel/component/box/BoxComponent.java   |    2 +-
 .../camel/component/box/BoxConfiguration.java      |    2 +-
 .../apache/camel/component/box/BoxConsumer.java    |   12 +-
 .../apache/camel/component/box/BoxEndpoint.java    |    6 +-
 .../apache/camel/component/box/BoxProducer.java    |    2 +-
 .../box/internal/BoxConnectionHelper.java          |    7 +-
 .../box/internal/BoxPropertiesHelper.java          |    2 +-
 .../component/box/AbstractBoxTestSupport.java      |    2 +-
 .../component/braintree/BraintreeComponent.java    |    2 +-
 .../component/braintree/BraintreeConsumer.java     |    2 +-
 .../component/braintree/BraintreeEndpoint.java     |    6 +-
 .../component/braintree/BraintreeProducer.java     |    2 +-
 .../internal/BraintreePropertiesHelper.java        |    2 +-
 .../braintree/AbstractBraintreeTestSupport.java    |    4 +-
 .../caffeine/cache/CaffeineCacheComponent.java     |    2 +-
 .../caffeine/cache/CaffeineCacheEndpoint.java      |    2 +-
 .../caffeine/load/CaffeineLoadCacheComponent.java  |    2 +-
 .../caffeine/load/CaffeineLoadCacheEndpoint.java   |    2 +-
 .../aggregate/CaffeineAggregationRepository.java   |    2 +-
 ...CaffeineAggregationRepositoryOperationTest.java |    2 +-
 .../component/cassandra/CassandraComponent.java    |    4 +-
 .../component/cassandra/CassandraConsumer.java     |    2 +-
 .../component/cassandra/CassandraEndpoint.java     |    4 +-
 .../component/cassandra/CassandraProducer.java     |    4 +-
 .../aggregate/cassandra/CassandraCamelCodec.java   |    2 +-
 .../CassandraAggregationRepositoryTest.java        |    2 +-
 .../NamedCassandraAggregationRepositoryTest.java   |    2 +-
 .../org/apache/camel/cdi/CamelContextProducer.java |    2 +-
 .../org/apache/camel/cdi/CdiCamelInjector.java     |    5 -
 .../org/apache/camel/cdi/CdiEventComponent.java    |    2 +-
 .../org/apache/camel/cdi/CdiEventConsumer.java     |    2 +-
 .../org/apache/camel/cdi/CdiEventEndpoint.java     |    2 +-
 .../org/apache/camel/cdi/CdiEventProducer.java     |    2 +-
 .../org/apache/camel/cdi/XmlProxyFactoryBean.java  |    2 +-
 .../apache/camel/cdi/XmlServiceExporterBean.java   |    4 +-
 .../transaction/JtaTransactionErrorHandler.java    |    2 +-
 .../JtaTransactionErrorHandlerBuilder.java         |    2 +-
 .../cdi/transaction/JtaTransactionPolicy.java      |    3 +-
 .../cdi/transaction/TransactionErrorHandler.java   |    4 +-
 .../cdi/bean/CustomLifecycleCamelContext.java      |    6 +-
 .../camel/cdi/expression/ExchangeExpression.java   |    2 +-
 .../chronicle/engine/ChronicleEngineComponent.java |    2 +-
 .../chronicle/engine/ChronicleEngineConsumer.java  |    2 +-
 .../chronicle/engine/ChronicleEngineEndpoint.java  |    2 +-
 .../camel/component/chunk/ChunkComponent.java      |    2 +-
 .../camel/component/chunk/ChunkEndpoint.java       |    2 +-
 .../org/apache/camel/component/cm/CMComponent.java |    2 +-
 .../org/apache/camel/component/cm/CMEndpoint.java  |    2 +-
 .../org/apache/camel/component/cm/CMProducer.java  |    2 +-
 .../apache/camel/component/cmis/CMISComponent.java |    2 +-
 .../apache/camel/component/cmis/CMISConsumer.java  |    2 +-
 .../apache/camel/component/cmis/CMISEndpoint.java  |    2 +-
 .../apache/camel/component/cmis/CMISProducer.java  |    6 +-
 .../camel/component/cmis/CMISQueryProducer.java    |    2 +-
 .../cmis/DefaultCMISSessionFacadeFactory.java      |    2 +-
 .../camel/component/cmis/CMISTestSupport.java      |    2 +-
 .../java/org/apache/camel/coap/CoAPComponent.java  |    2 +-
 .../java/org/apache/camel/coap/CoAPConsumer.java   |    2 +-
 .../java/org/apache/camel/coap/CoAPEndpoint.java   |    2 +-
 .../java/org/apache/camel/coap/CoAPProducer.java   |    2 +-
 .../src/main/docs/cometd-component.adoc            |    2 +-
 .../camel/component/cometd/CometdBinding.java      |    2 +-
 .../camel/component/cometd/CometdComponent.java    |    4 +-
 .../camel/component/cometd/CometdConsumer.java     |    4 +-
 .../camel/component/cometd/CometdEndpoint.java     |    2 +-
 .../camel/component/cometd/CometdProducer.java     |    2 +-
 ...CometdProducerConsumerInOutInteractiveMain.java |    2 +-
 ...ontextParametersCometdProducerConsumerTest.java |    8 +-
 ...tParametersInUriCometdProducerConsumerTest.java |    8 +-
 ...ontextParametersCometdProducerConsumerTest.java |    8 +-
 .../src/main/docs/consul-component.adoc            |    6 +-
 .../consul/ConsulClientConfiguration.java          |    4 +-
 .../camel/component/consul/ConsulComponent.java    |    6 +-
 .../camel/component/consul/ConsulEndpoint.java     |    2 +-
 .../consul/cloud/ConsulServiceDiscovery.java       |    3 +-
 .../cloud/ConsulServiceDiscoveryFactory.java       |    2 +-
 .../consul/cloud/ConsulServiceRegistry.java        |    2 +-
 .../consul/cluster/ConsulClusterService.java       |    2 +-
 .../consul/endpoint/AbstractConsulConsumer.java    |    2 +-
 .../consul/health/ConsulHealthCheckRepository.java |    3 +-
 .../camel/core/osgi/OsgiComponentResolver.java     |    6 +-
 .../camel/core/osgi/OsgiDataFormatResolver.java    |    6 +-
 .../camel/core/osgi/OsgiDefaultCamelContext.java   |    2 +-
 .../camel/core/osgi/OsgiLanguageResolver.java      |    8 +-
 .../camel/core/osgi/OsgiServiceRegistry.java       |    6 +-
 .../apache/camel/core/osgi/OsgiTypeConverter.java  |    2 +-
 .../camel/core/osgi/utils/BundleContextUtils.java  |    4 +-
 .../AbstractCamelConsumerTemplateFactoryBean.java  |    2 +-
 .../core/xml/AbstractCamelContextFactoryBean.java  |   21 +-
 ...ractCamelFluentProducerTemplateFactoryBean.java |    2 +-
 .../AbstractCamelProducerTemplateFactoryBean.java  |    2 +-
 .../AbstractCamelRedeliveryPolicyFactoryBean.java  |    2 +-
 .../xml/AbstractCamelThreadPoolFactoryBean.java    |    4 +-
 ...bstractBaseSSLContextParametersFactoryBean.java |    8 +-
 .../AbstractKeyManagersParametersFactoryBean.java  |    2 +-
 .../AbstractKeyStoreParametersFactoryBean.java     |    2 +-
 ...tractSSLContextClientParametersFactoryBean.java |    2 +-
 .../AbstractSSLContextParametersFactoryBean.java   |    2 +-
 ...tractSSLContextServerParametersFactoryBean.java |    2 +-
 .../AbstractSecureRandomParametersFactoryBean.java |    2 +-
 ...AbstractTrustManagersParametersFactoryBean.java |    4 +-
 .../xml/AbstractCamelContextFactoryBeanTest.java   |   14 +-
 .../component/couchbase/CouchbaseComponent.java    |    2 +-
 .../component/couchbase/CouchbaseConsumer.java     |    2 +-
 .../component/couchbase/CouchbaseEndpoint.java     |    2 +-
 .../component/couchbase/CouchbaseProducer.java     |    2 +-
 .../camel/component/couchdb/CouchDbComponent.java  |    2 +-
 .../camel/component/couchdb/CouchDbConsumer.java   |    2 +-
 .../camel/component/couchdb/CouchDbEndpoint.java   |    2 +-
 .../camel/component/couchdb/CouchDbProducer.java   |    2 +-
 .../src/main/docs/crypto-cms-component.adoc        |   10 +-
 .../component/crypto/cms/CryptoCmsComponent.java   |    2 +-
 .../component/crypto/cms/CryptoCmsEndpoint.java    |    2 +-
 .../component/crypto/cms/CryptoCmsProducer.java    |    2 +-
 .../cms/common/DefaultCryptoCmsConfiguration.java  |    2 +-
 ...DefaultEnvelopedDataDecryptorConfiguration.java |    2 +-
 .../camel/component/crypto/cms/ComponentTest.java  |    2 +-
 .../component/crypto/cms/EnvelopedDataTest.java    |    2 +-
 .../camel/component/crypto/cms/ProcessorsTest.java |    4 +-
 .../camel/component/crypto/cms/SignedDataTest.java |    2 +-
 .../component/crypto/cms/util/ExchangeUtil.java    |    4 +-
 .../component/crypto/cms/util/KeystoreUtil.java    |    2 +-
 .../util/TestOriginatorInformationProvider.java    |    2 +-
 .../crypto/DigitalSignatureComponent.java          |    2 +-
 .../crypto/DigitalSignatureConfiguration.java      |    2 +-
 .../component/crypto/DigitalSignatureEndpoint.java |    2 +-
 .../component/crypto/DigitalSignatureProducer.java |    2 +-
 .../processor/DigitalSignatureProcessor.java       |    2 +-
 .../crypto/processor/VerifyingProcessor.java       |    2 +-
 .../camel/converter/crypto/CryptoDataFormat.java   |    2 +-
 .../camel/converter/crypto/PGPDataFormatUtil.java  |    2 +-
 .../converter/crypto/PGPKeyAccessDataFormat.java   |    2 +-
 .../camel/component/crypto/SignatureTests.java     |    2 +-
 .../apache/camel/dataformat/csv/CsvMarshaller.java |    6 +-
 .../camel/dataformat/csv/CsvUnmarshaller.java      |    5 +-
 .../component/cxf/transport/CamelDestination.java  |    2 +-
 .../cxf/common/header/CxfHeaderHelperTest.java     |    2 +-
 .../cxf/common/message/CxfMessageHelperTest.java   |    2 +-
 .../cxf/transport/CamelDestinationTest.java        |    2 +-
 .../apache/camel/component/cxf/CxfComponent.java   |    6 +-
 .../apache/camel/component/cxf/CxfConsumer.java    |    2 +-
 .../apache/camel/component/cxf/CxfEndpoint.java    |    8 +-
 .../apache/camel/component/cxf/CxfProducer.java    |    4 +-
 .../camel/component/cxf/DefaultCxfBinding.java     |    4 +-
 .../component/cxf/SslCxfEndpointConfigurer.java    |    2 +-
 .../cxf/common/AbstractSslEndpointConfigurer.java  |    2 +-
 .../component/cxf/converter/CxfConverter.java      |    4 +-
 .../camel/component/cxf/jaxrs/CxfRsComponent.java  |    4 +-
 .../camel/component/cxf/jaxrs/CxfRsConsumer.java   |    2 +-
 .../camel/component/cxf/jaxrs/CxfRsEndpoint.java   |   10 +-
 .../camel/component/cxf/jaxrs/CxfRsProducer.java   |   10 +-
 .../component/cxf/jaxrs/DefaultCxfRsBinding.java   |    2 +-
 .../component/cxf/jaxrs/SimpleCxfRsBinding.java    |    2 +-
 .../cxf/jaxrs/SslCxfRsEndpointConfigurer.java      |    2 +-
 .../apache/camel/component/cxf/util/CxfUtils.java  |    2 +-
 .../cxf/CxfConsumerContinuationTimeoutTest.java    |    2 +-
 .../component/cxf/CxfConsumerPayloadXPathTest.java |    2 +-
 .../camel/component/cxf/CxfProducerRouterTest.java |    2 +-
 .../component/cxf/CxfRawMessageRouterTest.java     |    2 +-
 .../camel/component/cxf/DefaultCxfBindingTest.java |    8 +-
 .../component/cxf/converter/ConverterTest.java     |    2 +-
 .../cxf/jaxrs/CxfRsGlobalSslProducerTest.java      |    2 +-
 .../cxf/jaxrs/DefaultCxfRsBindingTest.java         |   10 +-
 .../soap/headers/CxfMessageHeadersRelayTest.java   |    2 +-
 .../camel/component/cxf/ssl/SslGlobalTest.java     |    2 +-
 .../digitalocean/DigitalOceanComponent.java        |    2 +-
 .../digitalocean/DigitalOceanEndpoint.java         |    2 +-
 .../producer/DigitalOceanProducer.java             |    2 +-
 .../disruptor/AbstractSynchronizedExchange.java    |    2 +-
 .../component/disruptor/DisruptorComponent.java    |    2 +-
 .../component/disruptor/DisruptorConsumer.java     |    4 +-
 .../component/disruptor/DisruptorEndpoint.java     |    2 +-
 .../component/disruptor/DisruptorProducer.java     |    4 +-
 .../MultipleConsumerSynchronizedExchange.java      |    2 +-
 .../SingleConsumerSynchronizedExchange.java        |    2 +-
 .../DisruptorConsumerSuspendResumeTest.java        |    2 +-
 .../apache/camel/component/dns/DnsComponent.java   |    2 +-
 .../apache/camel/component/dns/DnsDigProducer.java |    2 +-
 .../apache/camel/component/dns/DnsEndpoint.java    |    2 +-
 .../apache/camel/component/dns/DnsIpProducer.java  |    2 +-
 .../camel/component/dns/DnsLookupProducer.java     |    2 +-
 .../camel/component/dns/DnsWikipediaProducer.java  |    2 +-
 .../component/docker/DockerClientFactory.java      |    6 +-
 .../camel/component/docker/DockerComponent.java    |    4 +-
 .../camel/component/docker/DockerEndpoint.java     |    2 +-
 .../docker/consumer/DockerEventsConsumer.java      |    2 +-
 .../docker/consumer/DockerStatsConsumer.java       |    2 +-
 .../docker/producer/AsyncDockerProducer.java       |    2 +-
 .../component/docker/producer/DockerProducer.java  |    2 +-
 .../component/docker/DockerConfigurationTest.java  |    2 +-
 .../component/docker/it/DockerITTestSupport.java   |    2 +-
 .../camel/component/dozer/DozerComponent.java      |    4 +-
 .../camel/component/dozer/DozerEndpoint.java       |    4 +-
 .../camel/component/dozer/DozerProducer.java       |    2 +-
 .../camel/component/dozer/ExpressionMapper.java    |    2 +-
 .../converter/dozer/DozerTypeConverterLoader.java  |   10 +-
 .../camel/component/drill/DrillComponent.java      |    2 +-
 .../camel/component/drill/DrillEndpoint.java       |    2 +-
 .../camel/component/drill/DrillProducer.java       |    2 +-
 .../camel/component/dropbox/DropboxComponent.java  |    2 +-
 .../camel/component/dropbox/DropboxEndpoint.java   |    2 +-
 .../consumer/DropboxScheduledPollConsumer.java     |    2 +-
 .../integration/producer/DropboxProducer.java      |    2 +-
 .../camel/component/ehcache/EhcacheComponent.java  |    4 +-
 .../camel/component/ehcache/EhcacheConsumer.java   |    2 +-
 .../camel/component/ehcache/EhcacheEndpoint.java   |    2 +-
 .../aggregate/EhcacheAggregationRepository.java    |    2 +-
 .../EhcacheAggregationRepositoryOperationTest.java |    2 +-
 .../elasticsearch/ElasticsearchComponent.java      |    2 +-
 .../elasticsearch/ElasticsearchEndpoint.java       |    2 +-
 .../elasticsearch/ElasticsearchProducer.java       |    2 +-
 .../camel/component/elsql/ElsqlComponent.java      |    5 +-
 .../camel/component/elsql/ElsqlEndpoint.java       |    6 +-
 .../camel/component/elsql/ElsqlProducer.java       |    2 +-
 .../camel-etcd/src/main/docs/etcd-component.adoc   |    2 +-
 .../camel/component/etcd/AbstractEtcdConsumer.java |    2 +-
 .../camel/component/etcd/AbstractEtcdEndpoint.java |    2 +-
 .../etcd/AbstractEtcdPollingConsumer.java          |    2 +-
 .../etcd/AbstractEtcdPollingEndpoint.java          |    2 +-
 .../camel/component/etcd/AbstractEtcdProducer.java |    2 +-
 .../apache/camel/component/etcd/EtcdComponent.java |    4 +-
 .../camel/component/etcd/EtcdConfiguration.java    |    2 +-
 .../etcd/cloud/EtcdServiceDiscoveryFactory.java    |    2 +-
 .../component/eventadmin/EventAdminComponent.java  |    2 +-
 .../component/eventadmin/EventAdminConsumer.java   |    2 +-
 .../component/eventadmin/EventAdminEndpoint.java   |    2 +-
 .../component/eventadmin/EventAdminProducer.java   |    4 +-
 .../apache/camel/component/exec/ExecComponent.java |    2 +-
 .../apache/camel/component/exec/ExecEndpoint.java  |    2 +-
 .../apache/camel/component/exec/ExecProducer.java  |    2 +-
 .../component/facebook/FacebookComponent.java      |    4 +-
 .../camel/component/facebook/FacebookConsumer.java |    5 +-
 .../camel/component/facebook/FacebookEndpoint.java |    4 +-
 .../camel/component/facebook/FacebookProducer.java |    5 +-
 .../facebook/data/FacebookPropertiesHelper.java    |    2 +-
 .../facebook/CamelFacebookTestSupport.java         |    2 +-
 .../facebook/FacebookComponentConsumerTest.java    |    4 +-
 .../apache/camel/component/fhir/FhirComponent.java |    2 +-
 .../apache/camel/component/fhir/FhirConsumer.java  |    2 +-
 .../apache/camel/component/fhir/FhirEndpoint.java  |    6 +-
 .../apache/camel/component/fhir/FhirProducer.java  |    2 +-
 .../fhir/internal/FhirPropertiesHelper.java        |    2 +-
 .../component/fhir/AbstractFhirTestSupport.java    |    2 +-
 .../component/flatpack/FlatpackComponent.java      |    2 +-
 .../camel/component/flatpack/FlatpackEndpoint.java |    8 +-
 .../camel/component/flatpack/FlatpackProducer.java |    2 +-
 .../dataformat/flatpack/FlatpackDataFormat.java    |   20 +-
 .../component/flink/DataSetFlinkProducer.java      |    2 +-
 .../component/flink/DataStreamFlinkProducer.java   |    2 +-
 .../camel/component/flink/FlinkComponent.java      |    2 +-
 .../camel/component/flink/FlinkEndpoint.java       |    2 +-
 .../apache/camel/component/fop/FopComponent.java   |    2 +-
 .../apache/camel/component/fop/FopEndpoint.java    |    4 +-
 .../apache/camel/component/fop/FopProducer.java    |    4 +-
 .../camel/component/fop/FopEndpointTest.java       |    2 +-
 .../component/freemarker/FreemarkerComponent.java  |    4 +-
 .../component/freemarker/FreemarkerEndpoint.java   |    2 +-
 .../remote/DefaultFtpClientActivityListener.java   |    2 +-
 .../camel/component/file/remote/FtpComponent.java  |    2 +-
 .../camel/component/file/remote/FtpEndpoint.java   |    2 +-
 .../camel/component/file/remote/FtpOperations.java |   16 +-
 .../camel/component/file/remote/FtpsComponent.java |    2 +-
 .../camel/component/file/remote/FtpsEndpoint.java  |    2 +-
 .../RemoteFilePollingConsumerPollStrategy.java     |    2 +-
 .../component/file/remote/SftpOperations.java      |    2 +-
 .../FtpChangedExclusiveReadLockStrategy.java       |    2 +-
 .../SftpChangedExclusiveReadLockStrategy.java      |    2 +-
 ...LWithClientAuthAndSSLContextParametersTest.java |    8 +-
 ...lientAuthAndGlobalSSLContextParametersTest.java |    6 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |    6 +-
 ...SWithClientAuthAndSSLContextParametersTest.java |    8 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |    6 +-
 ...LWithClientAuthAndSSLContextParametersTest.java |    8 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |    6 +-
 ...SWithClientAuthAndSSLContextParametersTest.java |    8 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |    6 +-
 .../FtpPollEnrichBridgeErrorHandlerTest.java       |    2 +-
 .../camel/component/ganglia/GangliaComponent.java  |    2 +-
 .../camel/component/ganglia/GangliaEndpoint.java   |    2 +-
 .../camel/component/ganglia/GangliaProducer.java   |    2 +-
 .../component/geocoder/GeoCoderComponent.java      |    2 +-
 .../camel/component/geocoder/GeoCoderEndpoint.java |    2 +-
 .../camel/component/geocoder/GeoCoderProducer.java |    2 +-
 .../apache/camel/component/git/GitComponent.java   |    2 +-
 .../apache/camel/component/git/GitEndpoint.java    |    2 +-
 .../git/consumer/AbstractGitConsumer.java          |    2 +-
 .../camel/component/git/producer/GitProducer.java  |    4 +-
 .../camel/component/github/GitHubComponent.java    |    2 +-
 .../camel/component/github/GitHubEndpoint.java     |    2 +-
 .../github/consumer/AbstractGitHubConsumer.java    |    2 +-
 .../github/producer/AbstractGitHubProducer.java    |    2 +-
 .../google/bigquery/GoogleBigQueryComponent.java   |    2 +-
 .../google/bigquery/GoogleBigQueryEndpoint.java    |    2 +-
 .../google/bigquery/GoogleBigQueryProducer.java    |    2 +-
 .../google/bigquery/integration/AsyncTest.java     |    2 +-
 .../bigquery/integration/DynamicTableIdTest.java   |    2 +-
 .../google/bigquery/integration/InsertIdTest.java  |    2 +-
 .../google/bigquery/integration/SingleRowTest.java |    2 +-
 .../google/calendar/GoogleCalendarComponent.java   |    2 +-
 .../google/calendar/GoogleCalendarConsumer.java    |    4 +-
 .../google/calendar/GoogleCalendarEndpoint.java    |    6 +-
 .../google/calendar/GoogleCalendarProducer.java    |    6 +-
 .../internal/GoogleCalendarPropertiesHelper.java   |    2 +-
 .../stream/GoogleCalendarStreamComponent.java      |    2 +-
 .../stream/GoogleCalendarStreamConsumer.java       |    2 +-
 .../stream/GoogleCalendarStreamEndpoint.java       |    6 +-
 .../AbstractGoogleCalendarTestSupport.java         |    2 +-
 .../AbstractGoogleCalendarStreamTestSupport.java   |    2 +-
 .../google/drive/GoogleDriveComponent.java         |    2 +-
 .../google/drive/GoogleDriveConsumer.java          |    4 +-
 .../google/drive/GoogleDriveEndpoint.java          |    6 +-
 .../google/drive/GoogleDriveProducer.java          |    6 +-
 .../internal/GoogleDrivePropertiesHelper.java      |    2 +-
 .../drive/AbstractGoogleDriveTestSupport.java      |    2 +-
 .../component/google/mail/GoogleMailComponent.java |    2 +-
 .../component/google/mail/GoogleMailConsumer.java  |    4 +-
 .../component/google/mail/GoogleMailEndpoint.java  |    6 +-
 .../component/google/mail/GoogleMailProducer.java  |    6 +-
 .../mail/internal/GoogleMailPropertiesHelper.java  |    2 +-
 .../mail/stream/GoogleMailStreamComponent.java     |    2 +-
 .../mail/stream/GoogleMailStreamConsumer.java      |    2 +-
 .../mail/stream/GoogleMailStreamEndpoint.java      |    2 +-
 .../google/mail/AbstractGoogleMailTestSupport.java |    2 +-
 .../AbstractGoogleMailStreamTestSupport.java       |    2 +-
 .../google/pubsub/GooglePubsubComponent.java       |    2 +-
 .../google/pubsub/GooglePubsubConsumer.java        |    2 +-
 .../google/pubsub/GooglePubsubEndpoint.java        |    2 +-
 .../google/pubsub/GooglePubsubProducer.java        |    2 +-
 .../google/pubsub/integration/AckModeNoneTest.java |    2 +-
 .../pubsub/integration/AcknowledgementTest.java    |    2 +-
 .../google/pubsub/integration/BodyTypesTest.java   |    2 +-
 .../integration/GroupedExchangeRoundtripTest.java  |    2 +-
 .../integration/SingleExchangeRoundtripTest.java   |    2 +-
 .../apache/camel/component/gora/GoraComponent.java |    2 +-
 .../apache/camel/component/gora/GoraConsumer.java  |    2 +-
 .../apache/camel/component/gora/GoraEndpoint.java  |    2 +-
 .../apache/camel/component/gora/GoraProducer.java  |    4 +-
 .../camel/component/grape/GrapeComponent.groovy    |    2 +-
 .../camel/component/grape/GrapeEndpoint.groovy     |    2 +-
 .../camel/component/grape/GrapeProducer.groovy     |    2 +-
 .../camel/language/groovy/GroovyExpression.java    |    2 +-
 .../camel/language/groovy/GroovyLanguage.java      |    2 +-
 .../language/groovy/GroovyExpressionTest.java      |    2 +-
 .../language/groovy/GroovyShellFactoryTest.java    |    2 +-
 .../apache/camel/component/grpc/GrpcComponent.java |    2 +-
 .../apache/camel/component/grpc/GrpcConsumer.java  |    4 +-
 .../apache/camel/component/grpc/GrpcEndpoint.java  |    2 +-
 .../apache/camel/component/grpc/GrpcProducer.java  |    4 +-
 .../org/apache/camel/component/grpc/GrpcUtils.java |    8 +-
 .../client/GrpcResponseRouterStreamObserver.java   |    2 +-
 .../camel/component/gson/GsonDataFormat.java       |    5 +-
 .../guava/eventbus/CamelEventHandler.java          |    2 +-
 .../guava/eventbus/GuavaEventBusComponent.java     |    2 +-
 .../guava/eventbus/GuavaEventBusConsumer.java      |    2 +-
 .../guava/eventbus/GuavaEventBusEndpoint.java      |    4 +-
 .../guava/eventbus/GuavaEventBusProducer.java      |    2 +-
 .../hazelcast/HazelcastDefaultComponent.java       |    4 +-
 .../hazelcast/HazelcastDefaultConsumer.java        |    2 +-
 .../hazelcast/HazelcastDefaultEndpoint.java        |    2 +-
 .../hazelcast/HazelcastDefaultProducer.java        |    2 +-
 .../instance/HazelcastInstanceConsumer.java        |    4 +-
 .../hazelcast/seda/HazelcastSedaConsumer.java      |    4 +-
 .../hazelcast/seda/HazelcastSedaProducer.java      |    2 +-
 .../hazelcast/HazelcastAggregationRepository.java  |    2 +-
 ...lcastAggregationRepositoryConstructorsTest.java |    2 +-
 .../camel/component/hbase/HBaseComponent.java      |    4 +-
 .../camel/component/hbase/HBaseConsumer.java       |    2 +-
 .../camel/component/hbase/HBaseEndpoint.java       |    2 +-
 .../camel/component/hbase/HBaseProducer.java       |    2 +-
 .../camel/component/hdfs2/HdfsComponent.java       |    2 +-
 .../apache/camel/component/hdfs2/HdfsConsumer.java |    4 +-
 .../apache/camel/component/hdfs2/HdfsEndpoint.java |    3 +-
 .../apache/camel/component/hdfs2/HdfsProducer.java |    2 +-
 .../camel/component/hdfs2/HdfsConsumerTest.java    |    2 +-
 .../camel/component/hipchat/HipchatComponent.java  |    2 +-
 .../camel/component/hipchat/HipchatConsumer.java   |    2 +-
 .../camel/component/hipchat/HipchatEndpoint.java   |    2 +-
 .../camel/component/hipchat/HipchatProducer.java   |    2 +-
 .../apache/camel/component/hl7/AckExpression.java  |    4 +-
 .../org/apache/camel/component/hl7/HL7Charset.java |    4 +-
 .../apache/camel/component/hl7/HL7DataFormat.java  |    7 +-
 .../apache/camel/component/hl7/TerserLanguage.java |    5 +-
 .../component/hl7/ValidationContextPredicate.java  |    4 +-
 .../camel/http/common/DefaultHttpBinding.java      |   13 +-
 .../camel/http/common/HttpCommonComponent.java     |    2 +-
 .../camel/http/common/HttpCommonEndpoint.java      |    2 +-
 .../org/apache/camel/http/common/HttpConsumer.java |    2 +-
 .../apache/camel/http/common/HttpConverter.java    |    2 +-
 .../org/apache/camel/http/common/HttpHelper.java   |    4 +-
 .../org/apache/camel/http/common/HttpMessage.java  |    2 +-
 .../camel-http4/src/main/docs/http4-component.adoc |    6 +-
 .../camel/component/http4/HttpComponent.java       |   10 +-
 .../camel/component/http4/HttpEntityConverter.java |    4 +-
 .../camel/component/http4/HttpPollingConsumer.java |    2 +-
 .../apache/camel/component/http4/HttpProducer.java |   12 +-
 .../http4/HttpCustomComponentNameTest.java         |    2 +-
 .../http4/HttpHeaderFilterStrategyTest.java        |    2 +-
 .../http4/HttpsSslContextParametersGetTest.java    |    2 +-
 ...psTwoComponentsSslContextParametersGetTest.java |    2 +-
 ...tpsTwoDifferentSslContextParametersGetTest.java |    2 +-
 .../component/http4/helper/HttpHelperTest.java     |    2 +-
 .../hystrix/processor/HystrixProcessor.java        |    4 +-
 .../hystrix/processor/HystrixProcessorCommand.java |    2 +-
 .../hystrix/processor/HystrixProcessorFactory.java |    6 +-
 .../apache/camel/component/ical/ICalConverter.java |    4 +-
 .../component/iec60870/AbstractIecComponent.java   |    2 +-
 .../component/iec60870/AbstractIecEndpoint.java    |    4 +-
 .../component/iec60870/client/ClientConsumer.java  |    4 +-
 .../component/iec60870/client/ClientEndpoint.java  |    2 +-
 .../component/iec60870/client/ClientProducer.java  |    2 +-
 .../component/iec60870/server/ServerConsumer.java  |    4 +-
 .../component/iec60870/server/ServerEndpoint.java  |    2 +-
 .../component/iec60870/server/ServerProducer.java  |    2 +-
 .../component/ignite/AbstractIgniteComponent.java  |    2 +-
 .../component/ignite/AbstractIgniteEndpoint.java   |    2 +-
 .../cache/IgniteCacheContinuousQueryConsumer.java  |    2 +-
 .../ignite/cache/IgniteCacheProducer.java          |    4 +-
 .../ignite/compute/IgniteComputeProducer.java      |    4 +-
 .../ignite/events/IgniteEventsConsumer.java        |    2 +-
 .../ignite/idgen/IgniteIdGenProducer.java          |    4 +-
 .../ignite/messaging/IgniteMessagingConsumer.java  |    2 +-
 .../ignite/messaging/IgniteMessagingProducer.java  |    4 +-
 .../ignite/queue/IgniteQueueEndpoint.java          |    4 +-
 .../ignite/queue/IgniteQueueProducer.java          |    4 +-
 .../component/ignite/set/IgniteSetEndpoint.java    |    4 +-
 .../component/ignite/set/IgniteSetProducer.java    |    4 +-
 .../component/infinispan/InfinispanComponent.java  |    2 +-
 .../component/infinispan/InfinispanConsumer.java   |    2 +-
 .../component/infinispan/InfinispanEndpoint.java   |    2 +-
 .../camel/component/infinispan/InfinispanUtil.java |    2 +-
 .../InfinispanLocalAggregationRepository.java      |    2 +-
 .../InfinispanRemoteAggregationRepository.java     |    2 +-
 .../policy/InfinispanRoutePolicyTestBase.java      |    2 +-
 ...anLocalAggregationRepositoryOperationsTest.java |    2 +-
 .../component/influxdb/InfluxDbComponent.java      |    4 +-
 .../camel/component/influxdb/InfluxDbEndpoint.java |    4 +-
 .../camel/component/influxdb/InfluxDbProducer.java |    4 +-
 .../camel-irc/src/main/docs/irc-component.adoc     |    2 +-
 .../camel/component/irc/CamelSSLIRCConnection.java |    2 +-
 .../apache/camel/component/irc/IrcComponent.java   |    4 +-
 .../camel/component/irc/IrcConfiguration.java      |    4 +-
 .../apache/camel/component/irc/IrcConsumer.java    |    2 +-
 .../apache/camel/component/irc/IrcEndpoint.java    |    2 +-
 .../org/apache/camel/component/irc/IrcMessage.java |    4 +-
 .../apache/camel/component/irc/IrcProducer.java    |    2 +-
 .../irc/IrcsWithSslContextParamsRouteTest.java     |    6 +-
 .../camel/component/ironmq/IronMQComponent.java    |    4 +-
 .../camel/component/ironmq/IronMQConsumer.java     |    4 +-
 .../camel/component/ironmq/IronMQEndpoint.java     |    4 +-
 .../camel/component/ironmq/IronMQProducer.java     |    2 +-
 .../camel/component/jackson/JacksonDataFormat.java |   14 +-
 .../component/jackson/JacksonDataFormatTest.java   |    2 +-
 .../converter/JacksonConversionsSimpleTest.java    |    2 +-
 .../component/jacksonxml/JacksonXMLDataFormat.java |   14 +-
 .../jacksonxml/JacksonConversionsSimpleTest.java   |    2 +-
 .../converter/jaxb/FallbackTypeConverter.java      |    3 +-
 .../camel/converter/jaxb/JaxbDataFormat.java       |    7 +-
 .../camel/converter/jaxb/JaxbDataFormatTest.java   |    2 +-
 .../camel/jaxb/CamelJaxbFallbackConverterTest.java |    2 +-
 .../apache/camel/component/jbpm/JBPMComponent.java |    2 +-
 .../apache/camel/component/jbpm/JBPMEndpoint.java  |    2 +-
 .../apache/camel/component/jbpm/JBPMProducer.java  |    4 +-
 .../camel/component/jcache/JCacheComponent.java    |    2 +-
 .../component/jcache/JCacheConfiguration.java      |    2 +-
 .../camel/component/jcache/JCacheConsumer.java     |    2 +-
 .../camel/component/jcache/JCacheEndpoint.java     |    2 +-
 .../camel/component/jcache/JCacheProducer.java     |    2 +-
 .../aggregate/JCacheAggregationRepository.java     |    2 +-
 .../aggregate/JCacheAggregationRepositoryTest.java |    2 +-
 .../jclouds/JcloudsBlobStoreConsumer.java          |    2 +-
 .../camel/component/jclouds/JcloudsComponent.java  |    2 +-
 .../camel/component/jclouds/JcloudsConsumer.java   |    2 +-
 .../camel/component/jclouds/JcloudsEndpoint.java   |    2 +-
 .../component/jclouds/JcloudsPayloadConverter.java |    4 +-
 .../camel/component/jclouds/JcloudsProducer.java   |    2 +-
 .../jclouds/JcloudsBlobStoreProducerTest.java      |    2 +-
 .../camel/component/jcr/EndpointEventListener.java |    2 +-
 .../apache/camel/component/jcr/JcrComponent.java   |    2 +-
 .../apache/camel/component/jcr/JcrConsumer.java    |    2 +-
 .../apache/camel/component/jcr/JcrEndpoint.java    |    2 +-
 .../apache/camel/component/jcr/JcrProducer.java    |    2 +-
 .../camel/component/jcr/JcrConverterTest.java      |   18 +-
 .../apache/camel/component/jdbc/JdbcComponent.java |    6 +-
 .../apache/camel/component/jdbc/JdbcEndpoint.java  |    2 +-
 .../apache/camel/component/jdbc/JdbcProducer.java  |    4 +-
 .../component/jetty/CamelContinuationServlet.java  |    2 +-
 .../component/jetty/DefaultJettyHttpBinding.java   |    2 +-
 .../camel/component/jetty/JettyHttpComponent.java  |    6 +-
 .../camel/component/jetty/JettyHttpEndpoint.java   |    4 +-
 .../camel/component/jetty/JettyHttpProducer.java   |   10 +-
 .../src/main/docs/jetty-component.adoc             |    2 +-
 .../component/jetty9/AttachmentHttpBinding.java    |    2 +-
 .../component/jetty9/JettyHttpComponent9.java      |    6 +-
 .../component/jetty/ExcludeCipherSuitesTest.java   |    8 +-
 ...ExplicitHttpsSslContextParametersRouteTest.java |    6 +-
 .../jetty/HttpProxyRouteContentTypeTest.java       |    2 +-
 .../camel/component/jetty/HttpsRouteAliasTest.java |    6 +-
 ...psRouteSslContextParametersInComponentTest.java |    6 +-
 .../HttpsRouteSslContextParametersInUriTest.java   |    6 +-
 .../component/jetty/JettyContentTypeTest.java      |    4 +-
 .../camel/component/jetty/JettyImageFileTest.java  |    2 +-
 .../component/jetty/async/MyAsyncComponent.java    |    2 +-
 .../component/jetty/async/MyAsyncEndpoint.java     |    2 +-
 .../component/jetty/async/MyAsyncProducer.java     |    2 +-
 .../JettyHttpsProducerSslContextInUriTest.java     |    6 +-
 .../component/jgroups/CamelJGroupsReceiver.java    |    2 +-
 .../camel/component/jgroups/JGroupsComponent.java  |    2 +-
 .../camel/component/jgroups/JGroupsConsumer.java   |    2 +-
 .../camel/component/jgroups/JGroupsEndpoint.java   |    2 +-
 .../camel/component/jgroups/JGroupsProducer.java   |    2 +-
 .../component/validator/jing/JingComponent.java    |    2 +-
 .../component/validator/jing/JingEndpoint.java     |    4 +-
 .../component/validator/jing/JingValidator.java    |    4 +-
 .../component/jms/EndpointMessageListener.java     |    4 +-
 .../org/apache/camel/component/jms/JmsBinding.java |   12 +-
 .../apache/camel/component/jms/JmsConsumer.java    |    2 +-
 .../apache/camel/component/jms/JmsEndpoint.java    |    4 +-
 .../org/apache/camel/component/jms/JmsMessage.java |    4 +-
 .../camel/component/jms/JmsMessageHelper.java      |    2 +-
 .../camel/component/jms/JmsPollingConsumer.java    |    2 +-
 .../apache/camel/component/jms/JmsProducer.java    |    7 +-
 .../component/jms/reply/ReplyManagerSupport.java   |    4 +-
 .../component/jms/ConsumeJmsBytesMessageTest.java  |    2 +-
 .../component/jms/ConsumeJmsMapMessageTest.java    |    2 +-
 .../component/jms/ConsumeJmsObjectMessageTest.java |    2 +-
 .../component/jms/async/MyAsyncComponent.java      |    2 +-
 .../camel/component/jms/async/MyAsyncEndpoint.java |    2 +-
 .../camel/component/jms/async/MyAsyncProducer.java |    2 +-
 .../apache/camel/component/jmx/JMXComponent.java   |    6 +-
 .../apache/camel/component/jmx/JMXConsumer.java    |    4 +-
 .../apache/camel/component/jmx/JMXEndpoint.java    |    2 +-
 .../component/johnzon/JohnzonDataFormatTest.java   |    2 +-
 .../apache/camel/component/jolt/JoltComponent.java |    4 +-
 .../camel/component/jolt/JoltFirstSampleTest.java  |    2 +-
 .../apache/camel/component/jpa/JpaComponent.java   |    2 +-
 .../apache/camel/component/jpa/JpaConsumer.java    |   10 +-
 .../apache/camel/component/jpa/JpaEndpoint.java    |    4 +-
 .../camel/component/jpa/JpaPollingConsumer.java    |    6 +-
 .../apache/camel/component/jpa/JpaProducer.java    |    2 +-
 .../org/apache/camel/component/jpa/JpaTest.java    |    2 +-
 .../jpa/JpaWithNamedQueryAndParametersTest.java    |    2 +-
 .../camel/component/jpa/JpaWithNamedQueryTest.java |    2 +-
 .../processor/jpa/JpaProducerWithQueryTest.java    |    2 +-
 .../apache/camel/component/scp/ScpOperations.java  |    2 +-
 .../jsonvalidator/JsonValidatorComponent.java      |    2 +-
 .../camel/jsonpath/JsonPathLanguageTest.java       |    2 +-
 .../camel/component/jt400/Jt400Component.java      |    4 +-
 .../component/jt400/Jt400DataQueueConsumer.java    |    2 +-
 .../component/jt400/Jt400DataQueueProducer.java    |    2 +-
 .../camel/component/jt400/Jt400Endpoint.java       |    2 +-
 .../camel/component/jt400/Jt400PgmProducer.java    |    2 +-
 .../camel/component/kafka/KafkaComponent.java      |    2 +-
 .../camel/component/kafka/KafkaConfiguration.java  |   12 +-
 .../camel/component/kafka/KafkaConsumer.java       |    4 +-
 .../camel/component/kafka/KafkaEndpoint.java       |    2 +-
 .../camel/component/kafka/KafkaProducer.java       |    2 +-
 .../kafka/KafkaIdempotentRepository.java           |    2 +-
 .../camel/component/kafka/KafkaProducerTest.java   |    2 +-
 .../kubernetes/AbstractKubernetesComponent.java    |    2 +-
 .../kubernetes/AbstractKubernetesEndpoint.java     |    4 +-
 .../config_maps/KubernetesConfigMapsProducer.java  |    4 +-
 .../deployments/KubernetesDeploymentsConsumer.java |    2 +-
 .../deployments/KubernetesDeploymentsProducer.java |    4 +-
 .../kubernetes/hpa/KubernetesHPAConsumer.java      |    2 +-
 .../kubernetes/hpa/KubernetesHPAProducer.java      |    4 +-
 .../kubernetes/job/KubernetesJobProducer.java      |    4 +-
 .../namespaces/KubernetesNamespacesConsumer.java   |    2 +-
 .../namespaces/KubernetesNamespacesProducer.java   |    4 +-
 .../kubernetes/nodes/KubernetesNodesConsumer.java  |    2 +-
 .../kubernetes/nodes/KubernetesNodesProducer.java  |    4 +-
 .../KubernetesPersistentVolumesProducer.java       |    4 +-
 .../KubernetesPersistentVolumesClaimsProducer.java |    4 +-
 .../kubernetes/pods/KubernetesPodsConsumer.java    |    2 +-
 .../kubernetes/pods/KubernetesPodsProducer.java    |    4 +-
 .../KubernetesReplicationControllersConsumer.java  |    2 +-
 .../KubernetesReplicationControllersProducer.java  |    4 +-
 .../KubernetesResourcesQuotaProducer.java          |    4 +-
 .../secrets/KubernetesSecretsProducer.java         |    4 +-
 .../KubernetesServiceAccountsProducer.java         |    4 +-
 .../services/KubernetesServicesConsumer.java       |    2 +-
 .../services/KubernetesServicesProducer.java       |    5 +-
 .../OpenshiftBuildConfigsProducer.java             |    4 +-
 .../openshift/builds/OpenshiftBuildsProducer.java  |    4 +-
 .../camel-ldap/src/main/docs/ldap-component.adoc   |    2 +-
 .../apache/camel/component/ldap/LdapComponent.java |    2 +-
 .../apache/camel/component/ldap/LdapEndpoint.java  |    2 +-
 .../apache/camel/component/ldap/LdapProducer.java  |    2 +-
 .../apache/camel/component/ldif/LdifComponent.java |    2 +-
 .../apache/camel/component/ldif/LdifEndpoint.java  |    2 +-
 .../apache/camel/component/ldif/LdifProducer.java  |    2 +-
 .../leveldb/LevelDBAggregationRepository.java      |    2 +-
 .../camel/component/leveldb/LevelDBCamelCodec.java |    2 +-
 .../LevelDBAggregationRepositoryAlotDataTest.java  |    2 +-
 ...velDBAggregationRepositoryLoadExistingTest.java |    2 +-
 ...velDBAggregationRepositoryMultipleRepoTest.java |    2 +-
 ...DBAggregationRepositoryRecoverExistingTest.java |    2 +-
 .../leveldb/LevelDBAggregationRepositoryTest.java  |    2 +-
 .../leveldb/LevelDBExchangeSerializationTest.java  |    2 +-
 .../component/leveldb/LevelDBGetNotFoundTest.java  |    2 +-
 .../src/test/resources/jndi.properties             |    2 +-
 .../component/linkedin/LinkedInComponent.java      |   10 +-
 .../camel/component/linkedin/LinkedInConsumer.java |    4 +-
 .../camel/component/linkedin/LinkedInEndpoint.java |    6 +-
 .../camel/component/linkedin/LinkedInProducer.java |    4 +-
 .../internal/LinkedInPropertiesHelper.java         |    2 +-
 .../linkedin/AbstractLinkedInTestSupport.java      |    2 +-
 .../camel/component/lucene/LuceneComponent.java    |    2 +-
 .../camel/component/lucene/LuceneEndpoint.java     |    2 +-
 .../component/lucene/LuceneIndexProducer.java      |    2 +-
 .../component/lucene/LuceneQueryProducer.java      |    2 +-
 .../src/main/docs/lumberjack-component.adoc        |    2 +-
 .../component/lumberjack/LumberjackComponent.java  |    4 +-
 .../component/lumberjack/LumberjackConsumer.java   |    2 +-
 .../component/lumberjack/LumberjackEndpoint.java   |    4 +-
 .../LumberjackComponentGlobalSSLTest.java          |    8 +-
 .../lumberjack/LumberjackComponentSSLTest.java     |    8 +-
 .../camel/component/lumberjack/LumberjackUtil.java |    2 +-
 .../apache/camel/component/mail/MailBinding.java   |   14 +-
 .../apache/camel/component/mail/MailComponent.java |    4 +-
 .../camel/component/mail/MailConfiguration.java    |    2 +-
 .../apache/camel/component/mail/MailConsumer.java  |    4 +-
 .../apache/camel/component/mail/MailEndpoint.java  |    2 +-
 .../apache/camel/component/mail/MailMessage.java   |    4 +-
 .../apache/camel/component/mail/MailProducer.java  |    2 +-
 .../component/mail/SplitAttachmentsExpression.java |    2 +-
 .../mime/multipart/MimeMultipartDataFormat.java    |    6 +-
 .../camel/component/mail/MailAttachmentTest.java   |    2 +-
 .../camel/component/mail/MailMessageTest.java      |    2 +-
 .../camel/component/mail/MailTestHelper.java       |    8 +-
 .../mail/MultipleDestinationConsumeTest.java       |    4 +-
 .../multipart/MimeMultipartDataFormatTest.java     |    4 +-
 .../camel/component/master/MasterComponent.java    |    2 +-
 .../camel/component/master/MasterConsumer.java     |    8 +-
 .../camel/component/master/MasterEndpoint.java     |    2 +-
 .../component/metrics/AbstractMetricsProducer.java |    4 +-
 .../camel/component/metrics/MetricsComponent.java  |    2 +-
 .../camel/component/metrics/MetricsEndpoint.java   |    2 +-
 .../MetricsMessageHistoryFactory.java              |    3 +-
 .../MetricsMessageHistoryService.java              |    6 +-
 .../routepolicy/MetricsRegistryService.java        |    6 +-
 .../metrics/routepolicy/MetricsRoutePolicy.java    |    8 +-
 .../metrics/AbstractMetricsProducerTest.java       |    2 +-
 .../spi/InstrumentedThreadPoolFactoryTest.java     |    2 +-
 .../micrometer/AbstractMicrometerProducer.java     |    2 +-
 .../component/micrometer/MicrometerComponent.java  |    2 +-
 .../component/micrometer/MicrometerEndpoint.java   |    2 +-
 .../AbstractMicrometerEventNotifier.java           |    6 +-
 .../micrometer/json/AbstractMicrometerService.java |    6 +-
 .../MicrometerMessageHistoryFactory.java           |    5 +-
 .../routepolicy/MicrometerRoutePolicy.java         |    5 +-
 .../spi/InstrumentedThreadPoolFactoryTest.java     |    2 +-
 .../org/apache/camel/component/milo/Messages.java  |    2 +-
 .../component/milo/client/MiloClientComponent.java |    2 +-
 .../component/milo/client/MiloClientConsumer.java  |    4 +-
 .../component/milo/client/MiloClientEndpoint.java  |    2 +-
 .../component/milo/client/MiloClientProducer.java  |    2 +-
 .../component/milo/server/MiloServerComponent.java |    2 +-
 .../component/milo/server/MiloServerConsumer.java  |    4 +-
 .../component/milo/server/MiloServerEndpoint.java  |    2 +-
 .../component/milo/server/MiloServerProducer.java  |    2 +-
 .../camel/component/mina2/Mina2Component.java      |    2 +-
 .../camel/component/mina2/Mina2Configuration.java  |    2 +-
 .../camel/component/mina2/Mina2Consumer.java       |    4 +-
 .../camel/component/mina2/Mina2Endpoint.java       |    2 +-
 .../camel/component/mina2/Mina2Producer.java       |    6 +-
 .../camel/component/mina2/BaseMina2Test.java       |   12 +-
 .../camel/component/mina2/Mina2ConverterTest.java  |    2 +-
 .../mina2/Mina2DisconnectRaceConditionTest.java    |    2 +-
 .../camel/component/mina2/Mina2FiltersTest.java    |    2 +-
 .../src/test/resources/jndi-example.properties     |    2 +-
 .../apache/camel/component/mllp/MllpComponent.java |    2 +-
 .../camel/component/mllp/MllpConfiguration.java    |    6 +-
 .../apache/camel/component/mllp/MllpEndpoint.java  |    2 +-
 .../component/mllp/MllpTcpClientProducer.java      |    2 +-
 .../component/mllp/MllpTcpServerConsumer.java      |    2 +-
 .../component/mongodb/gridfs/GridFsComponent.java  |    2 +-
 .../component/mongodb/gridfs/GridFsConsumer.java   |    2 +-
 .../component/mongodb/gridfs/GridFsEndpoint.java   |    4 +-
 .../component/mongodb/gridfs/GridFsProducer.java   |    2 +-
 .../camel/component/mongodb3/MongoDbComponent.java |    4 +-
 .../camel/component/mongodb3/MongoDbEndpoint.java  |    4 +-
 .../camel/component/mongodb3/MongoDbProducer.java  |    4 +-
 .../mongodb3/MongoDbTailableCursorConsumer.java    |    2 +-
 .../apache/camel/component/mqtt/MQTTComponent.java |    2 +-
 .../apache/camel/component/mqtt/MQTTConsumer.java  |    2 +-
 .../apache/camel/component/mqtt/MQTTEndpoint.java  |    2 +-
 .../apache/camel/component/mqtt/MQTTProducer.java  |    2 +-
 .../component/mustache/MustacheComponent.java      |    2 +-
 .../camel/component/mustache/MustacheEndpoint.java |    2 +-
 .../apache/camel/component/mvel/MvelComponent.java |    4 +-
 .../apache/camel/component/mvel/MvelEndpoint.java  |    2 +-
 .../camel-mvel/src/test/resources/jndi.properties  |    2 +-
 .../component/mybatis/BaseMyBatisEndpoint.java     |    2 +-
 .../component/mybatis/MyBatisBeanProducer.java     |    4 +-
 .../camel/component/mybatis/MyBatisComponent.java  |    4 +-
 .../camel/component/mybatis/MyBatisConsumer.java   |    2 +-
 .../camel/component/mybatis/MyBatisProducer.java   |    6 +-
 .../mybatis/MyBatisConsumerIsolatedTest.java       |    2 +-
 .../camel/component/nagios/NagiosComponent.java    |    2 +-
 .../camel/component/nagios/NagiosEndpoint.java     |    2 +-
 .../camel/component/nagios/NagiosProducer.java     |    2 +-
 .../apache/camel/component/nats/NatsComponent.java |    2 +-
 .../camel/component/nats/NatsConfiguration.java    |    2 +-
 .../apache/camel/component/nats/NatsConsumer.java  |    2 +-
 .../apache/camel/component/nats/NatsEndpoint.java  |    2 +-
 .../apache/camel/component/nats/NatsProducer.java  |    2 +-
 .../camel/component/nats/NatsProducerTLSTest.java  |    6 +-
 .../src/main/docs/netty4-http-component.adoc       |    2 +-
 .../netty4/http/DefaultNettyHttpBinding.java       |    8 +-
 .../netty4/http/DefaultNettySharedHttpServer.java  |   12 +-
 .../netty4/http/HttpClientInitializerFactory.java  |    4 +-
 .../netty4/http/HttpServerInitializerFactory.java  |    4 +-
 .../http/HttpServerSharedInitializerFactory.java   |   15 +-
 .../component/netty4/http/NettyHttpComponent.java  |    4 +-
 .../component/netty4/http/NettyHttpHelper.java     |    1 -
 .../component/netty4/http/NettyHttpMessage.java    |    2 +-
 .../netty4/http/NettySharedHttpServer.java         |    5 +-
 .../netty4/http/SecurityAuthenticatorSupport.java  |    6 +-
 .../netty4/http/SecurityConstraintMapping.java     |    2 +-
 .../http/handlers/HttpServerChannelHandler.java    |    8 +-
 .../http/NettyHttpClientExpectContinueTest.java    |    2 +-
 .../http/NettyHttpHeaderFilterStrategyTest.java    |    2 +-
 .../http/NettyHttpSSLHandshakeErrorTest.java       |    2 +-
 .../netty4/http/NettySharedHttpServerTest.java     |    2 +-
 .../src/main/docs/netty4-component.adoc            |    2 +-
 .../netty4/DefaultClientInitializerFactory.java    |    4 +-
 .../netty4/DefaultServerInitializerFactory.java    |    4 +-
 .../camel/component/netty4/NettyComponent.java     |    6 +-
 .../camel/component/netty4/NettyConfiguration.java |    7 +-
 .../camel/component/netty4/NettyConsumer.java      |    4 +-
 .../netty4/NettyConsumerExceptionHandler.java      |    2 +-
 .../camel/component/netty4/NettyEndpoint.java      |    2 +-
 .../camel/component/netty4/NettyProducer.java      |    8 +-
 .../netty4/NettyServerBootstrapConfiguration.java  |    3 +-
 .../SingleTCPNettyServerBootstrapFactory.java      |    4 +-
 .../SingleUDPNettyServerBootstrapFactory.java      |    4 +-
 .../netty4/TimeoutCorrelationManagerSupport.java   |    4 +-
 .../netty4/handlers/ClientChannelHandler.java      |    2 +-
 .../netty4/handlers/ServerChannelHandler.java      |    2 +-
 .../component/netty4/ssl/SSLEngineFactory.java     |    3 +-
 .../camel/component/netty4/NettyConverterTest.java |    2 +-
 .../NettyGlobalSSLContextParametersTest.java       |   12 +-
 .../netty4/NettySSLContextParametersTest.java      |   12 +-
 .../camel-ognl/src/test/resources/jndi.properties  |    2 +-
 .../camel/component/olingo2/Olingo2Component.java  |   10 +-
 .../component/olingo2/Olingo2Configuration.java    |    2 +-
 .../camel/component/olingo2/Olingo2Consumer.java   |    7 +-
 .../camel/component/olingo2/Olingo2Endpoint.java   |    6 +-
 .../camel/component/olingo2/Olingo2Producer.java   |    7 +-
 .../olingo2/internal/Olingo2PropertiesHelper.java  |    2 +-
 .../olingo2/AbstractOlingo2TestSupport.java        |    2 +-
 .../camel/component/olingo4/Olingo4Component.java  |   10 +-
 .../component/olingo4/Olingo4Configuration.java    |    2 +-
 .../camel/component/olingo4/Olingo4Consumer.java   |    7 +-
 .../camel/component/olingo4/Olingo4Endpoint.java   |    6 +-
 .../camel/component/olingo4/Olingo4Producer.java   |    7 +-
 .../olingo4/internal/Olingo4PropertiesHelper.java  |    2 +-
 .../olingo4/AbstractOlingo4TestSupport.java        |    2 +-
 .../openstack/cinder/CinderComponent.java          |    2 +-
 .../common/AbstractOpenstackEndpoint.java          |    2 +-
 .../common/AbstractOpenstackProducer.java          |    2 +-
 .../openstack/glance/GlanceComponent.java          |    2 +-
 .../openstack/keystone/KeystoneComponent.java      |    2 +-
 .../openstack/neutron/NeutronComponent.java        |    2 +-
 .../component/openstack/nova/NovaComponent.java    |    2 +-
 .../component/openstack/swift/SwiftComponent.java  |    2 +-
 .../openstack/AbstractProducerTestSupport.java     |    2 +-
 .../camel/opentracing/OpenTracingTracer.java       |   10 +-
 .../optaplanner/OptaPlannerComponent.java          |    2 +-
 .../component/optaplanner/OptaPlannerConsumer.java |    2 +-
 .../component/optaplanner/OptaPlannerEndpoint.java |    2 +-
 .../component/optaplanner/OptaPlannerProducer.java |    2 +-
 .../apache/camel/component/paho/PahoComponent.java |    2 +-
 .../apache/camel/component/paho/PahoConsumer.java  |    2 +-
 .../apache/camel/component/paho/PahoEndpoint.java  |    2 +-
 .../apache/camel/component/paho/PahoMessage.java   |    2 +-
 .../apache/camel/component/paho/PahoProducer.java  |    2 +-
 .../component/paxlogging/PaxLoggingComponent.java  |    2 +-
 .../component/paxlogging/PaxLoggingConsumer.java   |    2 +-
 .../component/paxlogging/PaxLoggingEndpoint.java   |    2 +-
 .../apache/camel/component/pdf/PdfComponent.java   |    2 +-
 .../apache/camel/component/pdf/PdfEndpoint.java    |    2 +-
 .../apache/camel/component/pdf/PdfProducer.java    |    2 +-
 .../camel/component/pgevent/PgEventComponent.java  |    2 +-
 .../camel/component/pgevent/PgEventConsumer.java   |    2 +-
 .../camel/component/pgevent/PgEventEndpoint.java   |    2 +-
 .../camel/component/pgevent/PgEventProducer.java   |    2 +-
 .../camel/component/printer/PrinterComponent.java  |    2 +-
 .../camel/component/printer/PrinterEndpoint.java   |    2 +-
 .../camel/component/printer/PrinterProducer.java   |    2 +-
 .../camel/component/pubnub/PubNubComponent.java    |    2 +-
 .../camel/component/pubnub/PubNubConsumer.java     |    2 +-
 .../camel/component/pubnub/PubNubEndpoint.java     |    2 +-
 .../camel/component/pubnub/PubNubProducer.java     |    2 +-
 .../camel/component/quartz2/QuartzComponent.java   |    6 +-
 .../camel/component/quartz2/QuartzConsumer.java    |    2 +-
 .../camel/component/quartz2/QuartzEndpoint.java    |    4 +-
 .../camel/component/quartz2/QuartzMessage.java     |    2 +-
 .../QuartzScheduledPollConsumerScheduler.java      |    4 +-
 .../quartz2/CronScheduledRoutePolicy.java          |    4 +-
 .../routepolicy/quartz2/ScheduledRoutePolicy.java  |    6 +-
 .../quartz2/SimpleScheduledRoutePolicy.java        |    4 +-
 .../quartz2/DelegateEndpointQuartzTest.java        |    4 +-
 .../quartz2/CronScheduledRoutePolicyTest.java      |    2 +-
 .../quartz2/SimpleScheduledRoutePolicyTest.java    |    2 +-
 .../quartz2/SpringScheduledRoutePolicyTest.java    |    2 +-
 .../component/quickfixj/MessagePredicate.java      |    3 +-
 .../component/quickfixj/QuickfixjComponent.java    |    2 +-
 .../component/quickfixj/QuickfixjConsumer.java     |    2 +-
 .../component/quickfixj/QuickfixjEndpoint.java     |    2 +-
 .../component/quickfixj/QuickfixjProducer.java     |    2 +-
 .../quickfixj/converter/QuickfixjConverters.java   |    6 +-
 .../quickfixj/QuickfixjComponentTest.java          |    2 +-
 .../quickfixj/QuickfixjConvertersTest.java         |    2 +-
 .../examples/routing/FixMessageRouter.java         |    4 +-
 .../examples/trading/TradeExecutorComponent.java   |    8 +-
 .../component/rabbitmq/RabbitMQComponent.java      |    4 +-
 .../camel/component/rabbitmq/RabbitMQConsumer.java |    4 +-
 .../camel/component/rabbitmq/RabbitMQEndpoint.java |    5 +-
 .../rabbitmq/RabbitMQMessageConverter.java         |    2 +-
 .../camel/component/rabbitmq/RabbitMQProducer.java |    7 +-
 .../rabbitmq/reply/ReplyManagerSupport.java        |    4 +-
 .../rabbitmq/RabbitMQProducerIntTest.java          |    2 +-
 .../component/rabbitmq/RabbitMQProducerTest.java   |    2 +-
 .../reactive/streams/ReactiveStreamsComponent.java |    4 +-
 .../reactive/streams/ReactiveStreamsConsumer.java  |    2 +-
 .../reactive/streams/ReactiveStreamsEndpoint.java  |    2 +-
 .../reactive/streams/ReactiveStreamsHelper.java    |    4 +-
 .../reactive/streams/ReactiveStreamsProducer.java  |    2 +-
 .../engine/DefaultCamelReactiveStreamsService.java |   10 +-
 .../streams/util/ConvertingSubscriber.java         |    2 +-
 .../streams/util/UnwrapStreamProcessor.java        |    2 +-
 .../reactive/streams/ExchangeRequestTest.java      |    2 +-
 .../tck/CamelSubscriberVerificationTest.java       |    2 +-
 .../reactor/engine/ReactorStreamsServiceTest.java  |    4 +-
 .../src/main/docs/rest-swagger-component.adoc      |    2 +-
 .../rest/swagger/RestSwaggerComponent.java         |    4 +-
 .../rest/swagger/RestSwaggerEndpoint.java          |    6 +-
 .../camel/component/rest/swagger/HttpsTest.java    |    6 +-
 .../rest/swagger/RestSwaggerDelegateHttpsTest.java |    2 +-
 .../src/main/docs/restlet-component.adoc           |    2 +-
 .../component/restlet/DefaultRestletBinding.java   |    8 +-
 .../component/restlet/DefaultRestletHost.java      |    2 +-
 .../camel/component/restlet/RestletComponent.java  |    6 +-
 .../camel/component/restlet/RestletConsumer.java   |    2 +-
 .../camel/component/restlet/RestletEndpoint.java   |    5 +-
 .../camel/component/restlet/RestletProducer.java   |    4 +-
 .../component/restlet/RestletContentTypeTest.java  |    2 +-
 ...letHttpsWithGlobalSSLContextParametersTest.java |    6 +-
 .../RestletHttpsWithSSLContextParametersTest.java  |    6 +-
 .../ribbon/cloud/RibbonServiceLoadBalancer.java    |    2 +-
 .../apache/camel/component/rmi/RmiComponent.java   |    2 +-
 .../apache/camel/component/rmi/RmiConsumer.java    |    2 +-
 .../apache/camel/component/rmi/RmiEndpoint.java    |    2 +-
 .../apache/camel/component/rmi/RmiProducer.java    |    2 +-
 .../apache/camel/component/rmi/RmiRouteTest.java   |    2 +-
 .../camel/component/rss/UpdatedDateFilter.java     |    2 +-
 .../apache/camel/dataformat/rss/RssDataFormat.java |    2 +-
 .../rss/RssEntryPollingConsumerWithFilterTest.java |    2 +-
 .../camel/component/rss/RssEntrySortTest.java      |    2 +-
 .../apache/camel/component/rss/RssFilterTest.java  |    2 +-
 .../rxjava2/engine/RxJavaStreamsServiceTest.java   |    4 +-
 .../src/main/docs/salesforce-component.adoc        |    4 +-
 .../salesforce/SalesforceClientTemplate.java       |    2 +-
 .../component/salesforce/SalesforceComponent.java  |   10 +-
 .../component/salesforce/SalesforceConsumer.java   |    4 +-
 .../component/salesforce/SalesforceEndpoint.java   |    2 +-
 .../salesforce/SalesforceLoginConfig.java          |    2 +-
 .../salesforce/SalesforceMetaDataExtension.java    |    6 +-
 .../component/salesforce/SalesforceProducer.java   |    4 +-
 .../salesforce/internal/SalesforceSession.java     |    2 +-
 .../internal/processor/AbstractRestProcessor.java  |    2 +-
 .../internal/processor/AnalyticsApiProcessor.java  |    2 +-
 .../internal/processor/BulkApiProcessor.java       |    2 +-
 .../internal/processor/CompositeApiProcessor.java  |    2 +-
 .../salesforce/BulkApiIntegrationTest.java         |    2 +-
 .../component/salesforce/LoginConfigHelper.java    |    2 +-
 .../salesforce/RestApiIntegrationTest.java         |    2 +-
 .../salesforce/SalesforceLoginConfigTest.java      |    2 +-
 .../salesforce/internal/SalesforceSessionTest.java |    2 +-
 .../internal/SessionIntegrationTest.java           |    2 +-
 .../internal/client/AbstractClientBaseTest.java    |    4 +-
 .../AbstractRestProcessorApprovalTest.java         |    4 +-
 .../internal/processor/JsonRestProcessorTest.java  |    4 +-
 .../apache/camel/maven/AbstractSalesforceMojo.java |    6 +-
 .../java/org/apache/camel/maven/GenerateMojo.java  |    2 +-
 .../sap/netweaver/NetWeaverComponent.java          |    2 +-
 .../component/sap/netweaver/NetWeaverEndpoint.java |    2 +-
 .../component/sap/netweaver/NetWeaverProducer.java |    6 +-
 .../camel/component/xquery/XQueryBuilder.java      |    2 +-
 .../camel/component/xquery/XQueryComponent.java    |    4 +-
 .../camel/component/xquery/XQueryEndpoint.java     |    6 +-
 .../camel/builder/XsltAggregationStrategyTest.java |   78 ++
 .../builder/saxon/BeanWithXQueryInjectionTest.java |    2 +-
 .../camel/builder/saxon/ParameterDynamicTest.java  |    2 +-
 .../saxon/XPathAnnotationResultTypeTest.java       |    2 +-
 .../org/apache/camel/builder/saxon/XQueryTest.java |    2 +-
 ...eanWithXQueryInjectionUsingHeaderValueTest.java |    2 +-
 .../xquery/XQueryStripWhitespaceTest.java          |    2 +-
 .../camel/component/xslt/SaxonUriResolverTest.java |    2 +-
 .../camel/component/xslt/SaxonXsltDTDTest.java     |    2 +-
 .../camel/converter/saxon/SaxonConverterTest.java  |    2 +-
 .../util/toolbox/XsltAggregationStrategyTest.java  |   78 --
 .../component/schematron/SchematronComponent.java  |    2 +-
 .../component/schematron/SchematronEndpoint.java   |    4 +-
 .../component/schematron/SchematronProducer.java   |    2 +-
 .../schematron/SchematronEndpointTest.java         |    5 +-
 .../schematron/SchematronProducerTest.java         |    2 +-
 .../apache/camel/builder/script/ScriptBuilder.java |    3 +-
 .../camel/component/service/ServiceComponent.java  |    2 +-
 .../camel/component/service/ServiceConsumer.java   |    4 +-
 .../camel/component/service/ServiceEndpoint.java   |    2 +-
 .../component/servicenow/ServiceNowClient.java     |    5 +-
 .../component/servicenow/ServiceNowComponent.java  |    6 +-
 .../servicenow/ServiceNowConfiguration.java        |    2 +-
 .../component/servicenow/ServiceNowEndpoint.java   |    2 +-
 .../servicenow/ServiceNowMetaDataExtension.java    |    2 +-
 .../servicenow/ServiceNowAttachmentTest.java       |    2 +-
 .../camel/maven/CamelServiceNowGenerateMojo.java   |    2 +-
 .../component/servlet/AttachmentHttpBinding.java   |    2 +-
 .../shiro/security/ShiroSecurityProcessor.java     |    2 +-
 .../apache/camel/component/sip/SipComponent.java   |    2 +-
 .../apache/camel/component/sip/SipEndpoint.java    |    2 +-
 .../camel/component/sip/SipPresenceAgent.java      |    2 +-
 .../apache/camel/component/sip/SipPublisher.java   |    2 +-
 .../apache/camel/component/sip/SipSubscriber.java  |    2 +-
 .../apache/camel/component/sjms/SjmsConsumer.java  |    2 +-
 .../apache/camel/component/sjms/SjmsEndpoint.java  |    8 +-
 .../apache/camel/component/sjms/SjmsMessage.java   |    4 +-
 .../apache/camel/component/sjms/SjmsProducer.java  |    6 +-
 .../component/sjms/batch/SjmsBatchConsumer.java    |    5 +-
 .../component/sjms/batch/SjmsBatchEndpoint.java    |    2 +-
 .../sjms/consumer/AbstractMessageHandler.java      |    2 +-
 .../camel/component/sjms/jms/JmsBinding.java       |    4 +-
 .../camel/component/sjms/jms/JmsMessageHelper.java |    2 +-
 .../sjms/batch/SjmsBatchEndpointTest.java          |    2 +-
 .../component/sjms/support/MyAsyncComponent.java   |    2 +-
 .../component/sjms/support/MyAsyncEndpoint.java    |    2 +-
 .../component/sjms/support/MyAsyncProducer.java    |    2 +-
 .../camel/component/slack/SlackComponent.java      |    2 +-
 .../camel/component/slack/SlackConsumer.java       |    2 +-
 .../camel/component/slack/SlackEndpoint.java       |    3 +-
 .../camel/component/slack/SlackProducer.java       |    6 +-
 .../apache/camel/component/smpp/SmppComponent.java |    2 +-
 .../apache/camel/component/smpp/SmppConsumer.java  |    2 +-
 .../apache/camel/component/smpp/SmppEndpoint.java  |    2 +-
 .../apache/camel/component/smpp/SmppMessage.java   |    6 +-
 .../apache/camel/component/smpp/SmppProducer.java  |    2 +-
 .../component/smpp/AbstractSmppCommandTest.java    |    2 +-
 .../camel/component/smpp/SmppBindingTest.java      |    2 +-
 .../component/smpp/SmppCancelSmCommandTest.java    |    2 +-
 .../camel/component/smpp/SmppCommandTypeTest.java  |    2 +-
 .../component/smpp/SmppDataSmCommandTest.java      |    2 +-
 .../component/smpp/SmppQuerySmCommandTest.java     |    2 +-
 .../component/smpp/SmppReplaceSmCommandTest.java   |    2 +-
 .../component/smpp/SmppSubmitMultiCommandTest.java |    2 +-
 .../component/smpp/SmppSubmitSmCommandTest.java    |    2 +-
 .../component/snakeyaml/SnakeYAMLDataFormat.java   |    6 +-
 .../apache/camel/component/snmp/SnmpComponent.java |    2 +-
 .../apache/camel/component/snmp/SnmpEndpoint.java  |    2 +-
 .../apache/camel/component/snmp/SnmpMessage.java   |    2 +-
 .../apache/camel/component/snmp/SnmpOIDPoller.java |    2 +-
 .../apache/camel/component/snmp/SnmpProducer.java  |    2 +-
 .../camel/component/snmp/SnmpTrapConsumer.java     |    2 +-
 .../camel/component/snmp/SnmpTrapProducer.java     |    2 +-
 .../apache/camel/component/solr/SolrComponent.java |    2 +-
 .../apache/camel/component/solr/SolrEndpoint.java  |    2 +-
 .../apache/camel/component/solr/SolrProducer.java  |    2 +-
 .../camel/component/sparkrest/CamelSparkRoute.java |    4 +-
 .../component/sparkrest/DefaultSparkBinding.java   |    6 +-
 .../camel/component/sparkrest/SparkComponent.java  |    2 +-
 .../camel/component/sparkrest/SparkConsumer.java   |    2 +-
 .../camel/component/sparkrest/SparkEndpoint.java   |    2 +-
 .../camel/component/sparkrest/SparkMessage.java    |    2 +-
 .../component/spark/DataFrameSparkProducer.java    |    2 +-
 .../camel/component/spark/HiveSparkProducer.java   |    2 +-
 .../camel/component/spark/RddSparkProducer.java    |    2 +-
 .../camel/component/spark/SparkComponent.java      |    2 +-
 .../camel/component/spark/SparkEndpoint.java       |    2 +-
 .../camel/component/splunk/SplunkComponent.java    |    2 +-
 .../camel/component/splunk/SplunkConsumer.java     |    2 +-
 .../camel/component/splunk/SplunkEndpoint.java     |    2 +-
 .../camel/component/splunk/SplunkProducer.java     |    2 +-
 .../spring/batch/SpringBatchComponent.java         |    2 +-
 .../spring/batch/SpringBatchEndpoint.java          |    4 +-
 .../spring/batch/SpringBatchProducer.java          |    4 +-
 .../spring/batch/support/CamelItemReader.java      |    2 +-
 .../camel/spring/boot/CamelAutoConfiguration.java  |    2 +-
 .../apache/camel/spring/boot/RoutesCollector.java  |    2 +-
 .../boot/SpringBootXmlCamelContextConfigurer.java  |    4 +-
 .../boot/actuate/endpoint/CamelRoutesEndpoint.java |    3 +-
 .../boot/security/CamelSSLAutoConfiguration.java   |    4 +-
 .../security/CamelSSLConfigurationProperties.java  |   18 +-
 .../spring/boot/util/CamelPropertiesHelper.java    |    4 +-
 .../spring/boot/LogListenerDiscoveryTest.java      |    2 +-
 .../camel/spring/boot/dummy/DummyComponent.java    |    2 +-
 .../camel/spring/boot/dummy/DummyConsumer.java     |    2 +-
 .../camel/spring/boot/dummy/DummyEndpoint.java     |    2 +-
 .../security/CamelSSLAutoConfigurationTest.java    |    2 +-
 .../spring/boot/security/CamelSSLNoConfigTest.java |    2 +-
 .../integration/SpringIntegrationComponent.java    |    2 +-
 .../integration/SpringIntegrationConsumer.java     |    2 +-
 .../integration/SpringIntegrationEndpoint.java     |    3 +-
 .../integration/SpringIntegrationMessage.java      |    2 +-
 .../integration/SpringIntegrationProducer.java     |    2 +-
 .../integration/adapter/CamelSourceAdapter.java    |    2 +-
 .../integration/adapter/CamelTargetAdapter.java    |    2 +-
 .../component/springldap/SpringLdapComponent.java  |    2 +-
 .../component/springldap/SpringLdapEndpoint.java   |    2 +-
 .../component/springldap/SpringLdapProducer.java   |    2 +-
 .../springldap/SpringLdapProducerTest.java         |    4 +-
 .../camel/component/redis/RedisComponent.java      |    2 +-
 .../camel/component/redis/RedisConsumer.java       |    2 +-
 .../camel/component/redis/RedisEndpoint.java       |    2 +-
 .../spring/ws/SpringWebserviceComponent.java       |    6 +-
 .../spring/ws/SpringWebserviceConfiguration.java   |    2 +-
 .../spring/ws/SpringWebserviceConsumer.java        |    2 +-
 .../spring/ws/SpringWebserviceEndpoint.java        |    2 +-
 .../spring/ws/SpringWebserviceMessage.java         |    2 +-
 .../spring/ws/SpringWebserviceProducer.java        |    4 +-
 .../impl/HeaderTransformationMessageFilter.java    |    2 +-
 .../camel/component/event/EventComponent.java      |    2 +-
 .../camel/component/event/EventConsumer.java       |    2 +-
 .../camel/component/event/EventEndpoint.java       |    6 +-
 .../camel/spring/CamelBeanPostProcessor.java       |    2 +-
 .../camel/spring/CamelContextFactoryBean.java      |    8 +-
 .../apache/camel/spring/SpringCamelContext.java    |    4 +-
 .../spring/remoting/CamelProxyFactoryBean.java     |    2 +-
 .../spring/remoting/CamelServiceExporter.java      |    4 +-
 .../apache/camel/spring/spi/SpringInjector.java    |   11 -
 .../camel/spring/spi/SpringTransactionPolicy.java  |    3 +-
 .../camel/spring/spi/TransactionErrorHandler.java  |    7 +-
 .../spring/spi/TransactionErrorHandlerBuilder.java |    2 +-
 .../spring/KeyManagersParametersFactoryBean.java   |    2 +-
 .../util/spring/KeyStoreParametersFactoryBean.java |    2 +-
 .../SSLContextClientParametersFactoryBean.java     |    2 +-
 .../spring/SSLContextParametersFactoryBean.java    |    2 +-
 .../SSLContextServerParametersFactoryBean.java     |    2 +-
 .../spring/SecureRandomParametersFactoryBean.java  |    2 +-
 .../spring/TrustManagersParametersFactoryBean.java |    2 +-
 .../camel/spring/CamelContextFactoryBeanTest.java  |    2 +-
 .../org/apache/camel/spring/bind/BeanInfoTest.java |    2 +-
 .../DualCamelContextEndpointOutsideTest.java       |    2 +-
 ...lContextCustomDefaultThreadPoolProfileTest.java |    2 +-
 ...ingCamelContextCustomThreadPoolProfileTest.java |    2 +-
 ...xtSimpleCustomDefaultThreadPoolProfileTest.java |    2 +-
 .../SpringCamelContextThreadPoolProfilesTest.java  |    2 +-
 .../camel/spring/util/EndpointHelperTest.java      |    2 +-
 .../spring/KeyStoreParametersFactoryBeanTest.java  |    2 +-
 .../SSLContextParametersFactoryBeanTest.java       |    6 +-
 .../SecureRandomParametersFactoryBeanTest.java     |    2 +-
 .../camel/component/sql/DefaultSqlEndpoint.java    |    2 +-
 .../sql/DefaultSqlPrepareStatementStrategy.java    |    2 +-
 .../apache/camel/component/sql/SqlComponent.java   |    4 +-
 .../apache/camel/component/sql/SqlConsumer.java    |    5 +-
 .../org/apache/camel/component/sql/SqlHelper.java  |    2 +-
 .../apache/camel/component/sql/SqlProducer.java    |    2 +-
 .../stored/CallableStatementWrapperFactory.java    |    2 +-
 .../component/sql/stored/SqlStoredComponent.java   |    2 +-
 .../component/sql/stored/SqlStoredEndpoint.java    |    2 +-
 .../component/sql/stored/SqlStoredProducer.java    |    2 +-
 .../aggregate/jdbc/JdbcAggregationRepository.java  |    3 +-
 .../processor/aggregate/jdbc/JdbcCamelCodec.java   |    2 +-
 .../camel/component/sql/stored/ParserTest.java     |    2 +-
 .../ClassLoadingAwareObjectInputStreamTest.java    |    2 +-
 .../JdbcAggregationRepositoryAlotDataTest.java     |    2 +-
 .../JdbcAggregationRepositoryMultipleRepoTest.java |    2 +-
 ...bcAggregationRepositoryRecoverExistingTest.java |    2 +-
 .../jdbc/JdbcAggregationRepositoryTest.java        |    2 +-
 .../jdbc/JdbcExchangeSerializationTest.java        |    2 +-
 .../aggregate/jdbc/JdbcGetNotFoundTest.java        |    2 +-
 .../aggregate/jdbc/JdbcGrowIssueTest.java          |    2 +-
 .../camel-sql/src/test/resources/jndi.properties   |    2 +-
 .../component/ssh/ResourceBasedSSHKeyVerifier.java |    2 +-
 .../ssh/ResourceHelperKeyPairProvider.java         |    2 +-
 .../apache/camel/component/ssh/SshComponent.java   |    2 +-
 .../apache/camel/component/ssh/SshConsumer.java    |    2 +-
 .../apache/camel/component/ssh/SshEndpoint.java    |    2 +-
 .../apache/camel/component/ssh/SshProducer.java    |    2 +-
 .../apache/camel/component/stax/StAXComponent.java |    2 +-
 .../apache/camel/component/stax/StAXEndpoint.java  |    4 +-
 .../component/stax/StAXJAXBIteratorExpression.java |    2 +-
 .../apache/camel/component/stax/StAXProcessor.java |    2 +-
 .../org/apache/camel/component/stax/StAXUtil.java  |    2 +-
 .../camel/component/stomp/StompConfiguration.java  |    2 +-
 .../camel/component/stomp/StompConsumer.java       |    2 +-
 .../camel/component/stomp/StompEndpoint.java       |    4 +-
 .../camel/component/stomp/StompProducer.java       |    2 +-
 .../camel/component/stomp/StompBaseTest.java       |    8 +-
 .../component/stream/FileWatcherStrategy.java      |    3 +-
 .../camel/component/stream/StreamComponent.java    |    2 +-
 .../camel/component/stream/StreamConsumer.java     |    4 +-
 .../camel/component/stream/StreamEndpoint.java     |    2 +-
 .../camel/component/stream/StreamProducer.java     |    2 +-
 .../component/stream/SplitStreamFileTest.java      |    2 +-
 .../stringtemplate/StringTemplateComponent.java    |    4 +-
 .../stringtemplate/StringTemplateEndpoint.java     |    2 +-
 .../apache/camel/swagger/RestSwaggerProcessor.java |    2 +-
 .../apache/camel/swagger/RestSwaggerReader.java    |   28 +-
 .../apache/camel/swagger/RestSwaggerSupport.java   |    2 +-
 .../camel/swagger/SwaggerRestProducerFactory.java  |    2 +-
 .../swagger/producer/DummyRestProducerFactory.java |    2 +-
 .../camel/component/syslog/SyslogDataFormat.java   |    2 +-
 .../camel/dataformat/tarfile/TarIterator.java      |    2 +-
 .../component/telegram/TelegramComponent.java      |    2 +-
 .../camel/component/telegram/TelegramConsumer.java |    2 +-
 .../camel/component/telegram/TelegramEndpoint.java |    2 +-
 .../camel/component/telegram/TelegramProducer.java |    2 +-
 .../camel/test/blueprint/CamelBlueprintHelper.java |   12 +-
 .../camel/test/karaf/CamelKarafTestSupport.java    |    8 +-
 .../src/test/resources/jndi.properties             |    2 +-
 ...lSpringRunnerTestPropertySourceTest-context.xml |    2 +-
 .../apache/camel/test/junit4/CamelTestSupport.java |    7 +-
 .../camel/test/junit4/ExchangeTestSupport.java     |    2 +-
 .../org/apache/camel/test/junit4/TestSupport.java  |    7 +-
 .../camel/test/patterns/AsyncSendMockTest.java     |    2 +-
 .../camel-test/src/test/resources/jndi.properties  |    2 +-
 .../camel/component/thrift/ThriftComponent.java    |    4 +-
 .../component/thrift/ThriftConfiguration.java      |    2 +-
 .../camel/component/thrift/ThriftConsumer.java     |    4 +-
 .../camel/component/thrift/ThriftEndpoint.java     |    2 +-
 .../camel/component/thrift/ThriftProducer.java     |    4 +-
 .../apache/camel/component/thrift/ThriftUtils.java |    2 +-
 .../thrift/ThriftConsumerSecurityTest.java         |    6 +-
 .../thrift/ThriftProducerSecurityTest.java         |    6 +-
 .../apache/camel/component/tika/TikaComponent.java |    2 +-
 .../apache/camel/component/tika/TikaEndpoint.java  |    2 +-
 .../apache/camel/component/tika/TikaProducer.java  |    2 +-
 .../camel/component/twilio/TwilioComponent.java    |    2 +-
 .../camel/component/twilio/TwilioConsumer.java     |    2 +-
 .../camel/component/twilio/TwilioEndpoint.java     |    8 +-
 .../camel/component/twilio/TwilioProducer.java     |    4 +-
 .../twilio/internal/TwilioPropertiesHelper.java    |    2 +-
 .../twilio/AbstractTwilioTestSupport.java          |    2 +-
 .../twitter/AbstractTwitterComponent.java          |    2 +-
 .../component/twitter/AbstractTwitterEndpoint.java |    2 +-
 .../twitter/consumer/DefaultTwitterConsumer.java   |    2 +-
 .../directmessage/DirectMessageProducer.java       |    2 +-
 .../component/twitter/search/SearchProducer.java   |    2 +-
 .../component/twitter/timeline/UserProducer.java   |    2 +-
 .../src/main/docs/undertow-component.adoc          |    2 +-
 .../undertow/DefaultUndertowHttpBinding.java       |   10 +-
 .../component/undertow/UndertowClientCallback.java |    2 +-
 .../component/undertow/UndertowComponent.java      |   10 +-
 .../camel/component/undertow/UndertowConsumer.java |    2 +-
 .../camel/component/undertow/UndertowEndpoint.java |    4 +-
 .../camel/component/undertow/UndertowProducer.java |    2 +-
 .../undertow/ws/UndertowWssRouteTest.java          |   10 +-
 .../univocity/AbstractUniVocityDataFormat.java     |    2 +-
 .../camel/dataformat/univocity/Marshaller.java     |    4 +-
 .../component/velocity/VelocityComponent.java      |    4 +-
 .../camel/component/velocity/VelocityEndpoint.java |    4 +-
 .../camel/component/vertx/VertxComponent.java      |    2 +-
 .../camel/component/vertx/VertxConsumer.java       |    2 +-
 .../camel/component/vertx/VertxEndpoint.java       |    2 +-
 .../camel/component/vertx/VertxProducer.java       |    6 +-
 .../camel/component/weather/WeatherComponent.java  |    2 +-
 .../component/weather/WeatherConfiguration.java    |    3 +-
 .../camel/component/weather/WeatherConsumer.java   |    2 +-
 .../camel/component/weather/WeatherEndpoint.java   |    2 +-
 .../camel/component/weather/WeatherProducer.java   |    2 +-
 .../camel/component/web3j/Web3jComponent.java      |    2 +-
 .../camel/component/web3j/Web3jConsumer.java       |    2 +-
 .../camel/component/web3j/Web3jEndpoint.java       |    2 +-
 .../component/web3j/Web3jMockTestSupport.java      |    2 +-
 .../integration/Web3jIntegrationTestSupport.java   |    2 +-
 .../src/main/docs/websocket-component.adoc         |    2 +-
 .../component/websocket/WebsocketComponent.java    |    4 +-
 .../component/websocket/WebsocketConsumer.java     |    2 +-
 .../component/websocket/WebsocketEndpoint.java     |    4 +-
 .../component/websocket/WebsocketProducer.java     |    2 +-
 .../WebsocketSSLContextGlobalRouteExampleTest.java |   10 +-
 .../WebsocketSSLContextInUriRouteExampleTest.java  |   10 +-
 .../websocket/WebsocketSSLRouteExampleTest.java    |   10 +-
 .../component/wordpress/WordpressComponent.java    |    4 +-
 .../wordpress/WordpressComponentConfiguration.java |    2 +-
 .../component/wordpress/WordpressEndpoint.java     |    6 +-
 .../consumer/AbstractWordpressConsumer.java        |    2 +-
 .../producer/AbstractWordpressProducer.java        |    2 +-
 .../component/xchange/XChangeAccountProducer.java  |    2 +-
 .../camel/component/xchange/XChangeComponent.java  |    2 +-
 .../camel/component/xchange/XChangeEndpoint.java   |    2 +-
 .../xchange/XChangeMarketDataProducer.java         |    2 +-
 .../component/xchange/XChangeMetaDataProducer.java |    2 +-
 .../xmlsecurity/XmlSignatureComponent.java         |    2 +-
 .../xmlsecurity/XmlSignatureEndpoint.java          |    2 +-
 .../xmlsecurity/XmlSignatureProducer.java          |    2 +-
 .../xmlsecurity/api/DefaultKeySelector.java        |    2 +-
 .../api/DefaultXAdESSignatureProperties.java       |    2 +-
 .../processor/XmlSignatureProcessor.java           |    2 +-
 .../xmlsecurity/XMLSecurityDataFormat.java         |    2 +-
 .../xmlsecurity/EncryptionAlgorithmTest.java       |    2 +-
 .../xmlsecurity/XMLEncryption11Test.java           |    2 +-
 .../xmlsecurity/XMLSecurityDataFormatTest.java     |    2 +-
 .../apache/camel/component/xmpp/XmppComponent.java |    4 +-
 .../apache/camel/component/xmpp/XmppConsumer.java  |    2 +-
 .../camel/component/xmpp/XmppDirectProducer.java   |    2 +-
 .../apache/camel/component/xmpp/XmppEndpoint.java  |    2 +-
 .../component/xmpp/XmppGroupChatProducer.java      |    2 +-
 .../apache/camel/component/xmpp/XmppMessage.java   |    4 +-
 .../component/xmpp/XmppPrivateChatProducer.java    |    2 +-
 .../camel/component/xmpp/XmppPubSubProducer.java   |    2 +-
 .../dataformat/xstream/AbstractXStreamWrapper.java |    4 +-
 .../dataformat/xstream/XStreamDataFormat.java      |    1 -
 .../camel/component/yammer/YammerComponent.java    |    2 +-
 .../camel/component/yammer/YammerEndpoint.java     |    2 +-
 .../yammer/YammerMessagePollingConsumer.java       |    2 +-
 .../component/yammer/YammerMessageProducer.java    |    2 +-
 .../yammer/YammerRelationshipPollingConsumer.java  |    2 +-
 .../yammer/YammerUserPollingConsumer.java          |    2 +-
 .../apache/camel/component/yql/YqlComponent.java   |    2 +-
 .../apache/camel/component/yql/YqlEndpoint.java    |    2 +-
 .../apache/camel/component/yql/YqlProducer.java    |    2 +-
 .../camel/component/zendesk/ZendeskComponent.java  |    2 +-
 .../camel/component/zendesk/ZendeskConsumer.java   |    2 +-
 .../camel/component/zendesk/ZendeskEndpoint.java   |    6 +-
 .../camel/component/zendesk/ZendeskProducer.java   |    2 +-
 .../zendesk/internal/ZendeskPropertiesHelper.java  |    2 +-
 .../zendesk/AbstractZendeskTestSupport.java        |    2 +-
 .../camel/dataformat/zipfile/ZipIterator.java      |    2 +-
 .../camel/zipkin/ZipkinClientRequestAdapter.java   |    2 +-
 .../camel/zipkin/ZipkinClientResponseAdaptor.java  |    2 +-
 .../camel/zipkin/ZipkinServerRequestAdapter.java   |    2 +-
 .../camel/zipkin/ZipkinServerResponseAdapter.java  |    2 +-
 .../java/org/apache/camel/zipkin/ZipkinTracer.java |    7 +-
 .../component/zookeepermaster/MasterConsumer.java  |    4 +-
 .../component/zookeepermaster/MasterEndpoint.java  |    2 +-
 .../zookeepermaster/ZookeeperComponentSupport.java |    4 +-
 .../group/internal/ManagedGroupFactoryBuilder.java |    2 +-
 .../zookeepermaster/policy/MasterRoutePolicy.java  |    2 +-
 .../MasterEndpointFailoverTest.java                |    2 +-
 .../zookeepermaster/MasterEndpointTest.java        |    2 +-
 .../zookeepermaster/MasterQuartz2EndpointTest.java |    2 +-
 .../component/zookeeper/ConnectionHolder.java      |    5 +-
 .../component/zookeeper/ZooKeeperComponent.java    |    2 +-
 .../component/zookeeper/ZooKeeperConsumer.java     |    2 +-
 .../component/zookeeper/ZooKeeperEndpoint.java     |    2 +-
 .../component/zookeeper/ZooKeeperMessage.java      |    2 +-
 .../component/zookeeper/ZooKeeperProducer.java     |    4 +-
 .../camel/component/zookeeper/ZooKeeperUtils.java  |    2 +-
 .../component/zookeeper/ConsumeChildrenTest.java   |    2 +-
 .../component/zookeeper/ZooKeeperUtilsTest.java    |    2 +-
 .../connector/SpringBootAutoConfigurationMojo.java |    2 +-
 .../component/connector/ConnectorProducer.java     |    6 +-
 .../connector/DefaultConnectorComponent.java       |    4 +-
 .../connector/DefaultConnectorEndpoint.java        |    4 +-
 .../PetStoreConnectorAutoConfiguration.java        |    2 +-
 ...rceUpsertContactConnectorAutoConfiguration.java |    2 +-
 .../TwitterFindConnectorAutoConfiguration.java     |    2 +-
 .../TwitterMentionConnectorAutoConfiguration.java  |    2 +-
 .../en/camel-configuration-utilities.adoc          |    2 +-
 .../src/main/resources/jndi.properties             |    4 +-
 .../camel/commands/EndpointExplainCommand.java     |    2 +-
 .../camel/component/dummy/DummyComponent.java      |    2 +-
 .../camel/component/dummy/DummyEndpoint.java       |    2 +-
 .../camel/component/dummy/DummyProducer.java       |    2 +-
 .../springboot/AhcComponentAutoConfiguration.java  |    2 +-
 .../ahc/springboot/AhcComponentConfiguration.java  |    4 +-
 .../springboot/WsComponentAutoConfiguration.java   |    2 +-
 .../ws/springboot/WsComponentConfiguration.java    |    4 +-
 .../springboot/AMQPComponentAutoConfiguration.java |    2 +-
 .../springboot/ApnsComponentAutoConfiguration.java |    2 +-
 .../springboot/AS2ComponentAutoConfiguration.java  |    2 +-
 .../ASN1DataFormatAutoConfiguration.java           |    2 +-
 .../AsteriskComponentAutoConfiguration.java        |    2 +-
 .../AtmosComponentAutoConfiguration.java           |    2 +-
 .../WebsocketComponentAutoConfiguration.java       |    2 +-
 .../springboot/AtomComponentAutoConfiguration.java |    2 +-
 .../AtomixMapComponentAutoConfiguration.java       |    2 +-
 .../AtomixMessagingComponentAutoConfiguration.java |    2 +-
 .../AtomixMultiMapComponentAutoConfiguration.java  |    2 +-
 .../AtomixQueueComponentAutoConfiguration.java     |    2 +-
 .../AtomixSetComponentAutoConfiguration.java       |    2 +-
 .../AtomixValueComponentAutoConfiguration.java     |    2 +-
 .../springboot/AvroComponentAutoConfiguration.java |    2 +-
 .../AvroDataFormatAutoConfiguration.java           |    2 +-
 .../springboot/CwComponentAutoConfiguration.java   |    2 +-
 .../springboot/DdbComponentAutoConfiguration.java  |    2 +-
 .../DdbStreamComponentAutoConfiguration.java       |    2 +-
 .../springboot/EC2ComponentAutoConfiguration.java  |    2 +-
 .../KinesisFirehoseComponentAutoConfiguration.java |    2 +-
 .../springboot/IAMComponentAutoConfiguration.java  |    2 +-
 .../KinesisComponentAutoConfiguration.java         |    2 +-
 .../springboot/KMSComponentAutoConfiguration.java  |    2 +-
 .../LambdaComponentAutoConfiguration.java          |    2 +-
 .../springboot/MQComponentAutoConfiguration.java   |    2 +-
 .../springboot/S3ComponentAutoConfiguration.java   |    2 +-
 .../springboot/SdbComponentAutoConfiguration.java  |    2 +-
 .../springboot/SesComponentAutoConfiguration.java  |    2 +-
 .../springboot/SnsComponentAutoConfiguration.java  |    2 +-
 .../springboot/SqsComponentAutoConfiguration.java  |    2 +-
 .../springboot/SWFComponentAutoConfiguration.java  |    2 +-
 .../BlobServiceComponentAutoConfiguration.java     |    2 +-
 .../QueueServiceComponentAutoConfiguration.java    |    2 +-
 .../BarcodeDataFormatAutoConfiguration.java        |    2 +-
 .../Base64DataFormatAutoConfiguration.java         |    2 +-
 .../BeanValidatorComponentAutoConfiguration.java   |    2 +-
 .../BeanIODataFormatAutoConfiguration.java         |    2 +-
 .../BeanstalkComponentAutoConfiguration.java       |    2 +-
 .../BindyCsvDataFormatAutoConfiguration.java       |    2 +-
 ...indyFixedLengthDataFormatAutoConfiguration.java |    2 +-
 ...ndyKeyValuePairDataFormatAutoConfiguration.java |    2 +-
 .../BonitaComponentAutoConfiguration.java          |    2 +-
 .../BoonDataFormatAutoConfiguration.java           |    2 +-
 .../springboot/BoxComponentAutoConfiguration.java  |    2 +-
 .../box/springboot/BoxComponentConfiguration.java  |    2 +-
 .../BraintreeComponentAutoConfiguration.java       |    2 +-
 .../CaffeineCacheComponentAutoConfiguration.java   |    2 +-
 ...affeineLoadCacheComponentAutoConfiguration.java |    2 +-
 .../CassandraComponentAutoConfiguration.java       |    2 +-
 .../ChronicleEngineComponentAutoConfiguration.java |    2 +-
 .../ChunkComponentAutoConfiguration.java           |    2 +-
 .../springboot/CMComponentAutoConfiguration.java   |    2 +-
 .../springboot/CMISComponentAutoConfiguration.java |    2 +-
 .../springboot/CoAPComponentAutoConfiguration.java |    2 +-
 .../CometdComponentAutoConfiguration.java          |    2 +-
 .../springboot/CometdComponentConfiguration.java   |    2 +-
 .../ConsulComponentAutoConfiguration.java          |    2 +-
 .../springboot/ConsulComponentConfiguration.java   |    8 +-
 .../ConsulServiceDiscoveryAutoConfiguration.java   |    2 +-
 .../ConsulServiceRegistryAutoConfiguration.java    |    2 +-
 .../ConsulClusterServiceAutoConfiguration.java     |    2 +-
 .../springboot/BeanComponentAutoConfiguration.java |    2 +-
 .../ClassComponentAutoConfiguration.java           |    2 +-
 .../BrowseComponentAutoConfiguration.java          |    2 +-
 .../ControlBusComponentAutoConfiguration.java      |    2 +-
 .../DataFormatComponentAutoConfiguration.java      |    2 +-
 .../DataSetComponentAutoConfiguration.java         |    2 +-
 .../DirectComponentAutoConfiguration.java          |    2 +-
 .../DirectVmComponentAutoConfiguration.java        |    2 +-
 .../springboot/FileComponentAutoConfiguration.java |    2 +-
 .../LanguageComponentAutoConfiguration.java        |    2 +-
 .../springboot/LogComponentAutoConfiguration.java  |    2 +-
 .../springboot/MockComponentAutoConfiguration.java |    2 +-
 .../PropertiesComponentAutoConfiguration.java      |    2 +-
 .../springboot/RefComponentAutoConfiguration.java  |    2 +-
 .../RestApiComponentAutoConfiguration.java         |    2 +-
 .../springboot/RestComponentAutoConfiguration.java |    2 +-
 .../springboot/SagaComponentAutoConfiguration.java |    2 +-
 .../SchedulerComponentAutoConfiguration.java       |    2 +-
 .../springboot/SedaComponentAutoConfiguration.java |    2 +-
 .../springboot/StubComponentAutoConfiguration.java |    2 +-
 .../springboot/TestComponentAutoConfiguration.java |    2 +-
 .../TimerComponentAutoConfiguration.java           |    2 +-
 .../ValidatorComponentAutoConfiguration.java       |    2 +-
 .../springboot/VmComponentAutoConfiguration.java   |    2 +-
 .../springboot/XsltComponentAutoConfiguration.java |    2 +-
 .../GzipDataFormatAutoConfiguration.java           |    2 +-
 .../SerializationDataFormatAutoConfiguration.java  |    2 +-
 .../StringDataFormatAutoConfiguration.java         |    2 +-
 .../springboot/ZipDataFormatAutoConfiguration.java |    2 +-
 .../springboot/BeanLanguageAutoConfiguration.java  |    2 +-
 .../ConstantLanguageAutoConfiguration.java         |    2 +-
 .../HeaderLanguageAutoConfiguration.java           |    2 +-
 .../ExchangePropertyLanguageAutoConfiguration.java |    2 +-
 .../springboot/RefLanguageAutoConfiguration.java   |    2 +-
 .../springboot/FileLanguageAutoConfiguration.java  |    2 +-
 .../SimpleLanguageAutoConfiguration.java           |    2 +-
 .../TokenizeLanguageAutoConfiguration.java         |    2 +-
 .../XMLTokenizeLanguageAutoConfiguration.java      |    2 +-
 .../springboot/XPathLanguageAutoConfiguration.java |    2 +-
 ...stConfigurationDefinitionAutoConfiguration.java |   14 +-
 .../RestConfigurationDefinitionProperties.java     |    2 +-
 .../camel/model/rest/springboot/CamelRestTest.java |    2 +-
 .../CouchbaseComponentAutoConfiguration.java       |    2 +-
 .../CouchDbComponentAutoConfiguration.java         |    2 +-
 .../CryptoCmsComponentAutoConfiguration.java       |    2 +-
 ...DigitalSignatureComponentAutoConfiguration.java |    2 +-
 .../DigitalSignatureComponentConfiguration.java    |    2 +-
 .../CryptoDataFormatAutoConfiguration.java         |    2 +-
 .../springboot/PGPDataFormatAutoConfiguration.java |    2 +-
 .../springboot/CsvDataFormatAutoConfiguration.java |    2 +-
 .../CxfRsComponentAutoConfiguration.java           |    2 +-
 .../springboot/CxfComponentAutoConfiguration.java  |    2 +-
 .../DigitalOceanComponentAutoConfiguration.java    |    2 +-
 .../DisruptorComponentAutoConfiguration.java       |    2 +-
 .../DisruptorVmComponentAutoConfiguration.java     |    2 +-
 .../springboot/DnsComponentAutoConfiguration.java  |    2 +-
 .../cloud/DnsCloudAutoConfiguration.java           |    2 +-
 .../DockerComponentAutoConfiguration.java          |    2 +-
 .../DozerComponentAutoConfiguration.java           |    2 +-
 .../DrillComponentAutoConfiguration.java           |    2 +-
 .../DropboxComponentAutoConfiguration.java         |    2 +-
 .../EhcacheComponentAutoConfiguration.java         |    2 +-
 .../ElasticsearchComponentAutoConfiguration.java   |    2 +-
 .../ElsqlComponentAutoConfiguration.java           |    2 +-
 .../springboot/EtcdComponentAutoConfiguration.java |    2 +-
 .../springboot/EtcdComponentConfiguration.java     |    4 +-
 .../cloud/EtcdCloudAutoConfiguration.java          |    2 +-
 .../springboot/ExecComponentAutoConfiguration.java |    2 +-
 .../FacebookComponentAutoConfiguration.java        |    2 +-
 .../FastjsonDataFormatAutoConfiguration.java       |    2 +-
 .../springboot/FhirComponentAutoConfiguration.java |    2 +-
 .../FhirJsonDataFormatAutoConfiguration.java       |    2 +-
 .../FhirXmlDataFormatAutoConfiguration.java        |    2 +-
 .../FlatpackComponentAutoConfiguration.java        |    2 +-
 .../FlatpackDataFormatAutoConfiguration.java       |    2 +-
 .../FlinkComponentAutoConfiguration.java           |    2 +-
 .../springboot/FopComponentAutoConfiguration.java  |    2 +-
 .../FreemarkerComponentAutoConfiguration.java      |    2 +-
 .../springboot/FtpComponentAutoConfiguration.java  |    2 +-
 .../springboot/FtpsComponentAutoConfiguration.java |    2 +-
 .../springboot/SftpComponentAutoConfiguration.java |    2 +-
 .../GangliaComponentAutoConfiguration.java         |    2 +-
 .../GeoCoderComponentAutoConfiguration.java        |    2 +-
 .../springboot/GitComponentAutoConfiguration.java  |    2 +-
 .../GitHubComponentAutoConfiguration.java          |    2 +-
 .../GoogleBigQueryComponentAutoConfiguration.java  |    2 +-
 .../GoogleCalendarComponentAutoConfiguration.java  |    2 +-
 ...leCalendarStreamComponentAutoConfiguration.java |    2 +-
 .../GoogleDriveComponentAutoConfiguration.java     |    2 +-
 .../GoogleMailComponentAutoConfiguration.java      |    2 +-
 ...GoogleMailStreamComponentAutoConfiguration.java |    2 +-
 .../GooglePubsubComponentAutoConfiguration.java    |    2 +-
 .../springboot/GoraComponentAutoConfiguration.java |    2 +-
 .../GroovyLanguageAutoConfiguration.java           |    2 +-
 .../springboot/GrpcComponentAutoConfiguration.java |    2 +-
 .../GsonDataFormatAutoConfiguration.java           |    2 +-
 .../GuavaEventBusComponentAutoConfiguration.java   |    2 +-
 ...castAtomicnumberComponentAutoConfiguration.java |    2 +-
 ...azelcastInstanceComponentAutoConfiguration.java |    2 +-
 .../HazelcastListComponentAutoConfiguration.java   |    2 +-
 .../HazelcastMapComponentAutoConfiguration.java    |    2 +-
 ...azelcastMultimapComponentAutoConfiguration.java |    2 +-
 .../HazelcastQueueComponentAutoConfiguration.java  |    2 +-
 ...astReplicatedmapComponentAutoConfiguration.java |    2 +-
 ...elcastRingbufferComponentAutoConfiguration.java |    2 +-
 .../HazelcastSedaComponentAutoConfiguration.java   |    2 +-
 .../HazelcastSetComponentAutoConfiguration.java    |    2 +-
 .../HazelcastTopicComponentAutoConfiguration.java  |    2 +-
 .../HBaseComponentAutoConfiguration.java           |    2 +-
 .../springboot/HdfsComponentAutoConfiguration.java |    2 +-
 .../HipchatComponentAutoConfiguration.java         |    2 +-
 .../springboot/HL7DataFormatAutoConfiguration.java |    2 +-
 .../TerserLanguageAutoConfiguration.java           |    2 +-
 .../springboot/HttpComponentAutoConfiguration.java |    2 +-
 .../springboot/HttpComponentConfiguration.java     |    8 +-
 .../springboot/HystrixAutoConfiguration.java       |    2 +-
 .../ICalDataFormatAutoConfiguration.java           |    2 +-
 .../ClientComponentAutoConfiguration.java          |    2 +-
 .../ServerComponentAutoConfiguration.java          |    2 +-
 .../IgniteCacheComponentAutoConfiguration.java     |    2 +-
 .../IgniteComputeComponentAutoConfiguration.java   |    2 +-
 .../IgniteEventsComponentAutoConfiguration.java    |    2 +-
 .../IgniteIdGenComponentAutoConfiguration.java     |    2 +-
 .../IgniteMessagingComponentAutoConfiguration.java |    2 +-
 .../IgniteQueueComponentAutoConfiguration.java     |    2 +-
 .../IgniteSetComponentAutoConfiguration.java       |    2 +-
 .../InfinispanComponentAutoConfiguration.java      |    2 +-
 .../InfluxDbComponentAutoConfiguration.java        |    2 +-
 .../springboot/IrcComponentAutoConfiguration.java  |    2 +-
 .../IronMQComponentAutoConfiguration.java          |    2 +-
 .../JacksonDataFormatAutoConfiguration.java        |    2 +-
 .../JacksonXMLDataFormatAutoConfiguration.java     |    2 +-
 .../JaxbDataFormatAutoConfiguration.java           |    2 +-
 .../springboot/JBPMComponentAutoConfiguration.java |    2 +-
 .../JCacheComponentAutoConfiguration.java          |    2 +-
 .../JcloudsComponentAutoConfiguration.java         |    2 +-
 .../springboot/JcrComponentAutoConfiguration.java  |    2 +-
 .../springboot/JdbcComponentAutoConfiguration.java |    2 +-
 .../JettyHttpComponentAutoConfiguration9.java      |    2 +-
 .../JettyHttpComponentConfiguration9.java          |    2 +-
 .../JGroupsComponentAutoConfiguration.java         |    2 +-
 ...JGroupsLockClusterServiceAutoConfiguration.java |    2 +-
 .../JibxDataFormatAutoConfiguration.java           |    2 +-
 .../springboot/JingComponentAutoConfiguration.java |    2 +-
 .../springboot/JmsComponentAutoConfiguration.java  |    2 +-
 .../springboot/JMXComponentAutoConfiguration.java  |    2 +-
 .../JohnzonDataFormatAutoConfiguration.java        |    2 +-
 .../springboot/JoltComponentAutoConfiguration.java |    2 +-
 .../springboot/JpaComponentAutoConfiguration.java  |    2 +-
 .../springboot/ScpComponentAutoConfiguration.java  |    2 +-
 .../JsonValidatorComponentAutoConfiguration.java   |    2 +-
 .../JsonPathLanguageAutoConfiguration.java         |    2 +-
 .../Jt400ComponentAutoConfiguration.java           |    2 +-
 .../KafkaComponentAutoConfiguration.java           |    2 +-
 .../springboot/KafkaComponentConfiguration.java    |    2 +-
 ...rnetesConfigMapsComponentAutoConfiguration.java |    2 +-
 ...netesDeploymentsComponentAutoConfiguration.java |    2 +-
 .../KubernetesHPAComponentAutoConfiguration.java   |    2 +-
 .../KubernetesJobComponentAutoConfiguration.java   |    2 +-
 ...rnetesNamespacesComponentAutoConfiguration.java |    2 +-
 .../KubernetesNodesComponentAutoConfiguration.java |    2 +-
 ...ersistentVolumesComponentAutoConfiguration.java |    2 +-
 ...entVolumesClaimsComponentAutoConfiguration.java |    2 +-
 .../KubernetesPodsComponentAutoConfiguration.java  |    2 +-
 ...ationControllersComponentAutoConfiguration.java |    2 +-
 ...esResourcesQuotaComponentAutoConfiguration.java |    2 +-
 ...ubernetesSecretsComponentAutoConfiguration.java |    2 +-
 ...sServiceAccountsComponentAutoConfiguration.java |    2 +-
 ...bernetesServicesComponentAutoConfiguration.java |    2 +-
 ...ubernetesServiceDiscoveryAutoConfiguration.java |    2 +-
 .../KubernetesClusterServiceAutoConfiguration.java |    2 +-
 ...hiftBuildConfigsComponentAutoConfiguration.java |    2 +-
 .../OpenshiftBuildsComponentAutoConfiguration.java |    2 +-
 .../springboot/LdapComponentAutoConfiguration.java |    2 +-
 .../springboot/LdifComponentAutoConfiguration.java |    2 +-
 .../LinkedInComponentAutoConfiguration.java        |    2 +-
 .../springboot/LraServiceAutoConfiguration.java    |    2 +-
 .../LuceneComponentAutoConfiguration.java          |    2 +-
 .../LumberjackComponentAutoConfiguration.java      |    2 +-
 .../LumberjackComponentConfiguration.java          |    2 +-
 .../springboot/LZFDataFormatAutoConfiguration.java |    2 +-
 .../springboot/MailComponentAutoConfiguration.java |    2 +-
 .../springboot/MailComponentConfiguration.java     |    2 +-
 .../MimeMultipartDataFormatAutoConfiguration.java  |    2 +-
 .../MasterComponentAutoConfiguration.java          |    2 +-
 .../MetricsComponentAutoConfiguration.java         |    2 +-
 .../MicrometerComponentAutoConfiguration.java      |    2 +-
 .../MiloClientComponentAutoConfiguration.java      |    2 +-
 .../MiloServerComponentAutoConfiguration.java      |    2 +-
 .../Mina2ComponentAutoConfiguration.java           |    2 +-
 .../springboot/Mina2ComponentConfiguration.java    |    2 +-
 .../springboot/MllpComponentAutoConfiguration.java |    2 +-
 .../GridFsComponentAutoConfiguration.java          |    2 +-
 .../MongoDbComponentAutoConfiguration.java         |    2 +-
 .../springboot/MQTTComponentAutoConfiguration.java |    2 +-
 .../springboot/MsvComponentAutoConfiguration.java  |    2 +-
 .../MustacheComponentAutoConfiguration.java        |    2 +-
 .../springboot/MvelComponentAutoConfiguration.java |    2 +-
 .../springboot/MvelLanguageAutoConfiguration.java  |    2 +-
 .../MyBatisBeanComponentAutoConfiguration.java     |    2 +-
 .../MyBatisComponentAutoConfiguration.java         |    2 +-
 .../NagiosComponentAutoConfiguration.java          |    2 +-
 .../springboot/NatsComponentAutoConfiguration.java |    2 +-
 .../NettyHttpComponentAutoConfiguration.java       |    2 +-
 .../NettyHttpComponentConfiguration.java           |    2 +-
 .../NettyComponentAutoConfiguration.java           |    2 +-
 .../springboot/NettyComponentConfiguration.java    |    4 +-
 .../springboot/OgnlLanguageAutoConfiguration.java  |    2 +-
 .../Olingo2ComponentAutoConfiguration.java         |    2 +-
 .../springboot/Olingo2ComponentConfiguration.java  |    2 +-
 .../Olingo4ComponentAutoConfiguration.java         |    2 +-
 .../springboot/Olingo4ComponentConfiguration.java  |    2 +-
 .../CinderComponentAutoConfiguration.java          |    2 +-
 .../GlanceComponentAutoConfiguration.java          |    2 +-
 .../KeystoneComponentAutoConfiguration.java        |    2 +-
 .../NeutronComponentAutoConfiguration.java         |    2 +-
 .../springboot/NovaComponentAutoConfiguration.java |    2 +-
 .../SwiftComponentAutoConfiguration.java           |    2 +-
 .../OptaPlannerComponentAutoConfiguration.java     |    2 +-
 .../springboot/PahoComponentAutoConfiguration.java |    2 +-
 .../springboot/PdfComponentAutoConfiguration.java  |    2 +-
 .../PgEventComponentAutoConfiguration.java         |    2 +-
 .../PrinterComponentAutoConfiguration.java         |    2 +-
 .../ProtobufDataFormatAutoConfiguration.java       |    2 +-
 .../PubNubComponentAutoConfiguration.java          |    2 +-
 .../QuartzComponentAutoConfiguration.java          |    2 +-
 .../QuickfixjComponentAutoConfiguration.java       |    2 +-
 .../RabbitMQComponentAutoConfiguration.java        |    2 +-
 .../ReactiveStreamsComponentAutoConfiguration.java |    2 +-
 .../ReactiveStreamsServiceAutoConfiguration.java   |    2 +-
 .../RestSwaggerComponentAutoConfiguration.java     |    2 +-
 .../RestSwaggerComponentConfiguration.java         |    2 +-
 .../RestletComponentAutoConfiguration.java         |    2 +-
 .../springboot/RestletComponentConfiguration.java  |    2 +-
 .../cloud/RibbonCloudAutoConfiguration.java        |    2 +-
 .../springboot/RmiComponentAutoConfiguration.java  |    2 +-
 .../springboot/RssComponentAutoConfiguration.java  |    2 +-
 .../springboot/RssDataFormatAutoConfiguration.java |    2 +-
 .../SalesforceComponentAutoConfiguration.java      |    2 +-
 .../SalesforceComponentConfiguration.java          |  250 ++---
 .../NetWeaverComponentAutoConfiguration.java       |    2 +-
 .../XQueryComponentAutoConfiguration.java          |    2 +-
 .../XQueryLanguageAutoConfiguration.java           |    2 +-
 .../SchematronComponentAutoConfiguration.java      |    2 +-
 .../JavaScriptLanguageAutoConfiguration.java       |    2 +-
 .../ServiceComponentAutoConfiguration.java         |    2 +-
 .../ServiceNowComponentAutoConfiguration.java      |    2 +-
 .../ServiceNowComponentConfiguration.java          |    2 +-
 .../ServletComponentAutoConfiguration.java         |    2 +-
 .../springboot/SipComponentAutoConfiguration.java  |    2 +-
 .../SjmsBatchComponentAutoConfiguration.java       |    2 +-
 .../springboot/SjmsComponentAutoConfiguration.java |    2 +-
 .../Sjms2ComponentAutoConfiguration.java           |    2 +-
 .../SlackComponentAutoConfiguration.java           |    2 +-
 .../springboot/SmppComponentAutoConfiguration.java |    2 +-
 .../SnakeYAMLDataFormatAutoConfiguration.java      |    2 +-
 .../springboot/SnmpComponentAutoConfiguration.java |    2 +-
 .../SoapJaxbDataFormatAutoConfiguration.java       |    2 +-
 .../springboot/SolrComponentAutoConfiguration.java |    2 +-
 .../SparkComponentAutoConfiguration.java           |    2 +-
 .../SplunkComponentAutoConfiguration.java          |    2 +-
 .../SpringBatchComponentAutoConfiguration.java     |    2 +-
 ...pringIntegrationComponentAutoConfiguration.java |    2 +-
 .../SpringLdapComponentAutoConfiguration.java      |    2 +-
 .../RedisComponentAutoConfiguration.java           |    2 +-
 .../EventComponentAutoConfiguration.java           |    2 +-
 .../springboot/SpelLanguageAutoConfiguration.java  |    2 +-
 ...SpringWebserviceComponentAutoConfiguration.java |    2 +-
 .../springboot/SqlComponentAutoConfiguration.java  |    2 +-
 .../SqlStoredComponentAutoConfiguration.java       |    2 +-
 .../springboot/SshComponentAutoConfiguration.java  |    2 +-
 .../springboot/StAXComponentAutoConfiguration.java |    2 +-
 .../StompComponentAutoConfiguration.java           |    2 +-
 .../springboot/StompComponentConfiguration.java    |    2 +-
 .../StreamComponentAutoConfiguration.java          |    2 +-
 .../StringTemplateComponentAutoConfiguration.java  |    2 +-
 .../SyslogDataFormatAutoConfiguration.java         |    2 +-
 .../TidyMarkupDataFormatAutoConfiguration.java     |    2 +-
 .../TarFileDataFormatAutoConfiguration.java        |    2 +-
 .../TelegramComponentAutoConfiguration.java        |    2 +-
 .../ThriftComponentAutoConfiguration.java          |    2 +-
 .../ThriftDataFormatAutoConfiguration.java         |    2 +-
 .../springboot/TikaComponentAutoConfiguration.java |    2 +-
 .../TwilioComponentAutoConfiguration.java          |    2 +-
 ...terDirectMessageComponentAutoConfiguration.java |    2 +-
 .../TwitterSearchComponentAutoConfiguration.java   |    2 +-
 ...TwitterStreamingComponentAutoConfiguration.java |    2 +-
 .../TwitterTimelineComponentAutoConfiguration.java |    2 +-
 .../UndertowComponentAutoConfiguration.java        |    2 +-
 .../springboot/UndertowComponentConfiguration.java |    2 +-
 .../UniVocityCsvDataFormatAutoConfiguration.java   |    2 +-
 ...ocityFixedWidthDataFormatAutoConfiguration.java |    2 +-
 .../UniVocityTsvDataFormatAutoConfiguration.java   |    2 +-
 .../VelocityComponentAutoConfiguration.java        |    2 +-
 .../VertxComponentAutoConfiguration.java           |    2 +-
 .../WeatherComponentAutoConfiguration.java         |    2 +-
 .../Web3jComponentAutoConfiguration.java           |    2 +-
 .../WebsocketComponentAutoConfiguration.java       |    2 +-
 .../WebsocketComponentConfiguration.java           |    2 +-
 .../WordpressComponentAutoConfiguration.java       |    2 +-
 .../XChangeComponentAutoConfiguration.java         |    2 +-
 .../XmlSignatureComponentAutoConfiguration.java    |    2 +-
 .../XMLSecurityDataFormatAutoConfiguration.java    |    2 +-
 .../springboot/XmppComponentAutoConfiguration.java |    2 +-
 .../JsonDataFormatAutoConfiguration.java           |    2 +-
 .../XStreamDataFormatAutoConfiguration.java        |    2 +-
 .../YammerComponentAutoConfiguration.java          |    2 +-
 .../springboot/YqlComponentAutoConfiguration.java  |    2 +-
 .../ZendeskComponentAutoConfiguration.java         |    2 +-
 .../ZipFileDataFormatAutoConfiguration.java        |    2 +-
 .../MasterComponentAutoConfiguration.java          |    2 +-
 .../ZooKeeperComponentAutoConfiguration.java       |    2 +-
 .../ZooKeeperServiceRegistryAutoConfiguration.java |    2 +-
 .../ZooKeeperClusterServiceAutoConfiguration.java  |    2 +-
 .../org/apache/camel/itest/cdi/CamelCdiTest.java   |    2 +-
 .../apache/camel/itest/async/HttpAsyncDslTest.java |    2 +-
 .../camel/itest/async/HttpJmsAsyncTimeoutTest.java |    2 +-
 .../apache/camel/itest/async/MyAsyncComponent.java |    2 +-
 .../apache/camel/itest/async/MyAsyncEndpoint.java  |    2 +-
 .../apache/camel/itest/async/MyAsyncProducer.java  |    2 +-
 .../camel/itest/issues/RemoveEndpointsTest.java    |    2 +-
 .../camel/itest/jetty/JettyFreemarkerTest.java     |    2 +-
 .../camel/itest/jetty/JettyVelocityTest.java       |    2 +-
 .../apache/camel/itest/jetty/JettyXsltTest.java    |    2 +-
 .../apache/camel/itest/jms/DynamicRouteTest.java   |    2 +-
 .../org/apache/camel/itest/jms/JmsHttpJmsTest.java |    2 +-
 .../camel/itest/jms/JmsHttpPostIssueTest.java      |    2 +-
 .../itest/jms/JmsHttpPostIssueWithMockTest.java    |    2 +-
 .../apache/camel/itest/jms/JmsIntegrationTest.java |    2 +-
 .../org/apache/camel/itest/jms/JmsJaxbTest.java    |    2 +-
 .../apache/camel/itest/jms/JmsJettyAsyncTest.java  |    2 +-
 .../apache/camel/itest/jms/JmsPerformanceTest.java |    2 +-
 .../apache/camel/itest/jms/JmsPollEnrichTest.java  |    2 +-
 .../apache/camel/itest/jms/JmsResequencerTest.java |    2 +-
 .../apache/camel/itest/jms/JmsValidatorTest.java   |    2 +-
 .../itest/netty/NettyAsyncRequestReplyTest.java    |    2 +-
 .../apache/camel/itest/shiro/ShiroOverJmsTest.java |    2 +-
 .../camel/itest/jmh/SimpleExpressionTest.java      |    2 +-
 .../maven/AbstractApiMethodGeneratorMojo.java      |    6 +-
 .../apache/camel/maven/DocumentGeneratorMojo.java  |   10 +-
 .../camel/maven/JavadocApiMethodGeneratorMojo.java |    2 +-
 .../src/main/resources/api-collection.vm           |    6 +-
 .../src/main/resources/api-method-enum.vm          |    8 +-
 .../src/main/resources/api-name-enum.vm            |    2 +-
 .../packaging/SpringBootAutoConfigurationMojo.java |   20 +-
 tooling/maven/camel-restdsl-swagger-plugin/pom.xml |    2 +
 .../camel/generator/swagger/OperationFilter.java   |    2 +-
 2741 files changed, 29157 insertions(+), 29765 deletions(-)

diff --git a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Component.java b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Component.java
index 2c55945..c788889 100644
--- a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Component.java
+++ b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Component.java
@@ -18,7 +18,7 @@ package ${package};
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.util.component.AbstractApiComponent;
+import org.apache.camel.support.component.AbstractApiComponent;
 
 import ${package}.internal.${name}ApiCollection;
 import ${package}.internal.${name}ApiName;
diff --git a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Consumer.java b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Consumer.java
index d493267..dd3e7d0 100644
--- a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Consumer.java
+++ b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Consumer.java
@@ -17,7 +17,7 @@
 package ${package};
 
 import org.apache.camel.Processor;
-import org.apache.camel.util.component.AbstractApiConsumer;
+import org.apache.camel.support.component.AbstractApiConsumer;
 
 import ${package}.internal.${name}ApiName;
 
diff --git a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Endpoint.java b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Endpoint.java
index f41278f..9ae2c6b 100644
--- a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Endpoint.java
+++ b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Endpoint.java
@@ -24,9 +24,9 @@ import org.apache.camel.Producer;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.component.AbstractApiEndpoint;
-import org.apache.camel.util.component.ApiMethod;
-import org.apache.camel.util.component.ApiMethodPropertiesHelper;
+import org.apache.camel.support.component.AbstractApiEndpoint;
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodPropertiesHelper;
 
 import ${package}.api.${name}FileHello;
 import ${package}.api.${name}JavadocHello;
diff --git a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Producer.java b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Producer.java
index c75c87e..5bcfc5d 100644
--- a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Producer.java
+++ b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/__name__Producer.java
@@ -16,7 +16,7 @@
 ## ------------------------------------------------------------------------
 package ${package};
 
-import org.apache.camel.util.component.AbstractApiProducer;
+import org.apache.camel.support.component.AbstractApiProducer;
 
 import ${package}.internal.${name}ApiName;
 import ${package}.internal.${name}PropertiesHelper;
diff --git a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/internal/__name__PropertiesHelper.java b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/internal/__name__PropertiesHelper.java
index fe6910c..0968bed 100644
--- a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/internal/__name__PropertiesHelper.java
+++ b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/main/java/internal/__name__PropertiesHelper.java
@@ -16,7 +16,7 @@
 ## ------------------------------------------------------------------------
 package ${package}.internal;
 
-import org.apache.camel.util.component.ApiMethodPropertiesHelper;
+import org.apache.camel.support.component.ApiMethodPropertiesHelper;
 
 import ${package}.${name}Configuration;
 
diff --git a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java
index 94c1fdc..1613e9d 100644
--- a/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java
+++ b/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java
@@ -25,7 +25,7 @@ import java.util.Properties;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.support.IntrospectionSupport;
 
 /**
  * Abstract base class for ${name} Integration tests generated by Camel API component maven plugin.
diff --git a/camel-core/src/main/docs/eips/aggregate-eip.adoc b/camel-core/src/main/docs/eips/aggregate-eip.adoc
index 40e110d..1dacb70 100644
--- a/camel-core/src/main/docs/eips/aggregate-eip.adoc
+++ b/camel-core/src/main/docs/eips/aggregate-eip.adoc
@@ -491,7 +491,7 @@ public class MyBodyAppender {
 
 And then in the Camel route we create an instance of our bean, and then
 refer to the bean in the route using `bean` method from
-`org.apache.camel.util.toolbox.AggregationStrategies` as shown:
+`org.apache.camel.builder.AggregationStrategies` as shown:
 
 [source,java]
 ----
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java b/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
index e83130e..27da13e 100644
--- a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
@@ -21,7 +21,7 @@ package org.apache.camel;
  * and signal completion by invoking the {@link AsyncCallback}.
  * <p/>
  * Any processor can be coerced to have an {@link AsyncProcessor} interface by using the
- * {@link org.apache.camel.util.AsyncProcessorConverterHelper#convert AsyncProcessorConverterHelper.convert}
+ * {@link org.apache.camel.support.AsyncProcessorConverterHelper#convert AsyncProcessorConverterHelper.convert}
  * method.
  */
 public interface AsyncProcessor extends Processor {
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 3b32433..741475c 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -70,9 +70,7 @@ import org.apache.camel.spi.UnitOfWorkFactory;
 import org.apache.camel.spi.UuidGenerator;
 import org.apache.camel.spi.Validator;
 import org.apache.camel.spi.ValidatorRegistry;
-import org.apache.camel.util.LoadPropertiesException;
-import org.apache.camel.util.ValueHolder;
-import org.apache.camel.util.jsse.SSLContextParameters;
+import org.apache.camel.support.jsse.SSLContextParameters;
 
 /**
  * Interface used to represent the CamelContext used to configure routes and the
@@ -480,7 +478,7 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
      * @param pattern an uri or pattern to match
      * @return a collection of endpoints removed which could be empty if there are no endpoints found for the given <tt>pattern</tt>
      * @throws Exception if at least one endpoint could not be stopped
-     * @see org.apache.camel.util.EndpointHelper#matchEndpoint(CamelContext, String, String) for pattern
+     * @see org.apache.camel.support.EndpointHelper#matchEndpoint(CamelContext, String, String) for pattern
      */
     Collection<Endpoint> removeEndpoints(String pattern) throws Exception;
 
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContextAware.java b/camel-core/src/main/java/org/apache/camel/CamelContextAware.java
index 504b8d2..53afae9 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContextAware.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContextAware.java
@@ -35,5 +35,16 @@ public interface CamelContextAware {
      * @return camelContext the Camel context
      */
     CamelContext getCamelContext();
-    
+
+    /**
+     * Set the {@link CamelContext} context if the component is an instance of {@link CamelContextAware}.
+     */
+    static <T> T trySetCamelContext(T object, CamelContext camelContext) {
+        if (object instanceof CamelContextAware) {
+            ((CamelContextAware) object).setCamelContext(camelContext);
+        }
+
+        return object;
+    }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java b/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
index 560d352..9de056c 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
@@ -32,4 +32,20 @@ public class CamelExecutionException extends RuntimeExchangeException {
     public CamelExecutionException(String message, Exchange exchange, Throwable cause) {
         super(message, exchange, cause);
     }
+
+    /**
+     * Wraps the caused exception in a {@link CamelExecutionException} if its not
+     * already such an exception.
+     *
+     * @param e the caused exception
+     * @return the wrapper exception
+     */
+    public static CamelExecutionException wrapCamelExecutionException(Exchange exchange, Throwable e) {
+        if (e instanceof CamelExecutionException) {
+            // don't double wrap
+            return (CamelExecutionException) e;
+        } else {
+            return new CamelExecutionException("Exception occurred during execution", exchange, e);
+        }
+    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/Component.java b/camel-core/src/main/java/org/apache/camel/Component.java
index 26280a9..43a0377 100644
--- a/camel-core/src/main/java/org/apache/camel/Component.java
+++ b/camel-core/src/main/java/org/apache/camel/Component.java
@@ -72,4 +72,16 @@ public interface Component extends CamelContextAware {
     default <T extends ComponentExtension> Optional<T> getExtension(Class<T> extensionType) {
         return Optional.empty();
     }
+
+    /**
+     * Set the {@link Component} context if the component is an instance of {@link ComponentAware}.
+     */
+    static <T> T trySetComponent(T object, Component component) {
+        if (object instanceof ComponentAware) {
+            ((ComponentAware) object).setComponent(component);
+        }
+
+        return object;
+    }
+
 }
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java
index 2382e85..63ed450 100644
--- a/camel-core/src/main/java/org/apache/camel/Exchange.java
+++ b/camel-core/src/main/java/org/apache/camel/Exchange.java
@@ -56,7 +56,7 @@ import org.apache.camel.spi.UnitOfWork;
  * an out, depending on the nature of the {@link Processor}. The in {@link Message} can be accessed 
  * using the {@link #getIn()} method. Since the out message is null when entering the {@link Processor}, 
  * the {@link #getOut()} method is actually a convenient factory method that will lazily instantiate a 
- * {@link org.apache.camel.impl.DefaultMessage} which you could populate. As an alternative you could 
+ * {@link org.apache.camel.support.DefaultMessage} which you could populate. As an alternative you could
  * also instantiate your specialized  {@link Message} and set it on the exchange using the 
  * {@link #setOut(org.apache.camel.Message)} method. Please note that a {@link Message} contains not only 
  * the body but also headers and attachments. If you are creating a new {@link Message} the headers and 
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java b/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
index d6f9388..8d8a56b 100644
--- a/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
+++ b/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
@@ -31,7 +31,7 @@ public class FailedToCreateRouteException extends CamelException {
     }
 
     public FailedToCreateRouteException(String routeId, String route, String at, Throwable cause) {
-        super("Failed to create route " + routeId + " at: >>> " + at + " <<< in route: " + getRouteMessage(route) + " because of " + cause.getMessage(), cause);
+        super("Failed to create route " + routeId + " at: >>> " + at + " <<< in route: " + getRouteMessage(route) + " because of " + getExceptionMessage(cause), cause);
         this.routeId = routeId;
     }
 
@@ -40,11 +40,7 @@ public class FailedToCreateRouteException extends CamelException {
     }
     
     protected static String getExceptionMessage(Throwable cause) {
-        if (cause.getMessage() != null) {
-            return cause.getMessage();
-        } else {
-            return cause.getClass().getSimpleName();
-        }
+        return cause.getMessage() != null ? cause.getMessage() : cause.getClass().getSimpleName();
     }
 
     protected static String getRouteMessage(String route) {
@@ -59,4 +55,5 @@ public class FailedToCreateRouteException extends CamelException {
             return route;
         }
     }
+
 }
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/LoadPropertiesException.java b/camel-core/src/main/java/org/apache/camel/LoadPropertiesException.java
new file mode 100644
index 0000000..8a1e8f9
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/LoadPropertiesException.java
@@ -0,0 +1,36 @@
+/**
+ * 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;
+
+import java.net.URL;
+
+/**
+ * Represents a failure to open a Properties file at a given URL
+ */
+public class LoadPropertiesException extends CamelException {
+    private static final long serialVersionUID = 3684303677685065529L;
+    private final URL url;
+
+    public LoadPropertiesException(URL url, Exception cause) {
+        super("Failed to load URL: " + url + ". Reason: " + cause,  cause);
+        this.url = url;
+    }
+
+    public URL getUrl() {
+        return url;
+    }
+}
diff --git a/camel-core/src/main/java/org/apache/camel/Message.java b/camel-core/src/main/java/org/apache/camel/Message.java
index eb00b85..da34643 100644
--- a/camel-core/src/main/java/org/apache/camel/Message.java
+++ b/camel-core/src/main/java/org/apache/camel/Message.java
@@ -29,7 +29,7 @@ import org.apache.camel.spi.HeadersMapFactory;
  * href="http://camel.apache.org/message.html">Message</a> pattern and
  * represents an inbound or outbound message as part of an {@link Exchange}.
  * <p/>
- * See {@link org.apache.camel.impl.DefaultMessage DefaultMessage} for how headers
+ * See {@link org.apache.camel.support.DefaultMessage DefaultMessage} for how headers
  * is represented in Camel using a {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
  * The implementation of the map can be configured by the {@link HeadersMapFactory} which can be set
  * on the {@link CamelContext}. The default implementation uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
@@ -173,7 +173,7 @@ public interface Message {
     /**
      * Returns all of the headers associated with the message.
      * <p/>
-     * See {@link org.apache.camel.impl.DefaultMessage DefaultMessage} for how headers
+     * See {@link org.apache.camel.support.DefaultMessage DefaultMessage} for how headers
      * is represented in Camel using a {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
      * The implementation of the map can be configured by the {@link HeadersMapFactory} which can be set
      * on the {@link CamelContext}. The default implementation uses the {@link org.apache.camel.util.CaseInsensitiveMap CaseInsensitiveMap}.
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java b/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
index d12f052..352e6af 100644
--- a/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
@@ -20,7 +20,7 @@ package org.apache.camel;
  * An exception caused when a mandatory header is not available on a message
  * {@link Exchange}
  *
- * @see org.apache.camel.util.ExchangeHelper#getMandatoryHeader(Exchange, String, Class)
+ * @see org.apache.camel.support.ExchangeHelper#getMandatoryHeader(Exchange, String, Class)
  */
 public class NoSuchHeaderException extends CamelExchangeException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java b/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
index 0de94e1..576d4f9 100644
--- a/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
+++ b/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
@@ -20,7 +20,8 @@ package org.apache.camel;
  * An exception caused when a mandatory property is not available on a message
  * {@link Exchange}
  * 
- * @see org.apache.camel.util.ExchangeHelper#getMandatoryProperty(Exchange, String, Class)
+ * @see org.apache.camel.support.ExchangeHelper#getMandatoryProperty(Exchange, String, Class)
+ * 
  */
 public class NoSuchPropertyException extends CamelExchangeException {
     private static final long serialVersionUID = -8721487431101572630L;
diff --git a/camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java b/camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
index 88f57e8..2891335 100644
--- a/camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
@@ -22,7 +22,7 @@ package org.apache.camel;
  * For example this is used by schedule based consumers to be able to suspend/resume
  * upon polling using a {@link PollingConsumer}.
  *
- * @see org.apache.camel.impl.EventDrivenPollingConsumer
+ * @see org.apache.camel.support.EventDrivenPollingConsumer
  */
 public interface PollingConsumerPollingStrategy {
 
diff --git a/camel-core/src/main/java/org/apache/camel/Rejectable.java b/camel-core/src/main/java/org/apache/camel/Rejectable.java
deleted file mode 100644
index bddbe6c..0000000
--- a/camel-core/src/main/java/org/apache/camel/Rejectable.java
+++ /dev/null
@@ -1,29 +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;
-
-/**
- * Reject executing or processing some task.
- */
-public interface Rejectable {
-
-    /**
-     * The task was rejected.
-     */
-    void reject();
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java b/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
index 7f3c4b7..c072ecf 100644
--- a/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
+++ b/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
@@ -36,4 +36,20 @@ public class RuntimeCamelException extends RuntimeException {
     public RuntimeCamelException(Throwable cause) {
         super(cause);
     }
+
+    /**
+     * Wraps the caused exception in a {@link RuntimeCamelException} if its not
+     * already such an exception.
+     *
+     * @param e the caused exception
+     * @return the wrapper exception
+     */
+    public static RuntimeCamelException wrapRuntimeCamelException(Throwable e) {
+        if (e instanceof RuntimeCamelException) {
+            // don't double wrap
+            return (RuntimeCamelException) e;
+        } else {
+            return new RuntimeCamelException(e);
+        }
+    }
 }
diff --git a/camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java b/camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java
index 7c10e20..c0dc1fb 100644
--- a/camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java
+++ b/camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel;
 
-import org.apache.camel.util.jsse.SSLContextParameters;
+import org.apache.camel.support.jsse.SSLContextParameters;
 
 /**
  * Indicates that an object is able to use the global {@link SSLContextParameters} if configured.
diff --git a/camel-core/src/main/java/org/apache/camel/ThreadPoolRejectedPolicy.java b/camel-core/src/main/java/org/apache/camel/ThreadPoolRejectedPolicy.java
deleted file mode 100644
index b3b5f19..0000000
--- a/camel-core/src/main/java/org/apache/camel/ThreadPoolRejectedPolicy.java
+++ /dev/null
@@ -1,101 +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;
-
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.ThreadPoolExecutor;
-
-import javax.xml.bind.annotation.XmlEnum;
-import javax.xml.bind.annotation.XmlType;
-
-/**
- * Represent the kinds of options for rejection handlers for thread pools.
- * <p/>
- * These options are used for fine grained thread pool settings, where you
- * want to control which handler to use when a thread pool cannot execute
- * a new task.
- * <p/>
- * Camel will by default use <tt>CallerRuns</tt>.
- */
-@XmlType
-@XmlEnum
-public enum ThreadPoolRejectedPolicy {
-
-    Abort, CallerRuns, DiscardOldest, Discard;
-
-    public RejectedExecutionHandler asRejectedExecutionHandler() {
-        if (this == Abort) {
-            return new RejectedExecutionHandler() {
-                @Override
-                public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
-                    if (r instanceof Rejectable) {
-                        ((Rejectable)r).reject();
-                    } else {
-                        throw new RejectedExecutionException("Task " + r.toString() + " rejected from " + executor.toString());
-                    }
-                }
-
-                @Override
-                public String toString() {
-                    return "Abort";
-                }
-            };
-        } else if (this == CallerRuns) {
-            return new ThreadPoolExecutor.CallerRunsPolicy() {
-                @Override
-                public String toString() {
-                    return "CallerRuns";
-                }
-            };
-        } else if (this == DiscardOldest) {
-            return new RejectedExecutionHandler() {
-                @Override
-                public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
-                    if (!executor.isShutdown()) {
-                        Runnable rejected = executor.getQueue().poll();
-                        if (rejected instanceof Rejectable) {
-                            ((Rejectable) rejected).reject();
-                        }
-                        executor.execute(r);
-                    }
-                }
-
-                @Override
-                public String toString() {
-                    return "DiscardOldest";
-                }
-            };
-        } else if (this == Discard) {
-            return new RejectedExecutionHandler() {
-                @Override
-                public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
-                    if (r instanceof Rejectable) {
-                        ((Rejectable) r).reject();
-                    }
-                }
-
-                @Override
-                public String toString() {
-                    return "Discard";
-                }
-            };
-        }
-        throw new IllegalArgumentException("Unknown ThreadPoolRejectedPolicy: " + this);
-    }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/ValueHolder.java b/camel-core/src/main/java/org/apache/camel/ValueHolder.java
new file mode 100644
index 0000000..2b56507
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/ValueHolder.java
@@ -0,0 +1,55 @@
+/**
+ * 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;
+
+/**
+ * Holder object for a given value.
+ */
+public class ValueHolder<V> {
+    private final V value;
+
+    public ValueHolder(V val) {
+        value = val;
+    }
+
+    public V get() {
+        return value;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        ValueHolder<?> that = (ValueHolder<?>) o;
+
+        if (value != null ? !value.equals(that.value) : that.value != null) {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        return value != null ? value.hashCode() : 0;
+    }
+}
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/PerformanceCounter.java b/camel-core/src/main/java/org/apache/camel/api/management/PerformanceCounter.java
deleted file mode 100644
index cd61df9..0000000
--- a/camel-core/src/main/java/org/apache/camel/api/management/PerformanceCounter.java
+++ /dev/null
@@ -1,66 +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.api.management;
-
-import org.apache.camel.Exchange;
-
-/**
- * A counter that gathers performance metrics when an {@link org.apache.camel.Exchange} is routed in Camel.
- */
-public interface PerformanceCounter {
-
-    /**
-     * Executed when an {@link org.apache.camel.Exchange} is about to be processed.
-     *
-     * @param exchange the exchange
-     */
-    void processExchange(Exchange exchange);
-
-    /**
-     * Executed when an {@link org.apache.camel.Exchange} is complete.
-     *
-     * @param exchange the exchange
-     * @param time the time it took in millis to complete
-     */
-    void completedExchange(Exchange exchange, long time);
-
-    /**
-     * Executed when an {@link org.apache.camel.Exchange} failed.
-     *
-     * @param exchange the exchange
-     */
-    void failedExchange(Exchange exchange);
-
-    /**
-     * Are statistics enabled?
-     * <p/>
-     * They can be enabled and disabled at runtime
-     *
-     * @return whether statistics are enabled or not
-     */
-    boolean isStatisticsEnabled();
-
-    /**
-     * Sets whether statistics are enabled.
-     * <p/>
-     * They can be enabled and disabled at runtime
-     *
-     * @param statisticsEnabled whether statistics are enabled or not
-     */
-    void setStatisticsEnabled(boolean statisticsEnabled);
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
index 8b3d72f..0f73c6c 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
@@ -23,6 +23,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.impl.InterceptSendToMockEndpointStrategy;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -81,7 +82,7 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
      *
      * @param pattern the pattern(s).
      * @throws Exception can be thrown if error occurred
-     * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
+     * @see EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
      */
     public void mockEndpoints(String... pattern) throws Exception {
         for (String s : pattern) {
@@ -94,7 +95,7 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
      *
      * @param pattern the pattern(s).
      * @throws Exception can be thrown if error occurred
-     * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
+     * @see EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
      */
     public void mockEndpointsAndSkip(String... pattern) throws Exception {
         for (String s : pattern) {
@@ -125,11 +126,11 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
     /**
      * Weaves by matching id of the nodes in the route (incl onException etc).
      * <p/>
-     * Uses the {@link org.apache.camel.util.EndpointHelper#matchPattern(String, String)} matching algorithm.
+     * Uses the {@link EndpointHelper#matchPattern(String, String)} matching algorithm.
      *
      * @param pattern the pattern
      * @return the builder
-     * @see org.apache.camel.util.EndpointHelper#matchPattern(String, String)
+     * @see EndpointHelper#matchPattern(String, String)
      */
     public <T extends ProcessorDefinition<?>> AdviceWithBuilder<T> weaveById(String pattern) {
         ObjectHelper.notNull(originalRoute, "originalRoute", this);
@@ -139,11 +140,11 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
     /**
      * Weaves by matching the to string representation of the nodes in the route (incl onException etc).
      * <p/>
-     * Uses the {@link org.apache.camel.util.EndpointHelper#matchPattern(String, String)} matching algorithm.
+     * Uses the {@link EndpointHelper#matchPattern(String, String)} matching algorithm.
      *
      * @param pattern the pattern
      * @return the builder
-     * @see org.apache.camel.util.EndpointHelper#matchPattern(String, String)
+     * @see EndpointHelper#matchPattern(String, String)
      */
     public <T extends ProcessorDefinition<?>> AdviceWithBuilder<T> weaveByToString(String pattern) {
         ObjectHelper.notNull(originalRoute, "originalRoute", this);
@@ -153,11 +154,11 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
     /**
      * Weaves by matching sending to endpoints with the given uri of the nodes in the route (incl onException etc).
      * <p/>
-     * Uses the {@link org.apache.camel.util.EndpointHelper#matchPattern(String, String)} matching algorithm.
+     * Uses the {@link EndpointHelper#matchPattern(String, String)} matching algorithm.
      *
      * @param pattern the pattern
      * @return the builder
-     * @see org.apache.camel.util.EndpointHelper#matchPattern(String, String)
+     * @see EndpointHelper#matchPattern(String, String)
      */
     public <T extends ProcessorDefinition<?>> AdviceWithBuilder<T> weaveByToUri(String pattern) {
         ObjectHelper.notNull(originalRoute, "originalRoute", this);
diff --git a/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java b/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
index 67605e3..652fe1c 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
@@ -28,7 +28,7 @@ import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.TransactedDefinition;
-import org.apache.camel.util.EndpointHelper;
+import org.apache.camel.support.EndpointHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/AggregationStrategies.java b/camel-core/src/main/java/org/apache/camel/builder/AggregationStrategies.java
new file mode 100644
index 0000000..bc70729
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/builder/AggregationStrategies.java
@@ -0,0 +1,152 @@
+/**
+ * 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.builder;
+
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
+import org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy;
+import org.apache.camel.processor.aggregate.GroupedExchangeAggregationStrategy;
+import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
+import org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy;
+
+/**
+ * Toolbox class to create commonly used Aggregation Strategies in a fluent manner.
+ * For more information about the supported {@link AggregationStrategy}, see links to the Javadocs of the relevant class below.
+ * 
+ * @since 2.12
+ */
+public final class AggregationStrategies {
+
+    private AggregationStrategies() { }
+
+    /**
+     * Creates a {@link FlexibleAggregationStrategy} pivoting around a particular type, e.g. it casts all <tt>pick expression</tt> 
+     * results to the desired type.
+     * 
+     * @param type The type the {@link FlexibleAggregationStrategy} deals with.
+     */
+    public static <T> FlexibleAggregationStrategy<T> flexible(Class<T> type) {
+        return new FlexibleAggregationStrategy<>(type);
+    }
+    
+    /**
+     * Creates a {@link FlexibleAggregationStrategy} with no particular type, i.e. performing no casts or type conversion of 
+     * <tt>pick expression</tt> results.
+     */
+    public static FlexibleAggregationStrategy<Object> flexible() {
+        return new FlexibleAggregationStrategy<>();
+    }
+
+    /**
+     * Use the latest incoming exchange.
+     *
+     * @see org.apache.camel.processor.aggregate.UseLatestAggregationStrategy
+     */
+    public static AggregationStrategy useLatest() {
+        return new UseLatestAggregationStrategy();
+    }
+    
+    /**
+     * Use the original exchange.
+     *
+     * @see org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy
+     */
+    public static AggregationStrategy useOriginal() {
+        return new UseOriginalAggregationStrategy();
+    }
+
+    /**
+     * Use the original exchange.
+     *
+     * @param propagateException whether to propgate exception if errors was thrown during processing splitted messages.
+     *
+     * @see org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy
+     */
+    public static AggregationStrategy useOriginal(boolean propagateException) {
+        return new UseOriginalAggregationStrategy(propagateException);
+    }
+
+    /**
+     * Creates a {@link GroupedExchangeAggregationStrategy} aggregation strategy.
+     */
+    public static AggregationStrategy groupedExchange() {
+        return new GroupedExchangeAggregationStrategy();
+    }
+
+    /**
+     * Creates a {@link GroupedBodyAggregationStrategy} aggregation strategy.
+     */
+    public static AggregationStrategy groupedBody() {
+        return new GroupedBodyAggregationStrategy();
+    }
+
+    /**
+     * Creates a {@link AggregationStrategyBeanAdapter} for using a POJO as the aggregation strategy.
+     */
+    public static AggregationStrategy bean(Object bean) {
+        return new AggregationStrategyBeanAdapter(bean);
+    }
+
+    /**
+     * Creates a {@link AggregationStrategyBeanAdapter} for using a POJO as the aggregation strategy.
+     */
+    public static AggregationStrategy bean(Object bean, String methodName) {
+        return new AggregationStrategyBeanAdapter(bean, methodName);
+    }
+
+    /**
+     * Creates a {@link AggregationStrategyBeanAdapter} for using a POJO as the aggregation strategy.
+     */
+    public static AggregationStrategy beanAllowNull(Object bean, String methodName) {
+        AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(bean, methodName);
+        adapter.setAllowNullOldExchange(true);
+        adapter.setAllowNullNewExchange(true);
+        return adapter;
+    }
+
+    /**
+     * Creates a {@link AggregationStrategyBeanAdapter} for using a POJO as the aggregation strategy.
+     */
+    public static AggregationStrategy bean(Class<?> type) {
+        return new AggregationStrategyBeanAdapter(type);
+    }
+
+    /**
+     * Creates a {@link AggregationStrategyBeanAdapter} for using a POJO as the aggregation strategy.
+     */
+    public static AggregationStrategy bean(Class<?> type, String methodName) {
+        return new AggregationStrategyBeanAdapter(type, methodName);
+    }
+
+    /**
+     * Creates a {@link AggregationStrategyBeanAdapter} for using a POJO as the aggregation strategy.
+     */
+    public static AggregationStrategy beanAllowNull(Class<?> type, String methodName) {
+        AggregationStrategyBeanAdapter adapter = new AggregationStrategyBeanAdapter(type, methodName);
+        adapter.setAllowNullOldExchange(true);
+        adapter.setAllowNullNewExchange(true);
+        return adapter;
+    }
+
+    /**
+     * Creates a {@link XsltAggregationStrategy} as the aggregation strategy.
+     */
+    public static XsltAggregationStrategy xslt(String xslFileLocation) {
+        return XsltAggregationStrategy.create(xslFileLocation);
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
index 05b916d..666ac16 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.NoSuchEndpointException;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.xml.XPathBuilder;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.language.ExchangePropertyExpression;
@@ -178,7 +179,7 @@ public abstract class BuilderSupport {
         try {
             value = getContext().resolvePropertyPlaceholders(value);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return XPathBuilder.xpath(value, resultType);
     }
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
index 95b62e9..70d7f5d 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
@@ -61,8 +61,8 @@ import org.apache.camel.model.dataformat.YAMLDataFormat;
 import org.apache.camel.model.dataformat.YAMLLibrary;
 import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
+import org.apache.camel.support.jsse.KeyStoreParameters;
 import org.apache.camel.util.CollectionStringBuffer;
-import org.apache.camel.util.jsse.KeyStoreParameters;
 
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
index d6e5ca1..583d6cb 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
@@ -25,7 +25,7 @@ import org.apache.camel.processor.DeadLetterChannel;
 import org.apache.camel.processor.FatalFallbackErrorHandler;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.RouteContext;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
index b229332..ea8ea1a 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
@@ -30,8 +30,8 @@ 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.util.CamelLogger;
-import org.apache.camel.util.ExpressionToPredicateAdapter;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.slf4j.LoggerFactory;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java
index 55b8459..bfcbbdb 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultFluentProducerTemplate.java
@@ -33,10 +33,10 @@ import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.processor.ConvertBodyProcessor;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 
 public class DefaultFluentProducerTemplate extends ServiceSupport implements FluentProducerTemplate {
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExchangeBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ExchangeBuilder.java
index 97282e0..e4c987c 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExchangeBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExchangeBuilder.java
@@ -23,7 +23,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Message;
-import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.support.DefaultExchange;
 
 /**
  * Builder to create {@link Exchange} and add headers and set body on the Exchange {@link Message}.
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
index 5c03bbf..c10106a 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
@@ -36,6 +36,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.CamelExecutionException;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -46,6 +47,7 @@ import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.NoSuchLanguageException;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Producer;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.RuntimeExchangeException;
 import org.apache.camel.component.bean.BeanInvocation;
 import org.apache.camel.component.properties.PropertiesComponent;
@@ -57,17 +59,17 @@ import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.UnitOfWork;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ExpressionAdapter;
+import org.apache.camel.support.GroupIterator;
+import org.apache.camel.support.GroupTokenIterator;
+import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.TokenPairExpressionIterator;
 import org.apache.camel.support.TokenXMLExpressionIterator;
 import org.apache.camel.support.XMLTokenExpressionIterator;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.GroupIterator;
-import org.apache.camel.util.GroupTokenIterator;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.MessageHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.OgnlHelper;
 import org.apache.camel.util.Scanner;
@@ -231,7 +233,7 @@ public final class ExpressionBuilder {
                     String text = simpleExpression(typeName).evaluate(exchange, String.class);
                     type = exchange.getContext().getClassResolver().resolveMandatoryClass(text);
                 } catch (ClassNotFoundException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
 
                 String text = simpleExpression(headerName).evaluate(exchange, String.class);
@@ -824,7 +826,7 @@ public final class ExpressionBuilder {
                     }
                 }
 
-                throw ObjectHelper.wrapCamelExecutionException(exchange, new ClassNotFoundException("Cannot find type " + text));
+                throw CamelExecutionException.wrapCamelExecutionException(exchange, new ClassNotFoundException("Cannot find type " + text));
             }
 
             @Override
@@ -1076,7 +1078,7 @@ public final class ExpressionBuilder {
                 try {
                     type = exchange.getContext().getClassResolver().resolveMandatoryClass(text);
                 } catch (ClassNotFoundException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
                 return exchange.getIn().getBody(type);
             }
@@ -1100,7 +1102,7 @@ public final class ExpressionBuilder {
                 try {
                     type = exchange.getContext().getClassResolver().resolveMandatoryClass(text);
                 } catch (ClassNotFoundException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
                 Object body = exchange.getIn().getBody(type);
                 if (body != null) {
@@ -1134,12 +1136,12 @@ public final class ExpressionBuilder {
                 try {
                     type = exchange.getContext().getClassResolver().resolveMandatoryClass(text);
                 } catch (ClassNotFoundException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
                 try {
                     return exchange.getIn().getMandatoryBody(type);
                 } catch (InvalidPayloadException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
             }
 
@@ -1162,13 +1164,13 @@ public final class ExpressionBuilder {
                 try {
                     type = exchange.getContext().getClassResolver().resolveMandatoryClass(text);
                 } catch (ClassNotFoundException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
                 Object body;
                 try {
                     body = exchange.getIn().getMandatoryBody(type);
                 } catch (InvalidPayloadException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
                 // ognl is able to evaluate method name if it contains nested functions
                 // so we should not eager evaluate ognl as a string
@@ -1258,7 +1260,7 @@ public final class ExpressionBuilder {
                 try {
                     return exchange.getIn().getMandatoryBody(type);
                 } catch (InvalidPayloadException e) {
-                    throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                    throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
             }
 
@@ -1523,7 +1525,7 @@ public final class ExpressionBuilder {
             public Object evaluate(Exchange exchange) {
                 String text = simpleExpression(token).evaluate(exchange, String.class);
                 Object value = expression.evaluate(exchange, Object.class);
-                Scanner scanner = ObjectHelper.getScanner(exchange, value, text);
+                Scanner scanner = ExchangeHelper.getScanner(exchange, value, text);
                 return scanner;
             }
 
@@ -1592,7 +1594,7 @@ public final class ExpressionBuilder {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Object value = expression.evaluate(exchange, Object.class);
-                Scanner scanner = ObjectHelper.getScanner(exchange, value, regexTokenizer);
+                Scanner scanner = ExchangeHelper.getScanner(exchange, value, regexTokenizer);
                 return scanner;
             }
 
@@ -1660,7 +1662,7 @@ public final class ExpressionBuilder {
                 // evaluate expression as iterator
                 Iterator<?> it = expression.evaluate(exchange, Iterator.class);
                 ObjectHelper.notNull(it, "expression: " + expression + " evaluated on " + exchange + " must return an java.util.Iterator");
-                return new SkipIterator(exchange, it, skip);
+                return new SkipIterator(it, skip);
             }
 
             @Override
@@ -1892,7 +1894,7 @@ public final class ExpressionBuilder {
                         long value = exchange.getContext().getTypeConverter().mandatoryConvertTo(long.class, exchange, offsetMatcher.group(2).trim());
                         offsets.add(offsetMatcher.group(1).equals("+") ? value : -value);
                     } catch (NoTypeConversionAvailableException e) {
-                        throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+                        throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
                     }
                 }
 
@@ -2033,7 +2035,7 @@ public final class ExpressionBuilder {
                     producer.process(exchange);
                     producer.stop();
                 } catch (Exception e) {
-                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
 
                 // return the OUT body, but check for exchange pattern
@@ -2286,7 +2288,7 @@ public final class ExpressionBuilder {
                     if (defaultValue != null) {
                         return defaultValue;
                     }
-                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
             }
 
@@ -2413,7 +2415,7 @@ public final class ExpressionBuilder {
                                 def.setMaxChars(maxChars);
                             }
                         } catch (Exception e) {
-                            throw ObjectHelper.wrapRuntimeCamelException(e);
+                            throw RuntimeCamelException.wrapRuntimeCamelException(e);
                         }
                         formatter = def;
                     }
diff --git a/camel-core/src/main/java/org/apache/camel/builder/FlexibleAggregationStrategy.java b/camel-core/src/main/java/org/apache/camel/builder/FlexibleAggregationStrategy.java
new file mode 100644
index 0000000..d9dbce5
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/builder/FlexibleAggregationStrategy.java
@@ -0,0 +1,437 @@
+/**
+ * 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.builder;
+
+import java.util.Collection;
+
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+import org.apache.camel.TypeConversionException;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.processor.aggregate.CompletionAwareAggregationStrategy;
+import org.apache.camel.processor.aggregate.TimeoutAwareAggregationStrategy;
+import org.apache.camel.support.ExchangeHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Flexible Aggregation Strategy is a highly customizable, fluently configurable aggregation strategy. It allows you to quickly whip up an {@link AggregationStrategy} 
+ * that is capable of performing the most typical aggregation duties, with zero Java code.
+ * <p/>
+ * It can perform the following logic:
+ * <ul>
+ *   <li>Filtering results based on a defined {@link Predicate} written in any language, such as XPath, OGNL, Simple, Javascript, etc.</li>
+ *   <li>Picking specific data elements for aggregation.</li>
+ *   <li>Accumulating results in any designated {@link Collection} type, e.g. in a HashSet, LinkedList, ArrayList, etc.</li>
+ *   <li>Storing the output in a specific place in the Exchange: a property, a header or in the body.</li>
+ * </ul>
+ * 
+ * It also includes the ability to specify both aggregation batch completion actions and timeout actions, in an abbreviated manner.
+ * <p/>
+ * This Aggregation Strategy is suitable for usage in aggregate, split, multicast, enrich and recipient list EIPs.
+ */
+public class FlexibleAggregationStrategy<E extends Object> implements AggregationStrategy, 
+        CompletionAwareAggregationStrategy, TimeoutAwareAggregationStrategy {
+
+    private static final Logger LOG = LoggerFactory.getLogger(FlexibleAggregationStrategy.class);
+
+    private Expression pickExpression = ExpressionBuilder.bodyExpression();
+    private Predicate conditionPredicate;
+    @SuppressWarnings("rawtypes")
+    private Class<? extends Collection> collectionType;
+    @SuppressWarnings("unchecked")
+    private Class<E> castAs = (Class<E>) Object.class;
+    private boolean storeNulls;
+    private boolean ignoreInvalidCasts; // = false
+    private FlexibleAggregationStrategyInjector injector = new BodyInjector(castAs);
+    private TimeoutAwareMixin timeoutMixin;
+    private CompletionAwareMixin completionMixin;
+
+    /**
+     * Initializes a new instance with {@link Object} as the {@link FlexibleAggregationStrategy#castAs} type.
+     */
+    public FlexibleAggregationStrategy() {
+    }
+    
+    /**
+     * Initializes a new instance with the specified type as the {@link FlexibleAggregationStrategy#castAs} type.
+     * @param type The castAs type.
+     */
+    public FlexibleAggregationStrategy(Class<E> type) {
+        this.castAs = type;
+    }
+    
+    /**
+     * Set an expression to extract the element to be aggregated from the incoming {@link Exchange}.
+     * All results are cast to the {@link FlexibleAggregationStrategy#castAs} type (or the type specified in the constructor).
+     * <p/>
+     * By default, it picks the full IN message body of the incoming exchange. 
+     * @param expression The picking expression.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> pick(Expression expression) {
+        this.pickExpression = expression;
+        return this;
+    }
+
+    /**
+     * Set a filter condition such as only results satisfying it will be aggregated. 
+     * By default, all picked values will be processed.
+     * @param predicate The condition.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> condition(Predicate predicate) {
+        this.conditionPredicate = predicate;
+        return this;
+    }
+
+    /**
+     * Accumulate the result of the <i>pick expression</i> in a collection of the designated type. 
+     * No <tt>null</tt>s will stored unless the {@link FlexibleAggregationStrategy#storeNulls()} option is enabled.
+     * @param collectionType The type of the Collection to aggregate into.
+     * @return This instance.
+     */
+    @SuppressWarnings("rawtypes")
+    public FlexibleAggregationStrategy<E> accumulateInCollection(Class<? extends Collection> collectionType) {
+        this.collectionType = collectionType;
+        return this;
+    }
+
+    /**
+     * Store the result of this Aggregation Strategy (whether an atomic element or a Collection) in a property with
+     * the designated name.
+     * @param propertyName The property name.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> storeInProperty(String propertyName) {
+        this.injector = new PropertyInjector(castAs, propertyName);
+        return this;
+    }
+
+    /**
+     * Store the result of this Aggregation Strategy (whether an atomic element or a Collection) in an IN message header with
+     * the designated name.
+     * @param headerName The header name.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> storeInHeader(String headerName) {
+        this.injector = new HeaderInjector(castAs, headerName);
+        return this;
+    }
+
+    /**
+     * Store the result of this Aggregation Strategy (whether an atomic element or a Collection) in the body of the IN message.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> storeInBody() {
+        this.injector = new BodyInjector(castAs);
+        return this;
+    }
+
+    /**
+     * Cast the result of the <i>pick expression</i> to this type.
+     * @param castAs Type for the cast.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> castAs(Class<E> castAs) {
+        this.castAs = castAs;
+        injector.setType(castAs);
+        return this;
+    }
+
+    /**
+     * Enables storing null values in the resulting collection.
+     * By default, this aggregation strategy will drop null values.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> storeNulls() {
+        this.storeNulls = true;
+        return this;
+    }
+    
+    /**
+     * Ignores invalid casts instead of throwing an exception if the <i>pick expression</i> result cannot be casted to the 
+     * specified type.
+     * By default, this aggregation strategy will throw an exception if an invalid cast occurs.
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> ignoreInvalidCasts() {
+        this.ignoreInvalidCasts = true;
+        return this;
+    }
+    
+    /**
+     * Plugs in logic to execute when a timeout occurs.
+     * @param timeoutMixin
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> timeoutAware(TimeoutAwareMixin timeoutMixin) {
+        this.timeoutMixin = timeoutMixin;
+        return this;
+    }
+
+    /**
+     * Plugs in logic to execute when an aggregation batch completes.
+     * @param completionMixin
+     * @return This instance.
+     */
+    public FlexibleAggregationStrategy<E> completionAware(CompletionAwareMixin completionMixin) {
+        this.completionMixin = completionMixin;
+        return this;
+    }
+    
+    @Override
+    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
+        Exchange exchange = oldExchange;
+        if (exchange == null) {
+            exchange = ExchangeHelper.createCorrelatedCopy(newExchange, true);
+            injector.prepareAggregationExchange(exchange);
+        }
+
+        // 1. Apply the condition and reject the aggregation if unmatched
+        if (conditionPredicate != null && !conditionPredicate.matches(newExchange)) {
+            LOG.trace("Dropped exchange {} from aggregation as predicate {} was not matched", newExchange, conditionPredicate);
+            return exchange;
+        }
+
+        // 2. Pick the appropriate element of the incoming message, casting it to the specified class
+        //    If null, act accordingly based on storeNulls
+        E picked = null;
+        try {
+            picked = pickExpression.evaluate(newExchange, castAs);
+        } catch (TypeConversionException exception) {
+            if (!ignoreInvalidCasts) {
+                throw exception;
+            }
+        }
+        
+        if (picked == null && !storeNulls) {
+            LOG.trace("Dropped exchange {} from aggregation as pick expression returned null and storing nulls is not enabled", newExchange);
+            return exchange;
+        }
+
+        if (collectionType == null) {
+            injectAsRawValue(exchange, picked);
+        } else {
+            injectAsCollection(exchange, picked, collectionType);
+        }
+
+        return exchange;
+    }
+    
+
+    @Override
+    public void timeout(Exchange oldExchange, int index, int total, long timeout) {
+        if (timeoutMixin == null) {
+            return;
+        }
+        timeoutMixin.timeout(oldExchange, index, total, timeout);
+    }
+
+    @Override
+    public void onCompletion(Exchange exchange) {
+        if (completionMixin == null) {
+            return;
+        }
+        completionMixin.onCompletion(exchange);
+    }
+
+    private void injectAsRawValue(Exchange oldExchange, E picked) {
+        injector.setValue(oldExchange, picked);
+    }
+
+    private void injectAsCollection(Exchange oldExchange, E picked, Class<? extends Collection> collectionType) {
+        Collection<E> col = injector.getValueAsCollection(oldExchange, collectionType);
+        col = safeInsertIntoCollection(oldExchange, col, picked);
+        injector.setValueAsCollection(oldExchange, col);
+    }
+
+    @SuppressWarnings("unchecked")
+    private Collection<E> safeInsertIntoCollection(Exchange oldExchange, Collection<E> oldValue, E toInsert) {
+        Collection<E> collection = null;
+        try {
+            if (oldValue == null || oldExchange.getProperty(Exchange.AGGREGATED_COLLECTION_GUARD, Boolean.class) == null) {
+                try {
+                    collection = collectionType.newInstance();
+                } catch (Exception e) {
+                    LOG.warn("Could not instantiate collection of type {}. Aborting aggregation.", collectionType);
+                    throw CamelExecutionException.wrapCamelExecutionException(oldExchange, e);
+                }
+                oldExchange.setProperty(Exchange.AGGREGATED_COLLECTION_GUARD, Boolean.FALSE);
+            } else {
+                collection = collectionType.cast(oldValue);
+            }
+            
+            if (collection != null) {
+                collection.add(toInsert);
+            }
+            
+        } catch (ClassCastException exception) {
+            if (!ignoreInvalidCasts) {
+                throw exception;
+            }
+        }
+        return collection;
+    }
+    
+    public interface TimeoutAwareMixin {
+        void timeout(Exchange exchange, int index, int total, long timeout);
+    }
+    
+    public interface CompletionAwareMixin {
+        void onCompletion(Exchange exchange);
+    }
+    
+    private abstract class FlexibleAggregationStrategyInjector {
+        protected Class<E> type;
+        
+        FlexibleAggregationStrategyInjector(Class<E> type) {
+            this.type = type;
+        }
+        
+        public void setType(Class<E> type) {
+            this.type = type;
+        }
+        
+        public abstract void prepareAggregationExchange(Exchange exchange);
+        public abstract E getValue(Exchange exchange);
+        public abstract void setValue(Exchange exchange, E obj);
+        public abstract Collection<E> getValueAsCollection(Exchange exchange, Class<? extends Collection> type);
+        public abstract void setValueAsCollection(Exchange exchange, Collection<E> obj);
+    }
+    
+    private class PropertyInjector extends FlexibleAggregationStrategyInjector {
+        private String propertyName;
+        
+        PropertyInjector(Class<E> type, String propertyName) {
+            super(type);
+            this.propertyName = propertyName;
+        }
+        
+        @Override
+        public void prepareAggregationExchange(Exchange exchange) {
+            exchange.removeProperty(propertyName);
+        }
+        
+        @Override
+        public E getValue(Exchange exchange) {
+            return exchange.getProperty(propertyName, type);
+        }
+
+        @Override
+        public void setValue(Exchange exchange, E obj) {
+            exchange.setProperty(propertyName, obj);
+        }
+
+        @Override @SuppressWarnings("unchecked")
+        public Collection<E> getValueAsCollection(Exchange exchange, Class<? extends Collection> type) {
+            Object value = exchange.getProperty(propertyName);
+            if (value == null) {
+                // empty so create a new collection to host this
+                return exchange.getContext().getInjector().newInstance(type);
+            } else {
+                return exchange.getProperty(propertyName, type);
+            }
+        }
+
+        @Override
+        public void setValueAsCollection(Exchange exchange, Collection<E> obj) {
+            exchange.setProperty(propertyName, obj);
+        }
+
+    }
+    
+    private class HeaderInjector extends FlexibleAggregationStrategyInjector {
+        private String headerName;
+        
+        HeaderInjector(Class<E> type, String headerName) {
+            super(type);
+            this.headerName = headerName;
+        }
+        
+        @Override
+        public void prepareAggregationExchange(Exchange exchange) {
+            exchange.getIn().removeHeader(headerName);
+        }
+        
+        @Override
+        public E getValue(Exchange exchange) {
+            return exchange.getIn().getHeader(headerName, type);
+        }
+
+        @Override
+        public void setValue(Exchange exchange, E obj) {
+            exchange.getIn().setHeader(headerName, obj);
+        }
+
+        @Override @SuppressWarnings("unchecked")
+        public Collection<E> getValueAsCollection(Exchange exchange, Class<? extends Collection> type) {
+            Object value = exchange.getIn().getHeader(headerName);
+            if (value == null) {
+                // empty so create a new collection to host this
+                return exchange.getContext().getInjector().newInstance(type);
+            } else {
+                return exchange.getIn().getHeader(headerName, type);
+            }
+        }
+        
+        @Override
+        public void setValueAsCollection(Exchange exchange, Collection<E> obj) {
+            exchange.getIn().setHeader(headerName, obj);
+        }
+    }
+    
+    private class BodyInjector extends FlexibleAggregationStrategyInjector {
+        BodyInjector(Class<E> type) {
+            super(type);
+        }
+
+        @Override
+        public void prepareAggregationExchange(Exchange exchange) {
+            exchange.getIn().setBody(null);
+        }
+        
+        @Override
+        public E getValue(Exchange exchange) {
+            return exchange.getIn().getBody(type);
+        }
+
+        @Override
+        public void setValue(Exchange exchange, E obj) {
+            exchange.getIn().setBody(obj);
+        }
+
+        @Override @SuppressWarnings("unchecked")
+        public Collection<E> getValueAsCollection(Exchange exchange, Class<? extends Collection> type) {
+            Object value = exchange.getIn().getBody();
+            if (value == null) {
+                // empty so create a new collection to host this
+                return exchange.getContext().getInjector().newInstance(type);
+            } else {
+                return exchange.getIn().getBody(type);
+            }
+        }
+        
+        @Override
+        public void setValueAsCollection(Exchange exchange, Collection<E> obj) {
+            exchange.getIn().setBody(obj);
+        }
+    }
+    
+}
diff --git a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
index b54724b..05fc8fd 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
@@ -33,16 +33,17 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.Producer;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.direct.DirectEndpoint;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.management.event.ExchangeCompletedEvent;
 import org.apache.camel.management.event.ExchangeCreatedEvent;
 import org.apache.camel.management.event.ExchangeFailedEvent;
 import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.EventNotifierSupport;
-import org.apache.camel.util.EndpointHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -91,7 +92,7 @@ public class NotifyBuilder {
         try {
             ServiceHelper.startService(eventNotifier);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         context.getManagementStrategy().addEventNotifier(eventNotifier);
     }
@@ -102,7 +103,7 @@ public class NotifyBuilder {
      *
      * @param endpointUri uri of endpoint or pattern (see the EndpointHelper javadoc)
      * @return the builder
-     * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
+     * @see EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
      */
     public NotifyBuilder from(final String endpointUri) {
         stack.add(new EventPredicateSupport() {
@@ -138,7 +139,7 @@ public class NotifyBuilder {
      *
      * @param routeId id of route or pattern (see the EndpointHelper javadoc)
      * @return the builder
-     * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
+     * @see EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
      */
     public NotifyBuilder fromRoute(final String routeId) {
         stack.add(new EventPredicateSupport() {
@@ -288,7 +289,7 @@ public class NotifyBuilder {
      *
      * @param endpointUri uri of endpoint or pattern (see the EndpointHelper javadoc)
      * @return the builder
-     * @see org.apache.camel.util.EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
+     * @see EndpointHelper#matchEndpoint(org.apache.camel.CamelContext, String, String)
      */
     public NotifyBuilder wereSentTo(final String endpointUri) {
         // insert in start of stack but after the previous wereSentTo
@@ -867,7 +868,7 @@ public class NotifyBuilder {
                     }
                     producer.process(exchange);
                 } catch (Exception e) {
-                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
             }
 
@@ -875,7 +876,7 @@ public class NotifyBuilder {
                 try {
                     return mock.await(0, TimeUnit.SECONDS);
                 } catch (InterruptedException e) {
-                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
             }
 
@@ -966,7 +967,7 @@ public class NotifyBuilder {
                     }
                     producer.process(exchange);
                 } catch (Exception e) {
-                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
             }
 
@@ -974,7 +975,7 @@ public class NotifyBuilder {
                 try {
                     return !mock.await(0, TimeUnit.SECONDS);
                 } catch (InterruptedException e) {
-                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
             }
 
@@ -1179,7 +1180,7 @@ public class NotifyBuilder {
         try {
             ServiceHelper.stopService(eventNotifier);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         created = false;
     }
@@ -1215,7 +1216,7 @@ public class NotifyBuilder {
         try {
             latch.await(timeout, timeUnit);
         } catch (InterruptedException e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return matches();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
index c7427a2..6cabce2 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
@@ -24,8 +24,8 @@ import java.util.regex.Pattern;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.util.ExpressionToPredicateAdapter;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.ExpressionToPredicateAdapter;
+import org.apache.camel.support.ObjectHelper;
 
 import static org.apache.camel.util.ObjectHelper.notNull;
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
index 53a7c18..18bf64d 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
@@ -16,12 +16,12 @@
  */
 package org.apache.camel.builder;
 
+import org.apache.camel.CamelExecutionException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.language.simple.SimpleLanguage;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ResourceHelper;
+import org.apache.camel.support.ResourceHelper;
 
 /**
  * Creates an {@link org.apache.camel.language.Simple} language builder.
@@ -99,7 +99,7 @@ public class SimpleBuilder implements Predicate, Expression {
             resolve = ResourceHelper.resolveOptionalExternalScript(exchange.getContext(), exchange, resolve);
             return simple.createPredicate(resolve);
         } catch (Exception e) {
-            throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+            throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
         }
     }
 
@@ -112,7 +112,7 @@ public class SimpleBuilder implements Predicate, Expression {
             resolve = ResourceHelper.resolveOptionalExternalScript(exchange.getContext(), exchange, resolve);
             return simple.createExpression(resolve, resultType);
         } catch (Exception e) {
-            throw ObjectHelper.wrapCamelExecutionException(exchange, e);
+            throw CamelExecutionException.wrapCamelExecutionException(exchange, e);
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java
index 82f5b88..14e6f09 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolBuilder.java
@@ -21,7 +21,7 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ThreadPoolRejectedPolicy;
+import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy;
 import org.apache.camel.spi.ThreadPoolProfile;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolProfileBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolProfileBuilder.java
index 8723a3a..8712735 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolProfileBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ThreadPoolProfileBuilder.java
@@ -18,7 +18,7 @@ package org.apache.camel.builder;
 
 import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.ThreadPoolRejectedPolicy;
+import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy;
 import org.apache.camel.spi.ThreadPoolProfile;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
index 791a382..cc2a2b0 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
@@ -27,7 +27,7 @@ import org.apache.camel.Predicate;
 import org.apache.camel.builder.xml.Namespaces;
 import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.support.ExpressionAdapter;
-import org.apache.camel.util.ExpressionToPredicateAdapter;
+import org.apache.camel.support.ExpressionToPredicateAdapter;
 
 /**
  * A builder of expressions or predicates based on values.
diff --git a/camel-core/src/main/java/org/apache/camel/builder/XsltAggregationStrategy.java b/camel-core/src/main/java/org/apache/camel/builder/XsltAggregationStrategy.java
new file mode 100644
index 0000000..bc13a31
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/builder/XsltAggregationStrategy.java
@@ -0,0 +1,251 @@
+/**
+ * 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.builder;
+
+import java.io.IOException;
+import java.util.concurrent.RejectedExecutionException;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
+
+import org.w3c.dom.Document;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.xml.XsltBuilder;
+import org.apache.camel.builder.xml.XsltUriResolver;
+import org.apache.camel.component.xslt.XsltEndpoint;
+import org.apache.camel.component.xslt.XsltOutput;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The XSLT Aggregation Strategy enables you to use XSL stylesheets to aggregate messages.
+ * <p>
+ * Since XSLT does not directly support providing multiple XML payloads as an input, this aggregator injects
+ * the new incoming XML document (<tt>newExchange</tt>) into the <tt>oldExchange</tt> as an exchange property of
+ * type {@link Document}. The old exchange therefore remains accessible as the root context.
+ * This exchange property can then be accessed from your XSLT by declaring an {@code <xsl:param />} at the top
+ * of your stylesheet:
+ *
+ * <code>
+ *     <xsl:param name="new-exchange" />
+ *
+ *     <xsl:template match="/">
+ *         <abc>
+ *             <xsl:copy-of select="/ElementFromOldExchange" />
+ *             <xsl:copy-of select="$new-exchange/ElementFromNewExchange" />
+ *         </abc>
+ *     </xsl:template>
+ * </code>
+ *
+ * The exchange property name defaults to <tt>new-exchange</tt> but can be
+ * changed through {@link #setPropertyName(String)}.
+ * <p>
+ * Some code bits have been copied from the {@link org.apache.camel.component.xslt.XsltEndpoint}.
+ */
+public class XsltAggregationStrategy extends ServiceSupport implements AggregationStrategy, CamelContextAware {
+
+    private static final Logger LOG = LoggerFactory.getLogger(XsltAggregationStrategy.class);
+    private static final String DEFAULT_PROPERTY_NAME = "new-exchange";
+
+    private volatile XsltBuilder xslt;
+    private volatile URIResolver uriResolver;
+    private CamelContext camelContext;
+
+    private String propertyName;
+    private String xslFile;
+    private String transformerFactoryClass;
+    private XsltOutput output = XsltOutput.string;
+
+    /**
+     * Constructor.
+     *
+     * @param xslFileLocation location of the XSL transformation
+     */
+    public XsltAggregationStrategy(String xslFileLocation) {
+        this.xslFile = xslFileLocation;
+    }
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    @Override
+    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
+        // guard against unlikely NPE
+        if (newExchange == null) {
+            return oldExchange;
+        }
+
+        // in the first call to this aggregation, do not call the XSLT but instead store the
+        // incoming exchange
+        if (oldExchange == null) {
+            return newExchange;
+        }
+
+        if (!isRunAllowed()) {
+            throw new RejectedExecutionException();
+        }
+
+        try {
+            oldExchange.setProperty(propertyName, newExchange.getIn().getBody(Document.class));
+            xslt.process(oldExchange);
+            return oldExchange;
+        } catch (Throwable e) {
+            oldExchange.setException(e);
+        }
+
+        return oldExchange;
+    }
+
+    public void setOutput(XsltOutput output) {
+        this.output = output;
+    }
+
+    public void setXslt(XsltBuilder xslt) {
+        this.xslt = xslt;
+    }
+
+    public void setUriResolver(URIResolver uriResolver) {
+        this.uriResolver = uriResolver;
+    }
+
+    public void setTransformerFactoryClass(String transformerFactoryClass) {
+        this.transformerFactoryClass = transformerFactoryClass;
+    }
+
+    public String getPropertyName() {
+        return propertyName;
+    }
+
+    public void setPropertyName(String propertyName) {
+        this.propertyName = propertyName;
+    }
+
+    protected void configureOutput(XsltBuilder xslt, String output) throws Exception {
+        if (ObjectHelper.isEmpty(output)) {
+            return;
+        }
+
+        if ("string".equalsIgnoreCase(output)) {
+            xslt.outputString();
+        } else if ("bytes".equalsIgnoreCase(output)) {
+            xslt.outputBytes();
+        } else if ("DOM".equalsIgnoreCase(output)) {
+            xslt.outputDOM();
+        } else if ("file".equalsIgnoreCase(output)) {
+            xslt.outputFile();
+        } else {
+            throw new IllegalArgumentException("Unknown output type: " + output);
+        }
+    }
+
+    /**
+     * Loads the resource.
+     *
+     * @param resourceUri the resource to load
+     * @throws TransformerException is thrown if error loading resource
+     * @throws IOException          is thrown if error loading resource
+     */
+    protected void loadResource(String resourceUri) throws TransformerException, IOException {
+        LOG.trace("{} loading schema resource: {}", this, resourceUri);
+        Source source = xslt.getUriResolver().resolve(resourceUri, null);
+        if (source == null) {
+            throw new IOException("Cannot load schema resource " + resourceUri);
+        } else {
+            xslt.setTransformerSource(source);
+        }
+    }
+
+    // --- fluent builders ---
+    public static XsltAggregationStrategy create(String xslFile) {
+        return new XsltAggregationStrategy(xslFile);
+    }
+
+    public XsltAggregationStrategy withPropertyName(String propertyName) {
+        setPropertyName(propertyName);
+        return this;
+    }
+
+    public XsltAggregationStrategy withOutput(XsltOutput output) {
+        setOutput(output);
+        return this;
+    }
+
+    public XsltAggregationStrategy withUriResolver(URIResolver resolver) {
+        setUriResolver(resolver);
+        return this;
+    }
+
+    public XsltAggregationStrategy withTransformerFactoryClass(String clazz) {
+        setTransformerFactoryClass(clazz);
+        return this;
+    }
+
+    public XsltAggregationStrategy withSaxon() {
+        setTransformerFactoryClass(XsltEndpoint.SAXON_TRANSFORMER_FACTORY_CLASS_NAME);
+        return this;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        ObjectHelper.notNull(camelContext, "CamelContext", this);
+
+        // set the default property name if not set
+        this.propertyName = ObjectHelper.isNotEmpty(propertyName) ? propertyName : DEFAULT_PROPERTY_NAME;
+
+        // initialize the XsltBuilder
+        this.xslt = camelContext.getInjector().newInstance(XsltBuilder.class);
+
+        if (transformerFactoryClass != null) {
+            Class<?> factoryClass = camelContext.getClassResolver().resolveMandatoryClass(transformerFactoryClass,
+                XsltAggregationStrategy.class.getClassLoader());
+            TransformerFactory factory = (TransformerFactory) camelContext.getInjector().newInstance(factoryClass);
+            xslt.getConverter().setTransformerFactory(factory);
+        }
+
+        if (uriResolver == null) {
+            uriResolver = new XsltUriResolver(camelContext, xslFile);
+        }
+
+        xslt.setUriResolver(uriResolver);
+        xslt.setFailOnNullBody(true);
+        xslt.transformerCacheSize(0);
+        xslt.setAllowStAX(true);
+
+        configureOutput(xslt, output.name());
+        loadResource(xslFile);
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
+}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java b/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java
index bd6b902..71cfd0c 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/FileResultHandlerFactory.java
@@ -19,7 +19,7 @@ package org.apache.camel.builder.xml;
 import java.io.File;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.ExchangeHelper;
 
 /**
  * Factory for {@link javax.xml.transform.stream.StreamResult} which is streamed to file.
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java
index 2f3c3d9..a46d25e 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java
@@ -52,16 +52,17 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Predicate;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.RuntimeExpressionException;
 import org.apache.camel.WrappedFile;
 import org.apache.camel.converter.jaxp.ThreadSafeNodeList;
-import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.NamespaceAware;
+import org.apache.camel.support.DefaultExchange;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.MessageHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
@@ -1049,7 +1050,7 @@ public class XPathBuilder extends ServiceSupport implements CamelContextAware, E
                     }
                 }
             } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
 
@@ -1232,7 +1233,7 @@ public class XPathBuilder extends ServiceSupport implements CamelContextAware, E
         try {
             return doGetDocument(exchange, body);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         } finally {
             // call the reset if the in message body is StreamCache
             MessageHelper.resetStreamCache(exchange.getIn());
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
index f4b3cb5..15ccdc5 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
@@ -52,8 +52,8 @@ import org.apache.camel.RuntimeTransformException;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.converter.jaxp.StAX2SAXSource;
 import org.apache.camel.converter.jaxp.XmlConverter;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.SynchronizationAdapter;
-import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java
index 6361aee..2f5bfc0 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltUriResolver.java
@@ -25,9 +25,9 @@ import javax.xml.transform.URIResolver;
 import javax.xml.transform.stream.StreamSource;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ResourceHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/ResourceEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/ResourceEndpoint.java
index 5e973fb..3fcda92 100644
--- a/camel-core/src/main/java/org/apache/camel/component/ResourceEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/ResourceEndpoint.java
@@ -26,12 +26,12 @@ import org.apache.camel.api.management.ManagedOperation;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedResourceEndpointMBean;
 import org.apache.camel.converter.IOConverter;
-import org.apache.camel.impl.ProcessorEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.ProcessorEndpoint;
+import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ResourceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
index d6eb750..ac9abf8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractBeanProcessor.java
@@ -23,8 +23,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.Processor;
-import org.apache.camel.util.AsyncProcessorHelper;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.AsyncProcessorHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
index b5546f6..2861e3e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/AbstractCamelInvocationHandler.java
@@ -43,7 +43,7 @@ import org.apache.camel.Headers;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.support.DefaultExchange;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java
index 38cf875..eb40c2f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanAnnotationExpressionFactory.java
@@ -23,7 +23,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
 import org.apache.camel.language.LanguageAnnotation;
 import org.apache.camel.language.bean.BeanExpression;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 
 public class BeanAnnotationExpressionFactory extends DefaultAnnotationExpressionFactory {
@@ -37,7 +37,7 @@ public class BeanAnnotationExpressionFactory extends DefaultAnnotationExpression
         StringHelper.notEmpty(beanName, "ref", annotation);
 
         // method is optional but provide it as null to the bean expression
-        if (ObjectHelper.isEmpty(method)) {
+        if (org.apache.camel.util.ObjectHelper.isEmpty(method)) {
             method = null;
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
index 28a81f0..2766af8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
@@ -19,13 +19,11 @@ package org.apache.camel.component.bean;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.LRUCache;
-import org.apache.camel.util.LRUCacheFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.LRUCache;
+import org.apache.camel.support.LRUCacheFactory;
 
 /**
  * The <a href="http://camel.apache.org/bean.html">Bean Component</a> is for invoking Java beans from Camel.
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
index fbc1afc..7ff9e91 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
@@ -23,11 +23,11 @@ import org.apache.camel.Consumer;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The <a href="http://camel.apache.org/bean.html">bean component</a> is for invoking Java beans from Camel.
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
index 3b6a1c3..560a926 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
@@ -48,9 +48,9 @@ import org.apache.camel.PropertyInject;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.LanguageAnnotation;
 import org.apache.camel.spi.Registry;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.util.CastUtils;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.StringQuoteHelper;
 import org.slf4j.Logger;
@@ -235,7 +235,7 @@ public class BeanInfo {
                     // need to use arrayLength method from ObjectHelper as Camel's bean OGNL support is method invocation based
                     // and not for accessing fields. And hence we need to create a MethodInfo instance with a method to call
                     // and therefore use arrayLength from ObjectHelper to return the array length field.
-                    Method method = ObjectHelper.class.getMethod("arrayLength", Object[].class);
+                    Method method = org.apache.camel.util.ObjectHelper.class.getMethod("arrayLength", Object[].class);
                     ParameterInfo pi = new ParameterInfo(0, Object[].class, null, ExpressionBuilder.mandatoryBodyExpression(Object[].class, true));
                     List<ParameterInfo> lpi = new ArrayList<>(1);
                     lpi.add(pi);
@@ -323,7 +323,7 @@ public class BeanInfo {
         // get the target clazz as it could potentially have been enhanced by
         // CGLIB etc.
         clazz = getTargetClass(clazz);
-        ObjectHelper.notNull(clazz, "clazz", this);
+        org.apache.camel.util.ObjectHelper.notNull(clazz, "clazz", this);
 
         LOG.trace("Introspecting class: {}", clazz);
 
@@ -401,7 +401,7 @@ public class BeanInfo {
             // maybe the method overrides, and the method map keeps info of the source override we can use
             for (Map.Entry<Method, MethodInfo> methodEntry : methodMap.entrySet()) {
                 Method source = methodEntry.getKey();
-                if (ObjectHelper.isOverridingMethod(getType(), source, method, false)) {
+                if (org.apache.camel.util.ObjectHelper.isOverridingMethod(getType(), source, method, false)) {
                     answer = methodEntry.getValue();
                     break;
                 }
@@ -429,7 +429,7 @@ public class BeanInfo {
         List<ParameterInfo> bodyParameters = new ArrayList<>();
 
         boolean hasCustomAnnotation = false;
-        boolean hasHandlerAnnotation = ObjectHelper.hasAnnotation(method.getAnnotations(), Handler.class);
+        boolean hasHandlerAnnotation = org.apache.camel.util.ObjectHelper.hasAnnotation(method.getAnnotations(), Handler.class);
 
         int size = parameterTypes.length;
         if (LOG.isTraceEnabled()) {
@@ -446,7 +446,7 @@ public class BeanInfo {
             LOG.trace("Parameter #{}: {}", i, parameterInfo);
             parameters.add(parameterInfo);
             if (expression == null) {
-                boolean bodyAnnotation = ObjectHelper.hasAnnotation(parameterAnnotations, Body.class);
+                boolean bodyAnnotation = org.apache.camel.util.ObjectHelper.hasAnnotation(parameterAnnotations, Body.class);
                 LOG.trace("Parameter #{} has @Body annotation", i);
                 hasCustomAnnotation |= bodyAnnotation;
                 if (bodyParameters.isEmpty()) {
@@ -647,10 +647,8 @@ public class BeanInfo {
     private MethodInfo chooseMethodWithMatchingParameters(Exchange exchange, String parameters, Collection<MethodInfo> operationList)
         throws AmbiguousMethodCallException {
         // we have hardcoded parameters so need to match that with the given operations
-        Iterator<?> it = ObjectHelper.createIterator(parameters);
         int count = 0;
-        while (it.hasNext()) {
-            it.next();
+        for (String o : ObjectHelper.createIterable(parameters)) {
             count++;
         }
 
@@ -671,7 +669,7 @@ public class BeanInfo {
         List<MethodInfo> candidates = new ArrayList<>();
         MethodInfo fallbackCandidate = null;
         for (MethodInfo info : operations) {
-            it = ObjectHelper.createIterator(parameters, ",", false);
+            Iterator<?> it = ObjectHelper.createIterator(parameters, ",", false);
             int index = 0;
             boolean matches = true;
             while (it.hasNext()) {
@@ -876,7 +874,7 @@ public class BeanInfo {
     protected boolean isValidMethod(Class<?> clazz, Method method) {
         // must not be in the excluded list
         for (Method excluded : EXCLUDED_METHODS) {
-            if (ObjectHelper.isOverridingMethod(excluded, method)) {
+            if (org.apache.camel.util.ObjectHelper.isOverridingMethod(excluded, method)) {
                 // the method is overriding an excluded method so its not valid
                 return false;
             }
@@ -910,9 +908,9 @@ public class BeanInfo {
             Method alreadyRegisteredMethod = alreadyRegisteredMethodInfo.getMethod();
             Method proposedMethod = proposedMethodInfo.getMethod();
 
-            if (ObjectHelper.isOverridingMethod(getType(), proposedMethod, alreadyRegisteredMethod, false)) {
+            if (org.apache.camel.util.ObjectHelper.isOverridingMethod(getType(), proposedMethod, alreadyRegisteredMethod, false)) {
                 return alreadyRegisteredMethodInfo;
-            } else if (ObjectHelper.isOverridingMethod(getType(), alreadyRegisteredMethod, proposedMethod, false)) {
+            } else if (org.apache.camel.util.ObjectHelper.isOverridingMethod(getType(), alreadyRegisteredMethod, proposedMethod, false)) {
                 return proposedMethodInfo;
             }
         }
@@ -1059,7 +1057,7 @@ public class BeanInfo {
 
         // match qualifier types which is used to select among overloaded methods
         String types = StringHelper.between(methodName, "(", ")");
-        if (ObjectHelper.isNotEmpty(types)) {
+        if (org.apache.camel.util.ObjectHelper.isNotEmpty(types)) {
             // we must qualify based on types to match method
             String[] parameters = StringQuoteHelper.splitSafeQuote(types, ',');
             Class<?>[] parameterTypes = null;
@@ -1072,7 +1070,7 @@ public class BeanInfo {
                     Class<?> parameterType = parameterTypes[i];
 
                     String qualifyType = (String) it.next();
-                    if (ObjectHelper.isEmpty(qualifyType)) {
+                    if (org.apache.camel.util.ObjectHelper.isEmpty(qualifyType)) {
                         continue;
                     }
                     // trim the type
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInvocation.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInvocation.java
index e3414c7..eeacd53 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanInvocation.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanInvocation.java
@@ -25,6 +25,7 @@ import java.lang.reflect.Method;
 import java.util.Arrays;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -84,9 +85,9 @@ public class BeanInvocation implements Externalizable {
             LOG.trace("Got response: {}", response);
             exchange.getOut().setBody(response);
         } catch (InvocationTargetException e) {
-            exchange.setException(ObjectHelper.wrapRuntimeCamelException(e.getCause()));
+            exchange.setException(RuntimeCamelException.wrapRuntimeCamelException(e.getCause()));
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanProducer.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanProducer.java
index 36a6ef3..0713fb1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanProducer.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.bean;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.impl.DefaultAsyncProducer;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.support.ServiceHelper;
 
 /**
  * Bean {@link org.apache.camel.Producer}
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
index 23966e2..aec001a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.bean;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
-import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java b/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java
index 41cf7b3..0389487 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/DefaultAnnotationExpressionFactory.java
@@ -24,8 +24,8 @@ import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.language.LanguageAnnotation;
 import org.apache.camel.spi.Language;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.PredicateToExpressionAdapter;
+import org.apache.camel.support.ObjectHelper;
+import org.apache.camel.support.PredicateToExpressionAdapter;
 
 /**
  * Default implementation of the {@link AnnotationExpressionFactory}.
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index c0aa7df..6adb4ef 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -42,18 +42,19 @@ import org.apache.camel.Message;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Pattern;
 import org.apache.camel.Processor;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.RuntimeExchangeException;
 import org.apache.camel.StreamCache;
-import org.apache.camel.impl.DefaultMessage;
 import org.apache.camel.processor.DynamicRouter;
 import org.apache.camel.processor.RecipientList;
 import org.apache.camel.processor.RoutingSlip;
 import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.DefaultMessage;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ExpressionAdapter;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.ExchangeHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.ObjectHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.StringQuoteHelper;
 import org.slf4j.Logger;
@@ -97,7 +98,7 @@ public class MethodInfo {
             try {
                 return invoke(method, pojo, arguments, exchange);
             } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
 
@@ -138,7 +139,7 @@ public class MethodInfo {
             try {
                 camelContext.addService(routingSlip);
             } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
 
@@ -154,7 +155,7 @@ public class MethodInfo {
             try {
                 camelContext.addService(dynamicRouter);
             } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
 
@@ -172,7 +173,7 @@ public class MethodInfo {
             recipientList.setTimeout(recipientListAnnotation.timeout());
             recipientList.setShareUnitOfWork(recipientListAnnotation.shareUnitOfWork());
 
-            if (ObjectHelper.isNotEmpty(recipientListAnnotation.executorServiceRef())) {
+            if (org.apache.camel.util.ObjectHelper.isNotEmpty(recipientListAnnotation.executorServiceRef())) {
                 ExecutorService executor = camelContext.getExecutorServiceManager().newDefaultThreadPool(this, recipientListAnnotation.executorServiceRef());
                 recipientList.setExecutorService(executor);
             }
@@ -183,12 +184,12 @@ public class MethodInfo {
                 recipientList.setExecutorService(executor);
             }
 
-            if (ObjectHelper.isNotEmpty(recipientListAnnotation.strategyRef())) {
+            if (org.apache.camel.util.ObjectHelper.isNotEmpty(recipientListAnnotation.strategyRef())) {
                 AggregationStrategy strategy = CamelContextHelper.mandatoryLookup(camelContext, recipientListAnnotation.strategyRef(), AggregationStrategy.class);
                 recipientList.setAggregationStrategy(strategy);
             }
 
-            if (ObjectHelper.isNotEmpty(recipientListAnnotation.onPrepareRef())) {
+            if (org.apache.camel.util.ObjectHelper.isNotEmpty(recipientListAnnotation.onPrepareRef())) {
                 Processor onPrepare = CamelContextHelper.mandatoryLookup(camelContext, recipientListAnnotation.onPrepareRef(), Processor.class);
                 recipientList.setOnPrepare(onPrepare);
             }
@@ -197,7 +198,7 @@ public class MethodInfo {
             try {
                 camelContext.addService(recipientList);
             } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
     }
@@ -232,7 +233,7 @@ public class MethodInfo {
      * Does the given context match this camel context
      */
     private boolean matchContext(String context) {
-        if (ObjectHelper.isNotEmpty(context)) {
+        if (org.apache.camel.util.ObjectHelper.isNotEmpty(context)) {
             if (!camelContext.getName().equals(context)) {
                 return false;
             }
@@ -431,7 +432,7 @@ public class MethodInfo {
 
     public boolean bodyParameterMatches(Class<?> bodyType) {
         Class<?> actualType = getBodyParameterType();
-        return actualType != null && ObjectHelper.isAssignableFrom(bodyType, actualType);
+        return actualType != null && org.apache.camel.util.ObjectHelper.isAssignableFrom(bodyType, actualType);
     }
 
     public List<ParameterInfo> getParameters() {
@@ -780,11 +781,11 @@ public class MethodInfo {
                             // its a valid parameter value, so convert it to the expected type of the parameter
                             answer = exchange.getContext().getTypeConverter().mandatoryConvertTo(parameterType, exchange, parameterValue);
                             if (LOG.isTraceEnabled()) {
-                                LOG.trace("Parameter #{} evaluated as: {} type: ", index, answer, ObjectHelper.type(answer));
+                                LOG.trace("Parameter #{} evaluated as: {} type: ", index, answer, org.apache.camel.util.ObjectHelper.type(answer));
                             }
                         } catch (Exception e) {
                             if (LOG.isDebugEnabled()) {
-                                LOG.debug("Cannot convert from type: {} to type: {} for parameter #{}", ObjectHelper.type(parameterValue), parameterType, index);
+                                LOG.debug("Cannot convert from type: {} to type: {} for parameter #{}", org.apache.camel.util.ObjectHelper.type(parameterValue), parameterType, index);
                             }
                             throw new ParameterBindingException(e, method, index, parameterType, parameterValue);
                         }
@@ -813,11 +814,11 @@ public class MethodInfo {
                         answer = exchange.getContext().getTypeConverter().mandatoryConvertTo(parameterType, result);
                     }
                     if (LOG.isTraceEnabled()) {
-                        LOG.trace("Parameter #{} evaluated as: {} type: ", index, answer, ObjectHelper.type(answer));
+                        LOG.trace("Parameter #{} evaluated as: {} type: ", index, answer, org.apache.camel.util.ObjectHelper.type(answer));
                     }
                 } catch (NoTypeConversionAvailableException e) {
                     if (LOG.isDebugEnabled()) {
-                        LOG.debug("Cannot convert from type: {} to type: {} for parameter #{}", ObjectHelper.type(result), parameterType, index);
+                        LOG.debug("Cannot convert from type: {} to type: {} for parameter #{}", org.apache.camel.util.ObjectHelper.type(result), parameterType, index);
                     }
                     throw new ParameterBindingException(e, method, index, parameterType, result);
                 }
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java
index 78c5389..7bd7a20 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfoCache.java
@@ -20,7 +20,7 @@ import java.lang.reflect.Method;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.util.LRUCacheFactory;
+import org.apache.camel.support.LRUCacheFactory;
 
 /**
  * Represents a cache of {@link MethodInfo} objects to avoid the expense of introspection for each
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java b/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java
index 98964e6..1d5dfc3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java
@@ -20,7 +20,7 @@ import java.lang.reflect.Proxy;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Producer;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.ServiceHelper;
 
 /**
  * Create a dynamic proxy for a given interface and endpoint that sends the parameter object to the endpoint and optionally
diff --git a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
index 12233eb..ed3b2f0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
@@ -23,7 +23,7 @@ import org.apache.camel.component.bean.BeanComponent;
 import org.apache.camel.component.bean.BeanHolder;
 import org.apache.camel.component.bean.ConstantBeanHolder;
 import org.apache.camel.component.bean.ConstantTypeBeanHolder;
-import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.support.IntrospectionSupport;
 
 /**
  * The <a href="http://camel.apache.org/class.html">Class Component</a> is for binding JavaBeans to Camel message exchanges based on class name.
diff --git a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
index b9f75b0..1fe4ab2 100644
--- a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.browse;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/browse.html">Browse Component</a> provides a simple
diff --git a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java
index dcccd2c..a20c6c7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java
@@ -24,8 +24,6 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.LoadBalancerConsumer;
 import org.apache.camel.processor.loadbalancer.TopicLoadBalancer;
@@ -33,6 +31,8 @@ import org.apache.camel.spi.BrowsableEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.support.DefaultProducer;
 
 /**
  * The browse component is used for viewing the messages received on endpoints that supports {@link BrowsableEndpoint}.
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
index 2893bdb..71f4f0a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
@@ -20,7 +20,7 @@ import java.util.Map;
 import java.util.concurrent.ExecutorService;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/controlbus.html">Control Bus component</a> allows sending messages to a control-bus endpoint to control the lifecycle of routes.
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
index 20eb4a2..78c81f4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
@@ -22,13 +22,13 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The controlbus component provides easy management of Camel applications based on the Control Bus EIP pattern.
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
index f10b094..326c6af 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
@@ -27,10 +27,10 @@ import org.apache.camel.Expression;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.ExpressionBuilder;
-import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.camel.spi.Language;
-import org.apache.camel.util.CamelLogger;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
index e615182b5..797fa6f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
@@ -19,9 +19,9 @@ package org.apache.camel.component.dataformat;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.DataFormat;
-import org.apache.camel.util.EndpointHelper;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.util.StringHelper;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java
index e8e134c..12f673b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatEndpoint.java
@@ -23,15 +23,15 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultAsyncProducer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.processor.MarshalProcessor;
 import org.apache.camel.processor.UnmarshalProcessor;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.support.ServiceHelper;
 
 /**
  * The dataformat component is used for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
index 11410fc..457ae5d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.dataset;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * Component for <a href="http://camel.apache.org/dataset.html">DataSet</a>.
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
index f279036..81e341f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
@@ -21,9 +21,9 @@ import java.util.concurrent.ExecutorService;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.processor.ThroughputLogger;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.DefaultConsumer;
 import org.apache.camel.util.URISupport;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
index ff40053..ecdae8f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
@@ -31,8 +31,8 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.CamelLogger;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
index 91e4361..34eb0e1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
@@ -20,9 +20,9 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.ServiceHelper;
 
 /**
  * The <a href="http://camel.apache.org/direct.html">Direct Component</a> manages {@link DirectEndpoint} and holds the list of named direct endpoints.
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java
index cc90cd7..b971413 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectConsumer.java
@@ -20,8 +20,8 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.ShutdownRunningTask;
 import org.apache.camel.Suspendable;
-import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.spi.ShutdownAware;
+import org.apache.camel.support.DefaultConsumer;
 
 /**
  * The direct consumer.
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java
index 4594d6a..a52851a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java
@@ -25,11 +25,11 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
index 02dce63..53db97c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectProducer.java
@@ -18,9 +18,7 @@ package org.apache.camel.component.direct;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultAsyncProducer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.support.DefaultAsyncProducer;
 
 /**
  * The direct producer.
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
index a2e14ed..38845a8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmBlockingProducer.java
@@ -18,10 +18,8 @@ package org.apache.camel.component.directvm;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultAsyncProducer;
+import org.apache.camel.support.DefaultAsyncProducer;
 import org.apache.camel.util.StopWatch;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The direct producer.
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
index 2e894ad..a4beb8a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
@@ -24,9 +24,9 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/direct-vm.html">Direct VM Component</a> manages {@link DirectVmEndpoint} and holds the list of named direct-vm endpoints.
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumer.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumer.java
index 827e975..2093a5f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmConsumer.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.directvm;
 
 import org.apache.camel.Processor;
 import org.apache.camel.Suspendable;
-import org.apache.camel.impl.DefaultConsumer;
+import org.apache.camel.support.DefaultConsumer;
 
 /**
  * The direct-vm consumer
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmEndpoint.java
index b4188cf..a2226d9 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmEndpoint.java
@@ -21,12 +21,12 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.component.direct.DirectConsumer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The direct-vm component provides direct, synchronous call to another endpoint from any CamelContext in the same JVM.
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
index c74c3e5..2ddb7d1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProcessor.java
@@ -20,9 +20,7 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.DelegateAsyncProcessor;
-import org.apache.camel.util.ExchangeHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.support.ExchangeHelper;
 
 /**
 *
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
index f92273e..d84b061 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmProducer.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.directvm;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.support.DefaultAsyncProducer;
 
 /**
  * The Direct-VM producer.
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
index ddc2865..89c45bc 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
@@ -28,8 +28,6 @@ import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.Exc
 import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.GroupErrorAttribute;
 import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.HttpErrorAttribute;
 import org.apache.camel.component.extension.ComponentVerifierExtensionHelper.StandardErrorCode;
-import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Defines the interface used for validating component/endpoint parameters. The central method of this
@@ -121,8 +119,6 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          */
         CONNECTIVITY;
 
-        private static final ComponentVerifierExtension.Scope[] VALUES = values();
-
         /**
          * Get an instance of this scope from a string representation
          *
@@ -130,12 +126,7 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          * @return the scope enum represented by this string
          */
         public static Scope fromString(String scope) {
-            for (Scope value : VALUES) {
-                if (ObjectHelper.equal(scope, value.name(), true)) {
-                    return value;
-                }
-            }
-            throw new IllegalArgumentException("Unknown scope <" + scope + ">");
+            return Scope.valueOf(scope != null ? scope.toUpperCase() : null);
         }
     }
 
@@ -219,8 +210,8 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          * Convert a string to an {@link Attribute}
          *
          * @param attribute the string representation of an attribute to convert. It should be in all lower case (with
-         *                  underscore as a separator) to avoid overlap with standard attributes like {@linkExceptionAttribute},
-         *                  {@linkHttpAttribute} or {@link GroupAttribute}
+         *                  underscore as a separator) to avoid overlap with standard attributes like {@link ExceptionAttribute},
+         *                  {@link HttpAttribute} or {@link GroupAttribute}
          * @return generated attribute
          */
         static Attribute asAttribute(String attribute) {
@@ -315,7 +306,8 @@ public interface ComponentVerifierExtension extends ComponentExtension {
          * Interface defining an attribute which is a key for the detailed error messages. This is implemented by several
          * standard enums like {@link ExceptionAttribute}, {@link HttpAttribute} or {@link GroupAttribute} but can also
          * implemented for component specific details. This is best done via {@link #asAttribute(String)}
-         * or using one of the other builder method in this error builder (like {@link ResultErrorBuilder#detail(String, Object)}
+         * or using one of the other builder method in this error builder (like
+         * {@link org.apache.camel.component.extension.verifier.ResultErrorBuilder#detail(String, Object)}
          * <p>
          * With respecting to name, the same rules as for {@link Code} apply: Standard attributes are all upper case with _
          * as separators, whereas custom attributes are lower case with underscore separators.
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
index 3de4638..20aa336 100644
--- a/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
@@ -29,9 +29,9 @@ import org.apache.camel.TypeConverter;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.runtimecatalog.EndpointValidationResult;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.IntrospectionSupport;
 
 import static org.apache.camel.util.StreamUtils.stream;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
index 666ae02..6f12ca0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
@@ -22,6 +22,7 @@ import java.nio.file.Path;
 import java.util.Map;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.WrappedFile;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.ObjectHelper;
@@ -77,7 +78,7 @@ public class GenericFile<T> implements WrappedFile<T>  {
         try {
             result = source.getClass().newInstance();
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         result.setCopyFromAbsoluteFilePath(source.getAbsoluteFilePath());
         result.setEndpointPath(source.getEndpointPath());
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java
index 9e7ce96..df6fee4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileComponent.java
@@ -22,10 +22,10 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.util.CastUtils;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
index 4ffd8e1..a552519 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
@@ -28,17 +28,15 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ShutdownRunningTask;
-import org.apache.camel.impl.ScheduledBatchPollingConsumer;
 import org.apache.camel.support.EmptyAsyncCallback;
+import org.apache.camel.support.ScheduledBatchPollingConsumer;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.CastUtils;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.TimeUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Base class for file consumers.
@@ -687,7 +685,7 @@ public abstract class GenericFileConsumer<T> extends ScheduledBatchPollingConsum
             Exchange dummy = endpoint.createExchange();
             fileExpressionResult = endpoint.getFileName().evaluate(dummy, String.class);
             if (dummy.getException() != null) {
-                throw ObjectHelper.wrapRuntimeCamelException(dummy.getException());
+                throw RuntimeCamelException.wrapRuntimeCamelException(dummy.getException());
             }
         }
         return fileExpressionResult;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultSorter.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultSorter.java
index cc3bc9d..5a316b8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultSorter.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultSorter.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.spi.Language;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.ObjectHelper;
 
 /**
  * Default file sorter.
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
index bf95c71..4a778f0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
@@ -36,8 +36,8 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.Message;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.file.strategy.FileMoveExistingStrategy;
-import org.apache.camel.impl.ScheduledPollEndpoint;
 import org.apache.camel.processor.idempotent.MemoryIdempotentRepository;
 import org.apache.camel.spi.BrowsableEndpoint;
 import org.apache.camel.spi.ExceptionHandler;
@@ -45,10 +45,11 @@ import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.IdempotentRepository;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.support.ObjectHelper;
+import org.apache.camel.support.ScheduledPollEndpoint;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -256,7 +257,7 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
             // invoke poll which performs the custom processing, so we can browse the exchanges
             consumer.poll();
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         } finally {
             try {
                 ServiceHelper.stopService(consumer);
@@ -1283,7 +1284,7 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
             // need to normalize paths to ensure we can match using startsWith
             endpointPath = FileUtil.normalizePath(endpointPath);
             String copyOfName = FileUtil.normalizePath(name);
-            if (ObjectHelper.isNotEmpty(endpointPath) && copyOfName.startsWith(endpointPath)) {
+            if (org.apache.camel.util.ObjectHelper.isNotEmpty(endpointPath) && copyOfName.startsWith(endpointPath)) {
                 name = name.substring(endpointPath.length());
             }
 
@@ -1429,7 +1430,7 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
         }
 
         String answer = pattern;
-        if (ObjectHelper.isNotEmpty(path) && ObjectHelper.isNotEmpty(pattern)) {
+        if (org.apache.camel.util.ObjectHelper.isNotEmpty(path) && org.apache.camel.util.ObjectHelper.isNotEmpty(pattern)) {
             // done file must always be in same directory as the real file name
             answer = path + getFileSeparator() + pattern;
         }
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
index bb71009..5f298c1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileMessage.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.file;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.apache.camel.impl.DefaultMessage;
+import org.apache.camel.support.DefaultMessage;
 
 /**
  * Generic file message
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java
index 91ec5fa..8ff3969 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFilePollingConsumer.java
@@ -18,14 +18,12 @@ package org.apache.camel.component.file;
 
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.EventDrivenPollingConsumer;
-import org.apache.camel.impl.ScheduledBatchPollingConsumer;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.PollingConsumerPollStrategy;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.EventDrivenPollingConsumer;
+import org.apache.camel.support.ScheduledBatchPollingConsumer;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.StopWatch;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
 
@@ -193,7 +191,7 @@ public class GenericFilePollingConsumer extends EventDrivenPollingConsumer {
         }
 
         if (cause != null) {
-            throw ObjectHelper.wrapRuntimeCamelException(cause);
+            throw RuntimeCamelException.wrapRuntimeCamelException(cause);
         }
 
         return polledMessages;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java
index d8aff51..4b01f58 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java
@@ -23,12 +23,12 @@ import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
-import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.support.DefaultExchange;
+import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.support.LRUCacheFactory;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.LRUCacheFactory;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
index e2a274f..7b10782 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
@@ -23,7 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
index b24edd2..5ad7fec 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
@@ -29,11 +29,9 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.spi.IdempotentRepository;
+import org.apache.camel.support.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A file read lock that uses an {@link IdempotentRepository} and {@link FileChangedExclusiveReadLockStrategy changed} as the lock strategy.
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
index d6878e5..6df72ee 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
@@ -27,11 +27,9 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.spi.IdempotentRepository;
+import org.apache.camel.support.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A file read lock that uses an {@link IdempotentRepository} and {@link FileRenameExclusiveReadLockStrategy rename} as the lock strategy.
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
index 75b0e84..2619505 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
@@ -29,11 +29,9 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.spi.IdempotentRepository;
+import org.apache.camel.support.CamelLogger;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A file read lock that uses an {@link org.apache.camel.spi.IdempotentRepository} as the lock strategy. This allows to plugin and use existing
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
index d43d1bc..64ac1b0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
@@ -28,7 +28,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
index f4aeaeb..de011b5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
@@ -21,7 +21,7 @@ import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileOperationFailedException;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.ExchangeHelper;
 
 public class GenericFileDeleteProcessStrategy<T> extends GenericFileProcessStrategySupport<T> {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
index 5c145ec..c916075 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
@@ -28,11 +28,9 @@ import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperationFailedException;
 import org.apache.camel.component.file.GenericFileOperations;
 import org.apache.camel.component.file.GenericFileProcessStrategy;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Base class for implementations of {@link GenericFileProcessStrategy}.
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
index c8b0992..2bba3ff 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
@@ -25,7 +25,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
 import org.apache.camel.component.file.GenericFileOperationFailedException;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
 import org.apache.camel.util.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameProcessStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameProcessStrategy.java
index ada2a9c..bd69cd5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameProcessStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameProcessStrategy.java
@@ -21,7 +21,7 @@ import org.apache.camel.component.file.FileEndpoint;
 import org.apache.camel.component.file.GenericFile;
 import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.ExchangeHelper;
 
 public class GenericFileRenameProcessStrategy<T> extends GenericFileProcessStrategySupport<T> {
     private GenericFileRenamer<T> beginRenamer;
diff --git a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
index a166487..69abdae 100644
--- a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
@@ -20,10 +20,10 @@ import java.net.URLDecoder;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Language;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ResourceHelper;
 import org.apache.camel.util.StringHelper;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
index da5f75d..e1410ce 100644
--- a/camel-core/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
@@ -33,9 +33,9 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ResourceHelper;
 
 /**
  * The language component allows you to send a message to an endpoint which executes a script by any of the supported Languages in Camel.
diff --git a/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java b/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java
index 8e9e9a3..cc162ee 100644
--- a/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/language/LanguageProducer.java
@@ -21,10 +21,10 @@ import java.io.InputStream;
 import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
-import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.support.ResourceHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ResourceHelper;
-import org.apache.camel.util.ServiceHelper;
 
 /**
  * Language producer.
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index c8cedc0..1dc443a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -21,13 +21,12 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.processor.DefaultExchangeFormatter;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.DefaultComponent;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The <a href="http://camel.apache.org/log.html">Log Component</a>
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
index 5c35a22..728b9b4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
@@ -20,7 +20,6 @@ import org.apache.camel.Component;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.ProcessorEndpoint;
 import org.apache.camel.model.Constants;
 import org.apache.camel.processor.CamelLogProcessor;
 import org.apache.camel.processor.DefaultExchangeFormatter;
@@ -32,8 +31,9 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.CamelLogger;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.ProcessorEndpoint;
+import org.apache.camel.support.ServiceHelper;
 import org.slf4j.Logger;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java b/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java
index 291d3a5..85b7d29 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java
@@ -21,8 +21,8 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.DefaultAsyncProducer;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
+import org.apache.camel.support.AsyncProcessorConverterHelper;
+import org.apache.camel.support.DefaultAsyncProducer;
 
 /**
  * Log producer.
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java b/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
index 9a2714b..05aee86 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
@@ -28,7 +28,7 @@ import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.builder.ExpressionClauseSupport;
 import org.apache.camel.builder.ValueBuilder;
 import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.util.PredicateAssertHelper;
+import org.apache.camel.support.PredicateAssertHelper;
 
 /**
  * A builder of assertions on message exchanges
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
index 466ae3d..99d294a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
@@ -21,9 +21,9 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.processor.ThroughputLogger;
-import org.apache.camel.util.CamelLogger;
+import org.apache.camel.support.CamelLogger;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/mock.html">Mock Component</a> provides mock endpoints for testing.
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index ad15812..7ada755 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -44,22 +44,20 @@ import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.builder.ProcessorBuilder;
-import org.apache.camel.impl.DefaultAsyncProducer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.InterceptSendToEndpoint;
 import org.apache.camel.spi.BrowsableEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.ExchangeHelper;
-import org.apache.camel.util.ExpressionComparator;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.ExpressionComparator;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StopWatch;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The mock component is used for testing routes and mediation rules using mocks.
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/Time.java b/camel-core/src/main/java/org/apache/camel/component/mock/Time.java
new file mode 100644
index 0000000..4a82097
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/Time.java
@@ -0,0 +1,50 @@
+/**
+ * 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.component.mock;
+
+import java.util.Locale;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * A helper class for working with times in various units
+ */
+public class Time {
+    private final long number;
+    private final TimeUnit timeUnit;
+
+    public Time(long number, TimeUnit timeUnit) {
+        this.number = number;
+        this.timeUnit = timeUnit;
+    }
+
+    public long toMillis() {
+        return timeUnit.toMillis(number);
+    }
+
+    public long getNumber() {
+        return number;
+    }
+
+    public TimeUnit getTimeUnit() {
+        return timeUnit;
+    }
+
+    @Override
+    public String toString() {
+        return number + " " + timeUnit.toString().toLowerCase(Locale.ENGLISH);
+    }
+}
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java b/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
index a1314fb..23545b0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
@@ -23,7 +23,6 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.builder.BinaryPredicateSupport;
-import org.apache.camel.util.Time;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index 873a675..64c3398 100644
--- a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -28,13 +28,11 @@ import java.util.Properties;
 import java.util.stream.Collectors;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.util.FilePathResolver;
-import org.apache.camel.util.LRUCacheFactory;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The <a href="http://camel.apache.org/properties">Properties Component</a> allows you to use property placeholders when defining Endpoint URIs
diff --git a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesEndpoint.java
index 7fd68de..6e8aa30 100644
--- a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesEndpoint.java
@@ -22,11 +22,11 @@ import org.apache.camel.DelegateEndpoint;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The properties component is used for using property placeholders in endpoint uris.
diff --git a/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java b/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
index dffa4f6..92b605f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.ref;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/ref.html">Ref Component</a> is for lookup of existing endpoints bound in the {@link org.apache.camel.spi.Registry}.
diff --git a/camel-core/src/main/java/org/apache/camel/component/ref/RefEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/ref/RefEndpoint.java
index 1818c39..4e2461c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/ref/RefEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/ref/RefEndpoint.java
@@ -22,11 +22,11 @@ import org.apache.camel.DelegateEndpoint;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The ref component is used for lookup of existing endpoints bound in the Registry.
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
index e3bcbb1..beef49e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.rest;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * Rest API component.
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java
index eb31b42..1191e25 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java
@@ -26,7 +26,6 @@ import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RestApiConsumerFactory;
@@ -35,6 +34,7 @@ import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.HostUtils;
 import org.apache.camel.util.ObjectHelper;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiProducer.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiProducer.java
index 77c994d..13701f1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiProducer.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.rest;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.DefaultProducer;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.support.ServiceHelper;
 
 public class RestApiProducer extends DefaultProducer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
index d2cb33f..4909959 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
@@ -26,13 +26,13 @@ import java.util.function.Supplier;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.model.rest.RestConstants;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RestConfiguration;
-import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
index 4a11e45..8d3bfd4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
@@ -26,7 +26,6 @@ import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.model.rest.RestBindingMode;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.Metadata;
@@ -36,10 +35,9 @@ import org.apache.camel.spi.RestProducerFactory;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.HostUtils;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.spi.RestProducerFactoryHelper.setupComponent;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
index 7cbf42d..96677dc 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
@@ -33,17 +33,17 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.camel.model.rest.RestBindingMode;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.RestConfiguration;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
+import org.apache.camel.support.AsyncProcessorConverterHelper;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.CollectionStringBuffer;
-import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.URISupport;
 
 import static org.apache.camel.util.ObjectHelper.isEmpty;
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java
index fc6fbd7..132f3eb 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducerBindingProcessor.java
@@ -29,9 +29,9 @@ import org.apache.camel.processor.MarshalProcessor;
 import org.apache.camel.processor.UnmarshalProcessor;
 import org.apache.camel.processor.binding.BindingException;
 import org.apache.camel.spi.DataFormat;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 
 /**
  * A {@link org.apache.camel.Processor} that binds the REST producer request and reply messages
diff --git a/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java b/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java
index 55414ed..0067ebc 100644
--- a/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java
@@ -20,7 +20,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/saga/SagaEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/saga/SagaEndpoint.java
index a0f3114..995e234 100644
--- a/camel-core/src/main/java/org/apache/camel/component/saga/SagaEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/saga/SagaEndpoint.java
@@ -19,10 +19,10 @@ package org.apache.camel.component.saga;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.ObjectHelper;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/saga/SagaProducer.java b/camel-core/src/main/java/org/apache/camel/component/saga/SagaProducer.java
index 830e96e..e19813b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/saga/SagaProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/saga/SagaProducer.java
@@ -18,9 +18,9 @@ package org.apache.camel.component.saga;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.camel.saga.CamelSagaService;
-import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.DefaultAsyncProducer;
 
 /**
  * A producer that finalizes the current saga.
diff --git a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
index 2c6708f..5504677 100644
--- a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
@@ -23,8 +23,8 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.support.DefaultComponent;
 
 public class SchedulerComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerConsumer.java b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerConsumer.java
index 19cb704..8e7c457 100644
--- a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerConsumer.java
@@ -21,7 +21,7 @@ import java.util.Date;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.ScheduledPollConsumer;
+import org.apache.camel.support.ScheduledPollConsumer;
 
 public class SchedulerConsumer extends ScheduledPollConsumer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerEndpoint.java
index 239d0d3..d8137bb 100644
--- a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerEndpoint.java
@@ -21,11 +21,11 @@ import java.util.concurrent.ScheduledExecutorService;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.impl.ScheduledPollEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.ScheduledPollEndpoint;
 
 /**
  * The scheduler component is used for generating message exchanges when a scheduler fires.
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
index 1fbd38f..6fe75e6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
@@ -23,8 +23,8 @@ import java.util.concurrent.BlockingQueue;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.SedaConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
index 50f02f1..59f8dd6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaConsumer.java
@@ -35,15 +35,13 @@ import org.apache.camel.processor.MulticastProcessor;
 import org.apache.camel.spi.ExceptionHandler;
 import org.apache.camel.spi.ShutdownAware;
 import org.apache.camel.spi.Synchronization;
+import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.EmptyAsyncCallback;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.LoggingExceptionHandler;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.UnitOfWorkHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.UnitOfWorkHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * A Consumer for the SEDA component.
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
index bfa1c98..54f5dd4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
@@ -36,18 +36,16 @@ import org.apache.camel.WaitForTaskToComplete;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
 import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.processor.MulticastProcessor;
 import org.apache.camel.spi.BrowsableEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.SedaConstants;
-import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * The seda component provides asynchronous call to another endpoint from any CamelContext in the same JVM.
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java
index 7243906..ae8ae38 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaPollingConsumer.java
@@ -21,8 +21,8 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.IsSingleton;
-import org.apache.camel.impl.PollingConsumerSupport;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.support.PollingConsumerSupport;
 
 public class SedaPollingConsumer extends PollingConsumerSupport implements IsSingleton {
 
@@ -41,7 +41,7 @@ public class SedaPollingConsumer extends PollingConsumerSupport implements IsSin
             return getEndpoint().getQueue().take();
         } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
@@ -56,7 +56,7 @@ public class SedaPollingConsumer extends PollingConsumerSupport implements IsSin
             return getEndpoint().getQueue().poll(timeout, TimeUnit.MILLISECONDS);
         } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
index 28a5873..38a059b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
@@ -24,9 +24,9 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeTimedOutException;
 import org.apache.camel.WaitForTaskToComplete;
-import org.apache.camel.impl.DefaultAsyncProducer;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.SynchronizationAdapter;
-import org.apache.camel.util.ExchangeHelper;
 
 public class SedaProducer extends DefaultAsyncProducer {
     
diff --git a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
index cee04c9..81dcef0 100644
--- a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.test;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.URISupport;
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java
index 1f7d51b..3782f13 100644
--- a/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/test/TestEndpoint.java
@@ -30,10 +30,8 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.ObjectHelper;
 
 /**
  * The test component extends the mock component by on startup to pull messages from another endpoint to set the expected message bodies.
@@ -82,7 +80,7 @@ public class TestEndpoint extends MockEndpoint {
                 }
                 if (split) {
                     // use new lines in both styles
-                    Iterator it = ObjectHelper.createIterator(body, delimiter, false, true);
+                    Iterator<?> it = ObjectHelper.createIterator(body, delimiter, false, true);
                     while (it.hasNext()) {
                         Object line = it.next();
                         log.trace("Received message body {}", line);
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
index 70106e8..8a70211 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
@@ -25,7 +25,7 @@ import java.util.Timer;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/timer.html">Timer Component</a> is for generating message exchanges when a timer fires.
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
index dc2e150..eab3bb7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
@@ -28,9 +28,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.StartupListener;
 import org.apache.camel.Suspendable;
-import org.apache.camel.impl.DefaultConsumer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.support.DefaultConsumer;
 
 /**
  * The timer consumer.
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java
index c9e8ca9..4acf787 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java
@@ -27,11 +27,11 @@ import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The timer component is used for generating message exchanges when a timer fires.
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java b/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java
index d4e7f63..dc9bec3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java
@@ -26,9 +26,10 @@ import org.w3c.dom.ls.LSInput;
 import org.w3c.dom.ls.LSResourceResolver;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ResourceHelper;
 
 /**
  * Default {@link LSResourceResolver} which can included schema resources.
@@ -130,7 +131,7 @@ public class DefaultLSResourceResolver implements LSResourceResolver {
             try {
                 return ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, uri);
             } catch (IOException e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
index 9899501..e226cb8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.validator;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.support.DefaultComponent;
 
 /**
  * The <a href="http://camel.apache.org/validation.html">Validator Component</a> is for validating XML against a schema
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
index 941e57f..5b04f84 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
@@ -27,7 +27,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.api.management.ManagedOperation;
 import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.processor.validation.DefaultValidationErrorHandler;
 import org.apache.camel.processor.validation.SchemaReader;
 import org.apache.camel.processor.validation.ValidatingProcessor;
@@ -36,6 +35,7 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 
 
 /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorProducer.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorProducer.java
index 41bc06c..0cdea01 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorProducer.java
@@ -19,9 +19,9 @@ package org.apache.camel.component.validator;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.camel.processor.validation.ValidatingProcessor;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.support.ServiceHelper;
 
 public class ValidatorProducer extends DefaultAsyncProducer {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/vm/VmConsumer.java b/camel-core/src/main/java/org/apache/camel/component/vm/VmConsumer.java
index ef4666c..7e7901f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/vm/VmConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/vm/VmConsumer.java
@@ -21,7 +21,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.seda.SedaConsumer;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.ExchangeHelper;
 
 public class VmConsumer extends SedaConsumer implements CamelContextAware {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
index aa57b52..00241a3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
@@ -24,12 +24,10 @@ import javax.xml.transform.URIResolver;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.converter.jaxp.XmlConverter;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.ResourceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.ResourceHelper;
 
 /**
  * The <a href="http://camel.apache.org/xslt.html">XSLT Component</a> is for performing XSLT transformations of messages
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
index bd6c581..942fb8e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
@@ -38,18 +38,16 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.xml.ResultHandlerFactory;
 import org.apache.camel.builder.xml.XsltBuilder;
 import org.apache.camel.converter.jaxp.XmlConverter;
-import org.apache.camel.impl.ProcessorEndpoint;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.util.EndpointHelper;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.ProcessorEndpoint;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Transforms the message using a XSLT template.
diff --git a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
index 47a64ad..9a71aa9 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
@@ -42,12 +42,12 @@ import java.net.URL;
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
 import java.nio.charset.Charset;
-import java.nio.charset.UnsupportedCharsetException;
 import java.util.Properties;
 import java.util.function.Supplier;
 
 import org.apache.camel.Converter;
 import org.apache.camel.Exchange;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -96,7 +96,7 @@ public final class IOConverter {
 
     @Converter
     public static BufferedReader toReader(File file, Exchange exchange) throws IOException {
-        return toReader(file, IOHelper.getCharsetName(exchange));
+        return toReader(file, ExchangeHelper.getCharsetName(exchange));
     }
 
     public static BufferedReader toReader(File file, String charset) throws IOException {
@@ -117,7 +117,7 @@ public final class IOConverter {
     @Converter
     public static BufferedWriter toWriter(File file, Exchange exchange) throws IOException {
         FileOutputStream os = new FileOutputStream(file, false);
-        return toWriter(os, IOHelper.getCharsetName(exchange));
+        return toWriter(os, ExchangeHelper.getCharsetName(exchange));
     }
 
     public static BufferedWriter toWriter(File file, boolean append, String charset) throws IOException {
@@ -130,7 +130,7 @@ public final class IOConverter {
 
     @Converter
     public static Reader toReader(InputStream in, Exchange exchange) throws IOException {
-        return IOHelper.buffered(new InputStreamReader(in, IOHelper.getCharsetName(exchange)));
+        return IOHelper.buffered(new InputStreamReader(in, ExchangeHelper.getCharsetName(exchange)));
     }
 
     @Converter
@@ -140,7 +140,7 @@ public final class IOConverter {
 
     @Converter
     public static Writer toWriter(OutputStream out, Exchange exchange) throws IOException {
-        return IOHelper.buffered(new OutputStreamWriter(out, IOHelper.getCharsetName(exchange)));
+        return IOHelper.buffered(new OutputStreamWriter(out, ExchangeHelper.getCharsetName(exchange)));
     }
 
     @Converter
@@ -152,7 +152,7 @@ public final class IOConverter {
 
     @Converter
     public static InputStream toInputStream(String text, Exchange exchange) throws IOException {
-        return toInputStream(text.getBytes(IOHelper.getCharsetName(exchange)));
+        return toInputStream(text.getBytes(ExchangeHelper.getCharsetName(exchange)));
     }
     
     @Converter
@@ -172,7 +172,7 @@ public final class IOConverter {
 
     @Converter
     public static String toString(byte[] data, Exchange exchange) throws IOException {
-        return new String(data, IOHelper.getCharsetName(exchange));
+        return new String(data, ExchangeHelper.getCharsetName(exchange));
     }
 
     @Converter
@@ -235,7 +235,7 @@ public final class IOConverter {
 
     @Converter
     public static byte[] toByteArray(String value, Exchange exchange) throws IOException {
-        return value.getBytes(IOHelper.getCharsetName(exchange));
+        return value.getBytes(ExchangeHelper.getCharsetName(exchange));
     }
 
     @Converter
@@ -309,7 +309,7 @@ public final class IOConverter {
 
     @Converter
     public static String toString(ByteArrayOutputStream os, Exchange exchange) throws IOException {
-        return os.toString(IOHelper.getCharsetName(exchange));
+        return os.toString(ExchangeHelper.getCharsetName(exchange));
     }
 
     @Converter
diff --git a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
index f977417..75f0131 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
@@ -17,12 +17,11 @@
 package org.apache.camel.converter;
 
 import java.math.BigInteger;
-import java.util.Collection;
 import java.util.Iterator;
 
 import org.apache.camel.Converter;
 import org.apache.camel.Exchange;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.ObjectHelper;
 
 /**
  * Some core java.lang based <a
@@ -55,7 +54,7 @@ public final class ObjectConverter {
      */
     @Converter
     public static Boolean toBoolean(Object value) {
-        return ObjectHelper.toBoolean(value);
+        return org.apache.camel.util.ObjectHelper.toBoolean(value);
     }
 
     /**
@@ -127,7 +126,7 @@ public final class ObjectConverter {
             if (exchange != null) {
                 return exchange.getContext().getClassResolver().resolveClass((String) value);
             } else {
-                return ObjectHelper.loadClass((String) value);
+                return org.apache.camel.util.ObjectHelper.loadClass((String) value);
             }
         } else {
             return null;
@@ -216,7 +215,7 @@ public final class ObjectConverter {
         if (value instanceof Float) {
             return (Float) value;
         } else if (value instanceof Number) {
-            if (ObjectHelper.isNaN(value)) {
+            if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
                 return Float.NaN;
             }
             Number number = (Number) value;
@@ -236,7 +235,7 @@ public final class ObjectConverter {
         if (value instanceof Double) {
             return (Double) value;
         } else if (value instanceof Number) {
-            if (ObjectHelper.isNaN(value)) {
+            if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
                 return Double.NaN;
             }
             Number number = (Number) value;
diff --git a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverterOptimised.java b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverterOptimised.java
index dfbb7d5..c6391ed 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/ObjectConverterOptimised.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/ObjectConverterOptimised.java
@@ -19,7 +19,7 @@ package org.apache.camel.converter;
 import java.util.Iterator;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.ObjectHelper;
 
 /**
  * Optimised {@link ObjectConverter}
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java
index 4111edb..250fc11 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/DomConverter.java
@@ -33,8 +33,8 @@ import org.w3c.dom.Text;
 
 import org.apache.camel.Converter;
 import org.apache.camel.Exchange;
-import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.ObjectHelper;
 
 /**
  * Converts from some DOM types to Java types
@@ -60,7 +60,7 @@ public final class DomConverter {
         if (nodeList instanceof Node) {
             Node node = (Node) nodeList;
             String s = toString(node, exchange);
-            if (ObjectHelper.isNotEmpty(s)) {
+            if (org.apache.camel.util.ObjectHelper.isNotEmpty(s)) {
                 found = true;
                 buffer.append(s);
             }
@@ -70,7 +70,7 @@ public final class DomConverter {
             for (int i = 0; i < size; i++) {
                 Node node = nodeList.item(i);
                 String s = toString(node, exchange);
-                if (ObjectHelper.isNotEmpty(s)) {
+                if (org.apache.camel.util.ObjectHelper.isNotEmpty(s)) {
                     found = true;
                     buffer.append(s);
                 }
@@ -125,7 +125,7 @@ public final class DomConverter {
     @Converter
     public static List<?> toList(NodeList nodeList) {
         List<Object> answer = new ArrayList<>();
-        Iterator<Object> it = ObjectHelper.createIterator(nodeList);
+        Iterator<?> it = ObjectHelper.createIterator(nodeList);
         while (it.hasNext()) {
             answer.add(it.next());
         }
@@ -140,7 +140,7 @@ public final class DomConverter {
     @Converter
     public byte[] toByteArray(NodeList nodeList, Exchange exchange) throws TransformerException, UnsupportedEncodingException {
         String data = toString(nodeList, exchange);
-        return data.getBytes(IOHelper.getCharsetName(exchange));
+        return data.getBytes(ExchangeHelper.getCharsetName(exchange));
     }
 
     private static void append(StringBuilder buffer, NodeList nodeList) {
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
index 67fb470..03087fa 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
@@ -42,6 +42,7 @@ import javax.xml.transform.Source;
 
 import org.apache.camel.Converter;
 import org.apache.camel.Exchange;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -97,7 +98,7 @@ public class StaxConverter {
     public XMLEventWriter createXMLEventWriter(OutputStream out, Exchange exchange) throws XMLStreamException {
         XMLOutputFactory factory = getOutputFactory();
         try {
-            return factory.createXMLEventWriter(IOHelper.buffered(out), IOHelper.getCharsetName(exchange));
+            return factory.createXMLEventWriter(IOHelper.buffered(out), ExchangeHelper.getCharsetName(exchange));
         } finally {
             returnXMLOutputFactory(factory);
         }
@@ -127,7 +128,7 @@ public class StaxConverter {
     public XMLStreamWriter createXMLStreamWriter(OutputStream outputStream, Exchange exchange) throws XMLStreamException {
         XMLOutputFactory factory = getOutputFactory();
         try {
-            return factory.createXMLStreamWriter(IOHelper.buffered(outputStream), IOHelper.getCharsetName(exchange));
+            return factory.createXMLStreamWriter(IOHelper.buffered(outputStream), ExchangeHelper.getCharsetName(exchange));
         } finally {
             returnXMLOutputFactory(factory);
         }
@@ -157,7 +158,7 @@ public class StaxConverter {
     public XMLStreamReader createXMLStreamReader(InputStream in, Exchange exchange) throws XMLStreamException {
         XMLInputFactory factory = getInputFactory();
         try {
-            String charsetName = IOHelper.getCharsetName(exchange, false);
+            String charsetName = ExchangeHelper.getCharsetName(exchange, false);
             if (charsetName == null) {
                 return factory.createXMLStreamReader(IOHelper.buffered(in));
             } else {
@@ -172,7 +173,7 @@ public class StaxConverter {
     public XMLStreamReader createXMLStreamReader(File file, Exchange exchange) throws XMLStreamException, FileNotFoundException {
         XMLInputFactory factory = getInputFactory();
         try {
-            return factory.createXMLStreamReader(IOHelper.buffered(new FileInputStream(file)), IOHelper.getCharsetName(exchange));
+            return factory.createXMLStreamReader(IOHelper.buffered(new FileInputStream(file)), ExchangeHelper.getCharsetName(exchange));
         } finally {
             returnXMLInputFactory(factory);
         }
@@ -212,7 +213,7 @@ public class StaxConverter {
     public XMLEventReader createXMLEventReader(InputStream in, Exchange exchange) throws XMLStreamException {
         XMLInputFactory factory = getInputFactory();
         try {
-            String charsetName = IOHelper.getCharsetName(exchange, false);
+            String charsetName = ExchangeHelper.getCharsetName(exchange, false);
             if (charsetName == null) {
                 return factory.createXMLEventReader(IOHelper.buffered(in));
             } else {
@@ -227,7 +228,7 @@ public class StaxConverter {
     public XMLEventReader createXMLEventReader(File file, Exchange exchange) throws XMLStreamException, FileNotFoundException {
         XMLInputFactory factory = getInputFactory();
         try {
-            return factory.createXMLEventReader(IOHelper.buffered(new FileInputStream(file)), IOHelper.getCharsetName(exchange));
+            return factory.createXMLEventReader(IOHelper.buffered(new FileInputStream(file)), ExchangeHelper.getCharsetName(exchange));
         } finally {
             returnXMLInputFactory(factory);
         }
@@ -267,7 +268,7 @@ public class StaxConverter {
     public InputStream createInputStream(XMLStreamReader reader, Exchange exchange) {
         XMLOutputFactory factory = getOutputFactory();
         try {
-            String charsetName = IOHelper.getCharsetName(exchange, false);
+            String charsetName = ExchangeHelper.getCharsetName(exchange, false);
             return new XMLStreamReaderInputStream(reader, charsetName, factory);
         } finally {
             returnXMLOutputFactory(factory);
diff --git a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
index 46c0195..1739dcf 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
@@ -70,6 +70,7 @@ import org.apache.camel.Converter;
 import org.apache.camel.Exchange;
 import org.apache.camel.StringSource;
 import org.apache.camel.converter.IOConverter;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -204,7 +205,7 @@ public class XmlConverter {
             StringWriter buffer = new StringWriter();
             if (exchange != null) {
                 // check the camelContext properties first
-                Properties properties = ObjectHelper.getCamelPropertiesWithPrefix(OUTPUT_PROPERTIES_PREFIX, exchange.getContext());
+                Properties properties = CamelContextHelper.getCamelPropertiesWithPrefix(OUTPUT_PROPERTIES_PREFIX, exchange.getContext());
                 if (properties.size() > 0) {
                     toResult(source, new StreamResult(buffer), properties);
                     return buffer.toString();
@@ -227,7 +228,7 @@ public class XmlConverter {
             ByteArrayOutputStream buffer = new ByteArrayOutputStream();
             if (exchange != null) {
                 // check the camelContext properties first
-                Properties properties = ObjectHelper.getCamelPropertiesWithPrefix(OUTPUT_PROPERTIES_PREFIX,
+                Properties properties = CamelContextHelper.getCamelPropertiesWithPrefix(OUTPUT_PROPERTIES_PREFIX,
                                                                                   exchange.getContext());
                 if (properties.size() > 0) {
                     toResult(source, new StreamResult(buffer), properties);
diff --git a/camel-core/src/main/java/org/apache/camel/converter/stream/OutputStreamBuilder.java b/camel-core/src/main/java/org/apache/camel/converter/stream/OutputStreamBuilder.java
index d25780b..911178d 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/stream/OutputStreamBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/stream/OutputStreamBuilder.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.support.ExchangeHelper;
 
 /**
  * Utility to hide the complexity of choosing which OutputStream
diff --git a/camel-core/src/main/java/org/apache/camel/impl/AbstractDynamicRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/AbstractDynamicRegistry.java
new file mode 100644
index 0000000..78c2c24
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/impl/AbstractDynamicRegistry.java
@@ -0,0 +1,199 @@
+/**
+ * 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.AbstractMap;
+import java.util.AbstractSet;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.StaticService;
+import org.apache.camel.support.LRUCache;
+import org.apache.camel.support.LRUCacheFactory;
+import org.apache.camel.support.ServiceHelper;
+
+/**
+ * Base implementation for {@link org.apache.camel.spi.TransformerRegistry}, {@link org.apache.camel.spi.ValidatorRegistry}
+ * and {@link org.apache.camel.spi.EndpointRegistry}.
+ */
+public class AbstractDynamicRegistry<K, V> extends AbstractMap<K, V>  implements StaticService {
+
+    private static final long serialVersionUID = 1L;
+    protected final CamelContext context;
+    protected final int maxCacheSize;
+    protected final Map<K, V> dynamicMap;
+    protected final Map<K, V> staticMap;
+
+    public AbstractDynamicRegistry(CamelContext context, int maxCacheSize) {
+        this.context = context;
+        this.maxCacheSize = maxCacheSize;
+        // do not stop on eviction, as the transformer may still be in use
+        this.dynamicMap = LRUCacheFactory.newLRUCache(this.maxCacheSize, this.maxCacheSize, false);
+        // static map to hold transformers we do not want to be evicted
+        this.staticMap = new ConcurrentHashMap<>();
+    }
+
+    @Override
+    public void start() throws Exception {
+        if (dynamicMap instanceof LRUCache) {
+            ((LRUCache) dynamicMap).resetStatistics();
+        }
+    }
+
+    @Override
+    public V get(Object o) {
+        // try static map first
+        V answer = staticMap.get(o);
+        if (answer == null) {
+            answer = dynamicMap.get(o);
+            if (answer != null && (context.isSetupRoutes() || context.getRouteController().isStartingRoutes())) {
+                dynamicMap.remove(o);
+                staticMap.put((K) o, answer);
+            }
+        }
+        return answer;
+    }
+
+    @Override
+    public V put(K key, V transformer) {
+        // at first we must see if the key already exists and then replace it back, so it stays the same spot
+        V answer = staticMap.remove(key);
+        if (answer != null) {
+            // replace existing
+            staticMap.put(key, transformer);
+            return answer;
+        }
+
+        answer = dynamicMap.remove(key);
+        if (answer != null) {
+            // replace existing
+            dynamicMap.put(key, transformer);
+            return answer;
+        }
+
+        // we want transformers to be static if they are part of setting up or starting routes
+        if (context.isSetupRoutes() || context.getRouteController().isStartingRoutes()) {
+            answer = staticMap.put(key, transformer);
+        } else {
+            answer = dynamicMap.put(key, transformer);
+        }
+
+        return answer;
+    }
+
+    @Override
+    public boolean containsKey(Object o) {
+        return staticMap.containsKey(o) || dynamicMap.containsKey(o);
+    }
+
+    @Override
+    public boolean containsValue(Object o) {
+        return staticMap.containsValue(o) || dynamicMap.containsValue(o);
+    }
+
+    @Override
+    public int size() {
+        return staticMap.size() + dynamicMap.size();
+    }
+
+    public int staticSize() {
+        return staticMap.size();
+    }
+
+    public int dynamicSize() {
+        return dynamicMap.size();
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return staticMap.isEmpty() && dynamicMap.isEmpty();
+    }
+
+    @Override
+    public V remove(Object o) {
+        V answer = staticMap.remove(o);
+        if (answer == null) {
+            answer = dynamicMap.remove(o);
+        }
+        return answer;
+    }
+
+    @Override
+    public void clear() {
+        staticMap.clear();
+        dynamicMap.clear();
+    }
+
+    @Override
+    public Set<Entry<K, V>> entrySet() {
+        return new AbstractSet<Entry<K, V>>() {
+            @Override
+            public Iterator<Entry<K, V>> iterator() {
+                return new CompoundIterator<>(Arrays.asList(
+                        staticMap.entrySet().iterator(), dynamicMap.entrySet().iterator()
+                ));
+            }
+
+            @Override
+            public int size() {
+                return staticMap.size() + dynamicMap.size();
+            }
+        };
+    }
+
+    public int getMaximumCacheSize() {
+        return maxCacheSize;
+    }
+
+    /**
+     * Purges the cache
+     */
+    public void purge() {
+        // only purge the dynamic part
+        dynamicMap.clear();
+    }
+
+    public void cleanUp() {
+        if (dynamicMap instanceof LRUCache) {
+            ((LRUCache) dynamicMap).cleanUp();
+        }
+    }
+
+    public boolean isStatic(K key) {
+        return staticMap.containsKey(key);
+    }
+
+    public boolean isDynamic(K key) {
+        return dynamicMap.containsKey(key);
+    }
+
+    @Override
+    public void stop() throws Exception {
+        ServiceHelper.stopService(staticMap.values(), dynamicMap.values());
+        purge();
+    }
+
+    @Override
+    public String toString() {
+        return "Registry for " + context.getName() + ", capacity: " + maxCacheSize;
+    }
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/BaseSelectorProducer.java b/camel-core/src/main/java/org/apache/camel/impl/BaseSelectorProducer.java
index 34a41f8..80df07c 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/BaseSelectorProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/BaseSelectorProducer.java
@@ -19,6 +19,7 @@ package org.apache.camel.impl;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.support.DefaultProducer;
 
 /**
  * A base class for selector-based producers.
diff --git a/camel-core/src/main/java/org/apache/camel/impl/BridgeExceptionHandlerToErrorHandler.java b/camel-core/src/main/java/org/apache/camel/impl/BridgeExceptionHandlerToErrorHandler.java
deleted file mode 100644
index b77ecc7..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/BridgeExceptionHandlerToErrorHandler.java
+++ /dev/null
@@ -1,87 +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.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.spi.UnitOfWork;
-import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.camel.util.UnitOfWorkHelper;
-
-/**
- * An {@link ExceptionHandler} that uses the {@link DefaultConsumer} to
- * process the caused exception to send the message into the Camel routing engine
- * which allows to let the routing engine handle the exception.
- * <p/>
- * An endpoint can be configured with <tt>consumer.bridgeErrorHandler=true</tt> in the URI
- * to enable this {@link BridgeExceptionHandlerToErrorHandler} on the consumer.
- * The consumer must extend the {@link DefaultConsumer}, to support this, if not an
- * {@link IllegalArgumentException} is thrown upon startup.
- * <p/>
- * <b>Notice:</b> When using this bridging error handler, then interceptors, onCompletions
- * does <b>not</b> apply. The {@link Exchange} is processed directly by the Camel
- * error handler, and does not allow prior actions such as interceptors, onCompletion
- * to take action.
- */
-public class BridgeExceptionHandlerToErrorHandler implements ExceptionHandler {
-
-    private final LoggingExceptionHandler fallback;
-    private final DefaultConsumer consumer;
-    private final Processor bridge;
-
-    public BridgeExceptionHandlerToErrorHandler(DefaultConsumer consumer) {
-        this.consumer = consumer;
-        this.fallback = new LoggingExceptionHandler(consumer.getEndpoint().getCamelContext(), consumer.getClass());
-        this.bridge = consumer.getProcessor();
-    }
-
-    @Override
-    public void handleException(Throwable exception) {
-        handleException(null, exception);
-    }
-
-    @Override
-    public void handleException(String message, Throwable exception) {
-        handleException(message, null, exception);
-    }
-
-    @Override
-    public void handleException(String message, Exchange exchange, Throwable exception) {
-        if (exchange == null) {
-            exchange = consumer.getEndpoint().createExchange();
-        }
-
-        // set the caused exception
-        exchange.setException(exception);
-        // and the message
-        exchange.getIn().setBody(message);
-        // and mark as redelivery exhausted as we cannot do redeliveries
-        exchange.setProperty(Exchange.REDELIVERY_EXHAUSTED, Boolean.TRUE);
-
-        // wrap in UoW
-        UnitOfWork uow = null;
-        try {
-            uow = consumer.createUoW(exchange);
-            bridge.process(exchange);
-        } catch (Exception e) {
-            fallback.handleException("Error handling exception " + exception.getMessage(), exchange, e);
-        } finally {
-            UnitOfWorkHelper.doneUow(uow, exchange);
-        }
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java b/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
index b7298f7..de13873 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
@@ -35,15 +35,16 @@ import org.apache.camel.PollingConsumer;
 import org.apache.camel.Producer;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.ProxyInstantiationException;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
 import org.apache.camel.builder.DefaultFluentProducerTemplate;
 import org.apache.camel.component.bean.ProxyHelper;
 import org.apache.camel.processor.DeferServiceFactory;
 import org.apache.camel.processor.UnitOfWorkProducer;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -125,7 +126,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
                     LOG.debug("Subscribed method: {} to consume from endpoint: {}", method, endpoint);
                 }
             } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
     }
@@ -282,10 +283,10 @@ public class CamelPostProcessorHelper implements CamelContextAware {
                 try {
                     return getCamelContext().getTypeConverter().mandatoryConvertTo(type, propertyDefaultValue);
                 } catch (Exception e2) {
-                    throw ObjectHelper.wrapRuntimeCamelException(e2);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e2);
                 }
             }
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
@@ -320,7 +321,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
             // no need to defer the template as it can adjust to the endpoint at runtime
             startService(answer, context, bean, null);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return answer;
     }
@@ -342,7 +343,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
             // no need to defer the template as it can adjust to the endpoint at runtime
             startService(answer, context, bean, null);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return answer;
     }
@@ -358,7 +359,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
         try {
             startService(answer, null, null, null);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return answer;
     }
@@ -373,7 +374,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
             startService(consumer, endpoint.getCamelContext(), bean, beanName);
             return consumer;
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
@@ -386,7 +387,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
             Producer producer = DeferServiceFactory.createProducer(endpoint);
             return new UnitOfWorkProducer(producer);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/CompoundIterator.java b/camel-core/src/main/java/org/apache/camel/impl/CompoundIterator.java
new file mode 100644
index 0000000..f4c0554
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/impl/CompoundIterator.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;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * Compound iterator to iterate over multiple iterators sequentially.
+ */
+public class CompoundIterator<T> implements Iterator<T> {
+
+    final Iterator<Iterator<T>> it;
+    Iterator<T> current;
+
+    public CompoundIterator(Iterable<Iterator<T>> it) {
+        this(it.iterator());
+    }
+
+    public CompoundIterator(Iterator<Iterator<T>> it) {
+        this.it = it;
+        this.current = it.hasNext() ? it.next() : null;
+    }
+
+    @Override
+    public boolean hasNext() {
+        while (current != null) {
+            if (current.hasNext()) {
+                return true;
+            } else {
+                current = it.hasNext() ? it.next() : null;
+            }
+
+        }
+        return false;
+    }
+
+    @Override
+    public T next() {
+        if (current != null) {
+            return current.next();
+        }
+        throw new NoSuchElementException();
+    }
+
+    @Override
+    public void remove() {
+        current.remove();
+    }
+}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
index 798f126..f25f002 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ConsumerCache.java
@@ -22,11 +22,9 @@ import org.apache.camel.Exchange;
 import org.apache.camel.FailedToCreateConsumerException;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Cache containing created {@link org.apache.camel.Consumer}.
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java
index d2aa223..d78e852 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManager.java
@@ -28,14 +28,12 @@ import java.util.concurrent.atomic.AtomicLong;
 import org.apache.camel.Exchange;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.processor.DefaultExchangeFormatter;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.ExchangeFormatter;
+import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.MessageHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements AsyncProcessorAwaitManager {
 
@@ -153,7 +151,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
                 log.warn(sb.toString());
 
             } catch (Exception e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             } finally {
                 if (statistics.isStatisticsEnabled()) {
                     interruptedCounter.incrementAndGet();
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
deleted file mode 100644
index b0ec87e..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultAsyncProducer.java
+++ /dev/null
@@ -1,38 +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.AsyncProcessor;
-import org.apache.camel.AsyncProducer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.util.AsyncProcessorHelper;
-
-/**
- * A default implementation of {@link org.apache.camel.Producer} for implementation inheritance,
- * which can process {@link Exchange}s asynchronously.
- */
-public abstract class DefaultAsyncProducer extends DefaultProducer implements AsyncProducer {
-
-    public DefaultAsyncProducer(Endpoint endpoint) {
-        super(endpoint);
-    }
-
-    public void process(Exchange exchange) throws Exception {
-        AsyncProcessorHelper.process(this, exchange);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultAttachment.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultAttachment.java
deleted file mode 100644
index f1efa75..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultAttachment.java
+++ /dev/null
@@ -1,125 +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.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import javax.activation.DataHandler;
-import javax.activation.DataSource;
-
-import org.apache.camel.Attachment;
-import org.apache.camel.util.CollectionHelper;
-
-public class DefaultAttachment implements Attachment {
-    private Map<String, Object> headers;
-    private DataHandler dataHandler;
-
-    public DefaultAttachment(DataHandler dh) {
-        dataHandler = dh;
-    }
-
-    public DefaultAttachment(DataSource ds) {
-        dataHandler = new DataHandler(ds);
-    }
-
-    @Override
-    public DataHandler getDataHandler() {
-        return dataHandler;
-    }
-
-    @Override
-    public String getHeader(String name) {
-        if (headers != null) {
-            Object headerObject = headers.get(name);
-            if (headerObject instanceof String) {
-                return (String)headerObject;
-            } else if (headerObject instanceof Collection<?>) {
-                return CollectionHelper.collectionAsCommaDelimitedString((Collection<?>)headerObject);
-            }
-        }
-        return null;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public List<String> getHeaderAsList(String name) {
-        if (headers != null) {
-            Object headerObject = headers.get(name);
-            if (headerObject instanceof List<?>) {
-                return (List<String>)headerObject;
-            } else if (headerObject instanceof String) {
-                return Collections.singletonList((String)headerObject);
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public void addHeader(String headerName, String headerValue) {
-        if (headers == null) {
-            headers = createHeaders();
-        }
-        CollectionHelper.appendValue(headers, headerName, headerValue);
-    }
-
-    @Override
-    public void setHeader(String headerName, String headerValue) {
-        if (headers == null) {
-            headers = createHeaders();
-        }
-        headers.put(headerName, headerValue);
-    }
-
-    @Override
-    public void removeHeader(String headerName) {
-        if (headers != null) {
-            headers.remove(headerName);
-        }
-    }
-
-    @Override
-    public Collection<String> getHeaderNames() {
-        if (headers == null) {
-            headers = createHeaders();
-        }
-        return headers.keySet();
-    }
-
-    public void clearHeaders() {
-        headers = null;
-    }
-
-    private Map<String, Object> createHeaders() {
-        return new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
-    }
-
-    public boolean equals(Object other) {
-        if (other instanceof Attachment) {
-            DataHandler otherDh = ((Attachment)other).getDataHandler();
-            return dataHandler.equals(otherDh);
-        }
-        return false;
-    }
-
-    public int hashCode() {
-        return dataHandler.hashCode();
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
index 63cf335..8b77e86 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java
@@ -26,7 +26,8 @@ import org.apache.camel.DeferredContextBinding;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Produce;
 import org.apache.camel.PropertyInject;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.util.ReflectionHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -252,7 +253,7 @@ public class DefaultCamelBeanPostProcessor {
             if (parameterTypes.length != 1) {
                 LOG.warn("Ignoring badly annotated method for injection due to incorrect number of parameters: {}", method);
             } else {
-                String propertyName = ObjectHelper.getPropertyName(method);
+                String propertyName = org.apache.camel.util.ObjectHelper.getPropertyName(method);
                 Object value = getPostProcessorHelper().getInjectionValue(parameterTypes[0], endpointUri, endpointRef, endpointProperty,
                         propertyName, bean, beanName);
                 ObjectHelper.invokeMethod(method, bean, value);
@@ -267,7 +268,7 @@ public class DefaultCamelBeanPostProcessor {
             if (parameterTypes.length != 1) {
                 LOG.warn("Ignoring badly annotated method for injection due to incorrect number of parameters: {}", method);
             } else {
-                String propertyName = ObjectHelper.getPropertyName(method);
+                String propertyName = org.apache.camel.util.ObjectHelper.getPropertyName(method);
                 Object value = getPostProcessorHelper().getInjectionPropertyValue(parameterTypes[0], propertyValue, propertyDefaultValue, propertyName, bean, beanName);
                 ObjectHelper.invokeMethod(method, bean, value);
             }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 707d5fd..3662b62 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -60,6 +60,7 @@ import org.apache.camel.ExtendedStartupListener;
 import org.apache.camel.FailedToStartRouteException;
 import org.apache.camel.FluentProducerTemplate;
 import org.apache.camel.IsSingleton;
+import org.apache.camel.LoadPropertiesException;
 import org.apache.camel.MultipleConsumersSupport;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NoFactoryAvailableException;
@@ -172,25 +173,25 @@ import org.apache.camel.spi.UnitOfWorkFactory;
 import org.apache.camel.spi.UuidGenerator;
 import org.apache.camel.spi.Validator;
 import org.apache.camel.spi.ValidatorRegistry;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.EventHelper;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.OrderedComparator;
+import org.apache.camel.support.ProcessorEndpoint;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.CollectionStringBuffer;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.EventHelper;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.JsonSchemaHelper;
-import org.apache.camel.util.LoadPropertiesException;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.OrderedComparator;
-import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.StringQuoteHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.function.ThrowingRunnable;
-import org.apache.camel.util.jsse.SSLContextParameters;
 import org.slf4j.MDC;
 
 import static org.apache.camel.impl.MDCUnitOfWork.MDC_CAMEL_CONTEXT_ID;
@@ -929,7 +930,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
                 ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForProcessor(this, processor, def);
                 return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
             } catch (MalformedObjectNameException e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
 
@@ -949,7 +950,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
                 ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForRoute(route);
                 return getManagementStrategy().getManagementAgent().newProxyClient(on, type);
             } catch (MalformedObjectNameException e) {
-                throw ObjectHelper.wrapRuntimeCamelException(e);
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
         }
 
@@ -966,7 +967,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForCamelContext(this);
             return getManagementStrategy().getManagementAgent().newProxyClient(on, ManagedCamelContextMBean.class);
         } catch (MalformedObjectNameException e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
@@ -2385,7 +2386,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
                     try {
                         startService((Service) answer);
                     } catch (Exception e) {
-                        throw ObjectHelper.wrapRuntimeCamelException(e);
+                        throw RuntimeCamelException.wrapRuntimeCamelException(e);
                     }
                 }
 
@@ -2455,7 +2456,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
                     // must add service eager and force start it
                     addService(typeConverter, true, true);
                 } catch (Exception e) {
-                    throw ObjectHelper.wrapRuntimeCamelException(e);
+                    throw RuntimeCamelException.wrapRuntimeCamelException(e);
                 }
             }
         }
@@ -2468,7 +2469,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
             // must add service eager and force start it
             addService(typeConverter, true, true);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
 
@@ -2823,7 +2824,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         try {
             startService(answer);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return answer;
     }
@@ -2839,7 +2840,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         try {
             startService(answer);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return answer;
     }
@@ -2855,7 +2856,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
         try {
             startService(answer);
         } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
+            throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return answer;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
deleted file mode 100644
index af4c1f6..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
+++ /dev/null
@@ -1,503 +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.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Supplier;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.Endpoint;
-import org.apache.camel.ResolveEndpointFailedException;
-import org.apache.camel.component.extension.ComponentExtension;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
-import org.apache.camel.util.UnsafeUriCharactersEncoder;
-import org.apache.camel.util.function.Suppliers;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * Default component to use for base for components implementations.
- */
-public abstract class DefaultComponent extends ServiceSupport implements Component {
-
-    private static final Pattern RAW_PATTERN = Pattern.compile("RAW(.*&&.*)");
-
-    private final List<Supplier<ComponentExtension>> extensions = new ArrayList<>();
-
-    private CamelContext camelContext;
-
-    @Metadata(label = "advanced", defaultValue = "true",
-        description = "Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders.")
-    private boolean resolvePropertyPlaceholders = true;
-
-    public DefaultComponent() {
-    }
-
-    public DefaultComponent(CamelContext context) {
-        this.camelContext = context;
-    }
-
-    @Deprecated
-    protected String preProcessUri(String uri) {
-        return UnsafeUriCharactersEncoder.encode(uri);
-    }
-
-    public Endpoint createEndpoint(String uri) throws Exception {
-        ObjectHelper.notNull(getCamelContext(), "camelContext");
-        // check URI string to the unsafe URI characters
-        String encodedUri = preProcessUri(uri);
-        URI u = new URI(encodedUri);
-        String path;
-        if (u.getScheme() != null) {
-            // if there is a scheme then there is also a path
-            path = URISupport.extractRemainderPath(u, useRawUri());
-        } else {
-            // this uri has no context-path as the leading text is the component name (scheme)
-            path = null;
-        }
-
-        Map<String, Object> parameters;
-        if (useRawUri()) {
-            // when using raw uri then the query is taking from the uri as is
-            String query;
-            int idx = uri.indexOf('?');
-            if (idx > -1) {
-                query = uri.substring(idx + 1);
-            } else {
-                query = u.getRawQuery();
-            }
-            // and use method parseQuery
-            parameters = URISupport.parseQuery(query, true);
-        } else {
-            // however when using the encoded (default mode) uri then the query,
-            // is taken from the URI (ensures values is URI encoded)
-            // and use method parseParameters
-            parameters = URISupport.parseParameters(u);
-        }
-        // parameters using raw syntax: RAW(value)
-        // should have the token removed, so its only the value we have in parameters, as we are about to create
-        // an endpoint and want to have the parameter values without the RAW tokens
-        URISupport.resolveRawParameterValues(parameters);
-
-        // use encoded or raw uri?
-        uri = useRawUri() ? uri : encodedUri;
-
-        validateURI(uri, path, parameters);
-        if (log.isTraceEnabled()) {
-            // at trace level its okay to have parameters logged, that may contain passwords
-            log.trace("Creating endpoint uri=[{}], path=[{}], parameters=[{}]", URISupport.sanitizeUri(uri), URISupport.sanitizePath(path), parameters);
-        } else if (log.isDebugEnabled()) {
-            // but at debug level only output sanitized uris
-            log.debug("Creating endpoint uri=[{}], path=[{}]", URISupport.sanitizeUri(uri), URISupport.sanitizePath(path));
-        }
-        Endpoint endpoint = createEndpoint(uri, path, parameters);
-        if (endpoint == null) {
-            return null;
-        }
-
-        endpoint.configureProperties(parameters);
-        if (useIntrospectionOnEndpoint()) {
-            setProperties(endpoint, parameters);
-        }
-
-        // if endpoint is strict (not lenient) and we have unknown parameters configured then
-        // fail if there are parameters that could not be set, then they are probably misspell or not supported at all
-        if (!endpoint.isLenientProperties()) {
-            validateParameters(uri, parameters, null);
-        }
-
-        afterConfiguration(uri, path, endpoint, parameters);
-        return endpoint;
-    }
-
-    @Override
-    public boolean useRawUri() {
-        // should use encoded uri by default
-        return false;
-    }
-
-    /**
-     * Whether the component should resolve property placeholders on itself when starting.
-     * Only properties which are of String type can use property placeholders.
-     */
-    public void setResolvePropertyPlaceholders(boolean resolvePropertyPlaceholders) {
-        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
-    }
-
-    /**
-     * Whether the component should resolve property placeholders on itself when starting.
-     * Only properties which are of String type can use property placeholders.
-     */
-    public boolean isResolvePropertyPlaceholders() {
-        return resolvePropertyPlaceholders;
-    }
-
-    /**
-     * Strategy to do post configuration logic.
-     * <p/>
-     * Can be used to construct an URI based on the remaining parameters. For example the parameters that configures
-     * the endpoint have been removed from the parameters which leaves only the additional parameters left.
-     *
-     * @param uri the uri
-     * @param remaining the remaining part of the URI without the query parameters or component prefix
-     * @param endpoint the created endpoint
-     * @param parameters the remaining parameters after the endpoint has been created and parsed the parameters
-     * @throws Exception can be thrown to indicate error creating the endpoint
-     */
-    protected void afterConfiguration(String uri, String remaining, Endpoint endpoint, Map<String, Object> parameters) throws Exception {
-        // noop
-    }
-
-    /**
-     * Strategy for validation of parameters, that was not able to be resolved to any endpoint options.
-     *
-     * @param uri          the uri
-     * @param parameters   the parameters, an empty map if no parameters given
-     * @param optionPrefix optional prefix to filter the parameters for validation. Use <tt>null</tt> for validate all.
-     * @throws ResolveEndpointFailedException should be thrown if the URI validation failed
-     */
-    protected void validateParameters(String uri, Map<String, Object> parameters, String optionPrefix) {
-        if (parameters == null || parameters.isEmpty()) {
-            return;
-        }
-
-        Map<String, Object> param = parameters;
-        if (optionPrefix != null) {
-            param = IntrospectionSupport.extractProperties(parameters, optionPrefix);
-        }
-
-        if (param.size() > 0) {
-            throw new ResolveEndpointFailedException(uri, "There are " + param.size()
-                + " parameters that couldn't be set on the endpoint."
-                + " Check the uri if the parameters are spelt correctly and that they are properties of the endpoint."
-                + " Unknown parameters=[" + param + "]");
-        }
-    }
-
-    /**
-     * Strategy for validation of the uri when creating the endpoint.
-     *
-     * @param uri        the uri
-     * @param path       the path - part after the scheme
-     * @param parameters the parameters, an empty map if no parameters given
-     * @throws ResolveEndpointFailedException should be thrown if the URI validation failed
-     */
-    protected void validateURI(String uri, String path, Map<String, Object> parameters) {
-        // check for uri containing double && markers without include by RAW
-        if (uri.contains("&&")) {
-            Matcher m = RAW_PATTERN.matcher(uri);
-            // we should skip the RAW part
-            if (!m.find()) {
-                throw new ResolveEndpointFailedException(uri, "Invalid uri syntax: Double && marker found. "
-                    + "Check the uri and remove the duplicate & marker.");
-            }
-        }
-
-        // if we have a trailing & then that is invalid as well
-        if (uri.endsWith("&")) {
-            throw new ResolveEndpointFailedException(uri, "Invalid uri syntax: Trailing & marker found. "
-                + "Check the uri and remove the trailing & marker.");
-        }
-    }
-
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    public void setCamelContext(CamelContext context) {
-        this.camelContext = context;
-    }
-
-    protected void doStart() throws Exception {
-        ObjectHelper.notNull(getCamelContext(), "camelContext");
-
-        if (isResolvePropertyPlaceholders()) {
-            // only resolve property placeholders if its in use
-            Component existing = CamelContextHelper.lookupPropertiesComponent(camelContext, false);
-            if (existing != null) {
-                log.debug("Resolving property placeholders on component: {}", this);
-                CamelContextHelper.resolvePropertyPlaceholders(camelContext, this);
-            } else {
-                log.debug("Cannot resolve property placeholders on component: {} as PropertiesComponent is not in use", this);
-            }
-        }
-    }
-
-    protected void doStop() throws Exception {
-        // noop
-    }
-
-    /**
-     * A factory method allowing derived components to create a new endpoint
-     * from the given URI, remaining path and optional parameters
-     *
-     * @param uri the full URI of the endpoint
-     * @param remaining the remaining part of the URI without the query
-     *                parameters or component prefix
-     * @param parameters the optional parameters passed in
-     * @return a newly created endpoint or null if the endpoint cannot be
-     *         created based on the inputs
-     * @throws Exception is thrown if error creating the endpoint
-     */
-    protected abstract Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters)
-        throws Exception;
-
-    /**
-     * Sets the bean properties on the given bean
-     *
-     * @param bean  the bean
-     * @param parameters  properties to set
-     */
-    protected void setProperties(Object bean, Map<String, Object> parameters) throws Exception {
-        setProperties(getCamelContext(), bean, parameters);
-    }
-
-    /**
-     * Sets the bean properties on the given bean using the given {@link CamelContext}
-     * @param camelContext  the {@link CamelContext} to use
-     * @param bean  the bean
-     * @param parameters  properties to set
-     */
-    protected void setProperties(CamelContext camelContext, Object bean, Map<String, Object> parameters) throws Exception {
-        // set reference properties first as they use # syntax that fools the regular properties setter
-        EndpointHelper.setReferenceProperties(camelContext, bean, parameters);
-        EndpointHelper.setProperties(camelContext, bean, parameters);
-    }
-
-    /**
-     * Derived classes may wish to overload this to prevent the default introspection of URI parameters
-     * on the created Endpoint instance
-     */
-    protected boolean useIntrospectionOnEndpoint() {
-        return true;
-    }
-
-    /**
-     * Gets the parameter and remove it from the parameter map. This method doesn't resolve
-     * reference parameters in the registry.
-     *
-     * @param parameters the parameters
-     * @param key        the key
-     * @param type       the requested type to convert the value from the parameter
-     * @return the converted value parameter, <tt>null</tt> if parameter does not exists.
-     * @see #resolveAndRemoveReferenceParameter(Map, String, Class)
-     */
-    public <T> T getAndRemoveParameter(Map<String, Object> parameters, String key, Class<T> type) {
-        return getAndRemoveParameter(parameters, key, type, null);
-    }
-
-    /**
-     * Gets the parameter and remove it from the parameter map. This method doesn't resolve
-     * reference parameters in the registry.
-     *
-     * @param parameters    the parameters
-     * @param key           the key
-     * @param type          the requested type to convert the value from the parameter
-     * @param defaultValue  use this default value if the parameter does not contain the key
-     * @return the converted value parameter
-     * @see #resolveAndRemoveReferenceParameter(Map, String, Class, Object)
-     */
-    public <T> T getAndRemoveParameter(Map<String, Object> parameters, String key, Class<T> type, T defaultValue) {
-        Object value = parameters.remove(key);
-        if (value != null) {
-            // if we have a value then convert it
-            return CamelContextHelper.mandatoryConvertTo(getCamelContext(), type, value);
-        } else {
-            value = defaultValue;
-        }
-        if (value == null) {
-            return null;
-        }
-
-        return CamelContextHelper.mandatoryConvertTo(getCamelContext(), type, value);
-    }
-
-    /**
-     * Gets the parameter and remove it from the parameter map. This method resolves
-     * reference parameters in the registry as well.
-     *
-     * @param parameters    the parameters
-     * @param key           the key
-     * @param type          the requested type to convert the value from the parameter
-     * @return the converted value parameter
-     */
-    public <T> T getAndRemoveOrResolveReferenceParameter(Map<String, Object> parameters, String key, Class<T> type) {
-        return getAndRemoveOrResolveReferenceParameter(parameters, key, type, null);
-    }
-
-    /**
-     * Gets the parameter and remove it from the parameter map. This method resolves
-     * reference parameters in the registry as well.
-     *
-     * @param parameters    the parameters
-     * @param key           the key
-     * @param type          the requested type to convert the value from the parameter
-     * @param defaultValue  use this default value if the parameter does not contain the key
-     * @return the converted value parameter
-     */
-    public <T> T getAndRemoveOrResolveReferenceParameter(Map<String, Object> parameters, String key, Class<T> type, T defaultValue) {
-        String value = getAndRemoveParameter(parameters, key, String.class);
-        if (value == null) {
-            return defaultValue;
-        } else if (EndpointHelper.isReferenceParameter(value)) {
-            return EndpointHelper.resolveReferenceParameter(getCamelContext(), value, type);
-        } else {
-            return getCamelContext().getTypeConverter().convertTo(type, value);
-        }
-    }
-
-    /**
-     * Resolves a reference parameter in the registry and removes it from the map. 
-     *
-     * @param <T>           type of object to lookup in the registry.
-     * @param parameters    parameter map.
-     * @param key           parameter map key.
-     * @param type          type of object to lookup in the registry.
-     * @return the referenced object or <code>null</code> if the parameter map 
-     *         doesn't contain the key.
-     * @throws IllegalArgumentException if a non-null reference was not found in 
-     *         registry.
-     */
-    public <T> T resolveAndRemoveReferenceParameter(Map<String, Object> parameters, String key, Class<T> type) {
-        return resolveAndRemoveReferenceParameter(parameters, key, type, null);
-    }
-
-    /**
-     * Resolves a reference parameter in the registry and removes it from the map. 
-     *
-     * @param <T>           type of object to lookup in the registry.
-     * @param parameters    parameter map.
-     * @param key           parameter map key.
-     * @param type          type of object to lookup in the registry.
-     * @param defaultValue  default value to use if the parameter map doesn't 
-     *                      contain the key.
-     * @return the referenced object or the default value.
-     * @throws IllegalArgumentException if referenced object was not found in 
-     *         registry.
-     */
-    public <T> T resolveAndRemoveReferenceParameter(Map<String, Object> parameters, String key, Class<T> type, T defaultValue) {
-        String value = getAndRemoveParameter(parameters, key, String.class);
-        if (value == null) {
-            return defaultValue;
-        } else {
-            return EndpointHelper.resolveReferenceParameter(getCamelContext(), value, type);
-        }
-    }
-
-    /**
-     * Resolves a reference list parameter in the registry and removes it from
-     * the map.
-     *
-     * @param parameters parameter map.
-     * @param key parameter map key.
-     * @param elementType result list element type.
-     * @return the list of referenced objects or an empty list if the parameter
-     *         map doesn't contain the key.
-     * @throws IllegalArgumentException if any of the referenced objects was
-     *         not found in registry.
-     * @see EndpointHelper#resolveReferenceListParameter(CamelContext, String, Class)
-     */
-    public <T> List<T> resolveAndRemoveReferenceListParameter(Map<String, Object> parameters, String key, Class<T> elementType) {
-        return resolveAndRemoveReferenceListParameter(parameters, key, elementType, new ArrayList<>(0));
-    }
-
-    /**
-     * Resolves a reference list parameter in the registry and removes it from
-     * the map.
-     *
-     * @param parameters parameter map.
-     * @param key parameter map key.
-     * @param elementType result list element type.
-     * @param defaultValue default value to use if the parameter map doesn't
-     *            contain the key.
-     * @return the list of referenced objects or the default value.
-     * @throws IllegalArgumentException if any of the referenced objects was 
-     *         not found in registry.
-     * @see EndpointHelper#resolveReferenceListParameter(CamelContext, String, Class)
-     */
-    public <T> List<T> resolveAndRemoveReferenceListParameter(Map<String, Object> parameters, String key, Class<T> elementType, List<T> defaultValue) {
-        String value = getAndRemoveParameter(parameters, key, String.class);
-
-        if (value == null) {
-            return defaultValue;
-        } else {
-            return EndpointHelper.resolveReferenceListParameter(getCamelContext(), value, elementType);
-        }
-    }
-
-    /**
-     * Returns the reminder of the text if it starts with the prefix.
-     * <p/>
-     * Is useable for string parameters that contains commands.
-     *
-     * @param prefix  the prefix
-     * @param text  the text
-     * @return the reminder, or null if no reminder
-     */
-    protected String ifStartsWithReturnRemainder(String prefix, String text) {
-        if (text.startsWith(prefix)) {
-            String remainder = text.substring(prefix.length());
-            if (remainder.length() > 0) {
-                return remainder;
-            }
-        }
-        return null;
-    }
-
-    protected void registerExtension(ComponentExtension extension) {
-        extensions.add(() -> extension);
-    }
-
-    protected void registerExtension(Supplier<ComponentExtension> supplier) {
-        extensions.add(Suppliers.memorize(supplier));
-    }
-
-    @Override
-    public Collection<Class<? extends ComponentExtension>> getSupportedExtensions() {
-        return extensions.stream()
-            .map(Supplier::get)
-            .map(ComponentExtension::getClass)
-            .collect(Collectors.toList());
-    }
-
-    @Override
-    public <T extends ComponentExtension> Optional<T> getExtension(Class<T> extensionType) {
-        return extensions.stream()
-            .map(Supplier::get)
-            .filter(extensionType::isInstance)
-            .findFirst()
-            .map(extensionType::cast)
-            .map(e -> ObjectHelper.trySetComponent(e, this))
-            .map(e -> ObjectHelper.trySetCamelContext(e, getCamelContext()));
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java
index de21211..e33acfd 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponentResolver.java
@@ -23,7 +23,7 @@ import org.apache.camel.Component;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.util.ResolverHelper;
+import org.apache.camel.support.ResolverHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
deleted file mode 100644
index fe22f3e..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumer.java
+++ /dev/null
@@ -1,164 +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.AsyncProcessor;
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Route;
-import org.apache.camel.RouteAware;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.spi.UnitOfWork;
-import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.apache.camel.util.URISupport;
-import org.apache.camel.util.UnitOfWorkHelper;
-
-/**
- * A default consumer useful for implementation inheritance.
- */
-public class DefaultConsumer extends ServiceSupport implements Consumer, RouteAware {
-
-    private transient String consumerToString;
-    private final Endpoint endpoint;
-    private final Processor processor;
-    private volatile AsyncProcessor asyncProcessor;
-    private ExceptionHandler exceptionHandler;
-    private Route route;
-
-    public DefaultConsumer(Endpoint endpoint, Processor processor) {
-        this.endpoint = endpoint;
-        this.processor = processor;
-        this.exceptionHandler = new LoggingExceptionHandler(endpoint.getCamelContext(), getClass());
-    }
-
-    @Override
-    public String toString() {
-        if (consumerToString == null) {
-            consumerToString = "Consumer[" + URISupport.sanitizeUri(endpoint.getEndpointUri()) + "]";
-        }
-        return consumerToString;
-    }
-
-    public Route getRoute() {
-        return route;
-    }
-
-    public void setRoute(Route route) {
-        this.route = route;
-    }
-
-    /**
-     * If the consumer needs to defer done the {@link org.apache.camel.spi.UnitOfWork} on
-     * the processed {@link Exchange} then this method should be use to create and start
-     * the {@link UnitOfWork} on the exchange.
-     *
-     * @param exchange the exchange
-     * @return the created and started unit of work
-     * @throws Exception is thrown if error starting the unit of work
-     *
-     * @see #doneUoW(org.apache.camel.Exchange)
-     */
-    public UnitOfWork createUoW(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 (route != null && exchange.getFromRouteId() == null) {
-            exchange.setFromRouteId(route.getId());
-        }
-
-        UnitOfWork uow = endpoint.getCamelContext().getUnitOfWorkFactory().createUnitOfWork(exchange);
-        exchange.setUnitOfWork(uow);
-        uow.start();
-        return uow;
-    }
-
-    /**
-     * If the consumer needs to defer done the {@link org.apache.camel.spi.UnitOfWork} on
-     * the processed {@link Exchange} then this method should be executed when the consumer
-     * is finished processing the message.
-     *
-     * @param exchange the exchange
-     *
-     * @see #createUoW(org.apache.camel.Exchange)
-     */
-    public void doneUoW(Exchange exchange) {
-        UnitOfWorkHelper.doneUow(exchange.getUnitOfWork(), exchange);
-    }
-
-    public Endpoint getEndpoint() {
-        return endpoint;
-    }
-
-    public Processor getProcessor() {
-        return processor;
-    }
-
-    /**
-     * Provides an {@link org.apache.camel.AsyncProcessor} interface to the configured
-     * processor on the consumer. If the processor does not implement the interface,
-     * it will be adapted so that it does.
-     */
-    public synchronized AsyncProcessor getAsyncProcessor() {
-        if (asyncProcessor == null) {            
-            asyncProcessor = AsyncProcessorConverterHelper.convert(processor);
-        }
-        return asyncProcessor;
-    }
-
-    public ExceptionHandler getExceptionHandler() {
-        return exceptionHandler;
-    }
-
-    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
-        this.exceptionHandler = exceptionHandler;
-    }
-
-    protected void doStop() throws Exception {
-        log.debug("Stopping consumer: {}", this);
-        ServiceHelper.stopService(processor);
-    }
-
-    protected void doStart() throws Exception {
-        log.debug("Starting consumer: {}", this);
-        ServiceHelper.startService(processor);
-    }
-
-    /**
-     * Handles the given exception using the {@link #getExceptionHandler()}
-     * 
-     * @param t the exception to handle
-     */
-    protected void handleException(Throwable t) {
-        Throwable newt = (t == null) ? new IllegalArgumentException("Handling [null] exception") : t;
-        getExceptionHandler().handleException(newt);
-    }
-
-    /**
-     * Handles the given exception using the {@link #getExceptionHandler()}
-     *
-     * @param message additional message about the exception
-     * @param t the exception to handle
-     */
-    protected void handleException(String message, Throwable t) {
-        Throwable newt = (t == null) ? new IllegalArgumentException("Handling [null] exception") : t;
-        getExceptionHandler().handleException(message, newt);
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
index ea861af..ba52514 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultConsumerTemplate.java
@@ -23,14 +23,12 @@ import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.Synchronization;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.apache.camel.util.UnitOfWorkHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.support.UnitOfWorkHelper;
 
-import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
+import static org.apache.camel.RuntimeCamelException.wrapRuntimeCamelException;
 
 /**
  * Template (named like Spring's TransactionTemplate & JmsTemplate
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java
index 0ee6570..51eddae 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDataFormatResolver.java
@@ -22,7 +22,7 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatFactory;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.FactoryFinder;
-import org.apache.camel.util.ResolverHelper;
+import org.apache.camel.support.ResolverHelper;
 
 /**
  * Default data format resolver
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
index 99726b0..9306b43 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
@@ -41,8 +41,8 @@ import org.apache.camel.spi.Condition;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.support.EventNotifierSupport;
+import org.apache.camel.support.ServiceHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
deleted file mode 100644
index 7206ca8..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
+++ /dev/null
@@ -1,482 +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.AsyncProducer;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.PollingConsumer;
-import org.apache.camel.ResolveEndpointFailedException;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.spi.HasId;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StringHelper;
-import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A default endpoint useful for implementation inheritance.
- * <p/>
- * Components which leverages <a
- * href="http://camel.apache.org/asynchronous-routing-engine.html">asynchronous
- * processing model</a> should check the {@link #isSynchronous()} to determine
- * if asynchronous processing is allowed. The <tt>synchronous</tt> option on the
- * endpoint allows Camel end users to dictate whether they want the asynchronous
- * model or not. The option is default <tt>false</tt> which means asynchronous
- * processing is allowed.
- */
-public abstract class DefaultEndpoint extends ServiceSupport implements Endpoint, HasId, CamelContextAware {
-
-    private final String id = EndpointHelper.createEndpointId();
-    private transient String endpointUriToString;
-    private String endpointUri;
-    private CamelContext camelContext;
-    private Component component;
-    @UriParam(label = "consumer", optionalPrefix = "consumer.", description = "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while"
-                    + " the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler."
-                    + " By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored.")
-    private boolean bridgeErrorHandler;
-    @UriParam(label = "consumer,advanced", optionalPrefix = "consumer.", description = "To let the consumer use a custom ExceptionHandler."
-            + " Notice if the option bridgeErrorHandler is enabled then this option is not in use."
-            + " By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored.")
-    private ExceptionHandler exceptionHandler;
-    @UriParam(label = "consumer,advanced",
-            description = "Sets the exchange pattern when the consumer creates an exchange.")
-    // no default value set on @UriParam as the MEP is sometimes InOnly or InOut depending on the component in use
-    private ExchangePattern exchangePattern = ExchangePattern.InOnly;
-    // option to allow end user to dictate whether async processing should be
-    // used or not (if possible)
-    @UriParam(defaultValue = "false", label = "advanced",
-            description = "Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported).")
-    private boolean synchronous;
-    // these options are not really in use any option related to the consumer has a specific option on the endpoint
-    // and consumerProperties was added from the very start of Camel.
-    private Map<String, Object> consumerProperties;
-    // pooling consumer options only related to EventDrivenPollingConsumer which are very seldom in use
-    // so lets not expose them in the component docs as it will be included in every component
-    private int pollingConsumerQueueSize = 1000;
-    private boolean pollingConsumerBlockWhenFull = true;
-    private long pollingConsumerBlockTimeout;
-
-    /**
-     * Constructs a fully-initialized DefaultEndpoint instance. This is the
-     * preferred method of constructing an object from Java code (as opposed to
-     * Spring beans, etc.).
-     * 
-     * @param endpointUri the full URI used to create this endpoint
-     * @param component the component that created this endpoint
-     */
-    protected DefaultEndpoint(String endpointUri, Component component) {
-        this.camelContext = component == null ? null : component.getCamelContext();
-        this.component = component;
-        this.setEndpointUri(endpointUri);
-    }
-
-    /**
-     * Constructs a partially-initialized DefaultEndpoint instance. Useful when
-     * creating endpoints manually (e.g., as beans in Spring).
-     * <p/>
-     * Please note that the endpoint URI must be set through properties (or
-     * overriding {@link #createEndpointUri()} if one uses this constructor.
-     * <p/>
-     * <b>Note:</b> It is preferred to create endpoints using the associated
-     * component.
-     */
-    protected DefaultEndpoint() {
-    }
-
-    public int hashCode() {
-        return getEndpointUri().hashCode() * 37 + 1;
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if (object instanceof DefaultEndpoint) {
-            DefaultEndpoint that = (DefaultEndpoint)object;
-            // must also match the same CamelContext in case we compare endpoints from different contexts
-            String thisContextName = this.getCamelContext() != null ? this.getCamelContext().getName() : null;
-            String thatContextName = that.getCamelContext() != null ? that.getCamelContext().getName() : null;
-            return ObjectHelper.equal(this.getEndpointUri(), that.getEndpointUri()) && ObjectHelper.equal(thisContextName, thatContextName);
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        if (endpointUriToString == null) {
-            String value = null;
-            try {
-                value = getEndpointUri();
-            } catch (RuntimeException e) {
-                // ignore any exception and use null for building the string value
-            }
-            // ensure to sanitize uri so we do not show sensitive information such as passwords
-            endpointUriToString = URISupport.sanitizeUri(value);
-        }
-        return endpointUriToString;
-    }
-
-    /**
-     * Returns a unique String ID which can be used for aliasing without having
-     * to use the whole URI which is not unique
-     */
-    public String getId() {
-        return id;
-    }
-
-    public String getEndpointUri() {
-        if (endpointUri == null) {
-            endpointUri = createEndpointUri();
-            if (endpointUri == null) {
-                throw new IllegalArgumentException("endpointUri is not specified and " + getClass().getName()
-                    + " does not implement createEndpointUri() to create a default value");
-            }
-        }
-        return endpointUri;
-    }
-
-    public String getEndpointKey() {
-        if (isLenientProperties()) {
-            // only use the endpoint uri without parameters as the properties are lenient
-            String uri = getEndpointUri();
-            if (uri.indexOf('?') != -1) {
-                return StringHelper.before(uri, "?");
-            } else {
-                return uri;
-            }
-        } else {
-            // use the full endpoint uri
-            return getEndpointUri();
-        }
-    }
-
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public AsyncProducer createAsyncProducer() throws Exception {
-        return AsyncProcessorConverterHelper.convert(createProducer());
-    }
-
-    /**
-     * Returns the component that created this endpoint.
-     * 
-     * @return the component that created this endpoint, or <tt>null</tt> if
-     *         none set
-     */
-    public Component getComponent() {
-        return component;
-    }
-
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    public PollingConsumer createPollingConsumer() throws Exception {
-        // should not call configurePollingConsumer when its EventDrivenPollingConsumer
-        if (log.isDebugEnabled()) {
-            log.debug("Creating EventDrivenPollingConsumer with queueSize: {} blockWhenFull: {} blockTimeout: {}",
-                    new Object[]{getPollingConsumerQueueSize(), isPollingConsumerBlockWhenFull(), getPollingConsumerBlockTimeout()});
-        }
-        EventDrivenPollingConsumer consumer = new EventDrivenPollingConsumer(this, getPollingConsumerQueueSize());
-        consumer.setBlockWhenFull(isPollingConsumerBlockWhenFull());
-        consumer.setBlockTimeout(getPollingConsumerBlockTimeout());
-        return consumer;
-    }
-
-    public Exchange createExchange() {
-        return createExchange(getExchangePattern());
-    }
-
-    public Exchange createExchange(ExchangePattern pattern) {
-        return new DefaultExchange(this, pattern);
-    }
-
-    /**
-     * Returns the default exchange pattern to use when creating an exchange.
-     */
-    public ExchangePattern getExchangePattern() {
-        return exchangePattern;
-    }
-
-    /**
-     * Sets the default exchange pattern when creating an exchange.
-     */
-    public void setExchangePattern(ExchangePattern exchangePattern) {
-        this.exchangePattern = exchangePattern;
-    }
-
-    /**
-     * Returns whether synchronous processing should be strictly used.
-     */
-    public boolean isSynchronous() {
-        return synchronous;
-    }
-
-    /**
-     * Sets whether synchronous processing should be strictly used, or Camel is
-     * allowed to use asynchronous processing (if supported).
-     * 
-     * @param synchronous <tt>true</tt> to enforce synchronous processing
-     */
-    public void setSynchronous(boolean synchronous) {
-        this.synchronous = synchronous;
-    }
-
-    public boolean isBridgeErrorHandler() {
-        return bridgeErrorHandler;
-    }
-
-    /**
-     * Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while
-     * the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and
-     * handled by the routing Error Handler.
-     * <p/>
-     * By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions,
-     * that will be logged at WARN/ERROR level and ignored.
-     */
-    public void setBridgeErrorHandler(boolean bridgeErrorHandler) {
-        this.bridgeErrorHandler = bridgeErrorHandler;
-    }
-
-    public ExceptionHandler getExceptionHandler() {
-        return exceptionHandler;
-    }
-
-    /**
-     * To let the consumer use a custom ExceptionHandler.
-     + Notice if the option bridgeErrorHandler is enabled then this options is not in use.
-     + By default the consumer will deal with exceptions, that will be logged at WARN/ERROR level and ignored.
-     */
-    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
-        this.exceptionHandler = exceptionHandler;
-    }
-
-    /**
-     * Gets the {@link org.apache.camel.PollingConsumer} queue size, when {@link org.apache.camel.impl.EventDrivenPollingConsumer}
-     * is being used. Notice some Camel components may have their own implementation of {@link org.apache.camel.PollingConsumer} and
-     * therefore not using the default {@link org.apache.camel.impl.EventDrivenPollingConsumer} implementation.
-     * <p/>
-     * The default value is <tt>1000</tt>
-     */
-    public int getPollingConsumerQueueSize() {
-        return pollingConsumerQueueSize;
-    }
-
-    /**
-     * Sets the {@link org.apache.camel.PollingConsumer} queue size, when {@link org.apache.camel.impl.EventDrivenPollingConsumer}
-     * is being used. Notice some Camel components may have their own implementation of {@link org.apache.camel.PollingConsumer} and
-     * therefore not using the default {@link org.apache.camel.impl.EventDrivenPollingConsumer} implementation.
-     * <p/>
-     * The default value is <tt>1000</tt>
-     */
-    public void setPollingConsumerQueueSize(int pollingConsumerQueueSize) {
-        this.pollingConsumerQueueSize = pollingConsumerQueueSize;
-    }
-
-    /**
-     * Whether to block when adding to the internal queue off when {@link org.apache.camel.impl.EventDrivenPollingConsumer}
-     * is being used. Notice some Camel components may have their own implementation of {@link org.apache.camel.PollingConsumer} and
-     * therefore not using the default {@link org.apache.camel.impl.EventDrivenPollingConsumer} implementation.
-     * <p/>
-     * Setting this option to <tt>false</tt>, will result in an {@link java.lang.IllegalStateException} being thrown
-     * when trying to add to the queue, and its full.
-     * <p/>
-     * The default value is <tt>true</tt> which will block the producer queue until the queue has space.
-     */
-    public boolean isPollingConsumerBlockWhenFull() {
-        return pollingConsumerBlockWhenFull;
-    }
-
-    /**
-     * Set whether to block when adding to the internal queue off when {@link org.apache.camel.impl.EventDrivenPollingConsumer}
-     * is being used. Notice some Camel components may have their own implementation of {@link org.apache.camel.PollingConsumer} and
-     * therefore not using the default {@link org.apache.camel.impl.EventDrivenPollingConsumer} implementation.
-     * <p/>
-     * Setting this option to <tt>false</tt>, will result in an {@link java.lang.IllegalStateException} being thrown
-     * when trying to add to the queue, and its full.
-     * <p/>
-     * The default value is <tt>true</tt> which will block the producer queue until the queue has space.
-     */
-    public void setPollingConsumerBlockWhenFull(boolean pollingConsumerBlockWhenFull) {
-        this.pollingConsumerBlockWhenFull = pollingConsumerBlockWhenFull;
-    }
-
-    /**
-     * Sets the timeout in millis to use when adding to the internal queue off when {@link org.apache.camel.impl.EventDrivenPollingConsumer}
-     * is being used.
-     *
-     * @see #setPollingConsumerBlockWhenFull(boolean)
-     */
-    public long getPollingConsumerBlockTimeout() {
-        return pollingConsumerBlockTimeout;
-    }
-
-    /**
-     * Sets the timeout in millis to use when adding to the internal queue off when {@link org.apache.camel.impl.EventDrivenPollingConsumer}
-     * is being used.
-     *
-     * @see #setPollingConsumerBlockWhenFull(boolean)
-     */
-    public void setPollingConsumerBlockTimeout(long pollingConsumerBlockTimeout) {
-        this.pollingConsumerBlockTimeout = pollingConsumerBlockTimeout;
-    }
-
-    public void configureProperties(Map<String, Object> options) {
-        Map<String, Object> consumerProperties = IntrospectionSupport.extractProperties(options, "consumer.");
-        if (consumerProperties != null && !consumerProperties.isEmpty()) {
-            setConsumerProperties(consumerProperties);
-        }
-    }
-
-    /**
-     * Sets the bean properties on the given bean.
-     * <p/>
-     * This is the same logical implementation as {@link DefaultComponent#setProperties(Object, java.util.Map)}
-     *
-     * @param bean  the bean
-     * @param parameters  properties to set
-     */
-    protected void setProperties(Object bean, Map<String, Object> parameters) throws Exception {
-        // set reference properties first as they use # syntax that fools the regular properties setter
-        EndpointHelper.setReferenceProperties(getCamelContext(), bean, parameters);
-        EndpointHelper.setProperties(getCamelContext(), bean, parameters);
-    }
-
-    /**
-     * A factory method to lazily create the endpointUri if none is specified
-     */
-    protected String createEndpointUri() {
-        return null;
-    }
-
-    /**
-     * Sets the endpointUri if it has not been specified yet via some kind of
-     * dependency injection mechanism. This allows dependency injection
-     * frameworks such as Spring or Guice to set the default endpoint URI in
-     * cases where it has not been explicitly configured using the name/context
-     * in which an Endpoint is created.
-     */
-    public void setEndpointUriIfNotSpecified(String value) {
-        if (endpointUri == null) {
-            setEndpointUri(value);
-        }
-    }
-
-    /**
-     * Sets the URI that created this endpoint.
-     */
-    protected void setEndpointUri(String endpointUri) {
-        this.endpointUri = endpointUri;
-    }
-
-    public boolean isLenientProperties() {
-        // default should be false for most components
-        return false;
-    }
-
-    public Map<String, Object> getConsumerProperties() {
-        if (consumerProperties == null) {
-            // must create empty if none exists
-            consumerProperties = new HashMap<>();
-        }
-        return consumerProperties;
-    }
-
-    public void setConsumerProperties(Map<String, Object> consumerProperties) {
-        // append consumer properties
-        if (consumerProperties != null && !consumerProperties.isEmpty()) {
-            if (this.consumerProperties == null) {
-                this.consumerProperties = new HashMap<>(consumerProperties);
-            } else {
-                this.consumerProperties.putAll(consumerProperties);
-            }
-        }
-    }
-
-    protected void configureConsumer(Consumer consumer) throws Exception {
-        // inject CamelContext
-        if (consumer instanceof CamelContextAware) {
-            ((CamelContextAware) consumer).setCamelContext(getCamelContext());
-        }
-
-        if (consumerProperties != null) {
-            // use a defensive copy of the consumer properties as the methods below will remove the used properties
-            // and in case we restart routes, we need access to the original consumer properties again
-            Map<String, Object> copy = new HashMap<>(consumerProperties);
-
-            // set reference properties first as they use # syntax that fools the regular properties setter
-            EndpointHelper.setReferenceProperties(getCamelContext(), consumer, copy);
-            EndpointHelper.setProperties(getCamelContext(), consumer, copy);
-
-            // special consumer.bridgeErrorHandler option
-            Object bridge = copy.remove("bridgeErrorHandler");
-            if (bridge != null && "true".equals(bridge)) {
-                if (consumer instanceof DefaultConsumer) {
-                    DefaultConsumer defaultConsumer = (DefaultConsumer) consumer;
-                    defaultConsumer.setExceptionHandler(new BridgeExceptionHandlerToErrorHandler(defaultConsumer));
-                } else {
-                    throw new IllegalArgumentException("Option consumer.bridgeErrorHandler is only supported by endpoints,"
-                            + " having their consumer extend DefaultConsumer. The consumer is a " + consumer.getClass().getName() + " class.");
-                }
-            }
-
-            if (!this.isLenientProperties() && copy.size() > 0) {
-                throw new ResolveEndpointFailedException(this.getEndpointUri(), "There are " + copy.size()
-                    + " parameters that couldn't be set on the endpoint consumer."
-                    + " Check the uri if the parameters are spelt correctly and that they are properties of the endpoint."
-                    + " Unknown consumer parameters=[" + copy + "]");
-            }
-        }
-    }
-
-    protected void configurePollingConsumer(PollingConsumer consumer) throws Exception {
-        configureConsumer(consumer);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        // the bridgeErrorHandler/exceptionHandler was originally configured with consumer. prefix, such as consumer.bridgeErrorHandler=true
-        // so if they have been configured on the endpoint then map to the old naming style
-        if (bridgeErrorHandler) {
-            getConsumerProperties().put("bridgeErrorHandler", "true");
-        }
-        if (exceptionHandler != null) {
-            getConsumerProperties().put("exceptionHandler", exceptionHandler);
-        }
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        // noop
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
index 8ff1582..f41cce5 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointRegistry.java
@@ -16,40 +16,22 @@
  */
 package org.apache.camel.impl;
 
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.Arrays;
-import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.EndpointRegistry;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.CompoundIterator;
-import org.apache.camel.util.LRUCache;
-import org.apache.camel.util.LRUCacheFactory;
-import org.apache.camel.util.ServiceHelper;
+import org.apache.camel.support.CamelContextHelper;
 
 /**
  * Default implementation of {@link org.apache.camel.spi.EndpointRegistry}
  */
-public class DefaultEndpointRegistry extends AbstractMap<EndpointKey, Endpoint> implements EndpointRegistry<EndpointKey> {
+public class DefaultEndpointRegistry extends AbstractDynamicRegistry<EndpointKey, Endpoint> implements EndpointRegistry<EndpointKey> {
+
     private static final long serialVersionUID = 1L;
-    private Map<EndpointKey, Endpoint> dynamicMap;
-    private Map<EndpointKey, Endpoint> staticMap;
-    private final CamelContext context;
-    private int maxCacheSize;
 
     public DefaultEndpointRegistry(CamelContext context) {
-        this.maxCacheSize = CamelContextHelper.getMaximumEndpointCacheSize(context);
-        // do not stop on eviction, as the validator may still be in use
-        this.dynamicMap = LRUCacheFactory.newLRUCache(maxCacheSize, maxCacheSize, false);
-        // static map to hold endpoints we do not want to be evicted
-        this.staticMap = new ConcurrentHashMap<>();
-        this.context = context;
+        super(context, CamelContextHelper.getMaximumEndpointCacheSize(context));
     }
 
     public DefaultEndpointRegistry(CamelContext context, Map<EndpointKey, Endpoint> endpoints) {
@@ -58,150 +40,13 @@ public class DefaultEndpointRegistry extends AbstractMap<EndpointKey, Endpoint>
     }
 
     @Override
-    public void start() throws Exception {
-        if (dynamicMap instanceof LRUCache) {
-            ((LRUCache) dynamicMap).resetStatistics();
-        }
-    }
-
-    @Override
-    public Endpoint get(Object o) {
-        // try static map first
-        Endpoint answer = staticMap.get(o);
-        if (answer == null) {
-            answer = dynamicMap.get(o);
-            if (answer != null && (context.isSetupRoutes() || context.getRouteController().isStartingRoutes())) {
-                dynamicMap.remove(o);
-                staticMap.put((EndpointKey) o, answer);
-            }
-        }
-        return answer;
-    }
-
-    @Override
-    public Endpoint put(EndpointKey key, Endpoint endpoint) {
-        // at first we must see if the key already exists and then replace it back, so it stays the same spot
-        Endpoint answer = staticMap.remove(key);
-        if (answer != null) {
-            // replace existing
-            staticMap.put(key, endpoint);
-            return answer;
-        }
-
-        answer = dynamicMap.remove(key);
-        if (answer != null) {
-            // replace existing
-            dynamicMap.put(key, endpoint);
-            return answer;
-        }
-
-        // we want endpoints to be static if they are part of setting up or starting routes
-        if (context.isSetupRoutes() || context.getRouteController().isStartingRoutes()) {
-            answer = staticMap.put(key, endpoint);
-        } else {
-            answer = dynamicMap.put(key, endpoint);
-        }
-
-        return answer;
-    }
-
-    @Override
-    public boolean containsKey(Object o) {
-        return staticMap.containsKey(o) || dynamicMap.containsKey(o);
-    }
-
-    @Override
-    public boolean containsValue(Object o) {
-        return staticMap.containsValue(o) || dynamicMap.containsValue(o);
-    }
-
-    @Override
-    public int size() {
-        return staticMap.size() + dynamicMap.size();
-    }
-
-    public int staticSize() {
-        return staticMap.size();
-    }
-
-    @Override
-    public int dynamicSize() {
-        return dynamicMap.size();
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return staticMap.isEmpty() && dynamicMap.isEmpty();
-    }
-
-    @Override
-    public Endpoint remove(Object o) {
-        Endpoint answer = staticMap.remove(o);
-        if (answer == null) {
-            answer = dynamicMap.remove(o);
-        }
-        return answer;
-    }
-
-    @Override
-    public void clear() {
-        staticMap.clear();
-        dynamicMap.clear();
-    }
-
-    @Override
-    public Set<Entry<EndpointKey, Endpoint>> entrySet() {
-        return new AbstractSet<Entry<EndpointKey, Endpoint>>() {
-            @Override
-            public Iterator<Entry<EndpointKey, Endpoint>> iterator() {
-                return new CompoundIterator<>(Arrays.asList(
-                        staticMap.entrySet().iterator(), dynamicMap.entrySet().iterator()
-                ));
-            }
-
-            @Override
-            public int size() {
-                return staticMap.size() + dynamicMap.size();
-            }
-        };
-    }
-
-    @Override
-    public int getMaximumCacheSize() {
-        return maxCacheSize;
-    }
-
-    /**
-     * Purges the cache
-     */
-    @Override
-    public void purge() {
-        // only purge the dynamic part
-        dynamicMap.clear();
-    }
-
-    @Override
-    public void cleanUp() {
-        if (dynamicMap instanceof LRUCache) {
-            ((LRUCache) dynamicMap).cleanUp();
-        }
-    }
-
-    @Override
     public boolean isStatic(String key) {
-        return staticMap.containsKey(new EndpointKey(key));
+        return isStatic(new EndpointKey(key));
     }
 
     @Override
     public boolean isDynamic(String key) {
-        return dynamicMap.containsKey(new EndpointKey(key));
-    }
-
-    @Override
-    public void stop() throws Exception {
-        ServiceHelper.stopService(staticMap.values());
-        ServiceHelper.stopService(values());
-        purge();
+        return isDynamic(new EndpointKey(key));
     }
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointUtilizationStatistics.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointUtilizationStatistics.java
index 3c93523..84e8f8b 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointUtilizationStatistics.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpointUtilizationStatistics.java
@@ -20,7 +20,7 @@ import java.util.Collections;
 import java.util.Map;
 
 import org.apache.camel.spi.EndpointUtilizationStatistics;
-import org.apache.camel.util.LRUCacheFactory;
+import org.apache.camel.support.LRUCacheFactory;
 
 public class DefaultEndpointUtilizationStatistics implements EndpointUtilizationStatistics {
 
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
deleted file mode 100644
index c2357d4..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
+++ /dev/null
@@ -1,557 +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.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.MessageHistory;
-import org.apache.camel.spi.Synchronization;
-import org.apache.camel.spi.UnitOfWork;
-import org.apache.camel.util.EndpointHelper;
-import org.apache.camel.util.ExchangeHelper;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * A default implementation of {@link Exchange}
- */
-public final class DefaultExchange implements Exchange {
-
-    protected final CamelContext context;
-    private Map<String, Object> properties;
-    private Message in;
-    private Message out;
-    private Exception exception;
-    private String exchangeId;
-    private UnitOfWork unitOfWork;
-    private ExchangePattern pattern;
-    private Endpoint fromEndpoint;
-    private String fromRouteId;
-    private List<Synchronization> onCompletions;
-
-    public DefaultExchange(CamelContext context) {
-        this(context, ExchangePattern.InOnly);
-    }
-
-    public DefaultExchange(CamelContext context, ExchangePattern pattern) {
-        this.context = context;
-        this.pattern = pattern;
-    }
-
-    public DefaultExchange(Exchange parent) {
-        this(parent.getContext(), parent.getPattern());
-        this.fromEndpoint = parent.getFromEndpoint();
-        this.fromRouteId = parent.getFromRouteId();
-        this.unitOfWork = parent.getUnitOfWork();
-    }
-
-    public DefaultExchange(Endpoint fromEndpoint) {
-        this(fromEndpoint, ExchangePattern.InOnly);
-    }
-
-    public DefaultExchange(Endpoint fromEndpoint, ExchangePattern pattern) {
-        this(fromEndpoint.getCamelContext(), pattern);
-        this.fromEndpoint = fromEndpoint;
-    }
-
-    @Override
-    public String toString() {
-        // do not output information about the message as it may contain sensitive information
-        return String.format("Exchange[%s]", exchangeId == null ? "" : exchangeId);
-    }
-
-    @Override
-    public Date getCreated() {
-        if (hasProperties()) {
-            return getProperty(Exchange.CREATED_TIMESTAMP, Date.class);
-        } else {
-            return null;
-        }
-    }
-
-    public Exchange copy() {
-        DefaultExchange exchange = new DefaultExchange(this);
-
-        exchange.setIn(getIn().copy());
-        exchange.getIn().setBody(getIn().getBody());
-        exchange.getIn().setFault(getIn().isFault());
-        if (getIn().hasHeaders()) {
-            exchange.getIn().setHeaders(safeCopyHeaders(getIn().getHeaders()));
-            // just copy the attachments here
-            exchange.getIn().copyAttachments(getIn());
-        }
-        if (hasOut()) {
-            exchange.setOut(getOut().copy());
-            exchange.getOut().setBody(getOut().getBody());
-            exchange.getOut().setFault(getOut().isFault());
-            if (getOut().hasHeaders()) {
-                exchange.getOut().setHeaders(safeCopyHeaders(getOut().getHeaders()));
-            }
-            // Just copy the attachments here
-            exchange.getOut().copyAttachments(getOut());
-        }
-
-        exchange.setException(getException());
-
-        // copy properties after body as body may trigger lazy init
-        if (hasProperties()) {
-            exchange.setProperties(safeCopyProperties(getProperties()));
-        }
-
-        return exchange;
-    }
-
-    private Map<String, Object> safeCopyHeaders(Map<String, Object> headers) {
-        if (headers == null) {
-            return null;
-        }
-
-        return context.getHeadersMapFactory().newMap(headers);
-    }
-
-    @SuppressWarnings("unchecked")
-    private Map<String, Object> safeCopyProperties(Map<String, Object> properties) {
-        if (properties == null) {
-            return null;
-        }
-
-        Map<String, Object> answer = createProperties(properties);
-
-        // safe copy message history using a defensive copy
-        List<MessageHistory> history = (List<MessageHistory>) answer.remove(Exchange.MESSAGE_HISTORY);
-        if (history != null) {
-            answer.put(Exchange.MESSAGE_HISTORY, new LinkedList<>(history));
-        }
-
-        return answer;
-    }
-
-    public CamelContext getContext() {
-        return context;
-    }
-
-    public Object getProperty(String name) {
-        if (properties != null) {
-            return properties.get(name);
-        }
-        return null;
-    }
-
-    public Object getProperty(String name, Object defaultValue) {
-        Object answer = getProperty(name);
-        return answer != null ? answer : defaultValue;
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> T getProperty(String name, Class<T> type) {
-        Object value = getProperty(name);
-        if (value == null) {
-            // lets avoid NullPointerException when converting to boolean for null values
-            if (boolean.class == type) {
-                return (T) Boolean.FALSE;
-            }
-            return null;
-        }
-
-        // eager same instance type test to avoid the overhead of invoking the type converter
-        // if already same type
-        if (type.isInstance(value)) {
-            return (T) value;
-        }
-
-        return ExchangeHelper.convertToType(this, type, value);
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> T getProperty(String name, Object defaultValue, Class<T> type) {
-        Object value = getProperty(name, defaultValue);
-        if (value == null) {
-            // lets avoid NullPointerException when converting to boolean for null values
-            if (boolean.class == type) {
-                return (T) Boolean.FALSE;
-            }
-            return null;
-        }
-
-        // eager same instance type test to avoid the overhead of invoking the type converter
-        // if already same type
-        if (type.isInstance(value)) {
-            return (T) value;
-        }
-
-        return ExchangeHelper.convertToType(this, type, value);
-    }
-
-    public void setProperty(String name, Object value) {
-        if (value != null) {
-            // avoid the NullPointException
-            getProperties().put(name, value);
-        } else {
-            // if the value is null, we just remove the key from the map
-            if (name != null) {
-                getProperties().remove(name);
-            }
-        }
-    }
-
-    public Object removeProperty(String name) {
-        if (!hasProperties()) {
-            return null;
-        }
-        return getProperties().remove(name);
-    }
-
-    public boolean removeProperties(String pattern) {
-        return removeProperties(pattern, (String[]) null);
-    }
-
-    public boolean removeProperties(String pattern, String... excludePatterns) {
-        if (!hasProperties()) {
-            return false;
-        }
-
-        // store keys to be removed as we cannot loop and remove at the same time in implementations such as HashMap
-        Set<String> toBeRemoved = new HashSet<>();
-        boolean matches = false;
-        for (String key : properties.keySet()) {
-            if (EndpointHelper.matchPattern(key, pattern)) {
-                if (excludePatterns != null && isExcludePatternMatch(key, excludePatterns)) {
-                    continue;
-                }
-                matches = true;
-                toBeRemoved.add(key);
-            }
-        }
-
-        if (!toBeRemoved.isEmpty()) {
-            if (toBeRemoved.size() == properties.size()) {
-                // special optimization when all should be removed
-                properties.clear();
-            } else {
-                toBeRemoved.forEach(k -> properties.remove(k));
-            }
-        }
-
-        return matches;
-    }
-
-    public Map<String, Object> getProperties() {
-        if (properties == null) {
-            properties = createProperties();
-        }
-        return properties;
-    }
-
-    public boolean hasProperties() {
-        return properties != null && !properties.isEmpty();
-    }
-
-    public void setProperties(Map<String, Object> properties) {
-        this.properties = properties;
-    }
-
-    public Message getIn() {
-        if (in == null) {
-            in = new DefaultMessage(getContext());
-            configureMessage(in);
-        }
-        return in;
-    }
-
-    public <T> T getIn(Class<T> type) {
-        Message in = getIn();
-
-        // eager same instance type test to avoid the overhead of invoking the type converter
-        // if already same type
-        if (type.isInstance(in)) {
-            return type.cast(in);
-        }
-
-        // fallback to use type converter
-        return context.getTypeConverter().convertTo(type, this, in);
-    }
-
-    public void setIn(Message in) {
-        this.in = in;
-        configureMessage(in);
-    }
-
-    public Message getOut() {
-        // lazy create
-        if (out == null) {
-            out = (in instanceof MessageSupport)
-                ? ((MessageSupport)in).newInstance() : new DefaultMessage(getContext());
-            configureMessage(out);
-        }
-        return out;
-    }
-
-    public <T> T getOut(Class<T> type) {
-        if (!hasOut()) {
-            return null;
-        }
-
-        Message out = getOut();
-
-        // eager same instance type test to avoid the overhead of invoking the type converter
-        // if already same type
-        if (type.isInstance(out)) {
-            return type.cast(out);
-        }
-
-        // fallback to use type converter
-        return context.getTypeConverter().convertTo(type, this, out);
-    }
-
-    public boolean hasOut() {
-        return out != null;
-    }
-
-    public void setOut(Message out) {
-        this.out = out;
-        configureMessage(out);
-    }
-
-    public Message getMessage() {
-        return hasOut() ? getOut() : getIn();
-    }
-
-    public <T> T getMessage(Class<T> type) {
-        return hasOut() ? getOut(type) : getIn(type);
-    }
-
-    public void setMessage(Message message) {
-        if (hasOut()) {
-            setOut(message);
-        } else {
-            setIn(message);
-        }
-    }
-
-
-    public Exception getException() {
-        return exception;
-    }
-
-    public <T> T getException(Class<T> type) {
-        return ObjectHelper.getException(type, exception);
-    }
-
-    public void setException(Throwable t) {
-        if (t == null) {
-            this.exception = null;
-        } else if (t instanceof Exception) {
-            this.exception = (Exception) t;
-        } else {
-            // wrap throwable into an exception
-            this.exception = ObjectHelper.wrapCamelExecutionException(this, t);
-        }
-        if (t instanceof InterruptedException) {
-            // mark the exchange as interrupted due to the interrupt exception
-            setProperty(Exchange.INTERRUPTED, Boolean.TRUE);
-        }
-    }
-
... 86882 lines suppressed ...


[camel] 20/44: [CAMEL-12818] Remove unused RouteNode interface and implementations

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit dfde5622c482ec1662cfb2d5a3191da1f5f4f373
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Sep 27 16:22:49 2018 +0200

    [CAMEL-12818] Remove unused RouteNode interface and implementations
---
 .../src/main/java/org/apache/camel/RouteNode.java  | 59 -------------
 .../org/apache/camel/impl/AggregateRouteNode.java  | 57 -------------
 .../camel/impl/CamelContextTrackerRegistry.java    | 64 ---------------
 .../org/apache/camel/impl/DefaultRouteNode.java    | 96 ----------------------
 .../org/apache/camel/impl/DoCatchRouteNode.java    | 60 --------------
 .../org/apache/camel/impl/DoFinallyRouteNode.java  | 54 ------------
 .../apache/camel/impl/OnCompletionRouteNode.java   | 54 ------------
 .../apache/camel/impl/OnExceptionRouteNode.java    | 60 --------------
 8 files changed, 504 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/RouteNode.java b/camel-core/src/main/java/org/apache/camel/RouteNode.java
deleted file mode 100644
index f274e83..0000000
--- a/camel-core/src/main/java/org/apache/camel/RouteNode.java
+++ /dev/null
@@ -1,59 +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;
-
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * Represents a model of a node in the runtime route path.
- *
- * @version 
- */
-public interface RouteNode {
-
-    /**
-     * Gets the actual processor this node represents.
-     *
-     * @return the processor, can be <tt>null</tt> in special cases such as an intercepted node
-     */
-    Processor getProcessor();
-
-    /**
-     * Gets the model definition that represents this node
-     *
-     * @return the definition, is never <tt>null</tt>
-     */
-    ProcessorDefinition<?> getProcessorDefinition();
-
-    /**
-     * Gets a label about this node to be used for tracing or tooling etc.
-     *
-     * @param exchange the current exchange
-     * @return  a label for this node
-     */
-    String getLabel(Exchange exchange);
-
-    /**
-     * Whether this node is abstract (no real processor under the cover).
-     * <p/>
-     * Some nodes that represent intermediate steps are abstract, for instance with
-     * onException, onCompletion or intercept
-     *
-     * @return whether this node is abstract or not
-     */
-    boolean isAbstract();
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/AggregateRouteNode.java b/camel-core/src/main/java/org/apache/camel/impl/AggregateRouteNode.java
deleted file mode 100644
index ab854d5..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/AggregateRouteNode.java
+++ /dev/null
@@ -1,57 +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.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.AggregateDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * @version 
- */
-public class AggregateRouteNode implements RouteNode {
-
-    private AggregateDefinition aggregateDefinition;
-
-    public AggregateRouteNode(AggregateDefinition aggregateDefinition) {
-        this.aggregateDefinition = aggregateDefinition;
-    }
-
-    public Processor getProcessor() {
-        return null;
-    }
-
-    public ProcessorDefinition<?> getProcessorDefinition() {
-        return null;
-    }
-
-    public String getLabel(Exchange exchange) {
-        String expressionString = (aggregateDefinition.getExpression() != null) ? aggregateDefinition.getExpression().getLabel() : "";
-        return "aggregate[" + expressionString + "]";
-    }
-
-    public boolean isAbstract() {
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        return "AggregateRouteNode";
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java
deleted file mode 100644
index fc044ad..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/CamelContextTrackerRegistry.java
+++ /dev/null
@@ -1,64 +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.LinkedHashSet;
-import java.util.Set;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.CamelContextTracker;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A registry for {@link CamelContextTracker}.
- */
-public final class CamelContextTrackerRegistry {
-
-    /**
-     * The registry singleton
-     */
-    public static final CamelContextTrackerRegistry INSTANCE = new CamelContextTrackerRegistry();
-
-    private static final Logger LOG = LoggerFactory.getLogger(CamelContextTrackerRegistry.class);
-
-    private final Set<CamelContextTracker> trackers = new LinkedHashSet<>();
-
-    private CamelContextTrackerRegistry() {
-        // hide constructor
-    }
-
-    public synchronized void addTracker(CamelContextTracker tracker) {
-        trackers.add(tracker);
-    }
-
-    public synchronized void removeTracker(CamelContextTracker tracker) {
-        trackers.remove(tracker);
-    }
-
-    synchronized void contextCreated(CamelContext camelContext) {
-        for (CamelContextTracker tracker : trackers) {
-            try {
-                if (tracker.accept(camelContext)) {
-                    tracker.contextCreated(camelContext);
-                }
-            } catch (Exception e) {
-                LOG.warn("Error calling CamelContext tracker. This exception is ignored.", e);
-            }
-        }
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java
deleted file mode 100644
index 247d9b3..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteNode.java
+++ /dev/null
@@ -1,96 +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.DelegateProcessor;
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteNode;
-import org.apache.camel.Traceable;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * A default implementation of the {@link org.apache.camel.RouteNode}
- *
- * @version 
- */
-public class DefaultRouteNode implements RouteNode {
-
-    private Expression expression;
-    private Processor processor;
-    private ProcessorDefinition<?> processorDefinition;
-
-    public DefaultRouteNode(ProcessorDefinition<?> processorDefinition, Processor processor) {
-        this.processor = processor;
-        this.processorDefinition = processorDefinition;
-    }
-
-    public DefaultRouteNode(ProcessorDefinition<?> processorDefinition, Expression expression) {
-        this.processorDefinition = processorDefinition;
-        this.expression = expression;
-    }
-
-    public Processor getProcessor() {
-        return processor;
-    }
-
-    public ProcessorDefinition<?> getProcessorDefinition() {
-        return processorDefinition;
-    }
-
-    public String getLabel(Exchange exchange) {
-        if (expression != null) {
-            return expression.evaluate(exchange, String.class);
-        }
-
-        String label = getTraceLabel(processor);
-        if (label == null) {
-            // no label then default to use the definition label
-            label = processorDefinition.getLabel();
-        }
-        return label;
-    }
-
-    @SuppressWarnings("deprecation")
-    private String getTraceLabel(Processor target) {
-        if (target == null) {
-            return null;
-        }
-
-        if (target instanceof Traceable) {
-            Traceable trace = (Traceable) target;
-            return trace.getTraceLabel();
-        }
-
-        // if we are a delegate then drill down
-        if (target instanceof DelegateProcessor) {
-            return getTraceLabel(((DelegateProcessor) target).getProcessor());
-        }
-
-        return null;
-    }
-
-    public boolean isAbstract() {
-        return processor == null;
-    }
-
-    @Override
-    public String toString() {
-        return "RouteNode[" + processorDefinition + "]";
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DoCatchRouteNode.java b/camel-core/src/main/java/org/apache/camel/impl/DoCatchRouteNode.java
deleted file mode 100644
index 1de6b80..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DoCatchRouteNode.java
+++ /dev/null
@@ -1,60 +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.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * {@link org.apache.camel.RouteNode} representing do catch.
- *
- * @version 
- */
-public class DoCatchRouteNode implements RouteNode {
-
-    public DoCatchRouteNode() {
-    }
-
-    public Processor getProcessor() {
-        return null;
-    }
-
-    public ProcessorDefinition<?> getProcessorDefinition() {
-        return null;
-    }
-
-    public String getLabel(Exchange exchange) {
-        if (exchange.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
-            return "doCatch[" + exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class).getClass().getSimpleName() + "]";
-        } else if (exchange.getException() != null) {
-            return "doCatch[" + exchange.getException().getClass().getSimpleName() + "]";
-        } else {
-            return "doCatch[]";
-        }
-    }
-
-    public boolean isAbstract() {
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        return "DoCatchRouteNode";
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DoFinallyRouteNode.java b/camel-core/src/main/java/org/apache/camel/impl/DoFinallyRouteNode.java
deleted file mode 100644
index d1cad28..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/DoFinallyRouteNode.java
+++ /dev/null
@@ -1,54 +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.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * {@link org.apache.camel.RouteNode} representing do finally.
- *
- * @version 
- */
-public class DoFinallyRouteNode implements RouteNode {
-
-    public DoFinallyRouteNode() {
-    }
-
-    public Processor getProcessor() {
-        return null;
-    }
-
-    public ProcessorDefinition<?> getProcessorDefinition() {
-        return null;
-    }
-
-    public String getLabel(Exchange exchange) {
-        return "doFinally";
-    }
-
-    public boolean isAbstract() {
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        return "DoFinallyRouteNode";
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/impl/OnCompletionRouteNode.java b/camel-core/src/main/java/org/apache/camel/impl/OnCompletionRouteNode.java
deleted file mode 100644
index 1b24cc9..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/OnCompletionRouteNode.java
+++ /dev/null
@@ -1,54 +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.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * {@link org.apache.camel.RouteNode} representing onCompletion.
- *
- * @version 
- */
-public class OnCompletionRouteNode implements RouteNode {
-
-    public OnCompletionRouteNode() {
-    }
-
-    public Processor getProcessor() {
-        return null;
-    }
-
-    public ProcessorDefinition<?> getProcessorDefinition() {
-        return null;
-    }
-
-    public String getLabel(Exchange exchange) {
-        return "OnCompletion[" + exchange.getProperty(Exchange.CORRELATION_ID) + "]";
-    }
-
-    public boolean isAbstract() {
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        return "OnCompletionRouteNode";
-    }
-}
\ No newline at end of file
diff --git a/camel-core/src/main/java/org/apache/camel/impl/OnExceptionRouteNode.java b/camel-core/src/main/java/org/apache/camel/impl/OnExceptionRouteNode.java
deleted file mode 100644
index 85c058a..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/OnExceptionRouteNode.java
+++ /dev/null
@@ -1,60 +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.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.RouteNode;
-import org.apache.camel.model.ProcessorDefinition;
-
-/**
- * {@link org.apache.camel.RouteNode} representing onException.
- *
- * @version
- */
-public class OnExceptionRouteNode implements RouteNode {
-
-    public OnExceptionRouteNode() {
-    }
-
-    public Processor getProcessor() {
-        return null;
-    }
-
-    public ProcessorDefinition<?> getProcessorDefinition() {
-        return null;
-    }
-
-    public String getLabel(Exchange exchange) {
-        if (exchange.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
-            return "OnException[" + exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class).getClass().getSimpleName() + "]";
-        } else if (exchange.getException() != null) {
-            return "OnException[" + exchange.getException().getClass().getSimpleName() + "]";
-        } else {
-            return "OnException[]";
-        }
-    }
-
-    public boolean isAbstract() {
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        return "OnExceptionRouteNode";
-    }
-}
\ No newline at end of file


[camel] 39/44: Move o.a.c.management.event to o.a.c.impl.event

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e6b88b57aad0ab2030607d2710080d0dcb10c4d5
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 09:07:12 2018 +0200

    Move o.a.c.management.event to o.a.c.impl.event
---
 .../event/AbstractContextEvent.java                |  2 +-
 .../event/AbstractExchangeEvent.java               |  2 +-
 .../event/AbstractRouteEvent.java                  |  2 +-
 .../event/CamelContextResumeFailureEvent.java      |  2 +-
 .../event/CamelContextResumedEvent.java            |  2 +-
 .../event/CamelContextResumingEvent.java           |  2 +-
 .../event/CamelContextStartedEvent.java            |  2 +-
 .../event/CamelContextStartingEvent.java           |  2 +-
 .../event/CamelContextStartupFailureEvent.java     |  2 +-
 .../event/CamelContextStopFailureEvent.java        |  2 +-
 .../event/CamelContextStoppedEvent.java            |  2 +-
 .../event/CamelContextStoppingEvent.java           |  2 +-
 .../event/CamelContextSuspendedEvent.java          |  2 +-
 .../event/CamelContextSuspendingEvent.java         |  2 +-
 .../event/DefaultEventFactory.java                 |  2 +-
 .../event/ExchangeCompletedEvent.java              |  2 +-
 .../event/ExchangeCreatedEvent.java                |  2 +-
 .../event/ExchangeFailedEvent.java                 |  2 +-
 .../event/ExchangeFailureHandledEvent.java         |  2 +-
 .../event/ExchangeFailureHandlingEvent.java        |  2 +-
 .../event/ExchangeRedeliveryEvent.java             |  2 +-
 .../event/ExchangeSendingEvent.java                |  4 +--
 .../event/ExchangeSentEvent.java                   |  2 +-
 .../event/RouteAddedEvent.java                     |  2 +-
 .../event/RouteRemovedEvent.java                   |  2 +-
 .../event/RouteStartedEvent.java                   |  2 +-
 .../event/RouteStoppedEvent.java                   |  2 +-
 .../event/ServiceStartupFailureEvent.java          |  2 +-
 .../event/ServiceStopFailureEvent.java             |  2 +-
 .../camel/{management => impl}/event/package.html  |  0
 .../management/DefaultManagementStrategy.java      |  2 +-
 .../event}/EventNotifierEventsTest.java            | 37 +++++++++++-----------
 .../event}/EventNotifierExchangeCompletedTest.java |  4 +--
 .../EventNotifierExchangeSentParallelTest.java     |  3 +-
 .../event}/EventNotifierExchangeSentTest.java      |  6 ++--
 .../EventNotifierFailureHandledEventsTest.java     | 23 +++++++-------
 .../event}/EventNotifierRedeliveryEventsTest.java  | 16 +++++-----
 ...ventNotifierServiceStoppingFailedEventTest.java | 13 ++++----
 .../event}/MultipleEventNotifierEventsTest.java    | 29 ++++++++---------
 .../camel/processor/PipelineStepWithEventTest.java |  2 +-
 40 files changed, 94 insertions(+), 101 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/AbstractContextEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/AbstractContextEvent.java
index bda88b2..116c0c4 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractContextEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/AbstractContextEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import java.util.EventObject;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/AbstractExchangeEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/AbstractExchangeEvent.java
index cba4d30..7be1685 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractExchangeEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/AbstractExchangeEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import java.util.EventObject;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/AbstractRouteEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/AbstractRouteEvent.java
index b003264..9d735ec 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/AbstractRouteEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/AbstractRouteEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import java.util.EventObject;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java
index f5c8e1b..a33bb66 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumeFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumeFailureEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumedEvent.java
index ad736a7..5fb0cef 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumingEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumingEvent.java
index 05c2793..337e8d9 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextResumingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextResumingEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartedEvent.java
index 865a61d..c4763bd 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartingEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartingEvent.java
index 6422da7..93f5ca5 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartingEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java
index 4392fa1..7ccaa6e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStartupFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStartupFailureEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java
index ed53ada..1f63726 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStopFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStopFailureEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppedEvent.java
index 9ff2c2f..f7346ef 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppingEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppingEvent.java
index 9a38c35..a959c67 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextStoppingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextStoppingEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendedEvent.java
index 697df31..67af77f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendingEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendingEvent.java
index 26ecafb..d71b4d7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/CamelContextSuspendingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/CamelContextSuspendingEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java b/camel-core/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java
index 53aa7ac..8e48b5e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/DefaultEventFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/DefaultEventFactory.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.DelegateProcessor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java
index 1b1ad57..d9f2a4c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCompletedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCompletedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java
index 1b7f1d5..5268c39 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeCreatedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeCreatedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java
index 0dcf2cb..1937d8e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java
similarity index 98%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java
index 7e683f0..2192322 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandledEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java
similarity index 98%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java
index 1c2228e..56dd2a7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureHandlingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandlingEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java
index 53910e9..6e420bc 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeRedeliveryEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java
index 23d9702..83a2992 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSendingEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSendingEvent.java
@@ -14,9 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
-
-import java.util.EventObject;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java
index 3805eb6..94dbfb7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ExchangeSentEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java
index df5adf8..aa6565f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteAddedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/RouteAddedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Route;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java
index d8ca90c..6de9095 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteRemovedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/RouteRemovedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Route;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java
index 758d884..32ba822 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteStartedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/RouteStartedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Route;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java
index ddb60fd..7baa342 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/RouteStoppedEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/RouteStoppedEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.Route;
 import org.apache.camel.spi.CamelEvent;
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java
index c3b3256..e60921e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStartupFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ServiceStartupFailureEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import java.util.EventObject;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java b/camel-core/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
rename to camel-core/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java
index 1486a54..fe68b4c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/event/ServiceStopFailureEvent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/event/ServiceStopFailureEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management.event;
+package org.apache.camel.impl.event;
 
 import java.util.EventObject;
 
diff --git a/camel-core/src/main/java/org/apache/camel/management/event/package.html b/camel-core/src/main/java/org/apache/camel/impl/event/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/management/event/package.html
rename to camel-core/src/main/java/org/apache/camel/impl/event/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
index 262822e..088af57 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
@@ -22,7 +22,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.NamedNode;
-import org.apache.camel.management.event.DefaultEventFactory;
+import org.apache.camel.impl.event.DefaultEventFactory;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.EventFactory;
 import org.apache.camel.spi.EventNotifier;
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
similarity index 85%
rename from camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
index cd2dada..9bce692 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
@@ -14,32 +14,31 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.CamelContextResumedEvent;
-import org.apache.camel.management.event.CamelContextResumingEvent;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStartingEvent;
-import org.apache.camel.management.event.CamelContextStoppedEvent;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
-import org.apache.camel.management.event.CamelContextSuspendedEvent;
-import org.apache.camel.management.event.CamelContextSuspendingEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.management.event.RouteAddedEvent;
-import org.apache.camel.management.event.RouteRemovedEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
-import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.impl.event.CamelContextResumedEvent;
+import org.apache.camel.impl.event.CamelContextResumingEvent;
+import org.apache.camel.impl.event.CamelContextStartedEvent;
+import org.apache.camel.impl.event.CamelContextStartingEvent;
+import org.apache.camel.impl.event.CamelContextStoppedEvent;
+import org.apache.camel.impl.event.CamelContextStoppingEvent;
+import org.apache.camel.impl.event.CamelContextSuspendedEvent;
+import org.apache.camel.impl.event.CamelContextSuspendingEvent;
+import org.apache.camel.impl.event.ExchangeCompletedEvent;
+import org.apache.camel.impl.event.ExchangeCreatedEvent;
+import org.apache.camel.impl.event.ExchangeFailedEvent;
+import org.apache.camel.impl.event.ExchangeSendingEvent;
+import org.apache.camel.impl.event.ExchangeSentEvent;
+import org.apache.camel.impl.event.RouteAddedEvent;
+import org.apache.camel.impl.event.RouteRemovedEvent;
+import org.apache.camel.impl.event.RouteStartedEvent;
+import org.apache.camel.impl.event.RouteStoppedEvent;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
similarity index 97%
rename from camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
index 120faa0..bfb3d34 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeCompletedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -24,7 +24,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
+import org.apache.camel.impl.event.ExchangeCompletedEvent;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentParallelTest.java
similarity index 96%
rename from camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentParallelTest.java
index aa32660..9c114dd 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentParallelTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentParallelTest.java
@@ -14,10 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.event.ExchangeSendingEvent;
 import org.apache.camel.spi.CamelEvent;
 import org.junit.Test;
 
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
similarity index 98%
rename from camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
index bdd12ef..24962ac 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -24,8 +24,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.impl.event.ExchangeSendingEvent;
+import org.apache.camel.impl.event.ExchangeSentEvent;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
similarity index 92%
rename from camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
index 7e041d9..a30e4d3 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
@@ -14,25 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStartingEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailureHandledEvent;
-import org.apache.camel.management.event.ExchangeFailureHandlingEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.management.event.RouteAddedEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
+import org.apache.camel.impl.event.CamelContextStartedEvent;
+import org.apache.camel.impl.event.CamelContextStartingEvent;
+import org.apache.camel.impl.event.ExchangeCompletedEvent;
+import org.apache.camel.impl.event.ExchangeCreatedEvent;
+import org.apache.camel.impl.event.ExchangeFailureHandledEvent;
+import org.apache.camel.impl.event.ExchangeFailureHandlingEvent;
+import org.apache.camel.impl.event.ExchangeSendingEvent;
+import org.apache.camel.impl.event.ExchangeSentEvent;
+import org.apache.camel.impl.event.RouteAddedEvent;
+import org.apache.camel.impl.event.RouteStartedEvent;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
similarity index 91%
rename from camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
index 18670e8..bd0754e 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -23,13 +23,13 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailureHandledEvent;
-import org.apache.camel.management.event.ExchangeFailureHandlingEvent;
-import org.apache.camel.management.event.ExchangeRedeliveryEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.impl.event.ExchangeCompletedEvent;
+import org.apache.camel.impl.event.ExchangeCreatedEvent;
+import org.apache.camel.impl.event.ExchangeFailureHandledEvent;
+import org.apache.camel.impl.event.ExchangeFailureHandlingEvent;
+import org.apache.camel.impl.event.ExchangeRedeliveryEvent;
+import org.apache.camel.impl.event.ExchangeSendingEvent;
+import org.apache.camel.impl.event.ExchangeSentEvent;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
diff --git a/camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
similarity index 90%
rename from camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
index 88e59ac..5d3260e 100644
--- a/camel-core/src/test/java/org/apache/camel/management/EventNotifierServiceStoppingFailedEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
@@ -14,19 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Service;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStartingEvent;
-import org.apache.camel.management.event.CamelContextStoppedEvent;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
-import org.apache.camel.management.event.ServiceStopFailureEvent;
+import org.apache.camel.impl.event.CamelContextStartedEvent;
+import org.apache.camel.impl.event.CamelContextStartingEvent;
+import org.apache.camel.impl.event.CamelContextStoppedEvent;
+import org.apache.camel.impl.event.CamelContextStoppingEvent;
+import org.apache.camel.impl.event.ServiceStopFailureEvent;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
diff --git a/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java b/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
similarity index 89%
rename from camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
rename to camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
index 199f0b7..ada378c 100644
--- a/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
@@ -14,28 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.management;
+package org.apache.camel.impl.event;
 import java.util.ArrayList;
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStartingEvent;
-import org.apache.camel.management.event.CamelContextStoppedEvent;
-import org.apache.camel.management.event.CamelContextStoppingEvent;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailedEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.management.event.RouteAddedEvent;
-import org.apache.camel.management.event.RouteRemovedEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
-import org.apache.camel.management.event.RouteStoppedEvent;
+import org.apache.camel.impl.event.CamelContextStartedEvent;
+import org.apache.camel.impl.event.CamelContextStartingEvent;
+import org.apache.camel.impl.event.CamelContextStoppedEvent;
+import org.apache.camel.impl.event.CamelContextStoppingEvent;
+import org.apache.camel.impl.event.ExchangeCompletedEvent;
+import org.apache.camel.impl.event.ExchangeCreatedEvent;
+import org.apache.camel.impl.event.ExchangeFailedEvent;
+import org.apache.camel.impl.event.ExchangeSendingEvent;
+import org.apache.camel.impl.event.ExchangeSentEvent;
+import org.apache.camel.impl.event.RouteAddedEvent;
+import org.apache.camel.impl.event.RouteRemovedEvent;
+import org.apache.camel.impl.event.RouteStartedEvent;
+import org.apache.camel.impl.event.RouteStoppedEvent;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.Before;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java b/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
index b2f6247..644a774 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/PipelineStepWithEventTest.java
@@ -27,7 +27,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.event.AbstractExchangeEvent;
+import org.apache.camel.impl.event.AbstractExchangeEvent;
 import org.apache.camel.model.PipelineDefinition;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.support.ServiceSupport;


[camel] 01/44: [CAMEL-12814] Remove deprecated twitter component

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 57a7146265cc96ffb8c26c793ad914528b93ed8d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Oct 12 10:56:37 2018 +0200

    [CAMEL-12814] Remove deprecated twitter component
    
    # Conflicts:
    #	components/readme.adoc
---
 .../src/main/docs/twitter-component.adoc           | 335 ---------------------
 .../component/twitter/AbstractTwitterEndpoint.java |   7 +-
 .../twitter/CommonPropertiesTwitterEndpoint.java   |  34 ---
 .../camel/component/twitter/TwitterComponent.java  |  73 -----
 .../camel/component/twitter/TwitterEndpoint.java   |   3 +-
 .../component/twitter/TwitterEndpointDirect.java   | 193 ------------
 .../component/twitter/TwitterEndpointEvent.java    | 101 -------
 .../component/twitter/TwitterEndpointPolling.java  | 198 ------------
 .../camel/component/twitter/TwitterHelper.java     |  94 ------
 .../twitter/consumer/TwitterConsumerDirect.java    |  49 ---
 .../twitter/consumer/TwitterConsumerEvent.java     |  70 -----
 .../twitter/consumer/TwitterConsumerPolling.java   |  77 -----
 .../services/org/apache/camel/component/twitter    |  18 --
 .../SearchDirectCustomComponentTest.java           |  48 ---
 components/readme.adoc                             |   2 +-
 .../TwitterComponentAutoConfiguration.java         | 128 --------
 .../springboot/TwitterComponentConfiguration.java  | 151 ----------
 17 files changed, 6 insertions(+), 1575 deletions(-)

diff --git a/components/camel-twitter/src/main/docs/twitter-component.adoc b/components/camel-twitter/src/main/docs/twitter-component.adoc
deleted file mode 100644
index d875dfd..0000000
--- a/components/camel-twitter/src/main/docs/twitter-component.adoc
+++ /dev/null
@@ -1,335 +0,0 @@
-[[twitter-component]]
-== Twitter Component (deprecated)
-
-*Available as of Camel version 2.10*
-
-[IMPORTANT]
-====================================================================================
-The composite twitter component has been deprecated. Use individual component for directmessage, search, streaming and timeline.
-
-* <<twitter-component,Twitter Components>>
-  ** <<twitter-directmessage-component,Twitter Direct Message>>
-  ** <<twitter-search-component,Twitter Search>>
-  ** <<twitter-streaming-component,Twitter Streaming>>
-  ** <<twitter-timeline-component,Twitter Timeline>>
-====================================================================================
-
-The Twitter component enables the most useful features of the Twitter
-API by encapsulating http://twitter4j.org/[Twitter4J]. It allows direct,
-polling, or event-driven consumption of timelines, users, trends, and
-direct messages. Also, it supports producing messages as status updates
-or direct messages.
-
-Twitter now requires the use of OAuth for all client application
-authentication. In order to use camel-twitter with your account, you'll
-need to create a new application within Twitter at
-https://dev.twitter.com/apps/new and grant the application access to
-your account. Finally, generate your access token and secret.
-
-Maven users will need to add the following dependency to their pom.xml
-for this component:
-
-[source,xml]
-----
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-twitter</artifactId>
-    <version>${camel-version}</version>
-</dependency>
-----
-
-### URI format
-
-[source]
-----
-twitter://endpoint[?options]
-----
-
-### Twitter component
-
-The twitter component can be configured with the Twitter account
-settings which is mandatory to configure before using.
-
-
-
-
-
-// component options: START
-The Twitter component supports 9 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *accessToken* (security) | The access token |  | String
-| *accessTokenSecret* (security) | The access token secret |  | String
-| *consumerKey* (security) | The consumer key |  | String
-| *consumerSecret* (security) | The consumer secret |  | String
-| *httpProxyHost* (proxy) | The http proxy host which can be used for the camel-twitter. |  | String
-| *httpProxyUser* (proxy) | The http proxy user which can be used for the camel-twitter. |  | String
-| *httpProxyPassword* (proxy) | The http proxy password which can be used for the camel-twitter. |  | String
-| *httpProxyPort* (proxy) | The http proxy port which can be used for the camel-twitter. |  | int
-| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
-|===
-// component options: END
-
-
-
-
-
-You can also configure these options directly in the endpoint.
-
-### Consumer endpoints
-
-Rather than the endpoints returning a List through one single route
-exchange, camel-twitter creates one route exchange per returned object.
-As an example, if "timeline/home" results in five statuses, the route
-will be executed five times (one for each Status).
-
-[width="100%",cols="10%,10%,10%,70%",options="header",]
-|=======================================================================
-|Endpoint |Context |Body Type |Notice
-|directmessage |direct, polling |twitter4j.DirectMessage | 
-
-|search |direct, polling |twitter4j.Status | 
-
-|streaming/filter |event, polling |twitter4j.Status | 
-
-|streaming/sample |event, polling |twitter4j.Status | 
-
-|streaming/user |event, polling |twitter4j.Status |**Camel 2.16**: To
-receive tweets from protected users and accounts.
-
-|timeline/home |direct, polling |twitter4j.Status | 
-
-|timeline/mentions |direct, polling |twitter4j.Status | 
-
-|[line-through]*timeline/public* |[line-through]*direct, polling*
-|[line-through]*twitter4j.Status* |[line-through]*@deprecated. Use
-timeline/home or direct/home instead. Removed from *Camel 2.11*
-onwards.*
-
-|timeline/retweetsofme |direct, polling |twitter4j.Status | 
-
-|timeline/user |direct, polling |twitter4j.Status | 
-
-|[line-through]*trends/daily* |[line-through]**Camel 2.10.1:* direct,
-polling* |[line-through]*twitter4j.Status* |[line-through]*@deprecated.
-Removed from Camel 2.11 onwards.*
-
-|[line-through]*trends/weekly* |[line-through]**Camel 2.10.1:* direct,
-polling* |[line-through]*twitter4j.Status* |[line-through]*@deprecated.
-Removed from Camel 2.11 onwards.*
-|=======================================================================
-
-### Producer endpoints
-
-[width="100%",cols="20%,80%",options="header",]
-|==============================
-|Endpoint |Body Type
-|directmessage |String
-|search |List<twitter4j.Status>
-|timeline/user |String
-|==============================
-
-### URI options
-
-
-
-
-
-
-
-// endpoint options: START
-The Twitter endpoint is configured using URI syntax:
-
-----
-twitter:kind
-----
-
-with the following path and query parameters:
-
-==== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *kind* | *Required* The kind of endpoint |  | String
-|===
-
-
-==== Query Parameters (44 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *user* (common) | Username, used for user timeline consumption, direct message production, etc. |  | String
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
-| *type* (consumer) | Endpoint type to use. Only streaming supports event type. | polling | EndpointType
-| *distanceMetric* (consumer) | Used by the non-stream geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | km | String
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
-| *extendedMode* (consumer) | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | boolean
-| *latitude* (consumer) | Used by the non-stream geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. |  | Double
-| *locations* (consumer) | Bounding boxes, created by pairs of lat/lons. Can be used for streaming/filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. |  | String
-| *longitude* (consumer) | Used by the non-stream geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. |  | Double
-| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
-| *radius* (consumer) | Used by the non-stream geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. |  | Double
-| *twitterStream* (consumer) | To use a custom instance of TwitterStream |  | TwitterStream
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *count* (filter) | Limiting number of results per page. |  | Integer
-| *filterOld* (filter) | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | boolean
-| *keywords* (filter) | Can be used for search and streaming/filter. Multiple values can be separated with comma. |  | String
-| *lang* (filter) | The lang string ISO_639-1 which will be used for searching |  | String
-| *numberOfPages* (filter) | The number of pages result which you want camel-twitter to consume. | 1 | Integer
-| *sinceId* (filter) | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1 | long
-| *userIds* (filter) | To filter by user ids for streaming/filter. Multiple values can be separated by comma. |  | String
-| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
-| *delay* (scheduler) | Milliseconds before the next poll. | 30000 | long
-| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
-| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
-| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
-| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz2 component | none | ScheduledPollConsumer Scheduler
-| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz2, Spring based scheduler. |  | Map
-| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
-| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
-| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
-| *sortById* (sort) | Sorts by id, so the oldest are first, and newest last. | true | boolean
-| *httpProxyHost* (proxy) | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | String
-| *httpProxyPassword* (proxy) | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | String
-| *httpProxyPort* (proxy) | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | Integer
-| *httpProxyUser* (proxy) | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. |  | String
-| *accessToken* (security) | The access token. Can also be configured on the TwitterComponent level instead. |  | String
-| *accessTokenSecret* (security) | The access secret. Can also be configured on the TwitterComponent level instead. |  | String
-| *consumerKey* (security) | The consumer key. Can also be configured on the TwitterComponent level instead. |  | String
-| *consumerSecret* (security) | The consumer secret. Can also be configured on the TwitterComponent level instead. |  | String
-|===
-// endpoint options: END
-// spring-boot-auto-configure options: START
-=== Spring Boot Auto-Configuration
-
-
-The component supports 10 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *camel.component.twitter.access-token* | The access token |  | String
-| *camel.component.twitter.access-token-secret* | The access token secret |  | String
-| *camel.component.twitter.consumer-key* | The consumer key |  | String
-| *camel.component.twitter.consumer-secret* | The consumer secret |  | String
-| *camel.component.twitter.enabled* | Enable twitter component | true | Boolean
-| *camel.component.twitter.http-proxy-host* | The http proxy host which can be used for the camel-twitter. |  | String
-| *camel.component.twitter.http-proxy-password* | The http proxy password which can be used for the camel-twitter. |  | String
-| *camel.component.twitter.http-proxy-port* | The http proxy port which can be used for the camel-twitter. |  | Integer
-| *camel.component.twitter.http-proxy-user* | The http proxy user which can be used for the camel-twitter. |  | String
-| *camel.component.twitter.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
-|===
-// spring-boot-auto-configure options: END
-
-
-
-
-
-
-
-
-### Message headers
-
-[width="100%",cols="20%,80%",options="header",]
-|=======================================================================
-|Name |Description
-|`CamelTwitterKeywords` |This header is used by the search producer to
-change the search key words dynamically.
-
-|`CamelTwitterSearchLanguage` |*Camel 2.11.0:* This header can override
-the option of `lang` which set the search language for the search
-endpoint dynamically
-
-|`CamelTwitterCount` |*Camel 2.11.0* This header can override the option
-of `count` which sets the max twitters that will be returned.
-
-|`CamelTwitterNumberOfPages` |*Camel 2.11.0* This header can override
-the option of `numberOfPages` which sets how many pages we want to
-twitter returns.
-|=======================================================================
-
-### Message body
-
-All message bodies utilize objects provided by the Twitter4J API.
-
-### Use cases
-
-NOTE: *API Rate Limits:* Twitter REST APIs encapsulated by http://twitter4j.org/[Twitter4J] are
-subjected to https://dev.twitter.com/rest/public/rate-limiting[API Rate
-Limiting]. You can find the per method limits in the
-https://dev.twitter.com/rest/public/rate-limits[API Rate Limits]
-documentation. Note that endpoints/resources not listed in that page are
-default to 15 requests per allotted user per window.
-
-#### To create a status update within your Twitter profile, send this producer a String body:
-
-[source,java]
-----
-from("direct:foo")
-  .to("twitter://timeline/user?consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]);
-----
-
-#### To poll, every 60 sec., all statuses on your home timeline:
-
-[source,java]
-----
-from("twitter://timeline/home?type=polling&delay=60&consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]")
-  .to("bean:blah");
-----
-
-#### To search for all statuses with the keyword 'camel' only once:
-
-[source,java]
-----
-from("twitter://search?type=polling&keywords=camel&consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]")
-  .to("bean:blah");
-----
-
-#### Searching using a producer with static keywords:
-
-[source,java]
-----
-from("direct:foo")
-  .to("twitter://search?keywords=camel&consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]");
-----
-
-#### Searching using a producer with dynamic keywords from header:
-
-In the `bar` header we have the keywords we want to search, so we can
-assign this value to the `CamelTwitterKeywords` header:
-
-[source,java]
-----
-from("direct:foo")
-  .setHeader("CamelTwitterKeywords", header("bar"))
-  .to("twitter://search?consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]");
-----
-
-### Example
-
-See also the link:twitter-websocket-example.html[Twitter Websocket
-Example].
-
-### See Also
-
-* Configuring Camel
-* Component
-* Endpoint
-* Getting Started
-
-* Twitter Websocket Example
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterEndpoint.java
index 142478f..8486d43 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterEndpoint.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.twitter;
 
 import org.apache.camel.Consumer;
 import org.apache.camel.api.management.ManagedAttribute;
-import org.apache.camel.component.twitter.consumer.TwitterConsumerPolling;
 import org.apache.camel.component.twitter.data.EndpointType;
 import org.apache.camel.impl.DefaultPollingEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -28,9 +27,11 @@ import org.apache.camel.spi.UriParam;
  */
 public abstract class AbstractTwitterEndpoint extends DefaultPollingEndpoint implements TwitterEndpoint {
 
-    @UriParam(optionalPrefix = "consumer.", defaultValue = "" + TwitterConsumerPolling.DEFAULT_CONSUMER_DELAY, label = "consumer,scheduler",
+    public static final long DEFAULT_CONSUMER_DELAY = 30 * 1000L;
+
+    @UriParam(optionalPrefix = "consumer.", defaultValue = "" + DEFAULT_CONSUMER_DELAY, label = "consumer,scheduler",
         description = "Milliseconds before the next poll.")
-    private long delay = TwitterConsumerPolling.DEFAULT_CONSUMER_DELAY;
+    private long delay = DEFAULT_CONSUMER_DELAY;
 
     @UriParam
     private TwitterConfiguration properties;
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/CommonPropertiesTwitterEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/CommonPropertiesTwitterEndpoint.java
deleted file mode 100644
index 4772f5b..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/CommonPropertiesTwitterEndpoint.java
+++ /dev/null
@@ -1,34 +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.component.twitter;
-
-/**
- * @deprecated This has been introduced to just keep deprecated endpoints working as is.
- * Remove this once Endpoint{Direct,Event,Polling} is removed.
- */
-@Deprecated
-public interface CommonPropertiesTwitterEndpoint extends TwitterEndpoint {
-
-    String getKeywords();
-
-    void setKeywords(String keywords);
-
-    String getUser();
-    
-    void setUser(String user);
-
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java
deleted file mode 100644
index 92ea505..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.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.component.twitter;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.Metadata;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Twitter component
- * 
- * @deprecated Use
- * {@link org.apache.camel.component.twitter.directmessage.TwitterDirectMessageComponent},
- * {@link org.apache.camel.component.twitter.search.TwitterSearchComponent},
- * {@link org.apache.camel.component.twitter.streaming.TwitterStreamingComponent} or
- * {@link org.apache.camel.component.twitter.timeline.TwitterTimelineComponent}
- * instead.
- */
-@Deprecated
-@Metadata(label = "verifiers", enums = "parameters,connectivity")
-public class TwitterComponent extends AbstractTwitterComponent {
-
-    private static final Logger LOG = LoggerFactory.getLogger(TwitterComponent.class);
-
-    public TwitterComponent() {
-        super("twitter");
-    }
-
-    public TwitterComponent(CamelContext context) {
-        super(context, "twitter");
-    }
-
-    @Override
-    protected Endpoint doCreateEndpoint(TwitterConfiguration properties, String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        String[] tokens = remaining.split("/");
-        LOG.warn("The scheme syntax 'twitter:{}' has been deprecated. Use 'twitter-{}' instead.", tokens[0], tokens[0]);
-
-        CommonPropertiesTwitterEndpoint endpoint;
-
-        switch (properties.getType()) {
-        case POLLING:
-            endpoint = new TwitterEndpointPolling(uri, remaining, this, properties);
-            break;
-        case EVENT:
-            endpoint = new TwitterEndpointEvent(uri,  remaining, this, properties);
-            break;
-        default:
-            endpoint = new TwitterEndpointDirect(uri, remaining, this, properties);
-            break;
-        }
-        endpoint.setUser(getAndRemoveParameter(parameters, "user", String.class));
-        endpoint.setKeywords(getAndRemoveParameter(parameters, "keywords", String.class));
-        return endpoint;
-    }
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java
index fbc699d..75e56ab 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java
@@ -20,9 +20,8 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.component.twitter.data.EndpointType;
 
 /**
- * @deprecated Migrate with {@link AbstractTwitterEndpoint} in 3.0
+ *
  */
-@Deprecated
 public interface TwitterEndpoint extends Endpoint {
 
     TwitterConfiguration getProperties();
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java
deleted file mode 100644
index 02b9ec8..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java
+++ /dev/null
@@ -1,193 +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.component.twitter;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.ServiceStatus;
-import org.apache.camel.api.management.ManagedAttribute;
-import org.apache.camel.component.direct.DirectEndpoint;
-import org.apache.camel.component.twitter.consumer.AbstractTwitterConsumerHandler;
-import org.apache.camel.component.twitter.consumer.TwitterConsumerDirect;
-import org.apache.camel.component.twitter.data.EndpointType;
-
-/**
- * Twitter direct endpoint.
- * 
- */
-@Deprecated
-public class TwitterEndpointDirect extends DirectEndpoint implements CommonPropertiesTwitterEndpoint {
-    private final String kind;
-
-    // only TwitterEndpointPolling is annotated
-    private TwitterConfiguration properties;
-
-    private String user;
-
-    private String keywords;
-
-    public TwitterEndpointDirect(String uri, String remaining, TwitterComponent component, TwitterConfiguration properties) {
-        super(uri, component);
-        this.kind = remaining;
-        this.properties = properties;
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        AbstractTwitterConsumerHandler twitter4jConsumer = TwitterHelper.createConsumer(this, getEndpointUri(), kind);
-        TwitterConsumerDirect answer = new TwitterConsumerDirect(this, processor, twitter4jConsumer);
-        configureConsumer(answer);
-        return answer;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return TwitterHelper.createProducer(this, getEndpointUri(), kind);
-    }
-
-    @ManagedAttribute
-    public boolean isSingleton() {
-        return true;
-    }
-
-    public TwitterConfiguration getProperties() {
-        return properties;
-    }
-
-    public void setProperties(TwitterConfiguration properties) {
-        this.properties = properties;
-    }
-
-    @ManagedAttribute(description = "Camel ID")
-    public String getCamelId() {
-        return getCamelContext().getName();
-    }
-
-    @ManagedAttribute(description = "Camel ManagementName")
-    public String getCamelManagementName() {
-        return getCamelContext().getManagementName();
-    }
-
-    @ManagedAttribute(description = "Endpoint Uri", mask = true)
-    @Override
-    public String getEndpointUri() {
-        return super.getEndpointUri();
-    }
-
-    @ManagedAttribute(description = "Service State")
-    public String getState() {
-        ServiceStatus status = this.getStatus();
-        // if no status exists then its stopped
-        if (status == null) {
-            status = ServiceStatus.Stopped;
-        }
-        return status.name();
-    }
-
-    @ManagedAttribute
-    public String getUser() {
-        return user;
-    }
-
-    @ManagedAttribute
-    public void setUser(String user) {
-        this.user = user;
-    }
-
-    @ManagedAttribute
-    public String getKeywords() {
-        return keywords;
-    }
-
-    @ManagedAttribute
-    public void setKeywords(String keywords) {
-        this.keywords = keywords;
-    }
-
-    @ManagedAttribute
-    public String getLocations() {
-        return getProperties().getLocations();
-    }
-
-    @ManagedAttribute
-    public void setLocations(String locations) {
-        getProperties().setLocations(locations);
-    }
-
-    @ManagedAttribute
-    public void setFilterOld(boolean filterOld) {
-        getProperties().setFilterOld(filterOld);
-    }
-
-    @ManagedAttribute
-    public boolean isFilterOld() {
-        return getProperties().isFilterOld();
-    }
-
-    @ManagedAttribute
-    public void setSinceId(long sinceId) {
-        getProperties().setSinceId(sinceId);
-    }
-
-    @ManagedAttribute
-    public long getSinceId() {
-        return getProperties().getSinceId();
-    }
-
-    @ManagedAttribute
-    public void setLang(String lang) {
-        getProperties().setLang(lang);
-    }
-
-    @ManagedAttribute
-    public String getLang() {
-        return getProperties().getLang();
-    }
-
-    @ManagedAttribute
-    public void setCount(Integer count) {
-        getProperties().setCount(count);
-    }
-
-    @ManagedAttribute
-    public Integer getCount() {
-        return getProperties().getCount();
-    }
-
-    @ManagedAttribute
-    public void setNumberOfPages(Integer numberOfPages) {
-        getProperties().setNumberOfPages(numberOfPages);
-    }
-
-    @ManagedAttribute
-    public Integer getNumberOfPages() {
-        return getProperties().getNumberOfPages();
-    }
-
-    @Override
-    public EndpointType getEndpointType() {
-        return EndpointType.DIRECT;
-    }
-
-    @Override
-    public ExchangePattern getExchangePattern() {
-        return ExchangePattern.InOptionalOut;
-    }
-
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointEvent.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointEvent.java
deleted file mode 100644
index b8d8922..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointEvent.java
+++ /dev/null
@@ -1,101 +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.component.twitter;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.twitter.consumer.AbstractTwitterConsumerHandler;
-import org.apache.camel.component.twitter.consumer.TwitterConsumerEvent;
-import org.apache.camel.component.twitter.data.EndpointType;
-import org.apache.camel.impl.DefaultEndpoint;
-
-@Deprecated
-public class TwitterEndpointEvent extends DefaultEndpoint implements CommonPropertiesTwitterEndpoint {
-    private final String kind;
-
-    // only TwitterEndpointPolling is annotated
-    private TwitterConfiguration properties;
-
-    private String user;
-
-    private String keywords;
-
-    public TwitterEndpointEvent(String uri, String remaining, TwitterComponent component, TwitterConfiguration properties) {
-        super(uri, component);
-        this.kind = remaining;
-        this.properties = properties;
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        AbstractTwitterConsumerHandler twitter4jConsumer = TwitterHelper.createConsumer(this, getEndpointUri(), kind);
-        return new TwitterConsumerEvent(this, processor, twitter4jConsumer);
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        throw new UnsupportedOperationException("Producer not supported");
-    }
-
-    public TwitterConfiguration getProperties() {
-        return properties;
-    }
-
-    public void setProperties(TwitterConfiguration properties) {
-        this.properties = properties;
-    }
-
-    @Override
-    public EndpointType getEndpointType() {
-        return EndpointType.EVENT;
-    }
-
-    @Override
-    public boolean isSingleton() {
-        return true;
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-        if (properties.getTwitterStream() != null) {
-            properties.getTwitterStream().shutdown();
-        }
-    }
-
-    @Override
-    public String getUser() {
-        return user;
-    }
-
-    @Override
-    public void setUser(String user) {
-        this.user = user;
-    }
-
-    @Override
-    public String getKeywords() {
-        return keywords;
-    }
-
-    @Override
-    public void setKeywords(String keywords) {
-        this.keywords = keywords;
-    }
-
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java
deleted file mode 100644
index d745d1c..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java
+++ /dev/null
@@ -1,198 +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.component.twitter;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.api.management.ManagedAttribute;
-import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.component.twitter.consumer.AbstractTwitterConsumerHandler;
-import org.apache.camel.component.twitter.consumer.TwitterConsumerPolling;
-import org.apache.camel.component.twitter.data.EndpointType;
-import org.apache.camel.impl.DefaultPollingEndpoint;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriPath;
-
-/**
- * Use twitter-directmessage, twitter-search, twitter-streaming and twitter-timeline instead of this component.
- * @deprecated
- */
-@Deprecated
-@ManagedResource(description = "Managed Twitter Endpoint")
-@UriEndpoint(firstVersion = "2.10.0", scheme = "twitter", title = "Twitter", syntax = "twitter:kind", consumerClass = AbstractTwitterConsumerHandler.class, label = "api,social")
-public class TwitterEndpointPolling extends DefaultPollingEndpoint implements CommonPropertiesTwitterEndpoint {
-    @UriPath(description = "The kind of endpoint", enums = "directmessage,search,streaming/filter,streaming/sample,streaming/user"
-            + ",timeline/home,timeline/mentions,timeline/retweetsofme,timeline/user") @Metadata(required = "true")
-    private final String kind;
-
-    @UriParam(optionalPrefix = "consumer.", defaultValue = "" + TwitterConsumerPolling.DEFAULT_CONSUMER_DELAY, label = "consumer,scheduler",
-            description = "Milliseconds before the next poll.")
-    private long delay = TwitterConsumerPolling.DEFAULT_CONSUMER_DELAY;
-
-    @UriParam
-    private TwitterConfiguration properties;
-
-    @UriParam(description = "Username, used for user timeline consumption, direct message production, etc.")
-    private String user;
-
-    @UriParam(description = "Can be used for search and streaming/filter. Multiple values can be separated with comma.", label = "consumer,filter")
-    private String keywords;
-
-    public TwitterEndpointPolling(String uri, String remaining, TwitterComponent component, TwitterConfiguration properties) {
-        super(uri, component);
-        this.kind = remaining;
-        this.properties = properties;
-
-        setDelay(delay); // reconfigure the default delay
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        AbstractTwitterConsumerHandler twitter4jConsumer = TwitterHelper.createConsumer(this, getEndpointUri(), kind);
-        // update the pulling lastID with sinceId
-        twitter4jConsumer.setLastId(properties.getSinceId());
-        TwitterConsumerPolling tc = new TwitterConsumerPolling(this, processor, twitter4jConsumer);
-        configureConsumer(tc);
-        return tc;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return TwitterHelper.createProducer(this, getEndpointUri(), kind);
-    }
-
-    @Override
-    public boolean isSingleton() {
-        return true;
-    }
-
-    public TwitterConfiguration getProperties() {
-        return properties;
-    }
-
-    public void setProperties(TwitterConfiguration properties) {
-        this.properties = properties;
-    }
-
-    @ManagedAttribute
-    public String getUser() {
-        return user;
-    }
-
-    @ManagedAttribute
-    public void setUser(String user) {
-        this.user = user;
-    }
-
-    @ManagedAttribute
-    public String getKeywords() {
-        return keywords;
-    }
-
-    @ManagedAttribute
-    public void setKeywords(String keywords) {
-        this.keywords = keywords;
-    }
-
-    @ManagedAttribute
-    public String getLocations() {
-        return getProperties().getLocations();
-    }
-
-    @ManagedAttribute
-    public void setLocations(String locations) {
-        getProperties().setLocations(locations);
-    }
-
-    @ManagedAttribute
-    public void setFilterOld(boolean filterOld) {
-        getProperties().setFilterOld(filterOld);
-    }
-
-    @ManagedAttribute
-    public boolean isFilterOld() {
-        return getProperties().isFilterOld();
-    }
-
-    @ManagedAttribute
-    public void setSinceId(long sinceId) {
-        getProperties().setSinceId(sinceId);
-    }
-
-    @ManagedAttribute
-    public long getSinceId() {
-        return getProperties().getSinceId();
-    }
-
-    @ManagedAttribute
-    public void setLang(String lang) {
-        getProperties().setLang(lang);
-    }
-
-    @ManagedAttribute
-    public String getLang() {
-        return getProperties().getLang();
-    }
-
-    @ManagedAttribute
-    public void setCount(Integer count) {
-        getProperties().setCount(count);
-    }
-
-    @ManagedAttribute
-    public Integer getCount() {
-        return getProperties().getCount();
-    }
-
-    @ManagedAttribute
-    public void setNumberOfPages(Integer numberOfPages) {
-        getProperties().setNumberOfPages(numberOfPages);
-    }
-
-    @ManagedAttribute
-    public Integer getNumberOfPages() {
-        return getProperties().getNumberOfPages();
-    }
-
-    @ManagedAttribute
-    public boolean isSortById() {
-        return getProperties().isSortById();
-    }
-
-    @ManagedAttribute
-    public void setSortById(boolean sortById) {
-        getProperties().setSortById(sortById);
-    }
-
-    @Override
-    public EndpointType getEndpointType() {
-        return EndpointType.POLLING;
-    }
-
-    /**
-     * Milliseconds before the next poll.
-     */
-    @Override
-    public void setDelay(long delay) {
-        super.setDelay(delay);
-        this.delay = delay;
-    }
-
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java
index 03061cc..fcd567c 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java
@@ -61,65 +61,6 @@ public final class TwitterHelper {
         message.setHeader(TwitterConstants.TWITTER_USER_ROLE + index, role);
     }
 
-    @Deprecated
-    public static AbstractTwitterConsumerHandler createConsumer(CommonPropertiesTwitterEndpoint te, String uri, String remaining) throws IllegalArgumentException {
-        String[] tokens = remaining.split("/");
-        
-        if (tokens.length > 0) {
-            switch (ConsumerType.fromString(tokens[0])) {
-            case DIRECTMESSAGE:
-                return new DirectMessageConsumerHandler(te);
-            case SEARCH:
-                boolean hasNoKeywords = te.getKeywords() == null
-                    || te.getKeywords().trim().isEmpty();
-                if (hasNoKeywords) {
-                    throw new IllegalArgumentException("Type set to SEARCH but no keywords were provided.");
-                } else {
-                    return new SearchConsumerHandler(te, te.getKeywords());
-                }
-            case STREAMING:
-                if (tokens.length > 1) {
-                    switch (StreamingType.fromString(tokens[1])) {
-                    case SAMPLE:
-                        return new SampleStreamingConsumerHandler(te);
-                    case FILTER:
-                        return new FilterStreamingConsumerHandler(te, te.getKeywords());
-                    case USER:
-                        return new UserStreamingConsumerHandler(te);
-                    default:
-                        break;
-                    }
-                }
-                break;
-            case TIMELINE:
-                if (tokens.length > 1) {
-                    switch (TimelineType.fromString(tokens[1])) {
-                    case HOME:
-                        return new HomeConsumerHandler(te);
-                    case MENTIONS:
-                        return new MentionsConsumerHandler(te);
-                    case RETWEETSOFME:
-                        return new RetweetsConsumerHandler(te);
-                    case USER:
-                        if (te.getUser() == null || te.getUser().trim().isEmpty()) {
-                            throw new IllegalArgumentException("Fetch type set to USER TIMELINE but no user was set.");
-                        } else {
-                            return new UserConsumerHandler(te, te.getUser());
-                        }
-                    default:
-                        break;
-                    }
-                }
-                break;
-            default:
-                break;
-            }
-        }
-
-        throw new IllegalArgumentException("Cannot create any consumer with uri " + uri
-            + ". A consumer type was not provided (or an incorrect pairing was used).");
-    }
-
     public static Consumer createConsumer(Processor processor, AbstractTwitterEndpoint endpoint, AbstractTwitterConsumerHandler handler) throws Exception {
         Consumer answer = new DefaultTwitterConsumer(endpoint, processor, handler);
         switch (endpoint.getEndpointType()) {
@@ -136,41 +77,6 @@ public final class TwitterHelper {
         return answer;
     }
 
-    @Deprecated
-    public static Producer createProducer(CommonPropertiesTwitterEndpoint te, String uri, String remaining) throws IllegalArgumentException {
-        String[] tokens = remaining.split("/");
-
-        if (tokens.length > 0) {
-            switch (ConsumerType.fromString(tokens[0])) {
-            case DIRECTMESSAGE:
-                if (te.getUser() == null || te.getUser().trim().isEmpty()) {
-                    throw new IllegalArgumentException(
-                        "Producer type set to DIRECT MESSAGE but no recipient user was set.");
-                } else {
-                    return new DirectMessageProducer(te, te.getUser());
-                }
-            case TIMELINE:
-                if (tokens.length > 1) {
-                    switch (TimelineType.fromString(tokens[1])) {
-                    case USER:
-                        return new UserProducer(te);
-                    default:
-                        break;
-                    }
-                }
-                break;
-            case SEARCH:
-                return new SearchProducer(te, te.getKeywords());
-            default:
-                break;
-            }
-
-        }
-
-        throw new IllegalArgumentException("Cannot create any producer with uri " + uri
-            + ". A producer type was not provided (or an incorrect pairing was used).");
-    }
-
     public static <T extends Enum<T>> T enumFromString(T[] values, String uri, T defaultValue) {
         for (int i = values.length - 1; i >= 0; i--) {
             if (values[i].name().equalsIgnoreCase(uri)) {
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java
deleted file mode 100644
index 3ae4ba6..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java
+++ /dev/null
@@ -1,49 +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.component.twitter.consumer;
-
-import java.util.List;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.component.twitter.TwitterEndpoint;
-import org.apache.camel.impl.DefaultConsumer;
-
-/**
- * Camel DirectConsumer implementation.
- */
-@Deprecated
-public class TwitterConsumerDirect extends DefaultConsumer {
-
-    private final AbstractTwitterConsumerHandler twitter4jConsumer;
-
-    public TwitterConsumerDirect(TwitterEndpoint endpoint, Processor processor, AbstractTwitterConsumerHandler twitter4jConsumer) {
-        super(endpoint, processor);
-
-        this.twitter4jConsumer = twitter4jConsumer;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-
-        List<Exchange> exchanges = twitter4jConsumer.directConsume();
-        for (int i = 0; i < exchanges.size(); i++) {
-            getProcessor().process(exchanges.get(i));
-        }
-    }
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerEvent.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerEvent.java
deleted file mode 100644
index 6c3f87c..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerEvent.java
+++ /dev/null
@@ -1,70 +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.component.twitter.consumer;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.component.twitter.TwitterEndpoint;
-import org.apache.camel.component.twitter.streaming.AbstractStreamingConsumerHandler;
-import org.apache.camel.impl.DefaultConsumer;
-
-@Deprecated
-public class TwitterConsumerEvent extends DefaultConsumer implements TwitterEventListener {
-    private final AbstractTwitterConsumerHandler twitter4jConsumer;
-
-    public TwitterConsumerEvent(TwitterEndpoint endpoint, Processor processor, AbstractTwitterConsumerHandler twitter4jConsumer) {
-        super(endpoint, processor);
-        this.twitter4jConsumer = twitter4jConsumer;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-
-        if (twitter4jConsumer instanceof AbstractStreamingConsumerHandler) {
-            ((AbstractStreamingConsumerHandler) twitter4jConsumer).setEventListener(this);
-            ((AbstractStreamingConsumerHandler) twitter4jConsumer).start();
-        }
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        if (twitter4jConsumer instanceof AbstractStreamingConsumerHandler) {
-            ((AbstractStreamingConsumerHandler) twitter4jConsumer).removeEventListener(this);
-            ((AbstractStreamingConsumerHandler) twitter4jConsumer).stop();
-        }
-
-        super.doStop();
-    }
-
-    @Override
-    public void onEvent(Exchange exchange) {
-        if (!isRunAllowed()) {
-            return;
-        }
-
-        try {
-            getProcessor().process(exchange);
-        } catch (Exception e) {
-            exchange.setException(e);
-        }
-
-        if (exchange.getException() != null) {
-            getExceptionHandler().handleException("Error processing exchange on status update", exchange, exchange.getException());
-        }
-    }
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java
deleted file mode 100644
index 0adbb3c..0000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java
+++ /dev/null
@@ -1,77 +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.component.twitter.consumer;
-
-import java.util.List;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.component.twitter.TwitterEndpoint;
-import org.apache.camel.component.twitter.TwitterEndpointPolling;
-import org.apache.camel.component.twitter.streaming.AbstractStreamingConsumerHandler;
-import org.apache.camel.impl.ScheduledPollConsumer;
-
-/**
- * Provides a scheduled polling consumer
- */
-@Deprecated
-public class TwitterConsumerPolling extends ScheduledPollConsumer {
-
-    public static final long DEFAULT_CONSUMER_DELAY = 30 * 1000L;
-    private final AbstractTwitterConsumerHandler twitter4jConsumer;
-
-    public TwitterConsumerPolling(TwitterEndpoint endpoint, Processor processor, AbstractTwitterConsumerHandler twitter4jConsumer) {
-        super(endpoint, processor);
-        setDelay(DEFAULT_CONSUMER_DELAY);
-        this.twitter4jConsumer = twitter4jConsumer;
-    }
-
-    @Override
-    public TwitterEndpointPolling getEndpoint() {
-        return (TwitterEndpointPolling) super.getEndpoint();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        if (twitter4jConsumer instanceof AbstractStreamingConsumerHandler) {
-            ((AbstractStreamingConsumerHandler) twitter4jConsumer).start();
-        }
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        if (twitter4jConsumer instanceof AbstractStreamingConsumerHandler) {
-            ((AbstractStreamingConsumerHandler) twitter4jConsumer).stop();
-        }
-
-        super.doStop();
-    }
-
-    @Override
-    protected int poll() throws Exception {
-        List<Exchange> exchanges = twitter4jConsumer.pollConsume();
-
-        int index = 0;
-        for (; index < exchanges.size(); index++) {
-            getProcessor().process(exchanges.get(index));
-        }
-
-        return index;
-    }
-
-}
diff --git a/components/camel-twitter/src/main/resources/META-INF/services/org/apache/camel/component/twitter b/components/camel-twitter/src/main/resources/META-INF/services/org/apache/camel/component/twitter
deleted file mode 100644
index f0472a4..0000000
--- a/components/camel-twitter/src/main/resources/META-INF/services/org/apache/camel/component/twitter
+++ /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.twitter.TwitterComponent
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/SearchDirectCustomComponentTest.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/SearchDirectCustomComponentTest.java
deleted file mode 100644
index 69078b8..0000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/deprecated/SearchDirectCustomComponentTest.java
+++ /dev/null
@@ -1,48 +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.component.twitter.deprecated;
-
-import org.apache.camel.component.twitter.CamelTwitterConsumerTestSupport;
-import org.apache.camel.component.twitter.TwitterComponent;
-import org.apache.camel.impl.JndiRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * consumes tweets
- */
-@Deprecated
-public class SearchDirectCustomComponentTest extends CamelTwitterConsumerTestSupport {
-
-    @Override
-    protected JndiRegistry createRegistry() throws Exception {
-        JndiRegistry registry = super.createRegistry();
-        registry.bind("my-twitter", new TwitterComponent());
-
-        return registry;
-    }
-
-    @Override
-    protected String getUri() {
-        return "my-twitter://search?type=direct&keywords=java&";
-    }
-
-    @Override
-    protected Logger getLogger() {
-        return LoggerFactory.getLogger(SearchDirectCustomComponentTest.class);
-    }
-}
diff --git a/components/readme.adoc b/components/readme.adoc
index 847f24f..fadba62 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -2,7 +2,7 @@ Components
 ^^^^^^^^^^
 
 // components: START
-Number of Components: 302 in 204 JAR artifacts (22 deprecated)
+Number of Components: 281 in 185 JAR artifacts (1 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
diff --git a/platforms/spring-boot/components-starter/camel-twitter-starter/src/main/java/org/apache/camel/component/twitter/springboot/TwitterComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-twitter-starter/src/main/java/org/apache/camel/component/twitter/springboot/TwitterComponentAutoConfiguration.java
deleted file mode 100644
index 423b6d4..0000000
--- a/platforms/spring-boot/components-starter/camel-twitter-starter/src/main/java/org/apache/camel/component/twitter/springboot/TwitterComponentAutoConfiguration.java
+++ /dev/null
@@ -1,128 +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.component.twitter.springboot;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.annotation.Generated;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.twitter.TwitterComponent;
-import org.apache.camel.spi.ComponentCustomizer;
-import org.apache.camel.spi.HasId;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.ComponentConfigurationProperties;
-import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
-import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
-import org.apache.camel.spring.boot.util.GroupCondition;
-import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Lazy;
-
-/**
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@Configuration
-@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class,
-        TwitterComponentAutoConfiguration.GroupConditions.class})
-@AutoConfigureAfter(CamelAutoConfiguration.class)
-@EnableConfigurationProperties({ComponentConfigurationProperties.class,
-        TwitterComponentConfiguration.class})
-public class TwitterComponentAutoConfiguration {
-
-    private static final Logger LOGGER = LoggerFactory
-            .getLogger(TwitterComponentAutoConfiguration.class);
-    @Autowired
-    private ApplicationContext applicationContext;
-    @Autowired
-    private CamelContext camelContext;
-    @Autowired
-    private TwitterComponentConfiguration configuration;
-    @Autowired(required = false)
-    private List<ComponentCustomizer<TwitterComponent>> customizers;
-
-    static class GroupConditions extends GroupCondition {
-        public GroupConditions() {
-            super("camel.component", "camel.component.twitter");
-        }
-    }
-
-    @Lazy
-    @Bean(name = "twitter-component")
-    @ConditionalOnMissingBean(TwitterComponent.class)
-    public TwitterComponent configureTwitterComponent() throws Exception {
-        TwitterComponent component = new TwitterComponent();
-        component.setCamelContext(camelContext);
-        Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(configuration, parameters, null,
-                false);
-        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
-            Object value = entry.getValue();
-            Class<?> paramClass = value.getClass();
-            if (paramClass.getName().endsWith("NestedConfiguration")) {
-                Class nestedClass = null;
-                try {
-                    nestedClass = (Class) paramClass.getDeclaredField(
-                            "CAMEL_NESTED_CLASS").get(null);
-                    HashMap<String, Object> nestedParameters = new HashMap<>();
-                    IntrospectionSupport.getProperties(value, nestedParameters,
-                            null, false);
-                    Object nestedProperty = nestedClass.newInstance();
-                    CamelPropertiesHelper.setCamelProperties(camelContext,
-                            nestedProperty, nestedParameters, false);
-                    entry.setValue(nestedProperty);
-                } catch (NoSuchFieldException e) {
-                }
-            }
-        }
-        CamelPropertiesHelper.setCamelProperties(camelContext, component,
-                parameters, false);
-        if (ObjectHelper.isNotEmpty(customizers)) {
-            for (ComponentCustomizer<TwitterComponent> customizer : customizers) {
-                boolean useCustomizer = (customizer instanceof HasId)
-                        ? HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.twitter.customizer",
-                                ((HasId) customizer).getId())
-                        : HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.twitter.customizer");
-                if (useCustomizer) {
-                    LOGGER.debug("Configure component {}, with customizer {}",
-                            component, customizer);
-                    customizer.customize(component);
-                }
-            }
-        }
-        return component;
-    }
-}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-twitter-starter/src/main/java/org/apache/camel/component/twitter/springboot/TwitterComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-twitter-starter/src/main/java/org/apache/camel/component/twitter/springboot/TwitterComponentConfiguration.java
deleted file mode 100644
index 961785c..0000000
--- a/platforms/spring-boot/components-starter/camel-twitter-starter/src/main/java/org/apache/camel/component/twitter/springboot/TwitterComponentConfiguration.java
+++ /dev/null
@@ -1,151 +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.component.twitter.springboot;
-
-import javax.annotation.Generated;
-import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * Use twitter-directmessage, twitter-search, twitter-streaming and
- * twitter-timeline instead of this component.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@ConfigurationProperties(prefix = "camel.component.twitter")
-public class TwitterComponentConfiguration
-        extends
-            ComponentConfigurationPropertiesCommon {
-
-    /**
-     * Whether to enable auto configuration of the twitter component. This is
-     * enabled by default.
-     */
-    private Boolean enabled;
-    /**
-     * The access token
-     */
-    private String accessToken;
-    /**
-     * The access token secret
-     */
-    private String accessTokenSecret;
-    /**
-     * The consumer key
-     */
-    private String consumerKey;
-    /**
-     * The consumer secret
-     */
-    private String consumerSecret;
-    /**
-     * The http proxy host which can be used for the camel-twitter.
-     */
-    private String httpProxyHost;
-    /**
-     * The http proxy user which can be used for the camel-twitter.
-     */
-    private String httpProxyUser;
-    /**
-     * The http proxy password which can be used for the camel-twitter.
-     */
-    private String httpProxyPassword;
-    /**
-     * The http proxy port which can be used for the camel-twitter.
-     */
-    private Integer httpProxyPort;
-    /**
-     * Whether the component should resolve property placeholders on itself when
-     * starting. Only properties which are of String type can use property
-     * placeholders.
-     */
-    private Boolean resolvePropertyPlaceholders = true;
-
-    public String getAccessToken() {
-        return accessToken;
-    }
-
-    public void setAccessToken(String accessToken) {
-        this.accessToken = accessToken;
-    }
-
-    public String getAccessTokenSecret() {
-        return accessTokenSecret;
-    }
-
-    public void setAccessTokenSecret(String accessTokenSecret) {
-        this.accessTokenSecret = accessTokenSecret;
-    }
-
-    public String getConsumerKey() {
-        return consumerKey;
-    }
-
-    public void setConsumerKey(String consumerKey) {
-        this.consumerKey = consumerKey;
-    }
-
-    public String getConsumerSecret() {
-        return consumerSecret;
-    }
-
-    public void setConsumerSecret(String consumerSecret) {
-        this.consumerSecret = consumerSecret;
-    }
-
-    public String getHttpProxyHost() {
-        return httpProxyHost;
-    }
-
-    public void setHttpProxyHost(String httpProxyHost) {
-        this.httpProxyHost = httpProxyHost;
-    }
-
-    public String getHttpProxyUser() {
-        return httpProxyUser;
-    }
-
-    public void setHttpProxyUser(String httpProxyUser) {
-        this.httpProxyUser = httpProxyUser;
-    }
-
-    public String getHttpProxyPassword() {
-        return httpProxyPassword;
-    }
-
-    public void setHttpProxyPassword(String httpProxyPassword) {
-        this.httpProxyPassword = httpProxyPassword;
-    }
-
-    public Integer getHttpProxyPort() {
-        return httpProxyPort;
-    }
-
-    public void setHttpProxyPort(Integer httpProxyPort) {
-        this.httpProxyPort = httpProxyPort;
-    }
-
-    public Boolean getResolvePropertyPlaceholders() {
-        return resolvePropertyPlaceholders;
-    }
-
-    public void setResolvePropertyPlaceholders(
-            Boolean resolvePropertyPlaceholders) {
-        this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
-    }
-}
\ No newline at end of file