This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.jmx.provider-0.6.0
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jmx-provider.git

commit be725e14f1a29e1605f30a426e626ef44121a8ef
Author: Carsten Ziegeler <cziege...@apache.org>
AuthorDate: Tue Oct 15 14:19:40 2013 +0000

    SLING-3176 : ValueMap of jmx resource should contain mbean attributes
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/jmxprovider@1532351
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../apache/sling/jmx/provider/impl/Constants.java  |  2 +-
 .../jmx/provider/impl/JMXResourceProvider.java     |  4 +--
 .../sling/jmx/provider/impl/MBeanResource.java     | 32 +++++++++++++++++++++-
 3 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java 
b/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java
index 8bccecb..8f20f09 100644
--- a/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java
+++ b/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java
@@ -45,4 +45,4 @@ public abstract class Constants {
     public static final String TYPE_MBEAN = "sling:mbean";
 
     public static final String TYPE_MBEANS = "sling:mbeans";
-}
+}
\ No newline at end of file
diff --git 
a/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java 
b/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
index bfdbd85..602fd35 100644
--- a/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
+++ b/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
@@ -142,7 +142,7 @@ public class JMXResourceProvider implements 
ResourceProvider {
                 }
             } else {
                 if (info.pathInfo == null ) {
-                    return new MBeanResource(resourceResolver, 
this.convertObjectNameToResourcePath(info.objectName), path, info.mbeanInfo, 
info.objectName);
+                    return new MBeanResource(this.mbeanServer, 
resourceResolver, this.convertObjectNameToResourcePath(info.objectName), path, 
info.mbeanInfo, info.objectName);
                 }
                 if ( info.pathInfo.equals("mbean:attributes") ) {
                     return new AttributesResource(resourceResolver, path);
@@ -231,7 +231,7 @@ public class JMXResourceProvider implements 
ResourceProvider {
                                     final MBeanInfo info = 
mbeanServer.getMBeanInfo(on);
                                     final String path = 
convertObjectNameToResourcePath(on);
                                     final int sep = path.lastIndexOf('/');
-                                    this.next = new 
MBeanResource(parent.getResourceResolver(), path, parent.getPath() + "/" + 
path.substring(sep + 1), info, on);
+                                    this.next = new MBeanResource(mbeanServer, 
parent.getResourceResolver(), path, parent.getPath() + "/" + path.substring(sep 
+ 1), info, on);
                                 } catch (final IntrospectionException e) {
                                     // ignore
                                 } catch (final InstanceNotFoundException e) {
diff --git 
a/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java 
b/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java
index 1c778d9..21aa8e3 100644
--- a/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java
+++ b/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java
@@ -21,8 +21,14 @@ package org.apache.sling.jmx.provider.impl;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.management.AttributeNotFoundException;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanException;
 import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
 import javax.management.ObjectName;
+import javax.management.ReflectionException;
 
 import org.apache.sling.api.resource.AbstractResource;
 import org.apache.sling.api.resource.ResourceMetadata;
@@ -44,11 +50,16 @@ public class MBeanResource extends AbstractResource {
 
     private final String resourceType;
 
-    public MBeanResource(final ResourceResolver resolver,
+    /** The mbean server. */
+    private final MBeanServer mbeanServer;
+
+    public MBeanResource(final MBeanServer mbeanServer,
+            final ResourceResolver resolver,
             final String resourceType,
             final String path,
             final MBeanInfo info,
             final ObjectName objectName) {
+        this.mbeanServer = mbeanServer;
         this.resourceResolver = resolver;
         this.path = path;
         this.info = info;
@@ -116,6 +127,25 @@ public class MBeanResource extends AbstractResource {
         result.put(Constants.PROP_CLASSNAME, this.info.getClassName());
         result.put(Constants.PROP_OBJECTNAME, 
this.objectName.getCanonicalName());
 
+        final MBeanAttributeInfo[] attribs = this.info.getAttributes();
+        for(final MBeanAttributeInfo i : attribs) {
+             Object value = null;
+             try {
+                value = this.mbeanServer.getAttribute(this.objectName, 
i.getName());
+                if ( value != null ) {
+                    result.put(i.getName(), value);
+                }
+            } catch (final AttributeNotFoundException e) {
+                // ignore
+            } catch (final InstanceNotFoundException e) {
+                // ignore
+            } catch (final MBeanException e) {
+                // ignore
+            } catch (final ReflectionException e) {
+                // ignore
+            }
+        }
+
         return result;
     }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <commits@sling.apache.org>.

Reply via email to