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!)