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/10 16:02:30 UTC
svn commit: r1466488 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/core/
main/java/org/apache/jackrabbit/oak/security/authorization/permission/
test/java/org/apache/jackrabbit/oak/core/
test/java/org/apache/jackrabbit/oak...
Author: angela
Date: Wed Apr 10 14:02:29 2013
New Revision: 1466488
URL: http://svn.apache.org/r1466488
Log:
OAK-527: permissions (wip)
- calculate readstatus for the root tree
- move tree type handling out of ImmuableTree
- testclass for readstatus
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProvider.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProviderImpl.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ReadStatusTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableTree.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableRootTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableTreeTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java Wed Apr 10 14:02:29 2013
@@ -18,9 +18,6 @@
*/
package org.apache.jackrabbit.oak.core;
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
-
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -32,6 +29,9 @@ import org.apache.jackrabbit.oak.api.Tre
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import static com.google.common.base.Preconditions.checkArgument;
+import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
+
/**
* Simple implementation of the Root interface that only supports simple read
* operations (excluding query) based on the {@code NodeState} (or {@code ImmutableTree})
@@ -46,7 +46,7 @@ public final class ImmutableRoot impleme
this(new ImmutableTree(rootState), workspaceName);
}
- public ImmutableRoot(@Nonnull Root root, @Nonnull ImmutableTree.TypeProvider typeProvider) {
+ public ImmutableRoot(@Nonnull Root root, @Nonnull TreeTypeProvider typeProvider) {
this(ImmutableTree.createFromRoot(root, typeProvider), getWorkspaceName(root));
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableTree.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableTree.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableTree.java Wed Apr 10 14:02:29 2013
@@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.core;
import java.util.Iterator;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import com.google.common.base.Objects;
import org.apache.jackrabbit.JcrConstants;
@@ -27,12 +26,8 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.commons.PathUtils;
-import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
-import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
-import org.apache.jackrabbit.oak.spi.security.Context;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.jackrabbit.oak.api.Type.STRING;
@@ -73,21 +68,21 @@ import static org.apache.jackrabbit.oak.
* {@link #getIdentifier()}</li>
* </ul>
*
- * <h3>TypeProvider</h3>
+ * <h3>TreeTypeProvider</h3>
* For optimization purpose an Immutable tree will be associated with a
- * {@code TypeProvider} that allows for fast detection of the following types
+ * {@code TreeTypeProvider} that allows for fast detection of the following types
* of Trees:
*
* <ul>
- * <li>{@link TypeProvider#TYPE_HIDDEN}: a hidden tree whose name starts with ":".
+ * <li>{@link TreeTypeProvider#TYPE_HIDDEN}: a hidden tree whose name starts with ":".
* Please note that the whole subtree of a hidden node is considered hidden.</li>
- * <li>{@link TypeProvider#TYPE_AC}: A tree that stores access control content
+ * <li>{@link TreeTypeProvider#TYPE_AC}: A tree that stores access control content
* and requires special access {@link org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions#READ_ACCESS_CONTROL permissions}.</li>
- * <li>{@link TypeProvider#TYPE_VERSION}: if a given tree is located within
+ * <li>{@link TreeTypeProvider#TYPE_VERSION}: if a given tree is located within
* any of the version related stores defined by JSR 283. Depending on the
* permission evaluation implementation those items require special treatment.</li>
- * <li>{@link TypeProvider#TYPE_DEFAULT}: the default type for trees that don't
- * match any of the uper types.</li>
+ * <li>{@link TreeTypeProvider#TYPE_DEFAULT}: the default type for trees that don't
+ * match any of the upper types.</li>
* </ul>
*
* <h3>Equality and hash code</h3>
@@ -102,15 +97,15 @@ import static org.apache.jackrabbit.oak.
public final class ImmutableTree extends ReadOnlyTree {
private final ParentProvider parentProvider;
- private final TypeProvider typeProvider;
+ private final TreeTypeProvider typeProvider;
private String path;
public ImmutableTree(@Nonnull NodeState rootState) {
- this(ParentProvider.ROOTPROVIDER, "", rootState, TypeProvider.EMPTY);
+ this(ParentProvider.ROOTPROVIDER, "", rootState, TreeTypeProvider.EMPTY);
}
- public ImmutableTree(@Nonnull NodeState rootState, @Nonnull TypeProvider typeProvider) {
+ public ImmutableTree(@Nonnull NodeState rootState, @Nonnull TreeTypeProvider typeProvider) {
this(ParentProvider.ROOTPROVIDER, "", rootState, typeProvider);
}
@@ -119,17 +114,17 @@ public final class ImmutableTree extends
}
public ImmutableTree(@Nonnull ParentProvider parentProvider, @Nonnull String name, @Nonnull NodeState state) {
- this(parentProvider, name, state, TypeProvider.EMPTY);
+ this(parentProvider, name, state, TreeTypeProvider.EMPTY);
}
public ImmutableTree(@Nonnull ParentProvider parentProvider, @Nonnull String name,
- @Nonnull NodeState state, @Nonnull TypeProvider typeProvider) {
+ @Nonnull NodeState state, @Nonnull TreeTypeProvider typeProvider) {
super(null, name, state);
this.parentProvider = checkNotNull(parentProvider);
this.typeProvider = typeProvider;
}
- public static ImmutableTree createFromRoot(@Nonnull Root root, @Nonnull TypeProvider typeProvider) {
+ public static ImmutableTree createFromRoot(@Nonnull Root root, @Nonnull TreeTypeProvider typeProvider) {
if (root instanceof RootImpl) {
return new ImmutableTree(((RootImpl) root).getBaseState(), typeProvider);
} else if (root instanceof ImmutableRoot) {
@@ -255,7 +250,7 @@ public final class ImmutableTree extends
if (tree instanceof ImmutableTree) {
return ((ImmutableTree) tree).getType();
} else {
- return TypeProvider.TYPE_DEFAULT;
+ return TreeTypeProvider.TYPE_DEFAULT;
}
}
@@ -273,79 +268,6 @@ public final class ImmutableTree extends
}
//--------------------------------------------------------------------------
- // TODO
- public interface TypeProvider {
-
- // regular trees
- int TYPE_DEFAULT = 1;
- // version store(s) content
- int TYPE_VERSION = 2;
- // access control content
- int TYPE_AC = 4;
- // node type definition content
- int TYPE_NODE_TYPE = 8;
- // hidden trees
- int TYPE_HIDDEN = 16;
-
- TypeProvider EMPTY = new TypeProvider() {
- @Override
- public int getType(@Nullable ImmutableTree tree) {
- return TYPE_DEFAULT;
- }
- };
-
- int getType(ImmutableTree tree);
- }
-
- public static final class DefaultTypeProvider implements TypeProvider {
-
- private final Context contextInfo;
-
- public DefaultTypeProvider(@Nonnull Context contextInfo) {
- this.contextInfo = contextInfo;
- }
-
- @Override
- public int getType(ImmutableTree tree) {
- ImmutableTree parent = tree.getParent();
- if (parent == null) {
- return TYPE_DEFAULT;
- }
-
- int type;
- switch (parent.getType()) {
- case TYPE_HIDDEN:
- type = TYPE_HIDDEN;
- break;
- case TYPE_NODE_TYPE:
- type = TYPE_NODE_TYPE;
- break;
- case TYPE_VERSION:
- type = TYPE_VERSION;
- break;
- case TYPE_AC:
- type = TYPE_AC;
- break;
- default:
- String name = tree.getName();
- if (NodeStateUtils.isHidden(name)) {
- type = TYPE_HIDDEN;
- } else if (NodeTypeConstants.JCR_NODE_TYPES.equals(name)) {
- type = TYPE_NODE_TYPE;
- } else if (VersionConstants.VERSION_NODE_NAMES.contains(name) ||
- VersionConstants.VERSION_NODE_TYPE_NAMES.contains(NodeStateUtils.getPrimaryTypeName(tree.state))) {
- type = TYPE_VERSION;
- } else if (contextInfo.definesTree(tree)) {
- type = TYPE_AC;
- } else {
- type = TYPE_DEFAULT;
- }
- }
- return type;
- }
- }
-
- //--------------------------------------------------------------------------
public interface ParentProvider {
ParentProvider UNSUPPORTED = new ParentProvider() {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/RootImpl.java Wed Apr 10 14:02:29 2013
@@ -18,19 +18,12 @@
*/
package org.apache.jackrabbit.oak.core;
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath;
-
import java.io.IOException;
import java.io.InputStream;
import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-
import javax.annotation.Nonnull;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.security.auth.Subject;
@@ -70,6 +63,12 @@ import org.apache.jackrabbit.oak.spi.sta
import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
import org.apache.jackrabbit.oak.util.TODO;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
+import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
+import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath;
+
public class RootImpl implements Root {
/**
@@ -452,8 +451,8 @@ public class RootImpl implements Root {
}
@Nonnull
- private ImmutableTree.TypeProvider getTypeProvider() {
- return new ImmutableTree.DefaultTypeProvider(securityProvider.getAccessControlConfiguration().getContext());
+ private TreeTypeProviderImpl getTypeProvider() {
+ return new TreeTypeProviderImpl(securityProvider.getAccessControlConfiguration().getContext());
}
@Nonnull
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeState.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeState.java Wed Apr 10 14:02:29 2013
@@ -122,10 +122,12 @@ public class SecureNodeState extends Abs
public SecureNodeState(@Nonnull NodeState rootState,
@Nonnull PermissionProvider permissionProvider,
- @Nonnull ImmutableTree.TypeProvider typeProvider) {
+ @Nonnull TreeTypeProvider typeProvider) {
this.state = checkNotNull(rootState);
this.base = new ImmutableTree(rootState, typeProvider);
this.permissionProvider = permissionProvider;
+ // calculate the readstatus for the root
+ this.readStatus = permissionProvider.getReadStatus(base, null);
}
private SecureNodeState(
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProvider.java?rev=1466488&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProvider.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProvider.java Wed Apr 10 14:02:29 2013
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.core;
+
+import javax.annotation.Nullable;
+
+/**
+ * TreeTypeProvider... TODO
+ */
+public interface TreeTypeProvider {
+
+ // regular trees
+ int TYPE_DEFAULT = 1;
+ // version store(s) content
+ int TYPE_VERSION = 2;
+ // access control content
+ int TYPE_AC = 4;
+ // node type definition content
+ int TYPE_NODE_TYPE = 8;
+ // hidden trees
+ int TYPE_HIDDEN = 16;
+
+ TreeTypeProvider EMPTY = new TreeTypeProvider() {
+ @Override
+ public int getType(@Nullable ImmutableTree tree) {
+ return TYPE_DEFAULT;
+ }
+ };
+
+ int getType(ImmutableTree tree);
+}
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProviderImpl.java?rev=1466488&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProviderImpl.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeTypeProviderImpl.java Wed Apr 10 14:02:29 2013
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.core;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
+import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
+import org.apache.jackrabbit.oak.spi.security.Context;
+import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
+
+/**
+ * DefaultTreeTypeProvider... TODO
+ */
+public final class TreeTypeProviderImpl implements TreeTypeProvider {
+
+ private final Context contextInfo;
+
+ public TreeTypeProviderImpl(@Nonnull Context contextInfo) {
+ this.contextInfo = contextInfo;
+ }
+
+ @Override
+ public int getType(ImmutableTree tree) {
+ ImmutableTree parent = tree.getParent();
+ if (parent == null) {
+ return TYPE_DEFAULT;
+ }
+
+ int type;
+ switch (parent.getType()) {
+ case TYPE_HIDDEN:
+ type = TYPE_HIDDEN;
+ break;
+ case TYPE_NODE_TYPE:
+ type = TYPE_NODE_TYPE;
+ break;
+ case TYPE_VERSION:
+ type = TYPE_VERSION;
+ break;
+ case TYPE_AC:
+ type = TYPE_AC;
+ break;
+ default:
+ String name = tree.getName();
+ if (NodeStateUtils.isHidden(name)) {
+ type = TYPE_HIDDEN;
+ } else if (NodeTypeConstants.JCR_NODE_TYPES.equals(name)) {
+ type = TYPE_NODE_TYPE;
+ } else if (VersionConstants.VERSION_NODE_NAMES.contains(name) ||
+ VersionConstants.VERSION_NODE_TYPE_NAMES.contains(NodeStateUtils.getPrimaryTypeName(tree.state))) {
+ type = TYPE_VERSION;
+ } else if (contextInfo.definesTree(tree)) {
+ type = TYPE_AC;
+ } else {
+ type = TYPE_DEFAULT;
+ }
+ }
+ return type;
+ }
+}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java Wed Apr 10 14:02:29 2013
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.core.ImmutableRoot;
import org.apache.jackrabbit.oak.core.ImmutableTree;
import org.apache.jackrabbit.oak.core.TreeImpl;
+import org.apache.jackrabbit.oak.core.TreeTypeProvider;
import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
import org.apache.jackrabbit.oak.security.authorization.AccessControlConstants;
import org.apache.jackrabbit.oak.security.privilege.PrivilegeBits;
@@ -109,7 +110,7 @@ public class PermissionHook implements P
}
private static Tree getTree(String name, NodeState nodeState) {
- return new ImmutableTree(ImmutableTree.ParentProvider.UNSUPPORTED, name, nodeState, ImmutableTree.TypeProvider.EMPTY);
+ return new ImmutableTree(ImmutableTree.ParentProvider.UNSUPPORTED, name, nodeState, TreeTypeProvider.EMPTY);
}
private static String getAccessControlledPath(Node aclNode) {
@@ -360,4 +361,4 @@ public class PermissionHook implements P
return sb.toString();
}
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java Wed Apr 10 14:02:29 2013
@@ -31,6 +31,8 @@ import org.apache.jackrabbit.oak.api.Typ
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.core.ImmutableRoot;
import org.apache.jackrabbit.oak.core.ImmutableTree;
+import org.apache.jackrabbit.oak.core.TreeTypeProvider;
+import org.apache.jackrabbit.oak.core.TreeTypeProviderImpl;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
import org.apache.jackrabbit.oak.security.authorization.AccessControlConstants;
@@ -177,7 +179,7 @@ public class PermissionProviderImpl impl
if (root instanceof ImmutableRoot) {
return (ImmutableRoot) root;
} else {
- return new ImmutableRoot(root, new ImmutableTree.DefaultTypeProvider(acConfig.getContext()));
+ return new ImmutableRoot(root, new TreeTypeProviderImpl(acConfig.getContext()));
}
}
@@ -194,12 +196,12 @@ public class PermissionProviderImpl impl
}
private static boolean isHidden(@Nonnull Tree tree, @Nullable PropertyState propertyState) {
- return ImmutableTree.TypeProvider.TYPE_HIDDEN == ImmutableTree.getType(tree)
+ return TreeTypeProvider.TYPE_HIDDEN == ImmutableTree.getType(tree)
&& (propertyState != null && NodeStateUtils.isHidden(propertyState.getName()));
}
private static boolean isAccessControlContent(@Nonnull Tree tree) {
- return ImmutableTree.TypeProvider.TYPE_AC == ImmutableTree.getType(tree);
+ return TreeTypeProvider.TYPE_AC == ImmutableTree.getType(tree);
}
private boolean canReadAccessControlContent(@Nonnull Tree acTree, @Nullable PropertyState acProperty) {
@@ -207,7 +209,7 @@ public class PermissionProviderImpl impl
}
private static boolean isVersionContent(@Nonnull Tree tree) {
- return ImmutableTree.TypeProvider.TYPE_VERSION == ImmutableTree.getType(tree);
+ return TreeTypeProvider.TYPE_VERSION == ImmutableTree.getType(tree);
}
private ReadStatus getVersionContentReadStatus(@Nonnull Tree versionStoreTree, @Nullable PropertyState property) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java Wed Apr 10 14:02:29 2013
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.core.ImmutableTree;
import org.apache.jackrabbit.oak.core.TreeImpl;
+import org.apache.jackrabbit.oak.core.TreeTypeProvider;
import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
import org.apache.jackrabbit.oak.spi.commit.DefaultValidator;
import org.apache.jackrabbit.oak.spi.commit.Validator;
@@ -145,7 +146,7 @@ class PermissionValidator extends Defaul
private Validator checkPermissions(@Nonnull Tree tree, boolean isBefore,
long defaultPermission) throws CommitFailedException {
- if (ImmutableTree.getType(tree) == ImmutableTree.TypeProvider.TYPE_HIDDEN) {
+ if (ImmutableTree.getType(tree) == TreeTypeProvider.TYPE_HIDDEN) {
// ignore everything below a hidden tree
return null;
}
@@ -269,4 +270,4 @@ class PermissionValidator extends Defaul
}
return versionHistory;
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java Wed Apr 10 14:02:29 2013
@@ -25,6 +25,7 @@ import javax.security.auth.Subject;
import org.apache.jackrabbit.oak.core.ImmutableRoot;
import org.apache.jackrabbit.oak.core.ImmutableTree;
+import org.apache.jackrabbit.oak.core.TreeTypeProviderImpl;
import org.apache.jackrabbit.oak.spi.commit.Validator;
import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
import org.apache.jackrabbit.oak.spi.security.Context;
@@ -74,7 +75,7 @@ public class PermissionValidatorProvider
}
private ImmutableTree createTree(NodeState root) {
- return new ImmutableTree(root, new ImmutableTree.DefaultTypeProvider(getAccessControlContext()));
+ return new ImmutableTree(root, new TreeTypeProviderImpl(getAccessControlContext()));
}
private PermissionProvider getPermissionProvider(NodeState before) {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableRootTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableRootTest.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableRootTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableRootTest.java Wed Apr 10 14:02:29 2013
@@ -44,7 +44,7 @@ public class ImmutableRootTest extends O
root.commit();
// Acquire a fresh new root to avoid problems from lingering state
- this.root = new ImmutableRoot(session.getLatestRoot(), ImmutableTree.TypeProvider.EMPTY);
+ this.root = new ImmutableRoot(session.getLatestRoot(), TreeTypeProvider.EMPTY);
}
// TODO: add more tests
@@ -106,4 +106,4 @@ public class ImmutableRootTest extends O
// success
}
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableTreeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableTreeTest.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableTreeTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/ImmutableTreeTest.java Wed Apr 10 14:02:29 2013
@@ -76,7 +76,7 @@ public class ImmutableTreeTest extends O
@Test
public void testGetNodeState() {
- ImmutableTree tree = ImmutableTree.createFromRoot(root, ImmutableTree.TypeProvider.EMPTY);
+ ImmutableTree tree = ImmutableTree.createFromRoot(root, TreeTypeProvider.EMPTY);
assertNotNull(tree.getNodeState());
for (Tree child : tree.getChildren()) {
@@ -87,23 +87,23 @@ public class ImmutableTreeTest extends O
@Test
public void testRoot() {
- ImmutableTree tree = ImmutableTree.createFromRoot(root, ImmutableTree.TypeProvider.EMPTY);
+ ImmutableTree tree = ImmutableTree.createFromRoot(root, TreeTypeProvider.EMPTY);
assertTrue(tree.isRoot());
assertNull(tree.getParent());
assertEquals("", tree.getName());
- assertEquals(ImmutableTree.TypeProvider.TYPE_DEFAULT, tree.getType());
+ assertEquals(TreeTypeProvider.TYPE_DEFAULT, tree.getType());
}
@Test
public void testGetParent() {
- ImmutableTree tree = ImmutableTree.createFromRoot(root, ImmutableTree.TypeProvider.EMPTY);
+ ImmutableTree tree = ImmutableTree.createFromRoot(root, TreeTypeProvider.EMPTY);
assertNull(tree.getParent());
ImmutableTree child = tree.getChild("x");
assertNotNull(child.getParent());
assertEquals("/", child.getParent().getPath());
- ImmutableTree disconnected = new ImmutableTree(ImmutableTree.ParentProvider.UNSUPPORTED, child.getName(), child.getNodeState(), ImmutableTree.TypeProvider.EMPTY);
+ ImmutableTree disconnected = new ImmutableTree(ImmutableTree.ParentProvider.UNSUPPORTED, child.getName(), child.getNodeState(), TreeTypeProvider.EMPTY);
try {
disconnected.getParent();
} catch (UnsupportedOperationException e) {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java?rev=1466488&r1=1466487&r2=1466488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java Wed Apr 10 14:02:29 2013
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.oak.api.Com
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.core.ImmutableRoot;
import org.apache.jackrabbit.oak.core.ImmutableTree;
+import org.apache.jackrabbit.oak.core.TreeTypeProvider;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
import org.apache.jackrabbit.oak.security.authorization.restriction.RestrictionProviderImpl;
@@ -308,7 +309,7 @@ public class CompiledPermissionImplTest
// TODO: tests for path base evaluation
private CompiledPermissionImpl createPermissions(Set<Principal> principals) {
- ImmutableTree permissionsTree = new ImmutableRoot(root, ImmutableTree.TypeProvider.EMPTY).getTree(PERMISSIONS_STORE_PATH);
+ ImmutableTree permissionsTree = new ImmutableRoot(root, TreeTypeProvider.EMPTY).getTree(PERMISSIONS_STORE_PATH);
return new CompiledPermissionImpl(principals, permissionsTree, pbp, rp);
}
@@ -383,4 +384,4 @@ public class CompiledPermissionImplTest
return name;
}
}
-}
\ No newline at end of file
+}
Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ReadStatusTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ReadStatusTest.java?rev=1466488&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ReadStatusTest.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ReadStatusTest.java Wed Apr 10 14:02:29 2013
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.authorization.permission;
+
+import org.apache.jackrabbit.oak.spi.security.authorization.permission.ReadStatus;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * ReadStatusTest... TODO
+ */
+public class ReadStatusTest {
+
+ @Test
+ public void testAllowAll() {
+ ReadStatus allowAll = ReadStatus.ALLOW_ALL;
+ assertTrue(allowAll.includes(ReadStatus.ALLOW_THIS));
+ assertTrue(allowAll.includes(ReadStatus.ALLOW_CHILDREN));
+ assertTrue(allowAll.includes(ReadStatus.ALLOW_NODES));
+ assertTrue(allowAll.includes(ReadStatus.ALLOW_PROPERTIES));
+ assertTrue(allowAll.includes(ReadStatus.ALLOW_THIS_PROPERTIES));
+ assertTrue(allowAll.includes(ReadStatus.ALLOW_CHILDITEMS));
+ assertTrue(allowAll.includes(ReadStatus.ALLOW_ALL));
+ }
+}