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:33 UTC

[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

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 ...