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/10/31 14:04:00 UTC
svn commit: r1537474 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
Author: angela
Date: Thu Oct 31 13:04:00 2013
New Revision: 1537474
URL: http://svn.apache.org/r1537474
Log:
OAK-1135 : NPE in CompiledPermissionImpl.getTreePermission()
- slight modification, add log output if versionable node/path cannot be resolved
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
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=1537474&r1=1537473&r2=1537474&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 Thu Oct 31 13:04:00 2013
@@ -196,22 +196,24 @@ final class CompiledPermissionImpl imple
} else {
TreeLocation tl = getLocation(tree, null);
if (tl == null) {
+ log.warn("Cannot retrieve versionable node for " + tree.getPath());
return TreePermission.EMPTY;
} else {
// TODO: may return wrong results in case of restrictions
// TODO that would match the path of the versionable node
// TODO (or item in the subtree) but that item no longer exists
// TODO -> evaluation by path would be more accurate (-> see #isGranted)
- while (!tl.exists()) {
+ while (!tl.exists() || tl.getProperty() != null) {
tl = tl.getParent();
}
Tree versionableTree = tl.getTree();
if (versionableTree == null) {
- // for PropertyLocations
- versionableTree = tl.getParent().getTree();
+ log.warn("Cannot retrieve versionable tree for {0}; versionable location {1} does not resolve to an existing tree.", tree.getPath(), tl.getPath());
+ return TreePermission.EMPTY;
+ } else {
+ TreePermission pp = getParentPermission(versionableTree, TreeTypeProvider.TYPE_VERSION);
+ return new TreePermissionImpl(versionableTree, TreeTypeProvider.TYPE_VERSION, pp);
}
- TreePermission pp = getParentPermission(versionableTree, TreeTypeProvider.TYPE_VERSION);
- return new TreePermissionImpl(versionableTree, TreeTypeProvider.TYPE_VERSION, pp);
}
}
case TreeTypeProvider.TYPE_PERMISSION_STORE: