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.5.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jmx-provider.git
commit 0a6ebb347d0789aadbfd42e128361089daf6f893 Author: Carsten Ziegeler <cziege...@apache.org> AuthorDate: Fri Aug 9 15:43:41 2013 +0000 SLING-2999 : JMX Resource Provider git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/jmxprovider@1512349 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/jmx/provider/impl/AttributeResource.java | 52 +++++++++++++++------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/apache/sling/jmx/provider/impl/AttributeResource.java b/src/main/java/org/apache/sling/jmx/provider/impl/AttributeResource.java index 5e303a3..f715d3b 100644 --- a/src/main/java/org/apache/sling/jmx/provider/impl/AttributeResource.java +++ b/src/main/java/org/apache/sling/jmx/provider/impl/AttributeResource.java @@ -18,17 +18,15 @@ */ package org.apache.sling.jmx.provider.impl; +import java.lang.reflect.Array; 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.MBeanServer; import javax.management.ObjectName; -import javax.management.ReflectionException; -import javax.management.RuntimeMBeanException; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.TabularData; import org.apache.sling.api.SlingConstants; import org.apache.sling.api.resource.AbstractResource; @@ -120,19 +118,41 @@ public class AttributeResource extends AbstractResource { try { final Object value = server.getAttribute(this.on, info.getName()); if ( value != null ) { - result.put("value", value.toString()); + if ( value.getClass().isArray() ) { + final int length = Array.getLength(value); + final Object[] values = new Object[length]; + for (int i = 0; i < length; i ++) { + final Object o = Array.get(value, i); + values[i] = convert(o); + } + result.put("value", values); + } else if (value instanceof TabularData) { + // TODO + } else if (value instanceof CompositeData) { + // TODO + } else { + result.put("value", convert(value)); + } } - } catch (final RuntimeMBeanException uoe) { - // ignore - } catch (final AttributeNotFoundException e) { - // ignore - } catch (final InstanceNotFoundException e) { - // ignore - } catch (final MBeanException e) { - // ignore - } catch (final ReflectionException e) { - // ignore + } catch (final Exception ignore) { + // ignore, but put this as info + result.put("exception", ignore.getMessage()); } return result; } + + private Object convert(final Object value) { + if ( value == null ) { + return ""; + } else if ( value instanceof String ) { + return value; + } else if ( value instanceof Number ) { + return value; + } else if ( value instanceof Boolean ) { + return value; + } else if ( value instanceof Character ) { + return value; + } + return value.toString(); + } } -- To stop receiving notification emails like this one, please contact "commits@sling.apache.org" <commits@sling.apache.org>.