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 2015/07/26 13:36:17 UTC

[4/8] camel git commit: CAMEL-9015: JMX Agent should always let JVM system properties take precedence. Also aling that all the options is configured on the agent and not a mix of strategty/agent.

CAMEL-9015: JMX Agent should always let JVM system properties take precedence. Also aling that all the options is configured on the agent and not a mix of strategty/agent.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/488f3912
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/488f3912
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/488f3912

Branch: refs/heads/master
Commit: 488f39126a6ba0ab238e53361bce0880f39b3b88
Parents: c483de7
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jul 26 09:37:35 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 26 13:34:12 2015 +0200

----------------------------------------------------------------------
 .../apache/camel/ManagementStatisticsLevel.java |  10 +-
 .../impl/DefaultManagementNameStrategy.java     |   4 +-
 .../org/apache/camel/impl/ProducerCache.java    |   2 +-
 .../management/DefaultManagementAgent.java      | 109 +++++++++++++++----
 .../DefaultManagementLifecycleStrategy.java     |  11 +-
 .../management/DefaultManagementStrategy.java   |  25 ++---
 .../camel/management/JmxSystemPropertyKeys.java |   6 +
 .../management/mbean/ManagedProcessor.java      |   3 +-
 .../org/apache/camel/spi/ManagementAgent.java   |  49 +++++++++
 .../apache/camel/spi/ManagementStrategy.java    |  28 +++--
 ...onOnlyRegisterProcessorWithCustomIdTest.java |   2 +-
 .../management/ManagedDynamicRouterTest.java    |   3 +-
 .../camel/management/ManagedEnricherTest.java   |   3 +-
 .../management/ManagedRecipientListTest.java    |   3 +-
 .../ManagedRouteLoadstatisticsTest.java         |   6 +-
 .../management/ManagedRoutingSlipTest.java      |   3 +-
 .../ManagedSendDynamicProcessorTest.java        |   3 +-
 .../camel/management/ManagedWireTapTest.java    |   3 +-
 18 files changed, 202 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java b/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
