in src/main/java/org/apache/sling/starter/access/models/Ace.java [540:566]
public String getPrivilegeAggregationsAsJSON() throws RepositoryException {
JsonBuilderFactory factory = Json.createBuilderFactory(Collections.emptyMap());
JsonObjectBuilder builder = factory.createObjectBuilder();
Session jcrSession = request.getResourceResolver().adaptTo(Session.class);
Map<Privilege, String> privilegeToLongestPath = AceUtils.getPrivilegeLongestPathMap(jcrSession);
Privilege[] supported = getSupportedOrRegisteredPrivileges(jcrSession, resource.getPath());
for (Privilege privilege : supported) {
Privilege[] aggregatePrivileges = privilege.getAggregatePrivileges();
if (aggregatePrivileges != null && aggregatePrivileges.length > 0) {
// order these so the client side iteration will process from the top down
List<Privilege> list = new ArrayList<>(Arrays.asList(aggregatePrivileges));
list.sort((Privilege o1, Privilege o2) -> privilegeToLongestPath.get(o1).compareTo(privilegeToLongestPath.get(o2)));
JsonArrayBuilder aggregateArray = factory.createArrayBuilder();
for (Privilege privilege2 : list) {
aggregateArray.add(privilege2.getName());
}
builder.add(privilege.getName(), aggregateArray);
}
}
JsonObject jsonObj = builder.build();
return jsonObj.toString();
}