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/31 11:03:48 UTC

svn commit: r809509 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/component/bean/ camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/management/ camel-core/src/main/java/org/apache/camel/management/...

Author: davsclaus
Date: Mon Aug 31 09:03:47 2009
New Revision: 809509

URL: http://svn.apache.org/viewvc?rev=809509&view=rev
Log:
CAMEL-1933: Overhaul of JMX. Improved management of tracer. Added managed scheduled consumer. Restart with executors works better now. Renamed some management classes.

Added:
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java   (contents, props changed)
      - copied, changed from r809474, camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationAgent.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java   (contents, props changed)
      - copied, changed from r809474, camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java   (with props)
    camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java
      - copied, changed from r809474, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java
Removed:
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationAgent.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Synchronization.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/managment/JmxInstrumentationWithConnectorTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java Mon Aug 31 09:03:47 2009
@@ -39,7 +39,6 @@
 import org.apache.camel.OutHeaders;
 import org.apache.camel.Properties;
 import org.apache.camel.Property;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.language.LanguageAnnotation;
 import org.apache.camel.spi.Registry;
@@ -49,7 +48,6 @@
 
 import static org.apache.camel.util.ExchangeHelper.convertToType;
 
-
 /**
  * Represents the metadata about a bean type created via a combination of
  * introspection and annotations together with some useful sensible defaults
@@ -430,7 +428,7 @@
             return possibles.get(0);
         } else if (possibles.isEmpty()) {
             if (LOG.isTraceEnabled()) {
-                LOG.trace("No poosible methods trying to convert body to parameter types");
+                LOG.trace("No possible methods trying to convert body to parameter types");
             }
 
             // lets try converting

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java Mon Aug 31 09:03:47 2009
@@ -66,7 +66,7 @@
     }
 
     public void process(Exchange exchange) throws Exception {
-        // do we have am explict method name we always should invoke
+        // do we have an explicit method name we always should invoke
         boolean isExplicitMethod = ObjectHelper.isNotEmpty(method);
 
         Object bean = beanHolder.getBean();
@@ -74,7 +74,7 @@
         BeanInfo beanInfo = beanHolder.getBeanInfo();
 
         // do we have a custom adapter for this POJO to a Processor
-        // should not be invoced if an explict method has been set
+        // should not be invoced if an explicit method has been set
         Processor processor = getProcessor();
         if (!isExplicitMethod && processor != null) {
             if (LOG.isTraceEnabled()) {
@@ -109,7 +109,7 @@
             invocation = beanInfo.createInvocation(bean, exchange);
         }
         if (invocation == null) {
-            throw new IllegalStateException("No method invocation could be created, no maching method could be found on: " + bean);
+            throw new IllegalStateException("No method invocation could be created, no matching method could be found on: " + bean);
         } else {
             // set method name if not explicit given
             if (method == null) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java Mon Aug 31 09:03:47 2009
@@ -59,7 +59,7 @@
         if (fault != null) {
             if (fault instanceof RuntimeCamelException) {
                 // if the inner cause is a runtime exception we can throw it directly
-                if (((RuntimeCamelException) fault).getCause() instanceof RuntimeException) {
+                if (fault.getCause() instanceof RuntimeException) {
                     throw (RuntimeException) ((RuntimeCamelException) fault).getCause();
                 }
                 throw (RuntimeCamelException) fault;

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=809509&r1=809508&r2=809509&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 Mon Aug 31 09:03:47 2009
@@ -45,8 +45,8 @@
 import org.apache.camel.TypeConverter;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.impl.converter.DefaultTypeConverter;
-import org.apache.camel.management.DefaultInstrumentationAgent;
-import org.apache.camel.management.DefaultManagedLifecycleStrategy;
+import org.apache.camel.management.DefaultManagementAgent;
+import org.apache.camel.management.DefaultManagementLifecycleStrategy;
 import org.apache.camel.management.DefaultManagementStrategy;
 import org.apache.camel.management.JmxSystemPropertyKeys;
 import org.apache.camel.management.ManagedManagementStrategy;
@@ -140,8 +140,8 @@
             boolean registered = false;
             try {
                 LOG.info("JMX enabled. Using DefaultManagedLifecycleStrategy.");
-                managementStrategy = new ManagedManagementStrategy(new DefaultInstrumentationAgent());
-                lifecycleStrategies.add(new DefaultManagedLifecycleStrategy(this));
+                managementStrategy = new ManagedManagementStrategy(new DefaultManagementAgent());
+                lifecycleStrategies.add(new DefaultManagementLifecycleStrategy(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/impl/DefaultComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java Mon Aug 31 09:03:47 2009
@@ -184,6 +184,8 @@
     protected void doStop() throws Exception {
         if (executorService != null) {
             executorService.shutdown();
+            // must null it so we can restart
+            executorService = null;
         }
     }
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java Mon Aug 31 09:03:47 2009
@@ -53,7 +53,6 @@
 
     public DefaultProducerTemplate(CamelContext context) {
         this.context = context;
-        this.executor = ExecutorServiceHelper.newScheduledThreadPool(DEFAULT_THREADPOOL_SIZE, "ProducerTemplate", true);
         this.producerCache = new ProducerCache(context.getProducerServicePool());
     }
 
@@ -670,4 +669,21 @@
         return executor.submit(task);
     }
 
+    @Override
+    public void start() throws Exception {
+        super.start();
+        if (executor == null) {
+            executor = ExecutorServiceHelper.newScheduledThreadPool(DEFAULT_THREADPOOL_SIZE, "ProducerTemplate", true);
+        }
+    }
+
+    @Override
+    public void stop() throws Exception {
+        super.stop();
+        if (executor != null) {
+            executor.shutdown();
+            // must null it so we can restart
+            executor = null;
+        }
+    }
 }

Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java (from r809474, camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationAgent.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationAgent.java&r1=809474&r2=809509&rev=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultInstrumentationAgent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java Mon Aug 31 09:03:47 2009
@@ -50,14 +50,14 @@
 /**
  * Default implementation of the Camel JMX service agent
  */
