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