Author: kwin
Date: Tue Jun 13 12:46:32 2017
New Revision: 1798594

URL: http://svn.apache.org/viewvc?rev=1798594&view=rev
Log:
SLING-6951 correctly hide underlying grand children (which are hidden by the 
grandparent's sling:hideChildren)

Modified:
    
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
    
sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/CommonMergedResourceProviderTest.java

Modified: 
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java?rev=1798594&r1=1798593&r2=1798594&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
 (original)
+++ 
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
 Tue Jun 13 12:46:32 2017
@@ -117,7 +117,8 @@ public class MergingResourceProvider ext
                                 onlyUnderlying = false;
                             }
                             final ExcludeEntry entry = new ExcludeEntry(value, 
onlyUnderlying);
-                            final Boolean hides = hides(entry, 
previousAncestorName, true);
+                            // check if this entry is applicable at all 
(always assuming the worst case, i.e. non local resource)
+                            final Boolean hides = hides(entry, 
previousAncestorName, false);
                             if (hides != null && hides.booleanValue() == true) 
{
                                 this.entries.add(new ExcludeEntry("*", 
entry.onlyUnderlying));
                                 break;

Modified: 
sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/CommonMergedResourceProviderTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/CommonMergedResourceProviderTest.java?rev=1798594&r1=1798593&r2=1798594&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/CommonMergedResourceProviderTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/CommonMergedResourceProviderTest.java
 Tue Jun 13 12:46:32 2017
@@ -109,7 +109,7 @@ public class CommonMergedResourceProvide
         base = this.resolver.getResource("/apps/base");
         overlay = this.resolver.getResource("/apps/overlay");
         
-        this.provider = new CRUDMergingResourceProvider("/merged", new 
SimpleMergedResourcePicker(), false);
+        this.provider = new CRUDMergingResourceProvider("/merged", new 
SimpleMergedResourcePicker(), true);
     }
 
     @Test
@@ -119,10 +119,10 @@ public class CommonMergedResourceProvide
             .resource("/apps/base/child1").p("property1", "frombase")
             .resource("/apps/base/child2").p("property1", "frombase")
             .resource("/apps/base/child1/grandchild").p("propertygrandchild1", 
"frombase")
-            
.resource("/apps/base/child1/grandchild/grandgrandchild").p("propertygrandgrandchild1",
 "frombase")
+            
.resource("/apps/base/child1/grandchild/grandgrandchildfrombase").p("propertygrandgrandchild1",
 "frombase")
             .resource("/apps/overlay/child1").p("property1", "fromoverlay")
             
.resource("/apps/overlay/child1/grandchild").p("propertygrandchild1", 
"fromoverlay")
-            
.resource("/apps/overlay/child1/grandchild/grandgrandchild").p("propertygrandgrandchild1",
 "fromoverlay")
+            
.resource("/apps/overlay/child1/grandchild/grandgrandchildfromoverlay").p("propertygrandgrandchild1",
 "fromoverlay")
             
.resource("/apps/overlay/child1/grandchild1").p("propertygrandchild1", 
"fromoverlay")
             
.resource("/apps/overlay/child1/grandchild1/grandgrandchild1").p("propertygrandgrandchild1",
 "fromoverlay")
             .resource("/apps/overlay/child3").p("property1", "fromoverlay")
@@ -163,7 +163,7 @@ public class CommonMergedResourceProvide
         
         // all overlay resource are still exposed, because hiding children by 
wildcard only hides children from underlying resources
         Assert.assertThat(iterableGrandGrandchildren, Matchers.contains(
-                ResourceMatchers.nameAndProps("grandgrandchild", 
Collections.singletonMap("propertygrandgrandchild1", (Object)"fromoverlay")))
+                ResourceMatchers.nameAndProps("grandgrandchildfromoverlay", 
Collections.singletonMap("propertygrandgrandchild1", (Object)"fromoverlay")))
         );
         
         // go down two levels (in node which is only available in overlay!)


Reply via email to