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 2015/04/23 17:26:29 UTC
svn commit: r1675623 - in /sling/trunk/contrib/extensions/resourcemerger/src:
main/java/org/apache/sling/resourcemerger/impl/
main/java/org/apache/sling/resourcemerger/impl/picker/
main/java/org/apache/sling/resourcemerger/spi/ test/java/org/apache/sli...
Author: cziegeler
Date: Thu Apr 23 15:26:28 2015
New Revision: 1675623
URL: http://svn.apache.org/r1675623
Log:
SLING-4653 : [Regression] Merging resource provider is traversing parent hierarchy for finding hide properties
Modified:
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProviderFactory.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java
sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java
sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/OverridingResourceProviderTest.java
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java Thu Apr 23 15:26:28 2015
@@ -40,8 +40,9 @@ public class CRUDMergingResourceProvider
implements ModifyingResourceProvider {
public CRUDMergingResourceProvider(final String mergeRootPath,
- final MergedResourcePicker picker) {
- super(mergeRootPath, picker, false);
+ final MergedResourcePicker picker,
+ final boolean traverseHierarchie) {
+ super(mergeRootPath, picker, false, traverseHierarchie);
}
private static final class ExtendedResourceHolder {
@@ -71,7 +72,7 @@ public class CRUDMergingResourceProvider
// check parent for hiding
final Resource parent = rsrc.getParent();
if ( parent != null ) {
- final boolean hidden = new ParentHidingHandler(parent).isHidden(holder.name);
+ final boolean hidden = new ParentHidingHandler(parent, this.traverseHierarchie).isHidden(holder.name);
if ( hidden ) {
holder.resources.clear();
} else {
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java Thu Apr 23 15:26:28 2015
@@ -64,7 +64,8 @@ public class MergedResourcePickerWhitebo
final String mergeRoot = PropertiesUtil.toString(reference.getProperty(MergedResourcePicker.MERGE_ROOT), null);
if (mergeRoot != null) {
final ResourceProviderFactory providerFactory = new MergingResourceProviderFactory(mergeRoot, picker,
- PropertiesUtil.toBoolean(reference.getProperty(MergedResourcePicker.READ_ONLY), true));
+ PropertiesUtil.toBoolean(reference.getProperty(MergedResourcePicker.READ_ONLY), true),
+ PropertiesUtil.toBoolean(reference.getProperty(MergedResourcePicker.TRAVERSE_PARENT), false));
final Dictionary<Object, Object> props = new Hashtable<Object, Object>();
props.put(ResourceProvider.ROOTS, mergeRoot);
props.put(ResourceProvider.OWNS_ROOTS, true);
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=1675623&r1=1675622&r2=1675623&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 Thu Apr 23 15:26:28 2015
@@ -39,12 +39,16 @@ class MergingResourceProvider implements
private final boolean readOnly;
+ protected final boolean traverseHierarchie;
+
MergingResourceProvider(final String mergeRootPath,
final MergedResourcePicker picker,
- final boolean readOnly) {
+ final boolean readOnly,
+ final boolean traverseHierarchie) {
this.mergeRootPath = mergeRootPath;
this.picker = picker;
this.readOnly = readOnly;
+ this.traverseHierarchie = traverseHierarchie;
}
protected static final class ExcludeEntry {
@@ -70,7 +74,7 @@ class MergingResourceProvider implements
private List<ExcludeEntry> entries = new ArrayList<ExcludeEntry>();
- public ParentHidingHandler(final Resource parent) {
+ public ParentHidingHandler(final Resource parent, final boolean traverseParent) {
final ValueMap parentProps = parent.getValueMap();
final String[] childrenToHideArray = parentProps.get(MergedResourceConstants.PN_HIDE_CHILDREN, String[].class);
if (childrenToHideArray != null) {
@@ -95,6 +99,9 @@ class MergingResourceProvider implements
}
}
}
+ if ( !traverseParent ) {
+ break;
+ }
previousAncestorName = ancestor.getName();
ancestor = ancestor.getParent();
}
@@ -220,7 +227,7 @@ class MergingResourceProvider implements
// check parent for hiding
// SLING 3521 : if parent is not readable, nothing is hidden
final Resource parent = resource.getParent();
- hidden = (parent == null ? false : new ParentHidingHandler(parent).isHidden(holder.name));
+ hidden = (parent == null ? false : new ParentHidingHandler(parent, this.traverseHierarchie).isHidden(holder.name));
}
if (hidden) {
holder.resources.clear();
@@ -249,7 +256,7 @@ class MergingResourceProvider implements
while (resources.hasNext()) {
Resource parentResource = resources.next();
- final ParentHidingHandler handler = new ParentHidingHandler(parentResource);
+ final ParentHidingHandler handler = new ParentHidingHandler(parentResource, this.traverseHierarchie);
for (final Resource child : parentResource.getChildren()) {
final String rsrcName = child.getName();
ResourceHolder holder = null;
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProviderFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProviderFactory.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProviderFactory.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProviderFactory.java Thu Apr 23 15:26:28 2015
@@ -33,28 +33,32 @@ class MergingResourceProviderFactory imp
private final boolean readOnly;
+ private final boolean traverseHierarchie;
+
MergingResourceProviderFactory(final String mergeRootPath,
final MergedResourcePicker picker,
- final boolean readOnly) {
+ final boolean readOnly,
+ final boolean traverseHierarchie) {
this.mergeRootPath = mergeRootPath;
this.picker = picker;
this.readOnly = readOnly;
+ this.traverseHierarchie = traverseHierarchie;
}
public ResourceProvider getResourceProvider(final Map<String, Object> authenticationInfo)
throws LoginException {
if ( this.readOnly ) {
- return new MergingResourceProvider(mergeRootPath, picker, this.readOnly);
+ return new MergingResourceProvider(mergeRootPath, picker, this.readOnly, this.traverseHierarchie);
}
- return new CRUDMergingResourceProvider(mergeRootPath, picker);
+ return new CRUDMergingResourceProvider(mergeRootPath, picker, this.traverseHierarchie);
}
public ResourceProvider getAdministrativeResourceProvider(final Map<String, Object> authenticationInfo)
throws LoginException {
if ( this.readOnly ) {
- return new MergingResourceProvider(mergeRootPath, picker, this.readOnly);
+ return new MergingResourceProvider(mergeRootPath, picker, this.readOnly, this.traverseHierarchie);
}
- return new CRUDMergingResourceProvider(mergeRootPath, picker);
+ return new CRUDMergingResourceProvider(mergeRootPath, picker, this.traverseHierarchie);
}
}
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java Thu Apr 23 15:26:28 2015
@@ -27,7 +27,6 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.api.resource.NonExistingResource;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.resourcemerger.impl.StubResource;
@@ -43,8 +42,8 @@ import org.apache.sling.resourcemerger.s
label = "Root", description = "Root path at which merged resources will be available."),
@Property(name=MergedResourcePicker.READ_ONLY, boolValue=true,
label="Read Only",
- description="Specifies if the resources are read-only or can be modified.")
-
+ description="Specifies if the resources are read-only or can be modified."),
+ @Property(name=MergedResourcePicker.TRAVERSE_PARENT, boolValue=true, propertyPrivate=true)
})
public class OverridingResourcePicker implements MergedResourcePicker {
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java Thu Apr 23 15:26:28 2015
@@ -51,6 +51,14 @@ public interface MergedResourcePicker {
String READ_ONLY = "merge.readOnly";
/**
+ * Service property name specifying whether the parent hierarchy is
+ * traversed to check for hiding properties. If not specified this
+ * property defaults to <code>false</code>. The value of this
+ * property must be of type Boolean.
+ */
+ String TRAVERSE_PARENT = "merge.traverseParent";
+
+ /**
* Method invoked by the MergingResourceProvider to identify the resources to be merged for a given
* relative path. The resources returned may be either resources returned from the ResourceResolver
* directory or an instance of NonExistingResource.
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java Thu Apr 23 15:26:28 2015
@@ -20,7 +20,7 @@
/**
* Provides a service to merge multiple physical resources into a single one
*/
-@Version("1.0.0")
+@Version("1.1.0")
package org.apache.sling.resourcemerger.spi;
import aQute.bnd.annotation.Version;
Modified: sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/MergedResourceProviderTest.java Thu Apr 23 15:26:28 2015
@@ -81,7 +81,7 @@ public class MergedResourceProviderTest
.resource("/libs/a/Y/c")
.commit();
- this.provider = new CRUDMergingResourceProvider("/merged", new MergingResourcePicker());
+ this.provider = new CRUDMergingResourceProvider("/merged", new MergingResourcePicker(), false);
}
@Test public void testHideChildren() {
Modified: sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/OverridingResourceProviderTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/OverridingResourceProviderTest.java?rev=1675623&r1=1675622&r2=1675623&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/OverridingResourceProviderTest.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/test/java/org/apache/sling/resourcemerger/impl/OverridingResourceProviderTest.java Thu Apr 23 15:26:28 2015
@@ -59,7 +59,7 @@ public class OverridingResourceProviderT
* /apps/a/1/c
* /apps/a/2/c
* /apps/a/3
- *
+ *
* /apps/a/2 has the super type of /apps/a/1
* /apps/a/3 has the super type of /apps/a/2
*/
@@ -87,7 +87,7 @@ public class OverridingResourceProviderT
.resource("/apps/a/3").p(SUPER_TYPE, "a/2")
.commit();
- this.provider = new MergingResourceProvider("/override", new OverridingResourcePicker(), true);
+ this.provider = new MergingResourceProvider("/override", new OverridingResourcePicker(), false, true);
}
@Test