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/09/01 10:36:18 UTC

svn commit: r809887 - in /camel/trunk/camel-core/src/main/java/org/apache/camel: management/DefaultManagementLifecycleStrategy.java management/ManagedManagementStrategy.java spi/ManagementNamingStrategy.java

Author: davsclaus
Date: Tue Sep  1 08:36:18 2009
New Revision: 809887

URL: http://svn.apache.org/viewvc?rev=809887&view=rev
Log:
CAMEL-1933: Overhaul of JMX. ManagementAware is used when applicable.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java?rev=809887&r1=809886&r2=809887&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java Tue Sep  1 08:36:18 2009
@@ -124,7 +124,7 @@
             return;
         }
         try {
-            ManagedComponent mc = new ManagedComponent(name, component);
+            Object mc = getManagedObjectForComponent(name, component);
             getStrategy().manageObject(mc);
         } catch (Exception e) {
             LOG.warn("Could not register Component MBean", e);
@@ -137,13 +137,21 @@
             return;
         }
         try {
-            ManagedComponent mc = new ManagedComponent(name, component);
+            Object mc = getManagedObjectForComponent(name, component);
             getStrategy().unmanageObject(mc);
         } catch (Exception e) {
             LOG.warn("Could not unregister Component MBean", e);
         }
     }
 
