Author: davsclaus Date: Wed May 23 15:56:21 2012 New Revision: 1341915 URL: http://svn.apache.org/viewvc?rev=1341915&view=rev Log: CAMEL-5299: Fixed camel-blueprint to not inject CamelContextAware as the context is not ready yet. Improved startup of management using event notifiers, to inject camel context if aware.
Modified: camel/branches/camel-2.9.x/ (props changed) camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java camel/branches/camel-2.9.x/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Merged /camel/trunk:r1341908 Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=1341915&r1=1341914&r2=1341915&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Wed May 23 15:56:21 2012 @@ -1459,7 +1459,12 @@ public class DefaultCamelContext extends } // start management strategy before lifecycles are started - getManagementStrategy().start(); + ManagementStrategy managementStrategy = getManagementStrategy(); + // inject CamelContext if aware + if (managementStrategy instanceof CamelContextAware) { + ((CamelContextAware) managementStrategy).setCamelContext(this); + } + ServiceHelper.startService(managementStrategy); // start lifecycle strategies ServiceHelper.startServices(lifecycleStrategies); Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java?rev=1341915&r1=1341914&r2=1341915&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java Wed May 23 15:56:21 2012 @@ -32,6 +32,7 @@ import org.apache.camel.spi.ManagementAg import org.apache.camel.spi.ManagementNamingStrategy; import org.apache.camel.spi.ManagementObjectStrategy; import org.apache.camel.spi.ManagementStrategy; +import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.ServiceHelper; /** @@ -58,6 +59,13 @@ public class DefaultManagementStrategy i private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.All; private CamelContext camelContext; + public DefaultManagementStrategy() { + } + + public DefaultManagementStrategy(CamelContext camelContext) { + this.camelContext = camelContext; + } + public List<EventNotifier> getEventNotifiers() { return eventNotifiers; } @@ -182,9 +190,21 @@ public class DefaultManagementStrategy i } public void start() throws Exception { + ObjectHelper.notNull(camelContext, "CamelContext"); + if (eventNotifiers != null) { - ServiceHelper.startServices(eventNotifiers); + for (EventNotifier notifier : eventNotifiers) { + + // inject CamelContext if the service is aware + if (notifier instanceof CamelContextAware) { + CamelContextAware aware = (CamelContextAware) notifier; + aware.setCamelContext(camelContext); + } + + ServiceHelper.startService(notifier); + } } + if (managementAgent != null) { managementAgent.start(); // set the naming strategy using the domain name from the agent Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java?rev=1341915&r1=1341914&r2=1341915&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java Wed May 23 15:56:21 2012 @@ -54,11 +54,13 @@ public class ManagedManagementStrategy e public ManagedManagementStrategy() { } - public ManagedManagementStrategy(CamelContext camelContext) { - this(new DefaultManagementAgent(camelContext)); + @Deprecated + public ManagedManagementStrategy(ManagementAgent managementAgent) { + setManagementAgent(managementAgent); } - public ManagedManagementStrategy(ManagementAgent managementAgent) { + public ManagedManagementStrategy(CamelContext camelContext, ManagementAgent managementAgent) { + setCamelContext(camelContext); setManagementAgent(managementAgent); } Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java?rev=1341915&r1=1341914&r2=1341915&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java Wed May 23 15:56:21 2012 @@ -36,7 +36,7 @@ public class ManagementStrategyFactory { } else { try { log.info("JMX enabled. Using ManagedManagementStrategy."); - answer = new ManagedManagementStrategy(new DefaultManagementAgent(context)); + answer = new ManagedManagementStrategy(context, new DefaultManagementAgent(context)); // must start it to ensure JMX works and can load needed Spring JARs ServiceHelper.startService(answer); // prefer to have it at first strategy @@ -48,7 +48,7 @@ public class ManagementStrategyFactory { } if (answer == null) { - answer = new DefaultManagementStrategy(); + answer = new DefaultManagementStrategy(context); } return answer; } Modified: camel/branches/camel-2.9.x/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java?rev=1341915&r1=1341914&r2=1341915&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java (original) +++ camel/branches/camel-2.9.x/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java Wed May 23 15:56:21 2012 @@ -45,7 +45,6 @@ import org.apache.aries.blueprint.mutabl import org.apache.aries.blueprint.mutable.MutableRefMetadata; import org.apache.aries.blueprint.mutable.MutableReferenceMetadata; import org.apache.camel.CamelContext; -import org.apache.camel.CamelContextAware; import org.apache.camel.EndpointInject; import org.apache.camel.Produce; import org.apache.camel.blueprint.BlueprintCamelContext; @@ -521,17 +520,9 @@ public class CamelNamespaceHandler imple public Object beforeInit(Object bean, String beanName, BeanCreator beanCreator, BeanMetadata beanMetadata) { injectFields(bean, beanName); injectMethods(bean, beanName); - if (bean instanceof CamelContextAware) { - ((CamelContextAware) bean).setCamelContext(getCamelContext()); - } return bean; } - @Override - public CamelContext getCamelContext() { - return (CamelContext) blueprintContainer.getComponentInstance(camelContextName); - } - /** * A strategy method to allow implementations to perform some custom JBI * based injection of the POJO @@ -616,14 +607,14 @@ public class CamelNamespaceHandler imple } } - public Object afterInit(Object o, String s, BeanCreator beanCreator, BeanMetadata beanMetadata) { - return o; + public Object afterInit(Object bean, String beanName, BeanCreator beanCreator, BeanMetadata beanMetadata) { + return bean; } - public void beforeDestroy(Object o, String s) { + public void beforeDestroy(Object bean, String beanName) { } - public void afterDestroy(Object o, String s) { + public void afterDestroy(Object bean, String beanName) { } }