Index: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/InconsistentNodeHierarchyException.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/InconsistentNodeHierarchyException.java (revision 0)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/InconsistentNodeHierarchyException.java (working copy)
@@ -0,0 +1,7 @@
+package org.apache.jackrabbit.mongomk.command;
+
+public class InconsistentNodeHierarchyException extends Exception {
+
+ private static final long serialVersionUID = 6361719178625761034L;
+
+}
Property changes on: oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/command/InconsistentNodeHierarchyException.java
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
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)
@@ -17,8 +17,11 @@
package org.apache.jackrabbit.mongomk.model;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
import org.apache.jackrabbit.mongomk.MongoConnection;
import org.apache.jackrabbit.mongomk.api.model.Instruction.AddNodeInstruction;
@@ -50,18 +53,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 +68,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);
}
@@ -192,9 +190,27 @@
NodeMongo srcNode = getStoredNode(srcPath);
destNode = srcNode;
destNode.setPath(destPath);
+ pathNodeMap.remove(srcPath);
pathNodeMap.put(destPath, destNode);
}
+ // [Mete] Check that this works in all cases.
+ // Remove all the pending old node child changes.
+ Map pendingChanges = new HashMap();
+ for (Iterator> iterator = pathNodeMap.entrySet().iterator(); iterator.hasNext();) {
+ Entry entry = iterator.next();
+ String path = entry.getKey();
+ NodeMongo node = entry.getValue();
+ if (path.startsWith(srcPath)) {
+ iterator.remove();
+ String newPath = destPath + path.substring(srcPath.length());
+ node.setPath(newPath);
+ pendingChanges.put(newPath, node);
+ }
+ }
+ pathNodeMap.putAll(pendingChanges);
+
+
// Remove from srcParent - [Mete] What if there is no such child?
NodeMongo scrParentNode = getStoredNode(srcParentPath);
scrParentNode.removeChild(srcNodeName);
@@ -213,8 +229,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/model/CommitMongo.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/model/CommitMongo.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/model/CommitMongo.java (working copy)
@@ -86,7 +86,7 @@
@SuppressWarnings("unchecked")
public List getAffectedPaths() {
- return (List) this.get(KEY_AFFECTED_PATH);
+ return (List) get(KEY_AFFECTED_PATH);
}
public long getBaseRevisionId() {
@@ -110,7 +110,7 @@
}
public boolean hasFailed() {
- return this.getBoolean(KEY_FAILED);
+ return getBoolean(KEY_FAILED);
}
public void setAffectedPaths(List affectedPaths) {
@@ -142,7 +142,7 @@
}
public void setRevisionId(String revisionId) {
- this.setRevisionId(MongoUtil.toMongoRepresentation(revisionId));
+ setRevisionId(MongoUtil.toMongoRepresentation(revisionId));
}
public void setTimestamp(long timestamp) {
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;
@@ -112,6 +113,9 @@
while (true) {
CommitMongo commitMongo = revisions.get(currentRevision);
+ if (commitMongo == null) {
+ break;
+ }
validCommits.add(commitMongo);
Long baseRevision = commitMongo.getBaseRevisionId();
Long fromRevision = MongoUtil.toMongoRepresentation(fromRevisionId);
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}.
@@ -41,11 +42,7 @@
*/
public class GetNodesCommandMongo extends AbstractCommand {
- class InconsitentNodeHierarchyException extends Exception {
- 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;
@@ -86,7 +83,7 @@
boolean verified = verifyProblematicNodes() && verifyNodeHierarchy();
if (!verified) {
- throw new InconsitentNodeHierarchyException();
+ throw new InconsistentNodeHierarchyException();
}
this.buildNodeStructure();
@@ -101,7 +98,7 @@
@Override
public boolean needsRetry(Exception e) {
- return e instanceof InconsitentNodeHierarchyException;
+ return e instanceof InconsistentNodeHierarchyException;
}
private void buildNodeStructure() {
Index: oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/command/GetNodesCommandMongoTest.java
===================================================================
--- oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/command/GetNodesCommandMongoTest.java (revision 1389420)
+++ oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/command/GetNodesCommandMongoTest.java (working copy)
@@ -16,153 +16,72 @@
*/
package org.apache.jackrabbit.mongomk.command;
-import java.util.Arrays;
-import java.util.Set;
+import static org.junit.Assert.fail;
import org.apache.jackrabbit.mongomk.BaseMongoTest;
-import org.apache.jackrabbit.mongomk.MongoConnection;
import org.apache.jackrabbit.mongomk.api.model.Node;
import org.apache.jackrabbit.mongomk.impl.NodeAssert;
import org.apache.jackrabbit.mongomk.impl.builder.NodeBuilder;
-import org.apache.jackrabbit.mongomk.model.CommitMongo;
-import org.apache.jackrabbit.mongomk.model.NodeMongo;
import org.apache.jackrabbit.mongomk.scenario.SimpleNodeScenario;
-import org.easymock.EasyMock;
-import org.junit.Ignore;
import org.junit.Test;
-import com.mongodb.BasicDBList;
-import com.mongodb.BasicDBObject;
-import com.mongodb.DBCollection;
-import com.mongodb.DBCursor;
-import com.mongodb.DBObject;
-
/**
- * @author expectedNodeMongos = NodeMongo.fromNodes(expected.getDescendants(true));
- for (NodeMongo nodeMongo : expectedNodeMongos) {
-
- BasicDBObject groupDbObject = new BasicDBObject();
- groupDbObject.put("result", nodeMongo);
- if (!nodeMongo.getPath().equals(missingPath)) {
- results1.add(groupDbObject);
- }
- results2.add(groupDbObject);
- }
-
- DBCollection mockNodeCollection = EasyMock.createMock(DBCollection.class);
- EasyMock.expect(
- mockNodeCollection.group(EasyMock.anyObject(DBObject.class), EasyMock.anyObject(DBObject.class),
- EasyMock.anyObject(DBObject.class), EasyMock.anyObject(String.class))).andReturn(results1)
- .once();
- EasyMock.expect(
- mockNodeCollection.group(EasyMock.anyObject(DBObject.class), EasyMock.anyObject(DBObject.class),
- EasyMock.anyObject(DBObject.class), EasyMock.anyObject(String.class))).andReturn(results2)
- .once();
- EasyMock.replay(mockNodeCollection);
-
- CommitMongo firstCommit = new CommitMongo();
- firstCommit.setAffectedPaths(Arrays.asList(new String[] { "/", "/a", "/a/b", "/a/c" }));
- firstCommit.setRevisionId(1L);
+ @Test
+ public void getNodesDepthUnlimited() throws Exception {
+ SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
+ String firstRevisionId = scenario.create();
+ String secondRevisionId = scenario.update_A_and_add_D_and_E();
- CommitMongo secondCommit = new CommitMongo();
- secondCommit.setAffectedPaths(Arrays.asList(new String[] { "/a", "/a/d", "/a/b/e" }));
- secondCommit.setRevisionId(2L);
+ GetNodesCommandMongo command = new GetNodesCommandMongo(mongoConnection, "/", firstRevisionId, -1);
+ Node actual = command.execute();
+ Node expected = NodeBuilder.build(
+ String.format("{ \"/#%1$s\" : { \"a#%1$s\" : { \"int\" : 1 , \"b#%1$s\" : { \"string\" : \"foo\" } , \"c#%1$s\" : { \"bool\" : true } } } }",
+ firstRevisionId));
+ NodeAssert.assertDeepEquals(expected, actual);
- DBCursor mockDbCursor = EasyMock.createMock(DBCursor.class);
- EasyMock.expect(mockDbCursor.sort(EasyMock.anyObject(DBObject.class))).andReturn(mockDbCursor);
- EasyMock.expect(mockDbCursor.limit(EasyMock.anyInt())).andReturn(mockDbCursor);
- EasyMock.expect(mockDbCursor.hasNext()).andReturn(true).once();
- EasyMock.expect(mockDbCursor.next()).andReturn(firstCommit).once();
- EasyMock.expect(mockDbCursor.hasNext()).andReturn(true).once();
- EasyMock.expect(mockDbCursor.next()).andReturn(secondCommit).once();
- EasyMock.expect(mockDbCursor.hasNext()).andReturn(false).once();
- EasyMock.replay(mockDbCursor);
+ command = new GetNodesCommandMongo(mongoConnection, "/", secondRevisionId, -1);
+ actual = command.execute();
+ 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));
+ NodeAssert.assertDeepEquals(expected, actual);
+ }
- DBCollection mockCommitCollection = EasyMock.createMock(DBCollection.class);
- EasyMock.expect(mockCommitCollection.find(EasyMock.anyObject(DBObject.class))).andReturn(mockDbCursor);
- EasyMock.replay(mockCommitCollection);
+ @Test
+ public void getNodesAfterDeletion() throws Exception {
+ SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
+ String revisionId = scenario.create();
+ revisionId = scenario.delete_A();
- MongoConnection mockConnection = EasyMock.createMock(MongoConnection.class);
- EasyMock.expect(mockConnection.getNodeCollection()).andReturn(mockNodeCollection).times(2);
- EasyMock.expect(mockConnection.getCommitCollection()).andReturn(mockCommitCollection);
- EasyMock.replay(mockConnection);
+ GetNodesCommandMongo command = new GetNodesCommandMongo(mongoConnection, "/", revisionId, -1);
+ Node actual = command.execute();
+ Node expected = NodeBuilder.build(String.format("{ \"/#%1$s\" : {} }", revisionId));
- return mockConnection;
+ NodeAssert.assertDeepEquals(expected, actual);
}
- private MongoConnection createStaleNodeScenario(Node expected, String stalePath) {
- BasicDBList results1 = new BasicDBList();
- BasicDBList results2 = new BasicDBList();
-
- Set expectedNodeMongos = NodeMongo.fromNodes(expected.getDescendants(true));
- for (NodeMongo nodeMongo : expectedNodeMongos) {
- BasicDBObject groupDbObject = new BasicDBObject();
- groupDbObject.put("result", nodeMongo);
- results2.add(groupDbObject);
-
- if (nodeMongo.getPath().equals(stalePath)) {
- NodeMongo nodeMongoStale = new NodeMongo();
- nodeMongoStale.putAll(nodeMongo.toMap());
- nodeMongoStale.setRevisionId(1L);
- }
+ @Test
+ public void getNodesInvalidRevisionId() throws Exception {
+ SimpleNodeScenario scenario = new SimpleNodeScenario(mongoConnection);
+ scenario.create();
- results1.add(groupDbObject);
+ GetNodesCommandMongo command = new GetNodesCommandMongo(mongoConnection, "/", String.valueOf(Long.MAX_VALUE), -1);
+ try {
+ command.execute();
+ fail("Exception expected");
+ } catch (Exception expected) {
}
-
- DBCollection mockNodeCollection = EasyMock.createMock(DBCollection.class);
- EasyMock.expect(
- mockNodeCollection.group(EasyMock.anyObject(DBObject.class), EasyMock.anyObject(DBObject.class),
- EasyMock.anyObject(DBObject.class), EasyMock.anyObject(String.class))).andReturn(results1)
- .once();
- EasyMock.expect(
- mockNodeCollection.group(EasyMock.anyObject(DBObject.class), EasyMock.anyObject(DBObject.class),
- EasyMock.anyObject(DBObject.class), EasyMock.anyObject(String.class))).andReturn(results2)
- .once();
- EasyMock.replay(mockNodeCollection);
-
- CommitMongo firstCommit = new CommitMongo();
- firstCommit.setAffectedPaths(Arrays.asList(new String[] { "/", "/a", "/a/b", "/a/c" }));
- firstCommit.setRevisionId(1L);
-
- CommitMongo secondCommit = new CommitMongo();
- secondCommit.setAffectedPaths(Arrays.asList(new String[] { "/a", "/a/d", "/a/b/e" }));
- secondCommit.setRevisionId(2L);
-
- DBCursor mockDbCursor = EasyMock.createMock(DBCursor.class);
- EasyMock.expect(mockDbCursor.sort(EasyMock.anyObject(DBObject.class))).andReturn(mockDbCursor);
- EasyMock.expect(mockDbCursor.limit(EasyMock.anyInt())).andReturn(mockDbCursor);
- EasyMock.expect(mockDbCursor.hasNext()).andReturn(true).once();
- EasyMock.expect(mockDbCursor.next()).andReturn(firstCommit).once();
- EasyMock.expect(mockDbCursor.hasNext()).andReturn(true).once();
- EasyMock.expect(mockDbCursor.next()).andReturn(secondCommit).once();
- EasyMock.expect(mockDbCursor.hasNext()).andReturn(false).once();
- EasyMock.replay(mockDbCursor);
-
- DBCollection mockCommitCollection = EasyMock.createMock(DBCollection.class);
- EasyMock.expect(mockCommitCollection.find(EasyMock.anyObject(DBObject.class))).andReturn(mockDbCursor);
- EasyMock.replay(mockCommitCollection);
-
- MongoConnection mockConnection = EasyMock.createMock(MongoConnection.class);
- EasyMock.expect(mockConnection.getNodeCollection()).andReturn(mockNodeCollection).times(2);
- EasyMock.expect(mockConnection.getCommitCollection()).andReturn(mockCommitCollection);
- EasyMock.replay(mockConnection);
-
- return mockConnection;
}
}
Index: oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java
===================================================================
--- oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java (revision 1389420)
+++ oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java (working copy)
@@ -297,7 +297,7 @@
@Test
public void snapshotIsolation() {
- final int NUM_COMMITS = 1000;
+ final int NUM_COMMITS = 100;
String[] revs = new String[NUM_COMMITS];
@@ -1025,16 +1025,21 @@
}
@Test
- public void testBlobs() {
- // test with small blobs
- testBlobs(1234);
- // test with medium sized blobs
- testBlobs(1234567);
- // test with large blobs
- testBlobs(32 * 1024 * 1024);
+ public void testSmallBlob() {
+ testBlobs(1234, 8 * 1024);
+ }
+
+ @Test
+ public void testMediumBlob() {
+ testBlobs(1234567, 8 * 1024);
}
- private void testBlobs(int size) {
+ @Test
+ public void testLargeBlob() {
+ testBlobs(32 * 1024 * 1024, 1024 * 1024);
+ }
+
+ private void testBlobs(int size, int bufferSize) {
// write data
TestInputStream in = new TestInputStream(size);
String id = mk.write(in);
@@ -1054,7 +1059,8 @@
// verify data
InputStream in1 = new TestInputStream(size);
- InputStream in2 = new BufferedInputStream(new MicroKernelInputStream(mk, id));
+ InputStream in2 = new BufferedInputStream(
+ new MicroKernelInputStream(mk, id), bufferSize);
try {
while (true) {
int x = in1.read();
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/src/main/java/org/apache/jackrabbit/mongomk/model/NodeMongo.java
===================================================================
--- oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/model/NodeMongo.java (revision 1389420)
+++ oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/model/NodeMongo.java (working copy)
@@ -255,16 +255,16 @@
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(super.toString());
- sb.append(" internal props: ");
- sb.append("AddedChildren = ");
+ sb.deleteCharAt(sb.length() - 1);
+ sb.append(", addedChildren : ");
sb.append(addedChildren);
- sb.append(", RemovedChildren = ");
+ sb.append(", removedChildren : ");
sb.append(removedChildren);
- sb.append(", AddedProps = ");
+ sb.append(", addedProps : ");
sb.append(addedProps);
- sb.append(", RemovedProps = ");
+ sb.append(", removedProps : ");
sb.append(removedProps);
-
+ sb.append(" }");
return sb.toString();
}
}
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
@@ -79,10 +80,10 @@
test
- org.easymock
- easymock
- 3.1
- test
+ ch.qos.logback
+ logback-classic
+ 1.0.1
+ test
Index: oak-mongomk-test/pom.xml
===================================================================
--- oak-mongomk-test/pom.xml (revision 1389420)
+++ oak-mongomk-test/pom.xml (working copy)
@@ -26,44 +26,31 @@
org.apache.jackrabbit
oak-parent
- 0.5-SNAPSHOT
+ 0.6-SNAPSHOT
+ ../oak-parent/pom.xml
oak-mongomk-test
+ Oak Mongo MicroKernel Test
-
- org.apache.jackrabbit
- oak-mongomk-api
- ${project.version}
-
-
- org.apache.jackrabbit
- oak-mongomk-impl
- ${project.version}
-
+
+
org.apache.jackrabbit
oak-mongomk
${project.version}
test
-
- org.json
- json
- 20090211
-
-
- junit
- junit
- test
-
+
+
org.apache.jackrabbit
oak-it-mk
${project.version}
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