Repository: camel
Updated Branches:
  refs/heads/master 20b24d7c1 -> 8a414c3d9


Add Host IP Address to JMX properties


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

Branch: refs/heads/master
Commit: a003434805705ab1df1e1b66f9d55a6bb9441573
Parents: 20b24d7
Author: Yamini Sadu <ys...@tdktech.com>
Authored: Tue Aug 4 11:07:36 2015 -0500
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Aug 5 09:50:54 2015 +0200

----------------------------------------------------------------------
 .../management/DefaultManagementAgent.java      | 23 ++++++++++-
 .../camel/management/JmxSystemPropertyKeys.java |  4 ++
 .../org/apache/camel/spi/ManagementAgent.java   | 13 ++++++
 .../DefaultManagementAgentMockTest.java         | 42 ++++++++++++++++----
 .../xml/AbstractCamelContextFactoryBean.java    |  3 ++
 .../camel/core/xml/CamelJMXAgentDefinition.java | 19 ++++++++-
 .../camel/spring/JMXAgentPropertiesTest.java    | 11 +++++
 .../org/apache/camel/spring/JMXAgentTest.java   |  3 ++
 .../org/apache/camel/spring/jmxConfig.xml       |  3 +-
 .../camel/spring/jmxConfigUsingProperties.xml   |  3 +-
 10 files changed, 111 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/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 a65fffc..e2f40b8 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
@@ -84,6 +84,7 @@ public class DefaultManagementAgent extends ServiceSupport 
implements Management
     private Boolean registerNewRoutes = true;
     private Boolean mask = true;
     private Boolean includeHostName = false;
+    private Boolean useHostIPAddress= false;
     private String managementNamePattern = "#name#";
     private ManagementStatisticsLevel statisticsLevel = 
ManagementStatisticsLevel.Default;
 
@@ -166,6 +167,10 @@ public class DefaultManagementAgent extends ServiceSupport 
implements Management
             managementNamePattern = 
System.getProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN);
             values.put(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN, 
managementNamePattern);
         }
