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>.