-public class DefaultInstrumentationAgent extends ServiceSupport implements ManagementAgent {
+public class DefaultManagementAgent extends ServiceSupport implements ManagementAgent {
 
     public static final String DEFAULT_DOMAIN = "org.apache.camel";
     public static final String DEFAULT_HOST = "localhost";
     public static final int DEFAULT_REGISTRY_PORT = 1099;
     public static final int DEFAULT_CONNECTION_PORT = -1;
     public static final String DEFAULT_SERVICE_URL_PATH = "/jmxrmi/camel";
-    private static final transient Log LOG = LogFactory.getLog(DefaultInstrumentationAgent.class);
+    private static final transient Log LOG = LogFactory.getLog(DefaultManagementAgent.class);
 
     private ExecutorService executorService;
     private MBeanServer server;

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java (from r809474, 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/DefaultManagementLifecycleStrategy.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java&r1=809474&r2=809509&rev=809509&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/DefaultManagementLifecycleStrategy.java Mon Aug 31 09:03:47 2009
@@ -33,6 +33,7 @@
 import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.impl.EventDrivenConsumerRoute;
+import org.apache.camel.impl.ScheduledPollConsumer;
 import org.apache.camel.management.mbean.ManagedBrowsableEndpoint;
 import org.apache.camel.management.mbean.ManagedCamelContext;
 import org.apache.camel.management.mbean.ManagedComponent;
@@ -43,6 +44,7 @@
 import org.apache.camel.management.mbean.ManagedProcessor;
 import org.apache.camel.management.mbean.ManagedProducer;
 import org.apache.camel.management.mbean.ManagedRoute;
+import org.apache.camel.management.mbean.ManagedScheduledPollConsumer;
 import org.apache.camel.management.mbean.ManagedSendProcessor;
 import org.apache.camel.management.mbean.ManagedThrottler;
 import org.apache.camel.management.mbean.ManagedTracer;
@@ -73,16 +75,16 @@
  * @see org.apache.camel.spi.ManagementStrategy
  * @version $Revision$
  */
-public class DefaultManagedLifecycleStrategy implements LifecycleStrategy, Service {
+public class DefaultManagementLifecycleStrategy implements LifecycleStrategy, Service {
 
-    private static final Log LOG = LogFactory.getLog(DefaultManagedLifecycleStrategy.class);
+    private static final Log LOG = LogFactory.getLog(DefaultManagementLifecycleStrategy.class);
     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 CamelContext context;
     private boolean initialized;
 
-    public DefaultManagedLifecycleStrategy(CamelContext context) {
+    public DefaultManagementLifecycleStrategy(CamelContext context) {
         this.context = context;
     }
 
@@ -336,7 +338,9 @@
     }
 
     private Object getManagedObjectForService(CamelContext context, Service service) {
-        if (service instanceof Consumer) {
+        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);

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

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=809509&r1=809508&r2=809509&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 Mon Aug 31 09:03:47 2009
@@ -47,7 +47,7 @@
     private static final Log LOG = LogFactory.getLog(ManagedManagementStrategy.class);
 
     public ManagedManagementStrategy() {
-        this(new DefaultInstrumentationAgent());
+        this(new DefaultManagementAgent());
     }
 
     public ManagedManagementStrategy(ManagementAgent managementAgent) {

Added: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java?rev=809509&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java Mon Aug 31 09:03:47 2009
@@ -0,0 +1,82 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.management.mbean;
+
+import java.util.concurrent.TimeUnit;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.ScheduledPollConsumer;
+import org.springframework.jmx.export.annotation.ManagedAttribute;
+import org.springframework.jmx.export.annotation.ManagedResource;
+
+/**
+ * @version $Revision$
+ */
+@ManagedResource(description = "Managed Scheduled Polling Consumer")
+public class ManagedScheduledPollConsumer extends ManagedConsumer {
+
+    private ScheduledPollConsumer consumer;
+
+    public ManagedScheduledPollConsumer(CamelContext context, ScheduledPollConsumer consumer) {
+        super(context, consumer);
+        this.consumer = consumer;
+    }
+
+    public ScheduledPollConsumer getConsumer() {
+        return consumer;
+    }
+
+    @ManagedAttribute(description = "Scheduled Delay")
+    public long getDelay() {
+        return getConsumer().getDelay();
+    }
+
+    @ManagedAttribute(description = "Scheduled Delay")
+    public void setDelay(long delay) {
+        getConsumer().setDelay(delay);
+    }
+
+    @ManagedAttribute(description = "Scheduled Initial Delay")
+    public long getInitialDelay() {
+        return getConsumer().getInitialDelay();
+    }
+
+    @ManagedAttribute(description = "Scheduled Initial Delay")
+    public void setInitialDelay(long initialDelay) {
+        getConsumer().setInitialDelay(initialDelay);
+    }
+
+    @ManagedAttribute(description = "Scheduled Fixed Delay")
+    public boolean isUseFixedDelay() {
+        return getConsumer().isUseFixedDelay();
+    }
+
+    @ManagedAttribute(description = "Scheduled Fixed Delay")
+    public void setUseFixedDelay(boolean useFixedDelay) {
+        getConsumer().setUseFixedDelay(useFixedDelay);
+    }
+
+    @ManagedAttribute(description = "Scheduled TimeUnit")
+    public String getTimeUnit() {
+        return getConsumer().getTimeUnit().name();
+    }
+
+    @ManagedAttribute(description = "Scheduled TimeUnit")
+    public void setTimeUnit(String timeUnit) {
+        getConsumer().setTimeUnit(TimeUnit.valueOf(timeUnit));
+    }
+}

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedScheduledPollConsumer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java Mon Aug 31 09:03:47 2009
@@ -17,7 +17,9 @@
 package org.apache.camel.management.mbean;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.processor.interceptor.Tracer;
+import org.apache.camel.util.ObjectHelper;
 import org.springframework.jmx.export.annotation.ManagedAttribute;
 import org.springframework.jmx.export.annotation.ManagedResource;
 
@@ -25,13 +27,12 @@
  * @version $Revision$
  */
 @ManagedResource(description = "Managed Tracer")
-public class ManagedTracer extends ManagedPerformanceCounter {
+public class ManagedTracer {
 
     private CamelContext camelContext;
     private Tracer tracer;
 
     public ManagedTracer(CamelContext camelContext, Tracer tracer) {
-        super(camelContext.getManagementStrategy());
         this.camelContext = camelContext;
         this.tracer = tracer;
     }
@@ -44,17 +45,349 @@
         return tracer;
     }
 
-    @ManagedAttribute(description = "Enabled")
+    @ManagedAttribute(description = "Tracer enabled")
     public boolean getEnabled() {
         return tracer.isEnabled();
     }
 
-    @ManagedAttribute(description = "Enabled")
+    @ManagedAttribute(description = "Tracer enabled")
     public void setEnabled(boolean enabled) {
         tracer.setEnabled(enabled);
     }
 
-    // TODO: add management for formatter etc.
+    @ManagedAttribute(description = "Additional destination Uri")
+    public String getDestinationUri() {
+        return tracer.getDestinationUri();
+    }
+
+    @ManagedAttribute(description = "Additional destination Uri")
+    public void setDestinationUri(String uri) {
+        if (ObjectHelper.isEmpty(uri)) {
+            tracer.setDestinationUri(null);
+        } else {
+            tracer.setDestinationUri(uri);
+        }
+    }
+
+    @ManagedAttribute(description = "Logging Name")
+    public String getLogName() {
+        return tracer.getLogName();
+    }
+
+    @ManagedAttribute(description = "Using Jpa")
+    public boolean getUseJpa() {
+        return tracer.isUseJpa();
+    }
+
+    @ManagedAttribute(description = "Logging Name")
+    public void setLogName(String logName) {
+        tracer.setLogName(logName);
+    }
+
+    @ManagedAttribute(description = "Logging Level")
+    public String getLogLevel() {
+        return tracer.getLogLevel().name();
+    }
+
+    @ManagedAttribute(description = "Logging Level")
+    public void setLogLevel(String logLevel) {
+        tracer.setLogLevel(LoggingLevel.valueOf(logLevel));
+    }
+
+    @ManagedAttribute(description = "Log Stacktrace")
+    public boolean getLogStackTrace() {
+        return tracer.isLogStackTrace();
+    }
+
+    @ManagedAttribute(description = "Log Stacktrace")
+    public void setLogStackTrace(boolean logStackTrace) {
+        tracer.setLogStackTrace(logStackTrace);
+    }
+
+    @ManagedAttribute(description = "Trace Interceptors")
+    public boolean getTraceInterceptors() {
+        return tracer.isTraceInterceptors();
+    }
+
+    @ManagedAttribute(description = "Trace Interceptors")
+    public void setTraceInterceptors(boolean traceInterceptors) {
+        tracer.setTraceInterceptors(traceInterceptors);
+    }
+
+    @ManagedAttribute(description = "Trace Exceptions")
+    public boolean getTraceExceptions() {
+        return tracer.isTraceExceptions();
+    }
 
+    @ManagedAttribute(description = "Trace Exceptions")
+    public void setTraceExceptions(boolean traceExceptions) {
+        tracer.setTraceExceptions(traceExceptions);
+    }
+
+    @ManagedAttribute(description = "Trace Out Exchanges")
+    public boolean getTraceOutExchanges() {
+        return tracer.isTraceOutExchanges();
+    }
+
+    @ManagedAttribute(description = "Trace Out Exchanges")
+    public void setTraceOutExchanges(boolean traceOutExchanges) {
+        tracer.setTraceOutExchanges(traceOutExchanges);
+    }
+
+    @ManagedAttribute(description = "Formatter show body")
+    public boolean getFormatterShowBody() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowBody();
+    }
+
+    @ManagedAttribute(description = "Formatter show body")
+    public void setFormatterShowBody(boolean showBody) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowBody(showBody);
+    }
+
+    @ManagedAttribute(description = "Formatter show body type")
+    public boolean getFormatterShowBodyType() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowOutBodyType();
+    }
+
+    @ManagedAttribute(description = "Formatter show body type")
+    public void setFormatterShowBodyType(boolean showBodyType) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowBodyType(showBodyType);
+    }
+
+    @ManagedAttribute(description = "Formatter show out body")
+    public boolean getFormatterShowOutBody() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowOutBody();
+    }
+
+    @ManagedAttribute(description = "Formatter show out body")
+    public void setFormatterShowOutBody(boolean showOutBody) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowOutBody(showOutBody);
+    }
+
+    @ManagedAttribute(description = "Formatter show out body type")
+    public boolean getFormatterShowOutBodyType() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowOutBodyType();
+    }
+
+    @ManagedAttribute(description = "Formatter show out body type")
+    public void setFormatterShowOutBodyType(boolean showOutBodyType) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowOutBodyType(showOutBodyType);
+    }
+
+    @ManagedAttribute(description = "Formatter show breadcrumb")
+    public boolean getFormatterShowBreadCrumb() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowBreadCrumb();
+    }
 
