Author: reschke
Date: Mon Jan 13 17:35:37 2014
New Revision: 1557784
URL: http://svn.apache.org/r1557784
Log:
OAK-1266 - add MongoMK Builder support and Fixture
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java?rev=1557784&r1=1557783&r2=1557784&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
Mon Jan 13 17:35:37 2014
@@ -29,6 +29,7 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.Weigher;
import com.mongodb.DB;
+
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.api.MicroKernelException;
import org.apache.jackrabbit.mk.blobs.BlobStore;
@@ -46,6 +47,8 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.plugins.mongomk.Node.Children;
import org.apache.jackrabbit.oak.plugins.mongomk.blob.MongoBlobStore;
import org.apache.jackrabbit.oak.plugins.mongomk.util.Utils;
+import org.apache.jackrabbit.oak.plugins.sqlpersistence.SQLBlobStore;
+import org.apache.jackrabbit.oak.plugins.sqlpersistence.SQLDocumentStore;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -676,7 +679,18 @@ public class MongoMK implements MicroKer
}
return this;
}
-
+
+ /**
+ * Sets a JDBC connection to use. By default an in-memory store is
used.
+ * @return this
+ */
+ public Builder setMongoJDBC(String jdbcurl, String username, String
password) {
+ // TODO maybe we need different connections for document store and
node store
+ this.documentStore = new SQLDocumentStore(jdbcurl, username,
password);
+ this.blobStore = new SQLBlobStore(jdbcurl, username, password);
+ return this;
+ }
+
/**
* Use the timing document store wrapper.
*
@@ -687,7 +701,7 @@ public class MongoMK implements MicroKer
this.timing = timing;
return this;
}
-
+
public boolean getTiming() {
return timing;
}
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java?rev=1557784&r1=1557783&r2=1557784&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java
Mon Jan 13 17:35:37 2014
@@ -61,6 +61,7 @@ public abstract class AbstractRepository
{NodeStoreFixture.MONGO_MK},
{NodeStoreFixture.MONGO_NS},
{NodeStoreFixture.SEGMENT_MK},
+ {NodeStoreFixture.MONGO_JDBC},
};
return Arrays.asList(fixtures);
}
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java?rev=1557784&r1=1557783&r2=1557784&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Mon Jan 13 17:35:37 2014
@@ -113,6 +113,30 @@ public abstract class NodeStoreFixture {
}
};
+ public static final NodeStoreFixture MONGO_JDBC = new NodeStoreFixture() {
+ @Override
+ public NodeStore createNodeStore() {
+ return new MongoMK.Builder().setMongoJDBC("jdbc:h2:mem:oaknodes",
"sa", "").getNodeStore();
+ }
+
+ @Override
+ public NodeStore createNodeStore(int clusterNodeId) {
+ try {
+ return new MongoMK.Builder()
+ .setMongoJDBC("jdbc:h2:mem:oaknodes", "sa",
"").getNodeStore();
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ @Override
+ public void dispose(NodeStore nodeStore) {
+ if (nodeStore instanceof MongoNodeStore) {
+ ((MongoNodeStore) nodeStore).dispose();
+ }
+ }
+ };
+
public static final NodeStoreFixture MK_IMPL = new NodeStoreFixture() {
@Override
public NodeStore createNodeStore() {