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

joerghoh pushed a commit to branch SLING-12642-cache-privileges
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-repoinit.git

commit 269ce910915c8d43b4119c4950942fccc07ad4d2
Author: Joerg Hoh <[email protected]>
AuthorDate: Mon Feb 10 15:47:45 2025 +0100

    do not cache non-resolved principals
---
 .../jcr/repoinit/impl/PrivilegeCachingSessionWrapper.java | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeCachingSessionWrapper.java
 
b/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeCachingSessionWrapper.java
index 3708d90..a903546 100644
--- 
a/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeCachingSessionWrapper.java
+++ 
b/src/main/java/org/apache/sling/jcr/repoinit/impl/PrivilegeCachingSessionWrapper.java
@@ -89,7 +89,7 @@ public class PrivilegeCachingSessionWrapper {
     }
 
     /**
-     * If a privilege is an aggreated, return the privilges it contains, 
otherwise return the privilege itself
+     * If a privilege is an aggregated, return the privileges it contains, 
otherwise return the privilege itself
      * @param priv the privilege 
      * @return
      */
@@ -104,12 +104,15 @@ public class PrivilegeCachingSessionWrapper {
     }
 
     public Principal getPrincipal (String principalName) throws 
RepositoryException {
+        // Do not cache null principals
         if (idToPrincipal.containsKey(principalName)) {
-            return idToPrincipal.get(principalName);
-        } else {
-            Principal p = AccessControlUtils.getPrincipal(this.getSession(), 
principalName);
-            idToPrincipal.put(principalName, p);
-            return p;
+            Principal p = idToPrincipal.get(principalName);
+            if (p != null) {
+                return p;
+            }
         }
+        Principal p = AccessControlUtils.getPrincipal(this.getSession(), 
principalName);
+        idToPrincipal.put(principalName, p);
+        return p;
     }
 }

Reply via email to