Updated Branches:
  refs/heads/camel-2.12.x 616ce1677 -> 925b1996c
  refs/heads/master 96463adb6 -> 3244c1e53


CAMEL-7018: Using custom beans with @ManagedResource shows unavailable standard 
attributes

Conflicts:
        
camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java


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

Branch: refs/heads/camel-2.12.x
Commit: 925b1996c945f920e509da4f609afaeeb1b74a98
Parents: 616ce16
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Nov 27 14:54:28 2013 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Nov 27 15:15:24 2013 +0100

----------------------------------------------------------------------
 .../org/apache/camel/component/seda/SedaEndpoint.java   |  6 ++++++
 .../management/DefaultManagementMBeanAssembler.java     |  2 +-
 .../org/apache/camel/management/MBeanInfoAssembler.java | 12 +++++++-----
 .../apache/camel/management/ManagedResourceTest.java    |  9 +++++++++
 .../camel/management/ManagedSedaEndpointTest.java       |  3 +++
 5 files changed, 26 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/925b1996/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java 
b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
index f2c5fca..f43027c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
@@ -308,6 +308,7 @@ public class SedaEndpoint extends DefaultEndpoint 
implements BrowsableEndpoint,
         this.purgeWhenStopping = purgeWhenStopping;
     }
 
+    @ManagedAttribute(description = "Singleton")
     public boolean isSingleton() {
         return true;
     }
@@ -420,6 +421,11 @@ public class SedaEndpoint extends DefaultEndpoint 
implements BrowsableEndpoint,
         return getCamelContext().getName();
     }
 
+    @ManagedAttribute(description = "Endpoint URI", mask = true)
+    public String getEndpointUri() {
+        return super.getEndpointUri();
+    }
+
     @ManagedAttribute(description = "Endpoint service state")
     public String getState() {
         return getStatus().name();

http://git-wip-us.apache.org/repos/asf/camel/blob/925b1996/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
 
b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
index 262b520..fde3592 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
@@ -60,7 +60,7 @@ public class DefaultManagementMBeanAssembler implements 
ManagementMBeanAssembler
             if (custom != null && 
ObjectHelper.hasAnnotation(custom.getClass().getAnnotations(), 
ManagedResource.class)) {
                 LOG.trace("Assembling MBeanInfo for: {} from custom 
@ManagedResource object: {}", name, custom);
                 // get the mbean info from the custom managed object
-                mbi = assembler.getMBeanInfo(obj, custom, name.toString());
+                mbi = assembler.getMBeanInfo(null, custom, name.toString());
                 // and let the custom object be registered in JMX
                 obj = custom;
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/925b1996/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java 
b/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
index 56b5a14..84f0470 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
@@ -97,7 +97,7 @@ public class MBeanInfoAssembler implements Service {
      */
     public ModelMBeanInfo getMBeanInfo(Object defaultManagedBean, Object 
customManagedBean, String objectName) throws JMException {
         // skip proxy classes
-        if (Proxy.isProxyClass(defaultManagedBean.getClass())) {
+        if (defaultManagedBean != null && 
Proxy.isProxyClass(defaultManagedBean.getClass())) {
             LOG.trace("Skip creating ModelMBeanInfo due proxy class {}", 
defaultManagedBean.getClass());
             return null;
         }
@@ -110,10 +110,12 @@ public class MBeanInfoAssembler implements Service {
         Set<ModelMBeanNotificationInfo> mBeanNotifications = new 
LinkedHashSet<ModelMBeanNotificationInfo>();
 
         // extract details from default managed bean
-        extractAttributesAndOperations(defaultManagedBean.getClass(), 
attributes, operations);
-        extractMbeanAttributes(defaultManagedBean, attributes, 
mBeanAttributes, mBeanOperations);
-        extractMbeanOperations(defaultManagedBean, operations, 
mBeanOperations);
-        extractMbeanNotifications(defaultManagedBean, mBeanNotifications);
+        if (defaultManagedBean != null) {
+            extractAttributesAndOperations(defaultManagedBean.getClass(), 
attributes, operations);
+            extractMbeanAttributes(defaultManagedBean, attributes, 
mBeanAttributes, mBeanOperations);
+            extractMbeanOperations(defaultManagedBean, operations, 
mBeanOperations);
+            extractMbeanNotifications(defaultManagedBean, mBeanNotifications);
+        }
 
         // extract details from custom managed bean
         if (customManagedBean != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/925b1996/camel-core/src/test/java/org/apache/camel/management/ManagedResourceTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/management/ManagedResourceTest.java 
b/camel-core/src/test/java/org/apache/camel/management/ManagedResourceTest.java
index 5db2db6..0a2d226 100644
--- 
a/camel-core/src/test/java/org/apache/camel/management/ManagedResourceTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/management/ManagedResourceTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.management;
 
+import javax.management.AttributeNotFoundException;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
@@ -37,6 +38,7 @@ public class ManagedResourceTest extends 
ManagementTestSupport {
                 from("direct:start")
                         .bean(MyManagedBean.class).id("myManagedBean")
                         .log("${body}")
+                        .to("seda:foo")
                         .to("mock:result");
             }
         };
@@ -84,5 +86,12 @@ public class ManagedResourceTest extends 
ManagementTestSupport {
 
         camelsSeenCount = (Integer) mBeanServer.getAttribute(onManagedBean, 
"CamelsSeenCount");
         TestCase.assertEquals(0, camelsSeenCount);
+
+        try {
+            mBeanServer.getAttribute(onManagedBean, "CamelId");
+            fail("The CamelId attribute should not exist");
+        } catch (AttributeNotFoundException e) {
+            // expected
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/925b1996/camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
 
b/camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
index 0e393a0..bc48ccb 100644
--- 
a/camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/management/ManagedSedaEndpointTest.java
@@ -51,6 +51,9 @@ public class ManagedSedaEndpointTest extends 
ManagementTestSupport {
         Integer size = (Integer) mbeanServer.getAttribute(name, 
"CurrentQueueSize");
         assertEquals(0, size.intValue());
 
+        Boolean singleton = (Boolean) mbeanServer.getAttribute(name, 
"Singleton");
+        assertEquals(true, singleton.booleanValue());
+
         // stop route
         context.stopRoute("foo");
 

Reply via email to