+    @ManagedAttribute(description = "Formatter show breadcrumb")
+    public void setFormatterShowBreadCrumb(boolean showBreadCrumb) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowBreadCrumb(showBreadCrumb);
+    }
+
+    @ManagedAttribute(description = "Formatter show exchange id")
+    public boolean getFormatterShowExchangeId() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowExchangeId();
+    }
+
+    @ManagedAttribute(description = "Formatter show exchange id")
+    public void setFormatterShowExchangeId(boolean showExchangeId) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowExchangeId(showExchangeId);
+    }
+
+    @ManagedAttribute(description = "Formatter show headers")
+    public boolean getFormatterShowHeaders() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowHeaders();
+    }
+
+    @ManagedAttribute(description = "Formatter show headers")
+    public void setFormatterShowHeaders(boolean showHeaders) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowHeaders(showHeaders);
+    }
+
+    @ManagedAttribute(description = "Formatter show out headers")
+    public boolean getFormatterShowOutHeaders() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowOutHeaders();
+    }
+
+    @ManagedAttribute(description = "Formatter show out headers")
+    public void setFormatterShowOutHeaders(boolean showOutHeaders) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowOutHeaders(showOutHeaders);
+    }
+
+    @ManagedAttribute(description = "Formatter show properties")
+    public boolean getFormatterShowProperties() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowProperties();
+    }
+
+    @ManagedAttribute(description = "Formatter show properties")
+    public void setFormatterShowProperties(boolean showProperties) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowProperties(showProperties);
+    }
+
+    @ManagedAttribute(description = "Formatter show node")
+    public boolean getFormatterShowNode() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowNode();
+    }
+
+    @ManagedAttribute(description = "Formatter show node")
+    public void setFormatterShowNode(boolean showNode) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowNode(showNode);
+    }
+
+    @ManagedAttribute(description = "Formatter show exchange pattern")
+    public boolean getFormatterShowExchangePattern() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowExchangePattern();
+    }
+
+    @ManagedAttribute(description = "Formatter show exchange pattern")
+    public void setFormatterShowExchangePattern(boolean showExchangePattern) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowExchangePattern(showExchangePattern);
+    }
+
+    @ManagedAttribute(description = "Formatter show exception")
+    public boolean getFormatterShowException() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowException();
+    }
+
+    @ManagedAttribute(description = "Formatter show exception")
+    public void setFormatterShowException(boolean showException) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowException(showException);
+    }
+
+    @ManagedAttribute(description = "Formatter breadcrumb length")
+    public int getFormatterBreadCrumbLength() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return 0;
+        }
+        return tracer.getDefaultTraceFormatter().getBreadCrumbLength();
+    }
+
+    @ManagedAttribute(description = "Formatter breadcrumb length")
+    public void setFormatterBreadCrumbLength(int breadCrumbLength) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setBreadCrumbLength(breadCrumbLength);
+    }
+
+    @ManagedAttribute(description = "Formatter show short exchange id")
+    public boolean getFormatterShowShortExchangeId() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return false;
+        }
+        return tracer.getDefaultTraceFormatter().isShowShortExchangeId();
+    }
+
+    @ManagedAttribute(description = "Formatter show short exchange id")
+    public void setFormatterShowShortExchangeId(boolean showShortExchangeId) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setShowShortExchangeId(showShortExchangeId);
+    }
+
+    @ManagedAttribute(description = "Formatter node length")
+    public int getFormatterNodeLength() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return 0;
+        }
+        return tracer.getDefaultTraceFormatter().getNodeLength();
+    }
+
+    @ManagedAttribute(description = "Formatter node length")
+    public void setFormatterNodeLength(int nodeLength) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setNodeLength(nodeLength);
+    }
+
+    @ManagedAttribute(description = "Formatter max chars")
+    public int getFormatterMaxChars() {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return 0;
+        }
+        return tracer.getDefaultTraceFormatter().getMaxChars();
+    }
+
+    @ManagedAttribute(description = "Formatter max chars")
+    public void setFormatterMaxChars(int maxChars) {
+        if (tracer.getDefaultTraceFormatter() == null) {
+            return;
+        }
+        tracer.getDefaultTraceFormatter().setMaxChars(maxChars);
+    }
+    
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java Mon Aug 31 09:03:47 2009
@@ -241,6 +241,7 @@
         if (executorService != null) {
             executorService.shutdown();
             executorService.awaitTermination(0, TimeUnit.SECONDS);
+            executorService = null;
         }
         ServiceHelper.stopServices(processors);
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java Mon Aug 31 09:03:47 2009
@@ -59,6 +59,8 @@
     protected void doStop() throws Exception {
         if (executorService != null) {
             executorService.shutdown();
+            // must null it so we can restart
+            executorService = null;
         }
         ServiceHelper.stopService(processor);
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java Mon Aug 31 09:03:47 2009
@@ -112,6 +112,8 @@
         super.doStop();
         if (executorService != null) {
             executorService.shutdown();
+            // must null it so we can restart
+            executorService = null;
         }
     }
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WireTapProcessor.java Mon Aug 31 09:03:47 2009
@@ -63,6 +63,8 @@
     protected void doStop() throws Exception {
         if (executorService != null) {
             executorService.shutdown();
+            // must null it so we can restart
+            executorService = null;
         }
         super.doStop();
     }
