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() {


Reply via email to