You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2015/12/08 12:29:32 UTC

svn commit: r1718571 - /jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugTreePermission.java

Author: angela
Date: Tue Dec  8 11:29:32 2015
New Revision: 1718571

URL: http://svn.apache.org/viewvc?rev=1718571&view=rev
Log:
OAK-3700 : authorization setup for closed user groups (WIP)

Modified:
    jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugTreePermission.java

Modified: jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugTreePermission.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugTreePermission.java?rev=1718571&r1=1718570&r2=1718571&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugTreePermission.java (original)
+++ jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugTreePermission.java Tue Dec  8 11:29:32 2015
@@ -31,8 +31,7 @@ import org.apache.jackrabbit.oak.spi.sec
 final class CugTreePermission extends AbstractTreePermission implements CugConstants {
 
     private final TreePermission parent;
-    private Boolean inCug;
-    private Boolean allow;
+    private Status status;
 
     CugTreePermission(@Nonnull Tree tree, @Nonnull TreeType type, @Nonnull TreePermission parent,
                       @Nonnull CugPermissionProvider permissionProvider) {
@@ -44,35 +43,39 @@ final class CugTreePermission extends Ab
                       @Nonnull CugPermissionProvider permissionProvider, boolean inCug, boolean canRead) {
         super(tree, type, permissionProvider);
         this.parent = parent;
-        this.inCug = inCug;
-        this.allow = canRead;
+        status = new Status(inCug, canRead);
     }
 
     boolean isInCug() {
-        if (inCug == null) {
-            loadCug();
+        if (status == null) {
+            loadStatus();
         }
-        return inCug;
+        return status.inCug;
     }
 
     boolean isAllow() {
-        if (allow == null) {
-            loadCug();
+        if (status == null) {
+            loadStatus();
         }
-        return allow;
+        return status.allow;
     }
 
-    private void loadCug() {
+    private Status getStatus() {
+        if (status == null) {
+            loadStatus();
+        }
+        return status;
+    }
+
+    private void loadStatus() {
         Tree cugTree = CugUtil.getCug(tree);
         if (cugTree != null) {
-            inCug = true;
-            allow = permissionProvider.isAllow(cugTree);
+            status = new Status(true, permissionProvider.isAllow(cugTree));
         } else if (parent instanceof CugTreePermission) {
-            inCug = ((CugTreePermission) parent).isInCug();
-            allow = ((CugTreePermission) parent).isAllow();
+            status = ((CugTreePermission) parent).getStatus();
+            ;
         } else {
-            inCug = false;
-            allow = false;
+            status = Status.FALSE;
         }
     }
 
@@ -107,4 +110,18 @@ final class CugTreePermission extends Ab
     public boolean isGranted(long permissions, @Nonnull PropertyState property) {
         return permissions == Permissions.READ_PROPERTY && isAllow();
     }
+
+    //--------------------------------------------------------------------------
+    private final static class Status {
+
+        private static final Status FALSE = new Status(false, false);
+
+        private final boolean inCug;
+        private final boolean allow;
+
+        private Status(boolean inCug, boolean allow) {
+            this.inCug = inCug;
+            this.allow = allow;
+        }
+    }
 }
\ No newline at end of file