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

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

commit 78042c6b801415a354b8d97634dcd4020466a5b9
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Thu Mar 13 12:27:13 2014 +0000

    SLING-3450 : JMX Resource Provider should not use instanceof checks
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/jmxprovider@1577132
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../jmx/provider/impl/JMXResourceProvider.java     | 28 ++++++++++++++++------
 1 file changed, 21 insertions(+), 7 deletions(-)

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 f56aa13..63e9c08 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
@@ -154,11 +154,11 @@ public class JMXResourceProvider implements 
ResourceProvider {
                     return new MBeanResource(this.mbeanServer, 
resourceResolver, this.convertObjectNameToResourcePath(info.objectName), path, 
info.mbeanInfo, info.objectName);
                 }
                 if ( info.pathInfo.equals("mbean:attributes") ) {
-                    final MBeanResource parent = 
(MBeanResource)resourceResolver.getResource(ResourceUtil.getParent(path));
+                    final MBeanResource parent = 
(MBeanResource)this.getResource(resourceResolver, ResourceUtil.getParent(path));
                     return new AttributesResource(resourceResolver, path, 
parent);
                 }
                 if ( info.pathInfo.startsWith("mbean:attributes/") ) {
-                    final Resource parentRsrc = 
resourceResolver.getResource(ResourceUtil.getParent(path));
+                    final Resource parentRsrc = 
this.getResource(resourceResolver, ResourceUtil.getParent(path));
                     final AttributesResource parentAttributesResource;
                     final MBeanResource parentMBeanResource;
                     if ( parentRsrc instanceof AttributesResource ) {
@@ -303,12 +303,22 @@ public class JMXResourceProvider implements 
ResourceProvider {
                 };
             } else {
                 if ( info.pathInfo == null ) {
-                    final MBeanResource parentResource = (MBeanResource)parent;
+                    final MBeanResource parentResource;
+                    if ( parent instanceof MBeanResource ) {
+                        parentResource = (MBeanResource)parent;
+                    } else {
+                        parentResource = 
(MBeanResource)this.getResource(parent.getResourceResolver(), parent.getPath());
+                    }
                     final List<Resource> list = new ArrayList<Resource>();
                     list.add(new 
AttributesResource(parent.getResourceResolver(), parent.getPath() + 
"/mbean:attributes", parentResource));
                     return list.iterator();
                 } else if ( info.pathInfo.equals("mbean:attributes") ) {
-                    final AttributesResource parentResource = 
(AttributesResource)parent;
+                    final AttributesResource parentResource;
+                    if ( parent instanceof AttributesResource ) {
+                        parentResource = (AttributesResource)parent;
+                    } else {
+                        parentResource = (AttributesResource) 
this.getResource(parent.getResourceResolver(), parent.getPath());
+                    }
                     final MBeanResource parentMBeanResource = 
(MBeanResource)parentResource.getParent();
                     final AttributeList result = 
parentMBeanResource.getAttributes();
 
@@ -338,11 +348,15 @@ public class JMXResourceProvider implements 
ResourceProvider {
                         }
                     };
                 } else if ( info.pathInfo.startsWith("mbean:attributes/") ) {
+                    Resource checkParentResource = parent;
+                    if ( !(checkParentResource instanceof AttributeResource) 
&& !(checkParentResource instanceof MapResource ) ) {
+                        checkParentResource = 
this.getResource(parent.getResourceResolver(), parent.getPath());
+                    }
                     final AttributeResource parentResource;
-                    if ( parent instanceof AttributeResource ) {
-                        parentResource = (AttributeResource)parent;
+                    if ( checkParentResource instanceof AttributeResource ) {
+                        parentResource = 
(AttributeResource)checkParentResource;
                     } else {
-                        parentResource = 
((MapResource)parent).getAttributeResource();
+                        parentResource = 
((MapResource)checkParentResource).getAttributeResource();
                     }
 
                     final String attrPath = 
info.pathInfo.substring("mbean:attributes/".length());

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to