private boolean matchesAtTree()

in src/main/java/org/apache/sling/oak/restrictions/impl/ResourceTypePattern.java [112:141]


    private boolean matchesAtTree(Tree tree) {
        boolean isResourceTypeMatch = false;
        for (String path : resourceTypesByPath.keySet()) {

                Tree treeToCheck = tree; // the default if e.g. just the resource type without @path is given
                if(!DEFAULT_PATH.equals(path)) {
                    try {
                        String[] segments = path.split("/");
                        for (String string : segments) {
                            treeToCheck = treeToCheck.getChild(string);
                        }
                    } catch (IllegalArgumentException e) {
                        continue; // continue and ignore if path is not found
                    } 
                }
                
                Set<String> resourceTypesForPath = resourceTypesByPath.get(path);
                String actualResourceType = getResourceTypeFromTree(treeToCheck);
                isResourceTypeMatch = resourceTypesForPath.contains(actualResourceType);
                
                if(LOG.isTraceEnabled()) {
                    LOG.trace("isResourceTypeMatch={} (checked at path {} at sub path {})", new Object[]{isResourceTypeMatch, tree.getPath(), path});
                }
                if(isResourceTypeMatch) {
                    break; // return as quickly as possible
                }

        }
        return isResourceTypeMatch;
    }