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 2009/08/26 14:21:06 UTC

svn commit: r807977 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/management/ components/camel-spring/src/main/java/org/apache/camel/spring/

Author: davsclaus
Date: Wed Aug 26 12:21:05 2009
New Revision: 807977

URL: http://svn.apache.org/viewvc?rev=807977&view=rev
Log:
CAMEL-1937: support multiple management strategies.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=807977&r1=807976&r2=807977&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Wed Aug 26 12:21:05 2009
@@ -140,7 +140,7 @@
             try {
                 LOG.info("JMX enabled. Using DefaultManagedLifecycleStrategy.");
                 managementStrategy = new ManagedManagementStrategy(new DefaultInstrumentationAgent());
-                lifecycleStrategies.add(new DefaultManagedLifecycleStrategy(managementStrategy));
+                lifecycleStrategies.add(new DefaultManagedLifecycleStrategy(this));
                 registered = true;
             } catch (NoClassDefFoundError e) {
                 // if we can't instantiate the JMX enabled strategy then fallback to default

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java?rev=807977&r1=807976&r2=807977&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java Wed Aug 26 12:21:05 2009
@@ -75,15 +75,11 @@
     private static final String MANAGED_RESOURCE_CLASSNAME = "org.springframework.jmx.export.annotation.ManagedResource";
     private final Map<Processor, KeyValueHolder<ProcessorDefinition, InstrumentationProcessor>> wrappedProcessors =
             new HashMap<Processor, KeyValueHolder<ProcessorDefinition, InstrumentationProcessor>>();
-    private final ManagementStrategy strategy;
+    private final CamelContext context;
     private boolean initialized;
 
-    public DefaultManagedLifecycleStrategy() {
-        strategy = new ManagedManagementStrategy();
-    }
-
-    public DefaultManagedLifecycleStrategy(ManagementStrategy strategy) {
-        this.strategy = strategy;
+    public DefaultManagedLifecycleStrategy(CamelContext context) {
+        this.context = context;
     }
 
     public void onContextStart(CamelContext context) {
@@ -91,10 +87,10 @@
             initialized = true;
 
             // call addService so that context will handle lifecycle on the strategy
-            context.addService(strategy);
+            context.addService(getStrategy());
 
             ManagedCamelContext mc = new ManagedCamelContext(context);
-            strategy.manageObject(mc);
+            getStrategy().manageObject(mc);
 
         } catch (Exception e) {
             // must rethrow to allow CamelContext fallback to non JMX agent to allow
@@ -111,8 +107,8 @@
         try {
             ManagedCamelContext mc = new ManagedCamelContext(context);
             // the context could have been removed already
-            if (strategy.isManaged(null, mc)) {
-                strategy.unmanageObject(mc);
+            if (getStrategy().isManaged(null, mc)) {
+                getStrategy().unmanageObject(mc);
             }
         } catch (Exception e) {
             LOG.warn("Could not unregister CamelContext MBean", e);
@@ -126,7 +122,7 @@
         }
         try {
             ManagedComponent mc = new ManagedComponent(name, component);
-            strategy.manageObject(mc);
+            getStrategy().manageObject(mc);
         } catch (Exception e) {
             LOG.warn("Could not register Component MBean", e);
         }
@@ -139,7 +135,7 @@
         }
         try {
             ManagedComponent mc = new ManagedComponent(name, component);
-            strategy.unmanageObject(mc);
+            getStrategy().unmanageObject(mc);
         } catch (Exception e) {
             LOG.warn("Could not unregister Component MBean", e);
         }
@@ -191,7 +187,7 @@
             } else {
                 me = new ManagedEndpoint(endpoint);
             }
-            strategy.unmanageObject(me);
+            getStrategy().unmanageObject(me);
         } catch (Exception e) {
             LOG.warn("Could not unregister Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
         }
@@ -209,7 +205,7 @@
             Method method = annotation.getClass().getMethod("objectName");
             String name = (String) method.invoke(annotation);
             ObjectName objectName = ObjectName.getInstance(name);
-            strategy.manageNamedObject(endpoint, objectName);
+            getStrategy().manageNamedObject(endpoint, objectName);
         } catch (Exception e) {
             if (LOG.isTraceEnabled()) {
                 LOG.trace("objectName method not present on endpoint, wrapping endpoint in ManagedEndpoint instead: " + endpoint);
@@ -226,7 +222,7 @@
             } else {
                 me = new ManagedEndpoint(endpoint);
             }
-            strategy.manageObject(me);
+            getStrategy().manageObject(me);
         } catch (Exception e) {
             LOG.warn("Could not register Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
         }
@@ -251,7 +247,7 @@
             managedObject = getManagedObjectForService(context, service);
         }
         try {
-            strategy.manageObject(managedObject);
+            getStrategy().manageObject(managedObject);
         } catch (Exception e) {
             LOG.warn("Could not register service: " + service + " as Service MBean.", e);
         }
@@ -272,7 +268,7 @@
         }
         if (managedObject != null) {
             try {
-                strategy.unmanageObject(managedObject);
+                getStrategy().unmanageObject(managedObject);
             } catch (Exception e) {
                 LOG.warn("Could not unregister service: " + service + " as Service MBean.", e);
             }
@@ -337,7 +333,7 @@
         }
 
         for (Route route : routes) {
-            ManagedRoute mr = new ManagedRoute(strategy, route);
+            ManagedRoute mr = new ManagedRoute(getStrategy(), route);
 
             // get the wrapped instrumentation processor from this route
             // and set me as the counter
@@ -351,7 +347,7 @@
             }
 
             try {
-                strategy.manageObject(mr);
+                getStrategy().manageObject(mr);
             } catch (JMException e) {
                 LOG.warn("Could not register Route MBean", e);
             } catch (Exception e) {
@@ -367,9 +363,9 @@
         }
 
         for (Route route : routes) {
-            ManagedRoute mr = new ManagedRoute(strategy, route);
+            ManagedRoute mr = new ManagedRoute(getStrategy(), route);
             try {
-                strategy.unmanageObject(mr);
+                getStrategy().unmanageObject(mr);
             } catch (Exception e) {
                 LOG.warn("Could not unregister Route MBean", e);
             }
@@ -421,7 +417,7 @@
 
         // okay this is a processor we would like to manage so create the
         // performance counter that is the base for processors
-        ManagedPerformanceCounter pc = new ManagedPerformanceCounter(strategy);
+        ManagedPerformanceCounter pc = new ManagedPerformanceCounter(getStrategy());
 
         // and add it as a a registered counter that will be used lazy when Camel
         // does the instrumentation of the route and adds the InstrumentationProcessor
@@ -451,20 +447,22 @@
         }
 
         // only if custom id assigned
