in src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java [73:105]
public ResourceHidingHandler(final Resource resource, final boolean traverseParent) {
isParentHiddenFully = false;
isParentHiddenForUnderlay = false;
// evaluate the sling:hideChildren property on the current resource
final ValueMap properties = resource.getValueMap();
final String[] childrenToHideArray = properties.get(MergedResourceConstants.PN_HIDE_CHILDREN, new String[0]);
hidePredicate = new HideItemPredicate(childrenToHideArray, resource.getPath() + "/" + MergedResourceConstants.PN_HIDE_CHILDREN);
// also check on the parent's parent whether that was hiding the parent
Resource parent = resource.getParent();
String childResourceName = resource.getName();
while (parent != null) {
final ValueMap parentProperties = parent.getValueMap();
final String[] parentChildrenToHideArray = parentProperties.get(MergedResourceConstants.PN_HIDE_CHILDREN, String[].class);
if (parentChildrenToHideArray != null) {
HideItemPredicate parentHidePredicate = new HideItemPredicate(parentChildrenToHideArray, parent.getPath() + "/" + MergedResourceConstants.PN_HIDE_CHILDREN);
// check if this parentHidePredicate is applicable at all (always assuming the worst case, i.e. non local resource)
if (parentHidePredicate.testItem(childResourceName, false)) {
if (parentHidePredicate.isWildcard()) {
isParentHiddenForUnderlay = true;
} else {
isParentHiddenFully = true;
}
break;
}
}
if (!traverseParent) {
break;
}
childResourceName = parent.getName();
parent = parent.getParent();
}
}