Index: oak-mongomk/src/test/resources/logback-test.xml
===================================================================
--- oak-mongomk/src/test/resources/logback-test.xml (revision 0)
+++ oak-mongomk/src/test/resources/logback-test.xml (working copy)
@@ -0,0 +1,39 @@
+
+
+
+
+
+ %date{HH:mm:ss.SSS} %-5level %-40([%thread] %F:%L) %msg%n
+
+
+
+
+ target/unit-tests.log
+
+ %date{HH:mm:ss.SSS} %-5level %-40([%thread] %F:%L) %msg%n
+
+
+
+
+
+
+
+
+
Property changes on: oak-mongomk/src/test/resources/logback-test.xml
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/BaseMongoTest.java
===================================================================
--- oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/BaseMongoTest.java (revision 1389420)
+++ oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/BaseMongoTest.java (working copy)
@@ -21,7 +21,6 @@
import org.apache.jackrabbit.mongomk.MongoConnection;
import org.apache.jackrabbit.mongomk.util.MongoUtil;
-import org.apache.log4j.BasicConfigurator;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -40,7 +39,6 @@
@BeforeClass
public static void setUpBeforeClass() throws Exception {
- BasicConfigurator.configure();
createDefaultMongoConnection();
MongoAssert.setMongoConnection(mongoConnection);
}
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/model/CommitCommandInstructionVisitor.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/model/CommitCommandInstructionVisitor.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/model/CommitCommandInstructionVisitor.java (working copy)
@@ -50,18 +50,14 @@
@Override
public void visit(AddNodeInstruction instruction) {
-// Old code
-// String path = instruction.getPath();
-// getStagedNode(path);
-// if (!PathUtils.denotesRoot(path)) {
-// String parentPath = PathUtils.getParentPath(path);
-// NodeMongo parentNode = getStagedNode(parentPath);
-// parentNode.addChild(PathUtils.getName(path));
-// }
-
String path = instruction.getPath();
getStagedNode(path);
+
String nodeName = PathUtils.getName(path);
+ if (nodeName.isEmpty()) {
+ return;
+ }
+
String parentNodePath = PathUtils.getParentPath(path);
NodeMongo parent = null;
if (!PathUtils.denotesRoot(parentNodePath)) {
@@ -69,10 +65,9 @@
if (parent == null) {
throw new RuntimeException("No such parent: " + PathUtils.getName(parentNodePath));
}
- // FIXME [Mete] Add once tests are fixed.
- //if (parent.childExists(nodeName)) {
- // throw new RuntimeException("There's already a child node with name '" + nodeName + "'");
- //}
+ if (parent.childExists(nodeName)) {
+ throw new RuntimeException("There's already a child node with name '" + nodeName + "'");
+ }
} else {
parent = getStagedNode(parentNodePath);
}
@@ -213,8 +208,11 @@
public void visit(RemoveNodeInstruction instruction) {
String path = instruction.getPath();
String parentPath = PathUtils.getParentPath(path);
- NodeMongo parentNode = getStagedNode(parentPath);
- // [Mete] What if there is no such child?
+ NodeMongo parentNode = getStoredNode(parentPath);
+ String childName = PathUtils.getName(path);
+ if (!parentNode.childExists(childName)) {
+ throw new RuntimeException(path);
+ }
parentNode.removeChild(PathUtils.getName(path));
}
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/CommitCommandMongo.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/CommitCommandMongo.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/CommitCommandMongo.java (working copy)
@@ -36,7 +36,8 @@
import org.apache.jackrabbit.mongomk.query.SaveAndSetHeadRevisionQuery;
import org.apache.jackrabbit.mongomk.query.SaveCommitQuery;
import org.apache.jackrabbit.mongomk.query.SaveNodesQuery;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
@@ -51,7 +52,7 @@
*/
public class CommitCommandMongo extends AbstractCommand {
- private static final Logger logger = Logger.getLogger(CommitCommandMongo.class);
+ private static final Logger logger = LoggerFactory.getLogger(CommitCommandMongo.class);
private final Commit commit;
private final MongoConnection mongoConnection;
Index: oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/command/CommitCommandMongoTest.java
===================================================================
--- oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/command/CommitCommandMongoTest.java (revision 1389420)
+++ oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/command/CommitCommandMongoTest.java (working copy)
@@ -32,6 +32,7 @@
import org.apache.jackrabbit.mongomk.impl.model.CommitImpl;
import org.apache.jackrabbit.mongomk.impl.model.RemoveNodeInstructionImpl;
import org.apache.jackrabbit.mongomk.scenario.SimpleNodeScenario;
+import org.apache.jackrabbit.mongomk.util.MongoUtil;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.junit.Assert;
import org.junit.Ignore;
@@ -77,7 +78,7 @@
}
@Test
- public void commitAddNodes() throws Exception {
+ public void addNodes() throws Exception {
List instructions = new LinkedList();
instructions.add(new AddNodeInstructionImpl("/", "a"));
instructions.add(new AddNodeInstructionImpl("/a", "b"));
@@ -99,7 +100,29 @@
}
@Test
- public void commitAddNodesAndPropertiesOutOfOrder() throws Exception {
+ public void addDuplicateNode() throws Exception {
+ // Add /a and /a/b
+ List instructions = new LinkedList();
+ instructions.add(new AddNodeInstructionImpl("/", "a"));
+ instructions.add(new AddNodeInstructionImpl("/a", "b"));
+ Commit commit = new CommitImpl("/", "+a : { \"b\" : {} }", "Add /a, /a/b", instructions);
+ CommitCommandMongo command = new CommitCommandMongo(mongoConnection, commit);
+ command.execute();
+
+ // Add /a/b again
+ instructions = new LinkedList();
+ instructions.add(new AddNodeInstructionImpl("/a", "b"));
+ commit = new CommitImpl("/a", "+b", "Add /a/b", instructions);
+ command = new CommitCommandMongo(mongoConnection, commit);
+ try {
+ command.execute();
+ fail("Exception expected");
+ } catch (Exception expected) {
+ }
+ }
+
+ @Test
+ public void addNodesAndPropertiesOutOfOrder() throws Exception {
List instructions = new LinkedList();
instructions.add(new AddPropertyInstructionImpl("/a", "key1", "value1"));
instructions.add(new AddNodeInstructionImpl("/", "a"));
@@ -129,7 +152,7 @@
}
@Test
- public void commitAddNodesWhichAlreadyExist() throws Exception {
+ public void addNodesWhichAlreadyExist() throws Exception {
SimpleNodeScenario scenario1 = new SimpleNodeScenario(mongoConnection);
scenario1.create();
@@ -230,7 +253,6 @@
}
@Test
- @Ignore // FIXME
public void removeNonExistentNode() throws Exception {
List instructions = new LinkedList();
instructions.add(new AddNodeInstructionImpl("/", "a"));
@@ -368,18 +390,18 @@
}
@Test
- @Ignore /// FIXME
public void rootNodeHasEmptyRootPath() throws Exception {
List instructions = new LinkedList();
instructions.add(new AddNodeInstructionImpl("", "/"));
- Commit commit = new CommitImpl("", "+/ : {}", "This is the root commit", instructions);
+ Commit commit = new CommitImpl(MongoUtil.INITIAL_COMMIT_PATH, MongoUtil.INITIAL_COMMIT_DIFF,
+ MongoUtil.INITIAL_COMMIT_MESSAGE, instructions);
CommitCommandMongo command = new CommitCommandMongo(mongoConnection, commit);
String revisionId = command.execute();
-
Assert.assertNotNull(revisionId);
- MongoAssert.assertNodesExist("",
- NodeBuilder.build(String.format("{ \"/#%1$s\" : {} }", revisionId)));
+
+ Node expected = NodeBuilder.build(String.format("{ \"/#%1$s\" : {} }", revisionId));
+ MongoAssert.assertNodesExist(MongoUtil.INITIAL_COMMIT_PATH, expected);
}
@Test
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchNodesByPathAndDepthQuery.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchNodesByPathAndDepthQuery.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchNodesByPathAndDepthQuery.java (working copy)
@@ -22,7 +22,8 @@
import org.apache.jackrabbit.mongomk.MongoConnection;
import org.apache.jackrabbit.mongomk.model.NodeMongo;
import org.apache.jackrabbit.mongomk.util.MongoUtil;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
@@ -35,7 +36,9 @@
* @author Philipp Marx
- */
-@SuppressWarnings("all")
public class FetchNodesByPathAndDepthQueryTest extends BaseMongoTest {
@Test
- @Ignore
- public void testFetchWithInvalidFirstRevision() throws Exception {
- SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
- String firstRevisionId = scenario.create();
- String secondRevisionId = scenario.update_A_and_add_D_and_E();
- SimpleNodeScenario scenario2 = new SimpleNodeScenario(mongoConnection);
- String thirdRevisionId = scenario.update_A_and_add_D_and_E();
+ public void fetchWithInvalidFirstRevision() throws Exception {
+ String revisionId1 = addNode("a");
+ String revisionId2 = addNode("b");
+ String revisionId3 = addNode("c");
- DBCollection commitCollection = mongoConnection.getCommitCollection();
- DBObject q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
- .is(MongoUtil.toMongoRepresentation(firstRevisionId)).get();
- DBObject u = new BasicDBObject("$set", new BasicDBObject(CommitMongo.KEY_FAILED, Boolean.TRUE));
- commitCollection.update(q, u);
+ invalidateCommit(revisionId1);
+ updateBaseRevisionId(revisionId2, "0");
- q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID).is(MongoUtil.toMongoRepresentation(secondRevisionId))
- .get();
- u = new BasicDBObject("$set", new BasicDBObject(CommitMongo.KEY_BASE_REVISION_ID, 0L));
- commitCollection.update(q, u);
+ FetchNodesByPathAndDepthQuery query = new FetchNodesByPathAndDepthQuery(mongoConnection,
+ "/", revisionId3, -1);
+ List actuals = NodeMongo.toNode(query.execute());
- FetchNodesByPathAndDepthQuery query = new FetchNodesByPathAndDepthQuery(mongoConnection, "/", thirdRevisionId,
- -1);
- List result = query.execute();
- List actuals = NodeMongo.toNode(result);
- Node expected = NodeBuilder
- .build(String
- .format("{ \"/#%0$s\" : { \"a#%3$s\" : { \"int\" : 1 , \"double\" : 0.123 , \"b#%3$s\" : { \"string\" : \"foo\" , \"e#%3$s\" : { \"array\" : [ 123, null, 123.456, \"for:bar\", true ] } } , \"d#%3$s\" : { \"null\" : null } } } }",
- firstRevisionId, secondRevisionId,
- thirdRevisionId));
- Set expecteds = expected.getDescendants(true);
+ //String json = String.format("{\"/#%1$s\" : { \"a#%2$s\" : {}, \"b#%3$s\" : {}, \"c#%1$s\" : {} }}", revisionId3, revisionId1, revisionId2);
+ String json = String.format("{\"/#%2$s\" : { \"b#%1$s\" : {}, \"c#%2$s\" : {} }}", revisionId2, revisionId3);
+ Set expecteds = NodeBuilder.build(json).getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
@Test
- public void testFetchWithInvalidLastRevision() throws Exception {
- SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
- String firstRevisionId = scenario.create();
- String secondRevisionId = scenario.update_A_and_add_D_and_E();
- SimpleNodeScenario scenario2 = new SimpleNodeScenario(mongoConnection);
- String thirdRevisionId = scenario.update_A_and_add_D_and_E();
+ public void fetchWithInvalidLastRevision() throws Exception {
+ String revisionId1 = addNode("a");
+ String revisionId2 = addNode("b");
+ String revisionId3 = addNode("c");
- DBCollection commitCollection = mongoConnection.getCommitCollection();
- DBObject q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
- .is(MongoUtil.toMongoRepresentation(thirdRevisionId)).get();
- DBObject u = new BasicDBObject();
- u.put("$set", new BasicDBObject(CommitMongo.KEY_FAILED, Boolean.TRUE));
- commitCollection.update(q, u);
+ invalidateCommit(revisionId3);
- FetchNodesByPathAndDepthQuery query = new FetchNodesByPathAndDepthQuery(mongoConnection, "/", thirdRevisionId,
- -1);
- List result = query.execute();
- List actuals = NodeMongo.toNode(result);
- Node expected = NodeBuilder
- .build(String
- .format("{ \"/#%1$s\" : { \"a#%2$s\" : { \"int\" : 1 , \"double\" : 0.123 , \"b#%2$s\" : { \"string\" : \"foo\" , \"e#%2$s\" : { \"array\" : [ 123, null, 123.456, \"for:bar\", true ] } } , \"c#%1$s\" : { \"bool\" : true }, \"d#%2$s\" : { \"null\" : null } } } }",
- firstRevisionId, secondRevisionId));
- Set expecteds = expected.getDescendants(true);
+ FetchNodesByPathAndDepthQuery query = new FetchNodesByPathAndDepthQuery(mongoConnection,
+ "/", revisionId3, -1);
+ List actuals = NodeMongo.toNode(query.execute());
+
+ //String json = String.format("{\"/#%1$s\" : { \"a#%2$s\" : {}, \"b#%3$s\" : {}, \"c#%1$s\" : {} }}", revisionId3, revisionId1, revisionId2);
+ String json = String.format("{\"/#%2$s\" : { \"a#%1$s\" : {}, \"b#%2$s\" : {} }}", revisionId1, revisionId2);
+ Set expecteds = NodeBuilder.build(json).getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
@Test
- public void testFetchWithInvalidMiddleRevision() throws Exception {
- SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
- String firstRevisionId = scenario.create();
- String secondRevisionId = scenario.update_A_and_add_D_and_E();
- SimpleNodeScenario scenario2 = new SimpleNodeScenario(mongoConnection);
- String thirdRevisionId = scenario.update_A_and_add_D_and_E();
+ public void fetchWithInvalidMiddleRevision() throws Exception {
+ String revisionId1 = addNode("a");
+ String revisionId2 = addNode("b");
+ String revisionId3 = addNode("c");
- DBCollection commitCollection = mongoConnection.getCommitCollection();
- DBObject q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
- .is(MongoUtil.toMongoRepresentation(secondRevisionId)).get();
- DBObject u = new BasicDBObject("$set", new BasicDBObject(CommitMongo.KEY_FAILED, Boolean.TRUE));
- commitCollection.update(q, u);
+ invalidateCommit(revisionId2);
+ updateBaseRevisionId(revisionId3, revisionId1);
- q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID).is(MongoUtil.toMongoRepresentation(thirdRevisionId))
- .get();
- u = new BasicDBObject();
- u.put("$set",
- new BasicDBObject(CommitMongo.KEY_BASE_REVISION_ID, MongoUtil
- .toMongoRepresentation(firstRevisionId)));
- commitCollection.update(q, u);
+ FetchNodesByPathAndDepthQuery query = new FetchNodesByPathAndDepthQuery(mongoConnection,
+ "/", revisionId3, -1);
+ List actuals = NodeMongo.toNode(query.execute());
- FetchNodesByPathAndDepthQuery query = new FetchNodesByPathAndDepthQuery(mongoConnection, "/", thirdRevisionId,
- -1);
- List result = query.execute();
- List actuals = NodeMongo.toNode(result);
- Node expected = NodeBuilder
- .build(String
- .format("{ \"/#%1$s\" : { \"a#%3$s\" : { \"int\" : 1 , \"double\" : 0.123 , \"b#%3$s\" : { \"string\" : \"foo\" , \"e#%3$s\" : { \"array\" : [ 123, null, 123.456, \"for:bar\", true ] } } , \"c#%1$s\" : { \"bool\" : true }, \"d#%3$s\" : { \"null\" : null } } } }",
- firstRevisionId, secondRevisionId,
- thirdRevisionId));
- Set expecteds = expected.getDescendants(true);
+ String json = String.format("{\"/#%2$s\" : { \"a#%1$s\" : {}, \"c#%2$s\" : {} }}", revisionId1, revisionId3);
+ Set expecteds = NodeBuilder.build(json).getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
@Test
- public void testSimpleFetchRootAndAllDepths() throws Exception {
+ public void simpleFetchRootAndAllDepths() throws Exception {
SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
String firstRevisionId = scenario.create();
String secondRevisionId = scenario.update_A_and_add_D_and_E();
@@ -215,4 +175,33 @@
expecteds = expected.getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
+
+ private String addNode(String nodeName) throws Exception {
+ List instructions = new LinkedList();
+ instructions.add(new AddNodeInstructionImpl("/", nodeName));
+ Commit commit = new CommitImpl("/", "+" + nodeName, "Add /" + nodeName, instructions);
+ CommitCommandMongo command = new CommitCommandMongo(mongoConnection, commit);
+ String revisionId = command.execute();
+ return revisionId;
+ }
+
+ private void invalidateCommit(String revisionId) {
+ DBCollection commitCollection = mongoConnection.getCommitCollection();
+ DBObject query = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
+ .is(MongoUtil.toMongoRepresentation(revisionId)).get();
+ DBObject update = new BasicDBObject();
+ update.put("$set", new BasicDBObject(CommitMongo.KEY_FAILED, Boolean.TRUE));
+ commitCollection.update(query, update);
+ }
+
+ private void updateBaseRevisionId(String revisionId2, String baseRevisionId) {
+ DBCollection commitCollection = mongoConnection.getCommitCollection();
+ DBObject query = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
+ .is(MongoUtil.toMongoRepresentation(revisionId2))
+ .get();
+ DBObject update = new BasicDBObject("$set",
+ new BasicDBObject(CommitMongo.KEY_BASE_REVISION_ID,
+ MongoUtil.toMongoRepresentation(baseRevisionId)));
+ commitCollection.update(query, update);
+ }
}
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchNodesForRevisionQuery.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchNodesForRevisionQuery.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchNodesForRevisionQuery.java (working copy)
@@ -24,7 +24,8 @@
import org.apache.jackrabbit.mongomk.MongoConnection;
import org.apache.jackrabbit.mongomk.model.NodeMongo;
import org.apache.jackrabbit.mongomk.util.MongoUtil;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
@@ -37,7 +38,9 @@
* @author nodeMongos = query.execute();
- List actuals = NodeMongo.toNode(nodeMongos);
- Node expected = NodeBuilder
- .build(String
- .format("{ \"/#%1$s\" : { \"a#%3$s\" : { \"int\" : 1 , \"double\" : 0.123 , \"b#%3$s\" : { \"string\" : \"foo\" , \"e#%3$s\" : { \"array\" : [ 123, null, 123.456, \"for:bar\", true ] } } , \"c#%1$s\" : { \"bool\" : true }, \"d#%3$s\" : { \"null\" : null } } } }",
- firstRevisionId, secondRevisionId,
- thirdRevisionId));
- Set expecteds = expected.getDescendants(true);
+ FetchNodesForRevisionQuery query = new FetchNodesForRevisionQuery(mongoConnection,
+ new String[] { "/", "/a", "/b", "/c", "not_existing" }, revisionId3);
+ List actuals = NodeMongo.toNode(query.execute());
+
+ //String json = String.format("{\"/#%1$s\" : { \"a#%2$s\" : {}, \"b#%3$s\" : {}, \"c#%1$s\" : {} }}", revisionId3, revisionId1, revisionId2);
+ String json = String.format("{\"/#%2$s\" : { \"b#%1$s\" : {}, \"c#%2$s\" : {} }}", revisionId2, revisionId3);
+ Set expecteds = NodeBuilder.build(json).getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
@Test
- public void testFetchWithInvalidLastRevision() throws Exception {
- SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
- String firstRevisionId = scenario.create();
- String secondRevisionId = scenario.update_A_and_add_D_and_E();
- SimpleNodeScenario scenario2 = new SimpleNodeScenario(mongoConnection);
- String thirdRevisionId = scenario.update_A_and_add_D_and_E();
+ public void fetchWithInvalidLastRevision() throws Exception {
+ String revisionId1 = addNode("a");
+ String revisionId2 = addNode("b");
+ String revisionId3 = addNode("c");
- DBCollection commitCollection = mongoConnection.getCommitCollection();
- DBObject q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
- .is(MongoUtil.toMongoRepresentation(thirdRevisionId)).get();
- DBObject u = new BasicDBObject();
- u.put("$set", new BasicDBObject(CommitMongo.KEY_FAILED, Boolean.TRUE));
- commitCollection.update(q, u);
+ invalidateCommit(revisionId3);
- FetchNodesForRevisionQuery query = new FetchNodesForRevisionQuery(mongoConnection, new String[] { "/", "/a",
- "/a/b", "/a/c", "/a/d", "/a/b/e", "not_existing" }, thirdRevisionId);
- List nodeMongos = query.execute();
- List actuals = NodeMongo.toNode(nodeMongos);
- Node expected = NodeBuilder
- .build(String
- .format("{ \"/#%1$s\" : { \"a#%2$s\" : { \"int\" : 1 , \"double\" : 0.123 , \"b#%2$s\" : { \"string\" : \"foo\" , \"e#%2$s\" : { \"array\" : [ 123, null, 123.456, \"for:bar\", true ] } } , \"c#%1$s\" : { \"bool\" : true }, \"d#%2$s\" : { \"null\" : null } } } }",
- firstRevisionId, secondRevisionId));
- Set expecteds = expected.getDescendants(true);
+ FetchNodesForRevisionQuery query = new FetchNodesForRevisionQuery(mongoConnection,
+ new String[] { "/", "/a", "/b", "/c", "not_existing" }, revisionId3);
+ List actuals = NodeMongo.toNode(query.execute());
+
+ String json = String.format("{\"/#%2$s\" : { \"a#%1$s\" : {}, \"b#%2$s\" : {} }}", revisionId1, revisionId2);
+ Set expecteds = NodeBuilder.build(json).getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
@Test
- public void testFetchWithInvalidMiddleRevision() throws Exception {
- SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
- String firstRevisionId = scenario.create();
- String secondRevisionId = scenario.update_A_and_add_D_and_E();
- SimpleNodeScenario scenario2 = new SimpleNodeScenario(mongoConnection);
- String thirdRevisionId = scenario.update_A_and_add_D_and_E();
+ public void fetchWithInvalidMiddleRevision() throws Exception {
+ String revisionId1 = addNode("a");
+ String revisionId2 = addNode("b");
+ String revisionId3 = addNode("c");
- DBCollection commitCollection = mongoConnection.getCommitCollection();
- DBObject q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
- .is(MongoUtil.toMongoRepresentation(secondRevisionId)).get();
- DBObject u = new BasicDBObject("$set", new BasicDBObject(CommitMongo.KEY_FAILED, Boolean.TRUE));
- commitCollection.update(q, u);
+ invalidateCommit(revisionId2);
+ updateBaseRevisionId(revisionId3, revisionId1);
- q = QueryBuilder.start(CommitMongo.KEY_REVISION_ID).is(MongoUtil.toMongoRepresentation(thirdRevisionId))
- .get();
- u = new BasicDBObject();
- u.put("$set",
- new BasicDBObject(CommitMongo.KEY_BASE_REVISION_ID, MongoUtil
- .toMongoRepresentation(firstRevisionId)));
- commitCollection.update(q, u);
+ FetchNodesForRevisionQuery query = new FetchNodesForRevisionQuery(mongoConnection,
+ new String[] { "/", "/a", "/b", "/c", "not_existing" }, revisionId3);
+ List actuals = NodeMongo.toNode(query.execute());
- FetchNodesForRevisionQuery query = new FetchNodesForRevisionQuery(mongoConnection, new String[] { "/", "/a",
- "/a/b", "/a/c", "/a/d", "/a/b/e", "not_existing" }, thirdRevisionId);
- List nodeMongos = query.execute();
- List actuals = NodeMongo.toNode(nodeMongos);
- Node expected = NodeBuilder
- .build(String
- .format("{ \"/#%1$s\" : { \"a#%3$s\" : { \"int\" : 1 , \"double\" : 0.123 , \"b#%3$s\" : { \"string\" : \"foo\" , \"e#%3$s\" : { \"array\" : [ 123, null, 123.456, \"for:bar\", true ] } } , \"c#%1$s\" : { \"bool\" : true }, \"d#%3$s\" : { \"null\" : null } } } }",
- firstRevisionId, secondRevisionId,
- thirdRevisionId));
- Set expecteds = expected.getDescendants(true);
+ String json = String.format("{\"/#%2$s\" : { \"a#%1$s\" : {}, \"c#%2$s\" : {} }}", revisionId1, revisionId3);
+ Set expecteds = NodeBuilder.build(json).getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
@Test
- public void testFetchWithOneRevision() throws Exception {
+ public void fetchWithOneRevision() throws Exception {
SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
String revisionId = scenario.create();
@@ -158,7 +127,7 @@
}
@Test
- public void testFetchWithTwoRevisions() throws Exception {
+ public void fetchWithTwoRevisions() throws Exception {
SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
String firstRevisionId = scenario.create();
String secondRevisionId = scenario.update_A_and_add_D_and_E();
@@ -185,4 +154,33 @@
expecteds = expected.getDescendants(true);
NodeAssert.assertEquals(expecteds, actuals);
}
+
+ private String addNode(String nodeName) throws Exception {
+ List instructions = new LinkedList();
+ instructions.add(new AddNodeInstructionImpl("/", nodeName));
+ Commit commit = new CommitImpl("/", "+" + nodeName, "Add /" + nodeName, instructions);
+ CommitCommandMongo command = new CommitCommandMongo(mongoConnection, commit);
+ String revisionId = command.execute();
+ return revisionId;
+ }
+
+ private void invalidateCommit(String revisionId) {
+ DBCollection commitCollection = mongoConnection.getCommitCollection();
+ DBObject query = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
+ .is(MongoUtil.toMongoRepresentation(revisionId)).get();
+ DBObject update = new BasicDBObject();
+ update.put("$set", new BasicDBObject(CommitMongo.KEY_FAILED, Boolean.TRUE));
+ commitCollection.update(query, update);
+ }
+
+ private void updateBaseRevisionId(String revisionId2, String baseRevisionId) {
+ DBCollection commitCollection = mongoConnection.getCommitCollection();
+ DBObject query = QueryBuilder.start(CommitMongo.KEY_REVISION_ID)
+ .is(MongoUtil.toMongoRepresentation(revisionId2))
+ .get();
+ DBObject update = new BasicDBObject("$set",
+ new BasicDBObject(CommitMongo.KEY_BASE_REVISION_ID,
+ MongoUtil.toMongoRepresentation(baseRevisionId)));
+ commitCollection.update(query, update);
+ }
}
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchValidCommitsQuery.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchValidCommitsQuery.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/FetchValidCommitsQuery.java (working copy)
@@ -25,7 +25,8 @@
import org.apache.jackrabbit.mongomk.MongoConnection;
import org.apache.jackrabbit.mongomk.model.CommitMongo;
import org.apache.jackrabbit.mongomk.util.MongoUtil;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
@@ -40,7 +41,7 @@
public class FetchValidCommitsQuery extends AbstractQuery> {
private static final int LIMITLESS = 0;
- private static final Logger LOG = Logger.getLogger(FetchValidCommitsQuery.class);
+ private static final Logger LOG = LoggerFactory.getLogger(FetchValidCommitsQuery.class);
private final String fromRevisionId;
private String toRevisionId;
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/GetNodesCommandMongo.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/GetNodesCommandMongo.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/GetNodesCommandMongo.java (working copy)
@@ -32,7 +32,8 @@
import org.apache.jackrabbit.mongomk.query.FetchValidCommitsQuery;
import org.apache.jackrabbit.mongomk.util.MongoUtil;
import org.apache.jackrabbit.oak.commons.PathUtils;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* A {@code Command} for getting nodes from {@code MongoDB}.
@@ -45,7 +46,7 @@
private static final long serialVersionUID = 8155418280936077632L;
}
- private static final Logger LOG = Logger.getLogger(GetNodesCommandMongo.class);
+ private static final Logger LOG = LoggerFactory.getLogger(GetNodesCommandMongo.class);
private final MongoConnection mongoConnection;
private final String path;
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/util/MongoUtil.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/util/MongoUtil.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/util/MongoUtil.java (working copy)
@@ -35,6 +35,10 @@
@SuppressWarnings("javadoc")
public class MongoUtil {
+ public static final String INITIAL_COMMIT_MESSAGE = "This is an autogenerated initial commit";
+ public static final String INITIAL_COMMIT_PATH = "";
+ public static final String INITIAL_COMMIT_DIFF = "+/ : {}";
+
public static void clearCommitCollection(MongoConnection mongoConnection) {
DBCollection commitCollection = mongoConnection.getCommitCollection();
commitCollection.drop();
@@ -66,9 +70,9 @@
CommitMongo commit = new CommitMongo();
commit.setAffectedPaths(Arrays.asList(new String[] { "/" }));
commit.setBaseRevId(0L);
- commit.setDiff("+/ : {}");
- commit.setMessage("This is an autogenerated initial commit");
- commit.setPath("");
+ commit.setDiff(INITIAL_COMMIT_DIFF);
+ commit.setMessage(INITIAL_COMMIT_MESSAGE);
+ commit.setPath(INITIAL_COMMIT_PATH);
commit.setRevisionId(0L);
commitCollection.insert(commit);
}
Index: oak-mongomk/pom.xml
===================================================================
--- oak-mongomk/pom.xml (revision 1389420)
+++ oak-mongomk/pom.xml (working copy)
@@ -26,7 +26,8 @@
org.apache.jackrabbit
oak-parent
- 0.5-SNAPSHOT
+ 0.6-SNAPSHOT
+ ../oak-parent/pom.xml
oak-mongomk
@@ -50,9 +51,9 @@
- log4j
- log4j
- 1.2.16
+ org.slf4j
+ slf4j-api
+ 1.6.4
@@ -84,6 +85,12 @@
3.1
test
+
+ ch.qos.logback
+ logback-classic
+ 1.0.1
+ test
+
Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/QueryUtils.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/QueryUtils.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/query/QueryUtils.java (working copy)
@@ -22,7 +22,8 @@
import java.util.Map;
import org.apache.jackrabbit.mongomk.model.NodeMongo;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.mongodb.DBCursor;
@@ -33,7 +34,7 @@
*/
public class QueryUtils {
- private static final Logger LOG = Logger.getLogger(QueryUtils.class);
+ private static final Logger LOG = LoggerFactory.getLogger(QueryUtils.class);
/**
* Reads nodes from the given {@link DBCursor} and add them to the returned list if their revision id is contained