public ResourceHidingHandler()

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();
            }
        }