+    private Object getManagedObjectForComponent(String name, Component component) {
+        if (component instanceof ManagementAware) {
+            return ((ManagementAware) component).getManagedObject(component);
+        } else {
+            return new ManagedComponent(name, component);
+        }
+    }
+
     /**
      * If the endpoint is an instance of ManagedResource then register it with the
      * mbean server, if it is not then wrap the endpoint in a {@link ManagedEndpoint} and
@@ -159,14 +167,7 @@
         }
 
         try {
-            Object me;
-            if (endpoint instanceof ManagementAware) {
-                me = ((ManagementAware) endpoint).getManagedObject(endpoint);
-            } else if (endpoint instanceof BrowsableEndpoint) {
-                me = new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint);
-            } else {
-                me = new ManagedEndpoint(endpoint);
-            }
+            Object me = getManagedObjectForEndpoint(endpoint);
             getStrategy().manageObject(me);
         } catch (Exception e) {
             LOG.warn("Could not register Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
@@ -181,20 +182,23 @@
         }
 
         try {
-            Object me;
-            if (endpoint instanceof ManagementAware) {
-                me = ((ManagementAware) endpoint).getManagedObject(endpoint);
-            } else if (endpoint instanceof BrowsableEndpoint) {
-                me = new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint);
-            } else {
-                me = new ManagedEndpoint(endpoint);
-            }
+            Object me = getManagedObjectForEndpoint(endpoint);
             getStrategy().unmanageObject(me);
         } catch (Exception e) {
             LOG.warn("Could not unregister Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
         }
     }
 
+    private Object getManagedObjectForEndpoint(Endpoint endpoint) {
+        if (endpoint instanceof ManagementAware) {
+            return ((ManagementAware) endpoint).getManagedObject(endpoint);
+        } else if (endpoint instanceof BrowsableEndpoint) {
+            return new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint);
+        } else {
+            return new ManagedEndpoint(endpoint);
+        }
+    }
+
     public void onServiceAdd(CamelContext context, Service service) {
         // services can by any kind of misc type but also processors
         // so we have special logic when its a processor
@@ -204,16 +208,10 @@
             return;
         }
 
-        Object managedObject;
-        if (service instanceof Tracer) {
-            // special for tracer
-            managedObject = new ManagedTracer(context, (Tracer) service);
-        } else if (service instanceof Processor) {
-            // special for processors
-            managedObject = getManagedObjectForProcessor(context, (Processor) service);
-        } else {
-            // regular for services
-            managedObject = getManagedObjectForService(context, service);
+        Object managedObject = getManagedObjectForService(context, service);
+        if (managedObject == null) {
+            // service should not be managed
+            return;
         }
 
         // skip already managed services, for example if a route has been restarted
@@ -237,17 +235,7 @@
             return;
         }
 
-        Object managedObject;
-        if (service instanceof Tracer) {
-            // special for tracer
-            managedObject = new ManagedTracer(context, (Tracer) service);
-        } else if (service instanceof Processor) {
-            // special for processors
-            managedObject = getManagedObjectForProcessor(context, (Processor) service);
-        } else {
-            // regular for services
-            managedObject = getManagedObjectForService(context, service);
-        }
+        Object managedObject = getManagedObjectForService(context, service);
         if (managedObject != null) {
             try {
                 getStrategy().unmanageObject(managedObject);
@@ -257,7 +245,29 @@
         }
     }
 
-    protected Object getManagedObjectForProcessor(CamelContext context, Processor processor) {
+    @SuppressWarnings("unchecked")
+    private Object getManagedObjectForService(CamelContext context, Service service) {
+        if (service instanceof ManagementAware) {
+            return ((ManagementAware) service).getManagedObject(service);
+        } else if (service instanceof Tracer) {
+            // special for tracer
+            return new ManagedTracer(context, (Tracer) service);
+        } else if (service instanceof Producer) {
+            return new ManagedProducer(context, (Producer) service);
+        } else if (service instanceof ScheduledPollConsumer) {
+                return new ManagedScheduledPollConsumer(context, (ScheduledPollConsumer) service);
+        } else if (service instanceof Consumer) {
+            return new ManagedConsumer(context, (Consumer) service);
+        } else if (service instanceof Processor) {
+            // special for processors
+            return getManagedObjectForProcessor(context, (Processor) service);
+        }
+
+        // not supported
+        return null;
+    }
+
+    private Object getManagedObjectForProcessor(CamelContext context, Processor processor) {
         // a bit of magic here as the processors we want to manage have already been registered
         // in the wrapped processors map when Camel have instrumented the route on route initialization
         // so the idea is now to only manage the processors from the map
@@ -297,19 +307,6 @@
         return new ManagedProcessor(context, processor, definition);
     }
 
-    private Object getManagedObjectForService(CamelContext context, Service service) {
-        if (service instanceof ScheduledPollConsumer) {
-            return new ManagedScheduledPollConsumer(context, (ScheduledPollConsumer) service);
-        } else if (service instanceof Consumer) {
-            return new ManagedConsumer(context, (Consumer) service);
-        } else if (service instanceof Producer) {
-            return new ManagedProducer(context, (Producer) service);
-        }
-
-        // not supported
-        return null;
-    }
-
     public void onRoutesAdd(Collection<Route> routes) {
         // the agent hasn't been started
         if (!initialized) {
@@ -444,6 +441,7 @@
     }
 
     public void stop() throws Exception {
+        initialized = false;
     }
 }
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java?rev=809887&r1=809886&r2=809887&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java Tue Sep  1 08:36:18 2009
@@ -36,7 +36,7 @@
 /**
  * A JMX capable {@link org.apache.camel.spi.ManagementStrategy} that Camel by default uses if possible.
  * <p/>
- * Camel detects whether its possbile to use this JMX capable strategy and if <b>not</b> then Camel
+ * Camel detects whether its possible to use this JMX capable strategy and if <b>not</b> then Camel
  * will fallback to the {@link org.apache.camel.management.DefaultManagementStrategy} instead.
  *
  * @see org.apache.camel.spi.ManagementStrategy

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java?rev=809887&r1=809886&r2=809887&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java Tue Sep  1 08:36:18 2009
@@ -28,6 +28,8 @@
 import org.apache.camel.model.ProcessorDefinition;
 
 /**
+ * Strategy for computing {@link ObjectName} names for the various beans that Camel register for management.
+ *
  * @version $Revision$
  */
 public interface ManagementNamingStrategy {