index 730f433..cc02bbe 100644
--- a/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
+++ b/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
@@ -26,6 +26,14 @@ import javax.xml.bind.annotation.XmlEnum;
 @XmlEnum
 public enum ManagementStatisticsLevel {
 
-    All, RoutesOnly, Off
+    Extended, Default, RoutesOnly, Off;
+
+    public boolean isDefaultOrExtended() {
+        return ordinal() == Default.ordinal() || ordinal() == Extended.ordinal();
+    }
+
+    public boolean isExtended() {
+        return ordinal() == Extended.ordinal();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementNameStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementNameStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementNameStrategy.java
index 85df49c..87817af 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementNameStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultManagementNameStrategy.java
@@ -43,7 +43,7 @@ public class DefaultManagementNameStrategy implements ManagementNameStrategy {
     private String namePattern;
 
     public DefaultManagementNameStrategy(CamelContext camelContext) {
-        this(camelContext, System.getProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN, "#name#"), "#name#-#counter#");
+        this(camelContext, null, "#name#-#counter#");
     }
 
     public DefaultManagementNameStrategy(CamelContext camelContext, String defaultPattern, String nextPattern) {
@@ -68,7 +68,7 @@ public class DefaultManagementNameStrategy implements ManagementNameStrategy {
             String pattern = getNamePattern();
             if (pattern == null) {
                 // fallback and use the default pattern which is the same name as the CamelContext has been given
-                pattern = defaultPattern;
+                pattern = defaultPattern != null ? defaultPattern : camelContext.getManagementStrategy().getManagementAgent().getManagementNamePattern();
             }
             name = resolveManagementName(pattern, camelContext.getName(), true);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
index b321df2..a78f4dd 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
@@ -81,7 +81,7 @@ public class ProducerCache extends ServiceSupport {
         this.camelContext = camelContext;
         this.pool = producerServicePool;
         this.producers = cache;
-        this.extendedStatistics = camelContext.getManagementStrategy().isExtendedStatisticsEnabled();
+        this.extendedStatistics = camelContext.getManagementStrategy().getManagementAgent().getStatisticsLevel().isExtended();
     }
 
     public boolean isEventNotifierEnabled() {

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
index 433dd21..f6c76a6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
@@ -25,7 +25,9 @@ import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.registry.Registry;
 import java.rmi.server.UnicastRemoteObject;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import javax.management.JMException;
@@ -41,6 +43,7 @@ import javax.management.remote.JMXServiceURL;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.spi.ManagementAgent;
 import org.apache.camel.spi.ManagementMBeanAssembler;
 import org.apache.camel.support.ServiceSupport;
@@ -67,18 +70,21 @@ public class DefaultManagementAgent extends ServiceSupport implements Management
     private JMXConnectorServer cs;
     private Registry registry;
 
-    private Integer registryPort;
-    private Integer connectorPort;
-    private String mBeanServerDefaultDomain;
-    private String mBeanObjectDomainName;
-    private String serviceUrlPath;
+    private Integer registryPort = DEFAULT_REGISTRY_PORT;
+    private Integer connectorPort = DEFAULT_CONNECTION_PORT;
+    private String mBeanServerDefaultDomain = DEFAULT_DOMAIN;
+    private String mBeanObjectDomainName = DEFAULT_DOMAIN;
+    private String serviceUrlPath = DEFAULT_SERVICE_URL_PATH;
     private Boolean usePlatformMBeanServer = true;
-    private Boolean createConnector;
-    private Boolean onlyRegisterProcessorWithCustomId;
-    private Boolean registerAlways;
+    private Boolean createConnector = false;
+    private Boolean onlyRegisterProcessorWithCustomId = false;
+    private Boolean loadStatisticsEnabled = false;
+    private Boolean registerAlways = false;
     private Boolean registerNewRoutes = true;
-    private Boolean mask;
-    private Boolean includeHostName;
+    private Boolean mask = true;
+    private Boolean includeHostName = false;
+    private String managementNamePattern = "#name#";
+    private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.Default;
 
     public DefaultManagementAgent() {
     }
@@ -87,46 +93,77 @@ public class DefaultManagementAgent extends ServiceSupport implements Management
         this.camelContext = camelContext;
     }
 
-    protected void finalizeSettings() {
-        if (registryPort == null) {
-            registryPort = Integer.getInteger(JmxSystemPropertyKeys.REGISTRY_PORT, DEFAULT_REGISTRY_PORT);
+    protected void finalizeSettings() throws Exception {
+        // JVM system properties take precedence over any configuration
+        Map<String, Object> values = new LinkedHashMap<String, Object>();
+
+        if (System.getProperty(JmxSystemPropertyKeys.REGISTRY_PORT) != null) {
+            registryPort = Integer.getInteger(JmxSystemPropertyKeys.REGISTRY_PORT);
+            values.put(JmxSystemPropertyKeys.REGISTRY_PORT, registryPort);
         }
-        if (connectorPort == null) {
-            connectorPort = Integer.getInteger(JmxSystemPropertyKeys.CONNECTOR_PORT, DEFAULT_CONNECTION_PORT);
+        if (System.getProperty(JmxSystemPropertyKeys.CONNECTOR_PORT) != null) {
+            connectorPort = Integer.getInteger(JmxSystemPropertyKeys.CONNECTOR_PORT);
+            values.put(JmxSystemPropertyKeys.CONNECTOR_PORT, connectorPort);
         }
-        if (mBeanServerDefaultDomain == null) {
-            mBeanServerDefaultDomain = System.getProperty(JmxSystemPropertyKeys.DOMAIN, DEFAULT_DOMAIN);
+        if (System.getProperty(JmxSystemPropertyKeys.DOMAIN) != null) {
+            mBeanServerDefaultDomain = System.getProperty(JmxSystemPropertyKeys.DOMAIN);
+            values.put(JmxSystemPropertyKeys.DOMAIN, mBeanServerDefaultDomain);
         }
-        if (mBeanObjectDomainName == null) {
-            mBeanObjectDomainName = System.getProperty(JmxSystemPropertyKeys.MBEAN_DOMAIN, DEFAULT_DOMAIN);
+        if (System.getProperty(JmxSystemPropertyKeys.MBEAN_DOMAIN) != null) {
+            mBeanObjectDomainName = System.getProperty(JmxSystemPropertyKeys.MBEAN_DOMAIN);
+            values.put(JmxSystemPropertyKeys.MBEAN_DOMAIN, mBeanObjectDomainName);
         }
-        if (serviceUrlPath == null) {
-            serviceUrlPath = System.getProperty(JmxSystemPropertyKeys.SERVICE_URL_PATH, DEFAULT_SERVICE_URL_PATH);
+        if (System.getProperty(JmxSystemPropertyKeys.SERVICE_URL_PATH) != null) {
+            serviceUrlPath = System.getProperty(JmxSystemPropertyKeys.SERVICE_URL_PATH);
+            values.put(JmxSystemPropertyKeys.SERVICE_URL_PATH, serviceUrlPath);
         }
-        if (createConnector == null) {
+        if (System.getProperty(JmxSystemPropertyKeys.CREATE_CONNECTOR) != null) {
             createConnector = Boolean.getBoolean(JmxSystemPropertyKeys.CREATE_CONNECTOR);
+            values.put(JmxSystemPropertyKeys.CREATE_CONNECTOR, createConnector);
         }
-        if (onlyRegisterProcessorWithCustomId == null) {
+        if (System.getProperty(JmxSystemPropertyKeys.ONLY_REGISTER_PROCESSOR_WITH_CUSTOM_ID) != null) {
             onlyRegisterProcessorWithCustomId = Boolean.getBoolean(JmxSystemPropertyKeys.ONLY_REGISTER_PROCESSOR_WITH_CUSTOM_ID);
+            values.put(JmxSystemPropertyKeys.ONLY_REGISTER_PROCESSOR_WITH_CUSTOM_ID, onlyRegisterProcessorWithCustomId);
         }
-        // "Use platform mbean server" is true by default
         if (System.getProperty(JmxSystemPropertyKeys.USE_PLATFORM_MBS) != null) {
             usePlatformMBeanServer = Boolean.getBoolean(JmxSystemPropertyKeys.USE_PLATFORM_MBS);
+            values.put(JmxSystemPropertyKeys.USE_PLATFORM_MBS, usePlatformMBeanServer);
         }
         if (System.getProperty(JmxSystemPropertyKeys.REGISTER_ALWAYS) != null) {
             registerAlways = Boolean.getBoolean(JmxSystemPropertyKeys.REGISTER_ALWAYS);
+            values.put(JmxSystemPropertyKeys.REGISTER_ALWAYS, registerAlways);
         }
         if (System.getProperty(JmxSystemPropertyKeys.REGISTER_NEW_ROUTES) != null) {
             registerNewRoutes = Boolean.getBoolean(JmxSystemPropertyKeys.REGISTER_NEW_ROUTES);
+            values.put(JmxSystemPropertyKeys.REGISTER_NEW_ROUTES, registerNewRoutes);
         }
         if (System.getProperty(JmxSystemPropertyKeys.MASK) != null) {
             mask = Boolean.getBoolean(JmxSystemPropertyKeys.MASK);
+            values.put(JmxSystemPropertyKeys.MASK, mask);
         }
         if (System.getProperty(JmxSystemPropertyKeys.INCLUDE_HOST_NAME) != null) {
             includeHostName = Boolean.getBoolean(JmxSystemPropertyKeys.INCLUDE_HOST_NAME);
+            values.put(JmxSystemPropertyKeys.INCLUDE_HOST_NAME, includeHostName);
         }
         if (System.getProperty(JmxSystemPropertyKeys.CREATE_CONNECTOR) != null) {
             createConnector = Boolean.getBoolean(JmxSystemPropertyKeys.CREATE_CONNECTOR);
+            values.put(JmxSystemPropertyKeys.CREATE_CONNECTOR, createConnector);
+        }
+        if (System.getProperty(JmxSystemPropertyKeys.LOAD_STATISTICS_ENABLED) != null) {
+            loadStatisticsEnabled = Boolean.getBoolean(JmxSystemPropertyKeys.LOAD_STATISTICS_ENABLED);
+            values.put(JmxSystemPropertyKeys.LOAD_STATISTICS_ENABLED, loadStatisticsEnabled);
+        }
+        if (System.getProperty(JmxSystemPropertyKeys.STATISTICS_LEVEL) != null) {
+            statisticsLevel = camelContext.getTypeConverter().mandatoryConvertTo(ManagementStatisticsLevel.class, System.getProperty(JmxSystemPropertyKeys.STATISTICS_LEVEL));
+            values.put(JmxSystemPropertyKeys.STATISTICS_LEVEL, statisticsLevel);
+        }
+        if (System.getProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN) != null) {
+            managementNamePattern = System.getProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN);
+            values.put(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN, managementNamePattern);
+        }
+
+        if (!values.isEmpty()) {
+            LOG.info("ManagementAgent detected JVM system properties: {}", values);
         }
     }
 
@@ -234,6 +271,30 @@ public class DefaultManagementAgent extends ServiceSupport implements Management
         this.includeHostName = includeHostName;
     }
 
+    public String getManagementNamePattern() {
+        return managementNamePattern;
+    }
+
+    public void setManagementNamePattern(String managementNamePattern) {
+        this.managementNamePattern = managementNamePattern;
+    }
+
+    public Boolean getLoadStatisticsEnabled() {
+        return loadStatisticsEnabled;
+    }
+
+    public void setLoadStatisticsEnabled(Boolean loadStatisticsEnabled) {
+        this.loadStatisticsEnabled = loadStatisticsEnabled;
+    }
+
+    public ManagementStatisticsLevel getStatisticsLevel() {
+        return statisticsLevel;
+    }
+
+    public void setStatisticsLevel(ManagementStatisticsLevel statisticsLevel) {
+        this.statisticsLevel = statisticsLevel;
+    }
+
     public CamelContext getCamelContext() {
         return camelContext;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
index 33d713b..7d0f922 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
@@ -758,7 +758,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         // that then delegates to the real mbean which we register later in the onServiceAdd method
         DelegatePerformanceCounter pc = new DelegatePerformanceCounter();
         // set statistics enabled depending on the option
-        boolean enabled = camelContext.getManagementStrategy().getStatisticsLevel() == ManagementStatisticsLevel.All;
+        boolean enabled = camelContext.getManagementStrategy().getManagementAgent().getStatisticsLevel().isDefaultOrExtended();
         pc.setStatisticsEnabled(enabled);
 
         // and add it as a a registered counter that will be used lazy when Camel
@@ -793,7 +793,9 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         }
 
         // only if custom id assigned
-        if (getManagementStrategy().isOnlyManageProcessorWithCustomId()) {
+        boolean only = getManagementStrategy().getManagementAgent().getOnlyRegisterProcessorWithCustomId() != null
+                && getManagementStrategy().getManagementAgent().getOnlyRegisterProcessorWithCustomId();
+        if (only) {
             return processor.hasCustomIdAssigned();
         }
 
@@ -908,8 +910,9 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement
         @Override
         public void onCamelContextStarted(CamelContext context, boolean alreadyStarted) throws Exception {
             // we are disabled either if configured explicit, or if level is off
-            boolean disabled = !camelContext.getManagementStrategy().isLoadStatisticsEnabled()
-                    || camelContext.getManagementStrategy().getStatisticsLevel() == ManagementStatisticsLevel.Off;
+            boolean load = camelContext.getManagementStrategy().getManagementAgent().getLoadStatisticsEnabled() != null
+                    && camelContext.getManagementStrategy().getManagementAgent().getLoadStatisticsEnabled();
+            boolean disabled = !load || camelContext.getManagementStrategy().getStatisticsLevel() == ManagementStatisticsLevel.Off;
 
             LOG.debug("Load performance statistics {}", disabled ? "disabled" : "enabled");
             if (!disabled) {

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
index 07fb638..b918186 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
@@ -58,11 +58,10 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
     private EventFactory eventFactory = new DefaultEventFactory();
     private ManagementNamingStrategy managementNamingStrategy;
     private ManagementObjectStrategy managementObjectStrategy;
-    private boolean onlyManageProcessorWithCustomId;
+    private Boolean onlyManageProcessorWithCustomId;
     private ManagementAgent managementAgent;
-    private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.All;
-    private boolean loadStatisticsEnabled;
-    private boolean extendedStatisticsEnabled;
+    private ManagementStatisticsLevel statisticsLevel;
+    private Boolean loadStatisticsEnabled;
     private CamelContext camelContext;
 
     public DefaultManagementStrategy() {
@@ -131,7 +130,7 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
     }
 
     public boolean isOnlyManageProcessorWithCustomId() {
-        return onlyManageProcessorWithCustomId;
+        return onlyManageProcessorWithCustomId != null && onlyManageProcessorWithCustomId;
     }
 
     public boolean manageProcessor(ProcessorDefinition<?> definition) {
@@ -203,14 +202,6 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
         this.loadStatisticsEnabled = loadStatisticsEnabled;
     }
 
-    public boolean isExtendedStatisticsEnabled() {
-        return extendedStatisticsEnabled;
-    }
-
-    public void setExtendedStatisticsEnabled(boolean extendedStatisticsEnabled) {
-        this.extendedStatisticsEnabled = extendedStatisticsEnabled;
-    }
-
     protected void doStart() throws Exception {
         LOG.info("JMX is disabled");
         doStartManagementStrategy();
@@ -238,6 +229,14 @@ public class DefaultManagementStrategy extends ServiceSupport implements Managem
             if (managementNamingStrategy == null) {
                 setManagementNamingStrategy(new DefaultManagementNamingStrategy(managementAgent.getMBeanObjectDomainName()));
             }
+            if (statisticsLevel != null) {
+                LOG.warn("Using @deprecated option statisticsLevel on ManagementStrategy. Configure this on ManagementAgent instead.");
+                managementAgent.setStatisticsLevel(statisticsLevel);
+            }
+            if (onlyManageProcessorWithCustomId != null) {
+                LOG.warn("Using @deprecated option onlyManageProcessorWithCustomId on ManagementStrategy. Configure this on ManagementAgent instead.");
+                managementAgent.setOnlyRegisterProcessorWithCustomId(onlyManageProcessorWithCustomId);
+            }
         }
         if (managementNamingStrategy instanceof CamelContextAware) {
             ((CamelContextAware) managementNamingStrategy).setCamelContext(getCamelContext());

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java b/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
index 14e64ec..fdde84c 100644
--- a/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
+++ b/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java
@@ -50,6 +50,12 @@ public final class JmxSystemPropertyKeys {
     // whether all processors or only processors with a custom id given should be registered
     public static final String ONLY_REGISTER_PROCESSOR_WITH_CUSTOM_ID = "org.apache.camel.jmx.onlyRegisterProcessorWithCustomId";
 
+    // whether to enable gathering load statistics in the background
+    public static final String LOAD_STATISTICS_ENABLED = "org.apache.camel.jmx.loadStatisticsEnabled";
+
+    // the level of statistics enabled
+    public static final String STATISTICS_LEVEL = "org.apache.camel.jmx.statisticsLevel";
+
     // whether to register always
     public static final String REGISTER_ALWAYS = "org.apache.camel.jmx.registerAlways";
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
index e1d9ef3..8fb61be 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
@@ -25,7 +25,6 @@ import javax.management.openmbean.TabularData;
 import javax.management.openmbean.TabularDataSupport;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
@@ -58,7 +57,7 @@ public class ManagedProcessor extends ManagedPerformanceCounter implements Manag
         this.definition = definition;
         this.id = definition.idOrCreate(context.getNodeIdFactory());
 
-        boolean enabled = context.getManagementStrategy().getStatisticsLevel() == ManagementStatisticsLevel.All;
+        boolean enabled = context.getManagementStrategy().getManagementAgent().getStatisticsLevel().isDefaultOrExtended();
         setStatisticsEnabled(enabled);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java
index df1f183..ae552da 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java
@@ -20,6 +20,7 @@ import javax.management.JMException;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.Service;
 
 /**
@@ -287,4 +288,52 @@ public interface ManagementAgent extends Service {
      */
     void setIncludeHostName(Boolean includeHostName);
 
+    /**
+     * The naming pattern for creating the CamelContext management name.
+     * <p/>
+     * The default pattern is <tt>#name#</tt>
+     */
+    String getManagementNamePattern();
+
+    /**
+     * The naming pattern for creating the CamelContext management name.
+     * <p/>
+     * The default pattern is <tt>#name#</tt>
+     */
+    void setManagementNamePattern(String managementNamePattern);
+
+    /**
+     * Sets whether load statistics is enabled (gathers load statistics using a background thread per CamelContext).
+     * <p/>
+     * The default value is <tt>false</tt>
+     *
+     * @param flag <tt>true</tt> to enable load statistics
+     */
+    void setLoadStatisticsEnabled(Boolean flag);
+
+    /**
+     * Gets whether load statistics is enabled
+     *
+     * @return <tt>true</tt> if enabled
+     */
+    Boolean getLoadStatisticsEnabled();
+
+    /**
+     * Sets the statistics level
+     * <p/>
+     * Default is {@link org.apache.camel.ManagementStatisticsLevel#Default}
+     * <p/>
+     * The level can be set to <tt>Extended</tt> to gather additional information
+     *
+     * @param level the new level
+     */
+    void setStatisticsLevel(ManagementStatisticsLevel level);
+
+    /**
+     * Gets the statistics level
+     *
+     * @return the level
+     */
+    ManagementStatisticsLevel getStatisticsLevel();
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
index bc8ff06..d483eb4 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
@@ -207,58 +207,56 @@ public interface ManagementStrategy extends Service {
      * Default is false.
      *
      * @param flag <tt>true</tt> will only manage if custom id was set.
+     * @deprecated use {@link org.apache.camel.spi.ManagementAgent}
      */
+    @Deprecated
     void onlyManageProcessorWithCustomId(boolean flag);
 
     /**
      * Checks whether only to manage processors if they have been configured with a custom id
      *
      * @return true or false
+     * @deprecated use {@link org.apache.camel.spi.ManagementAgent}
      */
+    @Deprecated
     boolean isOnlyManageProcessorWithCustomId();
 
     /**
      * Sets whether load statistics is enabled.
      *
      * @param flag <tt>true</tt> to enable load statistics
+     * @deprecated use {@link org.apache.camel.spi.ManagementAgent}
      */
+    @Deprecated
     void setLoadStatisticsEnabled(boolean flag);
 
     /**
      * Gets whether load statistics is enabled
      *
      * @return <tt>true</tt> if enabled
+     * @deprecated use {@link org.apache.camel.spi.ManagementAgent}
      */
+    @Deprecated
     boolean isLoadStatisticsEnabled();
 
     /**
-     * Sets whether extended statistics is enabled, such as each EIP keep tracks of per endpoint utilization.
-     *
-     * @param flag <tt>true</tt> to enable extended statistics
-     */
-    void setExtendedStatisticsEnabled(boolean flag);
-
-    /**
-     * Gets whether extended statistics is enabled
-     *
-     * @return <tt>true</tt> if enabled
-     */
-    boolean isExtendedStatisticsEnabled();
-
-    /**
      * Sets the statistics level
      * <p/>
-     * Default is {@link org.apache.camel.ManagementStatisticsLevel#All}
+     * Default is {@link org.apache.camel.ManagementStatisticsLevel#Default}
      *
      * @param level the new level
+     * @deprecated use {@link org.apache.camel.spi.ManagementAgent}
      */
+    @Deprecated
     void setStatisticsLevel(ManagementStatisticsLevel level);
 
     /**
      * Gets the statistics level
      *
      * @return the level
+     * @deprecated use {@link org.apache.camel.spi.ManagementAgent}
      */
+    @Deprecated
     ManagementStatisticsLevel getStatisticsLevel();
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java b/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
index 78343d2..1861923 100644
--- a/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest.java
@@ -72,7 +72,7 @@ public class JmxInstrumentationOnlyRegisterProcessorWithCustomIdTest extends Con
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getManagementStrategy().onlyManageProcessorWithCustomId(true);
+        context.getManagementStrategy().getManagementAgent().setOnlyRegisterProcessorWithCustomId(true);
         return context;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
index ccf10aa..5775132 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
@@ -21,6 +21,7 @@ import javax.management.ObjectName;
 import javax.management.openmbean.TabularData;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -33,7 +34,7 @@ public class ManagedDynamicRouterTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getManagementStrategy().setExtendedStatisticsEnabled(true);
+        context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
index 99724b4..23c1596 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedEnricherTest.java
@@ -21,6 +21,7 @@ import javax.management.ObjectName;
 import javax.management.openmbean.TabularData;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -33,7 +34,7 @@ public class ManagedEnricherTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getManagementStrategy().setExtendedStatisticsEnabled(true);
+        context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
index a6b7328..5daadd7 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
@@ -21,6 +21,7 @@ import javax.management.ObjectName;
 import javax.management.openmbean.TabularData;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -33,7 +34,7 @@ public class ManagedRecipientListTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getManagementStrategy().setExtendedStatisticsEnabled(true);
+        context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
index 4b9c19b..6d1d9a3 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteLoadstatisticsTest.java
@@ -32,7 +32,9 @@ public class ManagedRouteLoadstatisticsTest extends ManagementTestSupport {
             return;
         }
 
-        assertFalse(context.getManagementStrategy().isLoadStatisticsEnabled());
+        boolean load = context.getManagementStrategy().getManagementAgent().getLoadStatisticsEnabled() != null
+                && context.getManagementStrategy().getManagementAgent().getLoadStatisticsEnabled();
+        assertFalse(load);
         // get the stats for the route
         MBeanServer mbeanServer = getMBeanServer();
         ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=routes,name=\"route1\"");
@@ -55,7 +57,7 @@ public class ManagedRouteLoadstatisticsTest extends ManagementTestSupport {
         if (isPlatform("aix")) {
             return;
         }
-        context.getManagementStrategy().setLoadStatisticsEnabled(true);
+        context.getManagementStrategy().getManagementAgent().setLoadStatisticsEnabled(true);
         context.stop();
         context.start();
         // get the stats for the route

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
index 0ebf549..c830354 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
@@ -21,6 +21,7 @@ import javax.management.ObjectName;
 import javax.management.openmbean.TabularData;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -33,7 +34,7 @@ public class ManagedRoutingSlipTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getManagementStrategy().setExtendedStatisticsEnabled(true);
+        context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
index 2c2b895..eb7ff51 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedSendDynamicProcessorTest.java
@@ -21,6 +21,7 @@ import javax.management.ObjectName;
 import javax.management.openmbean.TabularData;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -33,7 +34,7 @@ public class ManagedSendDynamicProcessorTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getManagementStrategy().setExtendedStatisticsEnabled(true);
+        context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/488f3912/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
index 58b9943..c87f78f 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedWireTapTest.java
@@ -21,6 +21,7 @@ import javax.management.ObjectName;
 import javax.management.openmbean.TabularData;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -33,7 +34,7 @@ public class ManagedWireTapTest extends ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        context.getManagementStrategy().setExtendedStatisticsEnabled(true);
+        context.getManagementStrategy().getManagementAgent().setStatisticsLevel(ManagementStatisticsLevel.Extended);
         return context;
     }