Merge pull request #85 from apache/SLING-11169

SLING-11169 : Repoinit does not allow to remove individual ACEs - Update documentation
diff --git a/src/main/jbake/content/documentation/bundles/repository-initialization.md b/src/main/jbake/content/documentation/bundles/repository-initialization.md
index 79efe24..a4d7d7a 100644
--- a/src/main/jbake/content/documentation/bundles/repository-initialization.md
+++ b/src/main/jbake/content/documentation/bundles/repository-initialization.md
@@ -25,11 +25,12 @@
 If any of them throws an Exception, the `SlingRepository` service is not registered.
     
 ## The 'repoinit' Repository Initialization Language
-The `org.apache.sling.repoinit.parser` implements a mini-language meant to create paths, service users and Access Control Lists in a content repository, as 
-well as registering JCR namespaces and node types.
+The `org.apache.sling.repoinit.parser` implements a mini-language meant to create paths, service users and manage access control in a content repository, as 
+well as registering JCR namespaces, node types and privileges. Defining access control content consists of setting and 
+deleting policies of type access control lists (ACL) for which individual access control entries (ACE) can be added and removed.
 
-As  I write this, the source code consists of [three modules](https://github.com/apache?utf8=%E2%9C%93&q=sling+repoinit): the parser, the JCR 
-repoinit adapter module and the integration tests.
+The source code consists of [two modules](https://github.com/apache?utf8=%E2%9C%93&q=sling+repoinit): the parser and the JCR 
+repoinit adapter module.
 
 The language grammar is defined (using the JavaCC compiler-compiler, which has no runtime dependencies) in the `RepoInitGrammar.jjt` file in that module, and the automated tests provide a number of [test cases](https://github.com/apache/sling-org-apache-sling-repoinit-parser/tree/master/src/test/resources/testcases) which demonstrate various features.
 
@@ -421,6 +422,44 @@
       allow jcr:seven for mercury
     end
     
+    # test-35.txt
+    
+    # Removal of individual access control entries (see SLING-11160), requires
+    # o.a.s.repoinit.parser 1.6.14 and
+    # o.a.s.jcr.repoinit 1.1.38
+    
+    # remove entries by path
+    
+    remove ACE on /libs,/apps, /, /content/example.com/some-other_path
+        allow jcr:read for user1,user2
+        allow privilege_without_namespace for user4
+        deny jcr:write,something:else,another:one for user2
+        deny jcr:lockManagement for user1
+        deny jcr:modifyProperties for user2 restriction(rep:itemNames,prop1,prop2)
+    end
+    
+    # remove entries by principal
+    
+    remove ACE for user1,u2
+        allow jcr:read on /content
+        allow jcr:addChildNodes, jcr:modifyProperties on /content restriction(rep:glob)
+        deny jcr:read on /etc, /var restriction(rep:ntNames,sling:Folder,nt:unstructured) restriction(rep:itemNames,prop1,prop2)
+    end
+    
+    # remove principal-based entries
+    
+    remove principal ACE for principal1,principal2
+        allow jcr:read on /content
+        deny jcr:modifyProperties on /apps, /content restriction(rep:itemNames,prop1,prop2)
+        allow jcr:addChildNodes on /apps restriction(rep:ntNames,sling:Folder,nt:unstructured)
+        allow jcr:modifyProperties on /apps restriction(rep:ntNames,sling:Folder,nt:unstructured) restriction(rep:itemNames,prop1,prop2)
+        allow jcr:addChildNodes on /apps,/content restriction(rep:glob,/cat,/cat/,cat)
+        allow jcr:addChildNodes on /apps,/content restriction(rep:glob,cat/,*,*cat)
+        allow jcr:addChildNodes on /apps,/content restriction(rep:glob,/cat/*,*/cat,*cat/*)
+        allow jcr:something on / restriction(rep:glob)
+        allow jcr:all on :repository,home(alice)
+    end
+    
     # test-40.txt
     
     # Register namespaces, requires