You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/06/24 12:34:53 UTC
[camel] branch master updated: CAMEL-13675: camel-main - Optimise
main configurer
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 <cl...@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);