-        if (strategy.isOnlyManageProcessorWithCustomId()) {
+        if (getStrategy().isOnlyManageProcessorWithCustomId()) {
             return processor.hasCustomIdAssigned();
         }
 
         // use customer filter
-        return strategy.manageProcessor(processor);
+        return getStrategy().manageProcessor(processor);
+    }
+
+    private ManagementStrategy getStrategy() {
+        return context.getManagementStrategy();
     }
 
     public void start() throws Exception {
-        strategy.start();
     }
 
     public void stop() throws Exception {
-        strategy.stop();
     }
 }
 

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=807977&r1=807976&r2=807977&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Wed Aug 26 12:21:05 2009
@@ -432,7 +432,8 @@
         if (camelJMXAgent != null && camelJMXAgent.isDisabled()) {
             LOG.info("JMXAgent disabled");
             // clear the existing lifecycle strategies define by the DefaultCamelContext constructor
-            getContext().setLifecycleStrategies(new ArrayList<LifecycleStrategy>());
+            getContext().getLifecycleStrategies().clear();
+            // no need to add a lifecycle strategy as we do not need one as JMX is disabled
             getContext().setManagementStrategy(new DefaultManagementStrategy());
         } else if (camelJMXAgent != null) {
             LOG.info("JMXAgent enabled: " + camelJMXAgent);
@@ -449,8 +450,8 @@
             ManagementStrategy managementStrategy = new ManagedManagementStrategy(agent);
             getContext().setManagementStrategy(managementStrategy);
             // clear the existing lifecycle strategies define by the DefaultCamelContext constructor
-            getContext().setLifecycleStrategies(new ArrayList<LifecycleStrategy>());
-            getContext().addLifecycleStrategy(new DefaultManagedLifecycleStrategy(managementStrategy));
+            getContext().getLifecycleStrategies().clear();
+            getContext().addLifecycleStrategy(new DefaultManagedLifecycleStrategy(getContext()));
             getContext().getManagementStrategy().onlyManageProcessorWithCustomId(camelJMXAgent.getOnlyRegisterProcessorWithCustomId());
         }
     }