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 2012/05/23 17:56:22 UTC

svn commit: r1341915 - in /camel/branches/camel-2.9.x: ./ camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/management/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/

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) {
         }
 
     }