Return-Path: X-Original-To: apmail-jackrabbit-commits-archive@www.apache.org Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B55D7EE95 for ; Thu, 17 Jan 2013 17:41:14 +0000 (UTC) Received: (qmail 80397 invoked by uid 500); 17 Jan 2013 17:41:14 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 80341 invoked by uid 500); 17 Jan 2013 17:41:13 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 80331 invoked by uid 99); 17 Jan 2013 17:41:13 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Jan 2013 17:41:13 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Jan 2013 17:41:11 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 91B9B2388A91; Thu, 17 Jan 2013 17:40:51 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1434806 - /jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/authorization/AccessControlUtils.java Date: Thu, 17 Jan 2013 17:40:51 -0000 To: commits@jackrabbit.apache.org From: angela@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130117174051.91B9B2388A91@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: angela Date: Thu Jan 17 17:40:51 2013 New Revision: 1434806 URL: http://svn.apache.org/viewvc?rev=1434806&view=rev Log: OAK-51 : Implement JCR Access Control Management: Add more utility methods to AccessControlUtils Modified: jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/authorization/AccessControlUtils.java Modified: jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/authorization/AccessControlUtils.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/authorization/AccessControlUtils.java?rev=1434806&r1=1434805&r2=1434806&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/authorization/AccessControlUtils.java (original) +++ jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/jackrabbit/authorization/AccessControlUtils.java Thu Jan 17 17:40:51 2013 @@ -102,9 +102,27 @@ public class AccessControlUtils { */ public static JackrabbitAccessControlList getAccessControlList(Session session, String absPath) throws RepositoryException { AccessControlManager acMgr = session.getAccessControlManager(); + return getAccessControlList(acMgr, absPath); + } + /** + * Utility that combines {@link AccessControlManager#getApplicablePolicies(String)} + * and {@link AccessControlManager#getPolicies(String)} to retrieve + * a modifiable {@code JackrabbitAccessControlList} for the given path.
+ * + * Note that the policy must be {@link AccessControlManager#setPolicy(String, + * javax.jcr.security.AccessControlPolicy) reapplied} + * and the changes must be saved in order to make the AC modifications take + * effect. + * + * @param accessControlManager The {@code AccessControlManager} . + * @param absPath The absolute path of the target node. + * @return A modifiable access control list or null if there is none. + * @throws RepositoryException If an error occurs. + */ + public static JackrabbitAccessControlList getAccessControlList(AccessControlManager accessControlManager, String absPath) throws RepositoryException { // try applicable (new) ACLs - AccessControlPolicyIterator itr = acMgr.getApplicablePolicies(absPath); + AccessControlPolicyIterator itr = accessControlManager.getApplicablePolicies(absPath); while (itr.hasNext()) { AccessControlPolicy policy = itr.nextAccessControlPolicy(); if (policy instanceof JackrabbitAccessControlList) { @@ -113,7 +131,7 @@ public class AccessControlUtils { } // try if there is an acl that has been set before - AccessControlPolicy[] pcls = acMgr.getPolicies(absPath); + AccessControlPolicy[] pcls = accessControlManager.getPolicies(absPath); for (AccessControlPolicy policy : pcls) { if (policy instanceof JackrabbitAccessControlList) { return (JackrabbitAccessControlList) policy;