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/07 14:04:42 UTC

svn commit: r812099 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/management/ camel-core/src/main/java/org/apache/camel/management/mbean/ camel-core/src/main/java/org/apache/camel/spi/ camel-cor...

Author: davsclaus
Date: Mon Sep  7 12:04:41 2009
New Revision: 812099

URL: http://svn.apache.org/viewvc?rev=812099&view=rev
Log:
CAMEL-1992: Added mangement statistics level option to preset stats enabled when starting. All, RoutesOnly and Off.

Added:
    camel/trunk/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java   (with props)
    camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java   (contents, props changed)
      - copied, changed from r812052, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java   (with props)
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/
      - copied from r812050, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/managment/
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java   (with props)
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java   (with props)
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml   (with props)
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml
      - copied, changed from r812050, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/disableJmxConfig.xml
Removed:
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/managment/
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/DefaultManagementStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
    camel/trunk/camel-core/src/main/resources/org/apache/camel/jaxb.index
    camel/trunk/components/camel-spring/pom.xml
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelJMXAgentDefinition.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/JmxInstrumentationWithConnectorTest.java

Added: camel/trunk/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java?rev=812099&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java Mon Sep  7 12:04:41 2009
@@ -0,0 +1,31 @@
+/**
+ * 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;
+
+import javax.xml.bind.annotation.XmlEnum;
+
+/**
+ * Level of granularity for performance statistics enabled
+ *
+ * @version $Revision$
+ */
+@XmlEnum
+public enum ManagementStatisticsLevel {
+
+    All, RoutesOnly, Off
+
+}

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

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

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=812099&r1=812098&r2=812099&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 Mon Sep  7 12:04:41 2009
@@ -60,6 +60,7 @@
 import org.apache.camel.spi.BrowsableEndpoint;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.ManagementAware;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.KeyValueHolder;
@@ -413,6 +414,9 @@
         // 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(getStrategy());
+        // set statistics enabled depending on the option
+        boolean enabled = context.getManagementStrategy().getStatisticsLevel() == ManagementStatisticsLevel.All;
+        pc.setStatisticsEnabled(enabled);
 
         // 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

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java?rev=812099&r1=812098&r2=812099&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java Mon Sep  7 12:04:41 2009
@@ -23,6 +23,7 @@
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ManagementAgent;
 import org.apache.camel.spi.ManagementNamingStrategy;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.spi.ManagementStrategy;
 import org.fusesource.commons.management.Statistic;
 
@@ -46,6 +47,7 @@
     private ManagementNamingStrategy managementNamingStrategy;
     private boolean onlyManageProcessorWithCustomId;
     private ManagementAgent managementAgent;
+    private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.All;
 
     public EventNotifier getEventNotifier() {
         return eventNotifier;
@@ -131,6 +133,14 @@
         return null;
     }
 
