X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjcr%2FJcrUtils.java;h=416d035f8b5925555e421c46ede06e21e85dd231;hb=b6cad136dfd4589bc2a8f48ec9168732517f451b;hp=d78ccae8d1d756bf380b8dfaebad3562be0caa04;hpb=48cae516376b12ea619a359450c62479d3e16584;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java b/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java index d78ccae8d..416d035f8 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java +++ b/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java @@ -1308,23 +1308,30 @@ public class JcrUtils { return true; } - /** Gets access control list for this path, throws exception if not found */ + /** + * Gets the first available access control list for this path, throws exception + * if not found + */ public synchronized static AccessControlList getAccessControlList(AccessControlManager acm, String path) throws RepositoryException { // search for an access control list AccessControlList acl = null; AccessControlPolicyIterator policyIterator = acm.getApplicablePolicies(path); - if (policyIterator.hasNext()) { + applicablePolicies: if (policyIterator.hasNext()) { while (policyIterator.hasNext()) { AccessControlPolicy acp = policyIterator.nextAccessControlPolicy(); - if (acp instanceof AccessControlList) + if (acp instanceof AccessControlList) { acl = ((AccessControlList) acp); + break applicablePolicies; + } } } else { AccessControlPolicy[] existingPolicies = acm.getPolicies(path); - for (AccessControlPolicy acp : existingPolicies) { - if (acp instanceof AccessControlList) + existingPolicies: for (AccessControlPolicy acp : existingPolicies) { + if (acp instanceof AccessControlList) { acl = ((AccessControlList) acp); + break existingPolicies; + } } } if (acl != null)