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());
         }
     }


Reply via email to