+    public void setSatisticsLevel(ManagementStatisticsLevel level) {
+        this.statisticsLevel = level;
+    }
+
+    public ManagementStatisticsLevel getStatisticsLevel() {
+        return statisticsLevel;
+    }
+
     public void start() throws Exception {
         if (managementAgent != null) {
             managementAgent.start();

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java?rev=812099&r1=812098&r2=812099&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java Mon Sep  7 12:04:41 2009
@@ -22,6 +22,7 @@
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.impl.ServiceSupport;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.springframework.jmx.export.annotation.ManagedAttribute;
 import org.springframework.jmx.export.annotation.ManagedResource;
 
@@ -43,6 +44,9 @@
         this.processor = processor;
         this.definition = definition;
         this.id = definition.idOrCreate(context.getNodeIdFactory());
+
+        boolean enabled = context.getManagementStrategy().getStatisticsLevel() == ManagementStatisticsLevel.All;
+        setStatisticsEnabled(enabled);
     }
 
     public CamelContext getContext() {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java?rev=812099&r1=812098&r2=812099&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java Mon Sep  7 12:04:41 2009
@@ -20,6 +20,7 @@
 import org.apache.camel.Endpoint;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.spi.ManagementStrategy;
 import org.springframework.jmx.export.annotation.ManagedAttribute;
 import org.springframework.jmx.export.annotation.ManagedOperation;
@@ -38,6 +39,8 @@
         this.route = route;
         this.context = context;
         this.description = route.toString();
+        boolean enabled = context.getManagementStrategy().getStatisticsLevel() != ManagementStatisticsLevel.Off;
+        setStatisticsEnabled(enabled);
     }
 
     public Route getRoute() {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java?rev=812099&r1=812098&r2=812099&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java Mon Sep  7 12:04:41 2009
@@ -17,6 +17,7 @@
 package org.apache.camel.spi;
 
 import org.apache.camel.Service;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.model.ProcessorDefinition;
 
 /**
@@ -114,4 +115,20 @@
      */
     boolean isOnlyManageProcessorWithCustomId();
 
+    /**
+     * Sets the statistics level
+     * <p/>
+     * Default is {@link org.apache.camel.ManagementStatisticsLevel#All}
+     *
+     * @param level the new level
+     */
+    void setSatisticsLevel(ManagementStatisticsLevel level);
+
+    /**
+     * Gets the statistics level
+     *
+     * @return the level
+     */
+    ManagementStatisticsLevel getStatisticsLevel();
+
 }

Modified: camel/trunk/camel-core/src/main/resources/org/apache/camel/jaxb.index
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/org/apache/camel/jaxb.index?rev=812099&r1=812098&r2=812099&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/org/apache/camel/jaxb.index (original)
+++ camel/trunk/camel-core/src/main/resources/org/apache/camel/jaxb.index Mon Sep  7 12:04:41 2009
@@ -15,4 +15,5 @@
 ## limitations under the License.
 ## ------------------------------------------------------------------------
 ExchangePattern
-LoggingLevel
\ No newline at end of file
+LoggingLevel
+ManagementStatisticsLevel
\ No newline at end of file

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java (from r812052, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java&r1=812052&r2=812099&rev=812099&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java Mon Sep  7 12:04:41 2009
@@ -24,11 +24,12 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.ManagementStatisticsLevel;
 
 /**
  * @version $Revision$
  */
-public class ManagedStatisticsDisabledTest extends ContextTestSupport {
+public class ManagedStatisticsLevelOffTest extends ContextTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
@@ -36,11 +37,14 @@
         DefaultManagementNamingStrategy naming = (DefaultManagementNamingStrategy) context.getManagementStrategy().getManagementNamingStrategy();
         naming.setHostName("localhost");
         naming.setDomainName("org.apache.camel");
+
+        // disable it by default
+        context.getManagementStrategy().setSatisticsLevel(ManagementStatisticsLevel.Off);
         return context;
     }
 
     @SuppressWarnings("unchecked")
-    public void testManageStatisticsDisabled() throws Exception {
+    public void testManageStatisticsLevelDisabled() throws Exception {
         template.sendBody("direct:start", "Hello World");
         template.sendBody("direct:start", "Bye World");
 
@@ -54,35 +58,15 @@
 
         // use route to get the total time
         Long completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
-        assertEquals(2, completed.longValue());
-        
-        // disable statistics
-        mbeanServer.setAttribute(on, new Attribute("StatisticsEnabled", false));
-
-        // send in another message
-        template.sendBody("direct:start", "Goodday World");
-
-        // should stay at 2
-        completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
-        assertEquals(2, completed.longValue());
+        assertEquals(0, completed.longValue());
 
-        // enable statistics
+        // disable statistics
         mbeanServer.setAttribute(on, new Attribute("StatisticsEnabled", true));
 
         // send in another message
-        template.sendBody("direct:start", "Hi World");
-
-        // should now be 3
-        completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
-        assertEquals(3, completed.longValue());
-
-        // now reset it
-        mbeanServer.invoke(on, "reset", null, null);
-
-        // send in another message
-        template.sendBody("direct:start", "Hallo World");
+        template.sendBody("direct:start", "Goodday World");
 
-        // should now be 1
+        // should be 1
         completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
         assertEquals(1, completed.longValue());
     }

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

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

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java?rev=812099&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelRoutesOnlyTest.java Mon Sep  7 12:04:41 2009
@@ -0,0 +1,92 @@
+/**
+ * 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;
+
+import java.util.Set;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.ManagementStatisticsLevel;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class ManagedStatisticsLevelRoutesOnlyTest extends ContextTestSupport {
+
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext context = super.createCamelContext();
+        DefaultManagementNamingStrategy naming = (DefaultManagementNamingStrategy) context.getManagementStrategy().getManagementNamingStrategy();
+        naming.setHostName("localhost");
+        naming.setDomainName("org.apache.camel");
+
+        // only routes
+        context.getManagementStrategy().setSatisticsLevel(ManagementStatisticsLevel.RoutesOnly);
+        return context;
+    }
+
+    @SuppressWarnings("unchecked")
+    public void testManageStatisticsRoutesOnly() throws Exception {
+        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "Bye World");
+
+        // get the stats for the route
+        MBeanServer mbeanServer = context.getManagementStrategy().getManagementAgent().getMBeanServer();
+
+        Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=routes,*"), null);
+        assertEquals(1, set.size());
+
+        ObjectName on = set.iterator().next();
+
+        set = mbeanServer.queryNames(new ObjectName("*:type=processors,*"), null);
+        assertEquals(1, set.size());
+
+        ObjectName on2 = set.iterator().next();
+
+        // route should have stats enabled
+        Long completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
+        assertEquals(2, completed.longValue());
+
+        // but not processor
+        Long completed2 = (Long) mbeanServer.getAttribute(on2, "ExchangesCompleted");
+        assertEquals(0, completed2.longValue());
+
+        // send in another message
+        template.sendBody("direct:start", "Goodday World");
+
+        // should be 3
+        completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
+        assertEquals(3, completed.longValue());
+
+        completed2 = (Long) mbeanServer.getAttribute(on2, "ExchangesCompleted");
+        assertEquals(0, completed2.longValue());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").to("mock:result");
+            }
+        };
+    }
+
+}
\ No newline at end of file

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

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

Modified: camel/trunk/components/camel-spring/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/pom.xml?rev=812099&r1=812098&r2=812099&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/pom.xml (original)
+++ camel/trunk/components/camel-spring/pom.xml Mon Sep  7 12:04:41 2009
@@ -192,6 +192,8 @@
                   <fileset dir="${basedir}/../../camel-core/src/main/java">
                     <include name="org/apache/camel/model/**/*.java" />
                     <include name="org/apache/camel/ExchangePattern.java" />
+                    <include name="org/apache/camel/LoggingLevel.java" />
+                    <include name="org/apache/camel/ManagementStatisticsLevel.java" />
                     <include name="org/apache/camel/package-info.java" />
                   </fileset>
                 </copy>

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=812099&r1=812098&r2=812099&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 Sep  7 12:04:41 2009
@@ -456,10 +456,13 @@
 
             ManagementStrategy managementStrategy = new ManagedManagementStrategy(agent);
             getContext().setManagementStrategy(managementStrategy);
+
             // clear the existing lifecycle strategies define by the DefaultCamelContext constructor
             getContext().getLifecycleStrategies().clear();
             getContext().addLifecycleStrategy(new DefaultManagementLifecycleStrategy(getContext()));
+            // set additional configuration from camelJMXAgent
             getContext().getManagementStrategy().onlyManageProcessorWithCustomId(camelJMXAgent.getOnlyRegisterProcessorWithCustomId());
+            getContext().getManagementStrategy().setSatisticsLevel(camelJMXAgent.getStatisticsLevel());
         }
     }
 

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelJMXAgentDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelJMXAgentDefinition.java?rev=812099&r1=812098&r2=812099&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelJMXAgentDefinition.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelJMXAgentDefinition.java Mon Sep  7 12:04:41 2009
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.spring;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -22,6 +21,7 @@
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.model.IdentifiedType;
 
 /**
@@ -87,6 +87,12 @@
     @XmlAttribute(required = false)
     private Boolean usePlatformMBeanServer = Boolean.TRUE;
 
+    /**
+     * Level of granularity for performance statistics enabled
+     */
+    @XmlAttribute(required = false)
+    private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.All;
+
     public Integer getConnectorPort() {
         return connectorPort;
     }
@@ -159,6 +165,14 @@
         disabled = value != null ? value : Boolean.FALSE;
     }
 
