in src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelper.java [362:387]
private static LocalPrivilege localPrivRemoveRestrictions(@NotNull Map<Privilege, LocalPrivilege> privilegeToLocalPrivilegesMap,
@NotNull Privilege privilege, boolean forAllow, boolean forDeny, @NotNull Collection<String> restrictionNames) {
LocalPrivilege localPrivilege = privilegeToLocalPrivilegesMap.computeIfAbsent(privilege, LocalPrivilege::new);
// make sure allow/deny already exists
forAllow &= localPrivilege.isAllow();
forDeny &= localPrivilege.isDeny();
if (forAllow) {
localPrivilege.unsetAllowRestrictions(restrictionNames);
}
if (forDeny) {
localPrivilege.unsetDenyRestrictions(restrictionNames);
}
if (localPrivilege.sameAllowAndDenyRestrictions()) {
// same restrictions so we can unset one of them
if (forAllow) {
localPrivilege.setDeny(false);
localPrivilege.clearDenyRestrictions();
} else if (forDeny) {
localPrivilege.setAllow(false);
localPrivilege.clearAllowRestrictions();
}
}
return localPrivilege;
}