in src/main/java/org/apache/sling/jcr/repoinit/impl/AclUtil.java [618:649]
private static boolean containsEquivalentEntry(
SessionContext context,
String absPath,
Principal principal,
String[] privilegeNames,
boolean isAllow,
List<RestrictionClause> restrictionList)
throws RepositoryException {
if (absPath != null && !context.getSession().nodeExists(absPath)) {
LOG.info(
"Cannot determine existence of equivalent path-based entry for principal {}. No node at path {} ",
principal.getName(),
absPath);
return true;
}
for (AccessControlPolicy policy : context.getAccessControlManager().getPolicies(absPath)) {
if (policy instanceof JackrabbitAccessControlList) {
LocalRestrictions lr = createLocalRestrictions(
restrictionList, ((JackrabbitAccessControlList) policy), context.getSession());
LocalAccessControlEntry newEntry =
new LocalAccessControlEntry(context, principal, privilegeNames, isAllow, lr);
if (contains(((JackrabbitAccessControlList) policy).getAccessControlEntries(), newEntry)) {
LOG.info(
"Equivalent path-based entry exists for principal {} and effective path {} ",
newEntry.principal.getName(),
absPath);
return true;
}
}
}
return false;
}