You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2019/06/26 09:46:48 UTC

[sling-org-apache-sling-jcr-repoinit] branch master updated: SLING-8535: make register privilege work when privilege already exists.

This is an automated email from the ASF dual-hosted git repository.

pauls pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-repoinit.git


The following commit(s) were added to refs/heads/master by this push:
     new 62e255f  SLING-8535: make register privilege work when privilege already exists.
62e255f is described below

commit 62e255f517971eca48b7058e5f03de717077e793
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Wed Jun 26 11:46:40 2019 +0200

    SLING-8535: make register privilege work when privilege already exists.
---
 .../sling/jcr/repoinit/impl/PrivilegeVisitor.java       | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeVisitor.java b/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeVisitor.java
index ecbb0d6..a86fc7a 100644
--- a/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeVisitor.java
+++ b/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeVisitor.java
@@ -21,6 +21,8 @@ import org.apache.jackrabbit.api.JackrabbitWorkspace;
 import org.apache.sling.repoinit.parser.operations.RegisterPrivilege;
 
 import javax.jcr.Session;
+import javax.jcr.security.AccessControlException;
+import javax.jcr.security.Privilege;
 
 public class PrivilegeVisitor extends DoNothingVisitor {
     public PrivilegeVisitor(Session session) {
@@ -30,10 +32,19 @@ public class PrivilegeVisitor extends DoNothingVisitor {
     @Override
     public void visitRegisterPrivilege(RegisterPrivilege rp) {
         try {
-            ((JackrabbitWorkspace) session.getWorkspace()).getPrivilegeManager()
-                    .registerPrivilege(rp.getPrivilegeName(), rp.isAbstract(), rp.getDeclaredAggregateNames().toArray(new String[0]));
+            Privilege priv = ((JackrabbitWorkspace) session.getWorkspace()).getPrivilegeManager().getPrivilege(rp.getPrivilegeName());
+            log.info("Privilege {} already exists: {}, no changes made.", rp.getPrivilegeName(), priv);
         } catch (Exception e) {
-            report(e, "Unable to register privilege from: " + rp);
+            if (e instanceof AccessControlException) {
+                try {
+                    ((JackrabbitWorkspace) session.getWorkspace()).getPrivilegeManager()
+                        .registerPrivilege(rp.getPrivilegeName(), rp.isAbstract(), rp.getDeclaredAggregateNames().toArray(new String[0]));
+                } catch (Exception ex) {
+                    report(ex, "Unable to register privilege from: " + rp);
+                }
+            } else {
+                report(e, "Unable to register privilege from: " + rp);
+            }
         }
     }
 }