Author: cziegeler
Date: Wed Oct 23 08:21:09 2013
New Revision: 1534954

URL: http://svn.apache.org/r1534954
Log:
SLING-3200 : Avoid duplicated requests to mbeans when creating resources

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

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=1534954&r1=1534953&r2=1534954&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
 Wed Oct 23 08:21:09 2013
@@ -152,8 +152,22 @@ public class JMXResourceProvider impleme
                     return new AttributesResource(resourceResolver, path, 
parent);
                 }
                 if ( info.pathInfo.startsWith("mbean:attributes/") ) {
-                    final AttributesResource parent = 
(AttributesResource)resourceResolver.getResource(ResourceUtil.getParent(path));
-                    final MBeanResource parentMBeanResource = (MBeanResource) 
parent.getParent();
+                    final Resource parentRsrc = 
resourceResolver.getResource(ResourceUtil.getParent(path));
+                    final AttributesResource parentAttributesResource;
+                    final MBeanResource parentMBeanResource;
+                    if ( parentRsrc instanceof AttributesResource ) {
+                        parentAttributesResource = (AttributesResource) 
parentRsrc;
+                        parentMBeanResource = 
(MBeanResource)parentRsrc.getParent();
+                    } else {
+                        final AttributeResource parent;
+                        if ( parentRsrc instanceof AttributeResource) {
+                            parent = (AttributeResource)parentRsrc;
+                        } else {
+                            parent = 
((MapResource)parentRsrc).getAttributeResource();
+                        }
+                        parentAttributesResource = (AttributesResource) 
parent.getParent();
+                        parentMBeanResource = (MBeanResource) 
parentAttributesResource.getParent();
+                    }
                     final AttributeList result = 
parentMBeanResource.getAttributes();
 
                     final String attrPath = 
info.pathInfo.substring("mbean:attributes/".length());
@@ -177,7 +191,7 @@ public class JMXResourceProvider impleme
                                     value = a.getValue();
                                 }
                             }
-                            final AttributeResource rsrc = new 
AttributeResource(resourceResolver, path, mai, value, parent);
+                            final AttributeResource rsrc = new 
AttributeResource(resourceResolver, path, mai, value, parentAttributesResource);
                             if ( subPath != null ) {
                                 return rsrc.getChildResource(subPath);
                             }


Reply via email to