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]>.

Reply via email to