Author: angela
Date: Tue Oct 27 17:58:21 2015
New Revision: 1710857
URL: http://svn.apache.org/viewvc?rev=1710857&view=rev
Log:
OAK-2674 : Fix FindBug Issues
- remove public modified where not needed
- remove unused methods
- consistenly add notnull/checkfornull annotations
- avoid null-dereference even if properties are expected to be present by
nt-definition
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/AllPermissions.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissions.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/EntryPredicate.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/NoPermissions.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntry.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryCache.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProvider.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImpl.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/PermissionStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PrincipalPermissionEntries.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermission.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImplTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/AllPermissions.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/AllPermissions.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/AllPermissions.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/AllPermissions.java
Tue Oct 27 17:58:21 2015
@@ -32,14 +32,14 @@ import org.apache.jackrabbit.oak.spi.sec
* Implementation of the {@code CompiledPermissions} interface that grants full
* permission everywhere.
*/
-public final class AllPermissions implements CompiledPermissions {
+final class AllPermissions implements CompiledPermissions {
private static final CompiledPermissions INSTANCE = new AllPermissions();
private AllPermissions() {
}
- public static CompiledPermissions getInstance() {
+ static CompiledPermissions getInstance() {
return INSTANCE;
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
Tue Oct 27 17:58:21 2015
@@ -441,7 +441,7 @@ final class CompiledPermissionImpl imple
private final TreePermissionImpl parent;
private final TreeType type;
- private final boolean readableTree;
+ private final boolean isReadableTree;
private Collection<PermissionEntry> userEntries;
private Collection<PermissionEntry> groupEntries;
@@ -457,7 +457,7 @@ final class CompiledPermissionImpl imple
} else {
parent = null;
}
- readableTree = readPolicy.isReadableTree(tree, parent);
+ isReadableTree = readPolicy.isReadableTree(tree, parent);
}
//-------------------------------------------------< TreePermission
>---
@@ -471,7 +471,7 @@ final class CompiledPermissionImpl imple
@Override
public boolean canRead() {
boolean isAcTree = isAcTree();
- if (!isAcTree && readableTree) {
+ if (!isAcTree && isReadableTree) {
return true;
}
if (readStatus == null) {
@@ -498,7 +498,7 @@ final class CompiledPermissionImpl imple
@Override
public boolean canRead(@Nonnull PropertyState property) {
boolean isAcTree = isAcTree();
- if (!isAcTree && readableTree) {
+ if (!isAcTree && isReadableTree) {
return true;
}
if (readStatus != null && readStatus.allowsProperties()) {
@@ -626,6 +626,7 @@ final class CompiledPermissionImpl imple
return false;
}
+ @Override
public boolean isReadableTree(@Nonnull Tree tree, boolean exactMatch) {
return false;
}
@@ -654,9 +655,10 @@ final class CompiledPermissionImpl imple
isDefaultPaths = (readPaths.size() == DEFAULT_READ_PATHS.size())
&& readPaths.containsAll(DEFAULT_READ_PATHS);
}
+ @Override
public boolean isReadableTree(@Nonnull Tree tree, @Nullable
TreePermissionImpl parent) {
if (parent != null) {
- if (parent.readableTree) {
+ if (parent.isReadableTree) {
return true;
} else if (!isDefaultPaths ||
parent.tree.getName().equals(JcrConstants.JCR_SYSTEM)) {
return isReadableTree(tree, true);
@@ -668,6 +670,7 @@ final class CompiledPermissionImpl imple
}
}
+ @Override
public boolean isReadableTree(@Nonnull Tree tree, boolean exactMatch) {
String targetPath = tree.getPath();
for (String path : readPaths) {
@@ -685,6 +688,7 @@ final class CompiledPermissionImpl imple
return false;
}
+ @Override
public boolean isReadablePath(@Nullable String treePath, boolean
exactMatch) {
if (treePath != null) {
for (String path : readPaths) {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissions.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissions.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissions.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissions.java
Tue Oct 27 17:58:21 2015
@@ -33,7 +33,7 @@ import org.apache.jackrabbit.oak.spi.sec
* be may able to simplify the evaluation. See e.g. {@link
org.apache.jackrabbit.oak.security.authorization.permission.AllPermissions}
* and {@link
org.apache.jackrabbit.oak.security.authorization.permission.NoPermissions}
*/
-public interface CompiledPermissions {
+interface CompiledPermissions {
/**
* Refresh this instance to reflect the permissions as present with the
@@ -104,7 +104,7 @@ public interface CompiledPermissions {
Set<String> getPrivileges(@Nullable Tree tree);
/**
- * Retruns true if all privileges identified by the given {@code
privilegeNames}
+ * Returns {@code true} if all privileges identified by the given {@code
privilegeNames}
* are granted at the given {@code tree}.
*
*
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/EntryPredicate.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/EntryPredicate.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/EntryPredicate.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/EntryPredicate.java
Tue Oct 27 17:58:21 2015
@@ -39,17 +39,16 @@ final class EntryPredicate implements Pr
private final Tree parent;
private final boolean respectParent;
- public EntryPredicate(@Nonnull Tree tree, @Nullable PropertyState property,
- boolean respectParent) {
- this(tree, property, tree.getPath(), respectParent);
+ EntryPredicate() {
+ this(null, null, null, false);
}
- public EntryPredicate(@Nonnull String path, boolean respectParent) {
- this(null, null, path, respectParent);
+ EntryPredicate(@Nonnull Tree tree, @Nullable PropertyState property,
boolean respectParent) {
+ this(tree, property, tree.getPath(), respectParent);
}
- public EntryPredicate() {
- this(null, null, null, false);
+ EntryPredicate(@Nonnull String path, boolean respectParent) {
+ this(null, null, path, respectParent);
}
private EntryPredicate(@Nullable Tree tree, @Nullable PropertyState
property,
@@ -69,10 +68,11 @@ final class EntryPredicate implements Pr
}
@CheckForNull
- public String getPath() {
+ String getPath() {
return path;
}
+ //----------------------------------------------------------< Predicate
>---
@Override
public boolean apply(@Nullable PermissionEntry entry) {
return apply(entry, true);
@@ -92,5 +92,4 @@ final class EntryPredicate implements Pr
return entry.matches();
}
}
-
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
Tue Oct 27 17:58:21 2015
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.oak.security.authorization.permission;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -88,7 +89,7 @@ public class MoveAwarePermissionValidato
//----------------------------------------------------------< Validator
>---
@Override
public Validator childNodeAdded(String name, NodeState after) throws
CommitFailedException {
- if (moveCtx.processAdd((ImmutableTree)
getParentAfter().getChild(name), this)) {
+ if (moveCtx.processAdd(getParentAfter(), name, this)) {
return null;
} else {
return super.childNodeAdded(name, after);
@@ -97,7 +98,7 @@ public class MoveAwarePermissionValidato
@Override
public Validator childNodeDeleted(String name, NodeState before) throws
CommitFailedException {
- if (moveCtx.processDelete((ImmutableTree)
getParentBefore().getChild(name), this)) {
+ if (moveCtx.processDelete(getParentBefore(), name, this)) {
return null;
} else {
return super.childNodeDeleted(name, before);
@@ -120,11 +121,15 @@ public class MoveAwarePermissionValidato
rootAfter = RootFactory.createReadOnlyRoot(after);
}
- private boolean containsMove(Tree parentBefore, Tree parentAfter) {
+ private boolean containsMove(@Nullable Tree parentBefore, @Nullable
Tree parentAfter) {
return
moveTracker.containsMove(PermissionUtil.getPath(parentBefore, parentAfter));
}
- private boolean processAdd(ImmutableTree child,
MoveAwarePermissionValidator validator) throws CommitFailedException {
+ private boolean processAdd(@CheckForNull Tree parent, @Nonnull String
name , @Nonnull MoveAwarePermissionValidator validator) throws
CommitFailedException {
+ if (parent == null) {
+ return false;
+ }
+ ImmutableTree child = (ImmutableTree) parent.getChild(name);
String sourcePath = moveTracker.getSourcePath(child.getPath());
if (sourcePath != null) {
ImmutableTree source = (ImmutableTree)
rootBefore.getTree(sourcePath);
@@ -138,7 +143,11 @@ public class MoveAwarePermissionValidato
return false;
}
- private boolean processDelete(ImmutableTree child,
MoveAwarePermissionValidator validator) throws CommitFailedException {
+ private boolean processDelete(@CheckForNull Tree parent, @Nonnull
String name, @Nonnull MoveAwarePermissionValidator validator) throws
CommitFailedException {
+ if (parent == null) {
+ return false;
+ }
+ ImmutableTree child = (ImmutableTree) parent.getChild(name);
String destPath = moveTracker.getDestPath(child.getPath());
if (destPath != null) {
ImmutableTree dest = (ImmutableTree)
rootAfter.getTree(destPath);
@@ -153,8 +162,8 @@ public class MoveAwarePermissionValidato
return false;
}
- private boolean diff(ImmutableTree source, ImmutableTree dest,
- MoveAwarePermissionValidator validator) throws
CommitFailedException {
+ private boolean diff(@Nonnull ImmutableTree source, @Nonnull
ImmutableTree dest,
+ @Nonnull MoveAwarePermissionValidator validator)
throws CommitFailedException {
Validator nextValidator = validator.visibleValidator(source, dest);
CommitFailedException e = EditorDiff.process(nextValidator ,
source.getNodeState(), dest.getNodeState());
if (e != null) {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/NoPermissions.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/NoPermissions.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/NoPermissions.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/NoPermissions.java
Tue Oct 27 17:58:21 2015
@@ -30,14 +30,14 @@ import org.apache.jackrabbit.oak.spi.sec
/**
* Implementation of the {@code CompiledPermission} interface that denies all
permissions.
*/
-public final class NoPermissions implements CompiledPermissions {
+final class NoPermissions implements CompiledPermissions {
private static final CompiledPermissions INSTANCE = new NoPermissions();
private NoPermissions() {
}
- public static CompiledPermissions getInstance() {
+ static CompiledPermissions getInstance() {
return INSTANCE;
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntry.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntry.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntry.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntry.java
Tue Oct 27 17:58:21 2015
@@ -65,19 +65,19 @@ final class PermissionEntry implements C
this.restriction = restriction;
}
- public boolean matches(@Nonnull Tree tree, @Nullable PropertyState
property) {
+ boolean matches(@Nonnull Tree tree, @Nullable PropertyState property) {
return restriction == RestrictionPattern.EMPTY ||
restriction.matches(tree, property);
}
- public boolean matches(@Nonnull String treePath) {
+ boolean matches(@Nonnull String treePath) {
return restriction == RestrictionPattern.EMPTY ||
restriction.matches(treePath);
}
- public boolean matches() {
+ boolean matches() {
return restriction == RestrictionPattern.EMPTY ||
restriction.matches();
}
- public boolean matchesParent(@Nonnull String parentPath) {
+ boolean matchesParent(@Nonnull String parentPath) {
return Text.isDescendantOrEqual(path, parentPath) && (restriction ==
RestrictionPattern.EMPTY || restriction.matches(parentPath));
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryCache.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryCache.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryCache.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryCache.java
Tue Oct 27 17:58:21 2015
@@ -22,7 +22,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-
import javax.annotation.Nonnull;
/**
@@ -37,12 +36,12 @@ import javax.annotation.Nonnull;
* fallback to the direct store.load() methods when providing the entries.
if those principals with many entries
* are used often, they might get elected to live in the global cache;
memory permitting.
*/
-public class PermissionEntryCache {
+class PermissionEntryCache {
private final Map<String, PrincipalPermissionEntries> entries = new
HashMap<String, PrincipalPermissionEntries>();
@Nonnull
- public PrincipalPermissionEntries getEntries(@Nonnull PermissionStore
store,
+ PrincipalPermissionEntries getEntries(@Nonnull PermissionStore store,
@Nonnull String
principalName) {
PrincipalPermissionEntries ppe = entries.get(principalName);
if (ppe == null) {
@@ -57,9 +56,9 @@ public class PermissionEntryCache {
return ppe;
}
- public void load(@Nonnull PermissionStore store,
- @Nonnull Map<String, Collection<PermissionEntry>>
pathEntryMap,
- @Nonnull String principalName) {
+ void load(@Nonnull PermissionStore store,
+ @Nonnull Map<String, Collection<PermissionEntry>> pathEntryMap,
+ @Nonnull String principalName) {
// todo: conditionally load entries if too many
PrincipalPermissionEntries ppe = getEntries(store, principalName);
for (Map.Entry<String, Collection<PermissionEntry>> e:
ppe.getEntries().entrySet()) {
@@ -73,13 +72,13 @@ public class PermissionEntryCache {
}
}
- public void load(@Nonnull PermissionStore store,
- @Nonnull Collection<PermissionEntry> ret,
- @Nonnull String principalName,
- @Nonnull String path) {
+ void load(@Nonnull PermissionStore store,
+ @Nonnull Collection<PermissionEntry> ret,
+ @Nonnull String principalName,
+ @Nonnull String path) {
PrincipalPermissionEntries ppe = entries.get(principalName);
if (ppe == null) {
- ppe = new PrincipalPermissionEntries(principalName);
+ ppe = new PrincipalPermissionEntries();
entries.put(principalName, ppe);
}
Collection<PermissionEntry> pes = ppe.getEntries().get(path);
@@ -96,16 +95,16 @@ public class PermissionEntryCache {
}
}
- public long getNumEntries(@Nonnull PermissionStore store,
- @Nonnull String principalName,
- long max) {
+ long getNumEntries(@Nonnull PermissionStore store,
+ @Nonnull String principalName,
+ long max) {
PrincipalPermissionEntries ppe = entries.get(principalName);
return ppe == null
? store.getNumEntries(principalName, max)
: ppe.getEntries().size();
}
- public void flush(@Nonnull Set<String> principalNames) {
+ void flush(@Nonnull Set<String> principalNames) {
entries.keySet().removeAll(principalNames);
}
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProvider.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProvider.java
Tue Oct 27 17:58:21 2015
@@ -35,8 +35,5 @@ interface PermissionEntryProvider {
@Nonnull
Collection<PermissionEntry> getEntries(@Nonnull Tree accessControlledTree);
- @Nonnull
- Collection<PermissionEntry> getEntries(@Nonnull String
accessControlledPath);
-
void flush();
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImpl.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImpl.java
Tue Oct 27 17:58:21 2015
@@ -113,11 +113,14 @@ class PermissionEntryProviderImpl implem
}
}
+ //--------------------------------------------< PermissionEntryProvider
>---
+ @Override
public void flush() {
cache.flush(principalNames);
init();
}
+ @Override
@Nonnull
public Iterator<PermissionEntry> getEntryIterator(@Nonnull EntryPredicate
predicate) {
if (existingNames.isEmpty()) {
@@ -127,6 +130,7 @@ class PermissionEntryProviderImpl implem
}
}
+ @Override
@Nonnull
public Collection<PermissionEntry> getEntries(@Nonnull Tree
accessControlledTree) {
if (existingNames.isEmpty()) {
@@ -141,8 +145,9 @@ class PermissionEntryProviderImpl implem
}
}
+ //------------------------------------------------------------< private
>---
@Nonnull
- public Collection<PermissionEntry> getEntries(@Nonnull String path) {
+ private Collection<PermissionEntry> getEntries(@Nonnull String path) {
if (existingNames.isEmpty()) {
return Collections.emptyList();
} else if (pathEntryMap != null) {
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=1710857&r1=1710856&r2=1710857&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
Tue Oct 27 17:58:21 2015
@@ -80,6 +80,7 @@ public class PermissionHook implements P
this.restrictionProvider = restrictionProvider;
}
+ //---------------------------------------------------------< CommitHook
>---
@Nonnull
@Override
public NodeState processCommit(
@@ -100,11 +101,14 @@ public class PermissionHook implements P
return rootAfter.getNodeState();
}
+ //-------------------------------------------------------------< Object
>---
@Override
public String toString() {
return "PermissionHook";
}
+ //------------------------------------------------------------< private
>---
+
private void apply() {
for (Map.Entry<String, PermissionStoreEditor> entry :
deleted.entrySet()) {
entry.getValue().removePermissionEntries();
@@ -139,7 +143,7 @@ public class PermissionHook implements P
String path = parentPath + '/' + name;
if (isACL.apply(after)) {
PermissionStoreEditor psEditor =
createPermissionStoreEditor(name, after);
- modified.put(psEditor.accessControlledPath, psEditor);
+ modified.put(psEditor.getPath(), psEditor);
} else {
after.compareAgainstBaseState(EMPTY_NODE, new Diff(path));
}
@@ -156,22 +160,22 @@ public class PermissionHook implements P
if (isACL.apply(before)) {
if (isACL.apply(after)) {
PermissionStoreEditor psEditor =
createPermissionStoreEditor(name, after);
- modified.put(psEditor.accessControlledPath, psEditor);
+ modified.put(psEditor.getPath(), psEditor);
// also consider to remove the ACL from removed entries of
other principals
PermissionStoreEditor beforeEditor =
createPermissionStoreEditor(name, before);
-
beforeEditor.entries.keySet().removeAll(psEditor.entries.keySet());
- if (!beforeEditor.entries.isEmpty()) {
+ beforeEditor.removePermissionEntries(psEditor);
+ if (!beforeEditor.isEmpty()) {
deleted.put(parentPath, beforeEditor);
}
} else {
PermissionStoreEditor psEditor =
createPermissionStoreEditor(name, before);
- deleted.put(psEditor.accessControlledPath, psEditor);
+ deleted.put(psEditor.getPath(), psEditor);
}
} else if (isACL.apply(after)) {
PermissionStoreEditor psEditor =
createPermissionStoreEditor(name, after);
- modified.put(psEditor.accessControlledPath, psEditor);
+ modified.put(psEditor.getPath(), psEditor);
} else {
after.compareAgainstBaseState(before, new Diff(path));
}
@@ -187,7 +191,7 @@ public class PermissionHook implements P
String path = parentPath + '/' + name;
if (isACL.apply(before)) {
PermissionStoreEditor psEditor =
createPermissionStoreEditor(name, before);
- deleted.put(psEditor.accessControlledPath, psEditor);
+ deleted.put(psEditor.getPath(), psEditor);
} else {
EMPTY_NODE.compareAgainstBaseState(before, new Diff(path));
}
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=1710857&r1=1710856&r2=1710857&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
Tue Oct 27 17:58:21 2015
@@ -21,7 +21,6 @@ import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
@@ -145,14 +144,7 @@ public class PermissionProviderImpl impl
//--------------------------------------------------------------------------
private static boolean isVersionStorePath(@Nonnull String oakPath) {
- if (oakPath.indexOf(JcrConstants.JCR_SYSTEM) == 1) {
- for (String p : VersionConstants.SYSTEM_PATHS) {
- if (oakPath.startsWith(p)) {
- return true;
- }
- }
- }
- return false;
+ return oakPath.startsWith(VersionConstants.VERSION_STORE_PATH);
}
private boolean isGranted(@Nonnull TreeLocation location, @Nonnull String
oakPath, long permissions) {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStore.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStore.java
Tue Oct 27 17:58:21 2015
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.oak.security.authorization.permission;
import java.util.Collection;
-import java.util.Map;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -27,7 +26,7 @@ import javax.annotation.Nullable;
* The permission store is used to store and provide access control
permissions for principals. It is responsible to
* load and store the permissions in an optimal form in the repository and
must not cache them.
*/
-public interface PermissionStore {
+interface PermissionStore {
long DYNAMIC_ALL_BITS = -1;
@@ -44,8 +43,6 @@ public interface PermissionStore {
@CheckForNull
Collection<PermissionEntry> load(@Nullable Collection<PermissionEntry>
entries, @Nonnull String principalName, @Nonnull String path);
- void load(@Nonnull Map<String, Collection<PermissionEntry>> entries,
@Nonnull String principalName);
-
@Nonnull
PrincipalPermissionEntries load(@Nonnull String principalName);
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
Tue Oct 27 17:58:21 2015
@@ -53,10 +53,9 @@ final class PermissionStoreEditor implem
private static final Logger log =
LoggerFactory.getLogger(PermissionStoreEditor.class);
- final String accessControlledPath;
- final String nodeName;
- final Map<String, List<AcEntry>> entries = Maps.<String,
List<AcEntry>>newHashMap();
-
+ private final String accessControlledPath;
+ private final String nodeName;
+ private final Map<String, List<AcEntry>> entries = Maps.newHashMap();
private final NodeBuilder permissionRoot;
PermissionStoreEditor(@Nonnull String aclPath, @Nonnull String name,
@@ -101,6 +100,18 @@ final class PermissionStoreEditor implem
}
}
+ String getPath() {
+ return accessControlledPath;
+ }
+
+ boolean isEmpty() {
+ return entries.isEmpty();
+ }
+
+ void removePermissionEntries(PermissionStoreEditor otherEditor) {
+ entries.keySet().removeAll(otherEditor.entries.keySet());
+ }
+
void removePermissionEntries() {
for (String principalName : entries.keySet()) {
if (permissionRoot.hasChildNode(principalName)) {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
Tue Oct 27 17:58:21 2015
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
/**
* {@code PermissionStoreImpl}...
*/
-public class PermissionStoreImpl implements PermissionStore,
PermissionConstants {
+class PermissionStoreImpl implements PermissionStore, PermissionConstants {
/**
* default logger
@@ -57,13 +57,13 @@ public class PermissionStoreImpl impleme
private Tree permissionsTree;
private PrivilegeBits allBits;
- public PermissionStoreImpl(Root root, String workspaceName,
RestrictionProvider restrictionProvider) {
+ PermissionStoreImpl(Root root, String workspaceName, RestrictionProvider
restrictionProvider) {
this.workspaceName = workspaceName;
this.restrictionProvider = restrictionProvider;
reset(root);
}
- protected void flush(@Nonnull Root root) {
+ void flush(@Nonnull Root root) {
principalTreeMap.clear();
reset(root);
}
@@ -73,20 +73,7 @@ public class PermissionStoreImpl impleme
allBits = new
PrivilegeBitsProvider(root).getBits(PrivilegeConstants.JCR_ALL);
}
- @CheckForNull
- private Tree getPrincipalRoot(@Nonnull String principalName) {
- if (principalTreeMap.containsKey(principalName)) {
- return principalTreeMap.get(principalName);
- } else {
- Tree principalRoot =
PermissionUtil.getPrincipalRoot(permissionsTree, principalName);
- if (!principalRoot.exists()) {
- principalRoot = null;
- }
- principalTreeMap.put(principalName, principalRoot);
- return principalRoot;
- }
- }
-
+ //----------------------------------------------------< PermissionStore
>---
@Override
@CheckForNull
public Collection<PermissionEntry> load(@Nullable
Collection<PermissionEntry> entries, @Nonnull String principalName, @Nonnull
String path) {
@@ -111,16 +98,6 @@ public class PermissionStoreImpl impleme
}
@Override
- public void load(@Nonnull Map<String, Collection<PermissionEntry>>
entries, @Nonnull String principalName) {
- Tree principalRoot = getPrincipalRoot(principalName);
- if (principalRoot != null) {
- for (Tree entryTree : principalRoot.getChildren()) {
- loadPermissionEntries(entryTree, entries);
- }
- }
- }
-
- @Override
public long getNumEntries(@Nonnull String principalName, long max) {
// we ignore the hash-collisions here
Tree tree = getPrincipalRoot(principalName);
@@ -131,7 +108,7 @@ public class PermissionStoreImpl impleme
@Nonnull
public PrincipalPermissionEntries load(@Nonnull String principalName) {
long t0 = System.nanoTime();
- PrincipalPermissionEntries ret = new
PrincipalPermissionEntries(principalName);
+ PrincipalPermissionEntries ret = new PrincipalPermissionEntries();
Tree principalRoot = getPrincipalRoot(principalName);
if (principalRoot != null) {
for (Tree entryTree : principalRoot.getChildren()) {
@@ -141,25 +118,44 @@ public class PermissionStoreImpl impleme
ret.setFullyLoaded(true);
long t1 = System.nanoTime();
if (log.isDebugEnabled()) {
- log.debug(String.format("loaded %d entries in %.2fus for %s.%n",
ret.getEntries().size(), (t1 - t0) / 1000.0, principalName));
+ log.debug(String.format("loaded %d entries in %.2fus for %s.%n",
ret.getSize(), (t1 - t0) / 1000.0, principalName));
}
return ret;
}
+ //------------------------------------------------------------< private
>---
+ @CheckForNull
+ private Tree getPrincipalRoot(@Nonnull String principalName) {
+ if (principalTreeMap.containsKey(principalName)) {
+ return principalTreeMap.get(principalName);
+ } else {
+ Tree principalRoot =
PermissionUtil.getPrincipalRoot(permissionsTree, principalName);
+ if (!principalRoot.exists()) {
+ principalRoot = null;
+ }
+ principalTreeMap.put(principalName, principalRoot);
+ return principalRoot;
+ }
+ }
+
private void loadPermissionEntries(@Nonnull Tree tree,
@Nonnull Map<String,
Collection<PermissionEntry>> pathEntryMap) {
String path = TreeUtil.getString(tree,
PermissionConstants.REP_ACCESS_CONTROLLED_PATH);
- Collection<PermissionEntry> entries = pathEntryMap.get(path);
- if (entries == null) {
- entries = new TreeSet<PermissionEntry>();
- pathEntryMap.put(path, entries);
- }
- for (Tree child : tree.getChildren()) {
- if (child.getName().charAt(0) == 'c') {
- loadPermissionEntries(child, pathEntryMap);
- } else {
- entries.add(createPermissionEntry(path, child));
+ if (path != null) {
+ Collection<PermissionEntry> entries = pathEntryMap.get(path);
+ if (entries == null) {
+ entries = new TreeSet<PermissionEntry>();
+ pathEntryMap.put(path, entries);
+ }
+ for (Tree child : tree.getChildren()) {
+ if (child.getName().charAt(0) == 'c') {
+ loadPermissionEntries(child, pathEntryMap);
+ } else {
+ entries.add(createPermissionEntry(path, child));
+ }
}
+ } else {
+ log.error("Permission entry at '{}' without
rep:accessControlledPath property.", tree.getPath());
}
}
@@ -178,18 +174,20 @@ public class PermissionStoreImpl impleme
return ret;
}
+ @Nonnull
private PermissionEntry createPermissionEntry(@Nonnull String path,
@Nonnull Tree entryTree) {
PropertyState ps = entryTree.getProperty(REP_PRIVILEGE_BITS);
PrivilegeBits bits = (isJcrAll(ps)) ? allBits :
PrivilegeBits.getInstance(ps);
+ boolean isAllow = TreeUtil.getBoolean(entryTree, REP_IS_ALLOW);
return new PermissionEntry(path,
- entryTree.getProperty(REP_IS_ALLOW).getValue(Type.BOOLEAN),
+ isAllow,
Integer.parseInt(entryTree.getName()),
bits,
restrictionProvider.getPattern(path, entryTree));
}
- private static boolean isJcrAll(PropertyState property) {
- return property.count() == 1 && property.getValue(Type.LONG, 0) ==
DYNAMIC_ALL_BITS;
+ private static boolean isJcrAll(@CheckForNull PropertyState property) {
+ return property != null && property.count() == 1 &&
property.getValue(Type.LONG, 0) == DYNAMIC_ALL_BITS;
}
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PrincipalPermissionEntries.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PrincipalPermissionEntries.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PrincipalPermissionEntries.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PrincipalPermissionEntries.java
Tue Oct 27 17:58:21 2015
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.oak.security.authorization.permission;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nonnull;
@@ -25,12 +24,7 @@ import javax.annotation.Nonnull;
/**
* {@code PermissionEntries} holds the permission entries of one principal
*/
-public class PrincipalPermissionEntries {
-
- /**
- * principal name
- */
- private final String name;
+class PrincipalPermissionEntries {
/**
* indicating if all entries were loaded.
@@ -42,32 +36,23 @@ public class PrincipalPermissionEntries
*/
private Map<String, Collection<PermissionEntry>> entries = new
HashMap<String, Collection<PermissionEntry>>();
- public PrincipalPermissionEntries(@Nonnull String name) {
- this.name = name;
+ PrincipalPermissionEntries() {
}
- @Nonnull
- public String getName() {
- return name;
+ long getSize() {
+ return entries.size();
}
- public boolean isFullyLoaded() {
+ boolean isFullyLoaded() {
return fullyLoaded;
}
- public void setFullyLoaded(boolean fullyLoaded) {
+ void setFullyLoaded(boolean fullyLoaded) {
this.fullyLoaded = fullyLoaded;
}
@Nonnull
- public Collection<PermissionEntry> getEntries(@Nonnull String path) {
- Collection<PermissionEntry> ret = entries.get(path);
- return ret == null ? Collections.<PermissionEntry>emptyList() : ret;
- }
-
- @Nonnull
- public Map<String, Collection<PermissionEntry>> getEntries() {
+ Map<String, Collection<PermissionEntry>> getEntries() {
return entries;
}
-
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermission.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermission.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermission.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermission.java
Tue Oct 27 17:58:21 2015
@@ -56,6 +56,8 @@ class VersionTreePermission implements T
return new VersionTreePermission(versionTree, delegatee);
}
+ //-----------------------------------------------------< TreePermission
>---
+
@Nonnull
@Override
public TreePermission getChildPermission(@Nonnull String childName,
@Nonnull NodeState childState) {
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImplTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImplTest.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImplTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionEntryProviderImplTest.java
Tue Oct 27 17:58:21 2015
@@ -157,16 +157,10 @@ public class PermissionEntryProviderImpl
return null;
}
- @Override
- public void load(@Nonnull Map<String, Collection<PermissionEntry>>
entries,
- @Nonnull String principalName) {
- // ignore
- }
-
@Nonnull
@Override
public PrincipalPermissionEntries load(@Nonnull String principalName) {
- return new PrincipalPermissionEntries(principalName);
+ return new PrincipalPermissionEntries();
}
@Override
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java?rev=1710857&r1=1710856&r2=1710857&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImplTest.java
Tue Oct 27 17:58:21 2015
@@ -31,6 +31,8 @@ import org.apache.jackrabbit.oak.api.Tre
import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
import org.apache.jackrabbit.oak.plugins.tree.RootFactory;
+import org.apache.jackrabbit.oak.plugins.tree.TreeLocation;
+import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
import
org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
import
org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
@@ -223,4 +225,13 @@ public class PermissionProviderImplTest
testSession.close();
}
}
+
+ @Test
+ public void testIsGrantedNonExistingVersionStoreLocation() {
+ TreeLocation location = TreeLocation.create(root,
VersionConstants.VERSION_STORE_PATH + "/non/existing/tree");
+ PermissionProvider pp = createPermissionProvider(adminSession);
+
+ assertTrue(pp instanceof PermissionProviderImpl);
+ assertFalse(((PermissionProviderImpl) pp).isGranted(location,
Permissions.ALL));
+ }
}
\ No newline at end of file