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