void bindACLs()

in src/main/java/org/apache/sling/pipes/internal/ACLPipe.java [139:172]


    void bindACLs(Resource resource) {
        try {
            Authorizable auth = checkIsAuthorizableResource(resource);
            if ( null != auth ) {
                //get privileges for an auth on the repository , authorizable flag should be true if resource is an authorizable
                bindAclsForAuthorizableResource(auth);
                return;
            }
            logger.info("binding acls for resource at path {}", resource.getPath());
            AccessControlList acl = AccessControlUtils.getAccessControlList(session, resource.getPath());
            JackrabbitAccessControlEntry[] entries = (JackrabbitAccessControlEntry[]) acl.getAccessControlEntries();
            JsonArrayBuilder principalPrivilegesArray = Json.createArrayBuilder();
            for (JackrabbitAccessControlEntry entry : entries) {
                JsonObjectBuilder principalPrivilegesMappings = Json.createObjectBuilder();
                JsonArrayBuilder privilegeSet = Json.createArrayBuilder();
                for ( Privilege privilege : entry.getPrivileges() ){
                    privilegeSet.add(privilege.getName());
                }
                principalPrivilegesMappings.add(PN_AUTHORIZABLE, entry.getPrincipal().getName());
                principalPrivilegesMappings.add(PRIVILEGES_JSON_KEY, privilegeSet);
                if (entry.isAllow()) {
                    principalPrivilegesMappings.add(PN_ALLOW, true);
                } else {
                    principalPrivilegesMappings.add(PN_DENY, true);
                }
                principalPrivilegesArray.add(principalPrivilegesMappings);
            }
            outputBinding = JsonUtil.toString(principalPrivilegesArray);
        } catch ( Exception e ) {
            outputBinding = JsonUtil.toString(Json.createObjectBuilder());
            logger.error("unable to bind acls", e);
        }

    }