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