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; } }
