in src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/impl/PrivilegesHelper.java [93:120]
public static LocalPrivilege localAllowAndDenyPriv(Map<Privilege, LocalPrivilege> privilegeToLocalPrivilegesMap,
Privilege privilege,
boolean allow, @NotNull Set<LocalRestriction> allowRestrictions,
boolean deny, @NotNull Set<LocalRestriction> denyRestrictions
) {
LocalPrivilege localPrivilege = privilegeToLocalPrivilegesMap.computeIfAbsent(privilege, LocalPrivilege::new);
if (allow) {
localPrivilege.setAllow(true);
localPrivilege.setAllowRestrictions(allowRestrictions);
} else {
localPrivilege.setAllow(false);
localPrivilege.setAllowRestrictions(Collections.emptySet());
}
if (deny) {
localPrivilege.setDeny(true);
localPrivilege.setDenyRestrictions(denyRestrictions);
} else {
localPrivilege.setDeny(false);
localPrivilege.setDenyRestrictions(Collections.emptySet());
}
if (localPrivilege.isAllow() && localPrivilege.isDeny() && localPrivilege.sameAllowAndDenyRestrictions()) {
// same restrictions to we prefer the allow
localPrivilege.setDeny(false);
localPrivilege.setDenyRestrictions(Collections.emptySet());
}
return localPrivilege;
}