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 2014/05/16 10:56:00 UTC

svn commit: r1595142 - /sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java

Author: cziegeler
Date: Fri May 16 08:56:00 2014
New Revision: 1595142

URL: http://svn.apache.org/r1595142
Log:
SLING-3521 : Merged resource is not available if parent folder is unreadable

Modified:
    sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java

Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java?rev=1595142&r1=1595141&r2=1595142&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourceProvider.java Fri May 16 08:56:00 2014
@@ -55,8 +55,12 @@ public class MergedResourceProvider
         private final String[] childrenToHideArray;
 
         public ParentHidingHandler(final Resource parent) {
-            final ValueMap parentProps = ResourceUtil.getValueMap(parent);
-            this.childrenToHideArray = parentProps.get(MergedResourceConstants.PN_HIDE_CHILDREN, String[].class);
+            if ( parent == null ) {
+                this.childrenToHideArray = null;
+            } else {
+                final ValueMap parentProps = parent.getValueMap();
+                this.childrenToHideArray = parentProps.get(MergedResourceConstants.PN_HIDE_CHILDREN, String[].class);
+            }
         }
 
         public boolean isHidden(final String name) {
@@ -91,16 +95,15 @@ public class MergedResourceProvider
                 final String fullPath = basePath + relativePath;
 
                 // check parent for hiding
+                // SLING 3521 : if parent is not readable, nothing is hidden
                 final Resource parent = resolver.getResource(ResourceUtil.getParent(fullPath));
-                if ( parent != null ) {
-                    final boolean hidden = new ParentHidingHandler(parent).isHidden(holder.name);
-                    if ( hidden ) {
-                        holder.resources.clear();
-                    } else {
-                        final Resource baseRes = resolver.getResource(fullPath);
-                        if (baseRes != null) {
-                            holder.resources.add(baseRes);
-                        }
+                final boolean hidden = new ParentHidingHandler(parent).isHidden(holder.name);
+                if ( hidden ) {
+                    holder.resources.clear();
+                } else {
+                    final Resource baseRes = resolver.getResource(fullPath);
+                    if (baseRes != null) {
+                        holder.resources.add(baseRes);
                     }
                 }
             }
@@ -130,7 +133,7 @@ public class MergedResourceProvider
         while ( index < holder.resources.size() ) {
             final Resource baseRes = holder.resources.get(index);
             // check if resource is hidden
-            final ValueMap props = ResourceUtil.getValueMap(baseRes);
+            final ValueMap props = baseRes.getValueMap();
             holder.valueMaps.add(props);
             if ( props.get(MergedResourceConstants.PN_HIDE_RESOURCE, Boolean.FALSE) ) {
                 // clear everything up to now
@@ -186,7 +189,7 @@ public class MergedResourceProvider
 
                         // Check if children need reordering
                         int orderBeforeIndex = -1;
-                        final ValueMap vm = ResourceUtil.getValueMap(child);
+                        final ValueMap vm = child.getValueMap();
                         final String orderBefore = vm.get(MergedResourceConstants.PN_ORDER_BEFORE, String.class);
                         if (orderBefore != null && !orderBefore.equals(rsrcName)) {
                             // search entry