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 2013/04/04 09:54:08 UTC

svn commit: r1464336 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/ReadStatus.java

Author: angela
Date: Thu Apr  4 07:54:08 2013
New Revision: 1464336

URL: http://svn.apache.org/r1464336
Log:
OAK-527: permissions (wip)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/ReadStatus.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/ReadStatus.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/ReadStatus.java?rev=1464336&r1=1464335&r2=1464336&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/ReadStatus.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/ReadStatus.java Thu Apr  4 07:54:08 2013
@@ -19,6 +19,8 @@ package org.apache.jackrabbit.oak.spi.se
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 
+import org.apache.jackrabbit.oak.security.privilege.PrivilegeBits;
+
 /**
  * ReadStatus... TODO
  */
@@ -49,16 +51,30 @@ public class ReadStatus {
     }
 
     @CheckForNull
+    public static ReadStatus getInstance(PrivilegeBits pb, boolean isAllow) {
+        if (pb.includesRead(Permissions.READ)) {
+            return (isAllow) ? ReadStatus.ALLOW_ALL : ReadStatus.DENY_ALL;
+        } else if (pb.includesRead(Permissions.READ_NODE)) {
+            return (isAllow) ? ReadStatus.ALLOW_NODES : ReadStatus.DENY_NODES;
+        } else if (pb.includesRead(Permissions.READ_PROPERTY)) {
+            return (isAllow) ? ReadStatus.ALLOW_PROPERTIES : ReadStatus.DENY_PROPERTIES;
+        } else {
+            return null;
+        }
+    }
+
+    @CheckForNull
     public static ReadStatus getChildStatus(@Nullable ReadStatus parentStatus) {
         if (parentStatus == null) {
             return null;
         }
+        // TODO
         switch (parentStatus.status) {
-            case 1: return null; // recalculate for child item
+            case 1: return null; // recalculate for child items
             case 2:
-            case 3: return (parentStatus.isAllow) ? ALLOW_NODES : null;  // TODO
+            case 3: return (parentStatus.isAllow) ? ALLOW_THIS : DENY_THIS;
             case 4:
-            case 5: return (parentStatus.isAllow) ? ALLOW_PROPERTIES : null;   // TODO
+            case 5: return null; // recalculate for properties of child node
             case 6:
             case 7: return (parentStatus.isAllow) ? ALLOW_ALL : DENY_ALL;
             default: throw new IllegalArgumentException("invalid status");
@@ -77,7 +93,21 @@ public class ReadStatus {
         return isAllow;
     }
 
+    public boolean isAll() {
+        return status == 7;
+    }
+
     public boolean appliesToThis() {
         return status == 1;
     }
+
+    public int getStatus() {
+        return status;
+    }
+
+    //-------------------------------------------------------------< Object >---
+    @Override
+    public String toString() {
+        return "ReadStatus : " + (isAllow ? "allow " : "deny ") + status;
+    }
 }