You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by en...@apache.org on 2019/10/25 22:50:33 UTC
[sling-org-apache-sling-jcr-jackrabbit-accessmanager] branch master
updated: SLING-8805 The ModifyAce#modifyAce calls should have an option to
not autoSave the session
This is an automated email from the ASF dual-hosted git repository.
enorman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-jackrabbit-accessmanager.git
The following commit(s) were added to refs/heads/master by this push:
new ef29842 SLING-8805 The ModifyAce#modifyAce calls should have an option to not autoSave the session
ef29842 is described below
commit ef2984264802e42799f62948d083198f8741be65
Author: Eric Norman <en...@apache.org>
AuthorDate: Fri Oct 25 15:50:21 2019 -0700
SLING-8805 The ModifyAce#modifyAce calls should have an option to not
autoSave the session
---
.../jcr/jackrabbit/accessmanager/ModifyAce.java | 77 +++++++++++++++++++++-
.../jcr/jackrabbit/accessmanager/package-info.java | 2 +-
.../accessmanager/post/ModifyAceServlet.java | 27 +++++++-
.../accessmanager/post/package-info.java | 2 +-
4 files changed, 102 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/ModifyAce.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/ModifyAce.java
index 6ad8095..f096763 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/ModifyAce.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/ModifyAce.java
@@ -39,6 +39,9 @@ public interface ModifyAce {
* Add or modify the access control entry for the specified user
* or group.
*
+ * This is equivalent to {@link #modifyAce(Session, String, String, Map, String, boolean)} with
+ * the autoSave parameter value equal to true.
+ *
* @param jcrSession the JCR session of the user updating the user
* @param resourcePath The absolute path of the resource to apply the ACE to (required)
* @param principalId The name of the user/group to provision (required)
@@ -61,11 +64,45 @@ public interface ModifyAce {
Map<String, String> privileges,
String order
) throws RepositoryException;
+
+ /**
+ * Add or modify the access control entry for the specified user
+ * or group.
+ *
+ * @param jcrSession the JCR session of the user updating the user
+ * @param resourcePath The absolute path of the resource to apply the ACE to (required)
+ * @param principalId The name of the user/group to provision (required)
+ * @param privileges Map of privileges to apply. (optional)
+ * @param order where the access control entry should go in the list.
+ * Value should be one of these:
+ * <table>
+ * <tr><td>null</td><td>If the ACE for the principal doesn't exist add at the end, otherwise leave the ACE at it's current position.</td></tr>
+ * <tr><td>first</td><td>Place the target ACE as the first amongst its siblings</td></tr>
+ * <tr><td>last</td><td>Place the target ACE as the last amongst its siblings</td></tr>
+ * <tr><td>before xyz</td><td>Place the target ACE immediately before the sibling whose name is xyz</td></tr>
+ * <tr><td>after xyz</td><td>Place the target ACE immediately after the sibling whose name is xyz</td></tr>
+ * <tr><td>numeric</td><td>Place the target ACE at the specified numeric index</td></tr>
+ * </table>
+ * @param autoSave true to automatically save changes to the JCR session, false otherwise
+ * @throws RepositoryException
+ */
+ default void modifyAce(Session jcrSession,
+ String resourcePath,
+ String principalId,
+ Map<String, String> privileges,
+ String order,
+ boolean autoSave
+ ) throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
/**
* Add or modify the access control entry for the specified user
* or group.
*
+ * This is equivalent to {@link #modifyAce(Session, String, String, Map, String, Map, Map, Set, boolean)} with
+ * the autoSave parameter value equal to true.
+ *
* @param jcrSession the JCR session of the user updating the user
* @param resourcePath The absolute path of the resource to apply the ACE to (required)
* @param principalId The name of the user/group to provision (required)
@@ -94,7 +131,45 @@ public interface ModifyAce {
Map<String, Value[]> mvRestrictions,
Set<String> removeRestrictionNames
) throws RepositoryException {
- throw new UnsupportedRepositoryOperationException();
+ modifyAce(jcrSession, resourcePath, principalId,
+ privileges, order, restrictions, mvRestrictions,
+ removeRestrictionNames, true);
}
+ /**
+ * Add or modify the access control entry for the specified user
+ * or group.
+ *
+ * @param jcrSession the JCR session of the user updating the user
+ * @param resourcePath The absolute path of the resource to apply the ACE to (required)
+ * @param principalId The name of the user/group to provision (required)
+ * @param privileges Map of privileges to apply. (optional)
+ * @param order where the access control entry should go in the list.
+ * Value should be one of these:
+ * <table>
+ * <tr><td>null</td><td>If the ACE for the principal doesn't exist add at the end, otherwise leave the ACE at it's current position.</td></tr>
+ * <tr><td>first</td><td>Place the target ACE as the first amongst its siblings</td></tr>
+ * <tr><td>last</td><td>Place the target ACE as the last amongst its siblings</td></tr>
+ * <tr><td>before xyz</td><td>Place the target ACE immediately before the sibling whose name is xyz</td></tr>
+ * <tr><td>after xyz</td><td>Place the target ACE immediately after the sibling whose name is xyz</td></tr>
+ * <tr><td>numeric</td><td>Place the target ACE at the specified numeric index</td></tr>
+ * </table>
+ * @param restrictions Map of single-value restrictions to apply. (optional)
+ * @param mvRestrictions Map of multi-value restrictions to apply. (optional)
+ * @param removeRestrictionNames Set of existing restriction names to remove (optional)
+ * @param autoSave true to automatically save changes to the JCR session, false otherwise
+ * @throws RepositoryException
+ */
+ default void modifyAce(Session jcrSession,
+ String resourcePath,
+ String principalId,
+ Map<String, String> privileges,
+ String order,
+ Map<String, Value> restrictions,
+ Map<String, Value[]> mvRestrictions,
+ Set<String> removeRestrictionNames,
+ boolean autoSave
+ ) throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
}
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
index e46171e..494de5b 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
@@ -17,7 +17,7 @@
* under the License.
*/
-@org.osgi.annotation.versioning.Version("3.1.0")
+@org.osgi.annotation.versioning.Version("3.2.0")
package org.apache.sling.jcr.jackrabbit.accessmanager;
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java
index 1282299..deeb03d 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java
@@ -217,17 +217,27 @@ public class ModifyAceServlet extends AbstractAccessPostServlet implements Modif
}
String order = request.getParameter("order");
modifyAce(session, resourcePath, principalId, privileges, order, restrictions, mvRestrictions,
- removeRestrictionNames);
+ removeRestrictionNames, false);
}
/* (non-Javadoc)
+ * @see org.apache.sling.jcr.jackrabbit.accessmanager.ModifyAce#modifyAce(javax.jcr.Session, java.lang.String, java.lang.String, java.util.Map, java.lang.String, boolean)
+ */
+ @Override
+ public void modifyAce(Session jcrSession, String resourcePath, String principalId, Map<String, String> privileges,
+ String order, boolean autoSave) throws RepositoryException {
+ modifyAce(jcrSession, resourcePath, principalId, privileges, order,
+ null, null, null, autoSave);
+ }
+
+ /* (non-Javadoc)
* @see org.apache.sling.jcr.jackrabbit.accessmanager.ModifyAce#modifyAce(javax.jcr.Session, java.lang.String, java.lang.String, java.util.Map, java.lang.String)
*/
public void modifyAce(Session jcrSession, String resourcePath,
String principalId, Map<String, String> privileges, String order)
throws RepositoryException {
- modifyAce(jcrSession, resourcePath, principalId, privileges, order, null, null, null);
+ modifyAce(jcrSession, resourcePath, principalId, privileges, order, true);
}
/* (non-Javadoc)
* @see org.apache.sling.jcr.jackrabbit.accessmanager.ModifyAce#modifyAce(javax.jcr.Session, java.lang.String, java.lang.String, java.util.Map, java.lang.String, java.util.Map, java.util.Map, java.util.Set)
@@ -236,6 +246,17 @@ public class ModifyAceServlet extends AbstractAccessPostServlet implements Modif
public void modifyAce(Session jcrSession, String resourcePath, String principalId, Map<String, String> privileges,
String order, Map<String, Value> restrictions, Map<String, Value[]> mvRestrictions,
Set<String> removeRestrictionNames) throws RepositoryException {
+ modifyAce(jcrSession, resourcePath, principalId, privileges, order,
+ restrictions, mvRestrictions, removeRestrictionNames, true);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.sling.jcr.jackrabbit.accessmanager.ModifyAce#modifyAce(javax.jcr.Session, java.lang.String, java.lang.String, java.util.Map, java.lang.String, java.util.Map, java.util.Map, java.util.Set, boolean)
+ */
+ @Override
+ public void modifyAce(Session jcrSession, String resourcePath, String principalId, Map<String, String> privileges,
+ String order, Map<String, Value> restrictions, Map<String, Value[]> mvRestrictions,
+ Set<String> removeRestrictionNames, boolean autoSave) throws RepositoryException {
if (jcrSession == null) {
throw new RepositoryException("JCR Session not found");
}
@@ -291,7 +312,7 @@ public class ModifyAceServlet extends AbstractAccessPostServlet implements Modif
restrictions,
mvRestrictions,
removeRestrictionNames);
- if (jcrSession.hasPendingChanges()) {
+ if (autoSave && jcrSession.hasPendingChanges()) {
jcrSession.save();
}
} catch (RepositoryException re) {
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
index 839033a..19ca1ff 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
@@ -17,7 +17,7 @@
* under the License.
*/
-@org.osgi.annotation.versioning.Version("3.2.0")
+@org.osgi.annotation.versioning.Version("3.3.0")
package org.apache.sling.jcr.jackrabbit.accessmanager.post;