+        if (System.getProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS) != 
null) {
+            useHostIPAddress = 
Boolean.getBoolean(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS);
+            values.put(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, 
useHostIPAddress);
+        }
 
         if (!values.isEmpty()) {
             LOG.info("ManagementAgent detected JVM system properties: {}", 
values);
@@ -275,8 +280,18 @@ public class DefaultManagementAgent extends ServiceSupport 
implements Management
     public void setIncludeHostName(Boolean includeHostName) {
         this.includeHostName = includeHostName;
     }
+    
+    @Override
+    public Boolean getUseHostIPAddress() {
+               return useHostIPAddress !=null && useHostIPAddress;
+       }
+
+    @Override
+       public void setUseHostIPAddress(Boolean useHostIPAddress) {
+               this.useHostIPAddress = useHostIPAddress;
+       }
 
-    public String getManagementNamePattern() {
+       public String getManagementNamePattern() {
         return managementNamePattern;
     }
 
@@ -465,7 +480,11 @@ public class DefaultManagementAgent extends ServiceSupport 
implements Management
 
         if (canAccessSystemProps) {
             try {
-                hostName = InetAddress.getLocalHost().getHostName();
+               if(useHostIPAddress){
+                       hostName = InetAddress.getLocalHost().getHostAddress();
+               }else{
+                       hostName = InetAddress.getLocalHost().getHostName();
+               }
             } catch (UnknownHostException uhe) {
                 LOG.info("Cannot determine localhost name. Using default: " + 
DEFAULT_REGISTRY_PORT, uhe);
                 hostName = DEFAULT_HOST;

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/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 5684e5d..8fc9040 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
@@ -73,6 +73,10 @@ public final class JmxSystemPropertyKeys {
 
     // To configure the default management name pattern using a JVM system 
property
     public static final String MANAGEMENT_NAME_PATTERN = 
"org.apache.camel.jmx.managementNamePattern";
+    
+    // flag to enable host ip address instead of host name 
+    public static final String USE_HOST_IP_ADDRESS = 
"org.apache.camel.jmx.useHostIPAddress";
+
 
     private JmxSystemPropertyKeys() {
         // not instantiated

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/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 ac25bd2..b208c8d 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
@@ -351,5 +351,18 @@ public interface ManagementAgent extends Service {
      * @return the level
      */
     ManagementStatisticsLevel getStatisticsLevel();
+    
+    /**
+     * Gets whether host IP Address to be used instead of host name.
+     *
+     * @return <tt>true</tt> if included
+     */
+    Boolean getUseHostIPAddress();
+
+    /**
+     * Sets whether to use host IP Address 
+     * @param useHostIPAddress <tt>true</tt> to use IP Address.
+     */
+    void setUseHostIPAddress(Boolean useHostIPAddress);
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
 
b/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
index 848fbb3..efeb20d 100644
--- 
a/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java
@@ -16,14 +16,6 @@
  */
 package org.apache.camel.management;
 
-import javax.management.JMException;
-import javax.management.MBeanServer;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-
-import org.apache.camel.spi.ManagementAgent;
-import org.junit.Test;
-
 import static org.easymock.EasyMock.createStrictMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
@@ -32,6 +24,16 @@ import static org.easymock.EasyMock.verify;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.spi.ManagementAgent;
+import org.junit.Test;
+
 /**
  * Tests proper behavior of DefaultManagementAgent when
  * {@link MBeanServer#registerMBean(Object, ObjectName)} returns an
@@ -75,5 +77,29 @@ public class DefaultManagementAgentMockTest {
         assertFalse(agent.isRegistered(sourceObjectName));
         verify(mbeanServer);
     }
+    
+       @Test
+       public void testShouldUseHostIPAddressWhenFlagisTrue() throws Exception 
{
+               System.setProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, 
"true");
+               System.setProperty(JmxSystemPropertyKeys.CREATE_CONNECTOR, 
"true");
+               CamelContext ctx = new DefaultCamelContext();
+
+               ManagementAgent agent = new DefaultManagementAgent(ctx);
+               agent.start();
+
+               assertTrue(agent.getUseHostIPAddress());
+       }
+    
+    @Test
+    public void shouldUseHostNameWhenFlagisFalse() throws Exception{
+       System.setProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, "false");
+       System.setProperty(JmxSystemPropertyKeys.CREATE_CONNECTOR, "true");
+               CamelContext ctx = new DefaultCamelContext();
+
+               ManagementAgent agent = new DefaultManagementAgent(ctx);
+               agent.start();
+               
+               assertFalse(agent.getUseHostIPAddress());
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index 20e93a3..b24cf81 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -456,6 +456,9 @@ public abstract class AbstractCamelContextFactoryBean<T 
extends ModelCamelContex
             if (camelJMXAgent.getIncludeHostName() != null) {
                 
agent.setIncludeHostName(CamelContextHelper.parseBoolean(getContext(), 
camelJMXAgent.getIncludeHostName()));
             }
+            if (camelJMXAgent.getUseHostIPAddress() != null) {
+                
agent.setUseHostIPAddress(CamelContextHelper.parseBoolean(getContext(), 
camelJMXAgent.getUseHostIPAddress()));
+            }
             if (camelJMXAgent.getMask() != null) {
                 agent.setMask(CamelContextHelper.parseBoolean(getContext(), 
camelJMXAgent.getMask()));
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java
index b4ce31b..e2d532ef 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java
@@ -122,6 +122,12 @@ public class CamelJMXAgentDefinition extends 
IdentifiedType {
      */
     @XmlAttribute
     private String includeHostName;
+    
+    /**
+     * A flag that indicates whether to use hostname or IP Address in the 
service url.
+     */
+    @XmlAttribute
+    private String useHostIPAddress;
 
     /**
      * A flag that indicates whether to remove detected sensitive information 
(such as passwords) from MBean names and attributes.
@@ -256,8 +262,16 @@ public class CamelJMXAgentDefinition extends 
IdentifiedType {
     public void setMask(String mask) {
         this.mask = mask;
     }
+    
+    public String getUseHostIPAddress() {
+               return useHostIPAddress;
+       }
 
-    @Override
+       public void setUseHostIPAddress(String useHostIPAddress) {
+               this.useHostIPAddress = useHostIPAddress;
+       }
+
+       @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("CamelJMXAgent[");
@@ -308,6 +322,9 @@ public class CamelJMXAgentDefinition extends IdentifiedType 
{
         if (includeHostName != null) {
             csb.append("includeHostName=" + includeHostName);
         }
+        if (useHostIPAddress != null) {
+            csb.append("useHostIPAddress=" + useHostIPAddress);
+        }
         if (mask != null) {
             csb.append("mask=" + mask);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java
 
b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java
index 6f1ed61..e2ac4d3 100644
--- 
a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java
+++ 
b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.spring;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ManagementAgent;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
@@ -35,5 +37,14 @@ public class JMXAgentPropertiesTest extends JMXAgentTest {
     protected AbstractXmlApplicationContext createApplicationContext() {
         return new 
ClassPathXmlApplicationContext("org/apache/camel/spring/jmxConfigUsingProperties.xml");
     }
+    
+    public void testEnableUseHostIPAddress() throws Exception{
+       
+       CamelContext ctx = createCamelContext();
+       ManagementAgent agent = 
ctx.getManagementStrategy().getManagementAgent();
+       agent.start();
+       assertTrue(agent.getUseHostIPAddress());
+       
+    }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java
 
b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java
index 3724738..b6a19c2 100644
--- 
a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java
+++ 
b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java
@@ -21,6 +21,9 @@ import javax.management.remote.JMXConnector;
 import javax.management.remote.JMXConnectorFactory;
 import javax.management.remote.JMXServiceURL;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ManagementAgent;
+import org.junit.Test;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml
----------------------------------------------------------------------
diff --git 
a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml
 
b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml
index 00cdd52..1d685a3 100644
--- 
a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml
+++ 
b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml
@@ -27,7 +27,8 @@
         <!-- enable JMX -->
         <jmxAgent id="agent" registryPort="20008"
                   usePlatformMBeanServer="true"
-                  createConnector="true"/>
+                  createConnector="true"
+                  />
 
         <route id="foo" autoStartup="false">
             <from uri="seda:start"/>

http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml
----------------------------------------------------------------------
diff --git 
a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml
 
b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml
index 5b80817..18c186a 100644
--- 
a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml
+++ 
b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml
@@ -30,7 +30,8 @@
         <jmxAgent id="agent" registryPort="{{myjmx.port}}" 
disabled="{{myjmx.disabled}}"
                   usePlatformMBeanServer="{{myjmx.usePlatform}}"
                   createConnector="true"
-                  statisticsLevel="RoutesOnly"/>
+                  statisticsLevel="RoutesOnly"
+                  useHostIPAddress="true"/>
 
         <route id="foo" autoStartup="false">
             <from uri="seda:start"/>

Reply via email to