This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.jcr.contentloader-2.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-contentloader.git
commit 2a30280e53f132026e0c5662d31cd532247a5d59 Author: Eric Norman <[email protected]> AuthorDate: Thu Mar 25 18:34:30 2010 +0000 SLING-1457 SLING-1458 - enable support for specifying the position of an ACE (within the ACL) when it is added/updated git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/contentloader@927532 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/jcr/contentloader/internal/ContentCreator.java | 11 ++++++++++- .../jcr/contentloader/internal/DefaultContentCreator.java | 5 +++-- .../sling/jcr/contentloader/internal/readers/JsonReader.java | 4 +++- .../sling/jcr/contentloader/internal/JsonReaderTest.java | 9 +++++---- .../jcr/contentloader/internal/readers/XmlReaderTest.java | 3 ++- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentCreator.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentCreator.java index 6d25b51..9f49b64 100644 --- a/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentCreator.java +++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentCreator.java @@ -162,8 +162,17 @@ public interface ContentCreator { * @param principal the user or group id for the ACE * @param grantedPrivileges the set of privileges to grant the principal * @param deniedPrivileges the set of privileges to deny the principal (for users only) + * @param order specifies the position of the ACE in the containing ACL. (may be null) + * Value should be one of these: + * <table> + * <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 index</td></tr> + * </table> * @throws RepositoryException */ - void createAce(String principal, String [] grantedPrivileges, String [] deniedPrivileges ) + void createAce(String principal, String [] grantedPrivileges, String [] deniedPrivileges, String order ) throws RepositoryException; } diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java index 9882ca3..eb628c8 100644 --- a/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java +++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java @@ -799,7 +799,8 @@ public class DefaultContentCreator implements ContentCreator { * @see org.apache.sling.jcr.contentloader.internal.ContentCreator#createAce(java.lang.String, java.lang.String, java.lang.String[], java.lang.String[]) */ public void createAce(String principalId, - String[] grantedPrivilegeNames, String[] deniedPrivilegeNames) + String[] grantedPrivilegeNames, String[] deniedPrivilegeNames, + String order) throws RepositoryException { final Node parentNode = this.parentNodeStack.peek(); Session session = parentNode.getSession(); @@ -812,7 +813,7 @@ public class DefaultContentCreator implements ContentCreator { if ((grantedPrivilegeNames != null) || (deniedPrivilegeNames != null)) { AccessControlUtil.replaceAccessControlEntry(session, resourcePath, principal, - grantedPrivilegeNames, deniedPrivilegeNames, null); + grantedPrivilegeNames, deniedPrivilegeNames, null, order); } } diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/readers/JsonReader.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/readers/JsonReader.java index b2bb316..2a8e599 100644 --- a/src/main/java/org/apache/sling/jcr/contentloader/internal/readers/JsonReader.java +++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/readers/JsonReader.java @@ -427,8 +427,10 @@ public class JsonReader implements ContentReader { } } + String order = ace.optString("order", null); + //do the work. - contentCreator.createAce(principalID, grantedPrivileges, deniedPrivileges); + contentCreator.createAce(principalID, grantedPrivileges, deniedPrivileges, order); } } diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java index ad90a46..bf63883 100644 --- a/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java +++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java @@ -276,16 +276,17 @@ public class JsonReaderTest { " {" + " \"principal\" : \"groupname2\"," + " \"granted\" : [\"jcr:read\"]," + - " \"denied\" : [\"jcr:write\"]" + + " \"denied\" : [\"jcr:write\"]," + + " \"order\" : \"first\"" + " }" + "]" + "}"; this.mockery.checking(new Expectations() {{ allowing(creator).createNode(null, null, null); inSequence(mySequence); - allowing(creator).createAce("username1",new String[]{"jcr:read","jcr:write"},new String[]{}); inSequence(mySequence); - allowing(creator).createAce("groupname1",new String[]{"jcr:read","jcr:write"},null); inSequence(mySequence); - allowing(creator).createAce("groupname2",new String[]{"jcr:read"},new String[]{"jcr:write"}); inSequence(mySequence); + allowing(creator).createAce("username1",new String[]{"jcr:read","jcr:write"},new String[]{}, null); inSequence(mySequence); + allowing(creator).createAce("groupname1",new String[]{"jcr:read","jcr:write"},null, null); inSequence(mySequence); + allowing(creator).createAce("groupname2",new String[]{"jcr:read"},new String[]{"jcr:write"}, "first"); inSequence(mySequence); allowing(creator).finishNode(); inSequence(mySequence); }}); this.parse(json); diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java index bc40cec..89f6eec 100644 --- a/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java +++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java @@ -145,7 +145,8 @@ public class XmlReaderTest extends TestCase { } public void createAce(String principal, - String[] grantedPrivileges, String[] deniedPrivileges) + String[] grantedPrivileges, String[] deniedPrivileges, + String order) throws RepositoryException { } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
