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 md...@apache.org on 2012/07/04 17:43:21 UTC
svn commit: r1357314 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/api/
oak-core/src/main/java/org/apache/jackrabbit/oak/core/
oak-core/src/test/java/org/apache/jackrabbit/oak/core/
oak-jcr/src/main/java/org/apache/jackra...
Author: mduerig
Date: Wed Jul 4 15:43:21 2012
New Revision: 1357314
URL: http://svn.apache.org/viewvc?rev=1357314&view=rev
Log:
OAK-161: Refactor Tree#getChildStatus
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Tree.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Tree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Tree.java?rev=1357314&r1=1357313&r2=1357314&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Tree.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Tree.java Wed Jul 4 15:43:21 2012
@@ -146,13 +146,11 @@ public interface Tree {
Tree getChild(String name);
/**
- * Get the {@code Status} of a child tree
- * @param name name of the child
- * @return the status of the child with the given {@code name} or {@code null} in
- * no such child exists.
+ * Get the {@code Status} of this tree
+ * @return the status of this tree
*/
- @CheckForNull
- Status getChildStatus(String name);
+ @Nonnull
+ Status getStatus();
/**
* Determine if a child of this {@code Tree} instance exists.
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java?rev=1357314&r1=1357313&r2=1357314&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java Wed Jul 4 15:43:21 2012
@@ -115,12 +115,8 @@ public class ReadOnlyTree implements Tre
}
@Override
- public Status getChildStatus(String name) {
- if (hasChild(name)) {
- return Status.EXISTING;
- } else {
- return null;
- }
+ public Status getStatus() {
+ return Status.EXISTING;
}
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java?rev=1357314&r1=1357313&r2=1357314&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java Wed Jul 4 15:43:21 2012
@@ -195,42 +195,21 @@ public class TreeImpl implements Tree, P
}
@Override
- public Status getChildStatus(String name) {
+ public Status getStatus() {
NodeState baseState = getBaseState();
if (baseState == null) {
- // This instance is NEW...
- if (hasChild(name)) {
- // ...so all children are new
- return Status.NEW;
- } else {
- // ...unless they don't exist.
- return null;
- }
- } else {
- if (hasChild(name)) {
- // We have the child...
- if (baseState.getChildNode(name) == null) {
- // ...but didn't have it before. So its NEW.
- return Status.NEW;
- } else {
- // ... and did have it before. So...
- if (isSame(baseState.getChildNode(name), getNodeState().getChildNode(name))) {
- // ...it's EXISTING if it hasn't changed
- return Status.EXISTING;
- } else {
- // ...and MODIFIED otherwise.
- return Status.MODIFIED;
- }
- }
- } else {
- // We don't have the child
- if (baseState.getChildNode(name) == null) {
- // ...and didn't have it before. So it doesn't exist.
- return null;
- } else {
- // ...and didn't have it before. So it's REMOVED
- return Status.REMOVED;
- }
+ // Did not exist before, so its NEW
+ return Status.NEW;
+ }
+ else {
+ // Did exit it before. So...
+ if (isSame(baseState, getNodeState())) {
+ // ...it's EXISTING if it hasn't changed
+ return Status.EXISTING;
+ }
+ else {
+ // ...and MODIFIED otherwise.
+ return Status.MODIFIED;
}
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java?rev=1357314&r1=1357313&r2=1357314&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java Wed Jul 4 15:43:21 2012
@@ -363,27 +363,25 @@ public class RootImplTest extends Abstra
Tree tree = root.getTree("/");
tree.addChild("new");
- assertEquals(Status.NEW, tree.getChildStatus("new"));
+ assertEquals(Status.NEW, tree.getChild("new").getStatus());
root.commit(DefaultConflictHandler.OURS);
tree = root.getTree("/");
- assertEquals(Status.EXISTING, tree.getChildStatus("new"));
+ assertEquals(Status.EXISTING, tree.getChild("new").getStatus());
Tree added = tree.getChild("new");
added.addChild("another");
- assertEquals(Status.MODIFIED, tree.getChildStatus("new"));
+ assertEquals(Status.MODIFIED, tree.getChild("new").getStatus());
root.commit(DefaultConflictHandler.OURS);
tree = root.getTree("/");
- assertEquals(Status.EXISTING, tree.getChildStatus("new"));
+ assertEquals(Status.EXISTING, tree.getChild("new").getStatus());
tree.getChild("new").getChild("another").remove();
- assertEquals(Status.MODIFIED, tree.getChildStatus("new"));
- assertEquals(Status.REMOVED, tree.getChild("new").getChildStatus("another"));
+ assertEquals(Status.MODIFIED, tree.getChild("new").getStatus());
root.commit(DefaultConflictHandler.OURS);
tree = root.getTree("/");
- assertEquals(Status.EXISTING, tree.getChildStatus("new"));
+ assertEquals(Status.EXISTING, tree.getChild("new").getStatus());
assertNull(tree.getChild("new").getChild("another"));
- assertNull(tree.getChild("new").getChildStatus("another"));
}
@Test
@@ -422,8 +420,8 @@ public class RootImplTest extends Abstra
tree = root.getTree("/");
tree.getChild("one").getChild("two").addChild("three");
- assertEquals(Status.EXISTING, tree.getChildStatus("one"));
- assertEquals(Status.MODIFIED, tree.getChild("one").getChildStatus("two"));
+ assertEquals(Status.EXISTING, tree.getChild("one").getStatus());
+ assertEquals(Status.MODIFIED, tree.getChild("one").getChild("two").getStatus());
}
@Test
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java?rev=1357314&r1=1357313&r2=1357314&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java Wed Jul 4 15:43:21 2012
@@ -63,7 +63,7 @@ public class NodeDelegate extends ItemDe
@Override
public NodeDelegate getParent() throws InvalidItemStateException {
- Tree parent = getParentTree();
+ Tree parent = getTree().getParent();
return parent == null ? null : new NodeDelegate(sessionDelegate, parent);
}
@@ -75,16 +75,7 @@ public class NodeDelegate extends ItemDe
@Override
public Status getStatus() throws InvalidItemStateException {
- Tree parent = getParentTree();
- if (parent == null) {
- return Status.EXISTING; // FIXME: return correct status for root. See also OAK-161
- } else {
- Status childStatus = parent.getChildStatus(getName());
- if (childStatus == null) {
- throw new InvalidItemStateException("Node is stale");
- }
- return childStatus;
- }
+ return getTree().getStatus();
}
@Override
@@ -230,11 +221,6 @@ public class NodeDelegate extends ItemDe
return sessionDelegate.getTree(absPath);
}
- @CheckForNull
- private Tree getParentTree() throws InvalidItemStateException {
- return getTree().getParent();
- }
-
private synchronized Tree getTree() throws InvalidItemStateException {
resolve();
if (tree == null) {