You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2011/11/25 16:00:14 UTC
svn commit: r1206201 - in /jackrabbit/sandbox/microkernel/src:
main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
test/java/org/apache/jackrabbit/mk/ConflictingMoveTest.java
Author: stefan
Date: Fri Nov 25 15:00:13 2011
New Revision: 1206201
URL: http://svn.apache.org/viewvc?rev=1206201&view=rev
Log:
move must not overwrite existing node at destination path
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConflictingMoveTest.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java?rev=1206201&r1=1206200&r2=1206201&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java Fri Nov 25 15:00:13 2011
@@ -103,6 +103,9 @@ public class CommitBuilder {
srcParent.getChildNodeEntries().remove(srcNodeName);
MutableNode destParent = getOrCreateStagedNode(destParentPath);
+ if (destParent.getChildNodeEntries().containsKey(destNodeName)) {
+ throw new Exception("node already exists at move destination path: " + destPath);
+ }
destParent.getChildNodeEntries().put(destNodeName, targetId);
// update staging area
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConflictingMoveTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConflictingMoveTest.java?rev=1206201&r1=1206200&r2=1206201&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConflictingMoveTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConflictingMoveTest.java Fri Nov 25 15:00:13 2011
@@ -16,12 +16,8 @@
*/
package org.apache.jackrabbit.mk;
-import junit.framework.Assert;
-import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.api.MicroKernelException;
-import org.apache.jackrabbit.mk.json.JsopTokenizer;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -46,6 +42,20 @@ public class ConflictingMoveTest extends
}
@Test
+ public void collidingMove() {
+ String head = mk.getHeadRevision();
+
+ head = mk.commit("/", "+\"x\" : {} \r+\"y\" : {}\n", head, "");
+
+ try {
+ String r1 = mk.commit("/", ">\"x\" : \"y\"", head, "");
+ fail("expected to fail since /y already exists");
+ } catch (MicroKernelException e) {
+ // expected
+ }
+ }
+
+ @Test
public void conflictingMove() {
String head = mk.getHeadRevision();
@@ -58,11 +68,10 @@ public class ConflictingMoveTest extends
try {
String r2 = mk.commit("/", ">\"b\" : \"a/b\"", head, "");
+ fail("expected to fail since /a doesn't exist");
} catch (MicroKernelException e) {
- // expected to fail since /a doesn't exist anymore
- return;
+ // expected
}
- fail();
}
@Test