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 12:23:33 UTC
svn commit: r1464420 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableTree.java
Author: angela
Date: Thu Apr 4 10:23:33 2013
New Revision: 1464420
URL: http://svn.apache.org/r1464420
Log:
OAK-527: permissions (wip, avoid recalculating path in ImmutableTree)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableTree.java
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=1464420&r1=1464419&r2=1464420&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 Thu Apr 4 10:23:33 2013
@@ -16,11 +16,7 @@
*/
package org.apache.jackrabbit.oak.core;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.api.Type.STRING;
-
import java.util.Iterator;
-
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -30,13 +26,15 @@ 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.kernel.KernelNodeState;
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;
+
/**
* ImmutableTree...
* FIXME: merge with ReadOnlyTree
@@ -46,6 +44,8 @@ public final class ImmutableTree extends
private final ParentProvider parentProvider;
private final TypeProvider typeProvider;
+ private String path;
+
public ImmutableTree(@Nonnull NodeState rootState) {
this(ParentProvider.ROOTPROVIDER, "", rootState, TypeProvider.EMPTY);
}
@@ -87,26 +87,22 @@ public final class ImmutableTree extends
@Override
public String getPath() {
- if (isRoot()) {
- // shortcut
- return "/";
- }
-
- NodeState nodeState = getNodeState();
- if (nodeState instanceof KernelNodeState) {
- return ((KernelNodeState) nodeState).getPath();
- } else {
- StringBuilder sb = new StringBuilder();
- buildPath(sb);
- return sb.toString();
- }
- }
-
- private void buildPath(StringBuilder sb) {
- if (!isRoot()) {
- getParent().buildPath(sb);
- sb.append('/').append(getName());
+ if (path == null) {
+ if (isRoot()) {
+ // shortcut
+ path = "/";
+ } else {
+ StringBuilder sb = new StringBuilder();
+ ImmutableTree parent = getParent();
+ sb.append(parent.getPath());
+ if (!parent.isRoot()) {
+ sb.append('/');
+ }
+ sb.append(getName());
+ path = sb.toString();
+ }
}
+ return path;
}
@Override