You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2013/10/15 16:19:41 UTC

svn commit: r1532351 - in /sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl: Constants.java JMXResourceProvider.java MBeanResource.java

Author: cziegeler
Date: Tue Oct 15 14:19:40 2013
New Revision: 1532351

URL: http://svn.apache.org/r1532351
Log:
SLING-3176 : ValueMap of jmx resource should contain mbean attributes

Modified:
    sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java
    sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
    sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java

Modified: sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java?rev=1532351&r1=1532350&r2=1532351&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java (original)
+++ sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/Constants.java Tue Oct 15 14:19:40 2013
@@ -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

Modified: sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java?rev=1532351&r1=1532350&r2=1532351&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/JMXResourceProvider.java Tue Oct 15 14:19:40 2013
@@ -142,7 +142,7 @@ public class JMXResourceProvider impleme
                 }
             } 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 impleme
                                     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) {

Modified: sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java?rev=1532351&r1=1532350&r2=1532351&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java (original)
+++ sling/trunk/contrib/extensions/jmxprovider/src/main/java/org/apache/sling/jmx/provider/impl/MBeanResource.java Tue Oct 15 14:19:40 2013
@@ -21,8 +21,14 @@ package org.apache.sling.jmx.provider.im
 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 Abstr
 
     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 Abstr
         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;
     }
 }