in src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java [421:482]
protected void processPostedRestrictionDeleteParams(@NotNull AccessControlManager acm,
@NotNull SlingHttpServletRequest request,
@NotNull Map<String, RestrictionDefinition> srMap,
@NotNull Map<Privilege, LocalPrivilege> privilegeToLocalPrivilegesMap) throws RepositoryException {
@NotNull
Map<String, Matcher> postedRestrictionDeleteNames = getMatchedRequestParameterNames(request, RESTRICTION_PATTERN_DELETE);
for (Entry<String, Matcher> entry : postedRestrictionDeleteNames.entrySet()) {
String paramName = entry.getKey();
Matcher matcher = entry.getValue();
String privilegeName;
String restrictionName;
if (matcher.group(2) != null) {
privilegeName = matcher.group(1);
restrictionName = matcher.group(3);
} else {
privilegeName = null;
restrictionName = matcher.group(1);
}
RestrictionDefinition rd = srMap.get(restrictionName);
if (rd == null) {
//illegal restriction name?
throw new AccessControlException(INVALID_OR_NOT_SUPPORTED_RESTRICTION_NAME_WAS_SUPPLIED);
}
Collection<Privilege> privileges;
if (privilegeName == null) {
// process for every privilege
privileges = privilegeToLocalPrivilegesMap.keySet();
} else {
// process for the specific privilege only
Privilege privilege = acm.privilegeFromName(privilegeName);
privileges = Collections.singletonList(privilege);
}
String[] parameterValues;
if (privilegeName == null) {
// for backward compatibility, the restriction@[restriction_name]@Delete syntax
// deletes from both 'allow' and 'deny'
parameterValues = new String[] { "all" };
} else {
parameterValues = request.getParameterValues(paramName);
}
for (String allowOrDeny : parameterValues) {
DeleteValues value = DeleteValues.valueOfParam(allowOrDeny);
switch (value) {
case ALL:
// not specified try both the deny and allow sets
PrivilegesHelper.unallowOrUndenyRestriction(privilegeToLocalPrivilegesMap,
restrictionName, privileges);
break;
case ALLOW:
PrivilegesHelper.unallowRestriction(privilegeToLocalPrivilegesMap,
restrictionName, privileges);
break;
case DENY:
PrivilegesHelper.undenyRestriction(privilegeToLocalPrivilegesMap,
restrictionName, privileges);
break;
default:
break;
}
}
}
}