public String getPrivilegeAggregationsAsJSON()

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();
    }