+    public ManagementStatisticsLevel getStatisticsLevel() {
+        return statisticsLevel;
+    }
+
+    public void setStatisticsLevel(ManagementStatisticsLevel statisticsLevel) {
+        this.statisticsLevel = statisticsLevel;
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
@@ -182,6 +196,9 @@
         if (mbeanObjectDomainName != null) {
             sb.append(", mbeanObjectDomainName=").append(mbeanObjectDomainName);
         }
+        if (statisticsLevel != null) {
+            sb.append(", statisticsLevel=").append(statisticsLevel);
+        }
         sb.append("]");
         return sb.toString();
     }

Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/JmxInstrumentationWithConnectorTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/JmxInstrumentationWithConnectorTest.java?rev=812099&r1=812050&r2=812099&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/JmxInstrumentationWithConnectorTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/JmxInstrumentationWithConnectorTest.java Mon Sep  7 12:04:41 2009
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spring.managment;
+package org.apache.camel.spring.management;
 
 import org.apache.camel.management.DefaultManagementAgent;
 import org.apache.camel.spi.ManagementAgent;

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java?rev=812099&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java Mon Sep  7 12:04:41 2009
@@ -0,0 +1,32 @@
+/**
+ * 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.spring.management;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.management.ManagedStatisticsLevelOffTest;
+import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
+
+/**
+ * @version $Revision$
+ */
+public class SpringManagedStatisticsLevelOffTest extends ManagedStatisticsLevelOffTest {
+
+    protected CamelContext createCamelContext() throws Exception {
+        return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml");
+    }
+
+}

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java?rev=812099&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java Mon Sep  7 12:04:41 2009
@@ -0,0 +1,32 @@
+/**
+ * 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.spring.management;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.management.ManagedStatisticsLevelRoutesOnlyTest;
+import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
+
+/**
+ * @version $Revision$
+ */
+public class SpringManagedStatisticsLevelRoutesOnlyTest extends ManagedStatisticsLevelRoutesOnlyTest {
+
+    protected CamelContext createCamelContext() throws Exception {
+        return createSpringCamelContext(this, "org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml");
+    }
+
+}
\ No newline at end of file

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelRoutesOnlyTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml?rev=812099&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml (added)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml Mon Sep  7 12:04:41 2009
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+
+    <!-- START SNIPPET: example -->
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+        <jmxAgent id="agent" statisticsLevel="RoutesOnly"/>
+
+        <route>
+            <from uri="direct:start"/>
+            <to uri="mock:result"/>
+        </route>
+    </camelContext>
+    <!-- END SNIPPET: example -->
+
+</beans>

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml (from r812050, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/disableJmxConfig.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/disableJmxConfig.xml&r1=812050&r2=812099&rev=812099&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/disableJmxConfig.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml Mon Sep  7 12:04:41 2009
@@ -22,15 +22,15 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-  <!-- START SNIPPET: example -->
-  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-    <jmxAgent id="agent" disabled="true"/> 
-      
-    <route>
-      <from uri="seda:start"/>
-      <to uri="mock:result"/>
-    </route>
-  </camelContext>
-  <!-- END SNIPPET: example -->
+    <!-- START SNIPPET: example -->
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+        <jmxAgent id="agent" statisticsLevel="Off"/>
+
+        <route>
+            <from uri="direct:start"/>
+            <to uri="mock:result"/>
+        </route>
+    </camelContext>
+    <!-- END SNIPPET: example -->
 
 </beans>