@@ -144,7 +146,7 @@
     }
 
     public ExecutorService getExecutorService() {
-        if (executorService == null) {
+        if (executorService == null || executorService.isShutdown()) {
             executorService = createExecutorService();
         }
         return executorService;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java Mon Aug 31 09:03:47 2009
@@ -64,20 +64,7 @@
         this.tracer = tracer;
         this.node = node;
         this.formatter = formatter;
-
-        // set logger to use
-        if (tracer.getLogName() != null) {
-            logger = new Logger(LogFactory.getLog(tracer.getLogName()), this);
-        } else {
-            // use default logger
-            logger = new Logger(LogFactory.getLog(TraceInterceptor.class), this);
-        }
-
-        // set logging level if provided
-        if (tracer.getLogLevel() != null) {
-            logger.setLevel(tracer.getLogLevel());
-        }
-
+        this.logger = tracer.getLogger(this);
         if (tracer.getFormatter() != null) {
             this.formatter = tracer.getFormatter();
         }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java Mon Aug 31 09:03:47 2009
@@ -25,7 +25,10 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Service;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.Logger;
+import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.InterceptStrategy;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * An interceptor strategy for tracing routes
@@ -36,8 +39,8 @@
 
     private TraceFormatter formatter = new DefaultTraceFormatter();
     private boolean enabled = true;
-    private String logName;
-    private LoggingLevel logLevel;
+    private String logName = Tracer.class.getName();
+    private LoggingLevel logLevel = LoggingLevel.INFO;
     private Predicate traceFilter;
     private boolean traceInterceptors;
     private boolean traceExceptions = true;
@@ -46,6 +49,7 @@
     private String destinationUri;
     private Endpoint destination;
     private boolean useJpa;
+    private Logger logger;
 
     /**
      * Creates a new tracer.
@@ -78,6 +82,20 @@
         return null;
     }
 
+    /**
+     * Gets the logger to be used for tracers that can format and log a given exchange.
+     *
+     * @param formatter the exchange formatter
+     * @return the logger to use
+     */
+    public synchronized Logger getLogger(ExchangeFormatter formatter) {
+        if (logger == null) {
+            logger = new Logger(LogFactory.getLog(getLogName()), formatter);
+            logger.setLevel(getLogLevel());
+        }
+        return logger;
+    }
+
     public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition definition,
                                                  Processor target, Processor nextTarget) throws Exception {
         // Force the creation of an id, otherwise the id is not available when the trace formatter is
@@ -140,6 +158,10 @@
      */
     public void setLogLevel(LoggingLevel logLevel) {
         this.logLevel = logLevel;
+        // update logger if its in use
+        if (logger != null) {
+            logger.setLevel(logLevel);
+        }
     }
 
     public boolean isTraceExceptions() {
@@ -174,6 +196,10 @@
      */
     public void setLogName(String logName) {
         this.logName = logName;
+        // update logger if its in use
+        if (logger != null) {
+            logger.setLogName(logName);
+        }
     }
 
     /**

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Synchronization.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Synchronization.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Synchronization.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Synchronization.java Mon Aug 31 09:03:47 2009
@@ -38,7 +38,7 @@
     /**
      * Called when the processing of the message exchange has failed for some reason.
      * The exception which caused the problem is in {@link Exchange#getException()} and
-     * there could be a fault message via {@link Exchange#getFault()}
+     * there could be a fault message via {@link org.apache.camel.Message#isFault()}
      *
      * @param exchange the exchange being processed
      */

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java Mon Aug 31 09:03:47 2009
@@ -31,7 +31,7 @@
  */
 public class JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest extends ContextTestSupport {
 
-    protected String domainName = DefaultInstrumentationAgent.DEFAULT_DOMAIN;
+    protected String domainName = DefaultManagementAgent.DEFAULT_DOMAIN;
     protected MBeanServer server;
 
     public void testCustomId() throws Exception {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java Mon Aug 31 09:03:47 2009
@@ -38,7 +38,7 @@
  */
 public class JmxInstrumentationUsingDefaultsTest extends ContextTestSupport {
 
-    protected String domainName = DefaultInstrumentationAgent.DEFAULT_DOMAIN;
+    protected String domainName = DefaultManagementAgent.DEFAULT_DOMAIN;
     protected MBeanServerConnection mbsc;
     protected long sleepForConnection;
 

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java (from r809474, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java&r1=809474&r2=809509&rev=809509&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedScheduledPollConsumerTest.java Mon Aug 31 09:03:47 2009
@@ -17,6 +17,7 @@
 package org.apache.camel.management;
 
 import java.util.Set;
+import javax.management.Attribute;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
@@ -28,7 +29,7 @@
 /**
  * @version $Revision$
  */
-public class ManagedUnregisterConsumerTest extends ContextTestSupport {
+public class ManagedScheduledPollConsumerTest extends ContextTestSupport {
 
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = new DefaultCamelContext();
@@ -39,7 +40,7 @@
     }
 
     @SuppressWarnings("unchecked")
-    public void testUnregisterConsumer() throws Exception {
+    public void testScheduledPollConsumer() throws Exception {
         MBeanServer mbeanServer = context.getManagementStrategy().getManagementAgent().getMBeanServer();
 
         Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=consumers,*"), null);
@@ -49,10 +50,24 @@
 
         assertTrue("Should be registered", mbeanServer.isRegistered(on));
         String uri = (String) mbeanServer.getAttribute(on, "EndpointUri");
-        assertEquals("direct://start", uri);
+        assertEquals("file://target/foo?delay=4000", uri);
 
-        context.stop();
+        Long delay = (Long) mbeanServer.getAttribute(on, "Delay");
+        assertEquals(4000, delay.longValue());
+
+        // stop it
+        mbeanServer.invoke(on, "stop", null, null);
+
+        // change delay
+        mbeanServer.setAttribute(on, new Attribute("Delay", 2000));
 
+        // start it
+        mbeanServer.invoke(on, "start", null, null);
+
+        delay = (Long) mbeanServer.getAttribute(on, "Delay");
+        assertEquals(2000, delay.longValue());
+
+        context.stop();
         assertFalse("Should no longer be registered", mbeanServer.isRegistered(on));
     }
 
@@ -61,9 +76,9 @@
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:start").to("mock:result");
+                from("file://target/foo?delay=4000").to("mock:result");
             }
         };
     }
 
-}
+}
\ No newline at end of file

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=809509&r1=809508&r2=809509&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 Mon Aug 31 09:03:47 2009
@@ -34,8 +34,8 @@
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.scan.PatternBasedPackageScanFilter;
-import org.apache.camel.management.DefaultInstrumentationAgent;
-import org.apache.camel.management.DefaultManagedLifecycleStrategy;
+import org.apache.camel.management.DefaultManagementAgent;
+import org.apache.camel.management.DefaultManagementLifecycleStrategy;
 import org.apache.camel.management.DefaultManagementStrategy;
 import org.apache.camel.management.ManagedManagementStrategy;
 import org.apache.camel.model.FromDefinition;
@@ -80,6 +80,7 @@
 import org.springframework.context.event.ContextRefreshedEvent;
 
 import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
+
 /**
  * A Spring {@link FactoryBean} to create and initialize a
  * {@link SpringCamelContext} and install routes either explicitly configured in
@@ -443,7 +444,7 @@
             getContext().setManagementStrategy(new DefaultManagementStrategy());
         } else if (camelJMXAgent != null) {
             LOG.info("JMXAgent enabled: " + camelJMXAgent);
-            DefaultInstrumentationAgent agent = new DefaultInstrumentationAgent();
+            DefaultManagementAgent agent = new DefaultManagementAgent();
             agent.setConnectorPort(camelJMXAgent.getConnectorPort());
             agent.setCreateConnector(camelJMXAgent.isCreateConnector());
             agent.setMBeanObjectDomainName(camelJMXAgent.getMbeanObjectDomainName());
@@ -457,7 +458,7 @@
             getContext().setManagementStrategy(managementStrategy);
             // clear the existing lifecycle strategies define by the DefaultCamelContext constructor
             getContext().getLifecycleStrategies().clear();
-            getContext().addLifecycleStrategy(new DefaultManagedLifecycleStrategy(getContext()));
+            getContext().addLifecycleStrategy(new DefaultManagementLifecycleStrategy(getContext()));
             getContext().getManagementStrategy().onlyManageProcessorWithCustomId(camelJMXAgent.getOnlyRegisterProcessorWithCustomId());
         }
     }

Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/managment/JmxInstrumentationWithConnectorTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/managment/JmxInstrumentationWithConnectorTest.java?rev=809509&r1=809508&r2=809509&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/managment/JmxInstrumentationWithConnectorTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/managment/JmxInstrumentationWithConnectorTest.java Mon Aug 31 09:03:47 2009
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.spring.managment;
 
-import org.apache.camel.management.DefaultInstrumentationAgent;
+import org.apache.camel.management.DefaultManagementAgent;
 import org.apache.camel.spi.ManagementAgent;
 import org.apache.camel.spring.EndpointReferenceTest;
 import org.springframework.context.support.AbstractXmlApplicationContext;
@@ -25,7 +25,7 @@
 public class JmxInstrumentationWithConnectorTest extends EndpointReferenceTest {
 
     public void testJmxConfiguration() throws Exception {
-        ManagementAgent agent = getMandatoryBean(DefaultInstrumentationAgent.class, "agent");
+        ManagementAgent agent = getMandatoryBean(DefaultManagementAgent.class, "agent");
         assertNotNull("SpringInstrumentationAgent must be configured for JMX support", agent);
         assertNotNull("MBeanServer must be configured for JMX support", agent.getMBeanServer());
         assertEquals("org.apache.camel.test", agent.getMBeanServer().getDefaultDomain());