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

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


The following commit(s) were added to refs/heads/master by this push:
     new a23d109  CAMEL-13675: camel-main - Optimise main configurer
a23d109 is described below

commit a23d109628d51bdbdb4a5d2d0eb5321e34f07316
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Jun 24 14:34:20 2019 +0200

    CAMEL-13675: camel-main - Optimise main configurer
---
 .../camel/main/DefaultConfigurationConfigurer.java | 152 ++++++++++++++++-----
 1 file changed, 118 insertions(+), 34 deletions(-)

diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index 9568594..e88497a 100644
--- 
a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -169,46 +169,126 @@ public final class DefaultConfigurationConfigurer {
      * Similar code in camel-core-xml module in class 
org.apache.camel.core.xml.AbstractCamelContextFactoryBean
      * or in camel-spring-boot module in class 
org.apache.camel.spring.boot.CamelAutoConfiguration.
      */
-    public static void afterPropertiesSet(CamelContext camelContext) throws 
Exception {
+    public static void afterPropertiesSet(final CamelContext camelContext) 
throws Exception {
         final Registry registry = camelContext.getRegistry();
         final ManagementStrategy managementStrategy = 
camelContext.getManagementStrategy();
+        final ExtendedCamelContext ecc = 
camelContext.adapt(ExtendedCamelContext.class);
 
-        registerPropertyForBeanType(registry, BacklogTracer.class, bt -> 
camelContext.setExtension(BacklogTracer.class, bt));
-        registerPropertyForBeanType(registry, HandleFault.class, 
camelContext.adapt(ExtendedCamelContext.class)::addInterceptStrategy);
-        registerPropertyForBeanType(registry, InflightRepository.class, 
camelContext::setInflightRepository);
-        registerPropertyForBeanType(registry, 
AsyncProcessorAwaitManager.class, 
camelContext.adapt(ExtendedCamelContext.class)::setAsyncProcessorAwaitManager);
-        registerPropertyForBeanType(registry, ManagementStrategy.class, 
camelContext::setManagementStrategy);
-        registerPropertyForBeanType(registry, 
ManagementObjectNameStrategy.class, 
managementStrategy::setManagementObjectNameStrategy);
-        registerPropertyForBeanType(registry, EventFactory.class, 
managementStrategy::setEventFactory);
-        registerPropertyForBeanType(registry, UnitOfWorkFactory.class, 
camelContext.adapt(ExtendedCamelContext.class)::setUnitOfWorkFactory);
-        registerPropertyForBeanType(registry, RuntimeEndpointRegistry.class, 
camelContext::setRuntimeEndpointRegistry);
-        registerPropertyForBeanType(registry, ModelJAXBContextFactory.class, 
camelContext.adapt(ExtendedCamelContext.class)::setModelJAXBContextFactory);
-        registerPropertyForBeanType(registry, ClassResolver.class, 
camelContext::setClassResolver);
-        registerPropertyForBeanType(registry, FactoryFinderResolver.class, 
camelContext.adapt(ExtendedCamelContext.class)::setFactoryFinderResolver);
-        registerPropertyForBeanType(registry, RouteController.class, 
camelContext::setRouteController);
-        registerPropertyForBeanType(registry, UuidGenerator.class, 
camelContext::setUuidGenerator);
-        registerPropertyForBeanType(registry, ExecutorServiceManager.class, 
camelContext::setExecutorServiceManager);
-        registerPropertyForBeanType(registry, ThreadPoolFactory.class, 
camelContext.getExecutorServiceManager()::setThreadPoolFactory);
-        registerPropertyForBeanType(registry, ProcessorFactory.class, 
camelContext.adapt(ExtendedCamelContext.class)::setProcessorFactory);
-        registerPropertyForBeanType(registry, Debugger.class, 
camelContext::setDebugger);
-        registerPropertyForBeanType(registry, NodeIdFactory.class, 
camelContext.adapt(ExtendedCamelContext.class)::setNodeIdFactory);
-        registerPropertyForBeanType(registry, MessageHistoryFactory.class, 
camelContext::setMessageHistoryFactory);
-        registerPropertyForBeanType(registry, ReactiveExecutor.class, 
camelContext::setReactiveExecutor);
-        registerPropertyForBeanType(registry, ShutdownStrategy.class, 
camelContext::setShutdownStrategy);
-
-        registerPropertiesForBeanTypes(registry, TypeConverters.class, 
camelContext.getTypeConverterRegistry()::addTypeConverters);
-        registerPropertiesForBeanTypes(registry, EndpointStrategy.class, 
camelContext.adapt(ExtendedCamelContext.class)::registerEndpointCallback);
-        registerPropertiesForBeanTypes(registry, CamelClusterService.class, 
addServiceToContext(camelContext));
-        registerPropertiesForBeanTypes(registry, RoutePolicyFactory.class, 
camelContext::addRoutePolicyFactory);
+        BacklogTracer bt = getSingleBeanOfType(registry, BacklogTracer.class);
+        if (bt != null) {
+            ecc.setExtension(BacklogTracer.class, bt);
+        }
+        HandleFault hf = getSingleBeanOfType(registry, HandleFault.class);
+        if (hf != null) {
+            ecc.addInterceptStrategy(hf);
+        }
+        InflightRepository ir = getSingleBeanOfType(registry, 
InflightRepository.class);
+        if (ir != null) {
+            ecc.setInflightRepository(ir);
+        }
+        AsyncProcessorAwaitManager apam = getSingleBeanOfType(registry, 
AsyncProcessorAwaitManager.class);
+        if (apam != null) {
+            ecc.setAsyncProcessorAwaitManager(apam);
+        }
+        ManagementStrategy ms = getSingleBeanOfType(registry, 
ManagementStrategy.class);
+        if (ms != null) {
+            ecc.setManagementStrategy(ms);
+        }
+        ManagementObjectNameStrategy mons = getSingleBeanOfType(registry, 
ManagementObjectNameStrategy.class);
+        if (mons != null) {
+            managementStrategy.setManagementObjectNameStrategy(mons);
+        }
+        EventFactory ef = getSingleBeanOfType(registry, EventFactory.class);
+        if (ef != null) {
+            managementStrategy.setEventFactory(ef);
+        }
+        UnitOfWorkFactory uowf = getSingleBeanOfType(registry, 
UnitOfWorkFactory.class);
+        if (uowf != null) {
+            ecc.setUnitOfWorkFactory(uowf);
+        }
+        RuntimeEndpointRegistry rer = getSingleBeanOfType(registry, 
RuntimeEndpointRegistry.class);
+        if (rer != null) {
+            ecc.setRuntimeEndpointRegistry(rer);
+        }
+        ModelJAXBContextFactory mjcf = getSingleBeanOfType(registry, 
ModelJAXBContextFactory.class);
+        if (mjcf != null) {
+            ecc.setModelJAXBContextFactory(mjcf);
+        }
+        ClassResolver cr = getSingleBeanOfType(registry, ClassResolver.class);
+        if (cr != null) {
+            ecc.setClassResolver(cr);
+        }
+        FactoryFinderResolver ffr = getSingleBeanOfType(registry, 
FactoryFinderResolver.class);
+        if (ffr != null) {
+            ecc.setFactoryFinderResolver(ffr);
+        }
+        RouteController rc = getSingleBeanOfType(registry, 
RouteController.class);
+        if (rc != null) {
+            ecc.setRouteController(rc);
+        }
+        UuidGenerator ug = getSingleBeanOfType(registry, UuidGenerator.class);
+        if (ug != null) {
+            ecc.setUuidGenerator(ug);
+        }
+        ExecutorServiceManager esm = getSingleBeanOfType(registry, 
ExecutorServiceManager.class);
+        if (esm != null) {
+            ecc.setExecutorServiceManager(esm);
+        }
+        ThreadPoolFactory tpf = getSingleBeanOfType(registry, 
ThreadPoolFactory.class);
+        if (tpf != null) {
+            ecc.getExecutorServiceManager().setThreadPoolFactory(tpf);
+        }
+        ProcessorFactory pf = getSingleBeanOfType(registry, 
ProcessorFactory.class);
+        if (pf != null) {
+            ecc.setProcessorFactory(pf);
+        }
+        Debugger debugger = getSingleBeanOfType(registry, Debugger.class);
+        if (debugger != null) {
+            ecc.setDebugger(debugger);
+        }
+        NodeIdFactory nif = getSingleBeanOfType(registry, NodeIdFactory.class);
+        if (nif != null) {
+            ecc.setNodeIdFactory(nif);
+        }
+        MessageHistoryFactory mhf = getSingleBeanOfType(registry, 
MessageHistoryFactory.class);
+        if (mhf != null) {
+            ecc.setMessageHistoryFactory(mhf);
+        }
+        ReactiveExecutor re = getSingleBeanOfType(registry, 
ReactiveExecutor.class);
+        if (re != null) {
+            ecc.setReactiveExecutor(re);
+        }
+        ShutdownStrategy ss = getSingleBeanOfType(registry, 
ShutdownStrategy.class);
+        if (ss != null) {
+            ecc.setShutdownStrategy(ss);
+        }
+        Set<TypeConverters> tcs = registry.findByType(TypeConverters.class);
+        if (!tcs.isEmpty()) {
+            tcs.forEach(t -> 
camelContext.getTypeConverterRegistry().addTypeConverters(t));
+        }
+        Set<EndpointStrategy> ess = 
registry.findByType(EndpointStrategy.class);
+        if (!ess.isEmpty()) {
+            ess.forEach(ecc::registerEndpointCallback);
+        }
+        Set<CamelClusterService> csss = 
registry.findByType(CamelClusterService.class);
+        if (!csss.isEmpty()) {
+            for (CamelClusterService css : csss) {
+                camelContext.addService(css);
+            }
+        }
+        Set<RoutePolicyFactory> rpfs = 
registry.findByType(RoutePolicyFactory.class);
+        if (!rpfs.isEmpty()) {
+            rpfs.forEach(camelContext::addRoutePolicyFactory);
+        }
 
         final Predicate<EventNotifier> containsEventNotifier = 
managementStrategy.getEventNotifiers()::contains;
         registerPropertiesForBeanTypesWithCondition(registry, 
EventNotifier.class, containsEventNotifier.negate(), 
managementStrategy::addEventNotifier);
-
         final Predicate<InterceptStrategy> containsInterceptStrategy = 
camelContext.adapt(ExtendedCamelContext.class).getInterceptStrategies()::contains;
         registerPropertiesForBeanTypesWithCondition(registry, 
InterceptStrategy.class, containsInterceptStrategy.negate(), 
camelContext.adapt(ExtendedCamelContext.class)::addInterceptStrategy);
-
         final Predicate<LifecycleStrategy> containsLifecycleStrategy = 
camelContext.getLifecycleStrategies()::contains;
         registerPropertiesForBeanTypesWithCondition(registry, 
LifecycleStrategy.class, containsLifecycleStrategy.negate(), 
camelContext::addLifecycleStrategy);
+        final Predicate<LogListener> containsLogListener = 
camelContext.adapt(ExtendedCamelContext.class).getLogListeners()::contains;
+        registerPropertiesForBeanTypesWithCondition(registry, 
LogListener.class, containsLogListener.negate(), 
camelContext.adapt(ExtendedCamelContext.class)::addLogListener);
 
         // service registry
         Map<String, ServiceRegistry> serviceRegistries = 
registry.findByTypeWithName(ServiceRegistry.class);
@@ -241,11 +321,15 @@ public final class DefaultConfigurationConfigurer {
             healthCheckRegistry = HealthCheckRegistry.get(camelContext);
             healthCheckRegistry.setCamelContext(camelContext);
         }
-        registerPropertiesForBeanTypes(registry, HealthCheckRepository.class, 
healthCheckRegistry::addRepository);
-        registerPropertyForBeanType(registry, HealthCheckService.class, 
addServiceToContext(camelContext));
+        Set<HealthCheckRepository> hcrs = 
registry.findByType(HealthCheckRepository.class);
+        if (!hcrs.isEmpty()) {
+            hcrs.forEach(healthCheckRegistry::addRepository);
+        }
 
-        final Predicate<LogListener> containsLogListener = 
camelContext.adapt(ExtendedCamelContext.class).getLogListeners()::contains;
-        registerPropertiesForBeanTypesWithCondition(registry, 
LogListener.class, containsLogListener.negate(), 
camelContext.adapt(ExtendedCamelContext.class)::addLogListener);
+        HealthCheckService hcs = getSingleBeanOfType(registry, 
HealthCheckService.class);
+        if (hcs != null) {
+            camelContext.addService(hcs);
+        }
 
         // set the default thread pool profile if defined
         initThreadPoolProfiles(registry, camelContext);

Reply via email to