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 16:16:24 UTC
svn commit: r1357275 - 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-http/src/main/java/org/apache/jackr...
Author: mduerig
Date: Wed Jul 4 14:16:23 2012
New Revision: 1357275
URL: http://svn.apache.org/viewvc?rev=1357275&view=rev
Log:
OAK-164: Replace Tree.remove(String) with Tree.remove()
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/RootImpl.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/DefaultConflictHandlerTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java
jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/OakServlet.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=1357275&r1=1357274&r2=1357275&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 14:16:23 2012
@@ -189,11 +189,10 @@ public interface Tree {
Tree addChild(String name);
/**
- * Remove a child with the given {@code name}. Does nothing if no such child exists.
- * @param name name of the child to remove
- * @return {@code false} iff no such child exists.
+ * Remove this sub tree if not root.
+ * @return {@code false} iff this is the root.
*/
- boolean removeChild(String name);
+ boolean remove();
/**
* Set a single valued property state
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=1357275&r1=1357274&r2=1357275&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 14:16:23 2012
@@ -44,7 +44,7 @@ public class ReadOnlyTree implements Tre
private ReadOnlyTree(Tree parent, String name, NodeState state) {
assert name != null;
- assert name.length() > 0 || parent == null;
+ assert !name.isEmpty() || parent == null;
assert state != null;
this.parent = parent;
this.name = name;
@@ -66,7 +66,7 @@ public class ReadOnlyTree implements Tre
if (parent == null) {
return "";
} else {
- return parent.getPath() + "/" + name;
+ return parent.getPath() + '/' + name;
}
}
@@ -167,7 +167,7 @@ public class ReadOnlyTree implements Tre
}
@Override
- public boolean removeChild(String name) {
+ public boolean remove() {
throw new UnsupportedOperationException();
}
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=1357275&r1=1357274&r2=1357275&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 Jul 4 14:16:23 2012
@@ -469,7 +469,9 @@ public class RootImpl implements Root {
switch (resolution) {
case OURS:
- target.removeChild(name);
+ if (n != null) {
+ n.remove();
+ }
break;
case THEIRS:
case MERGED:
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=1357275&r1=1357274&r2=1357275&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 14:16:23 2012
@@ -98,7 +98,6 @@ public class TreeImpl implements Tree, P
public boolean isRoot() {
return parent == null;
}
-
@Override
public String getPath() {
// Shortcut for root
@@ -286,17 +285,8 @@ public class TreeImpl implements Tree, P
}
@Override
- public boolean removeChild(String name) {
- if (hasChild(name)) {
- NodeStateBuilder builder = getNodeStateBuilder();
- builder.removeNode(name);
- children.remove(name);
- updateParentState(builder.getNodeState());
- return true;
- }
- else {
- return false;
- }
+ public boolean remove() {
+ return !isRoot() && parent.removeChild(name);
}
@Override
@@ -384,6 +374,19 @@ public class TreeImpl implements Tree, P
//------------------------------------------------------------< private >---
+ private boolean removeChild(String name) {
+ if (hasChild(name)) {
+ NodeStateBuilder builder = getNodeStateBuilder();
+ builder.removeNode(name);
+ children.remove(name);
+ updateParentState(builder.getNodeState());
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+
private synchronized NodeStateBuilder getNodeStateBuilder() {
if (nodeStateBuilder == null) {
nodeStateBuilder = root.getBuilder(getNodeState());
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/DefaultConflictHandlerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/DefaultConflictHandlerTest.java?rev=1357275&r1=1357274&r2=1357275&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/DefaultConflictHandlerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/DefaultConflictHandlerTest.java Wed Jul 4 14:16:23 2012
@@ -116,7 +116,7 @@ public class DefaultConflictHandlerTest
@Test
public void testChangeDeletedNodeOurs() throws CommitFailedException {
- theirRoot.getTree("/").removeChild("x");
+ theirRoot.getTree("/x").remove();
ourRoot.getTree("/x").setProperty("p", ourValue);
theirRoot.commit(DefaultConflictHandler.OURS);
@@ -130,7 +130,7 @@ public class DefaultConflictHandlerTest
@Test
public void testDeleteChangedNodeOurs() throws CommitFailedException {
theirRoot.getTree("/x").setProperty("p", theirValue);
- ourRoot.getTree("/").removeChild("x");
+ ourRoot.getTree("/x").remove();
theirRoot.commit(DefaultConflictHandler.OURS);
ourRoot.commit(DefaultConflictHandler.OURS);
@@ -205,7 +205,7 @@ public class DefaultConflictHandlerTest
@Test
public void testChangeDeletedNodeTheirs() throws CommitFailedException {
- theirRoot.getTree("/").removeChild("x");
+ theirRoot.getTree("/x").remove();
ourRoot.getTree("/x").setProperty("p", ourValue);
theirRoot.commit(DefaultConflictHandler.THEIRS);
@@ -218,7 +218,7 @@ public class DefaultConflictHandlerTest
@Test
public void testDeleteChangedNodeTheirs() throws CommitFailedException {
theirRoot.getTree("/x").setProperty("p", theirValue);
- ourRoot.getTree("/").removeChild("x");
+ ourRoot.getTree("/").remove();
theirRoot.commit(DefaultConflictHandler.THEIRS);
ourRoot.commit(DefaultConflictHandler.THEIRS);
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java?rev=1357275&r1=1357274&r2=1357275&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java Wed Jul 4 14:16:23 2012
@@ -166,7 +166,7 @@ public class RootImplFuzzIT {
void apply(RootImpl root) {
String parentPath = PathUtils.getParentPath(path);
String name = PathUtils.getName(path);
- root.getTree(parentPath).removeChild(name);
+ root.getTree(parentPath).getChild(name).remove();
}
@Override
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=1357275&r1=1357274&r2=1357275&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 14:16:23 2012
@@ -161,7 +161,7 @@ public class RootImplTest extends Abstra
Tree tree = root.getTree("/");
assertTrue(tree.hasChild("x"));
- tree.removeChild("x");
+ tree.getChild("x").remove();
assertFalse(tree.hasChild("x"));
root.commit(DefaultConflictHandler.OURS);
@@ -310,7 +310,7 @@ public class RootImplTest extends Abstra
assertEquals(3, tree.getChildrenCount());
- tree.removeChild("x");
+ tree.getChild("x").remove();
assertEquals(2, tree.getChildrenCount());
tree.addChild("a");
@@ -375,7 +375,7 @@ public class RootImplTest extends Abstra
tree = root.getTree("/");
assertEquals(Status.EXISTING, tree.getChildStatus("new"));
- tree.getChild("new").removeChild("another");
+ tree.getChild("new").getChild("another").remove();
assertEquals(Status.MODIFIED, tree.getChildStatus("new"));
assertEquals(Status.REMOVED, tree.getChild("new").getChildStatus("another"));
root.commit(DefaultConflictHandler.OURS);
@@ -442,7 +442,7 @@ public class RootImplTest extends Abstra
checkEqual(root1.getTree("/"), (root2.getTree("/")));
Tree one = root2.getTree("/one");
- one.removeChild("two");
+ one.getChild("two").remove();
one.addChild("four");
root2.commit(DefaultConflictHandler.OURS);
Modified: jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/OakServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/OakServlet.java?rev=1357275&r1=1357274&r2=1357275&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/OakServlet.java (original)
+++ jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/OakServlet.java Wed Jul 4 14:16:23 2012
@@ -31,6 +31,11 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.smile.SmileFactory;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.ContentRepository;
import org.apache.jackrabbit.oak.api.ContentSession;
@@ -42,13 +47,6 @@ import org.apache.jackrabbit.oak.api.Tre
import org.apache.jackrabbit.oak.core.DefaultConflictHandler;
import org.apache.jackrabbit.oak.plugins.memory.MemoryValueFactory;
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.smile.SmileFactory;
-
public class OakServlet extends HttpServlet {
private static final JsonFactory JSON_FACTORY = new JsonFactory();
@@ -112,7 +110,7 @@ public class OakServlet extends HttpServ
}
}
- private void post(JsonNode node, Tree tree) {
+ private static void post(JsonNode node, Tree tree) {
Iterator<Entry<String, JsonNode>> iterator = node.fields();
while (iterator.hasNext()) {
Entry<String, JsonNode> entry = iterator.next();
@@ -128,8 +126,9 @@ public class OakServlet extends HttpServ
}
post(value, child);
} else {
- if (tree.hasChild(name)) {
- tree.removeChild(name);
+ Tree child = tree.getChild(name);
+ if (child != null) {
+ child.remove();
}
CoreValueFactory vf = MemoryValueFactory.INSTANCE;
if (value.isNull()) {
@@ -158,7 +157,10 @@ public class OakServlet extends HttpServ
Tree tree = (Tree) request.getAttribute("tree");
Tree parent = tree.getParent();
if (parent != null) {
- parent.removeChild(tree.getName());
+ Tree child = parent.getChild(tree.getName());
+ if (child != null) {
+ child.remove();
+ }
root.commit(DefaultConflictHandler.OURS);
response.sendError(HttpServletResponse.SC_OK);
} else {
@@ -170,7 +172,7 @@ public class OakServlet extends HttpServ
}
}
- private int getDepth(HttpServletRequest request) {
+ private static int getDepth(HttpServletRequest request) {
String d = request.getParameter("depth");
if (d == null) {
d = request.getParameter("d");
@@ -185,7 +187,7 @@ public class OakServlet extends HttpServ
return 1;
}
- private JsonGenerator getRenderer(
+ private static JsonGenerator getRenderer(
HttpServletRequest request, HttpServletResponse response)
throws IOException {
AcceptHeader accept = new AcceptHeader(request.getHeader("Accept"));
@@ -201,8 +203,8 @@ public class OakServlet extends HttpServ
}
}
- private void render(Tree tree, int depth, JsonGenerator generator)
- throws JsonGenerationException, IOException {
+ private static void render(Tree tree, int depth, JsonGenerator generator)
+ throws IOException {
generator.writeStartObject();
if (depth > 0) {
for (PropertyState property : tree.getProperties()) {
@@ -217,8 +219,8 @@ public class OakServlet extends HttpServ
generator.close();
}
- private void render(PropertyState property, JsonGenerator generator)
- throws JsonGenerationException, IOException {
+ private static void render(PropertyState property, JsonGenerator generator)
+ throws IOException {
generator.writeFieldName(property.getName());
if (property.isArray()) {
generator.writeStartArray();
@@ -231,8 +233,8 @@ public class OakServlet extends HttpServ
}
}
- private void render(CoreValue value, JsonGenerator generator)
- throws JsonGenerationException, IOException {
+ private static void render(CoreValue value, JsonGenerator generator)
+ throws IOException {
// TODO: Type info?
if (value.getType() == PropertyType.BOOLEAN) {
generator.writeBoolean(value.getBoolean());
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=1357275&r1=1357274&r2=1357275&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 14:16:23 2012
@@ -220,10 +220,7 @@ public class NodeDelegate extends ItemDe
* Remove the node if not root. Does nothing otherwise
*/
public void remove() throws InvalidItemStateException {
- Tree parentTree = getParentTree();
- if (parentTree != null) {
- parentTree.removeChild(getName());
- }
+ getTree().remove();
}
// -----------------------------------------------------------< private >---