You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/02/25 14:14:08 UTC

[camel] 04/13: CAMEL-15105: replace ExtendedCamelContext inheritance with delegation

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

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b2f6af4a695439d51ace77331f79157547f6cfd8
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Feb 18 09:18:28 2023 +0100

    CAMEL-15105: replace ExtendedCamelContext inheritance with delegation
---
 .../apache/camel/component/avro/AvroListener.java  |    3 +-
 .../aws/secretsmanager/SecretsDevConsole.java      |    3 +-
 .../camel/component/aws/xray/XRayTracer.java       |    3 +-
 .../key/vault/AzureKeyVaultManagerDevConsole.java  |    3 +-
 .../apache/camel/component/bean/MethodInfo.java    |    7 +-
 .../apache/camel/component/bean/ProxyHelper.java   |    3 +-
 .../camel/component/cometd/CometdConsumerTest.java |    2 +-
 .../apache/camel/component/cron/CronHelper.java    |    3 +-
 .../camel/component/cron/CronPatternsTest.java     |    3 +-
 .../component/dataformat/DataFormatComponent.java  |    3 +-
 .../dynamicrouter/DynamicRouterProcessor.java      |    2 +-
 .../support/DynamicRouterTestSupport.java          |    2 +-
 .../component/facebook/FacebookComponent.java      |    3 +-
 .../facebook/data/FacebookPropertiesHelper.java    |    3 +-
 .../camel/component/fhir/FhirConfigurationIT.java  |    3 +-
 .../google/calendar/GoogleCalendarConsumer.java    |    3 +-
 .../google/calendar/GoogleCalendarProducer.java    |    3 +-
 .../google/drive/GoogleDriveConsumer.java          |    3 +-
 .../google/drive/GoogleDriveProducer.java          |    3 +-
 .../component/google/mail/GoogleMailConsumer.java  |    3 +-
 .../component/google/mail/GoogleMailProducer.java  |    3 +-
 .../manager/GoogleSecretManagerDevConsole.java     |    3 +-
 .../google/sheets/GoogleSheetsConsumer.java        |    3 +-
 .../google/sheets/GoogleSheetsProducer.java        |    3 +-
 .../camel/component/hdfs/HdfsConsumerTest.java     |    3 +-
 .../headersmap/CamelFastHeadersMapTest.java        |    3 +-
 .../apache/camel/component/http/HttpComponent.java |    3 +-
 .../http/HttpEndpointUriAssemblerTest.java         |    3 +-
 .../camel/component/irc/IrcConsumerTest.java       |    2 +-
 .../jaxb/JaxbRestBindingJaxbDataFormatFactory.java |    3 +-
 .../component/jms/JmsInOnlyPooledExchangeTest.java |    4 +-
 .../jms/issues/JmsDirectStartupOrderIssueTest.java |    2 +-
 .../camel/component/jmx/SimpleBeanFixture.java     |    2 +-
 .../jpa/JpaWithNamedQueryAndParametersTest.java    |    2 +-
 .../processor/jpa/JpaProducerWithQueryTest.java    |    2 +-
 .../camel/component/kafka/KafkaConsumerTest.java   |    4 +-
 .../camel/component/kafka/KafkaProducerTest.java   |    2 +-
 .../integration/KafkaConsumerAuthInvalidIT.java    |    3 +-
 .../component/knative/spi/KnativeEnvironment.java  |    2 +-
 .../camel/component/knative/KnativeComponent.java  |    5 +-
 .../properties/BasePropertiesFunction.java         |    3 +-
 .../properties/KubernetesClientConfigureTest.java  |    3 +-
 .../apache/camel/component/log/LogEndpoint.java    |    3 +-
 .../apache/camel/component/mail/MailConsumer.java  |    3 +-
 .../mail/MailConsumerAuthenticatorTest.java        |    2 +-
 .../mapstruct/DefaultMapStructFinder.java          |    2 +-
 .../component/metrics/MetricsComponentTest.java    |    4 +-
 .../faulttolerance/FaultToleranceProcessor.java    |    9 +-
 .../faulttolerance/FaultToleranceReifier.java      |    5 +-
 ...tToleranceRefConfigurationNoReflectionTest.java |    3 +-
 .../faulttolerance/FaultToleranceRouteOkTest.java  |    3 +-
 .../apache/camel/component/mock/MockEndpoint.java  |    5 +-
 .../component/netty/http/NettyHttpComponent.java   |    3 +-
 .../http/NettyHttpEndpointUriAssemblerTest.java    |    3 +-
 .../http/NettyHttpSimplePooledExchangeTest.java    |    4 +-
 .../component/netty/http/ProxyProtocolTest.java    |    2 +-
 .../camel/component/netty/NettyComponent.java      |    3 +-
 .../camel/component/netty/NettyConfiguration.java  |    3 +-
 .../NettyTextlineInOnlyPooledExchangeTest.java     |    3 +-
 .../camel/component/olingo2/Olingo2Endpoint.java   |    3 +-
 .../camel/component/olingo4/Olingo4Endpoint.java   |    3 +-
 .../olingo4/Olingo4ComponentConsumerTest.java      |    9 +-
 .../olingo4/Olingo4ComponentProducerTest.java      |    7 +-
 .../apache/camel/openapi/RestOpenApiReader.java    |    3 +-
 .../apache/camel/openapi/RestOpenApiSupport.java   |    3 +-
 .../openapi/jmx/JmxRestDefinitionsResolver.java    |    2 +-
 .../openstack/AbstractProducerTestSupport.java     |    4 +-
 .../apache/camel/pgevent/PgEventConsumerTest.java  |    6 +-
 .../platform/http/PlatformHttpComponent.java       |    3 +-
 .../org/apache/camel/reactive/SimpleMockTest.java  |    5 +-
 .../org/apache/camel/reactive/SimpleMockTest.java  |    3 +-
 .../reactive/streams/ReactiveStreamsHelper.java    |    3 +-
 .../reactive/streams/BaseReactiveTest.java         |    3 +-
 .../engine/ReactorStreamsServiceTestSupport.java   |    3 +-
 .../resilience4j/ResilienceProcessor.java          |    9 +-
 .../component/resilience4j/ResilienceReifier.java  |    5 +-
 .../resilience4j/ResiliencePooledRouteOkTest.java  |    5 +-
 .../resilience4j/ResilienceRouteOkTest.java        |    3 +-
 .../camel/github/GistResourceResolverTest.java     |    2 +-
 .../camel/github/GitHubResourceResolverTest.java   |    6 +-
 .../camel/component/rest/RestApiEndpoint.java      |    5 +-
 .../rest/RestComponentVerifierExtension.java       |    3 +-
 .../apache/camel/component/rest/RestEndpoint.java  |    3 +-
 .../apache/camel/component/rest/RestProducer.java  |    5 +-
 .../engine/RxJavaStreamsServiceTestSupport.java    |    3 +-
 .../component/salesforce/SalesforceComponent.java  |    3 +-
 .../salesforce/SalesforceConsumerTest.java         |    2 +-
 .../apache/camel/component/seda/SedaEndpoint.java  |    3 +-
 .../sjms/consumer/InOnlyPooledExchangeTest.java    |    4 +-
 .../camel/component/smpp/SmppConsumerTest.java     |    2 +-
 .../RabbitMQConsumerPooledExchangeIT.java          |    3 +-
 .../camel/spring/xml/CamelContextFactoryBean.java  |    2 +-
 .../spring/DumpModelAsXmlPlaceholdersTest.java     |    2 +-
 .../apache/camel/spring/EndpointReferenceTest.java |    3 +-
 .../DefaultPackageResolverConfigureTest.java       |    3 +-
 .../TransactedStackSizeParallelProcessingTest.java |    3 +-
 .../camel/spring/processor/SpringTestHelper.java   |    2 +-
 .../routebuilder/SpringRouteTemplateTest.java      |    4 +-
 .../apache/camel/spring/SpringCamelContext.java    |    3 +-
 .../apache/camel/component/stub/StubComponent.java |    3 +-
 .../apache/camel/test/junit5/CamelTestSupport.java |    4 +-
 .../test/junit5/EndpointUriFactoryTestSupport.java |    3 +-
 .../spring/junit5/CamelAnnotationsHandler.java     |    5 +-
 .../main/java/org/apache/camel/tracing/Tracer.java |    5 +-
 .../camel/component/twilio/TwilioEndpoint.java     |    3 +-
 .../camel/component/twilio/TwilioEndpointTest.java |    4 +-
 .../cloud/UndertowServiceCallRouteTest.java        |    9 +-
 .../rest/RestUndertowProducerGetPojoTest.java      |    3 +-
 .../component/webhook/WebhookRoutePolicyTest.java  |    4 +-
 .../component/wordpress/WordpressComponent.java    |    3 +-
 .../main/java/org/apache/camel/CamelContext.java   |   13 +-
 .../org/apache/camel/health/HealthCheckHelper.java |    5 +-
 .../apache/camel/support/jsse/JsseParameters.java  |    3 +-
 .../camel/impl/engine/AbstractCamelContext.java    | 3064 +++++++++++---------
 .../impl/engine/BaseExecutorServiceManager.java    |    3 +-
 .../camel/impl/engine/CamelInternalProcessor.java  |   13 +-
 .../impl/engine/CamelPostProcessorHelper.java      |    8 +-
 .../engine/DefaultAsyncProcessorAwaitManager.java  |    3 +-
 .../impl/engine/DefaultCamelBeanPostProcessor.java |    7 +-
 .../apache/camel/impl/engine/DefaultChannel.java   |    3 +-
 .../impl/engine/DefaultComponentNameResolver.java  |    3 +-
 .../impl/engine/DefaultComponentResolver.java      |    3 +-
 .../impl/engine/DefaultConfigurerResolver.java     |    2 +-
 .../impl/engine/DefaultDataFormatResolver.java     |    3 +-
 .../impl/engine/DefaultDevConsoleResolver.java     |    3 +-
 .../impl/engine/DefaultExecutorServiceManager.java |    3 +-
 .../impl/engine/DefaultHealthCheckResolver.java    |    5 +-
 .../apache/camel/impl/engine/DefaultInjector.java  |    3 +-
 .../camel/impl/engine/DefaultLanguageResolver.java |    5 +-
 .../impl/engine/DefaultManagementStrategy.java     |    5 +-
 .../engine/DefaultPackageScanResourceResolver.java |    8 +-
 .../camel/impl/engine/DefaultRoutesLoader.java     |    2 +-
 .../impl/engine/DefaultUriFactoryResolver.java     |    3 +-
 .../impl/engine/InternalRouteStartupManager.java   |    6 +-
 .../impl/engine/PrototypeExchangeFactory.java      |    3 +-
 .../org/apache/camel/impl/engine/RouteService.java |    9 +-
 .../impl/engine/SharedCamelInternalProcessor.java  |    5 +-
 .../impl/engine/SubscribeMethodProcessor.java      |    5 +-
 .../DefaultPropertiesFunctionResolver.java         |    3 +-
 .../component/properties/PropertiesComponent.java  |    3 +-
 .../apache/camel/converter/ResourceConverter.java  |    2 +-
 .../impl/converter/BaseTypeConverterRegistry.java  |    3 +-
 .../camel/impl/converter/DefaultTypeConverter.java |    3 +-
 .../impl/cloud/DefaultServiceCallProcessor.java    |    3 +-
 .../impl/cloud/ServiceCallProcessorFactory.java    |    3 +-
 .../apache/camel/impl/console/BlockedConsole.java  |    5 +-
 .../apache/camel/impl/console/ConsoleHelper.java   |    5 +-
 .../camel/impl/console/ContextDevConsole.java      |    3 +-
 .../impl/console/DefaultDevConsoleRegistry.java    |    3 +-
 .../impl/console/DefaultDevConsolesLoader.java     |    5 +-
 .../camel/impl/console/SourceDevConsole.java       |    3 +-
 .../apache/camel/impl/console/TopDevConsole.java   |    5 +-
 .../camel/impl/console/ContextDevConsoleTest.java  |    5 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |    5 +-
 .../java/org/apache/camel/impl/DefaultModel.java   |   11 +-
 .../camel/impl/lw/LightweightCamelContext.java     |   23 +-
 .../impl/lw/LightweightRuntimeCamelContext.java    |   59 +-
 .../java/org/apache/camel/builder/AdviceWith.java  |    2 +-
 .../camel/builder/AdviceWithRouteBuilder.java      |    9 +-
 .../org/apache/camel/builder/ProxyBuilder.java     |    3 +-
 .../org/apache/camel/builder/RouteBuilder.java     |    5 +-
 .../apache/camel/model/RouteDefinitionHelper.java  |    6 +-
 .../org/apache/camel/model/RoutesDefinition.java   |    3 +-
 .../model/cloud/ServiceCallConfiguration.java      |    5 +-
 .../cloud/ServiceCallExpressionConfiguration.java  |    3 +-
 .../ServiceCallServiceChooserConfiguration.java    |    3 +-
 .../ServiceCallServiceDiscoveryConfiguration.java  |    3 +-
 .../ServiceCallServiceFilterConfiguration.java     |    3 +-
 ...erviceCallServiceLoadBalancerConfiguration.java |    3 +-
 .../model/errorhandler/ErrorHandlerHelper.java     |    3 +-
 .../apache/camel/model/rest/RestDefinition.java    |    3 +-
 .../camel/processor/DefaultProcessorFactory.java   |    5 +-
 .../java/org/apache/camel/processor/Enricher.java  |    3 +-
 .../processor/InterceptSendToEndpointCallback.java |    3 +-
 .../org/apache/camel/processor/LoopProcessor.java  |    3 +-
 .../apache/camel/processor/MulticastProcessor.java |    9 +-
 .../java/org/apache/camel/processor/Pipeline.java  |    7 +-
 .../org/apache/camel/processor/PollEnricher.java   |    2 +-
 .../camel/processor/SendDynamicAwareResolver.java  |    3 +-
 .../org/apache/camel/processor/TryProcessor.java   |    3 +-
 .../apache/camel/processor/WireTapProcessor.java   |    7 +-
 .../processor/aggregate/AggregateProcessor.java    |    3 +-
 .../errorhandler/RedeliveryErrorHandler.java       |   10 +-
 .../loadbalancer/FailOverLoadBalancer.java         |    5 +-
 .../processor/loadbalancer/TopicLoadBalancer.java  |    5 +-
 .../org/apache/camel/reifier/AggregateReifier.java |    3 +-
 .../java/org/apache/camel/reifier/BeanReifier.java |    5 +-
 .../reifier/InterceptSendToEndpointReifier.java    |    5 +-
 .../java/org/apache/camel/reifier/LogReifier.java  |    5 +-
 .../apache/camel/reifier/OnCompletionReifier.java  |    3 +-
 .../org/apache/camel/reifier/ProcessorReifier.java |   25 +-
 .../apache/camel/reifier/ResequenceReifier.java    |    5 +-
 .../org/apache/camel/reifier/ResumableReifier.java |    3 +-
 .../org/apache/camel/reifier/RouteReifier.java     |   15 +-
 .../org/apache/camel/reifier/WireTapReifier.java   |    3 +-
 .../reifier/dataformat/DataFormatReifier.java      |    3 +-
 .../reifier/errorhandler/ErrorHandlerReifier.java  |    3 +-
 .../camel/reifier/rest/RestBindingReifier.java     |   11 +-
 .../core/xml/AbstractCamelContextFactoryBean.java  |   39 +-
 .../xml/AbstractCamelContextFactoryBeanTest.java   |    4 +-
 .../java/org/apache/camel/ContextTestSupport.java  |    2 +-
 .../camel/builder/ContextErrorHandlerTest.java     |    3 +-
 .../org/apache/camel/builder/RouteBuilderTest.java |    2 +-
 .../builder/RouteTemplateErrorHandlerTest.java     |    2 +-
 .../catalog/CustomEndpointUriFactoryTest.java      |    3 +-
 ...untimeCamelCatalogEndpointUriAssemblerTest.java |    3 +-
 .../component/log/LogComponentOptionsTest.java     |   21 +-
 .../camel/component/log/LogEndpointTest.java       |    7 +-
 .../component/log/LogEndpointUriAssemblerTest.java |    3 +-
 .../camel/component/log/LogListenerTest.java       |    3 +-
 .../PropertiesComponentRegistryTest.java           |    2 +-
 .../properties/PropertiesRouteFromTest.java        |    2 +-
 ...rtyFunctionOptionalPropertyPlaceholderTest.java |    3 +-
 .../camel/impl/BeanInjectProducerTemplateTest.java |    3 +-
 .../camel/impl/BeanInjectRouteBuilderTest.java     |    3 +-
 .../impl/BindToRegistryBeanPostProcessorTest.java  |    3 +-
 .../impl/CamelBeanPostProcessorInjectorTest.java   |    3 +-
 .../CamelContextAddRestDefinitionsFromXmlTest.java |    3 +-
 ...CamelContextAddRouteDefinitionsFromXmlTest.java |    3 +-
 .../CamelProduceInterfaceEventNotifierTest.java    |    3 +-
 .../apache/camel/impl/ConfigurerResolverTest.java  |    3 +-
 .../impl/CustomHeadersMapFactoryRouteTest.java     |    5 +-
 .../org/apache/camel/impl/CustomIdFactoryTest.java |    5 +-
 .../camel/impl/CustomUnitOfWorkFactoryTest.java    |    3 +-
 ...efaultCamelBeanPostProcessorFieldFirstTest.java |    3 +-
 .../impl/DefaultCamelBeanPostProcessorTest.java    |    3 +-
 .../camel/impl/DefaultEndpointRegistryTest.java    |    2 +-
 .../apache/camel/impl/EndpointPrototypeTest.java   |    5 +-
 .../impl/HashMapHeadersMapFactoryRouteTest.java    |    3 +-
 ...erceptSendToMockEndpointStrategyCustomTest.java |    3 +-
 .../InterceptSendToMockEndpointStrategyTest.java   |    5 +-
 .../apache/camel/impl/StartupStepLoggingTest.java  |    3 +-
 .../engine/DefaultComponentNameResolverTest.java   |    3 +-
 .../camel/impl/engine/PeriodTaskSchedulerTest.java |    5 +-
 .../apache/camel/impl/engine/RouteRemove2Test.java |    4 +-
 .../camel/impl/event/EventNotifierEventsTest.java  |    7 +-
 .../impl/event/SimpleEventNotifierEventsTest.java  |    7 +-
 .../impl/health/HealthCheckResultStrategyTest.java |    5 +-
 .../camel/impl/health/MyFooHealthCheckTest.java    |    5 +-
 .../issues/AdviceWithStartTargetIssueTest.java     |    3 +-
 ...ScopedOnExceptionMultipleRouteBuildersTest.java |    3 +-
 .../issues/DynamicRouterWithInterceptorTest.java   |    3 +-
 .../issues/OnExceptionContinuedIssueTest.java      |    3 +-
 .../issues/RecipientListWithInterceptorTest.java   |    3 +-
 ...ScopedOnExceptionMultipleRouteBuildersTest.java |    3 +-
 .../issues/RoutingSlipWithInterceptorTest.java     |    3 +-
 .../camel/issues/SplitWithInterceptorTest.java     |    3 +-
 ...ryCatchInterceptSendToAllEndpointIssueTest.java |    3 +-
 .../TwoDoTryAndThrowInInnerCatchIssueTest.java     |    2 +-
 .../apache/camel/issues/TwoTimerWithJMXIssue.java  |    3 +-
 .../processor/BatchConsumerPooledExchangeTest.java |    2 +-
 .../processor/CustomProcessorFactoryTest.java      |    3 +-
 .../camel/processor/LogEipBodyWithSimpleTest.java  |    3 +-
 .../apache/camel/processor/LogEipListenerTest.java |    3 +-
 .../camel/processor/PipelineStepWithEventTest.java |    3 +-
 .../apache/camel/processor/PooledExchangeTest.java |    2 +-
 .../processor/RouteServicesStartupOrderTest.java   |    2 +-
 .../RouteShutdownNotReverseOrderTest.java          |    2 +-
 .../processor/RouteShutdownReverseOrderTest.java   |    2 +-
 .../RouteStartupOrderDirectReverseTest.java        |    2 +-
 .../processor/RouteStartupOrderDirectTest.java     |    2 +-
 .../camel/processor/RouteStartupOrderLastTest.java |    2 +-
 .../processor/RouteStartupOrderSimpleTest.java     |    2 +-
 ...StartupOrderSuspendResumeNoAutoStartupTest.java |    4 +-
 .../RouteStartupOrderSuspendResumeTest.java        |    2 +-
 .../camel/processor/RouteStartupOrderTest.java     |    2 +-
 .../RouteStartupOrderWithDefaultTest.java          |    2 +-
 .../StreamCachingSpoolDirectoryQuarkusTest.java    |    2 +-
 .../AsyncEndpointCustomAsyncInterceptorTest.java   |    3 +-
 .../async/AsyncEndpointCustomInterceptorTest.java  |    3 +-
 .../processor/async/AsyncEndpointPolicyTest.java   |    3 +-
 .../AsyncProcessorAwaitManagerInterruptTest.java   |   17 +-
 ...sorAwaitManagerInterruptWithRedeliveryTest.java |   17 +-
 .../async/AsyncProcessorAwaitManagerTest.java      |   15 +-
 .../ParentChildInterceptStrategyTest.java          |    3 +-
 .../AuditInterceptorAsyncDelegateIssueTest.java    |    3 +-
 .../AuditInterceptorDelegateIssueTest.java         |    3 +-
 .../CustomInterceptorRouteWithChildOutputTest.java |    3 +-
 .../InterceptorStrategyNotOrderedTest.java         |    5 +-
 .../InterceptorStrategyOrderedTest.java            |    5 +-
 .../org/apache/camel/support/CustomizersTest.java  |   56 +-
 .../PropertyBindingSupportConfigurerTest.java      |    7 +-
 .../util/DumpModelAsXmlAggregateRouteTest.java     |    2 +-
 ...mlChoiceFilterRoutePropertyPlaceholderTest.java |    4 +-
 .../util/DumpModelAsXmlChoiceFilterRouteTest.java  |    6 +-
 .../util/DumpModelAsXmlDanishCharactersTest.java   |    2 +-
 .../util/DumpModelAsXmlFromRouteTemplateTest.java  |    4 +-
 .../camel/util/DumpModelAsXmlNamespaceTest.java    |    2 +-
 .../camel/util/DumpModelAsXmlPlaceholdersTest.java |    2 +-
 .../util/DumpModelAsXmlRouteExpressionTest.java    |    8 +-
 .../util/DumpModelAsXmlRoutePredicateTest.java     |    8 +-
 .../util/DumpModelAsXmlRouteTemplateTest.java      |    2 +-
 .../util/DumpModelAsXmlSourceLocationTest.java     |    4 +-
 .../util/DumpModelAsXmlSplitBodyRouteTest.java     |    2 +-
 ...umpModelAsXmlSplitNestedChoiceEndRouteTest.java |    2 +-
 .../DumpModelAsXmlTransformRouteConstantTest.java  |    2 +-
 .../DumpModelAsXmlTransformRouteLanguageTest.java  |    2 +-
 .../util/DumpModelAsXmlTransformRouteTest.java     |    2 +-
 .../org/apache/camel/util/ResourceLoaderTest.java  |    8 +-
 .../camel/impl/health/ContextHealthCheck.java      |    3 +-
 .../impl/health/DefaultHealthCheckRegistry.java    |    5 +-
 .../impl/health/DefaultHealthChecksLoader.java     |    5 +-
 .../org/apache/camel/main/BaseMainSupport.java     |   41 +-
 .../camel/main/DefaultConfigurationConfigurer.java |    6 +-
 .../apache/camel/main/DefaultRoutesCollector.java  |    6 +-
 .../src/main/java/org/apache/camel/main/Main.java  |    2 +-
 .../apache/camel/main/MainBootstrapCloseable.java  |    3 +-
 .../java/org/apache/camel/main/MainHelper.java     |    7 +-
 .../java/org/apache/camel/main/MainSupport.java    |    3 +-
 .../org/apache/camel/main/RoutesConfigurer.java    |    6 +-
 .../PropertyBindingSupportOptionalValueTest.java   |    3 +-
 ...pertyBindingSupportRootArrayReflectionTest.java |    7 +-
 .../main/PropertyBindingSupportRootArrayTest.java  |    3 +-
 ...yBindingSupportRootArrayWithConfigurerTest.java |    7 +-
 .../camel/management/DefaultManagementAgent.java   |    3 +-
 .../management/JmxManagementLifecycleStrategy.java |    3 +-
 .../management/mbean/ManagedCamelContext.java      |   10 +-
 .../camel/management/mbean/ManagedProcessor.java   |    6 +-
 .../camel/management/mbean/ManagedRoute.java       |    2 +-
 .../management/ManagedBeanIntrospectionTest.java   |    3 +-
 .../camel/management/ManagedCamelContextTest.java  |    3 +-
 .../ManagedDefaultReactiveExecutorTest.java        |    3 +-
 .../management/ManagedPooledExchangeTest.java      |    3 +-
 .../DefaultComponentVerifierExtension.java         |    3 +-
 .../apache/camel/support/AsyncProcessorHelper.java |    3 +-
 .../camel/support/AsyncProcessorSupport.java       |    3 +-
 .../apache/camel/support/CamelContextHelper.java   |    2 +-
 .../apache/camel/support/DefaultAsyncProducer.java |    3 +-
 .../org/apache/camel/support/DefaultComponent.java |    5 +-
 .../org/apache/camel/support/DefaultConsumer.java  |    5 +-
 .../support/DefaultInterceptSendToEndpoint.java    |    3 +-
 .../org/apache/camel/support/EndpointHelper.java   |    5 +-
 .../camel/support/EventDrivenPollingConsumer.java  |    3 +-
 .../support/FileWatcherResourceReloadStrategy.java |    2 +-
 .../camel/support/HeaderSelectorProducer.java      |    5 +-
 .../camel/support/PropertyBindingSupport.java      |   11 +-
 .../camel/support/PropertyConfigurerHelper.java    |    5 +-
 .../org/apache/camel/support/ResolverHelper.java   |    5 +-
 .../org/apache/camel/support/ResourceHelper.java   |    2 +-
 .../apache/camel/support/RouteTemplateHelper.java  |    2 +-
 .../camel/support/RouteWatcherReloadStrategy.java  |    3 +-
 .../camel/support/cache/DefaultProducerCache.java  |    2 +-
 .../support/component/AbstractApiComponent.java    |    7 +-
 .../component/ApiMethodPropertiesHelper.java       |   13 +-
 .../support/component/SendDynamicAwareSupport.java |    3 +-
 .../support/management/MBeanInfoAssembler.java     |    2 +-
 .../apache/camel/support/resume/AdapterHelper.java |    3 +-
 .../java/org/apache/camel/xml/jaxb/JaxbHelper.java |    3 +-
 .../camel/xml/jaxb/JaxbModelToXMLDumper.java       |    2 +-
 .../camel/cli/connector/LocalCliConnector.java     |   15 +-
 .../org/apache/camel/dsl/modeline/NameTrait.java   |    3 +-
 .../camel/dsl/modeline/ModelineParserTest.java     |    3 +-
 .../dsl/support/RouteBuilderLoaderSupport.java     |    3 +-
 .../builder/endpoint/AbstractEndpointBuilder.java  |    2 +-
 .../camel/builder/endpoint/DumpRoutesTest.java     |    2 +-
 .../groovy/common/model/BeanConfiguration.groovy   |    3 +-
 .../java/org/apache/camel/main/KameletMain.java    |   11 +-
 .../download/BasePackageScanDownloadListener.java  |    7 +-
 .../injection/AnnotationDependencyInjection.java   |    7 +-
 .../apache/camel/dsl/xml/io/XmlLoadRestTest.java   |    4 +-
 .../org/apache/camel/dsl/xml/io/XmlLoadTest.java   |    4 +-
 .../jaxb/definition/CreateModelFromXmlTest.java    |    2 +-
 .../xml/jaxb/definition/LoadRestFromXmlTest.java   |    2 +-
 .../xml/jaxb/definition/LoadRouteFromXmlTest.java  |    2 +-
 .../LoadRouteFromXmlWithInterceptTest.java         |    2 +-
 .../LoadRouteFromXmlWithNamespaceTest.java         |    2 +-
 .../LoadRouteFromXmlWithOnExceptionTest.java       |    2 +-
 .../definition/LoadRouteFromXmlWithPolicyTest.java |    2 +-
 .../definition/RouteTemplateLoadFromXmlTest.java   |    4 +-
 .../camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java    |    4 +-
 .../apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java |    2 +-
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java    |    3 +-
 .../itest/issues/IntercepFromAndStrategyTest.java  |    3 +-
 .../generator/openapi/RestDslXmlGenerator.java     |    2 +-
 .../generator/openapi/RestDslYamlGenerator.java    |    2 +-
 375 files changed, 2480 insertions(+), 2283 deletions(-)

diff --git a/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java
index 1a8f7c4a589..ddb9eca4f79 100644
--- a/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java
+++ b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java
@@ -29,7 +29,6 @@ import org.apache.avro.specific.SpecificData;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.avro.spi.AvroRpcHttpServerFactory;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.support.ExchangeHelper;
@@ -84,7 +83,7 @@ public class AvroListener {
             throws Exception {
         if (AVRO_HTTP_TRANSPORT.equalsIgnoreCase(configuration.getTransport().name())) {
             AvroRpcHttpServerFactory factory = camelContext
-                    .adapt(ExtendedCamelContext.class)
+                    .getCamelContextExtension()
                     .getFactoryFinder(FactoryFinder.DEFAULT_PATH)
                     .newInstance("avro-rpc-http-server-factory", AvroRpcHttpServerFactory.class)
                     .orElseThrow(() -> new IllegalStateException(
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
index 15939f99a6f..45962b8adb4 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
@@ -22,7 +22,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.aws.secretsmanager.vault.CloudTrailReloadTriggerTask;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.PropertiesFunction;
@@ -55,7 +54,7 @@ public class SecretsDevConsole extends AbstractDevConsole {
         }
         AwsVaultConfiguration aws = getCamelContext().getVaultConfiguration().getAwsVaultConfiguration();
         if (aws != null && aws.isRefreshEnabled()) {
-            PeriodTaskScheduler scheduler = getCamelContext().adapt(ExtendedCamelContext.class).getPeriodTaskScheduler();
+            PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
             secretsRefreshTask = scheduler.getTaskByType(CloudTrailReloadTriggerTask.class);
         }
     }
diff --git a/components/camel-aws/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java b/components/camel-aws/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
index 679be3d626a..5f5dcb7717c 100644
--- a/components/camel-aws/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
+++ b/components/camel-aws/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/XRayTracer.java
@@ -35,7 +35,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
@@ -135,7 +134,7 @@ public class XRayTracer extends ServiceSupport implements RoutePolicyFactory, St
             tracingStrategy = new NoopTracingStrategy();
         }
 
-        camelContext.adapt(ExtendedCamelContext.class).addInterceptStrategy(tracingStrategy);
+        camelContext.getCamelContextExtension().addInterceptStrategy(tracingStrategy);
 
         LOG.debug("Initialized XRay tracer");
     }
diff --git a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
index 469d4f77cbb..a46a4d18efc 100644
--- a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
+++ b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
@@ -22,7 +22,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.PropertiesFunction;
 import org.apache.camel.spi.annotations.DevConsole;
@@ -54,7 +53,7 @@ public class AzureKeyVaultManagerDevConsole extends AbstractDevConsole {
         }
         AzureVaultConfiguration azure = getCamelContext().getVaultConfiguration().getAzureVaultConfiguration();
         if (azure != null && azure.isRefreshEnabled()) {
-            PeriodTaskScheduler scheduler = getCamelContext().adapt(ExtendedCamelContext.class).getPeriodTaskScheduler();
+            PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
             secretsRefreshTask = scheduler.getTaskByType(EventhubsReloadTriggerTask.class);
         }
     }
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
index a3fb6c5f17d..9bce4e633b7 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/MethodInfo.java
@@ -39,7 +39,6 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.Expression;
 import org.apache.camel.ExpressionEvaluationException;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.InOnly;
 import org.apache.camel.InOut;
 import org.apache.camel.Message;
@@ -133,7 +132,7 @@ public class MethodInfo {
         org.apache.camel.RoutingSlip routingSlipAnnotation
                 = (org.apache.camel.RoutingSlip) collectedMethodAnnotation.get(org.apache.camel.RoutingSlip.class);
         if (routingSlipAnnotation != null) {
-            routingSlip = camelContext.adapt(ExtendedCamelContext.class).getAnnotationBasedProcessorFactory()
+            routingSlip = camelContext.getCamelContextExtension().getAnnotationBasedProcessorFactory()
                     .createRoutingSlip(camelContext, routingSlipAnnotation);
             // add created routingSlip as a service so we have its lifecycle managed
             try {
@@ -146,7 +145,7 @@ public class MethodInfo {
         org.apache.camel.DynamicRouter dynamicRouterAnnotation
                 = (org.apache.camel.DynamicRouter) collectedMethodAnnotation.get(org.apache.camel.DynamicRouter.class);
         if (dynamicRouterAnnotation != null) {
-            dynamicRouter = camelContext.adapt(ExtendedCamelContext.class).getAnnotationBasedProcessorFactory()
+            dynamicRouter = camelContext.getCamelContextExtension().getAnnotationBasedProcessorFactory()
                     .createDynamicRouter(camelContext, dynamicRouterAnnotation);
             // add created dynamicRouter as a service so we have its lifecycle managed
             try {
@@ -159,7 +158,7 @@ public class MethodInfo {
         org.apache.camel.RecipientList recipientListAnnotation
                 = (org.apache.camel.RecipientList) collectedMethodAnnotation.get(org.apache.camel.RecipientList.class);
         if (recipientListAnnotation != null) {
-            recipientList = camelContext.adapt(ExtendedCamelContext.class).getAnnotationBasedProcessorFactory()
+            recipientList = camelContext.getCamelContextExtension().getAnnotationBasedProcessorFactory()
                     .createRecipientList(camelContext, recipientListAnnotation);
             // add created recipientList as a service so we have its lifecycle managed
             try {
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ProxyHelper.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
index b654bab5b5b..c837dc58de0 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/ProxyHelper.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.bean;
 import java.lang.reflect.Proxy;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Producer;
 
 /**
@@ -59,7 +58,7 @@ public final class ProxyHelper {
     public static <T> T createProxy(
             Endpoint endpoint, boolean binding, ClassLoader cl, Class<T>[] interfaceClasses, MethodInfoCache methodCache)
             throws Exception {
-        Producer producer = endpoint.getCamelContext().adapt(ExtendedCamelContext.class).getDeferServiceFactory()
+        Producer producer = endpoint.getCamelContext().getCamelContextExtension().getDeferServiceFactory()
                 .createProducer(endpoint);
         return createProxyObject(endpoint, binding, producer, cl, interfaceClasses, methodCache);
     }
diff --git a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java
index 31d5a2d4e1d..282239e1d2f 100644
--- a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java
+++ b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java
@@ -76,7 +76,7 @@ public class CometdConsumerTest {
         when(markedReferenceServerChannel.getReference()).thenReturn(serverChannel);
 
         when(endpoint.getCamelContext()).thenReturn(context);
-        when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(context.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(exchangeFactory);
         when(exchangeFactory.newExchangeFactory(any())).thenReturn(exchangeFactory);
 
diff --git a/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java b/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java
index a8d9e043778..55942a21795 100644
--- a/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java
+++ b/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.cron;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.cron.api.CamelCronService;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.support.CamelContextHelper;
@@ -46,7 +45,7 @@ public final class CronHelper {
         }
 
         // Fallback to factory finder
-        FactoryFinder finder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+        FactoryFinder finder = context.getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
         return finder.newInstance(FACTORY_KEY, CamelCronService.class).orElse(null);
     }
 
diff --git a/components/camel-cron/src/test/java/org/apache/camel/component/cron/CronPatternsTest.java b/components/camel-cron/src/test/java/org/apache/camel/component/cron/CronPatternsTest.java
index 6932942c9ed..e9a1d7e9177 100644
--- a/components/camel-cron/src/test/java/org/apache/camel/component/cron/CronPatternsTest.java
+++ b/components/camel-cron/src/test/java/org/apache/camel/component/cron/CronPatternsTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.cron;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
@@ -59,7 +58,7 @@ public class CronPatternsTest extends CamelTestSupport {
 
     @Test
     void testPlusInURI() throws Exception {
-        BeanIntrospection bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection bi = context.getCamelContextExtension().getBeanIntrospection();
         bi.setExtendedStatistics(true);
         bi.setLoggingLevel(LoggingLevel.INFO);
 
diff --git a/components/camel-dataformat/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java b/components/camel-dataformat/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
index c5deea06c59..56eb850e37e 100644
--- a/components/camel-dataformat/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
+++ b/components/camel-dataformat/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.dataformat;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.annotations.Component;
@@ -56,7 +55,7 @@ public class DataFormatComponent extends DefaultComponent {
         }
 
         // find configurer if any
-        PropertyConfigurer configurer = getCamelContext().adapt(ExtendedCamelContext.class).getConfigurerResolver()
+        PropertyConfigurer configurer = getCamelContext().getCamelContextExtension().getConfigurerResolver()
                 .resolvePropertyConfigurer(name + "-dataformat", getCamelContext());
         // bind properties to data format
         PropertyBindingSupport.Builder builder = new PropertyBindingSupport.Builder();
diff --git a/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java b/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java
index c82e201d4ad..1872b71ba7a 100644
--- a/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java
+++ b/components/camel-dynamic-router/src/main/java/org/apache/camel/component/dynamicrouter/DynamicRouterProcessor.java
@@ -140,7 +140,7 @@ public class DynamicRouterProcessor extends AsyncProcessorSupport implements Tra
     @Override
     protected void doInit() throws Exception {
         super.doInit();
-        final ExtendedCamelContext extendedCamelContext = camelContext.adapt(ExtendedCamelContext.class);
+        final ExtendedCamelContext extendedCamelContext = camelContext.getCamelContextExtension();
         this.reactiveExecutor = extendedCamelContext.getReactiveExecutor();
         this.executorService = camelContext.getExecutorServiceManager()
                 .newDefaultThreadPool(this, "dynamicRouterMulticastPool");
diff --git a/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/support/DynamicRouterTestSupport.java b/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/support/DynamicRouterTestSupport.java
index 9e7cbd53dcc..8f20f14365c 100644
--- a/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/support/DynamicRouterTestSupport.java
+++ b/components/camel-dynamic-router/src/test/java/org/apache/camel/component/dynamicrouter/support/DynamicRouterTestSupport.java
@@ -172,7 +172,7 @@ public class DynamicRouterTestSupport extends CamelTestSupport {
         lenient().when(endpoint.getDynamicRouterComponent()).thenReturn(component);
         lenient().when(endpoint.getConfiguration()).thenReturn(configuration);
 
-        lenient().when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        lenient().when(context.getCamelContextExtension()).thenReturn(ecc);
         lenient().when(ecc.getExchangeFactory()).thenReturn(exchangeFactory);
         lenient().when(context.resolveLanguage("simple")).thenReturn(simpleLanguage);
         lenient().when(context.getExecutorServiceManager()).thenReturn(executorServiceManager);
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
index fbd01828ab5..2eb05330793 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
@@ -21,7 +21,6 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.facebook.config.FacebookConfiguration;
 import org.apache.camel.component.facebook.config.FacebookEndpointConfiguration;
 import org.apache.camel.spi.BeanIntrospection;
@@ -75,7 +74,7 @@ public class FacebookComponent extends DefaultComponent {
 
     private FacebookEndpointConfiguration copyComponentProperties() {
         Map<String, Object> componentProperties = new HashMap<>();
-        BeanIntrospection beanIntrospection = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection beanIntrospection = getCamelContext().getCamelContextExtension().getBeanIntrospection();
         beanIntrospection.getProperties(configuration, componentProperties, null, false);
 
         // create endpoint configuration with component properties
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/data/FacebookPropertiesHelper.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/data/FacebookPropertiesHelper.java
index c52e0984b7c..fa4712bc6fe 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/data/FacebookPropertiesHelper.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/data/FacebookPropertiesHelper.java
@@ -26,7 +26,6 @@ import java.util.Set;
 import facebook4j.Reading;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.facebook.FacebookConstants;
 import org.apache.camel.component.facebook.config.FacebookConfiguration;
 import org.apache.camel.component.facebook.config.FacebookEndpointConfiguration;
@@ -122,7 +121,7 @@ public final class FacebookPropertiesHelper {
     public static void getEndpointProperties(
             CamelContext camelContext, FacebookEndpointConfiguration configuration,
             Map<String, Object> properties) {
-        BeanIntrospection beanIntrospection = camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection beanIntrospection = camelContext.getCamelContextExtension().getBeanIntrospection();
         if (beanIntrospection.getProperties(configuration, properties, null, false)) {
             final Set<String> names = properties.keySet();
             // remove component config properties so we only have endpoint properties
diff --git a/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java b/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java
index b0ba156115a..ece78f3fa6d 100644
--- a/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java
+++ b/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java
@@ -24,7 +24,6 @@ import ca.uhn.fhir.rest.client.api.IClientInterceptor;
 import ca.uhn.fhir.rest.client.api.IGenericClient;
 import ca.uhn.fhir.rest.client.impl.GenericClient;
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.fhir.internal.FhirApiCollection;
 import org.apache.camel.component.fhir.internal.FhirCreateApiMethod;
@@ -96,7 +95,7 @@ public class FhirConfigurationIT extends AbstractFhirTestSupport {
 
         assertTrue(interceptors.contains(this.mockClientInterceptor), "User defined IClientInterceptor not found");
 
-        long counter = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long counter = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
         assertEquals(0, counter, "Should not use reflection");
     }
 
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java
index 5fc2204a3c0..7f4d20507d4 100644
--- a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
@@ -41,7 +40,7 @@ public class GoogleCalendarConsumer extends AbstractApiConsumer<GoogleCalendarAp
         AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarProducer.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarProducer.java
index 458e1c4c1fc..af475157ee5 100644
--- a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarProducer.java
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarProducer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
 import org.apache.camel.component.google.calendar.internal.GoogleCalendarPropertiesHelper;
@@ -42,7 +41,7 @@ public class GoogleCalendarProducer extends AbstractApiProducer<GoogleCalendarAp
         AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(method, properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java b/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java
index 48a93376506..794b09f9066 100644
--- a/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java
+++ b/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.drive.internal.GoogleDriveApiName;
@@ -40,7 +39,7 @@ public class GoogleDriveConsumer extends AbstractApiConsumer<GoogleDriveApiName,
         AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveProducer.java b/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveProducer.java
index 3273d45ea6b..4203fe65332 100644
--- a/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveProducer.java
+++ b/components/camel-google/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveProducer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.drive.internal.GoogleDriveApiName;
 import org.apache.camel.component.google.drive.internal.GoogleDriveConstants;
@@ -43,7 +42,7 @@ public class GoogleDriveProducer extends AbstractApiProducer<GoogleDriveApiName,
         AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(method, properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConsumer.java b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConsumer.java
index 071c3c7f5b6..388ed26c8c3 100644
--- a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConsumer.java
+++ b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConsumer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.mail.internal.GoogleMailApiName;
@@ -41,7 +40,7 @@ public class GoogleMailConsumer extends AbstractApiConsumer<GoogleMailApiName, G
         AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailProducer.java b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailProducer.java
index b03bc10a7ed..713eb48009f 100644
--- a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailProducer.java
+++ b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailProducer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.mail.internal.GoogleMailApiName;
 import org.apache.camel.component.google.mail.internal.GoogleMailPropertiesHelper;
@@ -42,7 +41,7 @@ public class GoogleMailProducer extends AbstractApiProducer<GoogleMailApiName, G
         AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(method, properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
index cfc66f6d437..0cef8350354 100644
--- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
+++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
@@ -22,7 +22,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.google.secret.manager.vault.PubsubReloadTriggerTask;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.PropertiesFunction;
@@ -55,7 +54,7 @@ public class GoogleSecretManagerDevConsole extends AbstractDevConsole {
         }
         GcpVaultConfiguration gcp = getCamelContext().getVaultConfiguration().getGcpVaultConfiguration();
         if (gcp != null && gcp.isRefreshEnabled()) {
-            PeriodTaskScheduler scheduler = getCamelContext().adapt(ExtendedCamelContext.class).getPeriodTaskScheduler();
+            PeriodTaskScheduler scheduler = getCamelContext().getCamelContextExtension().getPeriodTaskScheduler();
             secretsRefreshTask = scheduler.getTaskByType(PubsubReloadTriggerTask.class);
         }
     }
diff --git a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsConsumer.java b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsConsumer.java
index b9fed8e3aea..997c6ad772b 100644
--- a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsConsumer.java
+++ b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsConsumer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.sheets.internal.GoogleSheetsApiName;
@@ -41,7 +40,7 @@ public class GoogleSheetsConsumer extends AbstractApiConsumer<GoogleSheetsApiNam
         AbstractGoogleClientRequest<?> request = (AbstractGoogleClientRequest) super.doInvokeMethod(properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsProducer.java b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsProducer.java
index 55785da8ebc..41989a9d36d 100644
--- a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsProducer.java
+++ b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsProducer.java
@@ -20,7 +20,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.google.sheets.internal.GoogleSheetsApiName;
 import org.apache.camel.component.google.sheets.internal.GoogleSheetsPropertiesHelper;
@@ -42,7 +41,7 @@ public class GoogleSheetsProducer extends AbstractApiProducer<GoogleSheetsApiNam
         AbstractGoogleClientRequest<?> request = (AbstractGoogleClientRequest) super.doInvokeMethod(method, properties);
         try {
             BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                    = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
             }
diff --git a/components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs/HdfsConsumerTest.java b/components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs/HdfsConsumerTest.java
index 1681487ac90..af3c5c692a0 100644
--- a/components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs/HdfsConsumerTest.java
+++ b/components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs/HdfsConsumerTest.java
@@ -21,7 +21,6 @@ import java.io.InputStream;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.engine.PrototypeExchangeFactory;
@@ -86,7 +85,7 @@ public class HdfsConsumerTest {
 
         context = new DefaultCamelContext();
         // this test is mocking and its easier to test with prototype scoped
-        context.adapt(ExtendedCamelContext.class).setExchangeFactory(new PrototypeExchangeFactory());
+        context.getCamelContextExtension().setExchangeFactory(new PrototypeExchangeFactory());
     }
 
     @Test
diff --git a/components/camel-headersmap/src/test/java/org/apache/camel/component/headersmap/CamelFastHeadersMapTest.java b/components/camel-headersmap/src/test/java/org/apache/camel/component/headersmap/CamelFastHeadersMapTest.java
index 0263c2b921d..b5be3a1c939 100644
--- a/components/camel-headersmap/src/test/java/org/apache/camel/component/headersmap/CamelFastHeadersMapTest.java
+++ b/components/camel-headersmap/src/test/java/org/apache/camel/component/headersmap/CamelFastHeadersMapTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.headersmap;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.HeadersMapFactory;
@@ -37,7 +36,7 @@ public class CamelFastHeadersMapTest extends CamelTestSupport {
         MockEndpoint.assertIsSatisfied(context);
 
         // should have detected custom and use that
-        HeadersMapFactory factory = context.adapt(ExtendedCamelContext.class).getHeadersMapFactory();
+        HeadersMapFactory factory = context.getCamelContextExtension().getHeadersMapFactory();
         assertIsInstanceOf(FastHeadersMapFactory.class, factory);
     }
 
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
index 662dd18dc6e..0c34356105a 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
@@ -28,7 +28,6 @@ import javax.net.ssl.HostnameVerifier;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Producer;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.SSLContextParametersAware;
@@ -386,7 +385,7 @@ public class HttpComponent extends HttpCommonComponent implements RestProducerFa
         // configure the endpoint with the common configuration from the component
         if (getHttpConfiguration() != null) {
             Map<String, Object> properties = new HashMap<>();
-            BeanIntrospection beanIntrospection = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+            BeanIntrospection beanIntrospection = getCamelContext().getCamelContextExtension().getBeanIntrospection();
             beanIntrospection.getProperties(getHttpConfiguration(), properties, null);
             setProperties(endpoint, properties);
         }
diff --git a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpEndpointUriAssemblerTest.java b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpEndpointUriAssemblerTest.java
index c96ed71e32c..9ad2e3e892b 100644
--- a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpEndpointUriAssemblerTest.java
+++ b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpEndpointUriAssemblerTest.java
@@ -20,7 +20,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.EndpointUriFactory;
 import org.junit.jupiter.api.Test;
@@ -44,7 +43,7 @@ public class HttpEndpointUriAssemblerTest {
         CamelContext context = new DefaultCamelContext();
         context.start();
 
-        EndpointUriFactory assembler = context.adapt(ExtendedCamelContext.class).getEndpointUriFactory("https");
+        EndpointUriFactory assembler = context.getCamelContextExtension().getEndpointUriFactory("https");
 
         assertNotNull(assembler);
         assertTrue(assembler instanceof HttpEndpointUriFactory);
diff --git a/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcConsumerTest.java b/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcConsumerTest.java
index 1b57abce23e..5ec7a45ae68 100644
--- a/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcConsumerTest.java
+++ b/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcConsumerTest.java
@@ -65,7 +65,7 @@ public class IrcConsumerTest {
         when(endpoint.getConfiguration()).thenReturn(configuration);
 
         when(endpoint.getCamelContext()).thenReturn(context);
-        when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(context.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(exchangeFactory);
         when(exchangeFactory.newExchangeFactory(any())).thenReturn(exchangeFactory);
 
diff --git a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbRestBindingJaxbDataFormatFactory.java b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbRestBindingJaxbDataFormatFactory.java
index 4e51b9e1b3a..d8312c1d39d 100644
--- a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbRestBindingJaxbDataFormatFactory.java
+++ b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbRestBindingJaxbDataFormatFactory.java
@@ -20,7 +20,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
@@ -40,7 +39,7 @@ public class JaxbRestBindingJaxbDataFormatFactory implements RestBindingJaxbData
             DataFormat jaxb, DataFormat outJaxb)
             throws Exception {
         // lookup configurer
-        PropertyConfigurer configurer = camelContext.adapt(ExtendedCamelContext.class).getConfigurerResolver()
+        PropertyConfigurer configurer = camelContext.getCamelContextExtension().getConfigurerResolver()
                 .resolvePropertyConfigurer("jaxb-dataformat-configurer", camelContext);
         if (configurer == null) {
             throw new IllegalStateException("Cannot find configurer for dataformat: jaxb");
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsInOnlyPooledExchangeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsInOnlyPooledExchangeTest.java
index e649ff32a8a..b12b33e7b15 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsInOnlyPooledExchangeTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsInOnlyPooledExchangeTest.java
@@ -50,7 +50,7 @@ public class JmsInOnlyPooledExchangeTest extends AbstractJMSTest {
 
         Awaitility.waitAtMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
             PooledObjectFactory.Statistics stat
-                    = context.adapt(ExtendedCamelContext.class).getExchangeFactoryManager().getStatistics();
+                    = context.getCamelContextExtension().getExchangeFactoryManager().getStatistics();
             assertEquals(1, stat.getCreatedCounter());
             assertEquals(0, stat.getAcquiredCounter());
             assertEquals(1, stat.getReleasedCounter());
@@ -70,7 +70,7 @@ public class JmsInOnlyPooledExchangeTest extends AbstractJMSTest {
 
         Awaitility.waitAtMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
             PooledObjectFactory.Statistics stat
-                    = context.adapt(ExtendedCamelContext.class).getExchangeFactoryManager().getStatistics();
+                    = context.getCamelContextExtension().getExchangeFactoryManager().getStatistics();
             assertEquals(1, stat.getCreatedCounter());
             assertEquals(1, stat.getAcquiredCounter());
             assertEquals(2, stat.getReleasedCounter());
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java
index 75ce13817fd..76b67641248 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsDirectStartupOrderIssueTest.java
@@ -47,7 +47,7 @@ public class JmsDirectStartupOrderIssueTest extends AbstractPersistentJMSTest {
         MockEndpoint.assertIsSatisfied(context);
 
         DefaultCamelContext dcc = (DefaultCamelContext) context;
-        List<RouteStartupOrder> order = dcc.getRouteStartupOrder();
+        List<RouteStartupOrder> order = dcc.getCamelContextExtension().getRouteStartupOrder();
         assertEquals(2, order.size());
         assertEquals(1, order.get(0).getStartupOrder());
         assertEquals("direct", order.get(0).getRoute().getId());
diff --git a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java
index e4e4e58fecf..04e69ba66d6 100644
--- a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java
+++ b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/SimpleBeanFixture.java
@@ -159,7 +159,7 @@ public class SimpleBeanFixture {
         final MockEndpoint mock = mContext.getEndpoint("mock:sink", MockEndpoint.class);
         mock.setExpectedMessageCount(1);
         mMockEndpoint = new MockEndpointFixture(mock);
-        mContext.setRegistry(getRegistry());
+        mContext.getCamelContextExtension().setRegistry(getRegistry());
         mContext.addRoutes(new RouteBuilder() {
             @Override
             public void configure() {
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java
index 4ed0e71d5b6..c6c91812bb5 100644
--- a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java
+++ b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryAndParametersTest.java
@@ -131,7 +131,7 @@ public class JpaWithNamedQueryAndParametersTest {
         params.put("custName", "Willem");
         // bind the params
         registry.bind("params", params);
-        camelContext.setRegistry(registry);
+        camelContext.getCamelContextExtension().setRegistry(registry);
 
         camelContext.start();
 
diff --git a/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java b/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java
index cee55e2cd5e..7a10fb243b9 100644
--- a/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java
+++ b/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaProducerWithQueryTest.java
@@ -121,7 +121,7 @@ public class JpaProducerWithQueryTest {
         params.put("custName", "${body}");
         // bind the params
         registry.bind("params", params);
-        camelContext.setRegistry(registry);
+        camelContext.getCamelContextExtension().setRegistry(registry);
 
         camelContext.addRoutes(new RouteBuilder() {
             @Override
diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaConsumerTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaConsumerTest.java
index 388db7db35a..152043826d9 100644
--- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaConsumerTest.java
+++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaConsumerTest.java
@@ -42,7 +42,7 @@ public class KafkaConsumerTest {
     @Test
     public void consumerRequiresBootstrapServers() {
         when(endpoint.getCamelContext()).thenReturn(context);
-        when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(context.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(ef);
         when(ef.newExchangeFactory(any())).thenReturn(ef);
         when(endpoint.getComponent()).thenReturn(component);
@@ -59,7 +59,7 @@ public class KafkaConsumerTest {
     @Test
     public void consumerOnlyRequiresBootstrapServers() {
         when(endpoint.getCamelContext()).thenReturn(context);
-        when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(context.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(ef);
         when(ef.newExchangeFactory(any())).thenReturn(ef);
         when(endpoint.getComponent()).thenReturn(component);
diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java
index be36c152ed8..02271f772c7 100755
--- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java
+++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaProducerTest.java
@@ -100,7 +100,7 @@ public class KafkaProducerTest {
         Mockito.when(exchange.getContext()).thenReturn(context);
         Mockito.when(context.getTypeConverter()).thenReturn(converter);
         Mockito.when(converter.tryConvertTo(String.class, exchange, null)).thenReturn(null);
-        Mockito.when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        Mockito.when(context.getCamelContextExtension()).thenReturn(ecc);
         Mockito.when(ecc.getHeadersMapFactory())
                 .thenReturn(new DefaultHeadersMapFactory());
         Mockito.when(context.getTypeConverter()).thenReturn(converter);
diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/integration/KafkaConsumerAuthInvalidIT.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/integration/KafkaConsumerAuthInvalidIT.java
index 383360e0eea..6a2011994d5 100644
--- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/integration/KafkaConsumerAuthInvalidIT.java
+++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/integration/KafkaConsumerAuthInvalidIT.java
@@ -22,7 +22,6 @@ import java.util.Properties;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.kafka.MockConsumerInterceptor;
 import org.apache.camel.component.kafka.integration.common.KafkaAdminUtil;
@@ -119,7 +118,7 @@ public class KafkaConsumerAuthInvalidIT {
                 final String simpleSaslJaasConfig
                         = ContainerLocalAuthKafkaService.generateSimpleSaslJaasConfig("camel", "camel-invalid-secret");
 
-                getCamelContext().adapt(ExtendedCamelContext.class)
+                getCamelContext().getCamelContextExtension()
                         .setErrorHandlerFactory(
                                 deadLetterChannel("mock:dlq"));
 
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
index 903ac603989..bb4cce509d2 100644
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
+++ b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
@@ -133,7 +133,7 @@ public class KnativeEnvironment {
      * @throws IOException if an error occur while parsing the file
      */
     public static KnativeEnvironment mandatoryLoadFromProperties(CamelContext context, Map<String, Object> properties) {
-        final ExtendedCamelContext econtext = context.adapt(ExtendedCamelContext.class);
+        final ExtendedCamelContext econtext = context.getCamelContextExtension();
         final KnativeEnvironment environment = new KnativeEnvironment();
 
         PropertyBindingSupport.build()
diff --git a/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java b/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
index a19efed7237..e82c2a07041 100644
--- a/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
+++ b/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
@@ -22,7 +22,6 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.knative.spi.Knative;
 import org.apache.camel.component.knative.spi.KnativeConsumerFactory;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
@@ -287,7 +286,7 @@ public class KnativeComponent extends DefaultComponent {
 
             if (this.producerFactory == null) {
                 this.producerFactory = getCamelContext()
-                        .adapt(ExtendedCamelContext.class)
+                        .getCamelContextExtension()
                         .getBootstrapFactoryFinder(Knative.KNATIVE_TRANSPORT_RESOURCE_PATH)
                         .newInstance(protocol.name() + "-producer", KnativeProducerFactory.class)
                         .orElse(null);
@@ -315,7 +314,7 @@ public class KnativeComponent extends DefaultComponent {
 
             if (this.consumerFactory == null) {
                 this.consumerFactory = getCamelContext()
-                        .adapt(ExtendedCamelContext.class)
+                        .getCamelContextExtension()
                         .getBootstrapFactoryFinder(Knative.KNATIVE_TRANSPORT_RESOURCE_PATH)
                         .newInstance(protocol.name() + "-consumer", KnativeConsumerFactory.class)
                         .orElse(null);
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java
index d2a313354e1..a292778d2ac 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java
@@ -29,7 +29,6 @@ import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.kubernetes.client.KubernetesClientBuilder;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.PropertiesComponent;
 import org.apache.camel.spi.PropertiesFunction;
 import org.apache.camel.spi.PropertyConfigurer;
@@ -106,7 +105,7 @@ abstract class BasePropertiesFunction extends ServiceSupport implements Properti
             if (!properties.isEmpty()) {
                 ConfigBuilder config = new ConfigBuilder();
 
-                PropertyConfigurer configurer = camelContext.adapt(ExtendedCamelContext.class)
+                PropertyConfigurer configurer = camelContext.getCamelContextExtension()
                         .getConfigurerResolver().resolvePropertyConfigurer(ConfigBuilder.class.getName(), camelContext);
 
                 // use copy to keep track of which options was configureed or not
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java
index 15a4659adc9..4d57d28f96d 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java
@@ -20,7 +20,6 @@ import java.util.Map;
 
 import io.fabric8.kubernetes.client.ConfigBuilder;
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.support.PropertyBindingSupport;
@@ -36,7 +35,7 @@ public class KubernetesClientConfigureTest {
 
         ConfigBuilder config = new ConfigBuilder();
 
-        PropertyConfigurer configurer = context.adapt(ExtendedCamelContext.class).getConfigurerResolver()
+        PropertyConfigurer configurer = context.getCamelContextExtension().getConfigurerResolver()
                 .resolvePropertyConfigurer(ConfigBuilder.class.getName(), context);
         Assertions.assertNotNull(configurer, "Cannot find generated configurer");
 
diff --git a/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java b/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java
index f33e0a3c9f3..0984b82e9ad 100644
--- a/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java
+++ b/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.log;
 
 import org.apache.camel.Category;
 import org.apache.camel.Component;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LineNumberAware;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
@@ -288,7 +287,7 @@ public class LogEndpoint extends ProcessorEndpoint implements LineNumberAware {
         } else {
             answer = new CamelLogProcessor(
                     camelLogger, localFormatter, getMaskingFormatter(),
-                    getCamelContext().adapt(ExtendedCamelContext.class).getLogListeners());
+                    getCamelContext().getCamelContextExtension().getLogListeners());
         }
         // the logger is the processor
         setProcessor(answer);
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
index 3304f10b1c3..d701de35f63 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
@@ -38,7 +38,6 @@ import com.sun.mail.imap.IMAPStore;
 import com.sun.mail.imap.SortTerm;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.attachment.Attachment;
@@ -271,7 +270,7 @@ public class MailConsumer extends ScheduledBatchPollingConsumer {
             try {
                 LOG.trace("Calling setPeek(true) on mail message {}", mail);
                 BeanIntrospection beanIntrospection
-                        = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+                        = getEndpoint().getCamelContext().getCamelContextExtension().getBeanIntrospection();
                 beanIntrospection.setProperty(getEndpoint().getCamelContext(), mail, "peek", true);
             } catch (Exception e) {
                 // ignore
diff --git a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailConsumerAuthenticatorTest.java b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailConsumerAuthenticatorTest.java
index 9f02157b71a..3adfedf2829 100644
--- a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailConsumerAuthenticatorTest.java
+++ b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailConsumerAuthenticatorTest.java
@@ -72,7 +72,7 @@ public class MailConsumerAuthenticatorTest {
         Session session = Session.getDefaultInstance(props, authenticator);
 
         when(sender.getSession()).thenReturn(session);
-        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(camelContext.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(ef);
         when(ef.newExchangeFactory(any())).thenReturn(ef);
 
diff --git a/components/camel-mapstruct/src/main/java/org/apache/camel/component/mapstruct/DefaultMapStructFinder.java b/components/camel-mapstruct/src/main/java/org/apache/camel/component/mapstruct/DefaultMapStructFinder.java
index 7e1f93bcde6..6d2ce09841b 100644
--- a/components/camel-mapstruct/src/main/java/org/apache/camel/component/mapstruct/DefaultMapStructFinder.java
+++ b/components/camel-mapstruct/src/main/java/org/apache/camel/component/mapstruct/DefaultMapStructFinder.java
@@ -96,7 +96,7 @@ public class DefaultMapStructFinder extends ServiceSupport implements MapStructM
     protected void doInit() throws Exception {
         if (mapperPackageName != null) {
             String[] names = mapperPackageName.split(",");
-            ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
+            ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
             var set = ecc.getPackageScanClassResolver()
                     .findByFilter(f -> f.getName().endsWith("Mapper"), names);
             if (!set.isEmpty()) {
diff --git a/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java b/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java
index da7099222bf..680b6a98c12 100644
--- a/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java
+++ b/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java
@@ -79,7 +79,7 @@ public class MetricsComponentTest {
         when(camelContext.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
         when(camelRegistry.lookupByNameAndType(MetricsComponent.METRIC_REGISTRY_NAME, MetricRegistry.class))
                 .thenReturn(metricRegistry);
-        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(camelContext.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getBeanIntrospection()).thenReturn(new DefaultBeanIntrospection());
         when(ecc.getConfigurerResolver()).thenReturn((name, context) -> null);
 
@@ -108,7 +108,7 @@ public class MetricsComponentTest {
         when(camelContext.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
         when(camelRegistry.lookupByNameAndType(MetricsComponent.METRIC_REGISTRY_NAME, MetricRegistry.class))
                 .thenReturn(metricRegistry);
-        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(camelContext.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getBeanIntrospection()).thenReturn(new DefaultBeanIntrospection());
         when(ecc.getConfigurerResolver()).thenReturn((name, context) -> null);
 
diff --git a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceProcessor.java b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceProcessor.java
index 95dce1dbbf2..435f051b339 100644
--- a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceProcessor.java
+++ b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceProcessor.java
@@ -38,7 +38,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Navigate;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -305,9 +304,9 @@ public class FaultToleranceProcessor extends AsyncProcessorSupport
     protected void doBuild() throws Exception {
         ObjectHelper.notNull(camelContext, "CamelContext", this);
 
-        boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
+        boolean pooled = camelContext.getCamelContextExtension().getExchangeFactory().isPooled();
         if (pooled) {
-            int capacity = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().getCapacity();
+            int capacity = camelContext.getCamelContextExtension().getExchangeFactory().getCapacity();
             taskFactory = new PooledTaskFactory(getId()) {
                 @Override
                 public PooledExchangeTask create(Exchange exchange, AsyncCallback callback) {
@@ -338,7 +337,7 @@ public class FaultToleranceProcessor extends AsyncProcessorSupport
         }
 
         // create a per processor exchange factory
-        this.processorExchangeFactory = getCamelContext().adapt(ExtendedCamelContext.class)
+        this.processorExchangeFactory = getCamelContext().getCamelContextExtension()
                 .getProcessorExchangeFactory().newProcessorExchangeFactory(this);
         this.processorExchangeFactory.setRouteId(getRouteId());
         this.processorExchangeFactory.setId(getId());
@@ -443,7 +442,7 @@ public class FaultToleranceProcessor extends AsyncProcessorSupport
                     uow = copy.getUnitOfWork();
                 } else {
                     // prepare uow on copy
-                    uow = copy.getContext().adapt(ExtendedCamelContext.class).getUnitOfWorkFactory().createUnitOfWork(copy);
+                    uow = copy.getContext().getCamelContextExtension().getUnitOfWorkFactory().createUnitOfWork(copy);
                     copy.getExchangeExtension().setUnitOfWork(uow);
                     // the copy must be starting from the route where its copied from
                     Route route = ExchangeHelper.getRoute(exchange);
diff --git a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceReifier.java b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceReifier.java
index 866a6ac1e70..31ef4e37bbf 100644
--- a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceReifier.java
+++ b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceReifier.java
@@ -22,7 +22,6 @@ import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 
 import io.smallrye.faulttolerance.core.circuit.breaker.CircuitBreaker;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.model.CircuitBreakerDefinition;
@@ -133,7 +132,7 @@ public class FaultToleranceReifier extends ProcessorReifier<CircuitBreakerDefini
     FaultToleranceConfigurationDefinition buildFaultToleranceConfiguration() throws Exception {
         Map<String, Object> properties = new HashMap<>();
 
-        final PropertyConfigurer configurer = camelContext.adapt(ExtendedCamelContext.class)
+        final PropertyConfigurer configurer = camelContext.getCamelContextExtension()
                 .getConfigurerResolver()
                 .resolvePropertyConfigurer(FaultToleranceConfigurationDefinition.class.getName(), camelContext);
 
@@ -172,7 +171,7 @@ public class FaultToleranceReifier extends ProcessorReifier<CircuitBreakerDefini
     }
 
     private void loadProperties(Map<String, Object> properties, Optional<?> optional, PropertyConfigurer configurer) {
-        BeanIntrospection beanIntrospection = camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection beanIntrospection = camelContext.getCamelContextExtension().getBeanIntrospection();
         optional.ifPresent(bean -> {
             if (configurer instanceof ExtendedPropertyConfigurerGetter) {
                 ExtendedPropertyConfigurerGetter getter = (ExtendedPropertyConfigurerGetter) configurer;
diff --git a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRefConfigurationNoReflectionTest.java b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRefConfigurationNoReflectionTest.java
index e7cc9c110da..785253efaaf 100644
--- a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRefConfigurationNoReflectionTest.java
+++ b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRefConfigurationNoReflectionTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.microprofile.faulttolerance;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -42,7 +41,7 @@ public class FaultToleranceRefConfigurationNoReflectionTest extends CamelTestSup
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
 
-        bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        bi = context.getCamelContextExtension().getBeanIntrospection();
         bi.setLoggingLevel(LoggingLevel.INFO);
         bi.resetCounters();
 
diff --git a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRouteOkTest.java b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRouteOkTest.java
index 7dc8a5a9dc8..503ba608011 100644
--- a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRouteOkTest.java
+++ b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/test/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceRouteOkTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.microprofile.faulttolerance;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -41,7 +40,7 @@ public class FaultToleranceRouteOkTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
 
-        bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        bi = context.getCamelContextExtension().getBeanIntrospection();
         bi.setLoggingLevel(LoggingLevel.INFO);
         bi.resetCounters();
 
diff --git a/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index 37a9f8cee63..628448ec111 100644
--- a/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -41,7 +41,6 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Handler;
 import org.apache.camel.Message;
 import org.apache.camel.Predicate;
@@ -580,7 +579,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint,
             expectedMinimumMessageCount(1);
         }
         if (expectedHeaderValues == null) {
-            HeadersMapFactory factory = getCamelContext().adapt(ExtendedCamelContext.class).getHeadersMapFactory();
+            HeadersMapFactory factory = getCamelContext().getCamelContextExtension().getHeadersMapFactory();
             if (factory != null) {
                 expectedHeaderValues = factory.newMap();
             } else {
@@ -1675,7 +1674,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint,
 
         if (expectedHeaderValues != null) {
             if (actualHeaderValues == null) {
-                HeadersMapFactory factory = getCamelContext().adapt(ExtendedCamelContext.class).getHeadersMapFactory();
+                HeadersMapFactory factory = getCamelContext().getCamelContextExtension().getHeadersMapFactory();
                 if (factory != null) {
                     actualHeaderValues = factory.newMap();
                 } else {
diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java
index 6d86e5ad7e9..9350203ccdb 100644
--- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java
+++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java
@@ -23,7 +23,6 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.SSLContextParametersAware;
@@ -104,7 +103,7 @@ public class NettyHttpComponent extends NettyComponent
                 "bootstrapConfiguration", NettyServerBootstrapConfiguration.class);
         if (bootstrapConfiguration != null) {
             Map<String, Object> options = new HashMap<>();
-            BeanIntrospection beanIntrospection = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+            BeanIntrospection beanIntrospection = getCamelContext().getCamelContextExtension().getBeanIntrospection();
             if (beanIntrospection.getProperties(bootstrapConfiguration, options, null, false)) {
                 PropertyBindingSupport.bindProperties(getCamelContext(), config, options);
             }
diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpEndpointUriAssemblerTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpEndpointUriAssemblerTest.java
index b2c78629e9b..a55745e853f 100644
--- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpEndpointUriAssemblerTest.java
+++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpEndpointUriAssemblerTest.java
@@ -20,7 +20,6 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.EndpointUriFactory;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
@@ -31,7 +30,7 @@ public class NettyHttpEndpointUriAssemblerTest extends CamelTestSupport {
 
     @Test
     public void testAsEndpointUriNettyHttpHostnameWithDash() throws Exception {
-        EndpointUriFactory assembler = context.adapt(ExtendedCamelContext.class).getEndpointUriFactory("netty-http");
+        EndpointUriFactory assembler = context.getCamelContextExtension().getEndpointUriFactory("netty-http");
 
         Map<String, Object> map = new LinkedHashMap<>();
         map.put("protocol", "http");
diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpSimplePooledExchangeTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpSimplePooledExchangeTest.java
index d2439a5427f..282859e4b77 100644
--- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpSimplePooledExchangeTest.java
+++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpSimplePooledExchangeTest.java
@@ -63,7 +63,7 @@ public class NettyHttpSimplePooledExchangeTest extends BaseNettyTest {
 
         Awaitility.waitAtMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
             PooledObjectFactory.Statistics stat
-                    = context.adapt(ExtendedCamelContext.class).getExchangeFactoryManager().getStatistics();
+                    = context.getCamelContextExtension().getExchangeFactoryManager().getStatistics();
             assertEquals(1, stat.getCreatedCounter());
             assertEquals(0, stat.getAcquiredCounter());
             assertEquals(1, stat.getReleasedCounter());
@@ -92,7 +92,7 @@ public class NettyHttpSimplePooledExchangeTest extends BaseNettyTest {
 
         Awaitility.waitAtMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
             PooledObjectFactory.Statistics stat
-                    = context.adapt(ExtendedCamelContext.class).getExchangeFactoryManager().getStatistics();
+                    = context.getCamelContextExtension().getExchangeFactoryManager().getStatistics();
             assertEquals(1, stat.getCreatedCounter());
             assertEquals(2, stat.getAcquiredCounter());
             assertEquals(3, stat.getReleasedCounter());
diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/ProxyProtocolTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/ProxyProtocolTest.java
index f270329b79e..041874b5699 100644
--- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/ProxyProtocolTest.java
+++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/ProxyProtocolTest.java
@@ -155,7 +155,7 @@ public class ProxyProtocolTest {
         final ShutdownStrategy shutdownStrategy = context.getShutdownStrategy();
         shutdownStrategy.setTimeout(100);
         shutdownStrategy.setTimeUnit(TimeUnit.MILLISECONDS);
-        shutdownStrategy.shutdownForced(context, context.getRouteStartupOrder());
+        shutdownStrategy.shutdownForced(context, context.getCamelContextExtension().getRouteStartupOrder());
 
         context.stop();
     }
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java
index 4e62bdb2578..d810fdc3071 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java
@@ -25,7 +25,6 @@ import io.netty.util.concurrent.EventExecutorGroup;
 import io.netty.util.internal.SystemPropertyUtil;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.SSLContextParametersAware;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.Metadata;
@@ -86,7 +85,7 @@ public class NettyComponent extends DefaultComponent implements SSLContextParame
                 "bootstrapConfiguration", NettyServerBootstrapConfiguration.class);
         if (bootstrapConfiguration != null) {
             Map<String, Object> options = new HashMap<>();
-            BeanIntrospection beanIntrospection = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+            BeanIntrospection beanIntrospection = getCamelContext().getCamelContextExtension().getBeanIntrospection();
             if (beanIntrospection.getProperties(bootstrapConfiguration, options, null, false)) {
                 PropertyBindingSupport.bindProperties(getCamelContext(), config, options);
             }
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
index 19a98838e60..9a9f31f2014 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
@@ -30,7 +30,6 @@ import io.netty.handler.codec.Delimiters;
 import io.netty.handler.ssl.SslHandler;
 import io.netty.util.CharsetUtil;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.Configurer;
@@ -227,7 +226,7 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem
 
         // then set parameters with the help of the camel context type converters
         // and use configurer to avoid any reflection calls
-        PropertyConfigurer configurer = component.getCamelContext().adapt(ExtendedCamelContext.class).getConfigurerResolver()
+        PropertyConfigurer configurer = component.getCamelContext().getCamelContextExtension().getConfigurerResolver()
                 .resolvePropertyConfigurer(this.getClass().getName(), component.getCamelContext());
         PropertyBindingSupport.build()
                 .withCamelContext(component.getCamelContext())
diff --git a/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyTextlineInOnlyPooledExchangeTest.java b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyTextlineInOnlyPooledExchangeTest.java
index 467b720d934..b83df955509 100644
--- a/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyTextlineInOnlyPooledExchangeTest.java
+++ b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyTextlineInOnlyPooledExchangeTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.netty;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.engine.PooledExchangeFactory;
@@ -28,7 +27,7 @@ public class NettyTextlineInOnlyPooledExchangeTest extends BaseNettyTest {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
-        camelContext.adapt(ExtendedCamelContext.class).setExchangeFactory(new PooledExchangeFactory());
+        camelContext.getCamelContextExtension().setExchangeFactory(new PooledExchangeFactory());
         return camelContext;
     }
 
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
index 628b7d17a1d..b8c22f20d67 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
@@ -25,7 +25,6 @@ import java.util.Set;
 
 import org.apache.camel.Category;
 import org.apache.camel.Consumer;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.component.olingo2.internal.Olingo2ApiCollection;
@@ -140,7 +139,7 @@ public class Olingo2Endpoint extends AbstractApiEndpoint<Olingo2ApiName, Olingo2
             }
         }
         // configure on configuration first to be reflection free
-        configurer = getCamelContext().adapt(ExtendedCamelContext.class).getConfigurerResolver()
+        configurer = getCamelContext().getCamelContextExtension().getConfigurerResolver()
                 .resolvePropertyConfigurer(configuration.getClass().getName(), getCamelContext());
         if (configurer != null) {
             PropertyBindingSupport.build()
diff --git a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java
index 3036f16aecf..46d65c10112 100644
--- a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java
+++ b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java
@@ -25,7 +25,6 @@ import java.util.Set;
 
 import org.apache.camel.Category;
 import org.apache.camel.Consumer;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.component.olingo4.internal.Olingo4ApiCollection;
@@ -140,7 +139,7 @@ public class Olingo4Endpoint extends AbstractApiEndpoint<Olingo4ApiName, Olingo4
             }
         }
         // configure on configuration first to be reflection free
-        configurer = getCamelContext().adapt(ExtendedCamelContext.class).getConfigurerResolver()
+        configurer = getCamelContext().getCamelContextExtension().getConfigurerResolver()
                 .resolvePropertyConfigurer(configuration.getClass().getName(), getCamelContext());
         if (configurer != null) {
             PropertyBindingSupport.build()
diff --git a/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentConsumerTest.java b/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentConsumerTest.java
index 611440193ec..29bf30943e0 100644
--- a/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentConsumerTest.java
+++ b/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentConsumerTest.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.olingo4;
 import java.util.Iterator;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -57,8 +56,8 @@ public class Olingo4ComponentConsumerTest extends AbstractOlingo4TestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.adapt(ExtendedCamelContext.class).getBeanIntrospection().setLoggingLevel(LoggingLevel.INFO);
-        context.adapt(ExtendedCamelContext.class).getBeanIntrospection().setExtendedStatistics(true);
+        context.getCamelContextExtension().getBeanIntrospection().setLoggingLevel(LoggingLevel.INFO);
+        context.getCamelContextExtension().getBeanIntrospection().setExtendedStatistics(true);
         return context;
     }
 
@@ -93,7 +92,7 @@ public class Olingo4ComponentConsumerTest extends AbstractOlingo4TestSupport {
         }
 
         // should be reflection free
-        long counter = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long counter = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
         assertEquals(0, counter);
     }
 
@@ -277,7 +276,7 @@ public class Olingo4ComponentConsumerTest extends AbstractOlingo4TestSupport {
         assertEquals("San Francisco International Airport", nameProp.getValue().toString());
 
         // should be reflection free
-        long counter = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long counter = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
         assertEquals(0, counter);
     }
 
diff --git a/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentProducerTest.java b/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentProducerTest.java
index 5713d87e499..7a96e112023 100644
--- a/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentProducerTest.java
+++ b/components/camel-olingo4/camel-olingo4-component/src/test/java/org/apache/camel/component/olingo4/Olingo4ComponentProducerTest.java
@@ -24,7 +24,6 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelExecutionException;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -81,8 +80,8 @@ public class Olingo4ComponentProducerTest extends AbstractOlingo4TestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.adapt(ExtendedCamelContext.class).getBeanIntrospection().setLoggingLevel(LoggingLevel.INFO);
-        context.adapt(ExtendedCamelContext.class).getBeanIntrospection().setExtendedStatistics(true);
+        context.getCamelContextExtension().getBeanIntrospection().setLoggingLevel(LoggingLevel.INFO);
+        context.getCamelContextExtension().getBeanIntrospection().setExtendedStatistics(true);
         return context;
     }
 
@@ -144,7 +143,7 @@ public class Olingo4ComponentProducerTest extends AbstractOlingo4TestSupport {
         assertNotNull(unbFuncReturn);
 
         // should be reflection free
-        long counter = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long counter = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
         assertEquals(0, counter);
     }
 
diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
index 14956d3442a..319300f803c 100644
--- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
+++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
@@ -80,7 +80,6 @@ import io.swagger.v3.oas.models.media.DateSchema;
 import io.swagger.v3.oas.models.media.DateTimeSchema;
 import io.swagger.v3.oas.models.media.PasswordSchema;
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.model.rest.ApiKeyDefinition;
 import org.apache.camel.model.rest.BasicAuthDefinition;
 import org.apache.camel.model.rest.BearerTokenDefinition;
@@ -542,7 +541,7 @@ public class RestOpenApiReader {
             } else if (rest.getId() != null) {
                 operationId = getValue(camelContext, rest.getId());
             } else {
-                verb.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+                verb.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
                 operationId = verb.getId();
             }
             op.operationId = operationId;
diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java
index b1cf571ca4f..3fae7fabc0f 100644
--- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java
+++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java
@@ -40,7 +40,6 @@ import io.apicurio.datamodels.openapi.v3.models.Oas30Info;
 import io.apicurio.datamodels.openapi.v3.models.Oas30Server;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.RestConfiguration;
@@ -358,7 +357,7 @@ public class RestOpenApiSupport {
     protected RestDefinitionsResolver createJmxRestDefinitionsResolver(CamelContext camelContext) {
         return ResolverHelper.resolveService(
                 camelContext,
-                camelContext.adapt(ExtendedCamelContext.class).getBootstrapFactoryFinder(),
+                camelContext.getCamelContextExtension().getBootstrapFactoryFinder(),
                 JMX_REST_DEFINITION_RESOLVER,
                 RestDefinitionsResolver.class)
                 .orElseThrow(
diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java
index 90f6cd56a60..6d446b9822a 100644
--- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java
+++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java
@@ -68,7 +68,7 @@ public class JmxRestDefinitionsResolver implements RestDefinitionsResolver {
             if (xml != null) {
                 LOG.debug("DumpRestAsXml:\n{}", xml);
 
-                ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
+                ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
                 Resource resource = ecc.getResourceLoader().resolveResource("mem:" + xml);
                 RestsDefinition rests = new ModelParser(resource).parseRestsDefinition().orElse(null);
                 if (rests != null) {
diff --git a/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java b/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java
index 95ed466ea73..781e0e1d628 100644
--- a/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java
+++ b/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/AbstractProducerTestSupport.java
@@ -54,7 +54,7 @@ public abstract class AbstractProducerTestSupport {
     public void before() {
         msg = new DefaultMessage(camelContext);
         when(exchange.getIn()).thenReturn(msg);
-        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
-        when(camelContext.adapt(ExtendedCamelContext.class).getHeadersMapFactory()).thenReturn(new DefaultHeadersMapFactory());
+        when(camelContext.getCamelContextExtension()).thenReturn(ecc);
+        when(camelContext.getCamelContextExtension().getHeadersMapFactory()).thenReturn(new DefaultHeadersMapFactory());
     }
 }
diff --git a/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/PgEventConsumerTest.java b/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/PgEventConsumerTest.java
index db1fa952f7c..cce3b75600c 100644
--- a/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/PgEventConsumerTest.java
+++ b/components/camel-pgevent/src/test/java/org/apache/camel/pgevent/PgEventConsumerTest.java
@@ -54,7 +54,7 @@ public class PgEventConsumerTest {
         ExchangeFactory ef = mock(ExchangeFactory.class);
 
         when(endpoint.getCamelContext()).thenReturn(camelContext);
-        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(camelContext.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(ef);
         when(ef.newExchangeFactory(any())).thenReturn(ef);
         when(endpoint.getDatasource()).thenReturn(dataSource);
@@ -81,7 +81,7 @@ public class PgEventConsumerTest {
         ExchangeFactory ef = mock(ExchangeFactory.class);
 
         when(endpoint.getCamelContext()).thenReturn(camelContext);
-        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(camelContext.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(ef);
         when(ef.newExchangeFactory(any())).thenReturn(ef);
         when(endpoint.getDatasource()).thenReturn(dataSource);
@@ -111,7 +111,7 @@ public class PgEventConsumerTest {
         ExchangeFactory ef = mock(ExchangeFactory.class);
 
         when(endpoint.getCamelContext()).thenReturn(camelContext);
-        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(camelContext.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(ef);
         when(ef.newExchangeFactory(any())).thenReturn(ef);
         when(ef.create(endpoint, false)).thenReturn(exchange);
diff --git a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java
index 714109041dd..9dec43d582a 100644
--- a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java
+++ b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java
@@ -25,7 +25,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
 import org.apache.camel.spi.FactoryFinder;
@@ -236,7 +235,7 @@ public class PlatformHttpComponent extends DefaultComponent implements RestConsu
                         LOG.debug("Lookup platform http engine from factory");
 
                         engine = getCamelContext()
-                                .adapt(ExtendedCamelContext.class)
+                                .getCamelContextExtension()
                                 .getFactoryFinder(FactoryFinder.DEFAULT_PATH)
                                 .newInstance(PlatformHttpConstants.PLATFORM_HTTP_ENGINE_FACTORY, PlatformHttpEngine.class)
                                 .orElseThrow(() -> new IllegalStateException(
diff --git a/components/camel-reactive-executor-tomcat/src/test/java/org/apache/camel/reactive/SimpleMockTest.java b/components/camel-reactive-executor-tomcat/src/test/java/org/apache/camel/reactive/SimpleMockTest.java
index bf7ad8aae7b..b4f52ef35eb 100644
--- a/components/camel-reactive-executor-tomcat/src/test/java/org/apache/camel/reactive/SimpleMockTest.java
+++ b/components/camel-reactive-executor-tomcat/src/test/java/org/apache/camel/reactive/SimpleMockTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.reactive;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.reactive.tomcat.TomcatReactiveExecutor;
@@ -36,7 +35,7 @@ public class SimpleMockTest extends CamelTestSupport {
 
         MockEndpoint.assertIsSatisfied(context);
 
-        ReactiveExecutor re = context.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        ReactiveExecutor re = context.getCamelContextExtension().getReactiveExecutor();
         Assertions.assertInstanceOf(TomcatReactiveExecutor.class, re);
     }
 
@@ -50,7 +49,7 @@ public class SimpleMockTest extends CamelTestSupport {
 
         MockEndpoint.assertIsSatisfied(context);
 
-        ReactiveExecutor re = context.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        ReactiveExecutor re = context.getCamelContextExtension().getReactiveExecutor();
         Assertions.assertInstanceOf(TomcatReactiveExecutor.class, re);
     }
 
diff --git a/components/camel-reactive-executor-vertx/src/test/java/org/apache/camel/reactive/SimpleMockTest.java b/components/camel-reactive-executor-vertx/src/test/java/org/apache/camel/reactive/SimpleMockTest.java
index 6005414fdc1..b9ca311a8aa 100644
--- a/components/camel-reactive-executor-vertx/src/test/java/org/apache/camel/reactive/SimpleMockTest.java
+++ b/components/camel-reactive-executor-vertx/src/test/java/org/apache/camel/reactive/SimpleMockTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.reactive;
 
 import io.vertx.core.Vertx;
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.reactive.vertx.VertXReactiveExecutor;
@@ -33,7 +32,7 @@ public class SimpleMockTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
 
-        VertXReactiveExecutor re = (VertXReactiveExecutor) context.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        VertXReactiveExecutor re = (VertXReactiveExecutor) context.getCamelContextExtension().getReactiveExecutor();
         re.setVertx(vertx);
 
         return context;
diff --git a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java
index 4b1da0f7355..e15379bbf78 100644
--- a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java
+++ b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.reactive.streams;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsService;
 import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsServiceFactory;
 import org.apache.camel.component.reactive.streams.api.DispatchCallback;
@@ -117,7 +116,7 @@ public final class ReactiveStreamsHelper {
     public static CamelReactiveStreamsServiceFactory resolveServiceFactory(CamelContext context, String serviceType) {
         try {
             FactoryFinder finder
-                    = context.adapt(ExtendedCamelContext.class).getFactoryFinder(ReactiveStreamsConstants.SERVICE_PATH);
+                    = context.getCamelContextExtension().getFactoryFinder(ReactiveStreamsConstants.SERVICE_PATH);
             Class<?> serviceClass = finder.findClass(serviceType).orElse(null);
             if (serviceClass != null) {
                 return (CamelReactiveStreamsServiceFactory) context.getInjector().newInstance(serviceClass);
diff --git a/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BaseReactiveTest.java b/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BaseReactiveTest.java
index ef0d35d5331..56477a6983f 100644
--- a/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BaseReactiveTest.java
+++ b/components/camel-reactive-streams/src/test/java/org/apache/camel/component/reactive/streams/BaseReactiveTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.reactive.streams;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.impl.engine.PrototypeExchangeFactory;
 import org.apache.camel.test.junit5.CamelTestSupport;
 
@@ -27,7 +26,7 @@ public abstract class BaseReactiveTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
         // must run in prototype scope
-        context.adapt(ExtendedCamelContext.class).setExchangeFactory(new PrototypeExchangeFactory());
+        context.getCamelContextExtension().setExchangeFactory(new PrototypeExchangeFactory());
         return context;
     }
 
diff --git a/components/camel-reactor/src/test/java/org/apache/camel/component/reactor/engine/ReactorStreamsServiceTestSupport.java b/components/camel-reactor/src/test/java/org/apache/camel/component/reactor/engine/ReactorStreamsServiceTestSupport.java
index 045c8133a6a..87dbaf07acc 100644
--- a/components/camel-reactor/src/test/java/org/apache/camel/component/reactor/engine/ReactorStreamsServiceTestSupport.java
+++ b/components/camel-reactor/src/test/java/org/apache/camel/component/reactor/engine/ReactorStreamsServiceTestSupport.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.reactor.engine;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsComponent;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsConstants;
 import org.apache.camel.component.reactive.streams.api.CamelReactiveStreams;
@@ -34,7 +33,7 @@ class ReactorStreamsServiceTestSupport extends CamelTestSupport {
         CamelContext context = super.createCamelContext();
 
         // camel-reactor does not work with pooled exchanges
-        context.adapt(ExtendedCamelContext.class).setExchangeFactory(new PrototypeExchangeFactory());
+        context.getCamelContextExtension().setExchangeFactory(new PrototypeExchangeFactory());
 
         context.addComponent(
                 ReactiveStreamsConstants.SCHEME,
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java
index 97a8aa9a17e..5c8228155c0 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java
@@ -40,7 +40,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Navigate;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -113,9 +112,9 @@ public class ResilienceProcessor extends AsyncProcessorSupport
             bulkhead = Bulkhead.of(id, bulkheadConfig);
         }
 
-        boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
+        boolean pooled = camelContext.getCamelContextExtension().getExchangeFactory().isPooled();
         if (pooled) {
-            int capacity = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().getCapacity();
+            int capacity = camelContext.getCamelContextExtension().getExchangeFactory().getCapacity();
             taskFactory = new PooledTaskFactory(getId()) {
                 @Override
                 public PooledExchangeTask create(Exchange exchange, AsyncCallback callback) {
@@ -146,7 +145,7 @@ public class ResilienceProcessor extends AsyncProcessorSupport
         }
 
         // create a per processor exchange factory
-        this.processorExchangeFactory = getCamelContext().adapt(ExtendedCamelContext.class)
+        this.processorExchangeFactory = getCamelContext().getCamelContextExtension()
                 .getProcessorExchangeFactory().newProcessorExchangeFactory(this);
         this.processorExchangeFactory.setRouteId(getRouteId());
         this.processorExchangeFactory.setId(getId());
@@ -524,7 +523,7 @@ public class ResilienceProcessor extends AsyncProcessorSupport
                 uow = copy.getUnitOfWork();
             } else {
                 // prepare uow on copy
-                uow = copy.getContext().adapt(ExtendedCamelContext.class).getUnitOfWorkFactory().createUnitOfWork(copy);
+                uow = copy.getContext().getCamelContextExtension().getUnitOfWorkFactory().createUnitOfWork(copy);
                 copy.getExchangeExtension().setUnitOfWork(uow);
                 // the copy must be starting from the route where its copied from
                 Route route = ExchangeHelper.getRoute(exchange);
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
index 9b1b66cff83..b0526b33ad5 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
@@ -26,7 +26,6 @@ import io.github.resilience4j.bulkhead.BulkheadConfig;
 import io.github.resilience4j.circuitbreaker.CircuitBreaker;
 import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
 import io.github.resilience4j.timelimiter.TimeLimiterConfig;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.model.CircuitBreakerDefinition;
@@ -177,7 +176,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
     Resilience4jConfigurationDefinition buildResilience4jConfiguration() throws Exception {
         Map<String, Object> properties = new HashMap<>();
 
-        final PropertyConfigurer configurer = camelContext.adapt(ExtendedCamelContext.class)
+        final PropertyConfigurer configurer = camelContext.getCamelContextExtension()
                 .getConfigurerResolver()
                 .resolvePropertyConfigurer(Resilience4jConfigurationDefinition.class.getName(), camelContext);
 
@@ -216,7 +215,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
     }
 
     private void loadProperties(Map<String, Object> properties, Optional<?> optional, PropertyConfigurer configurer) {
-        BeanIntrospection beanIntrospection = camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection beanIntrospection = camelContext.getCamelContextExtension().getBeanIntrospection();
         optional.ifPresent(bean -> {
             if (configurer instanceof ExtendedPropertyConfigurerGetter) {
                 ExtendedPropertyConfigurerGetter getter = (ExtendedPropertyConfigurerGetter) configurer;
diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResiliencePooledRouteOkTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResiliencePooledRouteOkTest.java
index 495faef464a..1336a62c50d 100644
--- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResiliencePooledRouteOkTest.java
+++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResiliencePooledRouteOkTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.resilience4j;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -41,9 +40,9 @@ public class ResiliencePooledRouteOkTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.adapt(ExtendedCamelContext.class).setExchangeFactory(new PooledExchangeFactory());
+        context.getCamelContextExtension().setExchangeFactory(new PooledExchangeFactory());
 
-        bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        bi = context.getCamelContextExtension().getBeanIntrospection();
         bi.setLoggingLevel(LoggingLevel.INFO);
         bi.resetCounters();
 
diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java
index a2a740aa004..eea15802ae6 100644
--- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java
+++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.resilience4j;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -41,7 +40,7 @@ public class ResilienceRouteOkTest extends CamelTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
 
-        bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        bi = context.getCamelContextExtension().getBeanIntrospection();
         bi.setLoggingLevel(LoggingLevel.INFO);
         bi.resetCounters();
 
diff --git a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java
index fe24b4a8365..8cf2263fe64 100644
--- a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java
+++ b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java
@@ -29,7 +29,7 @@ public class GistResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGist() throws Exception {
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource res = ecc.getResourceLoader().resolveResource("gist:davsclaus:123:456:beer.xml");
         assertNotNull(res);
         assertFalse(res.exists());
diff --git a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java
index fb20222e316..43453d1c917 100644
--- a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java
+++ b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java
@@ -29,7 +29,7 @@ public class GitHubResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGitHubLoadPom() throws Exception {
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource res = ecc.getResourceLoader().resolveResource("github:apache:camel:main:core/pom.xml");
         assertNotNull(res);
         assertTrue(res.exists());
@@ -41,7 +41,7 @@ public class GitHubResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGitHubLoadMainDefault() throws Exception {
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource res = ecc.getResourceLoader().resolveResource("github:apache:camel:core/pom.xml");
         assertNotNull(res);
         assertTrue(res.exists());
@@ -53,7 +53,7 @@ public class GitHubResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGitHubDoesNotExist() {
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource res = ecc.getResourceLoader().resolveResource("github:apache:camel:main:core/unknown.xml");
         assertNotNull(res);
         assertFalse(res.exists());
diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java
index 50a4caa30bf..d4ddc014356 100644
--- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java
+++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java
@@ -23,7 +23,6 @@ import org.apache.camel.Category;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
@@ -135,7 +134,7 @@ public class RestApiEndpoint extends DefaultEndpoint {
             if (name == null) {
                 name = DEFAULT_API_COMPONENT_NAME; //use openapi first
             }
-            FactoryFinder finder = getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+            FactoryFinder finder = getCamelContext().getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
             factory = finder.newInstance(name, RestApiProcessorFactory.class).orElse(null);
         }
 
@@ -144,7 +143,7 @@ public class RestApiEndpoint extends DefaultEndpoint {
             if (name == null) {
                 name = "swagger"; //use swagger as fallback
             }
-            FactoryFinder finder = getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+            FactoryFinder finder = getCamelContext().getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
             factory = finder.newInstance(name, RestApiProcessorFactory.class).orElse(null);
         }
 
diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
index 63d2a2e6c21..6ac8d2c95db 100644
--- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
+++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
@@ -22,7 +22,6 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.camel.Component;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.CatalogVerifierCustomizer;
@@ -94,7 +93,7 @@ public class RestComponentVerifierExtension extends DefaultComponentVerifierExte
                 if (extension.isPresent()) {
                     final ComponentVerifierExtension verifier = extension.get();
                     final RuntimeCamelCatalog catalog
-                            = getCamelContext().adapt(ExtendedCamelContext.class).getRuntimeCamelCatalog();
+                            = getCamelContext().getCamelContextExtension().getRuntimeCamelCatalog();
                     final String json = catalog.componentJSonSchema("rest");
                     final ComponentModel model = JsonMapper.generateComponentModel(json);
 
diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
index 026aca9831e..8d0dc8c01e9 100644
--- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
+++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
@@ -23,7 +23,6 @@ import org.apache.camel.Category;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.Processor;
@@ -325,7 +324,7 @@ public class RestEndpoint extends DefaultEndpoint {
             LOG.debug("Discovering camel-openapi-java on classpath for using api-doc: {}", apiDoc);
             // lookup on classpath using factory finder to automatic find it (just add camel-openapi-java to classpath etc)
             try {
-                FactoryFinder finder = getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+                FactoryFinder finder = getCamelContext().getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
                 apiDocFactory = finder.newInstance(DEFAULT_API_COMPONENT_NAME, RestProducerFactory.class).orElse(null);
                 if (apiDocFactory == null) {
                     throw new NoFactoryAvailableException("Cannot find camel-openapi-java on classpath");
diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java
index 2835ff49a64..4b5fc67f8fe 100644
--- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java
+++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java
@@ -30,7 +30,6 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Message;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.DataFormat;
@@ -305,7 +304,7 @@ public class RestProducer extends DefaultAsyncProducer {
 
         if (json != null) {
             // lookup configurer
-            PropertyConfigurer configurer = camelContext.adapt(ExtendedCamelContext.class).getConfigurerResolver()
+            PropertyConfigurer configurer = camelContext.getCamelContextExtension().getConfigurerResolver()
                     .resolvePropertyConfigurer(name + "-dataformat-configurer", camelContext);
             if (configurer == null) {
                 throw new IllegalStateException("Cannot find configurer for dataformat: " + name);
@@ -359,7 +358,7 @@ public class RestProducer extends DefaultAsyncProducer {
 
         if (jaxb != null) {
             // to setup JAXB we need to use camel-jaxb
-            camelContext.adapt(ExtendedCamelContext.class).getRestBindingJaxbDataFormatFactory()
+            camelContext.getCamelContextExtension().getRestBindingJaxbDataFormatFactory()
                     .setupJaxb(camelContext, configuration, type, null, outType, null, jaxb, outJaxb);
         }
 
diff --git a/components/camel-rxjava/src/test/java/org/apache/camel/component/rxjava/engine/RxJavaStreamsServiceTestSupport.java b/components/camel-rxjava/src/test/java/org/apache/camel/component/rxjava/engine/RxJavaStreamsServiceTestSupport.java
index 28b25825075..39bd2d688b3 100644
--- a/components/camel-rxjava/src/test/java/org/apache/camel/component/rxjava/engine/RxJavaStreamsServiceTestSupport.java
+++ b/components/camel-rxjava/src/test/java/org/apache/camel/component/rxjava/engine/RxJavaStreamsServiceTestSupport.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.rxjava.engine;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsComponent;
 import org.apache.camel.component.reactive.streams.ReactiveStreamsConstants;
 import org.apache.camel.component.reactive.streams.api.CamelReactiveStreams;
@@ -34,7 +33,7 @@ class RxJavaStreamsServiceTestSupport extends CamelTestSupport {
         CamelContext context = super.createCamelContext();
 
         // camel-rxjava does not work with pooled exchanges
-        context.adapt(ExtendedCamelContext.class).setExchangeFactory(new PrototypeExchangeFactory());
+        context.getCamelContextExtension().setExchangeFactory(new PrototypeExchangeFactory());
 
         context.addComponent(
                 ReactiveStreamsConstants.SCHEME,
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
index 8659ba42e1a..4b68621eecd 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
@@ -26,7 +26,6 @@ import java.util.regex.Pattern;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.SSLContextParametersAware;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.component.salesforce.api.SalesforceException;
@@ -341,7 +340,7 @@ public class SalesforceComponent extends DefaultComponent implements SSLContextP
 
     private Map<String, Class<?>> parsePackages() {
         Map<String, Class<?>> result = new HashMap<>();
-        Set<Class<?>> classes = getCamelContext().adapt(ExtendedCamelContext.class).getPackageScanClassResolver()
+        Set<Class<?>> classes = getCamelContext().getCamelContextExtension().getPackageScanClassResolver()
                 .findImplementations(AbstractDTOBase.class, getPackagesAsArray());
         for (Class<?> aClass : classes) {
             result.put(aClass.getSimpleName(), aClass);
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/SalesforceConsumerTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/SalesforceConsumerTest.java
index 7370f1c9f2d..caa456d0eef 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/SalesforceConsumerTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/SalesforceConsumerTest.java
@@ -107,7 +107,7 @@ public class SalesforceConsumerTest {
     public void setupMocks() {
         when(endpoint.getConfiguration()).thenReturn(configuration);
         when(endpoint.getCamelContext()).thenReturn(context);
-        when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(context.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(exchangeFactory);
         when(exchangeFactory.newExchangeFactory(any())).thenReturn(exchangeFactory);
         when(exchangeFactory.create(endpoint, true)).thenReturn(exchange);
diff --git a/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java b/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
index 287e5f20ac9..a69cbf3ac2e 100644
--- a/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
+++ b/components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
@@ -30,7 +30,6 @@ import org.apache.camel.Category;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.MultipleConsumersSupport;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
@@ -255,7 +254,7 @@ public class SedaEndpoint extends DefaultEndpoint implements AsyncEndpoint, Brow
             // create multicast processor
             multicastStarted = false;
 
-            consumerMulticastProcessor = (AsyncProcessor) getCamelContext().adapt(ExtendedCamelContext.class)
+            consumerMulticastProcessor = (AsyncProcessor) getCamelContext().getCamelContextExtension()
                     .getProcessorFactory().createProcessor(getCamelContext(), "MulticastProcessor",
                             new Object[] { processors, multicastExecutor, false });
         }
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyPooledExchangeTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyPooledExchangeTest.java
index 38f02df8616..4de9c3ef9df 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyPooledExchangeTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyPooledExchangeTest.java
@@ -61,7 +61,7 @@ public class InOnlyPooledExchangeTest extends JmsTestSupport {
 
         Awaitility.waitAtMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
             PooledObjectFactory.Statistics stat
-                    = context.adapt(ExtendedCamelContext.class).getExchangeFactoryManager().getStatistics();
+                    = context.getCamelContextExtension().getExchangeFactoryManager().getStatistics();
             assertEquals(1, stat.getCreatedCounter());
             assertEquals(0, stat.getAcquiredCounter());
             assertEquals(1, stat.getReleasedCounter());
@@ -81,7 +81,7 @@ public class InOnlyPooledExchangeTest extends JmsTestSupport {
 
         Awaitility.waitAtMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
             PooledObjectFactory.Statistics stat
-                    = context.adapt(ExtendedCamelContext.class).getExchangeFactoryManager().getStatistics();
+                    = context.getCamelContextExtension().getExchangeFactoryManager().getStatistics();
             assertEquals(1, stat.getCreatedCounter());
             assertEquals(1, stat.getAcquiredCounter());
             assertEquals(2, stat.getReleasedCounter());
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java
index 323672c9400..e659fc917b8 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConsumerTest.java
@@ -66,7 +66,7 @@ public class SmppConsumerTest {
         session = mock(SMPPSession.class);
 
         when(endpoint.getCamelContext()).thenReturn(context);
-        when(context.adapt(ExtendedCamelContext.class)).thenReturn(ecc);
+        when(context.getCamelContextExtension()).thenReturn(ecc);
         when(ecc.getExchangeFactory()).thenReturn(exchangeFactory);
         when(exchangeFactory.newExchangeFactory(any())).thenReturn(exchangeFactory);
 
diff --git a/components/camel-spring-rabbitmq/src/test/java/org/apache/camel/component/springrabbit/integration/RabbitMQConsumerPooledExchangeIT.java b/components/camel-spring-rabbitmq/src/test/java/org/apache/camel/component/springrabbit/integration/RabbitMQConsumerPooledExchangeIT.java
index 622569867b3..979ade17c1a 100644
--- a/components/camel-spring-rabbitmq/src/test/java/org/apache/camel/component/springrabbit/integration/RabbitMQConsumerPooledExchangeIT.java
+++ b/components/camel-spring-rabbitmq/src/test/java/org/apache/camel/component/springrabbit/integration/RabbitMQConsumerPooledExchangeIT.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.springrabbit.integration;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -31,7 +30,7 @@ public class RabbitMQConsumerPooledExchangeIT extends RabbitMQITSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
-        camelContext.adapt(ExtendedCamelContext.class).setExchangeFactory(new PooledExchangeFactory());
+        camelContext.getCamelContextExtension().setExchangeFactory(new PooledExchangeFactory());
         return camelContext;
     }
 
diff --git a/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java b/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java
index 119bc126c03..9c6e7d33bb2 100644
--- a/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java
+++ b/components/camel-spring-xml/src/main/java/org/apache/camel/spring/xml/CamelContextFactoryBean.java
@@ -381,7 +381,7 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
         Registry registry = getBeanForType(Registry.class);
         if (registry != null) {
             LOG.info("Using custom Registry: {}", registry);
-            context.setRegistry(registry);
+            context.getCamelContextExtension().setRegistry(registry);
         }
     }
 
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/DumpModelAsXmlPlaceholdersTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/DumpModelAsXmlPlaceholdersTest.java
index 33ee4b065a5..ba210bc8362 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/DumpModelAsXmlPlaceholdersTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/DumpModelAsXmlPlaceholdersTest.java
@@ -38,7 +38,7 @@ public class DumpModelAsXmlPlaceholdersTest extends SpringTestSupport {
     @Test
     public void testDumpModelAsXml() throws Exception {
         assertEquals("Gouda", context.getRoutes().get(0).getId());
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         String xml = ecc.getModelToXMLDumper().dumpModelAsXml(context, context.getRouteDefinition("Gouda"));
         assertNotNull(xml);
         log.info(xml);
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
index 614c65f6c68..67f199bf25c 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.spring;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.RouteDefinition;
@@ -81,7 +80,7 @@ public class EndpointReferenceTest extends SpringTestSupport {
     public void testReferenceEndpointFromOtherCamelContext() throws Exception {
         CamelContext context = applicationContext.getBean("camel2", CamelContext.class);
         RouteDefinition route = new RouteDefinition("temporary");
-        String routeId = route.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        String routeId = route.idOrCreate(context.getCamelContextExtension().getNodeIdFactory());
         try {
             CamelContextHelper.resolveEndpoint(context, null, "endpoint1");
             fail("Should have thrown exception");
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/config/DefaultPackageResolverConfigureTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/config/DefaultPackageResolverConfigureTest.java
index 86a6a825299..f41ff1af340 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/config/DefaultPackageResolverConfigureTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/config/DefaultPackageResolverConfigureTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.spring.config;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
 import org.apache.camel.spring.SpringTestSupport;
 import org.junit.jupiter.api.Test;
@@ -35,7 +34,7 @@ public class DefaultPackageResolverConfigureTest extends SpringTestSupport {
     @Test
     public void testSetAcceptableSchema() throws Exception {
         DefaultPackageScanClassResolver resolver
-                = (DefaultPackageScanClassResolver) context.adapt(ExtendedCamelContext.class).getPackageScanClassResolver();
+                = (DefaultPackageScanClassResolver) context.getCamelContextExtension().getPackageScanClassResolver();
         assertNotNull(resolver);
     }
 
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactedStackSizeParallelProcessingTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactedStackSizeParallelProcessingTest.java
index b50189cef67..e27ff750df4 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactedStackSizeParallelProcessingTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/interceptor/TransactedStackSizeParallelProcessingTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.spring.interceptor;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.engine.PrototypeExchangeFactory;
 import org.junit.jupiter.api.Assertions;
@@ -32,7 +31,7 @@ public class TransactedStackSizeParallelProcessingTest extends TransactionClient
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
         // must use prototype scoped exchange factory
-        context.adapt(ExtendedCamelContext.class).setExchangeFactory(new PrototypeExchangeFactory());
+        context.getCamelContextExtension().setExchangeFactory(new PrototypeExchangeFactory());
         return context;
     }
 
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java
index 7423aa874fe..5c2615c75b0 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/processor/SpringTestHelper.java
@@ -60,7 +60,7 @@ public final class SpringTestHelper {
 
         SpringCamelContext context = SpringCamelContext.springCamelContext(applicationContext, false);
         for (Map.Entry<String, Object> entry : beans.entrySet()) {
-            context.getRegistry().bind(entry.getKey(), entry.getValue());
+            context.getCamelContextExtension().getRegistry().bind(entry.getKey(), entry.getValue());
         }
         if (!isNoStart) {
             context.start();
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java
index 8e0ed85caa5..365138d4c31 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/routebuilder/SpringRouteTemplateTest.java
@@ -155,7 +155,7 @@ public class SpringRouteTemplateTest extends SpringTestSupport {
 
         RouteDefinition def = context.getRouteDefinition("first");
 
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         String xml = ecc.getModelToXMLDumper().dumpModelAsXml(context, def, true, true);
 
         assertNotNull(xml);
@@ -172,7 +172,7 @@ public class SpringRouteTemplateTest extends SpringTestSupport {
         RoutesDefinition def = new RoutesDefinition();
         def.setRoutes(context.getRouteDefinitions());
 
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         String xml = ecc.getModelToXMLDumper().dumpModelAsXml(context, def, true, true);
 
         assertNotNull(xml);
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
index be794664550..1e5df621051 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
@@ -19,7 +19,6 @@ package org.apache.camel.spring;
 import java.util.Optional;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.event.EventComponent;
@@ -238,7 +237,7 @@ public class SpringCamelContext extends DefaultCamelContext
             return endpoint;
         }
 
-        BeanProcessorFactory bpf = adapt(ExtendedCamelContext.class).getBeanProcessorFactory();
+        BeanProcessorFactory bpf = getCamelContextExtension().getBeanProcessorFactory();
         try {
             Processor bp = bpf.createBeanProcessor(this, bean, null);
             return new ProcessorEndpoint(uri, this, bp);
diff --git a/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubComponent.java b/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubComponent.java
index dc4de8980d4..cc2e41299e8 100644
--- a/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubComponent.java
+++ b/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubComponent.java
@@ -21,7 +21,6 @@ import java.util.concurrent.BlockingQueue;
 
 import org.apache.camel.Component;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.component.seda.BlockingQueueFactory;
 import org.apache.camel.component.vm.VmComponent;
 import org.apache.camel.spi.EndpointRegistry;
@@ -96,7 +95,7 @@ public class StubComponent extends VmComponent {
 
         if (shadow) {
             final EndpointRegistry registry = getCamelContext().getEndpointRegistry();
-            getCamelContext().adapt(ExtendedCamelContext.class).registerEndpointCallback((uri, endpoint) -> {
+            getCamelContext().getCamelContextExtension().registerEndpointCallback((uri, endpoint) -> {
                 String shadowUri = resolveShadowUri(uri);
                 if (!uri.equals(shadowUri)) {
                     NormalizedUri nuri = NormalizedUri.newNormalizedUri(shadowUri, false);
diff --git a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
index 97e3a2833b7..62ec5506c0a 100644
--- a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
+++ b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
@@ -470,12 +470,12 @@ public abstract class CamelTestSupport
         // enable auto mocking if enabled
         String pattern = isMockEndpoints();
         if (pattern != null) {
-            context.adapt(ExtendedCamelContext.class)
+            context.getCamelContextExtension()
                     .registerEndpointCallback(new InterceptSendToMockEndpointStrategy(pattern));
         }
         pattern = isMockEndpointsAndSkip();
         if (pattern != null) {
-            context.adapt(ExtendedCamelContext.class)
+            context.getCamelContextExtension()
                     .registerEndpointCallback(new InterceptSendToMockEndpointStrategy(pattern, true));
         }
 
diff --git a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/EndpointUriFactoryTestSupport.java b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/EndpointUriFactoryTestSupport.java
index ffc01727623..7823afac9ec 100644
--- a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/EndpointUriFactoryTestSupport.java
+++ b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/EndpointUriFactoryTestSupport.java
@@ -18,7 +18,6 @@ package org.apache.camel.test.junit5;
 
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.EndpointUriFactory;
 import org.junit.jupiter.api.Test;
@@ -38,7 +37,7 @@ public abstract class EndpointUriFactoryTestSupport extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                EndpointUriFactory factory = getContext().adapt(ExtendedCamelContext.class).getEndpointUriFactory(scheme());
+                EndpointUriFactory factory = getContext().getCamelContextExtension().getEndpointUriFactory(scheme());
                 String uri = factory.buildUri(scheme(), pathParameters(), false);
                 from(uri).to("mock:out");
             }
diff --git a/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java b/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
index e595e4b2807..98d93cbf986 100644
--- a/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
+++ b/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
@@ -26,7 +26,6 @@ import java.util.StringJoiner;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
 import org.apache.camel.component.mock.InterceptSendToMockEndpointStrategy;
@@ -275,7 +274,7 @@ public final class CamelAnnotationsHandler {
                         throws Exception {
                     LOGGER.info("Enabling auto mocking of endpoints matching pattern [{}] on CamelContext with name [{}].",
                             mockEndpoints, contextName);
-                    camelContext.adapt(ExtendedCamelContext.class)
+                    camelContext.getCamelContextExtension()
                             .registerEndpointCallback(new InterceptSendToMockEndpointStrategy(mockEndpoints));
                 }
             });
@@ -301,7 +300,7 @@ public final class CamelAnnotationsHandler {
                     LOGGER.info(
                             "Enabling auto mocking and skipping of endpoints matching pattern [{}] on CamelContext with name [{}].",
                             mockEndpointsValue, contextName);
-                    camelContext.adapt(ExtendedCamelContext.class)
+                    camelContext.getCamelContextExtension()
                             .registerEndpointCallback(new InterceptSendToMockEndpointStrategy(mockEndpointsValue, true));
                 }
             });
diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java
index 19532605d27..705a7570b64 100644
--- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java
+++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java
@@ -27,7 +27,6 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
@@ -175,10 +174,10 @@ public abstract class Tracer extends ServiceSupport implements RoutePolicyFactor
         if (!camelContext.getRoutePolicyFactories().contains(this)) {
             camelContext.addRoutePolicyFactory(this);
         }
-        camelContext.adapt(ExtendedCamelContext.class).addLogListener(logListener);
+        camelContext.getCamelContextExtension().addLogListener(logListener);
 
         if (tracingStrategy != null) {
-            camelContext.adapt(ExtendedCamelContext.class).addInterceptStrategy(tracingStrategy);
+            camelContext.getCamelContextExtension().addInterceptStrategy(tracingStrategy);
         }
         initTracer();
         initContextPropagators();
diff --git a/components/camel-twilio/src/main/java/org/apache/camel/component/twilio/TwilioEndpoint.java b/components/camel-twilio/src/main/java/org/apache/camel/component/twilio/TwilioEndpoint.java
index a21011de43f..6aa760de997 100644
--- a/components/camel-twilio/src/main/java/org/apache/camel/component/twilio/TwilioEndpoint.java
+++ b/components/camel-twilio/src/main/java/org/apache/camel/component/twilio/TwilioEndpoint.java
@@ -24,7 +24,6 @@ import java.util.Map;
 import com.twilio.http.TwilioRestClient;
 import org.apache.camel.Category;
 import org.apache.camel.Consumer;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
@@ -107,7 +106,7 @@ public class TwilioEndpoint extends AbstractApiEndpoint<TwilioApiName, TwilioCon
         }
         String methodName = EXECUTOR_METHOD_MAP.get(method.getName());
         try {
-            BeanIntrospection beanIntrospection = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+            BeanIntrospection beanIntrospection = getCamelContext().getCamelContextExtension().getBeanIntrospection();
             for (Map.Entry<String, Object> p : properties.entrySet()) {
                 beanIntrospection.setProperty(getCamelContext(), executor, p.getKey(), p.getValue());
             }
diff --git a/components/camel-twilio/src/test/java/org/apache/camel/component/twilio/TwilioEndpointTest.java b/components/camel-twilio/src/test/java/org/apache/camel/component/twilio/TwilioEndpointTest.java
index 0913b149b6d..38b5295ee7a 100644
--- a/components/camel-twilio/src/test/java/org/apache/camel/component/twilio/TwilioEndpointTest.java
+++ b/components/camel-twilio/src/test/java/org/apache/camel/component/twilio/TwilioEndpointTest.java
@@ -27,7 +27,7 @@ public class TwilioEndpointTest extends AbstractTwilioTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         ecc.getBeanIntrospection().setLoggingLevel(LoggingLevel.INFO);
         return context;
     }
@@ -36,7 +36,7 @@ public class TwilioEndpointTest extends AbstractTwilioTestSupport {
     public void testTwilioEndpoint() {
         // should not use reflection when creating and configuring endpoint
 
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
         long before = ecc.getBeanIntrospection().getInvokedCounter();
 
         TwilioEndpoint te = context.getEndpoint("twilio:account/fetcher?pathSid=123", TwilioEndpoint.class);
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/cloud/UndertowServiceCallRouteTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/cloud/UndertowServiceCallRouteTest.java
index ae96ccc62e4..29dbaaee2a1 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/cloud/UndertowServiceCallRouteTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/cloud/UndertowServiceCallRouteTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.undertow.cloud;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.RoutesBuilder;
@@ -38,14 +37,14 @@ public class UndertowServiceCallRouteTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.adapt(ExtendedCamelContext.class).getBeanIntrospection().setExtendedStatistics(true);
-        context.adapt(ExtendedCamelContext.class).getBeanIntrospection().setLoggingLevel(LoggingLevel.INFO);
+        context.getCamelContextExtension().getBeanIntrospection().setExtendedStatistics(true);
+        context.getCamelContextExtension().getBeanIntrospection().setLoggingLevel(LoggingLevel.INFO);
         return context;
     }
 
     @Test
     public void testCustomCall() {
-        BeanIntrospection bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection bi = context.getCamelContextExtension().getBeanIntrospection();
 
         assertEquals("8081", template.requestBody("direct:custom", "hello", String.class));
         assertEquals("8082", template.requestBody("direct:custom", "hello", String.class));
@@ -56,7 +55,7 @@ public class UndertowServiceCallRouteTest extends CamelTestSupport {
 
     @Test
     public void testDefaultSchema() {
-        BeanIntrospection bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection bi = context.getCamelContextExtension().getBeanIntrospection();
 
         try {
             assertEquals("8081", template.requestBody("direct:default", "hello", String.class));
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowProducerGetPojoTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowProducerGetPojoTest.java
index 6c841f3b28f..4425a38fa17 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowProducerGetPojoTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowProducerGetPojoTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.undertow.rest;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.undertow.BaseUndertowTest;
@@ -33,7 +32,7 @@ public class RestUndertowProducerGetPojoTest extends BaseUndertowTest {
     @Test
     public void testUndertowGetPojoRequest() {
         // should not use reflection when using rest binding in the rest producer
-        BeanIntrospection bi = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
+        BeanIntrospection bi = context.getCamelContextExtension().getBeanIntrospection();
         bi.setLoggingLevel(LoggingLevel.INFO);
         bi.resetCounters();
 
diff --git a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRoutePolicyTest.java b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRoutePolicyTest.java
index 5194f9befb0..299178262b6 100644
--- a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRoutePolicyTest.java
+++ b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRoutePolicyTest.java
@@ -45,8 +45,8 @@ public class WebhookRoutePolicyTest {
         });
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            context.getRegistry().bind("dummy", testComponent);
-            context.getRegistry().bind("webhook", webhookComponent);
+            context.getCamelContextExtension().getRegistry().bind("dummy", testComponent);
+            context.getCamelContextExtension().getRegistry().bind("webhook", webhookComponent);
             context.addRoutePolicyFactory(new WebhookRoutePolicyFactory(action));
 
             await().atMost(10, TimeUnit.SECONDS).until(() -> counters.get(action).get() == 0);
diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponent.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponent.java
index 84ae781fa2a..099bbc52e89 100644
--- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponent.java
+++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponent.java
@@ -21,7 +21,6 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
@@ -61,7 +60,7 @@ public class WordpressComponent extends DefaultComponent {
         if (configuration != null) {
             // TODO: Better to make WordpressConfiguration cloneable
             Map<String, Object> properties = new HashMap<>();
-            BeanIntrospection beanIntrospection = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+            BeanIntrospection beanIntrospection = getCamelContext().getCamelContextExtension().getBeanIntrospection();
             beanIntrospection.getProperties(configuration, properties, null, false);
             properties.forEach(parameters::putIfAbsent);
         }
diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
index 48b52020c0d..3818450f56f 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
@@ -83,16 +83,13 @@ import org.apache.camel.vault.VaultConfiguration;
 public interface CamelContext extends CamelContextLifecycle, RuntimeConfiguration {
 
     /**
-     * Adapts this {@link org.apache.camel.CamelContext} to the specialized type.
-     * <p/>
-     * For example to adapt to <tt>ExtendedCamelContext</tt>, <tt>ModelCamelContext</tt>, or
-     * <tt>SpringCamelContext</tt>, or <tt>CdiCamelContext</tt>, etc.
+     * Gets the {@link ExtendedCamelContext} that contains the extension points for internal
+     * context APIs.
      *
-     * @param  type the type to adapt to
-     * @return      this {@link org.apache.camel.CamelContext} adapted to the given type
+     * @return this {@link ExtendedCamelContext}
      */
-    @Deprecated
-    <T extends ExtendedCamelContext> T adapt(Class<T> type);
+    ExtendedCamelContext getCamelContextExtension();
+
 
     /**
      * Gets the extension of the given type.
diff --git a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
index e04102121cf..acb4fe584a5 100644
--- a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
+++ b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
@@ -27,7 +27,6 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -227,7 +226,7 @@ public final class HealthCheckHelper {
             if (check.isEmpty()) {
                 // use resolver to load from classpath if needed
                 HealthCheckResolver resolver
-                        = context.adapt(ExtendedCamelContext.class).getHealthCheckResolver();
+                        = context.getCamelContextExtension().getHealthCheckResolver();
                 HealthCheck hc = resolver.resolveHealthCheck(id);
                 if (hc != null) {
                     check = Optional.of(hc);
@@ -273,7 +272,7 @@ public final class HealthCheckHelper {
             if (repo.isEmpty()) {
                 // use resolver to load from classpath if needed
                 HealthCheckResolver resolver
-                        = context.adapt(ExtendedCamelContext.class).getHealthCheckResolver();
+                        = context.getCamelContextExtension().getHealthCheckResolver();
                 HealthCheckRepository hr = resolver.resolveHealthCheckRepository(id);
                 if (hr != null) {
                     repo = Optional.of(hr);
diff --git a/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java b/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
index 1c50e6c3bfe..081e6833a2a 100644
--- a/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
+++ b/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
@@ -23,7 +23,6 @@ import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.Resource;
@@ -115,7 +114,7 @@ public class JsseParameters implements CamelContextAware {
     protected InputStream resolveResource(String resource) throws IOException {
         ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
 
-        Resource res = getCamelContext().adapt(ExtendedCamelContext.class).getResourceLoader().resolveResource(resource);
+        Resource res = getCamelContext().getCamelContextExtension().getResourceLoader().resolveResource(resource);
         if (res == null) {
             throw new IOException("Could not open " + resource + " as a file, class path resource, or URL.");
         }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 469659f0945..83b59fe970d 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -202,9 +202,10 @@ import static org.apache.camel.spi.UnitOfWork.MDC_CAMEL_CONTEXT_ID;
  * Represents the context used to configure routes and the policies to use.
  */
 public abstract class AbstractCamelContext extends BaseService
-        implements CamelContext, ExtendedCamelContext, CatalogCamelContext, Suspendable {
+        implements CamelContext, CatalogCamelContext, Suspendable {
 
     private static final Logger LOG = LoggerFactory.getLogger(AbstractCamelContext.class);
+    private final DefaultCamelContextExtension camelContextExtension = new DefaultCamelContextExtension();
 
     // start auto assigning route ids using numbering 1000 and upwards
     int defaultRouteStartupOrder = 1000;
@@ -231,8 +232,8 @@ public abstract class AbstractCamelContext extends BaseService
     private final Map<String, RouteService> routeServices = new LinkedHashMap<>();
     private final Map<String, RouteService> suspendedRouteServices = new LinkedHashMap<>();
     private final Object lock = new Object();
-    private final RouteController internalRouteController = new InternalRouteController(this);
-    private final InternalRouteStartupManager internalRouteStartupManager = new InternalRouteStartupManager(this);
+    private final RouteController internalRouteController = new InternalRouteController(AbstractCamelContext.this);
+    private final InternalRouteStartupManager internalRouteStartupManager = new InternalRouteStartupManager(AbstractCamelContext.this);
     private volatile DeferServiceFactory deferServiceFactory;
     private volatile AnnotationBasedProcessorFactory annotationBasedProcessorFactory;
     private final List<RouteStartupOrder> routeStartupOrder = new ArrayList<>();
@@ -377,7 +378,7 @@ public abstract class AbstractCamelContext extends BaseService
      */
     public AbstractCamelContext(Registry registry) {
         this();
-        setRegistry(registry);
+        camelContextExtension.setRegistry(registry);
     }
 
     public AbstractCamelContext(boolean build) {
@@ -385,25 +386,25 @@ public abstract class AbstractCamelContext extends BaseService
         // users may access endpoints before CamelContext is started
         // we will later transfer the endpoints to the actual
         // DefaultEndpointRegistry later, but we do this to startup Camel faster.
-        this.endpoints = new ProvisionalEndpointRegistry();
+        AbstractCamelContext.this.endpoints = new ProvisionalEndpointRegistry();
 
         // add the defer service startup listener
-        this.startupListeners.add(deferStartupListener);
+        AbstractCamelContext.this.startupListeners.add(deferStartupListener);
 
         // add a default LifecycleStrategy that discover strategies on the registry and invoke them
-        this.lifecycleStrategies.add(new OnCamelContextLifecycleStrategy());
+        AbstractCamelContext.this.lifecycleStrategies.add(new OnCamelContextLifecycleStrategy());
 
         // add a default LifecycleStrategy to customize services using customizers from registry
-        this.lifecycleStrategies.add(new CustomizersLifecycleStrategy(this));
+        AbstractCamelContext.this.lifecycleStrategies.add(new CustomizersLifecycleStrategy(AbstractCamelContext.this));
 
         // add a default autowired strategy
-        this.lifecycleStrategies.add(new DefaultAutowiredLifecycleStrategy(this));
+        AbstractCamelContext.this.lifecycleStrategies.add(new DefaultAutowiredLifecycleStrategy(AbstractCamelContext.this));
 
         // add the default bootstrap closer
-        this.bootstraps.add(new DefaultServiceBootstrapCloseable(this));
+        AbstractCamelContext.this.bootstraps.add(new DefaultServiceBootstrapCloseable(AbstractCamelContext.this));
 
         // add a cleaner for FactoryFinder used only when bootstrapping the context
-        this.bootstraps.add(new BootstrapCloseable() {
+        AbstractCamelContext.this.bootstraps.add(new BootstrapCloseable() {
             @Override
             public void close() throws IOException {
                 bootstrapFactories.clear();
@@ -449,12 +450,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public CamelContext getCamelContextReference() {
-        return this;
-    }
-
-    @Override
-    public byte getStatusPhase() {
-        return status;
+        return AbstractCamelContext.this;
     }
 
     /**
@@ -465,11 +461,6 @@ public abstract class AbstractCamelContext extends BaseService
         return true;
     }
 
-    @Override
-    public <T extends ExtendedCamelContext> T adapt(Class<T> type) {
-        return type.cast(this);
-    }
-
     @Override
     public <T> T getExtension(Class<T> type) {
         if (type.isInstance(this)) {
@@ -514,17 +505,6 @@ public abstract class AbstractCamelContext extends BaseService
         return vetoed != null;
     }
 
-    @Override
-    public String getName() {
-        return getNameStrategy().getName();
-    }
-
-    @Override
-    public void setName(String name) {
-        // use an explicit name strategy since an explicit name was provided to be used
-        setNameStrategy(new ExplicitCamelContextNameStrategy(name));
-    }
-
     @Override
     public CamelContextNameStrategy getNameStrategy() {
         if (nameStrategy == null) {
@@ -539,17 +519,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setNameStrategy(CamelContextNameStrategy nameStrategy) {
-        this.nameStrategy = doAddService(nameStrategy);
-    }
-
-    @Override
-    public String getDescription() {
-        return description;
-    }
-
-    @Override
-    public void setDescription(String description) {
-        this.description = description;
+        AbstractCamelContext.this.nameStrategy = doAddService(nameStrategy);
     }
 
     @Override
@@ -566,7 +536,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setManagementNameStrategy(ManagementNameStrategy managementNameStrategy) {
-        this.managementNameStrategy = doAddService(managementNameStrategy);
+        AbstractCamelContext.this.managementNameStrategy = doAddService(managementNameStrategy);
     }
 
     @Override
@@ -576,7 +546,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setManagementName(String managementName) {
-        this.managementName = managementName;
+        AbstractCamelContext.this.managementName = managementName;
     }
 
     @Override
@@ -674,7 +644,7 @@ public abstract class AbstractCamelContext extends BaseService
             StartupStep step = startupStepRecorder.beginStep(Component.class, name, "Resolve Component");
             try {
                 if (LOG.isDebugEnabled()) {
-                    LOG.debug("Using ComponentResolver: {} to resolve component with name: {}", getComponentResolver(), name);
+                    LOG.debug("Using ComponentResolver: {} to resolve component with name: {}", camelContextExtension.getComponentResolver(), name);
                 }
 
                 // Mark the component as being created so we can detect circular
@@ -714,7 +684,7 @@ public abstract class AbstractCamelContext extends BaseService
 
                 component = ResolverHelper.lookupComponentInRegistryWithFallback(getCamelContextReference(), name);
                 if (component == null) {
-                    component = getComponentResolver().resolveComponent(name, getCamelContextReference());
+                    component = camelContextExtension.getComponentResolver().resolveComponent(name, getCamelContextReference());
                 }
 
                 if (component != null) {
@@ -783,14 +753,6 @@ public abstract class AbstractCamelContext extends BaseService
         return endpoints.get(getEndpointKey(uri));
     }
 
-    @Override
-    public Endpoint hasEndpoint(NormalizedEndpointUri uri) {
-        if (endpoints.isEmpty()) {
-            return null;
-        }
-        return endpoints.get(uri);
-    }
-
     @Override
     public Endpoint addEndpoint(String uri, Endpoint endpoint) throws Exception {
         Endpoint oldEndpoint;
@@ -824,7 +786,7 @@ public abstract class AbstractCamelContext extends BaseService
             List<NormalizedUri> toRemove = new ArrayList<>();
             for (Map.Entry<NormalizedUri, Endpoint> entry : endpoints.entrySet()) {
                 oldEndpoint = entry.getValue();
-                if (EndpointHelper.matchEndpoint(this, oldEndpoint.getEndpointUri(), uri)) {
+                if (EndpointHelper.matchEndpoint(AbstractCamelContext.this, oldEndpoint.getEndpointUri(), uri)) {
                     try {
                         stopServices(oldEndpoint);
                     } catch (Exception e) {
@@ -849,18 +811,6 @@ public abstract class AbstractCamelContext extends BaseService
         return answer;
     }
 
-    @Override
-    public NormalizedEndpointUri normalizeUri(String uri) {
-        try {
-            uri = EndpointHelper.resolveEndpointUriPropertyPlaceholders(this, uri);
-            return NormalizedUri.newNormalizedUri(uri, false);
-        } catch (ResolveEndpointFailedException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new ResolveEndpointFailedException(uri, e);
-        }
-    }
-
     @Override
     public Endpoint getEndpoint(String uri) {
         StartupStep step = null;
@@ -876,31 +826,11 @@ public abstract class AbstractCamelContext extends BaseService
         return answer;
     }
 
-    @Override
-    public Endpoint getEndpoint(NormalizedEndpointUri uri) {
-        return doGetEndpoint(uri.getUri(), null, true, false);
-    }
-
-    @Override
-    public Endpoint getPrototypeEndpoint(String uri) {
-        return doGetEndpoint(uri, null, false, true);
-    }
-
-    @Override
-    public Endpoint getPrototypeEndpoint(NormalizedEndpointUri uri) {
-        return doGetEndpoint(uri.getUri(), null, true, true);
-    }
-
     @Override
     public Endpoint getEndpoint(String uri, Map<String, Object> parameters) {
         return doGetEndpoint(uri, parameters, false, false);
     }
 
-    @Override
-    public Endpoint getEndpoint(NormalizedEndpointUri uri, Map<String, Object> parameters) {
-        return doGetEndpoint(uri.getUri(), parameters, true, false);
-    }
-
     protected Endpoint doGetEndpoint(String uri, Map<String, Object> parameters, boolean normalized, boolean prototype) {
         // ensure CamelContext are initialized before we can get an endpoint
         build();
@@ -911,7 +841,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // in case path has property placeholders then try to let property component resolve those
         if (!normalized) {
-            uri = EndpointHelper.resolveEndpointUriPropertyPlaceholders(this, uri);
+            uri = EndpointHelper.resolveEndpointUriPropertyPlaceholders(AbstractCamelContext.this, uri);
         }
 
         final String rawUri = uri;
@@ -937,7 +867,7 @@ public abstract class AbstractCamelContext extends BaseService
                 scheme = StringHelper.before(uri, ":");
                 if (scheme == null) {
                     // it may refer to a logical endpoint
-                    answer = getRegistry().lookupByNameAndType(uri, Endpoint.class);
+                    answer = camelContextExtension.getRegistry().lookupByNameAndType(uri, Endpoint.class);
                     if (answer != null) {
                         return answer;
                     } else {
@@ -1016,22 +946,6 @@ public abstract class AbstractCamelContext extends BaseService
         }
     }
 
-    @Override
-    public void registerEndpointCallback(EndpointStrategy strategy) {
-        if (!endpointStrategies.contains(strategy)) {
-            // let it be invoked for already registered endpoints so it can
-            // catch-up.
-            endpointStrategies.add(strategy);
-            for (Endpoint endpoint : getEndpoints()) {
-                Endpoint newEndpoint = strategy.registerEndpoint(endpoint.getEndpointUri(), endpoint);
-                if (newEndpoint != null) {
-                    // put will replace existing endpoint with the new endpoint
-                    endpoints.put(getEndpointKey(endpoint.getEndpointUri()), newEndpoint);
-                }
-            }
-        }
-    }
-
     /**
      * Strategy to add the given endpoint to the internal endpoint registry
      *
@@ -1100,12 +1014,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setRouteController(RouteController routeController) {
-        this.routeController = doAddService(routeController);
-    }
-
-    @Override
-    public List<RouteStartupOrder> getRouteStartupOrder() {
-        return routeStartupOrder;
+        AbstractCamelContext.this.routeController = doAddService(routeController);
     }
 
     @Override
@@ -1158,18 +1067,6 @@ public abstract class AbstractCamelContext extends BaseService
         return null;
     }
 
-    public void removeRoute(Route route) {
-        synchronized (this.routes) {
-            this.routes.remove(route);
-        }
-    }
-
-    public void addRoute(Route route) {
-        synchronized (this.routes) {
-            this.routes.add(route);
-        }
-    }
-
     @Override
     public void addRoutes(RoutesBuilder builder) throws Exception {
         // in case the builder is also a route configuration builder
@@ -1236,12 +1133,6 @@ public abstract class AbstractCamelContext extends BaseService
         }
     }
 
-    @Override
-    public boolean isSetupRoutes() {
-        Boolean answer = isSetupRoutes.get();
-        return answer != null && answer;
-    }
-
     public void startAllRoutes() throws Exception {
         internalRouteStartupManager.doStartOrResumeRoutes(routeServices, true, true, false, false);
     }
@@ -1258,7 +1149,7 @@ public abstract class AbstractCamelContext extends BaseService
         if (shutdownStrategy == null || shutdownStrategy.isShutdownRoutesInReverseOrder()) {
             comparator = comparator.reversed();
         }
-        List<RouteStartupOrder> routesOrdered = new ArrayList<>(getRouteStartupOrder());
+        List<RouteStartupOrder> routesOrdered = new ArrayList<>(camelContextExtension.getRouteStartupOrder());
         routesOrdered.sort(comparator);
         for (RouteStartupOrder order : routesOrdered) {
             Route route = order.getRoute();
@@ -1287,7 +1178,7 @@ public abstract class AbstractCamelContext extends BaseService
         if (shutdownStrategy == null || shutdownStrategy.isShutdownRoutesInReverseOrder()) {
             comparator = comparator.reversed();
         }
-        List<RouteStartupOrder> routesOrdered = new ArrayList<>(getRouteStartupOrder());
+        List<RouteStartupOrder> routesOrdered = new ArrayList<>(camelContextExtension.getRouteStartupOrder());
         routesOrdered.sort(comparator);
         for (RouteStartupOrder order : routesOrdered) {
             Route route = order.getRoute();
@@ -1315,21 +1206,21 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public synchronized void startRoute(String routeId) throws Exception {
-        DefaultRouteError.reset(this, routeId);
+        DefaultRouteError.reset(AbstractCamelContext.this, routeId);
 
         RouteService routeService = routeServices.get(routeId);
         if (routeService != null) {
             try {
                 startRouteService(routeService, false);
             } catch (Exception e) {
-                DefaultRouteError.set(this, routeId, Phase.START, e);
+                DefaultRouteError.set(AbstractCamelContext.this, routeId, Phase.START, e);
                 throw e;
             }
         }
     }
 
     public synchronized void resumeRoute(String routeId) throws Exception {
-        DefaultRouteError.reset(this, routeId);
+        DefaultRouteError.reset(AbstractCamelContext.this, routeId);
 
         try {
             if (!routeSupportsSuspension(routeId)) {
@@ -1346,7 +1237,7 @@ public abstract class AbstractCamelContext extends BaseService
                 ServiceHelper.resumeService(route);
             }
         } catch (Exception e) {
-            DefaultRouteError.set(this, routeId, Phase.RESUME, e);
+            DefaultRouteError.set(AbstractCamelContext.this, routeId, Phase.RESUME, e);
             throw e;
         }
     }
@@ -1354,14 +1245,14 @@ public abstract class AbstractCamelContext extends BaseService
     public synchronized boolean stopRoute(
             String routeId, long timeout, TimeUnit timeUnit, boolean abortAfterTimeout, LoggingLevel loggingLevel)
             throws Exception {
-        DefaultRouteError.reset(this, routeId);
+        DefaultRouteError.reset(AbstractCamelContext.this, routeId);
 
         RouteService routeService = routeServices.get(routeId);
         if (routeService != null) {
             try {
                 RouteStartupOrder route = new DefaultRouteStartupOrder(1, routeService.getRoute(), routeService);
 
-                boolean completed = getShutdownStrategy().shutdown(this, route, timeout, timeUnit, abortAfterTimeout);
+                boolean completed = getShutdownStrategy().shutdown(AbstractCamelContext.this, route, timeout, timeUnit, abortAfterTimeout);
                 if (completed) {
                     // must stop route service as well
                     stopRouteService(routeService, false, loggingLevel);
@@ -1371,7 +1262,7 @@ public abstract class AbstractCamelContext extends BaseService
                 }
                 return completed;
             } catch (Exception e) {
-                DefaultRouteError.set(this, routeId, Phase.STOP, e);
+                DefaultRouteError.set(AbstractCamelContext.this, routeId, Phase.STOP, e);
                 throw e;
             }
         }
@@ -1394,7 +1285,7 @@ public abstract class AbstractCamelContext extends BaseService
     protected synchronized void doShutdownRoute(
             String routeId, long timeout, TimeUnit timeUnit, boolean removingRoutes, LoggingLevel loggingLevel)
             throws Exception {
-        DefaultRouteError.reset(this, routeId);
+        DefaultRouteError.reset(AbstractCamelContext.this, routeId);
 
         RouteService routeService = routeServices.get(routeId);
         if (routeService != null) {
@@ -1403,12 +1294,12 @@ public abstract class AbstractCamelContext extends BaseService
                 RouteStartupOrder order = new DefaultRouteStartupOrder(1, routeService.getRoute(), routeService);
                 routeList.add(order);
 
-                getShutdownStrategy().shutdown(this, routeList, timeout, timeUnit);
+                getShutdownStrategy().shutdown(AbstractCamelContext.this, routeList, timeout, timeUnit);
                 // must stop route service as well (and remove the routes from
                 // management)
                 stopRouteService(routeService, removingRoutes, loggingLevel);
             } catch (Exception e) {
-                DefaultRouteError.set(this, routeId, removingRoutes ? Phase.SHUTDOWN : Phase.STOP, e);
+                DefaultRouteError.set(AbstractCamelContext.this, routeId, removingRoutes ? Phase.SHUTDOWN : Phase.STOP, e);
                 throw e;
             }
         }
@@ -1420,7 +1311,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     protected synchronized boolean removeRoute(String routeId, LoggingLevel loggingLevel) throws Exception {
-        DefaultRouteError.reset(this, routeId);
+        DefaultRouteError.reset(AbstractCamelContext.this, routeId);
 
         // gather a map of all the endpoints in use by the routes, so we can
         // known if a given endpoints is in use
@@ -1464,7 +1355,7 @@ public abstract class AbstractCamelContext extends BaseService
                         removeEndpoint(endpoint);
                     }
                 } catch (Exception e) {
-                    DefaultRouteError.set(this, routeId, Phase.REMOVE, e);
+                    DefaultRouteError.set(AbstractCamelContext.this, routeId, Phase.REMOVE, e);
                     throw e;
                 }
 
@@ -1481,7 +1372,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public synchronized void suspendRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception {
-        DefaultRouteError.reset(this, routeId);
+        DefaultRouteError.reset(AbstractCamelContext.this, routeId);
 
         try {
             if (!routeSupportsSuspension(routeId)) {
@@ -1496,7 +1387,7 @@ public abstract class AbstractCamelContext extends BaseService
                 RouteStartupOrder order = new DefaultRouteStartupOrder(1, route, routeService);
                 routeList.add(order);
 
-                getShutdownStrategy().suspend(this, routeList, timeout, timeUnit);
+                getShutdownStrategy().suspend(AbstractCamelContext.this, routeList, timeout, timeUnit);
                 // must suspend route service as well
                 suspendRouteService(routeService);
                 // must suspend the route as well
@@ -1505,7 +1396,7 @@ public abstract class AbstractCamelContext extends BaseService
                 }
             }
         } catch (Exception e) {
-            DefaultRouteError.set(this, routeId, Phase.SUSPEND, e);
+            DefaultRouteError.set(AbstractCamelContext.this, routeId, Phase.SUSPEND, e);
             throw e;
         }
     }
@@ -1623,23 +1514,13 @@ public abstract class AbstractCamelContext extends BaseService
         if (object instanceof Service) {
             Service service = (Service) object;
             for (LifecycleStrategy strategy : lifecycleStrategies) {
-                strategy.onServiceRemove(this, service, null);
+                strategy.onServiceRemove(AbstractCamelContext.this, service, null);
             }
             return servicesToStop.remove(service);
         }
         return false;
     }
 
-    @Override
-    public void addBootstrap(BootstrapCloseable bootstrap) {
-        bootstraps.add(bootstrap);
-    }
-
-    @Override
-    public List<Service> getServices() {
-        return Collections.unmodifiableList(servicesToStop);
-    }
-
     @Override
     public boolean hasService(Object object) {
         if (servicesToStop.isEmpty()) {
@@ -1722,7 +1603,7 @@ public abstract class AbstractCamelContext extends BaseService
         // has been started
         // or invoke the callback right now
         if (isStarted()) {
-            listener.onCamelContextStarted(this, true);
+            listener.onCamelContextStarted(AbstractCamelContext.this, true);
         } else {
             startupListeners.add(listener);
         }
@@ -1732,7 +1613,7 @@ public abstract class AbstractCamelContext extends BaseService
         // use the component factory finder to find the package name of the
         // component class, which is the location
         // where the documentation exists as well
-        FactoryFinder finder = getFactoryFinder(DefaultComponentResolver.RESOURCE_PATH);
+        FactoryFinder finder = camelContextExtension.getFactoryFinder(DefaultComponentResolver.RESOURCE_PATH);
         Class<?> clazz = finder.findClass(componentName).orElse(null);
         if (clazz == null) {
             // fallback and find existing component
@@ -1766,7 +1647,7 @@ public abstract class AbstractCamelContext extends BaseService
         // use the dataformat factory finder to find the package name of the
         // dataformat class, which is the location
         // where the documentation exists as well
-        FactoryFinder finder = getFactoryFinder(DefaultDataFormatResolver.DATAFORMAT_RESOURCE_PATH);
+        FactoryFinder finder = camelContextExtension.getFactoryFinder(DefaultDataFormatResolver.DATAFORMAT_RESOURCE_PATH);
         Class<?> clazz = finder.findClass(dataFormatName).orElse(null);
         if (clazz == null) {
             return null;
@@ -1794,7 +1675,7 @@ public abstract class AbstractCamelContext extends BaseService
         // use the language factory finder to find the package name of the
         // language class, which is the location
         // where the documentation exists as well
-        FactoryFinder finder = getFactoryFinder(DefaultLanguageResolver.LANGUAGE_RESOURCE_PATH);
+        FactoryFinder finder = camelContextExtension.getFactoryFinder(DefaultLanguageResolver.LANGUAGE_RESOURCE_PATH);
         Class<?> clazz = finder.findClass(languageName).orElse(null);
         if (clazz == null) {
             return null;
@@ -1861,7 +1742,7 @@ public abstract class AbstractCamelContext extends BaseService
 
                 if (language == null) {
                     // language not known, then use resolver
-                    language = getLanguageResolver().resolveLanguage(name, camelContext);
+                    language = camelContextExtension.getLanguageResolver().resolveLanguage(name, camelContext);
                 }
 
                 if (language != null) {
@@ -1898,32 +1779,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public String resolvePropertyPlaceholders(String text) {
-        return resolvePropertyPlaceholders(text, false);
-    }
-
-    @Override
-    public String resolvePropertyPlaceholders(String text, boolean keepUnresolvedOptional) {
-        if (text != null && text.contains(PropertiesComponent.PREFIX_TOKEN)) {
-            // the parser will throw exception if property key was not found
-            String answer = getPropertiesComponent().parseUri(text, keepUnresolvedOptional);
-            LOG.debug("Resolved text: {} -> {}", text, answer);
-            return answer;
-        }
-        // is the value a known field (currently we only support
-        // constants from Exchange.class)
-        if (text != null && text.startsWith("Exchange.")) {
-            String field = StringHelper.after(text, "Exchange.");
-            String constant = ExchangeConstantProvider.lookup(field);
-            if (constant != null) {
-                LOG.debug("Resolved constant: {} -> {}", text, constant);
-                return constant;
-            } else {
-                throw new IllegalArgumentException("Constant field with name: " + field + " not found on Exchange.class");
-            }
-        }
-
-        // return original text as is
-        return text;
+        return camelContextExtension.resolvePropertyPlaceholders(text, false);
     }
 
     @Override
@@ -1932,7 +1788,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public void setTypeConverter(TypeConverter typeConverter) {
-        this.typeConverter = doAddService(typeConverter);
+        AbstractCamelContext.this.typeConverter = doAddService(typeConverter);
     }
 
     protected TypeConverter getOrCreateTypeConverter() {
@@ -1960,10 +1816,10 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setTypeConverterRegistry(TypeConverterRegistry typeConverterRegistry) {
-        this.typeConverterRegistry = doAddService(typeConverterRegistry);
+        AbstractCamelContext.this.typeConverterRegistry = doAddService(typeConverterRegistry);
         // some registries are also a type converter implementation
         if (typeConverterRegistry instanceof TypeConverter) {
-            this.typeConverter = (TypeConverter) typeConverterRegistry;
+            AbstractCamelContext.this.typeConverter = (TypeConverter) typeConverterRegistry;
         }
     }
 
@@ -1981,7 +1837,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setInjector(Injector injector) {
-        this.injector = doAddService(injector);
+        AbstractCamelContext.this.injector = doAddService(injector);
     }
 
     @Override
@@ -1998,126 +1854,11 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setPropertiesComponent(PropertiesComponent propertiesComponent) {
-        this.propertiesComponent = doAddService(propertiesComponent);
-    }
-
-    @Override
-    public CamelBeanPostProcessor getBeanPostProcessor() {
-        if (beanPostProcessor == null) {
-            synchronized (lock) {
-                if (beanPostProcessor == null) {
-                    setBeanPostProcessor(createBeanPostProcessor());
-                }
-            }
-        }
-        return beanPostProcessor;
-    }
-
-    @Override
-    public void setBeanPostProcessor(CamelBeanPostProcessor beanPostProcessor) {
-        this.beanPostProcessor = doAddService(beanPostProcessor);
-    }
-
-    @Override
-    public CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory() {
-        if (dependencyInjectionAnnotationFactory == null) {
-            synchronized (lock) {
-                if (dependencyInjectionAnnotationFactory == null) {
-                    setDependencyInjectionAnnotationFactory(createDependencyInjectionAnnotationFactory());
-                }
-            }
-        }
-        return dependencyInjectionAnnotationFactory;
-    }
-
-    @Override
-    public void setDependencyInjectionAnnotationFactory(
-            CamelDependencyInjectionAnnotationFactory dependencyInjectionAnnotationFactory) {
-        this.dependencyInjectionAnnotationFactory = dependencyInjectionAnnotationFactory;
-    }
-
-    @Override
-    public ManagementMBeanAssembler getManagementMBeanAssembler() {
-        return managementMBeanAssembler;
+        AbstractCamelContext.this.propertiesComponent = doAddService(propertiesComponent);
     }
 
     public void setManagementMBeanAssembler(ManagementMBeanAssembler managementMBeanAssembler) {
-        this.managementMBeanAssembler = doAddService(managementMBeanAssembler, false);
-    }
-
-    public ComponentResolver getComponentResolver() {
-        if (componentResolver == null) {
-            synchronized (lock) {
-                if (componentResolver == null) {
-                    setComponentResolver(createComponentResolver());
-                }
-            }
-        }
-        return componentResolver;
-    }
-
-    public void setComponentResolver(ComponentResolver componentResolver) {
-        this.componentResolver = doAddService(componentResolver);
-    }
-
-    public ComponentNameResolver getComponentNameResolver() {
-        if (componentNameResolver == null) {
-            synchronized (lock) {
-                if (componentNameResolver == null) {
-                    setComponentNameResolver(createComponentNameResolver());
-                }
-            }
-        }
-        return componentNameResolver;
-    }
-
-    public void setComponentNameResolver(ComponentNameResolver componentNameResolver) {
-        this.componentNameResolver = doAddService(componentNameResolver);
-    }
-
-    public LanguageResolver getLanguageResolver() {
-        if (languageResolver == null) {
-            synchronized (lock) {
-                if (languageResolver == null) {
-                    setLanguageResolver(createLanguageResolver());
-                }
-            }
-        }
-        return languageResolver;
-    }
-
-    public void setLanguageResolver(LanguageResolver languageResolver) {
-        this.languageResolver = doAddService(languageResolver);
-    }
-
-    public ConfigurerResolver getConfigurerResolver() {
-        if (configurerResolver == null) {
-            synchronized (lock) {
-                if (configurerResolver == null) {
-                    setConfigurerResolver(createConfigurerResolver());
-                }
-            }
-        }
-        return configurerResolver;
-    }
-
-    public void setConfigurerResolver(ConfigurerResolver configurerResolver) {
-        this.configurerResolver = doAddService(configurerResolver);
-    }
-
-    public UriFactoryResolver getUriFactoryResolver() {
-        if (uriFactoryResolver == null) {
-            synchronized (lock) {
-                if (uriFactoryResolver == null) {
-                    setUriFactoryResolver(createUriFactoryResolver());
-                }
-            }
-        }
-        return uriFactoryResolver;
-    }
-
-    public void setUriFactoryResolver(UriFactoryResolver uriFactoryResolver) {
-        this.uriFactoryResolver = doAddService(uriFactoryResolver);
+        AbstractCamelContext.this.managementMBeanAssembler = doAddService(managementMBeanAssembler, false);
     }
 
     public boolean isAutoCreateComponents() {
@@ -2125,30 +1866,12 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public void setAutoCreateComponents(boolean autoCreateComponents) {
-        this.autoCreateComponents = autoCreateComponents;
-    }
-
-    @Override
-    public Registry getRegistry() {
-        if (registry == null) {
-            synchronized (lock) {
-                if (registry == null) {
-                    setRegistry(createRegistry());
-                }
-            }
-        }
-        return registry;
-    }
-
-    @Override
-    public void setRegistry(Registry registry) {
-        CamelContextAware.trySetCamelContext(registry, getCamelContextReference());
-        this.registry = registry;
+        AbstractCamelContext.this.autoCreateComponents = autoCreateComponents;
     }
 
     @Override
     public <T> T getRegistry(Class<T> type) {
-        Registry reg = getRegistry();
+        Registry reg = camelContextExtension.getRegistry();
 
         if (type.isAssignableFrom(reg.getClass())) {
             return type.cast(reg);
@@ -2169,15 +1892,6 @@ public abstract class AbstractCamelContext extends BaseService
         }
     }
 
-    @Override
-    public void setupRoutes(boolean done) {
-        if (done) {
-            isSetupRoutes.remove();
-        } else {
-            isSetupRoutes.set(true);
-        }
-    }
-
     @Override
     public RestConfiguration getRestConfiguration() {
         if (restConfiguration == null) {
@@ -2192,7 +1906,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setRestConfiguration(RestConfiguration restConfiguration) {
-        this.restConfiguration = restConfiguration;
+        AbstractCamelContext.this.restConfiguration = restConfiguration;
     }
 
     @Override
@@ -2202,24 +1916,11 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setVaultConfiguration(VaultConfiguration vaultConfiguration) {
-        this.vaultConfiguration = vaultConfiguration;
-    }
-
-    @Override
-    public List<InterceptStrategy> getInterceptStrategies() {
-        return interceptStrategies;
+        AbstractCamelContext.this.vaultConfiguration = vaultConfiguration;
     }
 
     public void setInterceptStrategies(List<InterceptStrategy> interceptStrategies) {
-        this.interceptStrategies = interceptStrategies;
-    }
-
-    @Override
-    public void addInterceptStrategy(InterceptStrategy interceptStrategy) {
-        // avoid adding double which can happen with spring xml on spring boot
-        if (!getInterceptStrategies().contains(interceptStrategy)) {
-            getInterceptStrategies().add(interceptStrategy);
-        }
+        AbstractCamelContext.this.interceptStrategies = interceptStrategies;
     }
 
     @Override
@@ -2228,7 +1929,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public void setRoutePolicyFactories(List<RoutePolicyFactory> routePolicyFactories) {
-        this.routePolicyFactories = routePolicyFactories;
+        AbstractCamelContext.this.routePolicyFactories = routePolicyFactories;
     }
 
     @Override
@@ -2239,23 +1940,9 @@ public abstract class AbstractCamelContext extends BaseService
         }
     }
 
-    @Override
-    public Set<LogListener> getLogListeners() {
-        return logListeners;
-    }
-
-    @Override
-    public void addLogListener(LogListener listener) {
-        if (logListeners == null) {
-            logListeners = new LinkedHashSet<>();
-        }
-        // avoid adding double which can happen with spring xml on spring boot
-        logListeners.add(listener);
-    }
-
     @Override
     public void setStreamCaching(Boolean cache) {
-        this.streamCache = cache;
+        AbstractCamelContext.this.streamCache = cache;
     }
 
     @Override
@@ -2265,7 +1952,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setTracing(Boolean tracing) {
-        this.trace = tracing;
+        AbstractCamelContext.this.trace = tracing;
     }
 
     @Override
@@ -2280,7 +1967,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setTracingPattern(String tracePattern) {
-        this.tracePattern = tracePattern;
+        AbstractCamelContext.this.tracePattern = tracePattern;
     }
 
     @Override
@@ -2290,7 +1977,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setTracingLoggingFormat(String format) {
-        this.tracingLoggingFormat = format;
+        AbstractCamelContext.this.tracingLoggingFormat = format;
     }
 
     @Override
@@ -2300,7 +1987,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setBacklogTracing(Boolean backlogTrace) {
-        this.backlogTrace = backlogTrace;
+        AbstractCamelContext.this.backlogTrace = backlogTrace;
     }
 
     public Boolean getBacklogTraceStandby() {
@@ -2308,12 +1995,12 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public void setBacklogTraceStandby(Boolean backlogTraceStandby) {
-        this.backlogTraceStandby = backlogTraceStandby;
+        AbstractCamelContext.this.backlogTraceStandby = backlogTraceStandby;
     }
 
     @Override
     public void setDebugging(Boolean debug) {
-        this.debug = debug;
+        AbstractCamelContext.this.debug = debug;
     }
 
     @Override
@@ -2323,7 +2010,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setMessageHistory(Boolean messageHistory) {
-        this.messageHistory = messageHistory;
+        AbstractCamelContext.this.messageHistory = messageHistory;
     }
 
     @Override
@@ -2333,7 +2020,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setLogMask(Boolean logMask) {
-        this.logMask = logMask;
+        AbstractCamelContext.this.logMask = logMask;
     }
 
     @Override
@@ -2348,7 +2035,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setLogExhaustedMessageBody(Boolean logExhaustedMessageBody) {
-        this.logExhaustedMessageBody = logExhaustedMessageBody;
+        AbstractCamelContext.this.logExhaustedMessageBody = logExhaustedMessageBody;
     }
 
     @Override
@@ -2358,7 +2045,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setDelayer(Long delay) {
-        this.delay = delay;
+        AbstractCamelContext.this.delay = delay;
     }
 
     @Override
@@ -2415,31 +2102,8 @@ public abstract class AbstractCamelContext extends BaseService
         return answer;
     }
 
-    @Override
-    public ErrorHandlerFactory getErrorHandlerFactory() {
-        return errorHandlerFactory;
-    }
-
-    @Override
-    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
-        this.errorHandlerFactory = errorHandlerFactory;
-    }
-
-    @Override
-    public ScheduledExecutorService getErrorHandlerExecutorService() {
-        if (errorHandlerExecutorService == null) {
-            synchronized (lock) {
-                if (errorHandlerExecutorService == null) {
-                    // setup default thread pool for error handler
-                    errorHandlerExecutorService = createErrorHandlerExecutorService();
-                }
-            }
-        }
-        return errorHandlerExecutorService;
-    }
-
     public void setErrorHandlerExecutorService(ScheduledExecutorService errorHandlerExecutorService) {
-        this.errorHandlerExecutorService = errorHandlerExecutorService;
+        AbstractCamelContext.this.errorHandlerExecutorService = errorHandlerExecutorService;
     }
 
     protected ScheduledExecutorService createErrorHandlerExecutorService() {
@@ -2447,23 +2111,6 @@ public abstract class AbstractCamelContext extends BaseService
                 "ErrorHandlerRedeliveryTask");
     }
 
-    @Override
-    public UnitOfWorkFactory getUnitOfWorkFactory() {
-        if (unitOfWorkFactory == null) {
-            synchronized (lock) {
-                if (unitOfWorkFactory == null) {
-                    setUnitOfWorkFactory(createUnitOfWorkFactory());
-                }
-            }
-        }
-        return unitOfWorkFactory;
-    }
-
-    @Override
-    public void setUnitOfWorkFactory(UnitOfWorkFactory unitOfWorkFactory) {
-        this.unitOfWorkFactory = doAddService(unitOfWorkFactory);
-    }
-
     @Override
     public RuntimeEndpointRegistry getRuntimeEndpointRegistry() {
         return runtimeEndpointRegistry;
@@ -2471,7 +2118,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setRuntimeEndpointRegistry(RuntimeEndpointRegistry runtimeEndpointRegistry) {
-        this.runtimeEndpointRegistry = doAddService(runtimeEndpointRegistry);
+        AbstractCamelContext.this.runtimeEndpointRegistry = doAddService(runtimeEndpointRegistry);
     }
 
     @Override
@@ -2499,16 +2146,6 @@ public abstract class AbstractCamelContext extends BaseService
         return new Date(startDate);
     }
 
-    @Override
-    public boolean isEventNotificationApplicable() {
-        return eventNotificationApplicable;
-    }
-
-    @Override
-    public void setEventNotificationApplicable(boolean eventNotificationApplicable) {
-        this.eventNotificationApplicable = eventNotificationApplicable;
-    }
-
     @Override
     public String getVersion() {
         if (version == null) {
@@ -2563,9 +2200,9 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     protected void doSuspend() throws Exception {
-        EventHelper.notifyCamelContextSuspending(this);
+        EventHelper.notifyCamelContextSuspending(AbstractCamelContext.this);
 
-        LOG.info("Apache Camel {} ({}) is suspending", getVersion(), getName());
+        LOG.info("Apache Camel {} ({}) is suspending", getVersion(), camelContextExtension.getName());
         StopWatch watch = new StopWatch();
 
         // update list of started routes to be suspended
@@ -2593,7 +2230,7 @@ public abstract class AbstractCamelContext extends BaseService
         // suspend routes using the shutdown strategy so it can shutdown in
         // correct order
         // routes which doesn't support suspension will be stopped instead
-        getShutdownStrategy().suspend(this, orders);
+        getShutdownStrategy().suspend(AbstractCamelContext.this, orders);
 
         // mark the route services as suspended or stopped
         for (RouteService service : suspendedRouteServices.values()) {
@@ -2606,11 +2243,11 @@ public abstract class AbstractCamelContext extends BaseService
 
         watch.taken();
         if (LOG.isInfoEnabled()) {
-            LOG.info("Apache Camel {} ({}) is suspended in {}", getVersion(), getName(),
+            LOG.info("Apache Camel {} ({}) is suspended in {}", getVersion(), camelContextExtension.getName(),
                     TimeUtils.printDuration(watch.taken(), true));
         }
 
-        EventHelper.notifyCamelContextSuspended(this);
+        EventHelper.notifyCamelContextSuspended(AbstractCamelContext.this);
     }
 
     // Implementation methods
@@ -2619,9 +2256,9 @@ public abstract class AbstractCamelContext extends BaseService
     @Override
     protected void doResume() throws Exception {
         try {
-            EventHelper.notifyCamelContextResuming(this);
+            EventHelper.notifyCamelContextResuming(AbstractCamelContext.this);
 
-            LOG.info("Apache Camel {} ({}) is resuming", getVersion(), getName());
+            LOG.info("Apache Camel {} ({}) is resuming", getVersion(), camelContextExtension.getName());
             StopWatch watch = new StopWatch();
 
             // start the suspended routes (do not check for route clashes, and
@@ -2640,16 +2277,16 @@ public abstract class AbstractCamelContext extends BaseService
 
             if (LOG.isInfoEnabled()) {
                 LOG.info("Resumed {} routes", suspendedRouteServices.size());
-                LOG.info("Apache Camel {} ({}) resumed in {}", getVersion(), getName(),
+                LOG.info("Apache Camel {} ({}) resumed in {}", getVersion(), camelContextExtension.getName(),
                         TimeUtils.printDuration(watch.taken(), true));
             }
 
             // and clear the list as they have been resumed
             suspendedRouteServices.clear();
 
-            EventHelper.notifyCamelContextResumed(this);
+            EventHelper.notifyCamelContextResumed(AbstractCamelContext.this);
         } catch (Exception e) {
-            EventHelper.notifyCamelContextResumeFailed(this, e);
+            EventHelper.notifyCamelContextResumeFailed(AbstractCamelContext.this, e);
             throw e;
         }
     }
@@ -2673,7 +2310,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // was the initialization vetoed?
         if (vetoed != null) {
-            LOG.info("CamelContext ({}) vetoed to not initialize due to: {}", getName(), vetoed.getMessage());
+            LOG.info("CamelContext ({}) vetoed to not initialize due to: {}", camelContextExtension.getName(), vetoed.getMessage());
             failOnStartup(vetoed);
             return;
         }
@@ -2690,7 +2327,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // did the start veto?
         if (vetoed != null) {
-            LOG.info("CamelContext ({}) vetoed to not start due to: {}", getName(), vetoed.getMessage());
+            LOG.info("CamelContext ({}) vetoed to not start due to: {}", camelContextExtension.getName(), vetoed.getMessage());
             failOnStartup(vetoed);
             stop();
             return;
@@ -2698,23 +2335,23 @@ public abstract class AbstractCamelContext extends BaseService
 
         for (LifecycleStrategy strategy : lifecycleStrategies) {
             try {
-                strategy.onContextStarted(this);
+                strategy.onContextStarted(AbstractCamelContext.this);
             } catch (Throwable e) {
                 LOG.warn("Lifecycle strategy {} failed on CamelContext ({}) due to: {}. This exception will be ignored",
                         strategy,
-                        getName(),
+                        camelContextExtension.getName(),
                         e.getMessage());
             }
         }
 
         // okay the routes has been started so emit event that CamelContext
         // has started (here at the end)
-        EventHelper.notifyCamelContextStarted(this);
+        EventHelper.notifyCamelContextStarted(AbstractCamelContext.this);
 
         // now call the startup listeners where the routes has been started
         for (StartupListener startup : startupListeners) {
             try {
-                startup.onCamelContextFullyStarted(this, isStarted());
+                startup.onCamelContextFullyStarted(AbstractCamelContext.this, isStarted());
             } catch (Exception e) {
                 throw RuntimeCamelException.wrapRuntimeException(e);
             }
@@ -2725,11 +2362,11 @@ public abstract class AbstractCamelContext extends BaseService
     public void stop() {
         for (LifecycleStrategy strategy : lifecycleStrategies) {
             try {
-                strategy.onContextStopping(this);
+                strategy.onContextStopping(AbstractCamelContext.this);
             } catch (Throwable e) {
                 LOG.warn("Lifecycle strategy {} failed on CamelContext ({}) due to: {}. This exception will be ignored",
                         strategy,
-                        getName(),
+                        camelContextExtension.getName(),
                         e.getMessage());
             }
         }
@@ -2743,7 +2380,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // auto-detect step recorder from classpath if none has been explicit configured
         if (startupStepRecorder.getClass().getSimpleName().equals("DefaultStartupStepRecorder")) {
-            StartupStepRecorder fr = getBootstrapFactoryFinder()
+            StartupStepRecorder fr = camelContextExtension.getBootstrapFactoryFinder()
                     .newInstance(StartupStepRecorder.FACTORY, StartupStepRecorder.class).orElse(null);
             if (fr != null) {
                 LOG.debug("Discovered startup recorder: {} from classpath", fr);
@@ -2763,7 +2400,7 @@ public abstract class AbstractCamelContext extends BaseService
         // Setup management first since end users may use it to add event
         // notifiers using the management strategy before the CamelContext has been started
         StartupStep step3 = startupStepRecorder.beginStep(CamelContext.class, null, "Setup Management");
-        setupManagement(null);
+        camelContextExtension.setupManagement(null);
         startupStepRecorder.endStep(step3);
 
         // setup health-check registry as its needed this early phase for 3rd party to register custom repositories
@@ -2773,7 +2410,7 @@ public abstract class AbstractCamelContext extends BaseService
             hcr = createHealthCheckRegistry();
             if (hcr != null) {
                 // install health-check registry if it was discovered from classpath (camel-health)
-                hcr.setCamelContext(this);
+                hcr.setCamelContext(AbstractCamelContext.this);
                 setExtension(HealthCheckRegistry.class, hcr);
             }
             startupStepRecorder.endStep(step4);
@@ -2786,7 +2423,7 @@ public abstract class AbstractCamelContext extends BaseService
             dcr = createDevConsoleRegistry();
             if (dcr != null) {
                 // install dev-console registry if it was discovered from classpath (camel-console)
-                dcr.setCamelContext(this);
+                dcr.setCamelContext(AbstractCamelContext.this);
                 setExtension(DevConsoleRegistry.class, dcr);
             }
             startupStepRecorder.endStep(step5);
@@ -2794,7 +2431,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // Call all registered trackers with this context
         // Note, this may use a partially constructed object
-        CamelContextTracker.notifyContextCreated(this);
+        CamelContextTracker.notifyContextCreated(AbstractCamelContext.this);
 
         // Setup type converter eager as its highly in use and should not be lazy initialized
         if (eagerCreateTypeConverter()) {
@@ -2806,7 +2443,7 @@ public abstract class AbstractCamelContext extends BaseService
         startupStepRecorder.endStep(step);
 
         buildTaken = watch.taken();
-        LOG.debug("Apache Camel {} ({}) built in {}", getVersion(), getName(), TimeUtils.printDuration(buildTaken, true));
+        LOG.debug("Apache Camel {} ({}) built in {}", getVersion(), camelContextExtension.getName(), TimeUtils.printDuration(buildTaken, true));
     }
 
     protected void resetBuildTime() {
@@ -2823,7 +2460,7 @@ public abstract class AbstractCamelContext extends BaseService
         StartupStep step = startupStepRecorder.beginStep(CamelContext.class, null, "Init CamelContext");
 
         // init the route controller
-        this.routeController = getRouteController();
+        AbstractCamelContext.this.routeController = getRouteController();
         if (startupSummaryLevel == StartupSummaryLevel.Verbose) {
             // verbose startup should let route controller do the route startup logging
             if (routeController.getLoggingLevel().ordinal() < LoggingLevel.INFO.ordinal()) {
@@ -2832,7 +2469,7 @@ public abstract class AbstractCamelContext extends BaseService
         }
 
         // init the shutdown strategy
-        this.shutdownStrategy = getShutdownStrategy();
+        AbstractCamelContext.this.shutdownStrategy = getShutdownStrategy();
         if (startupSummaryLevel == StartupSummaryLevel.Verbose) {
             // verbose startup should let route controller do the route shutdown logging
             if (shutdownStrategy != null && shutdownStrategy.getLoggingLevel().ordinal() < LoggingLevel.INFO.ordinal()) {
@@ -2841,10 +2478,10 @@ public abstract class AbstractCamelContext extends BaseService
         }
 
         // optimize - before starting routes lets check if event notifications is possible
-        eventNotificationApplicable = EventHelper.eventsApplicable(this);
+        eventNotificationApplicable = EventHelper.eventsApplicable(AbstractCamelContext.this);
 
         // ensure additional type converters is loaded (either if enabled or we should use package scanning from the base)
-        boolean load = loadTypeConverters || getBasePackageScan() != null;
+        boolean load = loadTypeConverters || camelContextExtension.getBasePackageScan() != null;
         if (load && typeConverter instanceof AnnotationScanTypeConverters) {
             StartupStep step2 = startupStepRecorder.beginStep(CamelContext.class, null, "Scan TypeConverters");
             ((AnnotationScanTypeConverters) typeConverter).scanTypeConverters();
@@ -2892,7 +2529,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // setup cli-connector if not already done
         if (hasService(CliConnector.class) == null) {
-            CliConnectorFactory ccf = getCliConnectorFactory();
+            CliConnectorFactory ccf = camelContextExtension.getCliConnectorFactory();
             if (ccf != null && ccf.isEnabled()) {
                 CliConnector connector = ccf.createConnector();
                 addService(connector, true);
@@ -2907,21 +2544,21 @@ public abstract class AbstractCamelContext extends BaseService
         ServiceHelper.initService(lifecycleStrategies);
         for (LifecycleStrategy strategy : lifecycleStrategies) {
             try {
-                strategy.onContextInitializing(this);
+                strategy.onContextInitializing(AbstractCamelContext.this);
             } catch (VetoCamelContextStartException e) {
                 // okay we should not start Camel since it was vetoed
-                LOG.warn("Lifecycle strategy {} vetoed initializing CamelContext ({}) due to: {}", strategy, getName(),
+                LOG.warn("Lifecycle strategy {} vetoed initializing CamelContext ({}) due to: {}", strategy, camelContextExtension.getName(),
                         e.getMessage());
                 throw e;
             } catch (Exception e) {
-                LOG.warn("Lifecycle strategy {} failed initializing CamelContext ({}) due to: {}", strategy, getName(),
+                LOG.warn("Lifecycle strategy {} failed initializing CamelContext ({}) due to: {}", strategy, camelContextExtension.getName(),
                         e.getMessage());
                 throw e;
             }
         }
 
         // optimize - before starting routes lets check if event notifications is possible
-        eventNotificationApplicable = EventHelper.eventsApplicable(this);
+        eventNotificationApplicable = EventHelper.eventsApplicable(AbstractCamelContext.this);
 
         // start notifiers as services
         for (EventNotifier notifier : getManagementStrategy().getEventNotifiers()) {
@@ -2935,7 +2572,7 @@ public abstract class AbstractCamelContext extends BaseService
         }
 
         // the event notifiers must be initialized before we can emit this event
-        EventHelper.notifyCamelContextInitializing(this);
+        EventHelper.notifyCamelContextInitializing(AbstractCamelContext.this);
 
         // re-create endpoint registry as the cache size limit may be set after the constructor of this instance was called.
         // and we needed to create endpoints up-front as it may be accessed before this context is started
@@ -2967,7 +2604,7 @@ public abstract class AbstractCamelContext extends BaseService
         ServiceHelper.initService(components.values());
 
         // create route definitions from route templates if we have any sources
-        for (RouteTemplateParameterSource source : getRegistry().findByType(RouteTemplateParameterSource.class)) {
+        for (RouteTemplateParameterSource source : camelContextExtension.getRegistry().findByType(RouteTemplateParameterSource.class)) {
             for (String routeId : source.routeIds()) {
                 // do a defensive copy of the parameters
                 Map<String, Object> map = new HashMap<>(source.parameters(routeId));
@@ -2986,7 +2623,7 @@ public abstract class AbstractCamelContext extends BaseService
         }
 
         // init the route definitions before the routes is started
-        StartupStep subStep = startupStepRecorder.beginStep(CamelContext.class, getName(), "Init Routes");
+        StartupStep subStep = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "Init Routes");
         // the method is called start but at this point it will only initialize (as context is starting up)
         startRouteDefinitions();
         // this will init route definitions and populate as route services which we can then initialize now
@@ -2994,17 +2631,17 @@ public abstract class AbstractCamelContext extends BaseService
         startupStepRecorder.endStep(subStep);
 
         if (!lifecycleStrategies.isEmpty()) {
-            subStep = startupStepRecorder.beginStep(CamelContext.class, getName(), "LifecycleStrategy onContextInitialized");
+            subStep = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "LifecycleStrategy onContextInitialized");
             for (LifecycleStrategy strategy : lifecycleStrategies) {
                 try {
-                    strategy.onContextInitialized(this);
+                    strategy.onContextInitialized(AbstractCamelContext.this);
                 } catch (VetoCamelContextStartException e) {
                     // okay we should not start Camel since it was vetoed
-                    LOG.warn("Lifecycle strategy {} vetoed initializing CamelContext ({}) due to: {}", strategy, getName(),
+                    LOG.warn("Lifecycle strategy {} vetoed initializing CamelContext ({}) due to: {}", strategy, camelContextExtension.getName(),
                             e.getMessage());
                     throw e;
                 } catch (Exception e) {
-                    LOG.warn("Lifecycle strategy {} failed initializing CamelContext ({}) due to: {}", strategy, getName(),
+                    LOG.warn("Lifecycle strategy {} failed initializing CamelContext ({}) due to: {}", strategy, camelContextExtension.getName(),
                             e.getMessage());
                     throw e;
                 }
@@ -3012,21 +2649,21 @@ public abstract class AbstractCamelContext extends BaseService
             startupStepRecorder.endStep(subStep);
         }
 
-        EventHelper.notifyCamelContextInitialized(this);
+        EventHelper.notifyCamelContextInitialized(AbstractCamelContext.this);
 
         startupStepRecorder.endStep(step);
 
         initTaken = watch.taken();
-        LOG.debug("Apache Camel {} ({}) initialized in {}", getVersion(), getName(), TimeUtils.printDuration(initTaken, true));
+        LOG.debug("Apache Camel {} ({}) initialized in {}", getVersion(), camelContextExtension.getName(), TimeUtils.printDuration(initTaken, true));
     }
 
     @Override
     protected void doStart() throws Exception {
         if (firstStartDone) {
             // its not good practice resetting a camel context
-            LOG.warn("Starting CamelContext: {} after the context has been stopped is not recommended", getName());
+            LOG.warn("Starting CamelContext: {} after the context has been stopped is not recommended", camelContextExtension.getName());
         }
-        StartupStep step = startupStepRecorder.beginStep(CamelContext.class, getName(), "Start CamelContext");
+        StartupStep step = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "Start CamelContext");
 
         try {
             doStartContext();
@@ -3046,14 +2683,14 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     protected void doStartContext() throws Exception {
-        LOG.info("Apache Camel {} ({}) is starting", getVersion(), getName());
+        LOG.info("Apache Camel {} ({}) is starting", getVersion(), camelContextExtension.getName());
 
         vetoed = null;
         startDate = System.currentTimeMillis();
         stopWatch.restart();
 
         // Start the route controller
-        startService(this.routeController);
+        startService(AbstractCamelContext.this.routeController);
 
         doNotStartRoutesOnFirstStart = !firstStartDone && !isAutoStartup();
 
@@ -3082,7 +2719,7 @@ public abstract class AbstractCamelContext extends BaseService
                 vetoed = veto;
                 return;
             } else {
-                LOG.error("Error starting CamelContext (" + getName() + ") due to exception thrown: " + e.getMessage(), e);
+                LOG.error("Error starting CamelContext (" + camelContextExtension.getName() + ") due to exception thrown: " + e.getMessage(), e);
                 throw RuntimeCamelException.wrapRuntimeException(e);
             }
         }
@@ -3103,12 +2740,12 @@ public abstract class AbstractCamelContext extends BaseService
         }
         bootstraps.clear();
 
-        if (getExchangeFactory().isPooled()) {
+        if (camelContextExtension.getExchangeFactory().isPooled()) {
             LOG.info(
                     "Pooled mode enabled. Camel pools and reuses objects to reduce JVM object allocations. The pool capacity is: {} elements.",
-                    getExchangeFactory().getCapacity());
+                    camelContextExtension.getExchangeFactory().getCapacity());
         }
-        if (isLightweight()) {
+        if (camelContextExtension.isLightweight()) {
             LOG.info("Lightweight mode enabled. Performing optimizations and memory reduction.");
             ReifierStrategy.clearReifiers();
             disposeModel();
@@ -3234,10 +2871,10 @@ public abstract class AbstractCamelContext extends BaseService
             String jvm = logJvmUptime ? getJvmUptime() : null;
             if (jvm != null) {
                 LOG.info("Apache Camel {} ({}) started in {} (build:{} init:{} start:{} JVM-uptime:{})", getVersion(),
-                        getName(), total, built,
+                        camelContextExtension.getName(), total, built,
                         init, start, jvm);
             } else {
-                LOG.info("Apache Camel {} ({}) started in {} (build:{} init:{} start:{})", getVersion(), getName(), total,
+                LOG.info("Apache Camel {} ({}) started in {} (build:{} init:{} start:{})", getVersion(), camelContextExtension.getName(), total,
                         built,
                         init,
                         start);
@@ -3246,38 +2883,38 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     protected void doStartCamel() throws Exception {
-        if (!getBeanPostProcessor().isEnabled()) {
+        if (!camelContextExtension.getBeanPostProcessor().isEnabled()) {
             LOG.info("BeanPostProcessor is disabled. Dependency injection of Camel annotations in beans is not supported.");
         }
         if (LOG.isDebugEnabled()) {
             LOG.debug(
                     "Using ClassResolver={}, PackageScanClassResolver={}, ApplicationContextClassLoader={}, RouteController={}",
                     getClassResolver(),
-                    getPackageScanClassResolver(), getApplicationContextClassLoader(), getRouteController());
+                    camelContextExtension.getPackageScanClassResolver(), getApplicationContextClassLoader(), getRouteController());
         }
         if (isStreamCaching()) {
             // stream caching is default enabled so lets report if it has been disabled
-            LOG.debug("StreamCaching is disabled on CamelContext: {}", getName());
+            LOG.debug("StreamCaching is disabled on CamelContext: {}", camelContextExtension.getName());
         }
         if (isBacklogTracing()) {
             // tracing is added in the DefaultChannel so we can enable it on the fly
-            LOG.debug("Backlog Tracing is enabled on CamelContext: {}", getName());
+            LOG.debug("Backlog Tracing is enabled on CamelContext: {}", camelContextExtension.getName());
         }
         if (isTracing()) {
             // tracing is added in the DefaultChannel so we can enable it on the fly
-            LOG.info("Tracing is enabled on CamelContext: {}", getName());
+            LOG.info("Tracing is enabled on CamelContext: {}", camelContextExtension.getName());
         }
         if (isUseMDCLogging()) {
             // log if MDC has been enabled
             String pattern = getMDCLoggingKeysPattern();
             if (pattern != null) {
-                LOG.info("MDC logging (keys-pattern: {}) is enabled on CamelContext: {}", pattern, getName());
+                LOG.info("MDC logging (keys-pattern: {}) is enabled on CamelContext: {}", pattern, camelContextExtension.getName());
             } else {
-                LOG.info("MDC logging is enabled on CamelContext: {}", getName());
+                LOG.info("MDC logging is enabled on CamelContext: {}", camelContextExtension.getName());
             }
         }
         if (getDelayer() != null && getDelayer() > 0) {
-            LOG.info("Delayer is enabled with: {} ms. on CamelContext: {}", getDelayer(), getName());
+            LOG.info("Delayer is enabled with: {} ms. on CamelContext: {}", getDelayer(), camelContextExtension.getName());
         }
 
         // start management strategy before lifecycles are started
@@ -3286,18 +2923,18 @@ public abstract class AbstractCamelContext extends BaseService
         // start lifecycle strategies
         if (!lifecycleStrategies.isEmpty()) {
             StartupStep subStep
-                    = startupStepRecorder.beginStep(CamelContext.class, getName(), "LifecycleStrategy onContextStarting");
+                    = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "LifecycleStrategy onContextStarting");
             startServices(lifecycleStrategies);
             for (LifecycleStrategy strategy : lifecycleStrategies) {
                 try {
-                    strategy.onContextStarting(this);
+                    strategy.onContextStarting(AbstractCamelContext.this);
                 } catch (VetoCamelContextStartException e) {
                     // okay we should not start Camel since it was vetoed
-                    LOG.warn("Lifecycle strategy {} vetoed starting CamelContext ({}) due to: {}", strategy, getName(),
+                    LOG.warn("Lifecycle strategy {} vetoed starting CamelContext ({}) due to: {}", strategy, camelContextExtension.getName(),
                             e.getMessage());
                     throw e;
                 } catch (Exception e) {
-                    LOG.warn("Lifecycle strategy {} failed starting CamelContext ({}) due to: {}", strategy, getName(),
+                    LOG.warn("Lifecycle strategy {} failed starting CamelContext ({}) due to: {}", strategy, camelContextExtension.getName(),
                             e.getMessage());
                     throw e;
                 }
@@ -3319,7 +2956,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         if (!startupListeners.isEmpty()) {
             StartupStep subStep
-                    = startupStepRecorder.beginStep(CamelContext.class, getName(), "StartupListener onCamelContextStarting");
+                    = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "StartupListener onCamelContextStarting");
             // sort the startup listeners so they are started in the right order
             startupListeners.sort(OrderedComparator.get());
             // now call the startup listeners where the routes has been warmed up
@@ -3338,11 +2975,11 @@ public abstract class AbstractCamelContext extends BaseService
         }
 
         // must let some bootstrap service be started before we can notify the starting event
-        EventHelper.notifyCamelContextStarting(this);
+        EventHelper.notifyCamelContextStarting(AbstractCamelContext.this);
 
         if (isUseDataType()) {
             // log if DataType has been enabled
-            LOG.debug("Message DataType is enabled on CamelContext: {}", getName());
+            LOG.debug("Message DataType is enabled on CamelContext: {}", camelContextExtension.getName());
         }
 
         // is there any stream caching enabled then log an info about this and
@@ -3361,11 +2998,11 @@ public abstract class AbstractCamelContext extends BaseService
             LOG.debug("AllowUseOriginalMessage enabled because UseOriginalMessage is in use");
         }
 
-        LOG.debug("Using HeadersMapFactory: {}", getHeadersMapFactory());
-        if (isCaseInsensitiveHeaders() && !getHeadersMapFactory().isCaseInsensitive()) {
+        LOG.debug("Using HeadersMapFactory: {}", camelContextExtension.getHeadersMapFactory());
+        if (isCaseInsensitiveHeaders() && !camelContextExtension.getHeadersMapFactory().isCaseInsensitive()) {
             LOG.info(
                     "HeadersMapFactory: {} is case-sensitive which can cause problems for protocols such as HTTP based, which rely on case-insensitive headers.",
-                    getHeadersMapFactory());
+                    camelContextExtension.getHeadersMapFactory());
         } else if (!isCaseInsensitiveHeaders()) {
             // notify user that the headers are sensitive which can be a problem
             LOG.info(
@@ -3373,10 +3010,10 @@ public abstract class AbstractCamelContext extends BaseService
         }
 
         // lets log at INFO level if we are not using the default reactive executor
-        if (!getReactiveExecutor().getClass().getSimpleName().equals("DefaultReactiveExecutor")) {
-            LOG.info("Using ReactiveExecutor: {}", getReactiveExecutor());
+        if (!camelContextExtension.getReactiveExecutor().getClass().getSimpleName().equals("DefaultReactiveExecutor")) {
+            LOG.info("Using ReactiveExecutor: {}", camelContextExtension.getReactiveExecutor());
         } else {
-            LOG.debug("Using ReactiveExecutor: {}", getReactiveExecutor());
+            LOG.debug("Using ReactiveExecutor: {}", camelContextExtension.getReactiveExecutor());
         }
 
         // lets log at INFO level if we are not using the default thread pool factory
@@ -3402,10 +3039,10 @@ public abstract class AbstractCamelContext extends BaseService
 
         if (!getRouteController().isSupervising()) {
             // invoke this logic to warmup the routes and if possible also start the routes (using default route controller)
-            StartupStep subStep = startupStepRecorder.beginStep(CamelContext.class, getName(), "Start Routes");
-            EventHelper.notifyCamelContextRoutesStarting(this);
+            StartupStep subStep = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "Start Routes");
+            EventHelper.notifyCamelContextRoutesStarting(AbstractCamelContext.this);
             internalRouteStartupManager.doStartOrResumeRoutes(routeServices, true, !doNotStartRoutesOnFirstStart, false, true);
-            EventHelper.notifyCamelContextRoutesStarted(this);
+            EventHelper.notifyCamelContextRoutesStarted(AbstractCamelContext.this);
             startupStepRecorder.endStep(subStep);
         }
 
@@ -3440,24 +3077,24 @@ public abstract class AbstractCamelContext extends BaseService
                 long timeout = shutdownStrategy.getTimeUnit().toMillis(shutdownStrategy.getTimeout());
                 // only use precise print duration if timeout is shorter than 10 seconds
                 String to = TimeUtils.printDuration(timeout, timeout < 10000);
-                LOG.info("Apache Camel {} ({}) is shutting down (timeout:{})", getVersion(), getName(), to);
+                LOG.info("Apache Camel {} ({}) is shutting down (timeout:{})", getVersion(), camelContextExtension.getName(), to);
             } else {
-                LOG.info("Apache Camel {} ({}) is shutting down", getVersion(), getName());
+                LOG.info("Apache Camel {} ({}) is shutting down", getVersion(), camelContextExtension.getName());
             }
         }
 
-        EventHelper.notifyCamelContextStopping(this);
-        EventHelper.notifyCamelContextRoutesStopping(this);
+        EventHelper.notifyCamelContextStopping(AbstractCamelContext.this);
+        EventHelper.notifyCamelContextRoutesStopping(AbstractCamelContext.this);
 
         // Stop the route controller
-        ServiceHelper.stopAndShutdownService(this.routeController);
+        ServiceHelper.stopAndShutdownService(AbstractCamelContext.this.routeController);
 
         // stop route inputs in the same order as they were started, so we stop
         // the very first inputs at first
         try {
             // force shutting down routes as they may otherwise cause shutdown to hang
             if (shutdownStrategy != null) {
-                shutdownStrategy.shutdownForced(this, getRouteStartupOrder());
+                shutdownStrategy.shutdownForced(AbstractCamelContext.this, camelContextExtension.getRouteStartupOrder());
             }
         } catch (Throwable e) {
             LOG.warn("Error occurred while shutting down routes. This exception will be ignored.", e);
@@ -3494,7 +3131,7 @@ public abstract class AbstractCamelContext extends BaseService
         // Camel again and get the route back as before
         routeStartupOrder.clear();
 
-        EventHelper.notifyCamelContextRoutesStopped(this);
+        EventHelper.notifyCamelContextRoutesStopped(AbstractCamelContext.this);
 
         // but clear any suspend routes
         suspendedRouteServices.clear();
@@ -3536,14 +3173,14 @@ public abstract class AbstractCamelContext extends BaseService
 
         try {
             for (LifecycleStrategy strategy : lifecycleStrategies) {
-                strategy.onContextStopped(this);
+                strategy.onContextStopped(AbstractCamelContext.this);
             }
         } catch (Throwable e) {
             LOG.warn("Error occurred while stopping lifecycle strategies. This exception will be ignored.", e);
         }
 
         // must notify that we are stopped before stopping the management strategy
-        EventHelper.notifyCamelContextStopped(this);
+        EventHelper.notifyCamelContextStopped(AbstractCamelContext.this);
 
         // stop the notifier service
         if (getManagementStrategy() != null) {
@@ -3576,10 +3213,10 @@ public abstract class AbstractCamelContext extends BaseService
                 String taken = TimeUtils.printDuration(stopWatch.taken(), true);
                 String jvm = logJvmUptime ? getJvmUptime() : null;
                 if (jvm != null) {
-                    LOG.info("Apache Camel {} ({}) shutdown in {} (uptime:{} JVM-uptime:{})", getVersion(), getName(), taken,
+                    LOG.info("Apache Camel {} ({}) shutdown in {} (uptime:{} JVM-uptime:{})", getVersion(), camelContextExtension.getName(), taken,
                             getUptime(), jvm);
                 } else {
-                    LOG.info("Apache Camel {} ({}) shutdown in {} (uptime:{})", getVersion(), getName(), taken, getUptime());
+                    LOG.info("Apache Camel {} ({}) shutdown in {} (uptime:{})", getVersion(), camelContextExtension.getName(), taken, getUptime());
                 }
             }
         }
@@ -3592,7 +3229,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // Call all registered trackers with this context
         // Note, this may use a partially constructed object
-        CamelContextTracker.notifyContextDestroyed(this);
+        CamelContextTracker.notifyContextDestroyed(AbstractCamelContext.this);
 
         firstStartDone = true;
     }
@@ -3688,7 +3325,7 @@ public abstract class AbstractCamelContext extends BaseService
         } catch (Throwable e) {
             LOG.warn("Error occurred while shutting down service: " + service + ". This exception will be ignored.", e);
             // fire event
-            EventHelper.notifyServiceStopFailure(this, service, e);
+            EventHelper.notifyServiceStopFailure(AbstractCamelContext.this, service, e);
         }
     }
 
@@ -3850,7 +3487,7 @@ public abstract class AbstractCamelContext extends BaseService
      * Force some lazy initialization to occur upfront before we start any components and create routes
      */
     protected void forceLazyInitialization() {
-        StartupStep step = startupStepRecorder.beginStep(CamelContext.class, getName(), "Start Mandatory Services");
+        StartupStep step = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "Start Mandatory Services");
         initEagerMandatoryServices();
         startupStepRecorder.endStep(step);
         step = startupStepRecorder.beginStep(CamelContext.class, getName(), "Start Standard Services");
@@ -3869,10 +3506,10 @@ public abstract class AbstractCamelContext extends BaseService
                 if (headersMapFactory == null) {
                     if (isCaseInsensitiveHeaders()) {
                         // use factory to find the map factory to use
-                        setHeadersMapFactory(createHeadersMapFactory());
+                        camelContextExtension.setHeadersMapFactory(createHeadersMapFactory());
                     } else {
                         // case sensitive so we can use hash map
-                        setHeadersMapFactory(new HashMapHeadersMapFactory());
+                        camelContextExtension.setHeadersMapFactory(new HashMapHeadersMapFactory());
                     }
                 }
             }
@@ -3882,25 +3519,25 @@ public abstract class AbstractCamelContext extends BaseService
     protected void doStartStandardServices() {
         getVersion();
         getClassResolver();
-        getRegistry();
-        getBootstrapFactoryFinder();
-        getFactoryFinderResolver();
+        camelContextExtension.getRegistry();
+        camelContextExtension.getBootstrapFactoryFinder();
+        camelContextExtension.getFactoryFinderResolver();
         getTypeConverterRegistry();
         getInjector();
-        getDefaultFactoryFinder();
-        getBootstrapConfigurerResolver();
-        getConfigurerResolver();
+        camelContextExtension.getDefaultFactoryFinder();
+        camelContextExtension.getBootstrapConfigurerResolver();
+        camelContextExtension.getConfigurerResolver();
         getPropertiesComponent();
 
-        getLanguageResolver();
-        getComponentResolver();
-        getComponentNameResolver();
-        getDataFormatResolver();
-        getHealthCheckResolver();
+        camelContextExtension.getLanguageResolver();
+        camelContextExtension.getComponentResolver();
+        camelContextExtension.getComponentNameResolver();
+        camelContextExtension.getDataFormatResolver();
+        camelContextExtension.getHealthCheckResolver();
 
         getExecutorServiceManager();
-        getExchangeFactoryManager();
-        getExchangeFactory();
+        camelContextExtension.getExchangeFactoryManager();
+        camelContextExtension.getExchangeFactory();
         getShutdownStrategy();
         getUuidGenerator();
 
@@ -3938,7 +3575,7 @@ public abstract class AbstractCamelContext extends BaseService
      * @return     the newly created endpoint or null if it could not be resolved
      */
     protected Endpoint createEndpoint(String uri) {
-        Object value = getRegistry().lookupByName(uri);
+        Object value = camelContextExtension.getRegistry().lookupByName(uri);
         if (value instanceof Endpoint) {
             return (Endpoint) value;
         } else if (value instanceof Processor) {
@@ -3975,139 +3612,37 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setGlobalOptions(Map<String, String> globalOptions) {
-        this.globalOptions = globalOptions;
+        AbstractCamelContext.this.globalOptions = globalOptions;
     }
 
-    @Override
-    public FactoryFinder getDefaultFactoryFinder() {
-        return getFactoryFinder(FactoryFinder.DEFAULT_PATH);
+    protected FactoryFinder createBootstrapFactoryFinder(String path) {
+        return camelContextExtension.getFactoryFinderResolver().resolveBootstrapFactoryFinder(getClassResolver(), path);
+    }
+
+    protected FactoryFinder createFactoryFinder(String path) {
+        return camelContextExtension.getFactoryFinderResolver().resolveFactoryFinder(getClassResolver(), path);
     }
 
     @Override
-    public ConfigurerResolver getBootstrapConfigurerResolver() {
-        if (bootstrapConfigurerResolver == null) {
+    public ClassResolver getClassResolver() {
+        if (classResolver == null) {
             synchronized (lock) {
-                if (bootstrapConfigurerResolver == null) {
-                    bootstrapConfigurerResolver = new BootstrapConfigurerResolver(
-                            getFactoryFinderResolver().resolveBootstrapFactoryFinder(getClassResolver(),
-                                    ConfigurerResolver.RESOURCE_PATH));
+                if (classResolver == null) {
+                    setClassResolver(createClassResolver());
                 }
             }
         }
-        return bootstrapConfigurerResolver;
+        return classResolver;
     }
 
     @Override
-    public void setBootstrapConfigurerResolver(ConfigurerResolver configurerResolver) {
-        this.bootstrapConfigurerResolver = configurerResolver;
+    public void setClassResolver(ClassResolver classResolver) {
+        AbstractCamelContext.this.classResolver = doAddService(classResolver);
     }
 
     @Override
-    public FactoryFinder getBootstrapFactoryFinder() {
-        if (bootstrapFactoryFinder == null) {
-            synchronized (lock) {
-                if (bootstrapFactoryFinder == null) {
-                    bootstrapFactoryFinder = getFactoryFinderResolver().resolveBootstrapFactoryFinder(getClassResolver());
-                }
-            }
-        }
-        return bootstrapFactoryFinder;
-    }
-
-    @Override
-    public void setBootstrapFactoryFinder(FactoryFinder factoryFinder) {
-        this.bootstrapFactoryFinder = factoryFinder;
-    }
-
-    @Override
-    public FactoryFinder getBootstrapFactoryFinder(String path) {
-        return bootstrapFactories.computeIfAbsent(path, this::createBootstrapFactoryFinder);
-    }
-
-    protected FactoryFinder createBootstrapFactoryFinder(String path) {
-        return getFactoryFinderResolver().resolveBootstrapFactoryFinder(getClassResolver(), path);
-    }
-
-    @Override
-    public FactoryFinderResolver getFactoryFinderResolver() {
-        if (factoryFinderResolver == null) {
-            synchronized (lock) {
-                if (factoryFinderResolver == null) {
-                    factoryFinderResolver = createFactoryFinderResolver();
-                }
-            }
-        }
-        return factoryFinderResolver;
-    }
-
-    @Override
-    public void setFactoryFinderResolver(FactoryFinderResolver factoryFinderResolver) {
-        this.factoryFinderResolver = doAddService(factoryFinderResolver);
-    }
-
-    @Override
-    public FactoryFinder getFactoryFinder(String path) {
-        return factories.computeIfAbsent(path, this::createFactoryFinder);
-    }
-
-    protected FactoryFinder createFactoryFinder(String path) {
-        return getFactoryFinderResolver().resolveFactoryFinder(getClassResolver(), path);
-    }
-
-    @Override
-    public ClassResolver getClassResolver() {
-        if (classResolver == null) {
-            synchronized (lock) {
-                if (classResolver == null) {
-                    setClassResolver(createClassResolver());
-                }
-            }
-        }
-        return classResolver;
-    }
-
-    @Override
-    public void setClassResolver(ClassResolver classResolver) {
-        this.classResolver = doAddService(classResolver);
-    }
-
-    @Override
-    public PackageScanClassResolver getPackageScanClassResolver() {
-        if (packageScanClassResolver == null) {
-            synchronized (lock) {
-                if (packageScanClassResolver == null) {
-                    setPackageScanClassResolver(createPackageScanClassResolver());
-                }
-            }
-        }
-        return packageScanClassResolver;
-    }
-
-    @Override
-    public void setPackageScanClassResolver(PackageScanClassResolver packageScanClassResolver) {
-        this.packageScanClassResolver = doAddService(packageScanClassResolver);
-    }
-
-    @Override
-    public PackageScanResourceResolver getPackageScanResourceResolver() {
-        if (packageScanResourceResolver == null) {
-            synchronized (lock) {
-                if (packageScanResourceResolver == null) {
-                    setPackageScanResourceResolver(createPackageScanResourceResolver());
-                }
-            }
-        }
-        return packageScanResourceResolver;
-    }
-
-    @Override
-    public void setPackageScanResourceResolver(PackageScanResourceResolver packageScanResourceResolver) {
-        this.packageScanResourceResolver = doAddService(packageScanResourceResolver);
-    }
-
-    @Override
-    public Set<String> getComponentNames() {
-        return Collections.unmodifiableSet(components.keySet());
+    public Set<String> getComponentNames() {
+        return Collections.unmodifiableSet(components.keySet());
     }
 
     @Override
@@ -4115,89 +3650,6 @@ public abstract class AbstractCamelContext extends BaseService
         return Collections.unmodifiableSet(languages.keySet());
     }
 
-    @Override
-    public ModelJAXBContextFactory getModelJAXBContextFactory() {
-        if (modelJAXBContextFactory == null) {
-            synchronized (lock) {
-                if (modelJAXBContextFactory == null) {
-                    setModelJAXBContextFactory(createModelJAXBContextFactory());
-                }
-            }
-        }
-        return modelJAXBContextFactory;
-    }
-
-    @Override
-    public void setModelJAXBContextFactory(final ModelJAXBContextFactory modelJAXBContextFactory) {
-        this.modelJAXBContextFactory = doAddService(modelJAXBContextFactory);
-    }
-
-    @Override
-    public NodeIdFactory getNodeIdFactory() {
-        if (nodeIdFactory == null) {
-            synchronized (lock) {
-                if (nodeIdFactory == null) {
-                    setNodeIdFactory(createNodeIdFactory());
-                }
-            }
-        }
-        return nodeIdFactory;
-    }
-
-    @Override
-    public void setNodeIdFactory(NodeIdFactory idFactory) {
-        this.nodeIdFactory = doAddService(idFactory);
-    }
-
-    @Override
-    public ModelineFactory getModelineFactory() {
-        if (modelineFactory == null) {
-            synchronized (lock) {
-                if (modelineFactory == null) {
-                    setModelineFactory(createModelineFactory());
-                }
-            }
-        }
-        return modelineFactory;
-    }
-
-    @Override
-    public void setModelineFactory(ModelineFactory modelineFactory) {
-        this.modelineFactory = doAddService(modelineFactory);
-    }
-
-    @Override
-    public PeriodTaskResolver getPeriodTaskResolver() {
-        if (periodTaskResolver == null) {
-            synchronized (lock) {
-                if (periodTaskResolver == null) {
-                    setPeriodTaskResolver(createPeriodTaskResolver());
-                }
-            }
-        }
-        return periodTaskResolver;
-    }
-
-    @Override
-    public void setPeriodTaskResolver(PeriodTaskResolver periodTaskResolver) {
-        this.periodTaskResolver = doAddService(periodTaskResolver);
-    }
-
-    public PeriodTaskScheduler getPeriodTaskScheduler() {
-        if (periodTaskScheduler == null) {
-            synchronized (lock) {
-                if (periodTaskScheduler == null) {
-                    setPeriodTaskScheduler(createPeriodTaskScheduler());
-                }
-            }
-        }
-        return periodTaskScheduler;
-    }
-
-    public void setPeriodTaskScheduler(PeriodTaskScheduler periodTaskScheduler) {
-        this.periodTaskScheduler = doAddService(periodTaskScheduler);
-    }
-
     @Override
     public ManagementStrategy getManagementStrategy() {
         return managementStrategy;
@@ -4205,7 +3657,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setManagementStrategy(ManagementStrategy managementStrategy) {
-        this.managementStrategy = managementStrategy;
+        AbstractCamelContext.this.managementStrategy = managementStrategy;
     }
 
     @Override
@@ -4216,7 +3668,7 @@ public abstract class AbstractCamelContext extends BaseService
             disableJMX = true;
             // we are still in initializing mode, so we can disable JMX, by
             // setting up management again
-            setupManagement(null);
+            camelContextExtension.setupManagement(null);
         } else {
             throw new IllegalStateException("Disabling JMX can only be done when CamelContext has not been started");
         }
@@ -4231,59 +3683,9 @@ public abstract class AbstractCamelContext extends BaseService
         }
     }
 
-    @Override
-    public void setupManagement(Map<String, Object> options) {
-        LOG.trace("Setting up management");
-
-        ManagementStrategyFactory factory = null;
-        if (!isJMXDisabled()) {
-            try {
-                // create a one time factory as we dont need this anymore
-                FactoryFinder finder = createFactoryFinder("META-INF/services/org/apache/camel/management/");
-                if (finder != null) {
-                    Object object = finder.newInstance("ManagementStrategyFactory").orElse(null);
-                    if (object instanceof ManagementStrategyFactory) {
-                        factory = (ManagementStrategyFactory) object;
-                    }
-                }
-                // detect if camel-debug is on classpath that enables debugging
-                DebuggerFactory df
-                        = getBootstrapFactoryFinder().newInstance(Debugger.FACTORY, DebuggerFactory.class).orElse(null);
-                if (df != null) {
-                    LOG.info("Detected: {} JAR (Enabling Camel Debugging)", df);
-                    enableDebugging(df);
-                }
-            } catch (Exception e) {
-                LOG.warn("Cannot create JmxManagementStrategyFactory. Will fallback and disable JMX.", e);
-            }
-        }
-        if (factory == null) {
-            factory = new DefaultManagementStrategyFactory();
-        }
-        LOG.debug("Setting up management with factory: {}", factory);
-
-        // preserve any existing event notifiers that may have been already added
-        List<EventNotifier> notifiers = null;
-        if (managementStrategy != null) {
-            notifiers = managementStrategy.getEventNotifiers();
-        }
-
-        try {
-            ManagementStrategy strategy = factory.create(getCamelContextReference(), options);
-            if (notifiers != null) {
-                notifiers.forEach(strategy::addEventNotifier);
-            }
-            LifecycleStrategy lifecycle = factory.createLifecycle(this);
-            factory.setupManagement(this, strategy, lifecycle);
-        } catch (Exception e) {
-            LOG.warn("Error setting up management due {}", e.getMessage());
-            throw RuntimeCamelException.wrapRuntimeCamelException(e);
-        }
-    }
-
     private void enableDebugging(DebuggerFactory df) throws Exception {
         setDebugging(true);
-        Debugger newDebugger = df.createDebugger(this);
+        Debugger newDebugger = df.createDebugger(AbstractCamelContext.this);
         if (newDebugger != null) {
             setDebugger(newDebugger);
         }
@@ -4312,46 +3714,12 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setInflightRepository(InflightRepository repository) {
-        this.inflightRepository = doAddService(repository);
-    }
-
-    @Override
-    public AsyncProcessorAwaitManager getAsyncProcessorAwaitManager() {
-        if (asyncProcessorAwaitManager == null) {
-            synchronized (lock) {
-                if (asyncProcessorAwaitManager == null) {
-                    setAsyncProcessorAwaitManager(createAsyncProcessorAwaitManager());
-                }
-            }
-        }
-        return asyncProcessorAwaitManager;
-    }
-
-    @Override
-    public void setAsyncProcessorAwaitManager(AsyncProcessorAwaitManager asyncProcessorAwaitManager) {
-        this.asyncProcessorAwaitManager = doAddService(asyncProcessorAwaitManager);
-    }
-
-    @Override
-    public BeanIntrospection getBeanIntrospection() {
-        if (beanIntrospection == null) {
-            synchronized (lock) {
-                if (beanIntrospection == null) {
-                    setBeanIntrospection(createBeanIntrospection());
-                }
-            }
-        }
-        return beanIntrospection;
-    }
-
-    @Override
-    public void setBeanIntrospection(BeanIntrospection beanIntrospection) {
-        this.beanIntrospection = doAddService(beanIntrospection);
+        AbstractCamelContext.this.inflightRepository = doAddService(repository);
     }
 
     @Override
     public void setAutoStartup(Boolean autoStartup) {
-        this.autoStartup = autoStartup;
+        AbstractCamelContext.this.autoStartup = autoStartup;
     }
 
     @Override
@@ -4366,7 +3734,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setLoadTypeConverters(Boolean loadTypeConverters) {
-        this.loadTypeConverters = loadTypeConverters;
+        AbstractCamelContext.this.loadTypeConverters = loadTypeConverters;
     }
 
     @Override
@@ -4376,7 +3744,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setLoadHealthChecks(Boolean loadHealthChecks) {
-        this.loadHealthChecks = loadHealthChecks;
+        AbstractCamelContext.this.loadHealthChecks = loadHealthChecks;
     }
 
     @Override
@@ -4386,7 +3754,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setModeline(Boolean modeline) {
-        this.modeline = modeline;
+        AbstractCamelContext.this.modeline = modeline;
     }
 
     public Boolean isDevConsole() {
@@ -4395,7 +3763,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setDevConsole(Boolean loadDevConsoles) {
-        this.devConsole = loadDevConsoles;
+        AbstractCamelContext.this.devConsole = loadDevConsoles;
     }
 
     @Override
@@ -4410,22 +3778,12 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setSourceLocationEnabled(Boolean sourceLocationEnabled) {
-        this.sourceLocationEnabled = sourceLocationEnabled;
+        AbstractCamelContext.this.sourceLocationEnabled = sourceLocationEnabled;
     }
 
     @Override
     public void setTypeConverterStatisticsEnabled(Boolean typeConverterStatisticsEnabled) {
-        this.typeConverterStatisticsEnabled = typeConverterStatisticsEnabled;
-    }
-
-    @Override
-    public String getBasePackageScan() {
-        return basePackageScan;
-    }
-
-    @Override
-    public void setBasePackageScan(String basePackageScan) {
-        this.basePackageScan = basePackageScan;
+        AbstractCamelContext.this.typeConverterStatisticsEnabled = typeConverterStatisticsEnabled;
     }
 
     @Override
@@ -4435,7 +3793,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setDumpRoutes(Boolean dumpRoutes) {
-        this.dumpRoutes = dumpRoutes;
+        AbstractCamelContext.this.dumpRoutes = dumpRoutes;
     }
 
     @Override
@@ -4445,7 +3803,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setUseMDCLogging(Boolean useMDCLogging) {
-        this.useMDCLogging = useMDCLogging;
+        AbstractCamelContext.this.useMDCLogging = useMDCLogging;
     }
 
     @Override
@@ -4455,7 +3813,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setMDCLoggingKeysPattern(String pattern) {
-        this.mdcLoggingKeysPattern = pattern;
+        AbstractCamelContext.this.mdcLoggingKeysPattern = pattern;
     }
 
     @Override
@@ -4465,7 +3823,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setUseDataType(Boolean useDataType) {
-        this.useDataType = useDataType;
+        AbstractCamelContext.this.useDataType = useDataType;
     }
 
     @Override
@@ -4475,7 +3833,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setUseBreadcrumb(Boolean useBreadcrumb) {
-        this.useBreadcrumb = useBreadcrumb;
+        AbstractCamelContext.this.useBreadcrumb = useBreadcrumb;
     }
 
     @Override
@@ -4488,23 +3846,6 @@ public abstract class AbstractCamelContext extends BaseService
         applicationContextClassLoader = classLoader;
     }
 
-    @Override
-    public DataFormatResolver getDataFormatResolver() {
-        if (dataFormatResolver == null) {
-            synchronized (lock) {
-                if (dataFormatResolver == null) {
-                    setDataFormatResolver(createDataFormatResolver());
-                }
-            }
-        }
-        return dataFormatResolver;
-    }
-
-    @Override
-    public void setDataFormatResolver(DataFormatResolver dataFormatResolver) {
-        this.dataFormatResolver = doAddService(dataFormatResolver);
-    }
-
     @Override
     public DataFormat resolveDataFormat(String name) {
         final DataFormat answer = dataformats.computeIfAbsent(name, s -> {
@@ -4516,7 +3857,7 @@ public abstract class AbstractCamelContext extends BaseService
 
             DataFormat df = Optional
                     .ofNullable(ResolverHelper.lookupDataFormatInRegistryWithFallback(getCamelContextReference(), name))
-                    .orElseGet(() -> getDataFormatResolver().createDataFormat(name, getCamelContextReference()));
+                    .orElseGet(() -> camelContextExtension.getDataFormatResolver().createDataFormat(name, getCamelContextReference()));
 
             if (df != null) {
                 // inject CamelContext if aware
@@ -4545,7 +3886,7 @@ public abstract class AbstractCamelContext extends BaseService
             step = startupStepRecorder.beginStep(DataFormat.class, name, "Create DataFormat");
         }
 
-        DataFormat answer = getDataFormatResolver().createDataFormat(name, getCamelContextReference());
+        DataFormat answer = camelContextExtension.getDataFormatResolver().createDataFormat(name, getCamelContextReference());
 
         // inject CamelContext if aware
         CamelContextAware.trySetCamelContext(answer, getCamelContextReference());
@@ -4565,38 +3906,6 @@ public abstract class AbstractCamelContext extends BaseService
         return Collections.unmodifiableSet(dataformats.keySet());
     }
 
-    @Override
-    public HealthCheckResolver getHealthCheckResolver() {
-        if (healthCheckResolver == null) {
-            synchronized (lock) {
-                if (healthCheckResolver == null) {
-                    setHealthCheckResolver(createHealthCheckResolver());
-                }
-            }
-        }
-        return healthCheckResolver;
-    }
-
-    @Override
-    public void setHealthCheckResolver(HealthCheckResolver healthCheckResolver) {
-        this.healthCheckResolver = doAddService(healthCheckResolver);
-    }
-
-    public DevConsoleResolver getDevConsoleResolver() {
-        if (devConsoleResolver == null) {
-            synchronized (lock) {
-                if (devConsoleResolver == null) {
-                    setDevConsoleResolver(createDevConsoleResolver());
-                }
-            }
-        }
-        return devConsoleResolver;
-    }
-
-    public void setDevConsoleResolver(DevConsoleResolver devConsoleResolver) {
-        this.devConsoleResolver = doAddService(devConsoleResolver);
-    }
-
     @Override
     public ShutdownStrategy getShutdownStrategy() {
         if (shutdownStrategy == null) {
@@ -4611,7 +3920,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setShutdownStrategy(ShutdownStrategy shutdownStrategy) {
-        this.shutdownStrategy = doAddService(shutdownStrategy);
+        AbstractCamelContext.this.shutdownStrategy = doAddService(shutdownStrategy);
     }
 
     @Override
@@ -4621,7 +3930,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setShutdownRoute(ShutdownRoute shutdownRoute) {
-        this.shutdownRoute = shutdownRoute;
+        AbstractCamelContext.this.shutdownRoute = shutdownRoute;
     }
 
     @Override
@@ -4631,12 +3940,12 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setShutdownRunningTask(ShutdownRunningTask shutdownRunningTask) {
-        this.shutdownRunningTask = shutdownRunningTask;
+        AbstractCamelContext.this.shutdownRunningTask = shutdownRunningTask;
     }
 
     @Override
     public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
-        this.allowUseOriginalMessage = allowUseOriginalMessage;
+        AbstractCamelContext.this.allowUseOriginalMessage = allowUseOriginalMessage;
     }
 
     @Override
@@ -4651,7 +3960,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setCaseInsensitiveHeaders(Boolean caseInsensitiveHeaders) {
-        this.caseInsensitiveHeaders = caseInsensitiveHeaders;
+        AbstractCamelContext.this.caseInsensitiveHeaders = caseInsensitiveHeaders;
     }
 
     @Override
@@ -4661,17 +3970,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setAutowiredEnabled(Boolean autowiredEnabled) {
-        this.autowiredEnabled = autowiredEnabled;
-    }
-
-    @Override
-    public boolean isLightweight() {
-        return lightweight;
-    }
-
-    @Override
-    public void setLightweight(boolean lightweight) {
-        this.lightweight = lightweight;
+        AbstractCamelContext.this.autowiredEnabled = autowiredEnabled;
     }
 
     @Override
@@ -4683,142 +3982,74 @@ public abstract class AbstractCamelContext extends BaseService
                 }
             }
         }
-        return this.executorServiceManager;
+        return AbstractCamelContext.this.executorServiceManager;
     }
 
     @Override
     public void setExecutorServiceManager(ExecutorServiceManager executorServiceManager) {
         // special for executorServiceManager as want to stop it manually so
         // false in stopOnShutdown
-        this.executorServiceManager = doAddService(executorServiceManager, false);
+        AbstractCamelContext.this.executorServiceManager = doAddService(executorServiceManager, false);
     }
 
     @Override
-    public ProcessorFactory getProcessorFactory() {
-        if (processorFactory == null) {
+    public MessageHistoryFactory getMessageHistoryFactory() {
+        if (messageHistoryFactory == null) {
             synchronized (lock) {
-                if (processorFactory == null) {
-                    setProcessorFactory(createProcessorFactory());
+                if (messageHistoryFactory == null) {
+                    setMessageHistoryFactory(createMessageHistoryFactory());
                 }
             }
         }
-        return processorFactory;
+        return messageHistoryFactory;
     }
 
     @Override
-    public void setProcessorFactory(ProcessorFactory processorFactory) {
-        this.processorFactory = doAddService(processorFactory);
+    public void setMessageHistoryFactory(MessageHistoryFactory messageHistoryFactory) {
+        AbstractCamelContext.this.messageHistoryFactory = doAddService(messageHistoryFactory);
+        // enable message history if we set a custom factory
+        setMessageHistory(true);
     }
 
     @Override
-    public InternalProcessorFactory getInternalProcessorFactory() {
-        if (internalProcessorFactory == null) {
-            synchronized (lock) {
-                if (internalProcessorFactory == null) {
-                    setInternalProcessorFactory(createInternalProcessorFactory());
-                }
-            }
-        }
-        return internalProcessorFactory;
+    public Debugger getDebugger() {
+        return debugger;
+        // do not lazy create debugger as the DefaultDebugger is mostly only useable for testing
+        // and if debugging is enabled then Camel will use BacklogDebugger that can be remotely controlled via JMX management
     }
 
     @Override
-    public void setInternalProcessorFactory(InternalProcessorFactory internalProcessorFactory) {
-        this.internalProcessorFactory = doAddService(internalProcessorFactory);
+    public void setDebugger(Debugger debugger) {
+        if (isStartingOrStarted()) {
+            throw new IllegalStateException("Cannot set debugger on a started CamelContext");
+        }
+        AbstractCamelContext.this.debugger = doAddService(debugger, true, false, true);
     }
 
     @Override
-    public InterceptEndpointFactory getInterceptEndpointFactory() {
-        if (interceptEndpointFactory == null) {
+    public Tracer getTracer() {
+        if (tracer == null) {
             synchronized (lock) {
-                if (interceptEndpointFactory == null) {
-                    setInterceptEndpointFactory(createInterceptEndpointFactory());
+                if (tracer == null) {
+                    setTracer(createTracer());
                 }
             }
         }
-        return interceptEndpointFactory;
+        return tracer;
     }
 
     @Override
-    public void setInterceptEndpointFactory(InterceptEndpointFactory interceptEndpointFactory) {
-        this.interceptEndpointFactory = doAddService(interceptEndpointFactory);
-    }
-
-    @Override
-    public RouteFactory getRouteFactory() {
-        if (routeFactory == null) {
-            synchronized (lock) {
-                if (routeFactory == null) {
-                    setRouteFactory(createRouteFactory());
-                }
-            }
-        }
-        return routeFactory;
-    }
-
-    @Override
-    public void setRouteFactory(RouteFactory routeFactory) {
-        this.routeFactory = routeFactory;
-    }
-
-    @Override
-    public MessageHistoryFactory getMessageHistoryFactory() {
-        if (messageHistoryFactory == null) {
-            synchronized (lock) {
-                if (messageHistoryFactory == null) {
-                    setMessageHistoryFactory(createMessageHistoryFactory());
-                }
-            }
-        }
-        return messageHistoryFactory;
-    }
-
-    @Override
-    public void setMessageHistoryFactory(MessageHistoryFactory messageHistoryFactory) {
-        this.messageHistoryFactory = doAddService(messageHistoryFactory);
-        // enable message history if we set a custom factory
-        setMessageHistory(true);
-    }
-
-    @Override
-    public Debugger getDebugger() {
-        return debugger;
-        // do not lazy create debugger as the DefaultDebugger is mostly only useable for testing
-        // and if debugging is enabled then Camel will use BacklogDebugger that can be remotely controlled via JMX management
-    }
-
-    @Override
-    public void setDebugger(Debugger debugger) {
-        if (isStartingOrStarted()) {
-            throw new IllegalStateException("Cannot set debugger on a started CamelContext");
-        }
-        this.debugger = doAddService(debugger, true, false, true);
-    }
-
-    @Override
-    public Tracer getTracer() {
-        if (tracer == null) {
-            synchronized (lock) {
-                if (tracer == null) {
-                    setTracer(createTracer());
-                }
-            }
-        }
-        return tracer;
-    }
-
-    @Override
-    public void setTracer(Tracer tracer) {
-        // if tracing is in standby mode, then we can use it after camel is started
-        if (!isTracingStandby() && isStartingOrStarted()) {
-            throw new IllegalStateException("Cannot set tracer on a started CamelContext");
-        }
-        this.tracer = doAddService(tracer, true, false, true);
+    public void setTracer(Tracer tracer) {
+        // if tracing is in standby mode, then we can use it after camel is started
+        if (!isTracingStandby() && isStartingOrStarted()) {
+            throw new IllegalStateException("Cannot set tracer on a started CamelContext");
+        }
+        AbstractCamelContext.this.tracer = doAddService(tracer, true, false, true);
     }
 
     @Override
     public void setTracingStandby(boolean tracingStandby) {
-        this.traceStandby = tracingStandby;
+        AbstractCamelContext.this.traceStandby = tracingStandby;
     }
 
     @Override
@@ -4828,7 +4059,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setBacklogTracingStandby(boolean backlogTracingStandby) {
-        this.backlogTraceStandby = backlogTracingStandby;
+        AbstractCamelContext.this.backlogTraceStandby = backlogTracingStandby;
     }
 
     @Override
@@ -4850,7 +4081,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setUuidGenerator(UuidGenerator uuidGenerator) {
-        this.uuidGenerator = doAddService(uuidGenerator);
+        AbstractCamelContext.this.uuidGenerator = doAddService(uuidGenerator);
     }
 
     @Override
@@ -4867,7 +4098,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setStreamCachingStrategy(StreamCachingStrategy streamCachingStrategy) {
-        this.streamCachingStrategy = doAddService(streamCachingStrategy, true, false, true);
+        AbstractCamelContext.this.streamCachingStrategy = doAddService(streamCachingStrategy, true, false, true);
     }
 
     @Override
@@ -4884,7 +4115,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setRestRegistry(RestRegistry restRegistry) {
-        this.restRegistry = doAddService(restRegistry);
+        AbstractCamelContext.this.restRegistry = doAddService(restRegistry);
     }
 
     protected RestRegistry createRestRegistry() {
@@ -4904,7 +4135,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public void setRestRegistryFactory(RestRegistryFactory restRegistryFactory) {
-        this.restRegistryFactory = doAddService(restRegistryFactory);
+        AbstractCamelContext.this.restRegistryFactory = doAddService(restRegistryFactory);
     }
 
     @Override
@@ -4943,7 +4174,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public void setTransformerRegistry(TransformerRegistry transformerRegistry) {
-        this.transformerRegistry = doAddService(transformerRegistry);
+        AbstractCamelContext.this.transformerRegistry = doAddService(transformerRegistry);
     }
 
     @Override
@@ -4964,17 +4195,17 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     public void setValidatorRegistry(ValidatorRegistry validatorRegistry) {
-        this.validatorRegistry = doAddService(validatorRegistry);
+        AbstractCamelContext.this.validatorRegistry = doAddService(validatorRegistry);
     }
 
     @Override
     public SSLContextParameters getSSLContextParameters() {
-        return this.sslContextParameters;
+        return AbstractCamelContext.this.sslContextParameters;
     }
 
     @Override
     public void setSSLContextParameters(SSLContextParameters sslContextParameters) {
-        this.sslContextParameters = sslContextParameters;
+        AbstractCamelContext.this.sslContextParameters = sslContextParameters;
     }
 
     @Override
@@ -4984,236 +4215,15 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public void setStartupSummaryLevel(StartupSummaryLevel startupSummaryLevel) {
-        this.startupSummaryLevel = startupSummaryLevel;
-    }
-
-    @Override
-    public HeadersMapFactory getHeadersMapFactory() {
-        return headersMapFactory;
-    }
-
-    @Override
-    public void setHeadersMapFactory(HeadersMapFactory headersMapFactory) {
-        this.headersMapFactory = doAddService(headersMapFactory);
-    }
-
-    @Override
-    public RoutesLoader getRoutesLoader() {
-        if (routesLoader == null) {
-            synchronized (lock) {
-                if (routesLoader == null) {
-                    setRoutesLoader(createRoutesLoader());
-                }
-            }
-        }
-        return routesLoader;
-    }
-
-    @Override
-    public void setRoutesLoader(RoutesLoader routesLoader) {
-        this.routesLoader = doAddService(routesLoader);
-    }
-
-    @Override
-    public ResourceLoader getResourceLoader() {
-        if (resourceLoader == null) {
-            synchronized (lock) {
-                if (resourceLoader == null) {
-                    setResourceLoader(createResourceLoader());
-                }
-            }
-        }
-        return resourceLoader;
-    }
-
-    @Override
-    public void setResourceLoader(ResourceLoader resourceLoader) {
-        this.resourceLoader = doAddService(resourceLoader);
-    }
-
-    public ModelToXMLDumper getModelToXMLDumper() {
-        if (modelToXMLDumper == null) {
-            synchronized (lock) {
-                if (modelToXMLDumper == null) {
-                    setModelToXMLDumper(createModelToXMLDumper());
-                }
-            }
-        }
-        return modelToXMLDumper;
-    }
-
-    public void setModelToXMLDumper(ModelToXMLDumper modelToXMLDumper) {
-        this.modelToXMLDumper = doAddService(modelToXMLDumper);
-    }
-
-    public RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory() {
-        if (restBindingJaxbDataFormatFactory == null) {
-            synchronized (lock) {
-                if (restBindingJaxbDataFormatFactory == null) {
-                    setRestBindingJaxbDataFormatFactory(createRestBindingJaxbDataFormatFactory());
-                }
-            }
-        }
-        return restBindingJaxbDataFormatFactory;
-    }
-
-    public void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory) {
-        this.restBindingJaxbDataFormatFactory = restBindingJaxbDataFormatFactory;
-    }
-
-    @Override
-    public RuntimeCamelCatalog getRuntimeCamelCatalog() {
-        if (runtimeCamelCatalog == null) {
-            synchronized (lock) {
-                if (runtimeCamelCatalog == null) {
-                    setRuntimeCamelCatalog(createRuntimeCamelCatalog());
-                }
-            }
-        }
-        return runtimeCamelCatalog;
-    }
-
-    @Override
-    public void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog) {
-        this.runtimeCamelCatalog = doAddService(runtimeCamelCatalog);
-    }
-
-    @Override
-    public ExchangeFactory getExchangeFactory() {
-        if (exchangeFactory == null) {
-            synchronized (lock) {
-                if (exchangeFactory == null) {
-                    setExchangeFactory(createExchangeFactory());
-                }
-            }
-        }
-        return exchangeFactory;
-    }
-
-    @Override
-    public void setExchangeFactory(ExchangeFactory exchangeFactory) {
-        // automatic inject camel context
-        exchangeFactory.setCamelContext(this);
-        this.exchangeFactory = exchangeFactory;
-    }
-
-    @Override
-    public ExchangeFactoryManager getExchangeFactoryManager() {
-        if (exchangeFactoryManager == null) {
-            synchronized (lock) {
-                if (exchangeFactoryManager == null) {
-                    setExchangeFactoryManager(createExchangeFactoryManager());
-                }
-            }
-        }
-        return exchangeFactoryManager;
-    }
-
-    @Override
-    public void setExchangeFactoryManager(ExchangeFactoryManager exchangeFactoryManager) {
-        this.exchangeFactoryManager = doAddService(exchangeFactoryManager);
-    }
-
-    @Override
-    public ProcessorExchangeFactory getProcessorExchangeFactory() {
-        if (processorExchangeFactory == null) {
-            synchronized (lock) {
-                if (processorExchangeFactory == null) {
-                    setProcessorExchangeFactory(createProcessorExchangeFactory());
-                }
-            }
-        }
-        return processorExchangeFactory;
-    }
-
-    @Override
-    public void setProcessorExchangeFactory(ProcessorExchangeFactory processorExchangeFactory) {
-        // automatic inject camel context
-        processorExchangeFactory.setCamelContext(this);
-        this.processorExchangeFactory = processorExchangeFactory;
-    }
-
-    @Override
-    public ReactiveExecutor getReactiveExecutor() {
-        if (reactiveExecutor == null) {
-            synchronized (lock) {
-                if (reactiveExecutor == null) {
-                    setReactiveExecutor(createReactiveExecutor());
-                }
-            }
-        }
-        return reactiveExecutor;
-    }
-
-    @Override
-    public void setReactiveExecutor(ReactiveExecutor reactiveExecutor) {
-        // special for executorServiceManager as want to stop it manually so
-        // false in stopOnShutdown
-        this.reactiveExecutor = doAddService(reactiveExecutor, false);
-    }
-
-    @Override
-    public DeferServiceFactory getDeferServiceFactory() {
-        if (deferServiceFactory == null) {
-            synchronized (lock) {
-                if (deferServiceFactory == null) {
-                    setDeferServiceFactory(createDeferServiceFactory());
-                }
-            }
-        }
-        return deferServiceFactory;
-    }
-
-    public void setDeferServiceFactory(DeferServiceFactory deferServiceFactory) {
-        this.deferServiceFactory = deferServiceFactory;
-    }
-
-    @Override
-    public AnnotationBasedProcessorFactory getAnnotationBasedProcessorFactory() {
-        if (annotationBasedProcessorFactory == null) {
-            synchronized (lock) {
-                if (annotationBasedProcessorFactory == null) {
-                    setAnnotationBasedProcessorFactory(createAnnotationBasedProcessorFactory());
-                }
-            }
-        }
-        return annotationBasedProcessorFactory;
-    }
-
-    public void setAnnotationBasedProcessorFactory(AnnotationBasedProcessorFactory annotationBasedProcessorFactory) {
-        this.annotationBasedProcessorFactory = annotationBasedProcessorFactory;
-    }
-
-    @Override
-    public BeanProxyFactory getBeanProxyFactory() {
-        if (beanProxyFactory == null) {
-            synchronized (lock) {
-                if (beanProxyFactory == null) {
-                    setBeanProxyFactory(createBeanProxyFactory());
-                }
-            }
-        }
-        return beanProxyFactory;
+        AbstractCamelContext.this.startupSummaryLevel = startupSummaryLevel;
     }
 
     public void setBeanProxyFactory(BeanProxyFactory beanProxyFactory) {
-        this.beanProxyFactory = doAddService(beanProxyFactory);
-    }
-
-    @Override
-    public BeanProcessorFactory getBeanProcessorFactory() {
-        if (beanProcessorFactory == null) {
-            synchronized (lock) {
-                if (beanProcessorFactory == null) {
-                    setBeanProcessorFactory(createBeanProcessorFactory());
-                }
-            }
-        }
-        return beanProcessorFactory;
+        AbstractCamelContext.this.beanProxyFactory = doAddService(beanProxyFactory);
     }
 
     public void setBeanProcessorFactory(BeanProcessorFactory beanProcessorFactory) {
-        this.beanProcessorFactory = doAddService(beanProcessorFactory);
+        AbstractCamelContext.this.beanProcessorFactory = doAddService(beanProcessorFactory);
     }
 
     public boolean isLogJvmUptime() {
@@ -5224,7 +4234,7 @@ public abstract class AbstractCamelContext extends BaseService
      * Whether to log the JVM uptime on startup and shutdown
      */
     public void setLogJvmUptime(boolean logJvmUptime) {
-        this.logJvmUptime = logJvmUptime;
+        AbstractCamelContext.this.logJvmUptime = logJvmUptime;
     }
 
     protected Map<String, RouteService> getRouteServices() {
@@ -5233,7 +4243,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public String toString() {
-        return "CamelContext(" + getName() + ")";
+        return "CamelContext(" + camelContextExtension.getName() + ")";
     }
 
     protected void failOnStartup(Exception e) {
@@ -5377,9 +4387,9 @@ public abstract class AbstractCamelContext extends BaseService
     protected RestConfiguration createRestConfiguration() {
         // lookup a global which may have been on a container such spring-boot / CDI / etc.
         RestConfiguration conf
-                = CamelContextHelper.lookup(this, RestConfiguration.DEFAULT_REST_CONFIGURATION_ID, RestConfiguration.class);
+                = CamelContextHelper.lookup(AbstractCamelContext.this, RestConfiguration.DEFAULT_REST_CONFIGURATION_ID, RestConfiguration.class);
         if (conf == null) {
-            conf = CamelContextHelper.findSingleByType(this, RestConfiguration.class);
+            conf = CamelContextHelper.findSingleByType(AbstractCamelContext.this, RestConfiguration.class);
         }
         if (conf == null) {
             conf = new RestConfiguration();
@@ -5388,71 +4398,1525 @@ public abstract class AbstractCamelContext extends BaseService
         return conf;
     }
 
-    @Override
-    public RouteController getInternalRouteController() {
-        return internalRouteController;
+    public abstract Processor createErrorHandler(Route route, Processor processor) throws Exception;
+
+    public abstract void disposeModel();
+
+    public abstract String getTestExcludeRoutes();
+
+    public ExtendedCamelContext getCamelContextExtension() {
+        return camelContextExtension;
     }
 
-    @Override
-    public EndpointUriFactory getEndpointUriFactory(String scheme) {
-        return getUriFactoryResolver().resolveFactory(scheme, this);
+    public void setName(String name) {
+        camelContextExtension.setName(name);
     }
 
-    @Override
-    public StartupStepRecorder getStartupStepRecorder() {
-        return startupStepRecorder;
+    public String getName() {
+        return camelContextExtension.getName();
     }
 
-    @Override
-    public void setStartupStepRecorder(StartupStepRecorder startupStepRecorder) {
-        this.startupStepRecorder = startupStepRecorder;
+    public void setDescription(String description) {
+        camelContextExtension.setDescription(description);
     }
 
-    @Override
-    public CliConnectorFactory getCliConnectorFactory() {
-        if (cliConnectorFactory == null) {
-            synchronized (lock) {
-                if (cliConnectorFactory == null) {
-                    setCliConnectorFactory(createCliConnectorFactory());
-                }
-            }
-        }
-        return cliConnectorFactory;
+    public String getDescription() {
+        return camelContextExtension.getDescription();
     }
 
-    @Override
-    public void setCliConnectorFactory(CliConnectorFactory cliConnectorFactory) {
-        this.cliConnectorFactory = cliConnectorFactory;
+    public ProcessorExchangeFactory getProcessorExchangeFactory() {
+        return camelContextExtension.getProcessorExchangeFactory();
     }
 
-    class LifecycleHelper implements AutoCloseable {
-        final Map<String, String> originalContextMap;
-        final ClassLoader tccl;
+    public void setProcessorExchangeFactory(ProcessorExchangeFactory processorExchangeFactory) {
+        camelContextExtension.setProcessorExchangeFactory(processorExchangeFactory);
+    }
 
-        LifecycleHelper() {
-            // Using the ApplicationClassLoader as the default for TCCL
-            tccl = Thread.currentThread().getContextClassLoader();
-            if (applicationContextClassLoader != null) {
-                Thread.currentThread().setContextClassLoader(applicationContextClassLoader);
-            }
-            if (isUseMDCLogging()) {
-                originalContextMap = MDC.getCopyOfContextMap();
-                MDC.put(MDC_CAMEL_CONTEXT_ID, getName());
-            } else {
-                originalContextMap = null;
-            }
-        }
+    public CamelBeanPostProcessor getBeanPostProcessor() {
+        return camelContextExtension.getBeanPostProcessor();
+    }
 
-        @Override
-        public void close() {
+    public void setBeanPostProcessor(CamelBeanPostProcessor beanPostProcessor) {
+        camelContextExtension.setBeanPostProcessor(beanPostProcessor);
+    }
+
+    public CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory() {
+        return camelContextExtension.getDependencyInjectionAnnotationFactory();
+    }
+
+    public void setDependencyInjectionAnnotationFactory(CamelDependencyInjectionAnnotationFactory factory) {
+        camelContextExtension.setDependencyInjectionAnnotationFactory(factory);
+    }
+
+    public ManagementMBeanAssembler getManagementMBeanAssembler() {
+        return camelContextExtension.getManagementMBeanAssembler();
+    }
+
+    public ErrorHandlerFactory getErrorHandlerFactory() {
+        return camelContextExtension.getErrorHandlerFactory();
+    }
+
+    public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
+        camelContextExtension.setErrorHandlerFactory(errorHandlerFactory);
+    }
+
+    public NodeIdFactory getNodeIdFactory() {
+        return camelContextExtension.getNodeIdFactory();
+    }
+
+    public void setNodeIdFactory(NodeIdFactory factory) {
+        camelContextExtension.setNodeIdFactory(factory);
+    }
+
+    public ComponentResolver getComponentResolver() {
+        return camelContextExtension.getComponentResolver();
+    }
+
+    public void setComponentResolver(ComponentResolver componentResolver) {
+        camelContextExtension.setComponentResolver(componentResolver);
+    }
+
+    public ComponentNameResolver getComponentNameResolver() {
+        return camelContextExtension.getComponentNameResolver();
+    }
+
+    public void setComponentNameResolver(ComponentNameResolver componentNameResolver) {
+        camelContextExtension.setComponentNameResolver(componentNameResolver);
+    }
+
+    public LanguageResolver getLanguageResolver() {
+        return camelContextExtension.getLanguageResolver();
+    }
+
+    public void setLanguageResolver(LanguageResolver languageResolver) {
+        camelContextExtension.setLanguageResolver(languageResolver);
+    }
+
+    public DataFormatResolver getDataFormatResolver() {
+        return camelContextExtension.getDataFormatResolver();
+    }
+
+    public void setDataFormatResolver(DataFormatResolver dataFormatResolver) {
+        camelContextExtension.setDataFormatResolver(dataFormatResolver);
+    }
+
+    public HealthCheckResolver getHealthCheckResolver() {
+        return camelContextExtension.getHealthCheckResolver();
+    }
+
+    public void setHealthCheckResolver(HealthCheckResolver healthCheckResolver) {
+        camelContextExtension.setHealthCheckResolver(healthCheckResolver);
+    }
+
+    public DevConsoleResolver getDevConsoleResolver() {
+        return camelContextExtension.getDevConsoleResolver();
+    }
+
+    public void setDevConsoleResolver(DevConsoleResolver devConsoleResolver) {
+        camelContextExtension.setDevConsoleResolver(devConsoleResolver);
+    }
+
+    public PackageScanClassResolver getPackageScanClassResolver() {
+        return camelContextExtension.getPackageScanClassResolver();
+    }
+
+    public void setPackageScanClassResolver(PackageScanClassResolver resolver) {
+        camelContextExtension.setPackageScanClassResolver(resolver);
+    }
+
+    public PackageScanResourceResolver getPackageScanResourceResolver() {
+        return camelContextExtension.getPackageScanResourceResolver();
+    }
+
+    public void setPackageScanResourceResolver(PackageScanResourceResolver resolver) {
+        camelContextExtension.setPackageScanResourceResolver(resolver);
+    }
+
+    public FactoryFinder getDefaultFactoryFinder() {
+        return camelContextExtension.getDefaultFactoryFinder();
+    }
+
+    public FactoryFinder getBootstrapFactoryFinder() {
+        return camelContextExtension.getBootstrapFactoryFinder();
+    }
+
+    public void setBootstrapFactoryFinder(FactoryFinder factoryFinder) {
+        camelContextExtension.setBootstrapFactoryFinder(factoryFinder);
+    }
+
+    public FactoryFinder getBootstrapFactoryFinder(String path) {
+        return camelContextExtension.getBootstrapFactoryFinder(path);
+    }
+
+    public ConfigurerResolver getBootstrapConfigurerResolver() {
+        return camelContextExtension.getBootstrapConfigurerResolver();
+    }
+
+    public void setBootstrapConfigurerResolver(ConfigurerResolver configurerResolver) {
+        camelContextExtension.setBootstrapConfigurerResolver(configurerResolver);
+    }
+
+    public FactoryFinder getFactoryFinder(String path) {
+        return camelContextExtension.getFactoryFinder(path);
+    }
+
+    public FactoryFinderResolver getFactoryFinderResolver() {
+        return camelContextExtension.getFactoryFinderResolver();
+    }
+
+    public void setFactoryFinderResolver(FactoryFinderResolver resolver) {
+        camelContextExtension.setFactoryFinderResolver(resolver);
+    }
+
+    public ProcessorFactory getProcessorFactory() {
+        return camelContextExtension.getProcessorFactory();
+    }
+
+    public void setProcessorFactory(ProcessorFactory processorFactory) {
+        camelContextExtension.setProcessorFactory(processorFactory);
+    }
+
+    public InternalProcessorFactory getInternalProcessorFactory() {
+        return camelContextExtension.getInternalProcessorFactory();
+    }
+
+    public void setInternalProcessorFactory(InternalProcessorFactory internalProcessorFactory) {
+        camelContextExtension.setInternalProcessorFactory(internalProcessorFactory);
+    }
+
+    public InterceptEndpointFactory getInterceptEndpointFactory() {
+        return camelContextExtension.getInterceptEndpointFactory();
+    }
+
+    public void setInterceptEndpointFactory(InterceptEndpointFactory interceptEndpointFactory) {
+        camelContextExtension.setInterceptEndpointFactory(interceptEndpointFactory);
+    }
+
+    public RouteFactory getRouteFactory() {
+        return camelContextExtension.getRouteFactory();
+    }
+
+    public void setRouteFactory(RouteFactory routeFactory) {
+        camelContextExtension.setRouteFactory(routeFactory);
+    }
+
+    public ModelJAXBContextFactory getModelJAXBContextFactory() {
+        return camelContextExtension.getModelJAXBContextFactory();
+    }
+
+    public void setModelJAXBContextFactory(ModelJAXBContextFactory modelJAXBContextFactory) {
+        camelContextExtension.setModelJAXBContextFactory(modelJAXBContextFactory);
+    }
+
+    public DeferServiceFactory getDeferServiceFactory() {
+        return camelContextExtension.getDeferServiceFactory();
+    }
+
+    public void setDeferServiceFactory(DeferServiceFactory deferServiceFactory) {
+        camelContextExtension.setDeferServiceFactory(deferServiceFactory);
+    }
+
+    public UnitOfWorkFactory getUnitOfWorkFactory() {
+        return camelContextExtension.getUnitOfWorkFactory();
+    }
+
+    public void setUnitOfWorkFactory(UnitOfWorkFactory unitOfWorkFactory) {
+        camelContextExtension.setUnitOfWorkFactory(unitOfWorkFactory);
+    }
+
+    public AnnotationBasedProcessorFactory getAnnotationBasedProcessorFactory() {
+        return camelContextExtension.getAnnotationBasedProcessorFactory();
+    }
+
+    public void setAnnotationBasedProcessorFactory(AnnotationBasedProcessorFactory annotationBasedProcessorFactory) {
+        camelContextExtension.setAnnotationBasedProcessorFactory(annotationBasedProcessorFactory);
+    }
+
+    public BeanProxyFactory getBeanProxyFactory() {
+        return camelContextExtension.getBeanProxyFactory();
+    }
+
+    public BeanProcessorFactory getBeanProcessorFactory() {
+        return camelContextExtension.getBeanProcessorFactory();
+    }
+
+    public ScheduledExecutorService getErrorHandlerExecutorService() {
+        return camelContextExtension.getErrorHandlerExecutorService();
+    }
+
+    public void addInterceptStrategy(InterceptStrategy interceptStrategy) {
+        camelContextExtension.addInterceptStrategy(interceptStrategy);
+    }
+
+    public List<InterceptStrategy> getInterceptStrategies() {
+        return camelContextExtension.getInterceptStrategies();
+    }
+
+    public void setupManagement(Map<String, Object> options) {
+        camelContextExtension.setupManagement(options);
+    }
+
+    public Set<LogListener> getLogListeners() {
+        return camelContextExtension.getLogListeners();
+    }
+
+    public void addLogListener(LogListener listener) {
+        camelContextExtension.addLogListener(listener);
+    }
+
+    public AsyncProcessorAwaitManager getAsyncProcessorAwaitManager() {
+        return camelContextExtension.getAsyncProcessorAwaitManager();
+    }
+
+    public void setAsyncProcessorAwaitManager(AsyncProcessorAwaitManager manager) {
+        camelContextExtension.setAsyncProcessorAwaitManager(manager);
+    }
+
+    public BeanIntrospection getBeanIntrospection() {
+        return camelContextExtension.getBeanIntrospection();
+    }
+
+    public void setBeanIntrospection(BeanIntrospection beanIntrospection) {
+        camelContextExtension.setBeanIntrospection(beanIntrospection);
+    }
+
+    public HeadersMapFactory getHeadersMapFactory() {
+        return camelContextExtension.getHeadersMapFactory();
+    }
+
+    public void setHeadersMapFactory(HeadersMapFactory factory) {
+        camelContextExtension.setHeadersMapFactory(factory);
+    }
+
+    public ReactiveExecutor getReactiveExecutor() {
+        return camelContextExtension.getReactiveExecutor();
+    }
+
+    public void setReactiveExecutor(ReactiveExecutor reactiveExecutor) {
+        camelContextExtension.setReactiveExecutor(reactiveExecutor);
+    }
+
+    public boolean isEventNotificationApplicable() {
+        return camelContextExtension.isEventNotificationApplicable();
+    }
+
+    public void setEventNotificationApplicable(boolean eventNotificationApplicable) {
+        camelContextExtension.setEventNotificationApplicable(eventNotificationApplicable);
+    }
+
+    public RoutesLoader getRoutesLoader() {
+        return camelContextExtension.getRoutesLoader();
+    }
+
+    public void setRoutesLoader(RoutesLoader routesLoader) {
+        camelContextExtension.setRoutesLoader(routesLoader);
+    }
+
+    public ResourceLoader getResourceLoader() {
+        return camelContextExtension.getResourceLoader();
+    }
+
+    public void setResourceLoader(ResourceLoader resourceLoader) {
+        camelContextExtension.setResourceLoader(resourceLoader);
+    }
+
+    public ModelToXMLDumper getModelToXMLDumper() {
+        return camelContextExtension.getModelToXMLDumper();
+    }
+
+    public void setModelToXMLDumper(ModelToXMLDumper modelToXMLDumper) {
+        camelContextExtension.setModelToXMLDumper(modelToXMLDumper);
+    }
+
+    public RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory() {
+        return camelContextExtension.getRestBindingJaxbDataFormatFactory();
+    }
+
+    public void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory) {
+        camelContextExtension.setRestBindingJaxbDataFormatFactory(restBindingJaxbDataFormatFactory);
+    }
+
+    public RuntimeCamelCatalog getRuntimeCamelCatalog() {
+        return camelContextExtension.getRuntimeCamelCatalog();
+    }
+
+    public void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog) {
+        camelContextExtension.setRuntimeCamelCatalog(runtimeCamelCatalog);
+    }
+
+    public ConfigurerResolver getConfigurerResolver() {
+        return camelContextExtension.getConfigurerResolver();
+    }
+
+    public void setConfigurerResolver(ConfigurerResolver configurerResolver) {
+        camelContextExtension.setConfigurerResolver(configurerResolver);
+    }
+
+    public UriFactoryResolver getUriFactoryResolver() {
+        return camelContextExtension.getUriFactoryResolver();
+    }
+
+    public void setUriFactoryResolver(UriFactoryResolver uriFactoryResolver) {
+        camelContextExtension.setUriFactoryResolver(uriFactoryResolver);
+    }
+
+    public RouteController getInternalRouteController() {
+        return camelContextExtension.getInternalRouteController();
+    }
+
+    public EndpointUriFactory getEndpointUriFactory(String scheme) {
+        return camelContextExtension.getEndpointUriFactory(scheme);
+    }
+
+    public StartupStepRecorder getStartupStepRecorder() {
+        return camelContextExtension.getStartupStepRecorder();
+    }
+
+    public void setStartupStepRecorder(StartupStepRecorder startupStepRecorder) {
+        camelContextExtension.setStartupStepRecorder(startupStepRecorder);
+    }
+
+    public CliConnectorFactory getCliConnectorFactory() {
+        return camelContextExtension.getCliConnectorFactory();
+    }
+
+    public void setCliConnectorFactory(CliConnectorFactory cliConnectorFactory) {
+        camelContextExtension.setCliConnectorFactory(cliConnectorFactory);
+    }
+
+    public void addRoute(Route route) {
+        camelContextExtension.addRoute(route);
+    }
+
+    public void removeRoute(Route route) {
+        camelContextExtension.removeRoute(route);
+    }
+
+    public boolean isLightweight() {
+        return camelContextExtension.isLightweight();
+    }
+
+    public void setLightweight(boolean lightweight) {
+        camelContextExtension.setLightweight(lightweight);
+    }
+
+    public String resolvePropertyPlaceholders(String text, boolean keepUnresolvedOptional) {
+        return camelContextExtension.resolvePropertyPlaceholders(text, keepUnresolvedOptional);
+    }
+
+    public String getBasePackageScan() {
+        return camelContextExtension.getBasePackageScan();
+    }
+
+    public void setBasePackageScan(String basePackageScan) {
+        camelContextExtension.setBasePackageScan(basePackageScan);
+    }
+
+    public ModelineFactory getModelineFactory() {
+        return camelContextExtension.getModelineFactory();
+    }
+
+    public void setModelineFactory(ModelineFactory modelineFactory) {
+        camelContextExtension.setModelineFactory(modelineFactory);
+    }
+
+    public byte getStatusPhase() {
+        return camelContextExtension.getStatusPhase();
+    }
+
+    public PeriodTaskScheduler getPeriodTaskScheduler() {
+        return camelContextExtension.getPeriodTaskScheduler();
+    }
+
+    public void setPeriodTaskScheduler(PeriodTaskScheduler periodTaskScheduler) {
+        camelContextExtension.setPeriodTaskScheduler(periodTaskScheduler);
+    }
+
+    public PeriodTaskResolver getPeriodTaskResolver() {
+        return camelContextExtension.getPeriodTaskResolver();
+    }
+
+    public void setPeriodTaskResolver(PeriodTaskResolver periodTaskResolver) {
+        camelContextExtension.setPeriodTaskResolver(periodTaskResolver);
+    }
+
+    @Deprecated
+    public enum Initialization {
+        Eager,
+        Default,
+        Lazy
+    }
+
+    class LifecycleHelper implements AutoCloseable {
+        final Map<String, String> originalContextMap;
+        final ClassLoader tccl;
+
+        LifecycleHelper() {
+            // Using the ApplicationClassLoader as the default for TCCL
+            tccl = Thread.currentThread().getContextClassLoader();
+            if (applicationContextClassLoader != null) {
+                Thread.currentThread().setContextClassLoader(applicationContextClassLoader);
+            }
+            if (isUseMDCLogging()) {
+                originalContextMap = MDC.getCopyOfContextMap();
+                MDC.put(MDC_CAMEL_CONTEXT_ID, camelContextExtension.getName());
+            } else {
+                originalContextMap = null;
+            }
+        }
+
+        @Override
+        public void close() {
             if (isUseMDCLogging()) {
                 if (originalContextMap != null) {
                     MDC.setContextMap(originalContextMap);
                 } else {
-                    MDC.clear();
+                    MDC.clear();
+                }
+            }
+            Thread.currentThread().setContextClassLoader(tccl);
+        }
+    }
+
+    private class DefaultCamelContextExtension implements ExtendedCamelContext {
+        @Override
+        public byte getStatusPhase() {
+            return status;
+        }
+
+        @Override
+        public String getName() {
+            return getNameStrategy().getName();
+        }
+
+        @Override
+        public void setName(String name) {
+            // use an explicit name strategy since an explicit name was provided to be used
+            setNameStrategy(new ExplicitCamelContextNameStrategy(name));
+        }
+
+        @Override
+        public String getDescription() {
+            return description;
+        }
+
+        @Override
+        public void setDescription(String description) {
+            AbstractCamelContext.this.description = description;
+        }
+
+        @Override
+        public Endpoint hasEndpoint(NormalizedEndpointUri uri) {
+            if (endpoints.isEmpty()) {
+                return null;
+            }
+            return endpoints.get(uri);
+        }
+
+        @Override
+        public NormalizedEndpointUri normalizeUri(String uri) {
+            try {
+                uri = EndpointHelper.resolveEndpointUriPropertyPlaceholders(AbstractCamelContext.this, uri);
+                return NormalizedUri.newNormalizedUri(uri, false);
+            } catch (ResolveEndpointFailedException e) {
+                throw e;
+            } catch (Exception e) {
+                throw new ResolveEndpointFailedException(uri, e);
+            }
+        }
+
+        @Override
+        public Endpoint getEndpoint(NormalizedEndpointUri uri) {
+            return doGetEndpoint(uri.getUri(), null, true, false);
+        }
+
+        @Override
+        public Endpoint getPrototypeEndpoint(String uri) {
+            return doGetEndpoint(uri, null, false, true);
+        }
+
+        @Override
+        public Endpoint getPrototypeEndpoint(NormalizedEndpointUri uri) {
+            return doGetEndpoint(uri.getUri(), null, true, true);
+        }
+
+        @Override
+        public Endpoint getEndpoint(NormalizedEndpointUri uri, Map<String, Object> parameters) {
+            return doGetEndpoint(uri.getUri(), parameters, true, false);
+        }
+
+        @Override
+        public void registerEndpointCallback(EndpointStrategy strategy) {
+            if (!endpointStrategies.contains(strategy)) {
+                // let it be invoked for already registered endpoints so it can
+                // catch-up.
+                endpointStrategies.add(strategy);
+                for (Endpoint endpoint : getEndpoints()) {
+                    Endpoint newEndpoint = strategy.registerEndpoint(endpoint.getEndpointUri(), endpoint);
+                    if (newEndpoint != null) {
+                        // put will replace existing endpoint with the new endpoint
+                        endpoints.put(getEndpointKey(endpoint.getEndpointUri()), newEndpoint);
+                    }
+                }
+            }
+        }
+
+        @Override
+        public List<RouteStartupOrder> getRouteStartupOrder() {
+            return routeStartupOrder;
+        }
+
+        public void removeRoute(Route route) {
+            synchronized (AbstractCamelContext.this.routes) {
+                AbstractCamelContext.this.routes.remove(route);
+            }
+        }
+
+        public void addRoute(Route route) {
+            synchronized (AbstractCamelContext.this.routes) {
+                AbstractCamelContext.this.routes.add(route);
+            }
+        }
+
+        @Override
+        public boolean isSetupRoutes() {
+            Boolean answer = isSetupRoutes.get();
+            return answer != null && answer;
+        }
+
+        @Override
+        public void addBootstrap(BootstrapCloseable bootstrap) {
+            bootstraps.add(bootstrap);
+        }
+
+        @Override
+        public List<Service> getServices() {
+            return Collections.unmodifiableList(servicesToStop);
+        }
+
+        @Override
+        public String resolvePropertyPlaceholders(String text, boolean keepUnresolvedOptional) {
+            if (text != null && text.contains(PropertiesComponent.PREFIX_TOKEN)) {
+                // the parser will throw exception if property key was not found
+                String answer = getPropertiesComponent().parseUri(text, keepUnresolvedOptional);
+                LOG.debug("Resolved text: {} -> {}", text, answer);
+                return answer;
+            }
+            // is the value a known field (currently we only support
+            // constants from Exchange.class)
+            if (text != null && text.startsWith("Exchange.")) {
+                String field = StringHelper.after(text, "Exchange.");
+                String constant = ExchangeConstantProvider.lookup(field);
+                if (constant != null) {
+                    LOG.debug("Resolved constant: {} -> {}", text, constant);
+                    return constant;
+                } else {
+                    throw new IllegalArgumentException("Constant field with name: " + field + " not found on Exchange.class");
+                }
+            }
+
+            // return original text as is
+            return text;
+        }
+
+        @Override
+        public CamelBeanPostProcessor getBeanPostProcessor() {
+            if (beanPostProcessor == null) {
+                synchronized (lock) {
+                    if (beanPostProcessor == null) {
+                        camelContextExtension.setBeanPostProcessor(createBeanPostProcessor());
+                    }
+                }
+            }
+            return beanPostProcessor;
+        }
+
+        @Override
+        public void setBeanPostProcessor(CamelBeanPostProcessor beanPostProcessor) {
+            AbstractCamelContext.this.beanPostProcessor = doAddService(beanPostProcessor);
+        }
+
+        @Override
+        public CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory() {
+            if (dependencyInjectionAnnotationFactory == null) {
+                synchronized (lock) {
+                    if (dependencyInjectionAnnotationFactory == null) {
+                        camelContextExtension.setDependencyInjectionAnnotationFactory(createDependencyInjectionAnnotationFactory());
+                    }
+                }
+            }
+            return dependencyInjectionAnnotationFactory;
+        }
+
+        @Override
+        public void setDependencyInjectionAnnotationFactory(
+                CamelDependencyInjectionAnnotationFactory dependencyInjectionAnnotationFactory) {
+            AbstractCamelContext.this.dependencyInjectionAnnotationFactory = dependencyInjectionAnnotationFactory;
+        }
+
+        @Override
+        public ManagementMBeanAssembler getManagementMBeanAssembler() {
+            return managementMBeanAssembler;
+        }
+
+        public ComponentResolver getComponentResolver() {
+            if (componentResolver == null) {
+                synchronized (lock) {
+                    if (componentResolver == null) {
+                        camelContextExtension.setComponentResolver(createComponentResolver());
+                    }
+                }
+            }
+            return componentResolver;
+        }
+
+        public void setComponentResolver(ComponentResolver componentResolver) {
+            AbstractCamelContext.this.componentResolver = doAddService(componentResolver);
+        }
+
+        public ComponentNameResolver getComponentNameResolver() {
+            if (componentNameResolver == null) {
+                synchronized (lock) {
+                    if (componentNameResolver == null) {
+                        camelContextExtension.setComponentNameResolver(createComponentNameResolver());
+                    }
+                }
+            }
+            return componentNameResolver;
+        }
+
+        public void setComponentNameResolver(ComponentNameResolver componentNameResolver) {
+            AbstractCamelContext.this.componentNameResolver = doAddService(componentNameResolver);
+        }
+
+        public LanguageResolver getLanguageResolver() {
+            if (languageResolver == null) {
+                synchronized (lock) {
+                    if (languageResolver == null) {
+                        camelContextExtension.setLanguageResolver(createLanguageResolver());
+                    }
+                }
+            }
+            return languageResolver;
+        }
+
+        public void setLanguageResolver(LanguageResolver languageResolver) {
+            AbstractCamelContext.this.languageResolver = doAddService(languageResolver);
+        }
+
+        public ConfigurerResolver getConfigurerResolver() {
+            if (configurerResolver == null) {
+                synchronized (lock) {
+                    if (configurerResolver == null) {
+                        camelContextExtension.setConfigurerResolver(createConfigurerResolver());
+                    }
+                }
+            }
+            return configurerResolver;
+        }
+
+        public void setConfigurerResolver(ConfigurerResolver configurerResolver) {
+            AbstractCamelContext.this.configurerResolver = doAddService(configurerResolver);
+        }
+
+        public UriFactoryResolver getUriFactoryResolver() {
+            if (uriFactoryResolver == null) {
+                synchronized (lock) {
+                    if (uriFactoryResolver == null) {
+                        camelContextExtension.setUriFactoryResolver(createUriFactoryResolver());
+                    }
+                }
+            }
+            return uriFactoryResolver;
+        }
+
+        public void setUriFactoryResolver(UriFactoryResolver uriFactoryResolver) {
+            AbstractCamelContext.this.uriFactoryResolver = doAddService(uriFactoryResolver);
+        }
+
+        @Override
+        public Registry getRegistry() {
+            if (registry == null) {
+                synchronized (lock) {
+                    if (registry == null) {
+                        camelContextExtension.setRegistry(createRegistry());
+                    }
+                }
+            }
+            return registry;
+        }
+
+        @Override
+        public void setRegistry(Registry registry) {
+            CamelContextAware.trySetCamelContext(registry, getCamelContextReference());
+            AbstractCamelContext.this.registry = registry;
+        }
+
+        @Override
+        public void setupRoutes(boolean done) {
+            if (done) {
+                isSetupRoutes.remove();
+            } else {
+                isSetupRoutes.set(true);
+            }
+        }
+
+        @Override
+        public List<InterceptStrategy> getInterceptStrategies() {
+            return interceptStrategies;
+        }
+
+        @Override
+        public void addInterceptStrategy(InterceptStrategy interceptStrategy) {
+            // avoid adding double which can happen with spring xml on spring boot
+            if (!camelContextExtension.getInterceptStrategies().contains(interceptStrategy)) {
+                camelContextExtension.getInterceptStrategies().add(interceptStrategy);
+            }
+        }
+
+        @Override
+        public Set<LogListener> getLogListeners() {
+            return logListeners;
+        }
+
+        @Override
+        public void addLogListener(LogListener listener) {
+            if (logListeners == null) {
+                logListeners = new LinkedHashSet<>();
+            }
+            // avoid adding double which can happen with spring xml on spring boot
+            logListeners.add(listener);
+        }
+
+        @Override
+        public ErrorHandlerFactory getErrorHandlerFactory() {
+            return errorHandlerFactory;
+        }
+
+        @Override
+        public void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory) {
+            AbstractCamelContext.this.errorHandlerFactory = errorHandlerFactory;
+        }
+
+        @Override
+        public ScheduledExecutorService getErrorHandlerExecutorService() {
+            if (errorHandlerExecutorService == null) {
+                synchronized (lock) {
+                    if (errorHandlerExecutorService == null) {
+                        // setup default thread pool for error handler
+                        errorHandlerExecutorService = createErrorHandlerExecutorService();
+                    }
+                }
+            }
+            return errorHandlerExecutorService;
+        }
+
+        @Override
+        public UnitOfWorkFactory getUnitOfWorkFactory() {
+            if (unitOfWorkFactory == null) {
+                synchronized (lock) {
+                    if (unitOfWorkFactory == null) {
+                        camelContextExtension.setUnitOfWorkFactory(createUnitOfWorkFactory());
+                    }
+                }
+            }
+            return unitOfWorkFactory;
+        }
+
+        @Override
+        public void setUnitOfWorkFactory(UnitOfWorkFactory unitOfWorkFactory) {
+            AbstractCamelContext.this.unitOfWorkFactory = doAddService(unitOfWorkFactory);
+        }
+
+        @Override
+        public boolean isEventNotificationApplicable() {
+            return eventNotificationApplicable;
+        }
+
+        @Override
+        public void setEventNotificationApplicable(boolean eventNotificationApplicable) {
+            AbstractCamelContext.this.eventNotificationApplicable = eventNotificationApplicable;
+        }
+
+        @Override
+        public FactoryFinder getDefaultFactoryFinder() {
+            return camelContextExtension.getFactoryFinder(FactoryFinder.DEFAULT_PATH);
+        }
+
+        @Override
+        public ConfigurerResolver getBootstrapConfigurerResolver() {
+            if (bootstrapConfigurerResolver == null) {
+                synchronized (lock) {
+                    if (bootstrapConfigurerResolver == null) {
+                        bootstrapConfigurerResolver = new BootstrapConfigurerResolver(
+                                camelContextExtension.getFactoryFinderResolver().resolveBootstrapFactoryFinder(getClassResolver(),
+                                        ConfigurerResolver.RESOURCE_PATH));
+                    }
+                }
+            }
+            return bootstrapConfigurerResolver;
+        }
+
+        @Override
+        public void setBootstrapConfigurerResolver(ConfigurerResolver configurerResolver) {
+            AbstractCamelContext.this.bootstrapConfigurerResolver = configurerResolver;
+        }
+
+        @Override
+        public FactoryFinder getBootstrapFactoryFinder() {
+            if (bootstrapFactoryFinder == null) {
+                synchronized (lock) {
+                    if (bootstrapFactoryFinder == null) {
+                        bootstrapFactoryFinder = camelContextExtension.getFactoryFinderResolver().resolveBootstrapFactoryFinder(getClassResolver());
+                    }
+                }
+            }
+            return bootstrapFactoryFinder;
+        }
+
+        @Override
+        public void setBootstrapFactoryFinder(FactoryFinder factoryFinder) {
+            AbstractCamelContext.this.bootstrapFactoryFinder = factoryFinder;
+        }
+
+        @Override
+        public FactoryFinder getBootstrapFactoryFinder(String path) {
+            return bootstrapFactories.computeIfAbsent(path, AbstractCamelContext.this::createBootstrapFactoryFinder);
+        }
+
+        @Override
+        public FactoryFinderResolver getFactoryFinderResolver() {
+            if (factoryFinderResolver == null) {
+                synchronized (lock) {
+                    if (factoryFinderResolver == null) {
+                        factoryFinderResolver = createFactoryFinderResolver();
+                    }
+                }
+            }
+            return factoryFinderResolver;
+        }
+
+        @Override
+        public void setFactoryFinderResolver(FactoryFinderResolver factoryFinderResolver) {
+            AbstractCamelContext.this.factoryFinderResolver = doAddService(factoryFinderResolver);
+        }
+
+        @Override
+        public FactoryFinder getFactoryFinder(String path) {
+            return factories.computeIfAbsent(path, AbstractCamelContext.this::createFactoryFinder);
+        }
+
+        @Override
+        public PackageScanClassResolver getPackageScanClassResolver() {
+            if (packageScanClassResolver == null) {
+                synchronized (lock) {
+                    if (packageScanClassResolver == null) {
+                        camelContextExtension.setPackageScanClassResolver(createPackageScanClassResolver());
+                    }
+                }
+            }
+            return packageScanClassResolver;
+        }
+
+        @Override
+        public void setPackageScanClassResolver(PackageScanClassResolver packageScanClassResolver) {
+            AbstractCamelContext.this.packageScanClassResolver = doAddService(packageScanClassResolver);
+        }
+
+        @Override
+        public PackageScanResourceResolver getPackageScanResourceResolver() {
+            if (packageScanResourceResolver == null) {
+                synchronized (lock) {
+                    if (packageScanResourceResolver == null) {
+                        camelContextExtension.setPackageScanResourceResolver(createPackageScanResourceResolver());
+                    }
+                }
+            }
+            return packageScanResourceResolver;
+        }
+
+        @Override
+        public void setPackageScanResourceResolver(PackageScanResourceResolver packageScanResourceResolver) {
+            AbstractCamelContext.this.packageScanResourceResolver = doAddService(packageScanResourceResolver);
+        }
+
+        @Override
+        public ModelJAXBContextFactory getModelJAXBContextFactory() {
+            if (modelJAXBContextFactory == null) {
+                synchronized (lock) {
+                    if (modelJAXBContextFactory == null) {
+                        camelContextExtension.setModelJAXBContextFactory(createModelJAXBContextFactory());
+                    }
+                }
+            }
+            return modelJAXBContextFactory;
+        }
+
+        @Override
+        public void setModelJAXBContextFactory(final ModelJAXBContextFactory modelJAXBContextFactory) {
+            AbstractCamelContext.this.modelJAXBContextFactory = doAddService(modelJAXBContextFactory);
+        }
+
+        @Override
+        public NodeIdFactory getNodeIdFactory() {
+            if (nodeIdFactory == null) {
+                synchronized (lock) {
+                    if (nodeIdFactory == null) {
+                        camelContextExtension.setNodeIdFactory(createNodeIdFactory());
+                    }
+                }
+            }
+            return nodeIdFactory;
+        }
+
+        @Override
+        public void setNodeIdFactory(NodeIdFactory idFactory) {
+            AbstractCamelContext.this.nodeIdFactory = doAddService(idFactory);
+        }
+
+        @Override
+        public ModelineFactory getModelineFactory() {
+            if (modelineFactory == null) {
+                synchronized (lock) {
+                    if (modelineFactory == null) {
+                        camelContextExtension.setModelineFactory(createModelineFactory());
+                    }
+                }
+            }
+            return modelineFactory;
+        }
+
+        @Override
+        public void setModelineFactory(ModelineFactory modelineFactory) {
+            AbstractCamelContext.this.modelineFactory = doAddService(modelineFactory);
+        }
+
+        @Override
+        public PeriodTaskResolver getPeriodTaskResolver() {
+            if (periodTaskResolver == null) {
+                synchronized (lock) {
+                    if (periodTaskResolver == null) {
+                        camelContextExtension.setPeriodTaskResolver(createPeriodTaskResolver());
+                    }
+                }
+            }
+            return periodTaskResolver;
+        }
+
+        @Override
+        public void setPeriodTaskResolver(PeriodTaskResolver periodTaskResolver) {
+            AbstractCamelContext.this.periodTaskResolver = doAddService(periodTaskResolver);
+        }
+
+        public PeriodTaskScheduler getPeriodTaskScheduler() {
+            if (periodTaskScheduler == null) {
+                synchronized (lock) {
+                    if (periodTaskScheduler == null) {
+                        camelContextExtension.setPeriodTaskScheduler(createPeriodTaskScheduler());
+                    }
                 }
             }
-            Thread.currentThread().setContextClassLoader(tccl);
+            return periodTaskScheduler;
+        }
+
+        public void setPeriodTaskScheduler(PeriodTaskScheduler periodTaskScheduler) {
+            AbstractCamelContext.this.periodTaskScheduler = doAddService(periodTaskScheduler);
+        }
+
+        @Override
+        public void setupManagement(Map<String, Object> options) {
+            LOG.trace("Setting up management");
+
+            ManagementStrategyFactory factory = null;
+            if (!isJMXDisabled()) {
+                try {
+                    // create a one time factory as we dont need this anymore
+                    FactoryFinder finder = createFactoryFinder("META-INF/services/org/apache/camel/management/");
+                    if (finder != null) {
+                        Object object = finder.newInstance("ManagementStrategyFactory").orElse(null);
+                        if (object instanceof ManagementStrategyFactory) {
+                            factory = (ManagementStrategyFactory) object;
+                        }
+                    }
+                    // detect if camel-debug is on classpath that enables debugging
+                    DebuggerFactory df
+                            = camelContextExtension.getBootstrapFactoryFinder().newInstance(Debugger.FACTORY, DebuggerFactory.class).orElse(null);
+                    if (df != null) {
+                        LOG.info("Detected: {} JAR (Enabling Camel Debugging)", df);
+                        enableDebugging(df);
+                    }
+                } catch (Exception e) {
+                    LOG.warn("Cannot create JmxManagementStrategyFactory. Will fallback and disable JMX.", e);
+                }
+            }
+            if (factory == null) {
+                factory = new DefaultManagementStrategyFactory();
+            }
+            LOG.debug("Setting up management with factory: {}", factory);
+
+            // preserve any existing event notifiers that may have been already added
+            List<EventNotifier> notifiers = null;
+            if (managementStrategy != null) {
+                notifiers = managementStrategy.getEventNotifiers();
+            }
+
+            try {
+                ManagementStrategy strategy = factory.create(getCamelContextReference(), options);
+                if (notifiers != null) {
+                    notifiers.forEach(strategy::addEventNotifier);
+                }
+                LifecycleStrategy lifecycle = factory.createLifecycle(AbstractCamelContext.this);
+                factory.setupManagement(AbstractCamelContext.this, strategy, lifecycle);
+            } catch (Exception e) {
+                LOG.warn("Error setting up management due {}", e.getMessage());
+                throw RuntimeCamelException.wrapRuntimeCamelException(e);
+            }
+        }
+
+        @Override
+        public AsyncProcessorAwaitManager getAsyncProcessorAwaitManager() {
+            if (asyncProcessorAwaitManager == null) {
+                synchronized (lock) {
+                    if (asyncProcessorAwaitManager == null) {
+                        camelContextExtension.setAsyncProcessorAwaitManager(createAsyncProcessorAwaitManager());
+                    }
+                }
+            }
+            return asyncProcessorAwaitManager;
+        }
+
+        @Override
+        public void setAsyncProcessorAwaitManager(AsyncProcessorAwaitManager asyncProcessorAwaitManager) {
+            AbstractCamelContext.this.asyncProcessorAwaitManager = doAddService(asyncProcessorAwaitManager);
+        }
+
+        @Override
+        public BeanIntrospection getBeanIntrospection() {
+            if (beanIntrospection == null) {
+                synchronized (lock) {
+                    if (beanIntrospection == null) {
+                        camelContextExtension.setBeanIntrospection(createBeanIntrospection());
+                    }
+                }
+            }
+            return beanIntrospection;
+        }
+
+        @Override
+        public void setBeanIntrospection(BeanIntrospection beanIntrospection) {
+            AbstractCamelContext.this.beanIntrospection = doAddService(beanIntrospection);
+        }
+
+        @Override
+        public String getBasePackageScan() {
+            return basePackageScan;
+        }
+
+        @Override
+        public void setBasePackageScan(String basePackageScan) {
+            AbstractCamelContext.this.basePackageScan = basePackageScan;
+        }
+
+        @Override
+        public DataFormatResolver getDataFormatResolver() {
+            if (dataFormatResolver == null) {
+                synchronized (lock) {
+                    if (dataFormatResolver == null) {
+                        camelContextExtension.setDataFormatResolver(createDataFormatResolver());
+                    }
+                }
+            }
+            return dataFormatResolver;
+        }
+
+        @Override
+        public void setDataFormatResolver(DataFormatResolver dataFormatResolver) {
+            AbstractCamelContext.this.dataFormatResolver = doAddService(dataFormatResolver);
+        }
+
+        @Override
+        public HealthCheckResolver getHealthCheckResolver() {
+            if (healthCheckResolver == null) {
+                synchronized (lock) {
+                    if (healthCheckResolver == null) {
+                        camelContextExtension.setHealthCheckResolver(createHealthCheckResolver());
+                    }
+                }
+            }
+            return healthCheckResolver;
+        }
+
+        @Override
+        public void setHealthCheckResolver(HealthCheckResolver healthCheckResolver) {
+            AbstractCamelContext.this.healthCheckResolver = doAddService(healthCheckResolver);
+        }
+
+        public DevConsoleResolver getDevConsoleResolver() {
+            if (devConsoleResolver == null) {
+                synchronized (lock) {
+                    if (devConsoleResolver == null) {
+                        camelContextExtension.setDevConsoleResolver(createDevConsoleResolver());
+                    }
+                }
+            }
+            return devConsoleResolver;
+        }
+
+        public void setDevConsoleResolver(DevConsoleResolver devConsoleResolver) {
+            AbstractCamelContext.this.devConsoleResolver = doAddService(devConsoleResolver);
+        }
+
+        @Override
+        public boolean isLightweight() {
+            return lightweight;
+        }
+
+        @Override
+        public void setLightweight(boolean lightweight) {
+            AbstractCamelContext.this.lightweight = lightweight;
+        }
+
+        @Override
+        public ProcessorFactory getProcessorFactory() {
+            if (processorFactory == null) {
+                synchronized (lock) {
+                    if (processorFactory == null) {
+                        camelContextExtension.setProcessorFactory(createProcessorFactory());
+                    }
+                }
+            }
+            return processorFactory;
+        }
+
+        @Override
+        public void setProcessorFactory(ProcessorFactory processorFactory) {
+            AbstractCamelContext.this.processorFactory = doAddService(processorFactory);
+        }
+
+        @Override
+        public InternalProcessorFactory getInternalProcessorFactory() {
+            if (internalProcessorFactory == null) {
+                synchronized (lock) {
+                    if (internalProcessorFactory == null) {
+                        camelContextExtension.setInternalProcessorFactory(createInternalProcessorFactory());
+                    }
+                }
+            }
+            return internalProcessorFactory;
+        }
+
+        @Override
+        public void setInternalProcessorFactory(InternalProcessorFactory internalProcessorFactory) {
+            AbstractCamelContext.this.internalProcessorFactory = doAddService(internalProcessorFactory);
+        }
+
+        @Override
+        public InterceptEndpointFactory getInterceptEndpointFactory() {
+            if (interceptEndpointFactory == null) {
+                synchronized (lock) {
+                    if (interceptEndpointFactory == null) {
+                        camelContextExtension.setInterceptEndpointFactory(createInterceptEndpointFactory());
+                    }
+                }
+            }
+            return interceptEndpointFactory;
+        }
+
+        @Override
+        public void setInterceptEndpointFactory(InterceptEndpointFactory interceptEndpointFactory) {
+            AbstractCamelContext.this.interceptEndpointFactory = doAddService(interceptEndpointFactory);
+        }
+
+        @Override
+        public RouteFactory getRouteFactory() {
+            if (routeFactory == null) {
+                synchronized (lock) {
+                    if (routeFactory == null) {
+                        camelContextExtension.setRouteFactory(createRouteFactory());
+                    }
+                }
+            }
+            return routeFactory;
+        }
+
+        @Override
+        public void setRouteFactory(RouteFactory routeFactory) {
+            AbstractCamelContext.this.routeFactory = routeFactory;
+        }
+
+        @Override
+        public HeadersMapFactory getHeadersMapFactory() {
+            return headersMapFactory;
+        }
+
+        @Override
+        public void setHeadersMapFactory(HeadersMapFactory headersMapFactory) {
+            AbstractCamelContext.this.headersMapFactory = doAddService(headersMapFactory);
+        }
+
+        @Override
+        public RoutesLoader getRoutesLoader() {
+            if (routesLoader == null) {
+                synchronized (lock) {
+                    if (routesLoader == null) {
+                        camelContextExtension.setRoutesLoader(createRoutesLoader());
+                    }
+                }
+            }
+            return routesLoader;
+        }
+
+        @Override
+        public void setRoutesLoader(RoutesLoader routesLoader) {
+            AbstractCamelContext.this.routesLoader = doAddService(routesLoader);
+        }
+
+        @Override
+        public ResourceLoader getResourceLoader() {
+            if (resourceLoader == null) {
+                synchronized (lock) {
+                    if (resourceLoader == null) {
+                        camelContextExtension.setResourceLoader(createResourceLoader());
+                    }
+                }
+            }
+            return resourceLoader;
+        }
+
+        @Override
+        public void setResourceLoader(ResourceLoader resourceLoader) {
+            AbstractCamelContext.this.resourceLoader = doAddService(resourceLoader);
+        }
+
+        public ModelToXMLDumper getModelToXMLDumper() {
+            if (modelToXMLDumper == null) {
+                synchronized (lock) {
+                    if (modelToXMLDumper == null) {
+                        camelContextExtension.setModelToXMLDumper(createModelToXMLDumper());
+                    }
+                }
+            }
+            return modelToXMLDumper;
+        }
+
+        public void setModelToXMLDumper(ModelToXMLDumper modelToXMLDumper) {
+            AbstractCamelContext.this.modelToXMLDumper = doAddService(modelToXMLDumper);
+        }
+
+        public RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory() {
+            if (restBindingJaxbDataFormatFactory == null) {
+                synchronized (lock) {
+                    if (restBindingJaxbDataFormatFactory == null) {
+                        camelContextExtension.setRestBindingJaxbDataFormatFactory(createRestBindingJaxbDataFormatFactory());
+                    }
+                }
+            }
+            return restBindingJaxbDataFormatFactory;
+        }
+
+        public void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory) {
+            AbstractCamelContext.this.restBindingJaxbDataFormatFactory = restBindingJaxbDataFormatFactory;
+        }
+
+        @Override
+        public RuntimeCamelCatalog getRuntimeCamelCatalog() {
+            if (runtimeCamelCatalog == null) {
+                synchronized (lock) {
+                    if (runtimeCamelCatalog == null) {
+                        camelContextExtension.setRuntimeCamelCatalog(createRuntimeCamelCatalog());
+                    }
+                }
+            }
+            return runtimeCamelCatalog;
+        }
+
+        @Override
+        public void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog) {
+            AbstractCamelContext.this.runtimeCamelCatalog = doAddService(runtimeCamelCatalog);
+        }
+
+        @Override
+        public ExchangeFactory getExchangeFactory() {
+            if (exchangeFactory == null) {
+                synchronized (lock) {
+                    if (exchangeFactory == null) {
+                        camelContextExtension.setExchangeFactory(createExchangeFactory());
+                    }
+                }
+            }
+            return exchangeFactory;
+        }
+
+        @Override
+        public void setExchangeFactory(ExchangeFactory exchangeFactory) {
+            // automatic inject camel context
+            exchangeFactory.setCamelContext(AbstractCamelContext.this);
+            AbstractCamelContext.this.exchangeFactory = exchangeFactory;
+        }
+
+        @Override
+        public ExchangeFactoryManager getExchangeFactoryManager() {
+            if (exchangeFactoryManager == null) {
+                synchronized (lock) {
+                    if (exchangeFactoryManager == null) {
+                        camelContextExtension.setExchangeFactoryManager(createExchangeFactoryManager());
+                    }
+                }
+            }
+            return exchangeFactoryManager;
+        }
+
+        @Override
+        public void setExchangeFactoryManager(ExchangeFactoryManager exchangeFactoryManager) {
+            AbstractCamelContext.this.exchangeFactoryManager = doAddService(exchangeFactoryManager);
+        }
+
+        @Override
+        public ProcessorExchangeFactory getProcessorExchangeFactory() {
+            if (processorExchangeFactory == null) {
+                synchronized (lock) {
+                    if (processorExchangeFactory == null) {
+                        camelContextExtension.setProcessorExchangeFactory(createProcessorExchangeFactory());
+                    }
+                }
+            }
+            return processorExchangeFactory;
+        }
+
+        @Override
+        public void setProcessorExchangeFactory(ProcessorExchangeFactory processorExchangeFactory) {
+            // automatic inject camel context
+            processorExchangeFactory.setCamelContext(AbstractCamelContext.this);
+            AbstractCamelContext.this.processorExchangeFactory = processorExchangeFactory;
+        }
+
+        @Override
+        public ReactiveExecutor getReactiveExecutor() {
+            if (reactiveExecutor == null) {
+                synchronized (lock) {
+                    if (reactiveExecutor == null) {
+                        camelContextExtension.setReactiveExecutor(createReactiveExecutor());
+                    }
+                }
+            }
+            return reactiveExecutor;
+        }
+
+        @Override
+        public void setReactiveExecutor(ReactiveExecutor reactiveExecutor) {
+            // special for executorServiceManager as want to stop it manually so
+            // false in stopOnShutdown
+            AbstractCamelContext.this.reactiveExecutor = doAddService(reactiveExecutor, false);
+        }
+
+        @Override
+        public DeferServiceFactory getDeferServiceFactory() {
+            if (deferServiceFactory == null) {
+                synchronized (lock) {
+                    if (deferServiceFactory == null) {
+                        camelContextExtension.setDeferServiceFactory(createDeferServiceFactory());
+                    }
+                }
+            }
+            return deferServiceFactory;
+        }
+
+        public void setDeferServiceFactory(DeferServiceFactory deferServiceFactory) {
+            AbstractCamelContext.this.deferServiceFactory = deferServiceFactory;
+        }
+
+        @Override
+        public AnnotationBasedProcessorFactory getAnnotationBasedProcessorFactory() {
+            if (annotationBasedProcessorFactory == null) {
+                synchronized (lock) {
+                    if (annotationBasedProcessorFactory == null) {
+                        camelContextExtension.setAnnotationBasedProcessorFactory(createAnnotationBasedProcessorFactory());
+                    }
+                }
+            }
+            return annotationBasedProcessorFactory;
+        }
+
+        public void setAnnotationBasedProcessorFactory(AnnotationBasedProcessorFactory annotationBasedProcessorFactory) {
+            AbstractCamelContext.this.annotationBasedProcessorFactory = annotationBasedProcessorFactory;
+        }
+
+        @Override
+        public BeanProxyFactory getBeanProxyFactory() {
+            if (beanProxyFactory == null) {
+                synchronized (lock) {
+                    if (beanProxyFactory == null) {
+                        setBeanProxyFactory(createBeanProxyFactory());
+                    }
+                }
+            }
+            return beanProxyFactory;
+        }
+
+        @Override
+        public BeanProcessorFactory getBeanProcessorFactory() {
+            if (beanProcessorFactory == null) {
+                synchronized (lock) {
+                    if (beanProcessorFactory == null) {
+                        setBeanProcessorFactory(createBeanProcessorFactory());
+                    }
+                }
+            }
+            return beanProcessorFactory;
+        }
+
+        @Override
+        public RouteController getInternalRouteController() {
+            return internalRouteController;
+        }
+
+        @Override
+        public EndpointUriFactory getEndpointUriFactory(String scheme) {
+            return camelContextExtension.getUriFactoryResolver().resolveFactory(scheme, AbstractCamelContext.this);
+        }
+
+        @Override
+        public StartupStepRecorder getStartupStepRecorder() {
+            return startupStepRecorder;
+        }
+
+        @Override
+        public void setStartupStepRecorder(StartupStepRecorder startupStepRecorder) {
+            AbstractCamelContext.this.startupStepRecorder = startupStepRecorder;
+        }
+
+        @Override
+        public CliConnectorFactory getCliConnectorFactory() {
+            if (cliConnectorFactory == null) {
+                synchronized (lock) {
+                    if (cliConnectorFactory == null) {
+                        camelContextExtension.setCliConnectorFactory(createCliConnectorFactory());
+                    }
+                }
+            }
+            return cliConnectorFactory;
+        }
+
+        @Override
+        public void setCliConnectorFactory(CliConnectorFactory cliConnectorFactory) {
+            AbstractCamelContext.this.cliConnectorFactory = cliConnectorFactory;
+        }
+
+        public Processor createErrorHandler(Route route, Processor processor) throws Exception {
+            return AbstractCamelContext.this.createErrorHandler(route, processor);
         }
+
+        public void disposeModel() {
+            AbstractCamelContext.this.disposeModel();
+        }
+
+        public String getTestExcludeRoutes() {
+            return AbstractCamelContext.this.getTestExcludeRoutes();
+        }
+    }
+
+    @Override
+    public Registry getRegistry() {
+        return camelContextExtension.getRegistry();
     }
 }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
index aaab70c6c52..e724891bf7b 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
@@ -31,7 +31,6 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.StaticService;
 import org.apache.camel.spi.ExecutorServiceManager;
@@ -454,7 +453,7 @@ public class BaseExecutorServiceManager extends ServiceSupport implements Execut
         if (threadPoolFactory == null) {
             threadPoolFactory = ResolverHelper.resolveService(
                     camelContext,
-                    camelContext.adapt(ExtendedCamelContext.class).getBootstrapFactoryFinder(),
+                    camelContext.getCamelContextExtension().getBootstrapFactoryFinder(),
                     ThreadPoolFactory.FACTORY,
                     ThreadPoolFactory.class)
                     .orElseGet(DefaultThreadPoolFactory::new);
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
index b2e43365735..096585d5ff8 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
@@ -26,7 +26,6 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NamedRoute;
@@ -113,14 +112,14 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
 
     public CamelInternalProcessor(CamelContext camelContext) {
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
         this.shutdownStrategy = camelContext.getShutdownStrategy();
     }
 
     public CamelInternalProcessor(CamelContext camelContext, Processor processor) {
         super(processor);
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
         this.shutdownStrategy = camelContext.getShutdownStrategy();
     }
 
@@ -134,12 +133,12 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
 
     @Override
     protected void doBuild() throws Exception {
-        boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
+        boolean pooled = camelContext.getCamelContextExtension().getExchangeFactory().isPooled();
 
         // only create pooled task factory
         if (pooled) {
             taskFactory = new CamelInternalPooledTaskFactory();
-            int capacity = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().getCapacity();
+            int capacity = camelContext.getCamelContextExtension().getExchangeFactory().getCapacity();
             taskFactory.setCapacity(capacity);
             LOG.trace("Using TaskFactory: {}", taskFactory);
 
@@ -760,7 +759,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
             if (route != null) {
                 this.routeId = route.getRouteId();
             }
-            this.uowFactory = camelContext.adapt(ExtendedCamelContext.class).getUnitOfWorkFactory();
+            this.uowFactory = camelContext.getCamelContextExtension().getUnitOfWorkFactory();
             // optimize uow factory to initialize it early and once per advice
             this.uowFactory.afterPropertiesConfigured(camelContext);
         }
@@ -824,7 +823,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
             if (uowFactory != null) {
                 return uowFactory.createUnitOfWork(exchange);
             } else {
-                return exchange.getContext().adapt(ExtendedCamelContext.class).getUnitOfWorkFactory()
+                return exchange.getContext().getCamelContextExtension().getUnitOfWorkFactory()
                         .createUnitOfWork(exchange);
             }
         }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
index 0c9017ec533..5444bd73e77 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
@@ -191,11 +191,11 @@ public class CamelPostProcessorHelper implements CamelContextAware {
         // 2. then the getter with Endpoint as postfix
         // 3. then if start with on then try step 1 and 2 again, but omit the on prefix
         try {
-            Object value = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection().getOrElseProperty(bean,
+            Object value = getCamelContext().getCamelContextExtension().getBeanIntrospection().getOrElseProperty(bean,
                     propertyName, null, false);
             if (value == null) {
                 // try endpoint as postfix
-                value = getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection().getOrElseProperty(bean,
+                value = getCamelContext().getCamelContextExtension().getBeanIntrospection().getOrElseProperty(bean,
                         propertyName + "Endpoint", null, false);
             }
             if (value == null && propertyName.startsWith("on")) {
@@ -255,7 +255,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
                     try {
                         // use proxy service
                         BeanProxyFactory factory
-                                = endpoint.getCamelContext().adapt(ExtendedCamelContext.class).getBeanProxyFactory();
+                                = endpoint.getCamelContext().getCamelContextExtension().getBeanProxyFactory();
                         return factory.createProxy(endpoint, binding, type);
                     } catch (Exception e) {
                         throw createProxyInstantiationRuntimeException(type, endpoint, e);
@@ -591,7 +591,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
      */
     protected Producer createInjectionProducer(Endpoint endpoint, Object bean, String beanName) {
         try {
-            return endpoint.getCamelContext().adapt(ExtendedCamelContext.class).getDeferServiceFactory()
+            return endpoint.getCamelContext().getCamelContextExtension().getDeferServiceFactory()
                     .createProducer(endpoint);
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java
index 4e725fe8fee..0acfe260d03 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultAsyncProcessorAwaitManager.java
@@ -26,7 +26,6 @@ import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StaticService;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
@@ -86,7 +85,7 @@ public class DefaultAsyncProcessorAwaitManager extends ServiceSupport implements
     }
 
     public void await(Exchange exchange, CountDownLatch latch) {
-        ReactiveExecutor reactiveExecutor = exchange.getContext().adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        ReactiveExecutor reactiveExecutor = exchange.getContext().getCamelContextExtension().getReactiveExecutor();
         // Early exit for pending reactive queued work
         do {
             if (latch.getCount() <= 0) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
index 1141f982785..fcc6f914473 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
@@ -30,7 +30,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.DeferredContextBinding;
 import org.apache.camel.EndpointInject;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Produce;
 import org.apache.camel.PropertyInject;
 import org.apache.camel.spi.CamelBeanPostProcessor;
@@ -494,7 +493,7 @@ public class DefaultCamelBeanPostProcessor implements CamelBeanPostProcessor, Ca
             getOrLookupCamelContext().getRegistry().unbind(name);
         }
         // use dependency injection factory to perform the task of binding the bean to registry
-        Runnable task = getOrLookupCamelContext().adapt(ExtendedCamelContext.class)
+        Runnable task = getOrLookupCamelContext().getCamelContextExtension()
                 .getDependencyInjectionAnnotationFactory().createBindToRegistryFactory(name, bean, beanName, beanPostProcess);
         task.run();
     }
@@ -510,7 +509,7 @@ public class DefaultCamelBeanPostProcessor implements CamelBeanPostProcessor, Ca
                 getOrLookupCamelContext().getRegistry().unbind(name);
             }
             // use dependency injection factory to perform the task of binding the bean to registry
-            Runnable task = getOrLookupCamelContext().adapt(ExtendedCamelContext.class)
+            Runnable task = getOrLookupCamelContext().getCamelContextExtension()
                     .getDependencyInjectionAnnotationFactory()
                     .createBindToRegistryFactory(name, value, beanName, beanPostProcess);
             task.run();
@@ -529,7 +528,7 @@ public class DefaultCamelBeanPostProcessor implements CamelBeanPostProcessor, Ca
                 getOrLookupCamelContext().getRegistry().unbind(name);
             }
             // use dependency injection factory to perform the task of binding the bean to registry
-            Runnable task = getOrLookupCamelContext().adapt(ExtendedCamelContext.class)
+            Runnable task = getOrLookupCamelContext().getCamelContextExtension()
                     .getDependencyInjectionAnnotationFactory()
                     .createBindToRegistryFactory(name, value, beanName, beanPostProcess);
             task.run();
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java
index b7298e274d0..8e33334ef63 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java
@@ -26,7 +26,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Channel;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NamedRoute;
 import org.apache.camel.Processor;
@@ -224,7 +223,7 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
             }
             if (!(wrapped instanceof WrapAwareProcessor)) {
                 // wrap the target so it becomes a service and we can manage its lifecycle
-                wrapped = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+                wrapped = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                         .createWrapProcessor(wrapped, target);
             }
             target = wrapped;
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java
index 83bf3e38eb1..2577f4a46fd 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java
@@ -21,7 +21,6 @@ import java.util.TreeSet;
 import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.ComponentNameResolver;
 import org.apache.camel.spi.Resource;
@@ -33,7 +32,7 @@ public class DefaultComponentNameResolver implements ComponentNameResolver {
     @Override
     public Set<String> resolveNames(CamelContext camelContext) {
         try {
-            return camelContext.adapt(ExtendedCamelContext.class)
+            return camelContext.getCamelContextExtension()
                     .getPackageScanResourceResolver()
                     .findResources(RESOURCE_PATH)
                     .stream()
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java
index c46c22de10a..aae8fcc1088 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.FactoryFinder;
@@ -71,7 +70,7 @@ public class DefaultComponentResolver implements ComponentResolver {
 
     private Class<?> findComponent(String name, CamelContext context) throws IOException {
         if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+            factoryFinder = context.getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
         }
         return factoryFinder.findClass(name).orElse(null);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConfigurerResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConfigurerResolver.java
index a22317a2182..c850c865337 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConfigurerResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultConfigurerResolver.java
@@ -98,7 +98,7 @@ public class DefaultConfigurerResolver implements ConfigurerResolver {
 
     private Class<?> findConfigurer(String name, CamelContext context) throws IOException {
         if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(ConfigurerResolver.RESOURCE_PATH);
+            factoryFinder = context.getCamelContextExtension().getFactoryFinder(ConfigurerResolver.RESOURCE_PATH);
         }
         return factoryFinder.findClass(name).orElse(null);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java
index dd7664d2bbb..546c9bd8baf 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java
@@ -17,7 +17,6 @@
 package org.apache.camel.impl.engine;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatFactory;
 import org.apache.camel.spi.DataFormatResolver;
@@ -56,7 +55,7 @@ public class DefaultDataFormatResolver implements DataFormatResolver {
         Class<?> type;
         try {
             if (dataformatFactory == null) {
-                dataformatFactory = context.adapt(ExtendedCamelContext.class).getFactoryFinder(DATAFORMAT_RESOURCE_PATH);
+                dataformatFactory = context.getCamelContextExtension().getFactoryFinder(DATAFORMAT_RESOURCE_PATH);
             }
             type = dataformatFactory.findClass(name).orElse(null);
         } catch (Exception e) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDevConsoleResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDevConsoleResolver.java
index 8ba3207a846..992b2ff02b1 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDevConsoleResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultDevConsoleResolver.java
@@ -20,7 +20,6 @@ import java.util.Optional;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.console.DevConsole;
 import org.apache.camel.console.DevConsoleRegistry;
@@ -84,7 +83,7 @@ public class DefaultDevConsoleResolver implements DevConsoleResolver, CamelConte
 
     protected Class<?> findDevConsole(String name, CamelContext context) throws Exception {
         if (devConsoleFactory == null) {
-            devConsoleFactory = context.adapt(ExtendedCamelContext.class).getFactoryFinder(DEV_CONSOLE_RESOURCE_PATH);
+            devConsoleFactory = context.getCamelContextExtension().getFactoryFinder(DEV_CONSOLE_RESOURCE_PATH);
         }
         return devConsoleFactory.findOptionalClass(name).orElse(null);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java
index 791a030ad66..1433bdf8102 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java
@@ -20,7 +20,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.NodeIdFactory;
@@ -53,7 +52,7 @@ public class DefaultExecutorServiceManager extends BaseExecutorServiceManager {
     protected Object forceId(Object source) {
         if (source instanceof NamedNode && source instanceof IdAware) {
             NamedNode node = (NamedNode) source;
-            NodeIdFactory factory = getCamelContext().adapt(ExtendedCamelContext.class).getNodeIdFactory();
+            NodeIdFactory factory = getCamelContext().getCamelContextExtension().getNodeIdFactory();
             if (node.getId() == null) {
                 String id = factory.createId(node);
                 // we auto generated an id to be assigned
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultHealthCheckResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultHealthCheckResolver.java
index bcdb377cde6..18e92d84a03 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultHealthCheckResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultHealthCheckResolver.java
@@ -18,7 +18,6 @@ package org.apache.camel.impl.engine;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.health.HealthCheck;
 import org.apache.camel.health.HealthCheckRepository;
@@ -116,14 +115,14 @@ public class DefaultHealthCheckResolver implements HealthCheckResolver, CamelCon
 
     protected Class<?> findHealthCheck(String name, CamelContext context) throws Exception {
         if (healthCheckFactory == null) {
-            healthCheckFactory = context.adapt(ExtendedCamelContext.class).getFactoryFinder(HEALTH_CHECK_RESOURCE_PATH);
+            healthCheckFactory = context.getCamelContextExtension().getFactoryFinder(HEALTH_CHECK_RESOURCE_PATH);
         }
         return healthCheckFactory.findOptionalClass(name + "-check").orElse(null);
     }
 
     protected Class<?> findHealthCheckRepository(String name, CamelContext context) throws Exception {
         if (healthCheckFactory == null) {
-            healthCheckFactory = context.adapt(ExtendedCamelContext.class).getFactoryFinder(HEALTH_CHECK_RESOURCE_PATH);
+            healthCheckFactory = context.getCamelContextExtension().getFactoryFinder(HEALTH_CHECK_RESOURCE_PATH);
         }
         return healthCheckFactory.findOptionalClass(name + "-repository").orElse(null);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java
index dc707939fd4..e7133a999dc 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java
@@ -21,7 +21,6 @@ import java.lang.reflect.Modifier;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.Injector;
@@ -39,7 +38,7 @@ public class DefaultInjector implements Injector {
 
     public DefaultInjector(CamelContext context) {
         this.camelContext = context;
-        this.postProcessor = context.adapt(ExtendedCamelContext.class).getBeanPostProcessor();
+        this.postProcessor = context.getCamelContextExtension().getBeanPostProcessor();
     }
 
     @Override
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java
index d5963615368..467f08599c0 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java
@@ -17,7 +17,6 @@
 package org.apache.camel.impl.engine;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.NoSuchLanguageException;
 import org.apache.camel.spi.FactoryFinder;
@@ -91,14 +90,14 @@ public class DefaultLanguageResolver implements LanguageResolver {
 
     protected Class<?> findLanguage(String name, CamelContext context) throws Exception {
         if (languageFactory == null) {
-            languageFactory = context.adapt(ExtendedCamelContext.class).getFactoryFinder(LANGUAGE_RESOURCE_PATH);
+            languageFactory = context.getCamelContextExtension().getFactoryFinder(LANGUAGE_RESOURCE_PATH);
         }
         return languageFactory.findClass(name).orElse(null);
     }
 
     protected Class<?> findLanguageResolver(String name, CamelContext context) throws Exception {
         if (languageResolver == null) {
-            languageResolver = context.adapt(ExtendedCamelContext.class).getFactoryFinder(LANGUAGE_RESOLVER_RESOURCE_PATH);
+            languageResolver = context.getCamelContextExtension().getFactoryFinder(LANGUAGE_RESOLVER_RESOURCE_PATH);
         }
         return languageResolver.findClass(name).orElse(null);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementStrategy.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementStrategy.java
index 9740118aa09..d2f2a8cd900 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementStrategy.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementStrategy.java
@@ -21,7 +21,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.impl.event.DefaultEventFactory;
 import org.apache.camel.spi.CamelEvent;
@@ -89,7 +88,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         if (getCamelContext() != null) {
             // okay we have an event notifier that accepts exchange events so its applicable
             if (!eventNotifier.isIgnoreExchangeEvents()) {
-                getCamelContext().adapt(ExtendedCamelContext.class).setEventNotificationApplicable(true);
+                getCamelContext().getCamelContextExtension().setEventNotificationApplicable(true);
             }
         }
     }
@@ -192,7 +191,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
     protected void doInit() throws Exception {
         ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
         if (!getEventNotifiers().isEmpty()) {
-            getCamelContext().adapt(ExtendedCamelContext.class).setEventNotificationApplicable(true);
+            getCamelContext().getCamelContextExtension().setEventNotificationApplicable(true);
         }
         for (EventNotifier notifier : eventNotifiers) {
             // inject CamelContext if the service is aware
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
index 79fbdb6540f..fba4718abc0 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
@@ -83,7 +83,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
                 findInClasspath(root, resources, subPattern);
             }
         } else {
-            final ExtendedCamelContext ecc = getCamelContext().adapt(ExtendedCamelContext.class);
+            final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
             final ResourceLoader loader = ecc.getResourceLoader();
 
             // its a single resource so load it directly
@@ -97,7 +97,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
             String subPattern)
             throws Exception {
 
-        final ExtendedCamelContext ecc = getCamelContext().adapt(ExtendedCamelContext.class);
+        final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
         final ResourceLoader loader = ecc.getResourceLoader();
 
         for (Path path : ResourceHelper.findInFileSystem(dir.toPath(), subPattern)) {
@@ -245,7 +245,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
             boolean match = PATH_MATCHER.match(subPattern, shortName);
             log.debug("Found resource: {} matching pattern: {} -> {}", shortName, subPattern, match);
             if (match) {
-                final ExtendedCamelContext ecc = getCamelContext().adapt(ExtendedCamelContext.class);
+                final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
                 final ResourceLoader loader = ecc.getResourceLoader();
 
                 resources.add(loader.resolveResource(name));
@@ -322,7 +322,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
                 boolean match = PATH_MATCHER.match(subPattern, name);
                 log.debug("Found resource: {} matching pattern: {} -> {}", name, subPattern, match);
                 if (match) {
-                    final ExtendedCamelContext ecc = getCamelContext().adapt(ExtendedCamelContext.class);
+                    final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
                     final ResourceLoader loader = ecc.getResourceLoader();
 
                     resources.add(loader.resolveResource("file:" + file.getPath()));
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRoutesLoader.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRoutesLoader.java
index b9c57b12a51..4fa5390c2af 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRoutesLoader.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRoutesLoader.java
@@ -91,7 +91,7 @@ public class DefaultRoutesLoader extends ServiceSupport implements RoutesLoader,
 
         // first we need to parse for modeline to gather all the configurations
         if (camelContext.isModeline()) {
-            ModelineFactory factory = camelContext.adapt(ExtendedCamelContext.class).getModelineFactory();
+            ModelineFactory factory = camelContext.getCamelContextExtension().getModelineFactory();
             for (Resource resource : resources) {
                 RoutesBuilderLoader loader = resolveRoutesBuilderLoader(resource);
                 // gather resources for modeline
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUriFactoryResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUriFactoryResolver.java
index 0558608bdc4..0e82e954962 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUriFactoryResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUriFactoryResolver.java
@@ -21,7 +21,6 @@ import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.spi.EndpointUriFactory;
 import org.apache.camel.spi.FactoryFinder;
@@ -100,7 +99,7 @@ public class DefaultUriFactoryResolver implements CamelContextAware, UriFactoryR
 
     private Class<?> findFactory(String name, CamelContext context) throws IOException {
         if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+            factoryFinder = context.getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
         }
         return factoryFinder.findClass(name).orElse(null);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java
index e03edbf436e..9ec0a6fff4d 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java
@@ -267,7 +267,7 @@ class InternalRouteStartupManager {
                             .getStartupOrder() + " configured which this route have as well. Please correct startupOrder to be unique among all your routes.");
         }
         // check in existing already started as well
-        for (RouteStartupOrder order : abstractCamelContext.getRouteStartupOrder()) {
+        for (RouteStartupOrder order : abstractCamelContext.getCamelContextExtension().getRouteStartupOrder()) {
             String otherId = order.getRoute().getId();
             if (answer.getRoute().getId().equals(otherId)) {
                 // its the same route id so skip clash check as its the same
@@ -419,14 +419,14 @@ class InternalRouteStartupManager {
                 // but only add if we haven't already registered it before (we
                 // dont want to double add when restarting)
                 boolean found = false;
-                for (RouteStartupOrder other : abstractCamelContext.getRouteStartupOrder()) {
+                for (RouteStartupOrder other : abstractCamelContext.getCamelContextExtension().getRouteStartupOrder()) {
                     if (other.getRoute().getId().equals(route.getId())) {
                         found = true;
                         break;
                     }
                 }
                 if (!found) {
-                    abstractCamelContext.getRouteStartupOrder().add(entry.getValue());
+                    abstractCamelContext.getCamelContextExtension().getRouteStartupOrder().add(entry.getValue());
                 }
             }
 
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PrototypeExchangeFactory.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PrototypeExchangeFactory.java
index 17ae924e77c..a09aebf96cc 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PrototypeExchangeFactory.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PrototypeExchangeFactory.java
@@ -19,7 +19,6 @@ package org.apache.camel.impl.engine;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.ExchangeFactory;
 import org.apache.camel.spi.ExchangeFactoryManager;
 import org.apache.camel.support.DefaultExchange;
@@ -50,7 +49,7 @@ public class PrototypeExchangeFactory extends PooledObjectFactorySupport<Exchang
     @Override
     protected void doBuild() throws Exception {
         super.doBuild();
-        this.exchangeFactoryManager = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactoryManager();
+        this.exchangeFactoryManager = camelContext.getCamelContextExtension().getExchangeFactoryManager();
         // force creating and load the class during build time so the JVM does not
         // load the class on first exchange to be created
         DefaultExchange dummy = new DefaultExchange(camelContext);
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/RouteService.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/RouteService.java
index ec116756b53..27510667394 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/RouteService.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/RouteService.java
@@ -30,7 +30,6 @@ import org.apache.camel.Channel;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToStartRouteException;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -69,7 +68,7 @@ public class RouteService extends ChildServiceSupport {
     public RouteService(Route route) {
         this.route = route;
         this.camelContext = this.route.getCamelContext();
-        this.startupStepRecorder = this.camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder();
+        this.startupStepRecorder = this.camelContext.getCamelContextExtension().getStartupStepRecorder();
     }
 
     public String getId() {
@@ -202,7 +201,7 @@ public class RouteService extends ChildServiceSupport {
             }
 
             // add routes to camel context
-            camelContext.adapt(ExtendedCamelContext.class).addRoute(route);
+            camelContext.getCamelContextExtension().addRoute(route);
 
             // add the routes to the inflight registry so they are pre-installed
             camelContext.getInflightRepository().addRoute(route.getId());
@@ -273,7 +272,7 @@ public class RouteService extends ChildServiceSupport {
             EventHelper.notifyRouteStopped(camelContext, route);
         }
         if (isRemovingRoutes()) {
-            camelContext.adapt(ExtendedCamelContext.class).removeRoute(route);
+            camelContext.getCamelContextExtension().removeRoute(route);
         }
         // need to redo if we start again after being stopped
         input = null;
@@ -317,7 +316,7 @@ public class RouteService extends ChildServiceSupport {
         camelContext.getInflightRepository().removeRoute(route.getId());
 
         // remove the routes from the collections
-        camelContext.adapt(ExtendedCamelContext.class).removeRoute(route);
+        camelContext.getCamelContextExtension().removeRoute(route);
 
         // clear inputs on shutdown
         input = null;
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java
index eb23a8ca8a0..2d9dfc68fdb 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java
@@ -25,7 +25,6 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Ordered;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
@@ -82,8 +81,8 @@ public class SharedCamelInternalProcessor implements SharedInternalProcessor {
 
     public SharedCamelInternalProcessor(CamelContext camelContext, CamelInternalProcessorAdvice... advices) {
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
-        this.awaitManager = camelContext.adapt(ExtendedCamelContext.class).getAsyncProcessorAwaitManager();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
+        this.awaitManager = camelContext.getCamelContextExtension().getAsyncProcessorAwaitManager();
         this.shutdownStrategy = camelContext.getShutdownStrategy();
 
         if (advices != null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java
index 42427406dba..813ccdc85b5 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java
@@ -26,7 +26,6 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Navigate;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
@@ -55,11 +54,11 @@ public final class SubscribeMethodProcessor extends AsyncProcessorSupport implem
     }
 
     public void addMethod(final Object pojo, final Method method, final Endpoint endpoint, String predicate) throws Exception {
-        Processor answer = endpoint.getCamelContext().adapt(ExtendedCamelContext.class)
+        Processor answer = endpoint.getCamelContext().getCamelContextExtension()
                 .getBeanProcessorFactory().createBeanProcessor(endpoint.getCamelContext(), pojo, method);
 
         // must ensure the consumer is being executed in an unit of work so synchronization callbacks etc is invoked
-        answer = endpoint.getCamelContext().adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        answer = endpoint.getCamelContext().getCamelContextExtension().getInternalProcessorFactory()
                 .addUnitOfWorkProcessorAdvice(endpoint.getCamelContext(), answer, null);
         Predicate p;
         if (ObjectHelper.isEmpty(predicate)) {
diff --git a/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesFunctionResolver.java b/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesFunctionResolver.java
index 9b619aeb2e4..334414aaa18 100644
--- a/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesFunctionResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesFunctionResolver.java
@@ -21,7 +21,6 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NonManagedService;
 import org.apache.camel.StaticService;
 import org.apache.camel.spi.FactoryFinder;
@@ -117,7 +116,7 @@ public class DefaultPropertiesFunctionResolver extends ServiceSupport
 
     private Class<?> findFactory(String name, CamelContext context) {
         if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+            factoryFinder = context.getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
         }
         return factoryFinder.findClass(name).orElse(null);
     }
diff --git a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index 47c98424024..8089126c123 100644
--- a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -28,7 +28,6 @@ import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.PropertiesLookupListener;
 import org.apache.camel.StaticService;
 import org.apache.camel.api.management.ManagedAttribute;
@@ -729,7 +728,7 @@ public class PropertiesComponent extends ServiceSupport
                     LOG.debug("PropertiesComponent added custom PropertiesSource (registry): {}", source);
                 }
 
-                FactoryFinder factoryFinder = getCamelContext().adapt(ExtendedCamelContext.class)
+                FactoryFinder factoryFinder = getCamelContext().getCamelContextExtension()
                         .getBootstrapFactoryFinder();
                 Class<?> type = factoryFinder.findClass("properties-source-factory").orElse(null);
                 if (type != null) {
diff --git a/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java b/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java
index 9d81053697d..07279102318 100644
--- a/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java
@@ -58,7 +58,7 @@ public final class ResourceConverter {
 
     @Converter(order = 5)
     public static Resource toResource(String uri, CamelContext camelContext) throws IOException {
-        ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
         return ecc.getResourceLoader().resolveResource(uri);
     }
 
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index 09fa830b3ba..787d8a9f20c 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -31,7 +31,6 @@ import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.TypeConverter;
@@ -287,7 +286,7 @@ public abstract class BaseTypeConverterRegistry extends CoreTypeConverterRegistr
             injector = camelContext.getInjector();
         }
         if (resolver == null && camelContext != null) {
-            resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanClassResolver();
+            resolver = camelContext.getCamelContextExtension().getPackageScanClassResolver();
         }
 
         List<FallbackTypeConverter> fallbacks = new ArrayList<>();
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java b/core/camel-base/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
index 75f1bb9c688..812ad8a6411 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
@@ -17,7 +17,6 @@
 package org.apache.camel.impl.converter;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.AnnotationScanTypeConverters;
 import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.PackageScanClassResolver;
@@ -122,7 +121,7 @@ public class DefaultTypeConverter extends BaseTypeConverterRegistry implements A
      * Creates the {@link TypeConverterLoader} to use for scanning for type converters such as from the classpath.
      */
     protected TypeConverterLoader createScanTypeConverterLoader() {
-        String basePackages = camelContext != null ? camelContext.adapt(ExtendedCamelContext.class).getBasePackageScan() : null;
+        String basePackages = camelContext != null ? camelContext.getCamelContextExtension().getBasePackageScan() : null;
         return new AnnotationTypeConverterLoader(resolver, basePackages);
     }
 }
diff --git a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
index c909347d6fb..bb8e5a4bc50 100644
--- a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
+++ b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
@@ -24,7 +24,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.cloud.ServiceCallConstants;
@@ -131,7 +130,7 @@ public class DefaultServiceCallProcessor extends AsyncProcessorSupport {
     @Override
     protected void doBuild() throws Exception {
         ObjectHelper.notNull(camelContext, "camel context");
-        processorFactory = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory();
+        processorFactory = camelContext.getCamelContextExtension().getProcessorFactory();
     }
 
     @Override
diff --git a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
index e8371c72cac..48bc825a3a4 100644
--- a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
+++ b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
@@ -25,7 +25,6 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.ExpressionFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.cloud.ServiceChooser;
@@ -425,7 +424,7 @@ public class ServiceCallProcessorFactory extends TypedProcessorFactory<ServiceCa
 
                 try {
                     // Then use Service factory.
-                    type = camelContext.adapt(ExtendedCamelContext.class)
+                    type = camelContext.getCamelContextExtension()
                             .getFactoryFinder(ServiceCallDefinitionConstants.RESOURCE_PATH).findClass(lookupName).orElse(null);
                 } catch (Exception e) {
                 }
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
index d161a51eed8..339f216f558 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
@@ -20,7 +20,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
@@ -38,7 +37,7 @@ public class BlockedConsole extends AbstractDevConsole {
     protected String doCallText(Map<String, Object> options) {
         StringBuilder sb = new StringBuilder();
 
-        AsyncProcessorAwaitManager am = getCamelContext().adapt(ExtendedCamelContext.class).getAsyncProcessorAwaitManager();
+        AsyncProcessorAwaitManager am = getCamelContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
         sb.append(String.format("\n    Blocked: %s", am.size()));
         for (AsyncProcessorAwaitManager.AwaitThread at : am.browse()) {
             String age = TimeUtils.printDuration(at.getWaitDuration(), true);
@@ -53,7 +52,7 @@ public class BlockedConsole extends AbstractDevConsole {
     protected JsonObject doCallJson(Map<String, Object> options) {
         JsonObject root = new JsonObject();
 
-        AsyncProcessorAwaitManager am = getCamelContext().adapt(ExtendedCamelContext.class).getAsyncProcessorAwaitManager();
+        AsyncProcessorAwaitManager am = getCamelContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
         root.put("blocked", am.size());
 
         final List<JsonObject> list = new ArrayList<>();
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java
index bf45f524bcc..d6113316d09 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java
@@ -21,7 +21,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.support.LoggerHelper;
 import org.apache.camel.util.IOHelper;
@@ -43,7 +42,7 @@ public final class ConsoleHelper {
         List<JsonObject> code = new ArrayList<>();
         try {
             location = LoggerHelper.stripSourceLocationLineNumber(location);
-            Resource resource = camelContext.adapt(ExtendedCamelContext.class).getResourceLoader()
+            Resource resource = camelContext.getCamelContextExtension().getResourceLoader()
                     .resolveResource(location);
             if (resource != null) {
                 LineNumberReader reader = new LineNumberReader(resource.getReader());
@@ -78,7 +77,7 @@ public final class ConsoleHelper {
 
         try {
             location = LoggerHelper.stripSourceLocationLineNumber(location);
-            Resource resource = camelContext.adapt(ExtendedCamelContext.class).getResourceLoader()
+            Resource resource = camelContext.getCamelContextExtension().getResourceLoader()
                     .resolveResource(location);
             if (resource != null) {
                 LineNumberReader reader = new LineNumberReader(resource.getReader());
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
index 86c722336b6..655d2fb8e65 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
@@ -20,7 +20,6 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
 import org.apache.camel.spi.ContextReloadStrategy;
@@ -113,7 +112,7 @@ public class ContextDevConsole extends AbstractDevConsole {
         }
         root.put("version", getCamelContext().getVersion());
         root.put("state", getCamelContext().getStatus().name());
-        root.put("phase", getCamelContext().adapt(ExtendedCamelContext.class).getStatusPhase());
+        root.put("phase", getCamelContext().getCamelContextExtension().getStatusPhase());
         root.put("uptime", getCamelContext().getUptime());
 
         ManagedCamelContext mcc = getCamelContext().getExtension(ManagedCamelContext.class);
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
index a3bb0e1dff8..b352c16269c 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
@@ -25,7 +25,6 @@ import java.util.stream.Stream;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.DeferredContextBinding;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.console.DevConsole;
 import org.apache.camel.console.DevConsoleRegistry;
 import org.apache.camel.console.DevConsoleResolver;
@@ -118,7 +117,7 @@ public class DefaultDevConsoleRegistry extends ServiceSupport implements DevCons
         DevConsole answer = consoles.stream().filter(h -> h.getId().equals(id)).findFirst()
                 .orElse(camelContext.getRegistry().findByTypeWithName(DevConsole.class).get(id));
         if (answer == null) {
-            DevConsoleResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getDevConsoleResolver();
+            DevConsoleResolver resolver = camelContext.getCamelContextExtension().getDevConsoleResolver();
             answer = resolver.resolveDevConsole(id);
             if (answer != null) {
                 register(answer);
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
index 95f9c8245ac..dcec3304a23 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
@@ -20,7 +20,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.console.DevConsole;
 import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.spi.PackageScanResourceResolver;
@@ -43,8 +42,8 @@ public class DefaultDevConsolesLoader {
 
     public DefaultDevConsolesLoader(CamelContext camelContext) {
         this.camelContext = camelContext;
-        this.resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
-        this.devConsoleResolver = camelContext.adapt(ExtendedCamelContext.class).getDevConsoleResolver();
+        this.resolver = camelContext.getCamelContextExtension().getPackageScanResourceResolver();
+        this.devConsoleResolver = camelContext.getCamelContextExtension().getDevConsoleResolver();
     }
 
     public Collection<DevConsole> loadDevConsoles() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
index 6b17f522a40..1b65e9b6af8 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
@@ -23,7 +23,6 @@ import java.util.Map;
 import java.util.function.Function;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Route;
 import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
@@ -62,7 +61,7 @@ public class SourceDevConsole extends AbstractDevConsole {
                 loc = LoggerHelper.stripSourceLocationLineNumber(loc);
                 StringBuilder code = new StringBuilder();
                 try {
-                    Resource resource = getCamelContext().adapt(ExtendedCamelContext.class).getResourceLoader()
+                    Resource resource = getCamelContext().getCamelContextExtension().getResourceLoader()
                             .resolveResource(loc);
                     if (resource != null) {
                         if (sb.length() > 0) {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
index 90176c7eb81..d6ee73e9e1a 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
@@ -24,7 +24,6 @@ import java.util.Map;
 import java.util.function.Function;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Route;
 import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedPerformanceCounterMBean;
@@ -108,7 +107,7 @@ public class TopDevConsole extends AbstractDevConsole {
                         int line = mpb.getSourceLineNumber();
                         try {
                             loc = LoggerHelper.stripSourceLocationLineNumber(loc);
-                            Resource resource = getCamelContext().adapt(ExtendedCamelContext.class).getResourceLoader()
+                            Resource resource = getCamelContext().getCamelContextExtension().getResourceLoader()
                                     .resolveResource(loc);
                             if (resource != null) {
                                 LineNumberReader reader = new LineNumberReader(resource.getReader());
@@ -211,7 +210,7 @@ public class TopDevConsole extends AbstractDevConsole {
                         int line = mpb.getSourceLineNumber();
                         try {
                             loc = LoggerHelper.stripSourceLocationLineNumber(loc);
-                            Resource resource = getCamelContext().adapt(ExtendedCamelContext.class).getResourceLoader()
+                            Resource resource = getCamelContext().getCamelContextExtension().getResourceLoader()
                                     .resolveResource(loc);
                             if (resource != null) {
                                 LineNumberReader reader = new LineNumberReader(resource.getReader());
diff --git a/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java b/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java
index 0b389d11586..cc8c9379440 100644
--- a/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java
+++ b/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.impl.console;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.console.DevConsole;
 import org.apache.camel.util.json.JsonObject;
 import org.junit.jupiter.api.Assertions;
@@ -27,7 +26,7 @@ public class ContextDevConsoleTest extends ContextTestSupport {
 
     @Test
     public void testContextTest() throws Exception {
-        DevConsole con = context.adapt(ExtendedCamelContext.class).getDevConsoleResolver().resolveDevConsole("context");
+        DevConsole con = context.getCamelContextExtension().getDevConsoleResolver().resolveDevConsole("context");
         Assertions.assertNotNull(con);
         Assertions.assertEquals("camel", con.getGroup());
         Assertions.assertEquals("context", con.getId());
@@ -40,7 +39,7 @@ public class ContextDevConsoleTest extends ContextTestSupport {
 
     @Test
     public void testContextJson() throws Exception {
-        DevConsole con = context.adapt(ExtendedCamelContext.class).getDevConsoleResolver().resolveDevConsole("context");
+        DevConsole con = context.getCamelContextExtension().getDevConsoleResolver().resolveDevConsole("context");
         Assertions.assertNotNull(con);
         Assertions.assertEquals("camel", con.getGroup());
         Assertions.assertEquals("context", con.getId());
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 54ab4d6ecdd..ca5adf8dc4a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -27,7 +27,6 @@ import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToStartRouteException;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Predicate;
@@ -137,7 +136,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
      */
     public DefaultCamelContext(Registry registry) {
         this();
-        setRegistry(registry);
+        getCamelContextExtension().setRegistry(registry);
     }
 
     public DefaultCamelContext(boolean init) {
@@ -932,7 +931,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
                     }
 
                     StartupStepRecorder recorder
-                            = getCamelContextReference().adapt(ExtendedCamelContext.class).getStartupStepRecorder();
+                            = getCamelContextReference().getCamelContextExtension().getStartupStepRecorder();
                     StartupStep step = recorder.beginStep(Route.class, routeDefinition.getRouteId(), "Create Route");
                     Route route = model.getModelReifierFactory().createRoute(this, routeDefinition);
                     recorder.endStep(step);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index b1899e5c030..0498e614b97 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -31,7 +31,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToCreateRouteFromTemplateException;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.PropertyBindingException;
@@ -163,7 +162,7 @@ public class DefaultModel implements Model {
     @Override
     public synchronized RouteConfigurationDefinition getRouteConfigurationDefinition(String id) {
         for (RouteConfigurationDefinition def : routesConfigurations) {
-            if (def.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()).equals(id)) {
+            if (def.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory()).equals(id)) {
                 return def;
             }
         }
@@ -295,7 +294,7 @@ public class DefaultModel implements Model {
     @Override
     public synchronized RouteDefinition getRouteDefinition(String id) {
         for (RouteDefinition route : routeDefinitions) {
-            if (route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()).equals(id)) {
+            if (route.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory()).equals(id)) {
                 return route;
             }
         }
@@ -310,7 +309,7 @@ public class DefaultModel implements Model {
     @Override
     public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
         for (RouteTemplateDefinition route : routeTemplateDefinitions) {
-            if (route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()).equals(id)) {
+            if (route.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory()).equals(id)) {
                 return route;
             }
         }
@@ -586,7 +585,7 @@ public class DefaultModel implements Model {
                 // and memorize so the script is only evaluated once and the local bean is the same
                 // if a route template refers to the local bean multiple times
                 routeTemplateContext.bind(beanFactory.getName(), clazz, Suppliers.memorize(() -> {
-                    ExchangeFactory ef = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory();
+                    ExchangeFactory ef = camelContext.getCamelContextExtension().getExchangeFactory();
                     Exchange dummy = ef.create(false);
                     try {
                         String text = ScriptHelper.resolveOptionalExternalScript(camelContext, dummy, script);
@@ -720,7 +719,7 @@ public class DefaultModel implements Model {
 
         if (configurer == null) {
             // see if there is a configurer for it
-            configurer = context.adapt(ExtendedCamelContext.class)
+            configurer = context.getCamelContextExtension()
                     .getConfigurerResolver()
                     .resolvePropertyConfigurer(target.getClass().getSimpleName(), context);
         }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
index 16732fda861..77a24453813 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
@@ -206,12 +206,12 @@ public class LightweightCamelContext implements CamelContext, ExtendedCamelConte
 
     @Override
     public byte getStatusPhase() {
-        return delegate.adapt(ExtendedCamelContext.class).getStatusPhase();
+        return delegate.getCamelContextExtension().getStatusPhase();
     }
 
     @Override
     public void disposeModel() {
-        delegate.adapt(ExtendedCamelContext.class).disposeModel();
+        delegate.getCamelContextExtension().disposeModel();
     }
 
     @Override
@@ -274,16 +274,6 @@ public class LightweightCamelContext implements CamelContext, ExtendedCamelConte
         delegate.close();
     }
 
-    @Override
-    public <T extends ExtendedCamelContext> T adapt(Class<T> type) {
-        T res = delegate.adapt(type);
-        if (res == delegate) {
-            return type.cast(this);
-        } else {
-            return res;
-        }
-    }
-
     @Override
     public <T> T getExtension(Class<T> type) {
         return delegate.getExtension(type);
@@ -331,7 +321,7 @@ public class LightweightCamelContext implements CamelContext, ExtendedCamelConte
 
     @Override
     public void setDescription(String description) {
-        delegate.adapt(ExtendedCamelContext.class).setDescription(description);
+        delegate.getCamelContextExtension().setDescription(description);
     }
 
     @Override
@@ -1239,7 +1229,12 @@ public class LightweightCamelContext implements CamelContext, ExtendedCamelConte
     //
 
     protected ExtendedCamelContext getExtendedCamelContext() {
-        return delegate.adapt(ExtendedCamelContext.class);
+        return delegate.getCamelContextExtension();
+    }
+
+    @Override
+    public ExtendedCamelContext getCamelContextExtension() {
+        return delegate.getCamelContextExtension();
     }
 
     @Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
index a28c91a59ca..507ae20682f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
@@ -224,53 +224,53 @@ public class LightweightRuntimeCamelContext implements CamelContext, ExtendedCam
         this.reference = reference;
         registry = context.getRegistry();
         typeConverter = new CoreTypeConverterRegistry(context.getTypeConverterRegistry());
-        modelJAXBContextFactory = context.adapt(ExtendedCamelContext.class).getModelJAXBContextFactory();
+        modelJAXBContextFactory = context.getCamelContextExtension().getModelJAXBContextFactory();
         routes = Collections.unmodifiableList(context.getRoutes());
         uuidGenerator = context.getUuidGenerator();
-        componentResolver = context.adapt(ExtendedCamelContext.class).getComponentResolver();
-        componentNameResolver = context.adapt(ExtendedCamelContext.class).getComponentNameResolver();
-        languageResolver = context.adapt(ExtendedCamelContext.class).getLanguageResolver();
-        dataFormatResolver = context.adapt(ExtendedCamelContext.class).getDataFormatResolver();
-        healthCheckResolver = context.adapt(ExtendedCamelContext.class).getHealthCheckResolver();
-        devConsoleResolver = context.adapt(ExtendedCamelContext.class).getDevConsoleResolver();
+        componentResolver = context.getCamelContextExtension().getComponentResolver();
+        componentNameResolver = context.getCamelContextExtension().getComponentNameResolver();
+        languageResolver = context.getCamelContextExtension().getLanguageResolver();
+        dataFormatResolver = context.getCamelContextExtension().getDataFormatResolver();
+        healthCheckResolver = context.getCamelContextExtension().getHealthCheckResolver();
+        devConsoleResolver = context.getCamelContextExtension().getDevConsoleResolver();
         endpoints = context.getEndpointRegistry();
         components = context.getComponentNames().stream().collect(Collectors.toMap(s -> s, context::hasComponent));
         languages = context.getLanguageNames().stream().collect(Collectors.toMap(s -> s, context::resolveLanguage));
         propertiesComponent = context.getPropertiesComponent();
-        beanIntrospection = context.adapt(ExtendedCamelContext.class).getBeanIntrospection();
-        beanPostProcessor = context.adapt(ExtendedCamelContext.class).getBeanPostProcessor();
+        beanIntrospection = context.getCamelContextExtension().getBeanIntrospection();
+        beanPostProcessor = context.getCamelContextExtension().getBeanPostProcessor();
         dependencyInjectionAnnotationFactory
-                = context.adapt(ExtendedCamelContext.class).getDependencyInjectionAnnotationFactory();
-        headersMapFactory = context.adapt(ExtendedCamelContext.class).getHeadersMapFactory();
-        cliConnectorFactory = context.adapt(ExtendedCamelContext.class).getCliConnectorFactory();
-        exchangeFactory = context.adapt(ExtendedCamelContext.class).getExchangeFactory();
-        exchangeFactoryManager = context.adapt(ExtendedCamelContext.class).getExchangeFactoryManager();
-        modelineFactory = context.adapt(ExtendedCamelContext.class).getModelineFactory();
-        processorExchangeFactory = context.adapt(ExtendedCamelContext.class).getProcessorExchangeFactory();
-        reactiveExecutor = context.adapt(ExtendedCamelContext.class).getReactiveExecutor();
-        asyncProcessorAwaitManager = context.adapt(ExtendedCamelContext.class).getAsyncProcessorAwaitManager();
+                = context.getCamelContextExtension().getDependencyInjectionAnnotationFactory();
+        headersMapFactory = context.getCamelContextExtension().getHeadersMapFactory();
+        cliConnectorFactory = context.getCamelContextExtension().getCliConnectorFactory();
+        exchangeFactory = context.getCamelContextExtension().getExchangeFactory();
+        exchangeFactoryManager = context.getCamelContextExtension().getExchangeFactoryManager();
+        modelineFactory = context.getCamelContextExtension().getModelineFactory();
+        processorExchangeFactory = context.getCamelContextExtension().getProcessorExchangeFactory();
+        reactiveExecutor = context.getCamelContextExtension().getReactiveExecutor();
+        asyncProcessorAwaitManager = context.getCamelContextExtension().getAsyncProcessorAwaitManager();
         executorServiceManager = context.getExecutorServiceManager();
         shutdownStrategy = context.getShutdownStrategy();
         applicationContextClassLoader = context.getApplicationContextClassLoader();
-        unitOfWorkFactory = context.adapt(ExtendedCamelContext.class).getUnitOfWorkFactory();
-        processorFactory = context.adapt(ExtendedCamelContext.class).getProcessorFactory();
-        internalProcessorFactory = context.adapt(ExtendedCamelContext.class).getInternalProcessorFactory();
+        unitOfWorkFactory = context.getCamelContextExtension().getUnitOfWorkFactory();
+        processorFactory = context.getCamelContextExtension().getProcessorFactory();
+        internalProcessorFactory = context.getCamelContextExtension().getInternalProcessorFactory();
         routeController = context.getRouteController();
         inflightRepository = context.getInflightRepository();
-        periodTaskResolver = context.adapt(ExtendedCamelContext.class).getPeriodTaskResolver();
-        periodTaskScheduler = context.adapt(ExtendedCamelContext.class).getPeriodTaskScheduler();
+        periodTaskResolver = context.getCamelContextExtension().getPeriodTaskResolver();
+        periodTaskScheduler = context.getCamelContextExtension().getPeriodTaskScheduler();
         globalOptions = context.getGlobalOptions();
         injector = context.getInjector();
         classResolver = context.getClassResolver();
         name = context.getName();
         description = context.getDescription();
-        eventNotificationApplicable = context.adapt(ExtendedCamelContext.class).isEventNotificationApplicable();
+        eventNotificationApplicable = context.getCamelContextExtension().isEventNotificationApplicable();
         useDataType = context.isUseDataType();
         useBreadcrumb = context.isUseBreadcrumb();
         dumpRoutes = context.isDumpRoutes();
         mdcLoggingKeysPattern = context.getMDCLoggingKeysPattern();
         useMDCLogging = context.isUseMDCLogging();
-        basePackageScan = context.adapt(ExtendedCamelContext.class).getBasePackageScan();
+        basePackageScan = context.getCamelContextExtension().getBasePackageScan();
         messageHistory = context.isMessageHistory();
         allowUseOriginalMessage = context.isAllowUseOriginalMessage();
         logExhaustedMessageBody = context.isLogExhaustedMessageBody();
@@ -304,7 +304,7 @@ public class LightweightRuntimeCamelContext implements CamelContext, ExtendedCam
 
     @Override
     public byte getStatusPhase() {
-        return reference.adapt(ExtendedCamelContext.class).getStatusPhase();
+        return reference.getCamelContextExtension().getStatusPhase();
     }
 
     @Override
@@ -631,11 +631,8 @@ public class LightweightRuntimeCamelContext implements CamelContext, ExtendedCam
     }
 
     @Override
-    public <T extends ExtendedCamelContext> T adapt(Class<T> type) {
-        if (type.isInstance(this)) {
-            return type.cast(this);
-        }
-
+    public ExtendedCamelContext getCamelContextExtension() {
+        // TODO: implement
         throw new UnsupportedOperationException();
     }
 
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java
index 55520ec55ad..d2f07efe8d8 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWith.java
@@ -197,7 +197,7 @@ public final class AdviceWith {
         ObjectHelper.notNull(builder, "RouteBuilder");
 
         LOG.debug("AdviceWith route before: {}", definition);
-        ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
         Model model = camelContext.getExtension(Model.class);
 
         // inject this route into the advice route builder so it can access this route
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
index 49b141e78ab..85e18861510 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
@@ -21,7 +21,6 @@ import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.EndpointStrategy;
@@ -178,7 +177,7 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
      * @throws Exception can be thrown if error occurred
      */
     public void mockEndpoints() throws Exception {
-        getContext().adapt(ExtendedCamelContext.class).registerEndpointCallback(createMockEndpointStrategy(null, false));
+        getContext().getCamelContextExtension().registerEndpointCallback(createMockEndpointStrategy(null, false));
     }
 
     /**
@@ -192,7 +191,7 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
         for (String s : pattern) {
             // the text based input may be property placeholders
             s = getContext().resolvePropertyPlaceholders(s);
-            getContext().adapt(ExtendedCamelContext.class).registerEndpointCallback(createMockEndpointStrategy(s, false));
+            getContext().getCamelContextExtension().registerEndpointCallback(createMockEndpointStrategy(s, false));
         }
     }
 
@@ -208,7 +207,7 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
         for (String s : pattern) {
             // the text based input may be property placeholders
             s = getContext().resolvePropertyPlaceholders(s);
-            getContext().adapt(ExtendedCamelContext.class)
+            getContext().getCamelContextExtension()
                     .registerEndpointCallback(createMockEndpointStrategy(s, true));
         }
     }
@@ -317,7 +316,7 @@ public abstract class AdviceWithRouteBuilder extends RouteBuilder {
     private EndpointStrategy createMockEndpointStrategy(String pattern, boolean skip) {
         // the text based input may be property placeholders
         pattern = getContext().resolvePropertyPlaceholders(pattern);
-        MockSendToEndpointStrategyFactory factory = getContext().adapt(ExtendedCamelContext.class)
+        MockSendToEndpointStrategyFactory factory = getContext().getCamelContextExtension()
                 .getFactoryFinder(DEFAULT_PATH)
                 .newInstance(MockSendToEndpointStrategyFactory.FACTORY, MockSendToEndpointStrategyFactory.class)
                 .orElseThrow(() -> new IllegalArgumentException(
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
index b91819097bc..caa183f7708 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
@@ -18,7 +18,6 @@ package org.apache.camel.builder;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.util.ObjectHelper;
 
@@ -82,7 +81,7 @@ public final class ProxyBuilder {
     public <T> T build(Class<T>... interfaceClasses) throws Exception {
         ObjectHelper.notNull(endpoint, "endpoint");
         // use proxy service
-        BeanProxyFactory factory = camelContext.adapt(ExtendedCamelContext.class).getBeanProxyFactory();
+        BeanProxyFactory factory = camelContext.getCamelContextExtension().getBeanProxyFactory();
         return factory.createProxy(endpoint, binding, interfaceClasses);
     }
 
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
index deac83dd64c..33846f835d4 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -29,7 +29,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Ordered;
 import org.apache.camel.Route;
 import org.apache.camel.RoutesBuilder;
@@ -708,9 +707,9 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
         if (initialized.compareAndSet(false, true)) {
             // Set the CamelContext ErrorHandler here
             CamelContext camelContext = getContext();
-            if (camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory() != null) {
+            if (camelContext.getCamelContextExtension().getErrorHandlerFactory() != null) {
                 setErrorHandlerFactory(
-                        camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory());
+                        camelContext.getCamelContextExtension().getErrorHandlerFactory());
             }
 
             List<RouteBuilderLifecycleStrategy> strategies = new ArrayList<>(lifecycleInterceptors);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
index 47e211125dd..41eb7ab589d 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
@@ -129,7 +129,7 @@ public final class RouteDefinitionHelper {
      * @throws Exception is thrown if error force assign ids to the routes
      */
     public static void forceAssignIds(CamelContext context, List<RouteDefinition> routes) throws Exception {
-        ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+        ExtendedCamelContext ecc = context.getCamelContextExtension();
 
         // handle custom assigned id's first, and then afterwards assign auto
         // generated ids
@@ -474,7 +474,7 @@ public final class RouteDefinitionHelper {
 
             // must clone to avoid side effects while building routes using
             // multiple RouteBuilders
-            ErrorHandlerFactory builder = context.adapt(ExtendedCamelContext.class).getErrorHandlerFactory();
+            ErrorHandlerFactory builder = context.getCamelContextExtension().getErrorHandlerFactory();
             if (builder != null) {
                 ErrorHandlerFactory clone = builder.cloneBuilder();
                 route.setErrorHandlerFactoryIfNull(clone);
@@ -745,7 +745,7 @@ public final class RouteDefinitionHelper {
      */
     public static void forceAssignIds(CamelContext context, final ProcessorDefinition processor) {
         // force id on the child
-        processor.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        processor.idOrCreate(context.getCamelContextExtension().getNodeIdFactory());
 
         // if there was a custom id assigned, then make sure to support property
         // placeholders
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
index ab942f6372b..b355efba77d 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
@@ -31,7 +31,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.EndpointConsumerBuilder;
 import org.apache.camel.spi.AsEndpointUri;
 import org.apache.camel.spi.Metadata;
@@ -264,7 +263,7 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
                         props.putAll("TemplateProperties", new HashMap<>(route.getTemplateParameters()));
                         camelContext.getPropertiesComponent().setLocalProperties(props);
                         try {
-                            ids = camelContext.adapt(ExtendedCamelContext.class)
+                            ids = camelContext.getCamelContextExtension()
                                     .resolvePropertyPlaceholders(route.getRouteConfigurationId(), true)
                                     .split(",");
                         } finally {
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallConfiguration.java b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallConfiguration.java
index d32edccb98b..2d3747ce706 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallConfiguration.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallConfiguration.java
@@ -29,7 +29,6 @@ import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlType;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.model.IdentifiedType;
 import org.apache.camel.model.PropertyDefinition;
 import org.apache.camel.spi.Configurer;
@@ -102,7 +101,7 @@ public abstract class ServiceCallConfiguration extends IdentifiedType {
     protected Map<String, Object> getConfiguredOptions(CamelContext context, Object target) {
         Map<String, Object> answer = new HashMap<>();
 
-        PropertyConfigurer configurer = context.adapt(ExtendedCamelContext.class).getConfigurerResolver()
+        PropertyConfigurer configurer = context.getCamelContextExtension().getConfigurerResolver()
                 .resolvePropertyConfigurer(target.getClass().getName(), context);
         // use reflection free configurer (if possible)
         if (configurer instanceof ExtendedPropertyConfigurerGetter) {
@@ -117,7 +116,7 @@ public abstract class ServiceCallConfiguration extends IdentifiedType {
                 }
             }
         } else {
-            context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getProperties(target, answer,
+            context.getCamelContextExtension().getBeanIntrospection().getProperties(target, answer,
                     null, false);
         }
 
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java
index c289cd5e4fe..9bc364333fb 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java
@@ -27,7 +27,6 @@ import jakarta.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.cloud.ServiceCallConstants;
 import org.apache.camel.cloud.ServiceExpressionFactory;
@@ -179,7 +178,7 @@ public class ServiceCallExpressionConfiguration extends ServiceCallConfiguration
                 Class<?> type;
                 try {
                     // Then use Service factory.
-                    type = camelContext.adapt(ExtendedCamelContext.class)
+                    type = camelContext.getCamelContextExtension()
                             .getFactoryFinder(ServiceCallDefinitionConstants.RESOURCE_PATH).findClass(factoryKey).orElse(null);
                 } catch (Exception e) {
                     throw new NoFactoryAvailableException(ServiceCallDefinitionConstants.RESOURCE_PATH + factoryKey, e);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java
index 99ea10731e0..ad2b46e9dc4 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java
@@ -24,7 +24,6 @@ import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.cloud.ServiceChooser;
 import org.apache.camel.cloud.ServiceChooserFactory;
@@ -93,7 +92,7 @@ public class ServiceCallServiceChooserConfiguration extends ServiceCallConfigura
             Class<?> type;
             try {
                 // Then use Service factory.
-                type = camelContext.adapt(ExtendedCamelContext.class)
+                type = camelContext.getCamelContextExtension()
                         .getFactoryFinder(ServiceCallDefinitionConstants.RESOURCE_PATH).findClass(factoryKey).orElse(null);
             } catch (Exception e) {
                 throw new NoFactoryAvailableException(ServiceCallDefinitionConstants.RESOURCE_PATH + factoryKey, e);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java
index 9e71360d812..8a811af50d0 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java
@@ -25,7 +25,6 @@ import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.cloud.ServiceDiscovery;
 import org.apache.camel.cloud.ServiceDiscoveryFactory;
@@ -94,7 +93,7 @@ public class ServiceCallServiceDiscoveryConfiguration extends ServiceCallConfigu
             Class<?> type;
             try {
                 // Then use Service factory.
-                type = camelContext.adapt(ExtendedCamelContext.class)
+                type = camelContext.getCamelContextExtension()
                         .getFactoryFinder(ServiceCallDefinitionConstants.RESOURCE_PATH).findClass(factoryKey).orElse(null);
             } catch (Exception e) {
                 throw new NoFactoryAvailableException(ServiceCallDefinitionConstants.RESOURCE_PATH + factoryKey, e);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java
index 21e4585abaa..5dacc754399 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java
@@ -24,7 +24,6 @@ import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.cloud.ServiceFilter;
 import org.apache.camel.cloud.ServiceFilterFactory;
@@ -99,7 +98,7 @@ public class ServiceCallServiceFilterConfiguration extends ServiceCallConfigurat
             Class<?> type;
             try {
                 // Then use Service factory.
-                type = camelContext.adapt(ExtendedCamelContext.class)
+                type = camelContext.getCamelContextExtension()
                         .getFactoryFinder(ServiceCallDefinitionConstants.RESOURCE_PATH).findClass(factoryKey).orElse(null);
             } catch (Exception e) {
                 throw new NoFactoryAvailableException(ServiceCallDefinitionConstants.RESOURCE_PATH + factoryKey, e);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java
index f8005b22008..59580be948b 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java
@@ -24,7 +24,6 @@ import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.cloud.ServiceLoadBalancer;
 import org.apache.camel.cloud.ServiceLoadBalancerFactory;
@@ -100,7 +99,7 @@ public class ServiceCallServiceLoadBalancerConfiguration extends ServiceCallConf
             Class<?> type;
             try {
                 // Then use Service factory.
-                type = camelContext.adapt(ExtendedCamelContext.class)
+                type = camelContext.getCamelContextExtension()
                         .getFactoryFinder(ServiceCallDefinitionConstants.RESOURCE_PATH).findClass(factoryKey).orElse(null);
             } catch (Exception e) {
                 throw new NoFactoryAvailableException(ServiceCallDefinitionConstants.RESOURCE_PATH + factoryKey, e);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerHelper.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerHelper.java
index 23a23ddc5ff..b6c57d2651c 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerHelper.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerHelper.java
@@ -18,7 +18,6 @@ package org.apache.camel.model.errorhandler;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Route;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.support.CamelContextHelper;
@@ -89,7 +88,7 @@ public final class ErrorHandlerHelper {
     }
 
     protected static ErrorHandlerFactory lookupErrorHandlerFactory(CamelContext camelContext) {
-        ErrorHandlerFactory answer = camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory();
+        ErrorHandlerFactory answer = camelContext.getCamelContextExtension().getErrorHandlerFactory();
         if (answer instanceof RefErrorHandlerDefinition) {
             RefErrorHandlerDefinition other = (RefErrorHandlerDefinition) answer;
             String otherRef = other.getRef();
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
index e0716dcac8f..18779b3cf61 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
@@ -33,7 +33,6 @@ import jakarta.xml.bind.annotation.XmlElementRef;
 import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.model.OptionalIdentifiedDefinition;
 import org.apache.camel.model.RouteDefinition;
@@ -829,7 +828,7 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         String from = "rest-api:" + configuration.getApiContextPath();
         String routeId = configuration.getApiContextRouteId();
         if (routeId == null) {
-            routeId = answer.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+            routeId = answer.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
         }
 
         // append options
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java
index 1ededba6bdd..7b16ef2e4b8 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/DefaultProcessorFactory.java
@@ -24,7 +24,6 @@ import java.util.concurrent.ExecutorService;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LineNumberAware;
 import org.apache.camel.NamedNode;
 import org.apache.camel.NoFactoryAvailableException;
@@ -64,7 +63,7 @@ public class DefaultProcessorFactory implements ProcessorFactory, BootstrapClose
     public Processor createChildProcessor(Route route, NamedNode definition, boolean mandatory) throws Exception {
         String name = definition.getClass().getSimpleName();
         if (finder == null) {
-            finder = route.getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinderResolver()
+            finder = route.getCamelContext().getCamelContextExtension().getFactoryFinderResolver()
                     .resolveBootstrapFactoryFinder(route.getCamelContext().getClassResolver(), RESOURCE_PATH);
         }
         try {
@@ -86,7 +85,7 @@ public class DefaultProcessorFactory implements ProcessorFactory, BootstrapClose
     public Processor createProcessor(Route route, NamedNode definition) throws Exception {
         String name = definition.getClass().getSimpleName();
         if (finder == null) {
-            finder = route.getCamelContext().adapt(ExtendedCamelContext.class).getFactoryFinderResolver()
+            finder = route.getCamelContext().getCamelContextExtension().getFactoryFinderResolver()
                     .resolveBootstrapFactoryFinder(route.getCamelContext().getClassResolver(), RESOURCE_PATH);
         }
         ProcessorFactory pc = finder.newInstance(name, ProcessorFactory.class).orElse(null);
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java
index 24c08743538..5475c29dcac 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Enricher.java
@@ -25,7 +25,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.EndpointUtilizationStatistics;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.spi.ProcessorExchangeFactory;
@@ -239,7 +238,7 @@ public class Enricher extends AsyncProcessorSupport implements IdAware, RouteIdA
         this.sendDynamicProcessor.setAllowOptimisedComponents(allowOptimisedComponents);
 
         // create a per processor exchange factory
-        this.processorExchangeFactory = getCamelContext().adapt(ExtendedCamelContext.class)
+        this.processorExchangeFactory = getCamelContext().getCamelContextExtension()
                 .getProcessorExchangeFactory().newProcessorExchangeFactory(this);
         this.processorExchangeFactory.setRouteId(getRouteId());
         this.processorExchangeFactory.setId(getId());
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java
index 65d4313a4a9..93c4828d5f5 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java
@@ -18,7 +18,6 @@ package org.apache.camel.processor;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.EndpointStrategy;
 import org.apache.camel.spi.InterceptSendToEndpoint;
@@ -52,7 +51,7 @@ public class InterceptSendToEndpointCallback implements EndpointStrategy {
         } else if (matchURI == null || matchPattern(uri, matchURI)) {
             // only proxy if the uri is matched decorate endpoint with
             // our proxy should be false by default
-            return camelContext.adapt(ExtendedCamelContext.class).getInterceptEndpointFactory()
+            return camelContext.getCamelContextExtension().getInterceptEndpointFactory()
                     .createInterceptSendToEndpoint(camelContext, endpoint, skip, before, after);
         } else {
             // no proxy so return regular endpoint
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/LoopProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/LoopProcessor.java
index f4709f8dfdc..553d366c6c4 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/LoopProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/LoopProcessor.java
@@ -23,7 +23,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
@@ -62,7 +61,7 @@ public class LoopProcessor extends DelegateAsyncProcessor implements Traceable,
                          boolean copy, boolean breakOnShutdown) {
         super(processor);
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
         this.expression = expression;
         this.predicate = predicate;
         this.copy = copy;
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/MulticastProcessor.java
index d3531637319..efdb733fb50 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/MulticastProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/MulticastProcessor.java
@@ -43,7 +43,6 @@ import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Navigate;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
@@ -187,9 +186,9 @@ public class MulticastProcessor extends AsyncProcessorSupport
                               boolean parallelAggregate) {
         notNull(camelContext, "camelContext");
         this.camelContext = camelContext;
-        this.internalProcessorFactory = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory();
+        this.internalProcessorFactory = camelContext.getCamelContextExtension().getInternalProcessorFactory();
         this.route = route;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
         this.processors = processors;
         this.aggregationStrategy = aggregationStrategy;
         this.executorService = executorService;
@@ -202,7 +201,7 @@ public class MulticastProcessor extends AsyncProcessorSupport
         this.onPrepare = onPrepare;
         this.shareUnitOfWork = shareUnitOfWork;
         this.parallelAggregate = parallelAggregate;
-        this.processorExchangeFactory = camelContext.adapt(ExtendedCamelContext.class)
+        this.processorExchangeFactory = camelContext.getCamelContextExtension()
                 .getProcessorExchangeFactory().newProcessorExchangeFactory(this);
     }
 
@@ -1063,7 +1062,7 @@ public class MulticastProcessor extends AsyncProcessorSupport
             return ((ErrorHandlerSupport) errorHandler).clone(processor);
         }
         // fallback and use reifier to create the error handler
-        return camelContext.adapt(ExtendedCamelContext.class).createErrorHandler(route, processor);
+        return camelContext.getCamelContextExtension().createErrorHandler(route, processor);
     }
 
     /**
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java
index 68c8e8d8f36..a002023cc4d 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java
@@ -25,7 +25,6 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Navigate;
 import org.apache.camel.Processor;
 import org.apache.camel.Traceable;
@@ -122,7 +121,7 @@ public class Pipeline extends AsyncProcessorSupport implements Navigate<Processo
 
     public Pipeline(CamelContext camelContext, Collection<Processor> processors) {
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
         this.processors = processors.stream().map(AsyncProcessorConverterHelper::convert).collect(Collectors.toList());
         this.size = processors.size();
     }
@@ -174,7 +173,7 @@ public class Pipeline extends AsyncProcessorSupport implements Navigate<Processo
 
     @Override
     protected void doBuild() throws Exception {
-        boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
+        boolean pooled = camelContext.getCamelContextExtension().getExchangeFactory().isPooled();
         if (pooled) {
             taskFactory = new PooledTaskFactory(getId()) {
                 @Override
@@ -182,7 +181,7 @@ public class Pipeline extends AsyncProcessorSupport implements Navigate<Processo
                     return new PipelineTask();
                 }
             };
-            int capacity = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().getCapacity();
+            int capacity = camelContext.getCamelContextExtension().getExchangeFactory().getCapacity();
             taskFactory.setCapacity(capacity);
         } else {
             taskFactory = new PrototypeTaskFactory() {
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/PollEnricher.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/PollEnricher.java
index 70343adb588..b1dec50a5eb 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/PollEnricher.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/PollEnricher.java
@@ -376,7 +376,7 @@ public class PollEnricher extends AsyncProcessorSupport implements IdAware, Rout
         if (recipient != null) {
             if (recipient instanceof NormalizedEndpointUri) {
                 NormalizedEndpointUri nu = (NormalizedEndpointUri) recipient;
-                ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class);
+                ExtendedCamelContext ecc = context.getCamelContextExtension();
                 return ecc.hasEndpoint(nu);
             } else {
                 String uri = recipient.toString();
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java
index 8ee8b0c8aa4..e03ee68b85b 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java
@@ -19,7 +19,6 @@ package org.apache.camel.processor;
 import java.io.IOException;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.SendDynamicAware;
 import org.slf4j.Logger;
@@ -63,7 +62,7 @@ public class SendDynamicAwareResolver {
 
     private Class<?> findFactory(String name, CamelContext context) throws IOException {
         if (factoryFinder == null) {
-            factoryFinder = context.adapt(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH);
+            factoryFinder = context.getCamelContextExtension().getFactoryFinder(RESOURCE_PATH);
         }
         return factoryFinder.findClass(name).orElse(null);
     }
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/TryProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/TryProcessor.java
index 69648d11c8a..66e12f3f88b 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/TryProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/TryProcessor.java
@@ -25,7 +25,6 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Navigate;
 import org.apache.camel.Processor;
 import org.apache.camel.Traceable;
@@ -57,7 +56,7 @@ public class TryProcessor extends AsyncProcessorSupport implements Navigate<Proc
     public TryProcessor(CamelContext camelContext, Processor tryProcessor, List<Processor> catchClauses,
                         Processor finallyProcessor) {
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
         this.tryProcessor = tryProcessor;
         this.catchClauses = catchClauses;
         this.finallyProcessor = finallyProcessor;
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/WireTapProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/WireTapProcessor.java
index aa21610c2d7..151f3dd1275 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/WireTapProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/WireTapProcessor.java
@@ -27,7 +27,6 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
@@ -307,12 +306,12 @@ public class WireTapProcessor extends AsyncProcessorSupport
     @Override
     protected void doBuild() throws Exception {
         // create a per processor exchange factory
-        this.processorExchangeFactory = getCamelContext().adapt(ExtendedCamelContext.class)
+        this.processorExchangeFactory = getCamelContext().getCamelContextExtension()
                 .getProcessorExchangeFactory().newProcessorExchangeFactory(this);
         this.processorExchangeFactory.setRouteId(getRouteId());
         this.processorExchangeFactory.setId(getId());
 
-        boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
+        boolean pooled = camelContext.getCamelContextExtension().getExchangeFactory().isPooled();
         if (pooled) {
             taskFactory = new PooledTaskFactory(getId()) {
                 @Override
@@ -320,7 +319,7 @@ public class WireTapProcessor extends AsyncProcessorSupport
                     return new WireTapTask();
                 }
             };
-            int capacity = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().getCapacity();
+            int capacity = camelContext.getCamelContextExtension().getExchangeFactory().getCapacity();
             taskFactory.setCapacity(capacity);
         } else {
             taskFactory = new PrototypeTaskFactory() {
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
index b96e38ae395..5096b2d0435 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
@@ -41,7 +41,6 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Navigate;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Predicate;
@@ -259,7 +258,7 @@ public class AggregateProcessor extends AsyncProcessorSupport
         ObjectHelper.notNull(aggregationStrategy, "aggregationStrategy");
         ObjectHelper.notNull(executorService, "executorService");
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
         this.processor = processor;
         this.correlationExpression = correlationExpression;
         this.aggregationStrategy = aggregationStrategy;
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index 912d61f5108..d6e08dd786e 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -117,8 +117,8 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
         ObjectHelper.notNull(redeliveryPolicy, "RedeliveryPolicy", this);
 
         this.camelContext = camelContext;
-        this.reactiveExecutor = camelContext.adapt(ExtendedCamelContext.class).getReactiveExecutor();
-        this.awaitManager = camelContext.adapt(ExtendedCamelContext.class).getAsyncProcessorAwaitManager();
+        this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
+        this.awaitManager = camelContext.getCamelContextExtension().getAsyncProcessorAwaitManager();
         this.shutdownStrategy = camelContext.getShutdownStrategy();
         this.redeliveryProcessor = redeliveryProcessor;
         this.deadLetter = deadLetter;
@@ -1620,7 +1620,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
         if (redeliveryEnabled) {
             if (executorService == null) {
                 // use default shared executor service
-                executorService = camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerExecutorService();
+                executorService = camelContext.getCamelContextExtension().getErrorHandlerExecutorService();
             }
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Using ExecutorService: {} for redeliveries on error handler: {}", executorService, this);
@@ -1637,7 +1637,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
         simpleTask = deadLetter == null && !redeliveryEnabled && (exceptionPolicies == null || exceptionPolicies.isEmpty())
                 && onPrepareProcessor == null;
 
-        boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
+        boolean pooled = camelContext.getCamelContextExtension().getExchangeFactory().isPooled();
         if (pooled) {
             String id = output instanceof IdAware ? ((IdAware) output).getId() : output.toString();
             taskFactory = new PooledTaskFactory(id) {
@@ -1646,7 +1646,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
                     return simpleTask ? new SimpleTask() : new RedeliveryTask();
                 }
             };
-            int capacity = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().getCapacity();
+            int capacity = camelContext.getCamelContextExtension().getExchangeFactory().getCapacity();
             taskFactory.setCapacity(capacity);
         } else {
             taskFactory = new PrototypeTaskFactory() {
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java
index b5623091f8a..d23be35218f 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java
@@ -25,7 +25,6 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Traceable;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -166,7 +165,7 @@ public class FailOverLoadBalancer extends LoadBalancerSupport implements Traceab
     @Override
     public boolean process(final Exchange exchange, final AsyncCallback callback) {
         AsyncProcessor[] processors = doGetProcessors();
-        exchange.getContext().adapt(ExtendedCamelContext.class).getReactiveExecutor()
+        exchange.getContext().getCamelContextExtension().getReactiveExecutor()
                 .schedule(new State(exchange, callback, processors)::run);
         return false;
     }
@@ -256,7 +255,7 @@ public class FailOverLoadBalancer extends LoadBalancerSupport implements Traceab
 
             // process the exchange
             LOG.debug("Processing failover at attempt {} for {}", attempts, copy);
-            processor.process(copy, doneSync -> exchange.getContext().adapt(ExtendedCamelContext.class).getReactiveExecutor()
+            processor.process(copy, doneSync -> exchange.getContext().getCamelContextExtension().getReactiveExecutor()
                     .schedule(this::run));
         }
 
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
index ca590f542f2..131bd8de47d 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
@@ -19,7 +19,6 @@ package org.apache.camel.processor.loadbalancer;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 
 /**
@@ -33,7 +32,7 @@ public class TopicLoadBalancer extends LoadBalancerSupport {
     @Override
     public boolean process(final Exchange exchange, final AsyncCallback callback) {
         AsyncProcessor[] processors = doGetProcessors();
-        exchange.getContext().adapt(ExtendedCamelContext.class).getReactiveExecutor()
+        exchange.getContext().getCamelContextExtension().getReactiveExecutor()
                 .schedule(new State(exchange, callback, processors)::run);
         return false;
     }
@@ -65,7 +64,7 @@ public class TopicLoadBalancer extends LoadBalancerSupport {
                 exchange.setException(current.getException());
                 callback.done(false);
             } else {
-                exchange.getContext().adapt(ExtendedCamelContext.class).getReactiveExecutor().schedule(this::run);
+                exchange.getContext().getCamelContextExtension().getReactiveExecutor().schedule(this::run);
             }
         }
     }
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/AggregateReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/AggregateReifier.java
index 8ee1e11390b..6f1f3117d08 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/AggregateReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/AggregateReifier.java
@@ -22,7 +22,6 @@ import java.util.concurrent.ScheduledExecutorService;
 import org.apache.camel.AggregationStrategy;
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -54,7 +53,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
         Processor childProcessor = this.createChildProcessor(true);
 
         // wrap the aggregate route in a unit of work processor
-        AsyncProcessor target = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        AsyncProcessor target = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                 .addUnitOfWorkProcessorAdvice(camelContext, childProcessor, route);
 
         Expression correlation = createExpression(definition.getExpression());
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java
index 703f1c57b0d..786a3dbe8f2 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java
@@ -17,7 +17,6 @@
 package org.apache.camel.reifier;
 
 import org.apache.camel.BeanScope;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.model.BeanDefinition;
@@ -39,7 +38,7 @@ public class BeanReifier extends ProcessorReifier<BeanDefinition> {
         String beanType = parseString(definition.getBeanType());
         Class<?> beanClass = definition.getBeanClass();
 
-        BeanProcessorFactory fac = camelContext.adapt(ExtendedCamelContext.class).getBeanProcessorFactory();
+        BeanProcessorFactory fac = camelContext.getCamelContextExtension().getBeanProcessorFactory();
         // use singleton as default scope
         BeanScope scope = BeanScope.Singleton;
         if (definition.getScope() != null) {
@@ -47,7 +46,7 @@ public class BeanReifier extends ProcessorReifier<BeanDefinition> {
         }
         Processor answer = fac.createBeanProcessor(camelContext, bean, beanType, beanClass, ref, method, scope);
         if (answer instanceof IdAware) {
-            String id = camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory().createId(definition);
+            String id = camelContext.getCamelContextExtension().getNodeIdFactory().createId(definition);
             ((IdAware) answer).setId(id);
         }
         return answer;
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
index 502779c1795..e9bb28cac5d 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
@@ -18,7 +18,6 @@ package org.apache.camel.reifier;
 
 import java.util.List;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.model.InterceptSendToEndpointDefinition;
@@ -44,7 +43,7 @@ public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSe
         if (afterUri != null) {
             ToDefinition to = new ToDefinition(afterUri);
             // at first use custom factory
-            afterProcessor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route, to);
+            afterProcessor = camelContext.getCamelContextExtension().getProcessorFactory().createProcessor(route, to);
             // fallback to default implementation if factory did not create the processor
             if (afterProcessor == null) {
                 afterProcessor = createProcessor(to);
@@ -55,7 +54,7 @@ public class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSe
         final boolean skip = parseBoolean(definition.getSkipSendToOriginalEndpoint(), false);
 
         // register endpoint callback so we can proxy the endpoint
-        camelContext.adapt(ExtendedCamelContext.class)
+        camelContext.getCamelContextExtension()
                 .registerEndpointCallback(new InterceptSendToEndpointCallback(camelContext, before, after, matchURI, skip));
 
         // remove the original intercepted route from the outputs as we do not
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/LogReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/LogReifier.java
index 9354cef2342..cc46df36220 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/LogReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/LogReifier.java
@@ -20,7 +20,6 @@ import java.util.Map;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -105,11 +104,11 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
         if (exp != null) {
             // dynamic log message via simple expression
             return new LogProcessor(
-                    exp, camelLogger, getMaskingFormatter(), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
+                    exp, camelLogger, getMaskingFormatter(), camelContext.getCamelContextExtension().getLogListeners());
         } else {
             // static log message via string message
             return new LogProcessor(
-                    msg, camelLogger, getMaskingFormatter(), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
+                    msg, camelLogger, getMaskingFormatter(), camelContext.getCamelContextExtension().getLogListeners());
         }
     }
 
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
index 318591ae1c2..b3e93f58c65 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/OnCompletionReifier.java
@@ -19,7 +19,6 @@ package org.apache.camel.reifier;
 import java.util.concurrent.ExecutorService;
 
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -53,7 +52,7 @@ public class OnCompletionReifier extends ProcessorReifier<OnCompletionDefinition
         Processor childProcessor = this.createChildProcessor(true);
 
         // wrap the on completion route in a unit of work processor
-        AsyncProcessor target = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        AsyncProcessor target = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                 .addUnitOfWorkProcessorAdvice(camelContext, childProcessor, route);
 
         route.setOnCompletion(getId(definition), target);
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 67935aa903b..3ece7e6ad40 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -30,7 +30,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Channel;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.StartupStep;
@@ -578,8 +577,8 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
     protected Processor createChildProcessor(boolean mandatory) throws Exception {
         Processor children = null;
         // at first use custom factory
-        if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
-            children = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createChildProcessor(route,
+        if (camelContext.getCamelContextExtension().getProcessorFactory() != null) {
+            children = camelContext.getCamelContextExtension().getProcessorFactory().createChildProcessor(route,
                     definition, mandatory);
         }
         // fallback to default implementation if factory did not create the
@@ -633,13 +632,13 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
     protected Channel wrapChannel(Processor processor, ProcessorDefinition<?> child, Boolean inheritErrorHandler)
             throws Exception {
         // put a channel in between this and each output to control the route flow logic
-        Channel channel = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        Channel channel = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                 .createChannel(camelContext);
 
         // add interceptor strategies to the channel must be in this order:
         // camel context, route context, local
         List<InterceptStrategy> interceptors = new ArrayList<>();
-        interceptors.addAll(camelContext.adapt(ExtendedCamelContext.class).getInterceptStrategies());
+        interceptors.addAll(camelContext.getCamelContextExtension().getInterceptStrategies());
         interceptors.addAll(route.getInterceptStrategies());
         interceptors.addAll(definition.getInterceptStrategies());
 
@@ -821,20 +820,20 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
 
     protected Processor createProcessor(ProcessorDefinition<?> output) throws Exception {
         // ensure node has id assigned
-        String outputId = output.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-        StartupStep step = camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().beginStep(ProcessorReifier.class, outputId, "Create processor");
+        String outputId = output.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
+        StartupStep step = camelContext.getCamelContextExtension().getStartupStepRecorder().beginStep(ProcessorReifier.class, outputId, "Create processor");
 
         Processor processor = null;
         // at first use custom factory
-        if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
-            processor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route, output);
+        if (camelContext.getCamelContextExtension().getProcessorFactory() != null) {
+            processor = camelContext.getCamelContextExtension().getProcessorFactory().createProcessor(route, output);
         }
         // fallback to default implementation if factory did not create the processor
         if (processor == null) {
             processor = reifier(route, output).createProcessor();
         }
 
-        camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().endStep(step);
+        camelContext.getCamelContextExtension().getStartupStepRecorder().endStep(step);
         return processor;
     }
 
@@ -848,8 +847,8 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
         preCreateProcessor();
 
         // at first use custom factory
-        if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
-            processor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route, definition);
+        if (camelContext.getCamelContextExtension().getProcessorFactory() != null) {
+            processor = camelContext.getCamelContextExtension().getProcessorFactory().createProcessor(route, definition);
         }
         // fallback to default implementation if factory did not create the
         // processor
@@ -890,7 +889,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
     }
 
     protected String getId(OptionalIdentifiedDefinition<?> def) {
-        return def.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        return def.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
     }
 
     /**
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResequenceReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
index bdcdb9f1a5f..5a2d46068e5 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
@@ -18,7 +18,6 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
@@ -74,7 +73,7 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
         Expression expression = createExpression(definition.getExpression());
 
         // and wrap in unit of work
-        AsyncProcessor target = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        AsyncProcessor target = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                 .addUnitOfWorkProcessorAdvice(camelContext, processor, route);
 
         ObjectHelper.notNull(config, "config", this);
@@ -111,7 +110,7 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
         Processor processor = this.createChildProcessor(true);
         Expression expression = createExpression(definition.getExpression());
 
-        AsyncProcessor target = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        AsyncProcessor target = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                 .addUnitOfWorkProcessorAdvice(camelContext, processor, route);
 
         ObjectHelper.notNull(config, "config", this);
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResumableReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResumableReifier.java
index 9c6a05c909f..6b4705a3771 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResumableReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ResumableReifier.java
@@ -19,7 +19,6 @@ package org.apache.camel.reifier;
 import java.util.Optional;
 
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -65,7 +64,7 @@ public class ResumableReifier extends ProcessorReifier<ResumableDefinition> {
                 strategy = mandatoryLookup(ref, ResumeStrategy.class);
             } else {
                 final FactoryFinder factoryFinder
-                        = camelContext.adapt(ExtendedCamelContext.class).getFactoryFinder(FactoryFinder.DEFAULT_PATH);
+                        = camelContext.getCamelContextExtension().getFactoryFinder(FactoryFinder.DEFAULT_PATH);
 
                 final ResumeStrategyConfiguration resumeStrategyConfiguration = definition.getResumeStrategyConfiguration();
                 Optional<ResumeStrategy> resumeStrategyOptional = factoryFinder.newInstance(
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
index d97f2594b07..1de338a742d 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -26,7 +26,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointConsumerResolver;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -97,9 +96,9 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         }
 
         // create route
-        String id = definition.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+        String id = definition.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
         String desc = definition.getDescriptionText();
-        Route route = camelContext.adapt(ExtendedCamelContext.class).getRouteFactory().createRoute(camelContext, definition, id,
+        Route route = camelContext.getCamelContextExtension().getRouteFactory().createRoute(camelContext, definition, id,
                 desc, endpoint, definition.getResource());
 
         // configure error handler
@@ -203,14 +202,14 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
                 ProcessorReifier<?> reifier = ProcessorReifier.reifier(route, output);
 
                 // ensure node has id assigned
-                String outputId = output.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+                String outputId = output.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
                 String eip = reifier.getClass().getSimpleName().replace("Reifier", "");
-                StartupStep step = camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder()
+                StartupStep step = camelContext.getCamelContextExtension().getStartupStepRecorder()
                         .beginStep(ProcessorReifier.class, outputId, "Create " + eip + " Processor");
 
                 reifier.addRoutes();
 
-                camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().endStep(step);
+                camelContext.getCamelContextExtension().getStartupStepRecorder().endStep(step);
             } catch (Exception e) {
                 throw new FailedToCreateRouteException(definition.getId(), definition.toString(), output.toString(), e);
             }
@@ -231,7 +230,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         target.setRouteId(id);
 
         // and wrap it in a unit of work so the UoW is on the top, so the entire route will be in the same UoW
-        InternalProcessor internal = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        InternalProcessor internal = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                 .addUnitOfWorkProcessorAdvice(camelContext, target, route);
 
         // configure route policy
@@ -346,7 +345,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         // only during startup phase
         if (camelContext.getStatus().ordinal() < ServiceStatus.Started.ordinal()) {
             // okay route has been created from the model, then the model is no longer needed, and we can de-reference
-            camelContext.adapt(ExtendedCamelContext.class).addBootstrap(route::clearRouteModel);
+            camelContext.getCamelContextExtension().addBootstrap(route::clearRouteModel);
         }
 
         return route;
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/WireTapReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/WireTapReifier.java
index 79f2577d5a6..3e83d266147 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/WireTapReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/WireTapReifier.java
@@ -22,7 +22,6 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LineNumberAware;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -86,7 +85,7 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
         Processor childProcessor = wrapInErrorHandler(producer);
 
         // and wrap in unit of work
-        AsyncProcessor target = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+        AsyncProcessor target = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                 .addUnitOfWorkProcessorAdvice(camelContext, childProcessor, route);
 
         // is true by default
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index f941db32bf1..3ca8cd4e635 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -22,7 +22,6 @@ import java.util.Map;
 import java.util.function.BiFunction;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.Model;
 import org.apache.camel.model.dataformat.ASN1DataFormat;
@@ -333,7 +332,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
         }
         if (configurer == null) {
             String configurerName = name + "-dataformat-configurer";
-            configurer = camelContext.adapt(ExtendedCamelContext.class).getConfigurerResolver()
+            configurer = camelContext.getCamelContextExtension().getConfigurerResolver()
                     .resolvePropertyConfigurer(configurerName, camelContext);
         }
         return configurer;
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
index 2f1193975af..b69f0e6d5a4 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
@@ -25,7 +25,6 @@ import java.util.function.BiFunction;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Predicate;
@@ -481,7 +480,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerFactory> extends
         }
         if (processor != null) {
             // must wrap the processor in an UoW
-            processor = camelContext.adapt(ExtendedCamelContext.class).getInternalProcessorFactory()
+            processor = camelContext.getCamelContextExtension().getInternalProcessorFactory()
                     .addUnitOfWorkProcessorAdvice(camelContext, processor, route);
         }
         return processor;
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
index 268df597582..5c45fbe1ab9 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
@@ -19,7 +19,6 @@ package org.apache.camel.reifier.rest;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Route;
 import org.apache.camel.model.rest.RestBindingDefinition;
 import org.apache.camel.model.rest.RestBindingMode;
@@ -129,7 +128,7 @@ public class RestBindingReifier extends AbstractReifier {
 
             if (jaxb != null) {
                 // to setup JAXB we need to use camel-jaxb
-                camelContext.adapt(ExtendedCamelContext.class).getRestBindingJaxbDataFormatFactory().setupJaxb(
+                camelContext.getCamelContextExtension().getRestBindingJaxbDataFormatFactory().setupJaxb(
                         camelContext, config,
                         parseString(definition.getType()), definition.getTypeClass(),
                         parseString(definition.getOutType()), definition.getOutTypeClass(),
@@ -161,9 +160,9 @@ public class RestBindingReifier extends AbstractReifier {
             clazz = camelContext.getClassResolver().resolveMandatoryClass(typeName);
         }
         if (clazz != null) {
-            camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection().setProperty(camelContext, json,
+            camelContext.getCamelContextExtension().getBeanIntrospection().setProperty(camelContext, json,
                     "unmarshalType", clazz);
-            camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection().setProperty(camelContext, json, "useList",
+            camelContext.getCamelContextExtension().getBeanIntrospection().setProperty(camelContext, json, "useList",
                     useList);
         }
 
@@ -182,9 +181,9 @@ public class RestBindingReifier extends AbstractReifier {
         }
 
         if (outClazz != null) {
-            camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection().setProperty(camelContext, outJson,
+            camelContext.getCamelContextExtension().getBeanIntrospection().setProperty(camelContext, outJson,
                     "unmarshalType", outClazz);
-            camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection().setProperty(camelContext, outJson, "useList",
+            camelContext.getCamelContextExtension().getBeanIntrospection().setProperty(camelContext, outJson, "useList",
                     outUseList);
         }
 
diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index e71d97c5789..f1935a7494f 100644
--- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -33,7 +33,6 @@ import jakarta.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelException;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.ManagementMBeansLevel;
 import org.apache.camel.ManagementStatisticsLevel;
@@ -202,7 +201,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         PackageScanClassResolver packageResolver = getBeanForType(PackageScanClassResolver.class);
         if (packageResolver != null) {
             LOG.info("Using custom PackageScanClassResolver: {}", packageResolver);
-            getContext().adapt(ExtendedCamelContext.class).setPackageScanClassResolver(packageResolver);
+            getContext().getCamelContextExtension().setPackageScanClassResolver(packageResolver);
         }
 
         // also set type converter registry as early as possible
@@ -267,7 +266,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         AsyncProcessorAwaitManager asyncProcessorAwaitManager = getBeanForType(AsyncProcessorAwaitManager.class);
         if (asyncProcessorAwaitManager != null) {
             LOG.info("Using custom AsyncProcessorAwaitManager: {}", asyncProcessorAwaitManager);
-            getContext().adapt(ExtendedCamelContext.class).setAsyncProcessorAwaitManager(asyncProcessorAwaitManager);
+            getContext().getCamelContextExtension().setAsyncProcessorAwaitManager(asyncProcessorAwaitManager);
         }
         ManagementStrategy managementStrategy = getBeanForType(ManagementStrategy.class);
         if (managementStrategy != null) {
@@ -287,7 +286,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         UnitOfWorkFactory unitOfWorkFactory = getBeanForType(UnitOfWorkFactory.class);
         if (unitOfWorkFactory != null) {
             LOG.info("Using custom UnitOfWorkFactory: {}", unitOfWorkFactory);
-            getContext().adapt(ExtendedCamelContext.class).setUnitOfWorkFactory(unitOfWorkFactory);
+            getContext().getCamelContextExtension().setUnitOfWorkFactory(unitOfWorkFactory);
         }
         RuntimeEndpointRegistry runtimeEndpointRegistry = getBeanForType(RuntimeEndpointRegistry.class);
         if (runtimeEndpointRegistry != null) {
@@ -297,7 +296,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         HeadersMapFactory headersMapFactory = getBeanForType(HeadersMapFactory.class);
         if (headersMapFactory != null) {
             LOG.info("Using custom HeadersMapFactory: {}", headersMapFactory);
-            getContext().adapt(ExtendedCamelContext.class).setHeadersMapFactory(headersMapFactory);
+            getContext().getCamelContextExtension().setHeadersMapFactory(headersMapFactory);
         }
         // custom type converters defined as <bean>s
         Map<String, TypeConverters> typeConverters = getContext().getRegistry().findByTypeWithName(TypeConverters.class);
@@ -326,7 +325,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             for (Entry<String, EndpointStrategy> entry : endpointStrategies.entrySet()) {
                 EndpointStrategy strategy = entry.getValue();
                 LOG.info("Using custom EndpointStrategy with id: {} and implementation: {}", entry.getKey(), strategy);
-                getContext().adapt(ExtendedCamelContext.class).registerEndpointCallback(strategy);
+                getContext().getCamelContextExtension().registerEndpointCallback(strategy);
             }
         }
         // shutdown
@@ -341,9 +340,9 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             for (Entry<String, InterceptStrategy> entry : interceptStrategies.entrySet()) {
                 InterceptStrategy strategy = entry.getValue();
                 // do not add if already added, for instance a tracer that is also an InterceptStrategy class
-                if (!getContext().adapt(ExtendedCamelContext.class).getInterceptStrategies().contains(strategy)) {
+                if (!getContext().getCamelContextExtension().getInterceptStrategies().contains(strategy)) {
                     LOG.info("Using custom InterceptStrategy with id: {} and implementation: {}", entry.getKey(), strategy);
-                    getContext().adapt(ExtendedCamelContext.class).addInterceptStrategy(strategy);
+                    getContext().getCamelContextExtension().addInterceptStrategy(strategy);
                 }
             }
         }
@@ -455,9 +454,9 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         if (logListeners != null && !logListeners.isEmpty()) {
             for (Map.Entry<String, LogListener> entry : logListeners.entrySet()) {
                 LogListener logListener = entry.getValue();
-                if (getContext().adapt(ExtendedCamelContext.class).getLogListeners() == null || !getContext().adapt(ExtendedCamelContext.class).getLogListeners().contains(logListener)) {
+                if (getContext().getCamelContextExtension().getLogListeners() == null || !getContext().getCamelContextExtension().getLogListeners().contains(logListener)) {
                     LOG.info("Using custom LogListener with id: {} and implementation: {}", entry.getKey(), logListener);
-                    getContext().adapt(ExtendedCamelContext.class).addLogListener(logListener);
+                    getContext().getCamelContextExtension().addLogListener(logListener);
                 }
             }
         }
@@ -487,7 +486,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             LOG.debug("Setting up routes");
 
             // mark that we are setting up routes
-            getContext().adapt(ExtendedCamelContext.class).setupRoutes(false);
+            getContext().getCamelContextExtension().setupRoutes(false);
 
             // add route configurations
             initRouteConfigurationRefs();
@@ -554,7 +553,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             installRoutes();
 
             // and we are now finished setting up the routes
-            getContext().adapt(ExtendedCamelContext.class).setupRoutes(true);
+            getContext().getCamelContextExtension().setupRoutes(true);
         }
     }
 
@@ -733,7 +732,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
                 properties.put("mBeansLevel", mbLevel);
             }
 
-            getContext().adapt(ExtendedCamelContext.class).setupManagement(properties);
+            getContext().getCamelContextExtension().setupManagement(properties);
         }
     }
 
@@ -1157,7 +1156,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             context.setStartupSummaryLevel(getStartupSummaryLevel());
         }
         if (getBeanPostProcessorEnabled() != null) {
-            CamelBeanPostProcessor cbpp = context.adapt(ExtendedCamelContext.class).getBeanPostProcessor();
+            CamelBeanPostProcessor cbpp = context.getCamelContextExtension().getBeanPostProcessor();
             if (cbpp != null) {
                 cbpp.setEnabled(CamelContextHelper.parseBoolean(context, getBeanPostProcessorEnabled()));
             }
@@ -1201,7 +1200,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
             context.setDelayer(CamelContextHelper.parseLong(context, getDelayer()));
         }
         if (getErrorHandlerRef() != null) {
-            context.adapt(ExtendedCamelContext.class)
+            context.getCamelContextExtension()
                     .setErrorHandlerFactory(new RefErrorHandlerDefinition(getErrorHandlerRef()));
         }
         if (getAutoStartup() != null) {
@@ -1477,7 +1476,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         ModelJAXBContextFactory modelJAXBContextFactory = getBeanForType(ModelJAXBContextFactory.class);
         if (modelJAXBContextFactory != null) {
             LOG.info("Using custom ModelJAXBContextFactory: {}", modelJAXBContextFactory);
-            getContext().adapt(ExtendedCamelContext.class).setModelJAXBContextFactory(modelJAXBContextFactory);
+            getContext().getCamelContextExtension().setModelJAXBContextFactory(modelJAXBContextFactory);
         }
         ClassResolver classResolver = getBeanForType(ClassResolver.class);
         if (classResolver != null) {
@@ -1487,7 +1486,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         FactoryFinderResolver factoryFinderResolver = getBeanForType(FactoryFinderResolver.class);
         if (factoryFinderResolver != null) {
             LOG.info("Using custom FactoryFinderResolver: {}", factoryFinderResolver);
-            getContext().adapt(ExtendedCamelContext.class).setFactoryFinderResolver(factoryFinderResolver);
+            getContext().getCamelContextExtension().setFactoryFinderResolver(factoryFinderResolver);
         }
         ExecutorServiceManager executorServiceStrategy = getBeanForType(ExecutorServiceManager.class);
         if (executorServiceStrategy != null) {
@@ -1502,7 +1501,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         ProcessorFactory processorFactory = getBeanForType(ProcessorFactory.class);
         if (processorFactory != null) {
             LOG.info("Using custom ProcessorFactory: {}", processorFactory);
-            getContext().adapt(ExtendedCamelContext.class).setProcessorFactory(processorFactory);
+            getContext().getCamelContextExtension().setProcessorFactory(processorFactory);
         }
         Debugger debugger = getBeanForType(Debugger.class);
         if (debugger != null) {
@@ -1517,7 +1516,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         NodeIdFactory nodeIdFactory = getBeanForType(NodeIdFactory.class);
         if (nodeIdFactory != null) {
             LOG.info("Using custom NodeIdFactory: {}", nodeIdFactory);
-            getContext().adapt(ExtendedCamelContext.class).setNodeIdFactory(nodeIdFactory);
+            getContext().getCamelContextExtension().setNodeIdFactory(nodeIdFactory);
         }
         StreamCachingStrategy streamCachingStrategy = getBeanForType(StreamCachingStrategy.class);
         if (streamCachingStrategy != null) {
@@ -1532,7 +1531,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         ReactiveExecutor reactiveExecutor = getBeanForType(ReactiveExecutor.class);
         if (reactiveExecutor != null) {
             // already logged in CamelContext
-            getContext().adapt(ExtendedCamelContext.class).setReactiveExecutor(reactiveExecutor);
+            getContext().getCamelContextExtension().setReactiveExecutor(reactiveExecutor);
         }
     }
 }
diff --git a/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java b/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java
index 099836deb62..d62da8d0593 100644
--- a/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java
+++ b/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java
@@ -109,7 +109,9 @@ public class AbstractCamelContextFactoryBeanTest {
         final DefaultCamelContext context = mock(DefaultCamelContext.class,
                 withSettings().invocationListeners(i -> invocations.add((Invocation) i.getInvocation())));
 
-        when(context.adapt(ExtendedCamelContext.class)).thenReturn(context);
+        final ExtendedCamelContext extendedCamelContext = mock(ExtendedCamelContext.class);
+
+        when(context.getCamelContextExtension()).thenReturn(extendedCamelContext);
 
         // program the property resolution in context mock
         when(context.resolvePropertyPlaceholders(anyString())).thenAnswer(invocation -> {
diff --git a/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java b/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
index d21d54c0804..07d4b885084 100644
--- a/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
+++ b/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
@@ -206,7 +206,7 @@ public abstract class ContextTestSupport extends TestSupport {
             context = ctx;
         } else {
             DefaultCamelContext ctx = new DefaultCamelContext(true);
-            ctx.setRegistry(createRegistry());
+            ctx.getCamelContextExtension().setRegistry(createRegistry());
             context = ctx;
         }
         if (!useJmx()) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
index c98982a0fc8..cdd9226a171 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
@@ -21,7 +21,6 @@ import java.util.List;
 import org.apache.camel.Channel;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.impl.engine.DefaultRoute;
@@ -47,7 +46,7 @@ public class ContextErrorHandlerTest extends ContextTestSupport {
         redeliveryPolicy.setUseExponentialBackOff("true");
         DeadLetterChannelBuilder deadLetterChannelBuilder = new DeadLetterChannelBuilder("mock:error");
         deadLetterChannelBuilder.setRedeliveryPolicy(redeliveryPolicy);
-        context.adapt(ExtendedCamelContext.class).setErrorHandlerFactory(deadLetterChannelBuilder);
+        context.getCamelContextExtension().setErrorHandlerFactory(deadLetterChannelBuilder);
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
index 59f430c328d..38fee2351c7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java
@@ -626,7 +626,7 @@ public class RouteBuilderTest extends TestSupport {
         });
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            context.getRegistry().bind(UUID.randomUUID().toString(), new RouteBuilderLifecycleStrategy() {
+            context.getCamelContextExtension().getRegistry().bind(UUID.randomUUID().toString(), new RouteBuilderLifecycleStrategy() {
                 @Override
                 public void beforeConfigure(RouteBuilder builder) {
                     ordered.add("before-3");
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateErrorHandlerTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateErrorHandlerTest.java
index 3341457eb8b..905aa38824b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateErrorHandlerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateErrorHandlerTest.java
@@ -32,7 +32,7 @@ public class RouteTemplateErrorHandlerTest {
     @Test
     public void testDefineRouteTemplate() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            context.getRegistry().bind("myErrorHandler", new NoErrorHandlerDefinition());
+            context.getCamelContextExtension().getRegistry().bind("myErrorHandler", new NoErrorHandlerDefinition());
             context.addRoutes(new RouteBuilder() {
                 @Override
                 public void configure() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriFactoryTest.java
index d3eac30f05c..24c3247f682 100644
--- a/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/catalog/CustomEndpointUriFactoryTest.java
@@ -26,7 +26,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.EndpointUriFactory;
 import org.apache.camel.support.component.EndpointUriFactorySupport;
 import org.junit.jupiter.api.Assertions;
@@ -60,7 +59,7 @@ public class CustomEndpointUriFactoryTest extends ContextTestSupport {
         params.put("port", 4444);
         params.put("verbose", true);
 
-        assembler = context.adapt(ExtendedCamelContext.class).getEndpointUriFactory("acme");
+        assembler = context.getCamelContextExtension().getEndpointUriFactory("acme");
         String uri = assembler.buildUri("acme", params);
         Assertions.assertEquals("acme:foo:4444?amount=123&verbose=true", uri);
     }
diff --git a/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogEndpointUriAssemblerTest.java b/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogEndpointUriAssemblerTest.java
index a178b7422e7..e5757ad41ad 100644
--- a/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogEndpointUriAssemblerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogEndpointUriAssemblerTest.java
@@ -20,7 +20,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.EndpointUriFactory;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -29,7 +28,7 @@ public class RuntimeCamelCatalogEndpointUriAssemblerTest extends ContextTestSupp
 
     @Test
     public void testLookupAssemble() throws Exception {
-        EndpointUriFactory assembler = context.adapt(ExtendedCamelContext.class).getEndpointUriFactory("timer");
+        EndpointUriFactory assembler = context.getCamelContextExtension().getEndpointUriFactory("timer");
 
         Map<String, Object> params = new HashMap<>();
         params.put("timerName", "foo");
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/log/LogComponentOptionsTest.java b/core/camel-core/src/test/java/org/apache/camel/component/log/LogComponentOptionsTest.java
index d0ca9ca3e25..078f4761c2d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/log/LogComponentOptionsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/log/LogComponentOptionsTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.log;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
 import org.junit.jupiter.api.Test;
@@ -35,7 +34,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
     public void testFastLogComponentOptions() throws Exception {
         context.start();
 
-        long before = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long before = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         DefaultExchangeFormatter myFormatter = new DefaultExchangeFormatter();
 
@@ -48,7 +47,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
 
         assertSame(myFormatter, log.getExchangeFormatter());
 
-        long after = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long after = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         assertEquals(before, after, "Should not use Java reflection");
     }
@@ -57,7 +56,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
     public void testFastLogComponentNestedOptions() throws Exception {
         context.start();
 
-        long before = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long before = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         DefaultExchangeFormatter myFormatter = new DefaultExchangeFormatter();
 
@@ -71,7 +70,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
 
         assertSame(myFormatter, log.getExchangeFormatter());
 
-        long after = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long after = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         assertTrue(after > before, "Should use Java reflection");
     }
@@ -80,7 +79,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
     public void testFastLogComponentOptionsLookupRegistry() throws Exception {
         context.start();
 
-        long before = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long before = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         DefaultExchangeFormatter myFormatter = new DefaultExchangeFormatter();
         context.getRegistry().bind("myGreatFormatter", myFormatter);
@@ -96,7 +95,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
 
         assertSame(myFormatter, log.getExchangeFormatter());
 
-        long after = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long after = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         assertEquals(before, after, "Should not use Java reflection");
     }
@@ -105,7 +104,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
     public void testSlowLogComponentOptions() throws Exception {
         context.start();
 
-        long before = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long before = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         DefaultExchangeFormatter myFormatter = new DefaultExchangeFormatter();
 
@@ -119,7 +118,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
         assertSame(myFormatter, log.getExchangeFormatter());
         assertTrue(myFormatter.isShowExchangeId());
 
-        long after = context.adapt(ExtendedCamelContext.class).getBeanIntrospection().getInvokedCounter();
+        long after = context.getCamelContextExtension().getBeanIntrospection().getInvokedCounter();
 
         assertTrue(after > before, "Should use reflection");
     }
@@ -128,7 +127,7 @@ public class LogComponentOptionsTest extends ContextTestSupport {
     public void testSlowLogComponentOptionsLookupRegistry() throws Exception {
         context.start();
... 4185 lines suppressed ...