Author: mreutegg
Date: Wed Dec  6 08:19:14 2017
New Revision: 1817269

URL: http://svn.apache.org/viewvc?rev=1817269&view=rev
Log:
OAK-7032: Remove usage of DocumentMK

Added:
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/DocumentFactory.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PersistentCacheTest.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentBuilderCustomizer.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureProvider.java
    
jackrabbit/oak/trunk/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureTest.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexDocumentBuilderCustomizer.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
    
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java
    
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RevisionsCommandTest.java
    
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommandTest.java
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java
    
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/LongNameTest.java
    
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/SameNodeSiblingsTest.java

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PersistentCacheTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PersistentCacheTest.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PersistentCacheTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PersistentCacheTest.java
 Wed Dec  6 08:19:14 2017
@@ -22,9 +22,9 @@ import org.apache.jackrabbit.oak.fixture
 import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
 import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
 import org.apache.jackrabbit.oak.jcr.Jcr;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeState;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreHelper;
 import org.apache.jackrabbit.oak.plugins.document.PathRev;
 import org.apache.jackrabbit.oak.plugins.document.Revision;
@@ -58,13 +58,13 @@ public class PersistentCacheTest extends
             OakFixture oakFixture = ((OakRepositoryFixture) 
fixture).getOakFixture();
             if (oakFixture instanceof OakFixture.MongoFixture) {
                 OakFixture.MongoFixture mongoFixture = 
(OakFixture.MongoFixture) oakFixture;
-                DocumentMK.Builder builder = mongoFixture.getBuilder(1);
+                DocumentNodeStoreBuilder builder = mongoFixture.getBuilder(1);
                 builder.setStatisticsProvider(statsProvider);
                 builder.setPersistentCache("target/persistentCache,time," + 
CACHE_OPTIONS);
-                dns = builder.getNodeStore();
+                dns = builder.build();
                 nodesCache = DocumentNodeStoreHelper.getNodesCache(dns);
-                Oak[] cluster = mongoFixture.setUpCluster(new 
DocumentMK.Builder[] {builder}, statsProvider);
-                return new Repository[] { new 
Jcr(cluster[0]).createRepository() };
+                Oak oak = new Oak(dns);
+                return new Repository[] { new Jcr(oak).createRepository() };
             }
         }
         throw new IllegalArgumentException("Fixture " + fixture + " not 
supported for this benchmark.");

Modified: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
 Wed Dec  6 08:19:14 2017
@@ -19,7 +19,9 @@ package org.apache.jackrabbit.oak.fixtur
 import java.io.File;
 import java.lang.management.ManagementFactory;
 import java.net.UnknownHostException;
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
@@ -30,10 +32,11 @@ import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import org.apache.jackrabbit.oak.Oak;
 import 
org.apache.jackrabbit.oak.fixture.SegmentTarFixture.SegmentTarFixtureBuilder;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector;
 import 
org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.VersionGCStats;
+import 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBBlobStore;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore;
@@ -48,6 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static java.util.Collections.emptyList;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentNodeStoreBuilder.newRDBDocumentNodeStoreBuilder;
 
 public abstract class OakFixture {
 
@@ -181,7 +185,7 @@ public abstract class OakFixture {
                                     final String tablePrefix, final boolean 
dropDBAfterTest, final long cacheSize,
                                     final boolean useDataStore, final File 
base, final int dsCacheInMB, final int vgcMaxAge) {
         return new OakFixture(name) {
-            private DocumentMK[] kernels;
+            private DocumentNodeStore[] nodeStores;
             private VersionGarbageCollectionJob versionGarbageCollectionJob = 
null;
             private BlobStoreFixture blobStoreFixture;
 
@@ -206,38 +210,37 @@ public abstract class OakFixture {
             @Override
             public Oak getOak(int clusterId) throws Exception {
                 DataSource ds = RDBDataSourceFactory.forJdbcUrl(jdbcuri, 
jdbcuser, jdbcpasswd);
-                DocumentMK.Builder mkBuilder = new DocumentMK.Builder()
+                DocumentNodeStoreBuilder builder = 
newRDBDocumentNodeStoreBuilder()
                         .setRDBConnection(ds, getOptions(dropDBAfterTest, 
tablePrefix)).memoryCacheSize(cacheSize)
                         .setClusterId(clusterId).setLogging(false);
                 BlobStore blobStore = getBlobStore(StatisticsProvider.NOOP);
                 if (blobStore != null) {
-                    mkBuilder.setBlobStore(blobStore);
+                    builder.setBlobStore(blobStore);
                 }
-                DocumentMK dmk = mkBuilder.open();
-                return newOak(dmk.getNodeStore());
+                return newOak(builder.build());
             }
 
             @Override
             public Oak[] setUpCluster(int n, StatisticsProvider statsProvider) 
throws Exception {
                 Oak[] cluster = new Oak[n];
-                kernels = new DocumentMK[cluster.length];
+                nodeStores = new DocumentNodeStore[cluster.length];
                 for (int i = 0; i < cluster.length; i++) {
                     BlobStore blobStore = getBlobStore(statsProvider);
                     DataSource ds = RDBDataSourceFactory.forJdbcUrl(jdbcuri, 
jdbcuser, jdbcpasswd);
-                    DocumentMK.Builder mkBuilder = new DocumentMK.Builder()
-                            .setStatisticsProvider(statsProvider)
+                    DocumentNodeStoreBuilder builder = 
newRDBDocumentNodeStoreBuilder()
                             .setRDBConnection(ds, getOptions(dropDBAfterTest, 
tablePrefix)).memoryCacheSize(cacheSize)
+                            .setStatisticsProvider(statsProvider)
                             // FIXME: OAK-3389
                             .setLeaseCheck(false)
                             .setClusterId(i + 1).setLogging(false);
                     if (blobStore != null) {
-                        mkBuilder.setBlobStore(blobStore);
+                        builder.setBlobStore(blobStore);
                     }
-                    kernels[i] = mkBuilder.open();
-                    cluster[i] = newOak(kernels[i].getNodeStore());
+                    nodeStores[i] = builder.build();
+                    cluster[i] = newOak(nodeStores[i]);
                 }
-                if (vgcMaxAge > 0 && kernels.length >= 1) {
-                    versionGarbageCollectionJob = new 
VersionGarbageCollectionJob(kernels[0].getNodeStore(), vgcMaxAge);
+                if (vgcMaxAge > 0 && nodeStores.length >= 1) {
+                    versionGarbageCollectionJob = new 
VersionGarbageCollectionJob(nodeStores[0], vgcMaxAge);
                     Thread t = new Thread(versionGarbageCollectionJob);
                     t.setDaemon(true);
                     t.start();
@@ -251,10 +254,10 @@ public abstract class OakFixture {
                 if (versionGarbageCollectionJob != null) {
                     versionGarbageCollectionJob.stop();
                 }
-                for (DocumentMK kernel : kernels) {
-                    kernel.dispose();
-                    if (kernel.getDocumentStore() instanceof RDBDocumentStore) 
{
-                        dropped += 
((RDBDocumentStore)kernel.getDocumentStore()).getDroppedTables();
+                for (DocumentNodeStore ns : nodeStores) {
+                    ns.dispose();
+                    if (ns.getDocumentStore() instanceof RDBDocumentStore) {
+                        dropped += 
((RDBDocumentStore)ns.getDocumentStore()).getDroppedTables();
                     }
                 }
                 if (dropDBAfterTest) {
@@ -369,7 +372,7 @@ public abstract class OakFixture {
 
         private final int dsCacheInMB;
 
-        private DocumentMK[] kernels;
+        private List<DocumentNodeStore> nodeStores = new ArrayList<>();
         private BlobStoreFixture blobStoreFixture;
 
         public MongoFixture(final String name, final String uri,
@@ -385,38 +388,41 @@ public abstract class OakFixture {
             this.dsCacheInMB = dsCacheInMB;
         }
 
-        public DocumentMK.Builder getBuilder(int clusterId) throws 
UnknownHostException {
+        public DocumentNodeStoreBuilder getBuilder(int clusterId) throws 
UnknownHostException {
             MongoConnection mongo = new MongoConnection(uri);
-            DocumentMK.Builder mkBuilder = new DocumentMK.Builder().
-                    setMongoDB(mongo.getDB()).
+            DocumentNodeStoreBuilder builder = new 
MongoDocumentNodeStoreBuilder() {
+                @Override
+                public DocumentNodeStore build() {
+                    DocumentNodeStore ns = super.build();
+                    nodeStores.add(ns);
+                    return ns;
+                }
+            }.setMongoDB(mongo.getDB()).
                     memoryCacheSize(cacheSize).
-                            setClusterId(clusterId).
-                            setLogging(false);
+                    setClusterId(clusterId).
+                    setLogging(false);
 
-            configurePersistentCache(mkBuilder);
-            setupBlobStore(mkBuilder, StatisticsProvider.NOOP);
-            return mkBuilder;
+            configurePersistentCache(builder);
+            setupBlobStore(builder, StatisticsProvider.NOOP);
+            return builder;
         }
 
         @Override
         public Oak getOak(int clusterId) throws Exception {
-            DocumentMK dmk = getBuilder(clusterId).open();
-            return newOak(dmk.getNodeStore());
+            return newOak(getBuilder(clusterId).build());
         }
 
-        public Oak[] setUpCluster(DocumentMK.Builder[] builders, 
StatisticsProvider statsProvider) throws Exception {
+        public Oak[] setUpCluster(DocumentNodeStoreBuilder[] builders, 
StatisticsProvider statsProvider) throws Exception {
             Oak[] cluster = new Oak[builders.length];
-            kernels = new DocumentMK[cluster.length];
             for (int i = 0; i < cluster.length; i++) {
-                kernels[i] = builders[i].open();
-                cluster[i] = newOak(kernels[i].getNodeStore());
+                cluster[i] = newOak(builders[i].build());
             }
             return cluster;
         }
 
         @Override
         public Oak[] setUpCluster(int n, StatisticsProvider statsProvider) 
throws Exception {
-            DocumentMK.Builder[] builders = new DocumentMK.Builder[n];
+            DocumentNodeStoreBuilder[] builders = new 
DocumentNodeStoreBuilder[n];
             for (int i = 0; i < n; i++) {
                 builders[i] = getBuilder(i + 1);
             }
@@ -425,9 +431,10 @@ public abstract class OakFixture {
 
         @Override
         public void tearDownCluster() {
-            for (DocumentMK kernel : kernels) {
-                kernel.dispose();
+            for (DocumentNodeStore ns : nodeStores) {
+                ns.dispose();
             }
+            nodeStores.clear();
             if (dropDBAfterTest) {
                 try {
                     MongoConnection mongo =
@@ -443,10 +450,10 @@ public abstract class OakFixture {
             }
         }
 
-        private void setupBlobStore(DocumentMK.Builder mkBuilder, 
StatisticsProvider statsProvider) {
+        private void setupBlobStore(DocumentNodeStoreBuilder builder, 
StatisticsProvider statsProvider) {
             initializeBlobStoreFixture(statsProvider);
             if (blobStoreFixture != null) {
-                mkBuilder.setBlobStore(blobStoreFixture.setUp());
+                builder.setBlobStore(blobStoreFixture.setUp());
             }
         }
 
@@ -461,9 +468,9 @@ public abstract class OakFixture {
             }
         }
 
-        private void configurePersistentCache(DocumentMK.Builder mkBuilder) {
+        private void configurePersistentCache(DocumentNodeStoreBuilder 
builder) {
             //TODO Persistent cache should be removed in teardown
-            mkBuilder.setPersistentCache("target/persistentCache,time");
+            builder.setPersistentCache("target/persistentCache,time");
 
             String persistentCacheIncludes = 
System.getProperty("persistentCacheIncludes");
 
@@ -479,7 +486,7 @@ public abstract class OakFixture {
                 PathFilter pf = new PathFilter(paths, emptyList());
                 System.out.println("Configuring persistent cache to only cache 
nodes under paths " + paths);
                 Predicate<String> cachePredicate = path -> path != null && 
pf.filter(path) == PathFilter.Result.INCLUDE;
-                mkBuilder.setNodeCachePredicate(cachePredicate);
+                builder.setNodeCachePredicate(cachePredicate);
             }
         }
 

Modified: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java
 Wed Dec  6 08:19:14 2017
@@ -68,10 +68,6 @@ public class DocumentNodeStoreHelper {
         System.out.println("Collected in " + sw.stop());
     }
 
-    public static VersionGCSupport createVersionGCSupport(DocumentMK.Builder 
builder) {
-        return builder.createVersionGCSupport();
-    }
-
     public static VersionGarbageCollector createVersionGC(
             DocumentNodeStore nodeStore, VersionGCSupport gcSupport) {
         return new VersionGarbageCollector(nodeStore, gcSupport);

Modified: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentBuilderCustomizer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentBuilderCustomizer.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentBuilderCustomizer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentBuilderCustomizer.java
 Wed Dec  6 08:19:14 2017
@@ -21,7 +21,7 @@ package org.apache.jackrabbit.oak.run.cl
 
 import java.io.IOException;
 
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 
 /**
  * Extension point which needs to be registered with the Whiteboard
@@ -29,5 +29,5 @@ import org.apache.jackrabbit.oak.plugins
  */
 public interface DocumentBuilderCustomizer {
 
-    void customize(DocumentMK.Builder builder) throws IOException;
+    void customize(DocumentNodeStoreBuilder builder) throws IOException;
 }

Modified: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureProvider.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureProvider.java
 Wed Dec  6 08:19:14 2017
@@ -26,10 +26,12 @@ import javax.sql.DataSource;
 import com.google.common.io.Closer;
 import com.mongodb.MongoClientURI;
 import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
+import 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
+import 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
@@ -39,6 +41,8 @@ import org.apache.jackrabbit.oak.stats.S
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.Collections.emptyMap;
+import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentNodeStoreBuilder.newRDBDocumentNodeStoreBuilder;
 import static 
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.getService;
 
 class DocumentFixtureProvider {
@@ -47,7 +51,17 @@ class DocumentFixtureProvider {
                                          Whiteboard wb,
                                          Closer closer,
                                          boolean readOnly) throws IOException {
-        DocumentMK.Builder builder = new DocumentMK.Builder();
+        CommonOptions commonOpts = options.getOptionBean(CommonOptions.class);
+
+        DocumentNodeStoreBuilder builder;
+        if (commonOpts.isMongo()) {
+            builder = newMongoDocumentNodeStoreBuilder();
+        } else if (commonOpts.isRDB()) {
+            builder = newRDBDocumentNodeStoreBuilder();
+        } else {
+            throw new IllegalStateException("Unknown DocumentStore");
+        }
+
         StatisticsProvider statisticsProvider = checkNotNull(getService(wb, 
StatisticsProvider.class));
 
         DocumentBuilderCustomizer customizer = getService(wb, 
DocumentBuilderCustomizer.class);
@@ -76,8 +90,6 @@ class DocumentFixtureProvider {
             builder.disableBranches();
         }
 
-        CommonOptions commonOpts = options.getOptionBean(CommonOptions.class);
-
         if (docStoreOpts.isCacheDistributionDefined()){
             builder.memoryCacheDistribution(
                     docStoreOpts.getNodeCachePercentage(),
@@ -98,16 +110,16 @@ class DocumentFixtureProvider {
             MongoConnection mongo = new MongoConnection(uri.getURI());
             wb.register(MongoConnection.class, mongo, emptyMap());
             closer.register(mongo::close);
-            builder.setMongoDB(mongo.getDB());
-            dns = builder.getNodeStore();
+            ((MongoDocumentNodeStoreBuilder) 
builder).setMongoDB(mongo.getDB());
+            dns = builder.build();
             wb.register(MongoDocumentStore.class, (MongoDocumentStore) 
builder.getDocumentStore(), emptyMap());
         } else if (commonOpts.isRDB()) {
             RDBStoreOptions rdbOpts = 
options.getOptionBean(RDBStoreOptions.class);
             DataSource ds = 
RDBDataSourceFactory.forJdbcUrl(commonOpts.getStoreArg(),
                     rdbOpts.getUser(), rdbOpts.getPassword());
             wb.register(DataSource.class, ds, emptyMap());
-            builder.setRDBConnection(ds);
-            dns = builder.getNodeStore();
+            ((RDBDocumentNodeStoreBuilder) builder).setRDBConnection(ds);
+            dns = builder.build();
             wb.register(RDBDocumentStore.class, (RDBDocumentStore) 
builder.getDocumentStore(), emptyMap());
         } else {
             throw new IllegalStateException("Unknown DocumentStore");

Modified: 
jackrabbit/oak/trunk/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureTest.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/run/cli/DocumentFixtureTest.java
 Wed Dec  6 08:19:14 2017
@@ -22,7 +22,7 @@ package org.apache.jackrabbit.oak.run.cl
 import java.io.IOException;
 
 import joptsimple.OptionParser;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.MongoUtils;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
@@ -64,7 +64,7 @@ public class DocumentFixtureTest {
 
         }
 
-        verify(customizer, times(1)).customize(any(DocumentMK.Builder.class));
+        verify(customizer, 
times(1)).customize(any(DocumentNodeStoreBuilder.class));
     }
 
     private Options createMongoOptions() throws IOException {

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexDocumentBuilderCustomizer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexDocumentBuilderCustomizer.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexDocumentBuilderCustomizer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexDocumentBuilderCustomizer.java
 Wed Dec  6 08:19:14 2017
@@ -23,7 +23,7 @@ import java.io.File;
 import java.io.IOException;
 
 import org.apache.jackrabbit.oak.commons.IOUtils;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.run.cli.DocumentBuilderCustomizer;
 import org.apache.jackrabbit.oak.run.cli.DocumentNodeStoreOptions;
 import org.apache.jackrabbit.oak.run.cli.Options;
@@ -46,7 +46,7 @@ class IndexDocumentBuilderCustomizer imp
     }
 
     @Override
-    public void customize(DocumentMK.Builder builder) throws IOException {
+    public void customize(DocumentNodeStoreBuilder builder) throws IOException 
{
         configurePersistentCache(builder);
         configureCacheSize(builder);
 
@@ -55,7 +55,7 @@ class IndexDocumentBuilderCustomizer imp
         }
     }
 
-    private void configurePersistentCache(DocumentMK.Builder builder) throws 
IOException {
+    private void configurePersistentCache(DocumentNodeStoreBuilder builder) 
throws IOException {
         if (System.getProperty(PERSISTENT_CACHE_PROP) == null) {
             File temp = opts.getOptionBean(IndexOptions.class).getWorkDir();
             File cache = new File(temp, "cache");
@@ -65,7 +65,7 @@ class IndexDocumentBuilderCustomizer imp
         }
     }
 
-    private void configureCacheForReadOnlyMode(DocumentMK.Builder builder) {
+    private void configureCacheForReadOnlyMode(DocumentNodeStoreBuilder 
builder) {
         if (!docStoreOpts.isCacheDistributionDefined()) {
             builder.memoryCacheDistribution(
                     35,
@@ -83,7 +83,7 @@ class IndexDocumentBuilderCustomizer imp
         log.info("Configuring cache for single threaded access");
     }
 
-    private void configureCacheSize(DocumentMK.Builder builder) {
+    private void configureCacheSize(DocumentNodeStoreBuilder builder) {
         //Set cache size to max 4GB or half of min memory
         if (docStoreOpts.getCacheSize() == 0) {
             long maxMem = Runtime.getRuntime().maxMemory();

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
 Wed Dec  6 08:19:14 2017
@@ -24,7 +24,6 @@ import java.util.Map;
 
 import org.apache.jackrabbit.oak.checkpoint.Checkpoints;
 import org.apache.jackrabbit.oak.run.commons.Command;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 
 import com.google.common.io.Closer;
@@ -35,6 +34,8 @@ import com.mongodb.MongoURI;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 
+import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
+
 class CheckpointsCommand implements Command {
 
     @Override
@@ -63,9 +64,9 @@ class CheckpointsCommand implements Comm
             if (connection.startsWith(MongoURI.MONGODB_PREFIX)) {
                 MongoClientURI uri = new MongoClientURI(connection);
                 MongoClient client = new MongoClient(uri);
-                final DocumentNodeStore store = new DocumentMK.Builder()
+                final DocumentNodeStore store = 
newMongoDocumentNodeStoreBuilder()
                         .setMongoDB(client.getDB(uri.getDatabase()))
-                        .getNodeStore();
+                        .build();
                 closer.register(Utils.asCloseable(store));
                 cps = Checkpoints.onDocumentMK(store);
             } else {

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
 Wed Dec  6 08:19:14 2017
@@ -61,7 +61,6 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.plugins.blob.BlobReferenceRetriever;
 import org.apache.jackrabbit.oak.plugins.blob.ReferenceCollector;
 import 
org.apache.jackrabbit.oak.plugins.document.DocumentBlobReferenceRetriever;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
 import org.apache.jackrabbit.oak.run.commons.Command;
@@ -85,6 +84,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.commons.FileIOUtils.writeAsLine;
 import static org.apache.jackrabbit.oak.commons.FileIOUtils.writeStrings;
 import static 
org.apache.jackrabbit.oak.commons.sort.EscapeUtils.escapeLineBreak;
+import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
 import static 
org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
 
 /**
@@ -180,7 +180,7 @@ public class DataStoreCheckCommand imple
                     MongoClientURI uri = new MongoClientURI(source);
                     MongoClient client = new MongoClient(uri);
                     DocumentNodeStore docNodeStore =
-                        new 
DocumentMK.Builder().setMongoDB(client.getDB(uri.getDatabase())).getNodeStore();
+                        
newMongoDocumentNodeStoreBuilder().setMongoDB(client.getDB(uri.getDatabase())).build();
                     closer.register(Utils.asCloseable(docNodeStore));
                     blobStore = (GarbageCollectableBlobStore) 
docNodeStore.getBlobStore();
                     marker = new DocumentBlobReferenceRetriever(docNodeStore);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
 Wed Dec  6 08:19:14 2017
@@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.run;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.run.commons.Command;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.spi.cluster.ClusterRepositoryInfo;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
@@ -35,6 +34,8 @@ import com.mongodb.MongoURI;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 
+import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
+
 /**
  * OFFLINE utility to delete the clusterId stored as hidden
  * property as defined by ClusterRepositoryInfo.
@@ -97,9 +98,9 @@ class ResetClusterIdCommand implements C
             if (args[0].startsWith(MongoURI.MONGODB_PREFIX)) {
                 MongoClientURI uri = new MongoClientURI(source);
                 MongoClient client = new MongoClient(uri);
-                final DocumentNodeStore dns = new DocumentMK.Builder()
+                final DocumentNodeStore dns = 
newMongoDocumentNodeStoreBuilder()
                         .setMongoDB(client.getDB(uri.getDatabase()))
-                        .getNodeStore();
+                        .build();
                 closer.register(Utils.asCloseable(dns));
                 store = dns;
             } else {

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java
 Wed Dec  6 08:19:14 2017
@@ -39,8 +39,8 @@ import joptsimple.OptionSpec;
 
 import org.apache.jackrabbit.oak.commons.TimeDurationFormatter;
 import org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfoDocument;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.FormatVersion;
 import org.apache.jackrabbit.oak.plugins.document.MissingLastRevSeeker;
@@ -57,7 +57,6 @@ import org.slf4j.LoggerFactory;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreHelper.createVersionGC;
-import static 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreHelper.createVersionGCSupport;
 import static 
org.apache.jackrabbit.oak.plugins.document.FormatVersion.versionOf;
 import static 
org.apache.jackrabbit.oak.plugins.document.util.Utils.getRootDocument;
 import static 
org.apache.jackrabbit.oak.plugins.document.util.Utils.timestampToString;
@@ -204,13 +203,13 @@ public class RevisionsCommand implements
     private VersionGarbageCollector bootstrapVGC(RevisionsOptions options,
                                                  Closer closer)
             throws IOException {
-        DocumentMK.Builder builder = createDocumentMKBuilder(options, closer);
+        DocumentNodeStoreBuilder builder = createDocumentMKBuilder(options, 
closer);
         if (builder == null) {
             System.err.println("revisions mode only available for 
DocumentNodeStore");
             System.exit(1);
         }
         // create a VersionGCSupport while builder is read-write
-        VersionGCSupport gcSupport = createVersionGCSupport(builder);
+        VersionGCSupport gcSupport = builder.createVersionGCSupport();
         // check for matching format version
         FormatVersion version = versionOf(gcSupport.getDocumentStore());
         if (!DocumentNodeStore.VERSION.equals(version)) {
@@ -225,7 +224,7 @@ public class RevisionsCommand implements
         builder.setReadOnlyMode();
         // create a version GC that operates on a read-only DocumentNodeStore
         // and a GC support with a writable DocumentStore
-        VersionGarbageCollector gc = createVersionGC(builder.getNodeStore(), 
gcSupport);
+        VersionGarbageCollector gc = createVersionGC(builder.build(), 
gcSupport);
 
         VersionGCOptions gcOptions = gc.getOptions();
         gcOptions = gcOptions.withDelayFactor(options.getDelay());
@@ -361,7 +360,7 @@ public class RevisionsCommand implements
                     RevisionsOptions.CMD_SWEEP + " command");
             return;
         }
-        DocumentMK.Builder builder = createDocumentMKBuilder(options, closer);
+        DocumentNodeStoreBuilder builder = createDocumentMKBuilder(options, 
closer);
         if (builder == null) {
             System.err.println("revisions mode only available for 
DocumentNodeStore");
             return;
@@ -386,7 +385,7 @@ public class RevisionsCommand implements
             return;
         }
         builder.setReadOnlyMode();
-        DocumentNodeStore ns = builder.getNodeStore();
+        DocumentNodeStore ns = builder.build();
         closer.register(asCloseable(ns));
         MissingLastRevSeeker seeker = builder.createMissingLastRevSeeker();
         SweepHelper.sweep(store, new RevisionContextWrapper(ns, clusterId), 
seeker);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java
 Wed Dec  6 08:19:14 2017
@@ -24,8 +24,9 @@ import javax.sql.DataSource;
 
 import com.mongodb.MongoClientURI;
 
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
+import 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.run.commons.Command;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException;
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore;
@@ -79,12 +80,12 @@ class UnlockUpgradeCommand implements Co
                     System.err.println("Database missing in MongoDB URI: " + 
clientURI.getURI());
                 } else {
                     MongoConnection mongo = new 
MongoConnection(clientURI.getURI());
-                    store = new MongoDocumentStore(mongo.getDB(), new 
DocumentMK.Builder());
+                    store = new MongoDocumentStore(mongo.getDB(), new 
MongoDocumentNodeStoreBuilder());
                 }
             } else if (uri.startsWith("jdbc")) {
                 DataSource ds = RDBDataSourceFactory.forJdbcUrl(uri,
                         rdbjdbcuser.value(options), 
rdbjdbcpasswd.value(options));
-                store = new RDBDocumentStore(ds, new DocumentMK.Builder());
+                store = new RDBDocumentStore(ds, new 
DocumentNodeStoreBuilder());
             } else {
                 System.err.println("Unrecognized URI: " + uri);
             }

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
 Wed Dec  6 08:19:14 2017
@@ -19,6 +19,8 @@ package org.apache.jackrabbit.oak.run;
 
 import static java.util.Arrays.asList;
 import static org.apache.jackrabbit.oak.commons.PropertiesUtil.populate;
+import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentNodeStoreBuilder.newRDBDocumentNodeStoreBuilder;
 
 import java.io.Closeable;
 import java.io.File;
@@ -46,8 +48,8 @@ import org.apache.jackrabbit.oak.blob.cl
 import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStore;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.OakFileDataStore;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
 import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
 import org.apache.jackrabbit.oak.run.cli.DummyDataStore;
@@ -159,9 +161,9 @@ class Utils {
         }
 
         if (src.startsWith(MongoURI.MONGODB_PREFIX) || src.startsWith("jdbc")) 
{
-            DocumentMK.Builder builder = createDocumentMKBuilder(options, 
closer);
+            DocumentNodeStoreBuilder builder = 
createDocumentMKBuilder(options, closer);
             if (builder != null) {
-                DocumentNodeStore store = builder.getNodeStore();
+                DocumentNodeStore store = builder.build();
                 closer.register(asCloseable(store));
                 return store;
             }
@@ -171,7 +173,7 @@ class Utils {
     }
 
     @CheckForNull
-    static DocumentMK.Builder createDocumentMKBuilder(NodeStoreOptions options,
+    static DocumentNodeStoreBuilder createDocumentMKBuilder(NodeStoreOptions 
options,
                                                       Closer closer)
             throws IOException {
         String src = options.getStoreArg();
@@ -179,7 +181,7 @@ class Utils {
             options.printHelpOn(System.err);
             System.exit(1);
         }
-        DocumentMK.Builder builder = new DocumentMK.Builder();
+        DocumentNodeStoreBuilder builder;
         if (src.startsWith(MongoURI.MONGODB_PREFIX)) {
             MongoClientURI uri = new MongoClientURI(src);
             if (uri.getDatabase() == null) {
@@ -189,11 +191,11 @@ class Utils {
             }
             MongoConnection mongo = new MongoConnection(uri.getURI());
             closer.register(asCloseable(mongo));
-            builder.setMongoDB(mongo.getDB());
+            builder = 
newMongoDocumentNodeStoreBuilder().setMongoDB(mongo.getDB());
         } else if (src.startsWith("jdbc")) {
             DataSource ds = RDBDataSourceFactory.forJdbcUrl(src,
                     options.getRDBJDBCUser(), options.getRDBJDBCPassword());
-            builder.setRDBConnection(ds);
+            builder = newRDBDocumentNodeStoreBuilder().setRDBConnection(ds);
         } else {
             return null;
         }

Modified: 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java
 Wed Dec  6 08:19:14 2017
@@ -33,9 +33,9 @@ import org.apache.jackrabbit.oak.index.i
 import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
 import org.apache.jackrabbit.oak.index.indexer.document.NodeStateIndexer;
 import org.apache.jackrabbit.oak.plugins.document.Collection;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMKBuilderProvider;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.MongoConnectionFactory;
 import org.apache.jackrabbit.oak.plugins.document.MongoUtils;
@@ -126,8 +126,8 @@ public class DocumentStoreIndexerIT exte
 
     @Test
     public void bundling() throws Exception{
-        DocumentMK.Builder docBuilder = 
builderProvider.newBuilder().setMongoDB(getConnection().getDB());
-        DocumentNodeStore store = docBuilder.getNodeStore();
+        DocumentNodeStoreBuilder docBuilder = 
builderProvider.newBuilder().setMongoDB(getConnection().getDB());
+        DocumentNodeStore store = docBuilder.build();
 
         Whiteboard wb = new DefaultWhiteboard();
         MongoDocumentStore ds = (MongoDocumentStore) 
docBuilder.getDocumentStore();

Modified: 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RevisionsCommandTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RevisionsCommandTest.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RevisionsCommandTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RevisionsCommandTest.java
 Wed Dec  6 08:19:14 2017
@@ -26,9 +26,9 @@ import com.google.common.collect.Immutab
 
 import org.apache.jackrabbit.oak.plugins.document.Collection;
 import org.apache.jackrabbit.oak.plugins.document.Document;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMKBuilderProvider;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.MongoConnectionFactory;
 import org.apache.jackrabbit.oak.plugins.document.MongoUtils;
@@ -121,7 +121,7 @@ public class RevisionsCommandTest {
 
         // remove the sweep revision to force a sweep run
         MongoConnection c = connectionFactory.getConnection();
-        DocumentMK.Builder builder = 
builderProvider.newBuilder().setMongoDB(c.getDB());
+        DocumentNodeStoreBuilder builder = 
builderProvider.newBuilder().setMongoDB(c.getDB());
         DocumentStore store = builder.getDocumentStore();
         UpdateOp op = new UpdateOp(getIdFromPath("/"), false);
         op.removeMapEntry("_sweepRev", new Revision(0, 0, clusterId));

Modified: 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommandTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommandTest.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommandTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommandTest.java
 Wed Dec  6 08:19:14 2017
@@ -19,7 +19,6 @@
 package org.apache.jackrabbit.oak.run;
 
 import org.apache.jackrabbit.oak.plugins.document.Collection;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMKBuilderProvider;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
@@ -34,6 +33,7 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import static 
org.apache.jackrabbit.oak.plugins.document.FormatVersion.versionOf;
+import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeTrue;
@@ -80,7 +80,7 @@ public class UnlockUpgradeCommandTest {
 
     private void resetFormatVersion(FormatVersion v) {
         MongoConnection c = connectionFactory.getConnection();
-        DocumentStore s = new MongoDocumentStore(c.getDB(), new 
DocumentMK.Builder());
+        DocumentStore s = new MongoDocumentStore(c.getDB(), 
newMongoDocumentNodeStoreBuilder());
         s.remove(Collection.SETTINGS, "version");
         assertTrue(v.writeTo(s));
         s.dispose();

Added: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/DocumentFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/DocumentFactory.java?rev=1817269&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/DocumentFactory.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/DocumentFactory.java
 Wed Dec  6 08:19:14 2017
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.upgrade.cli.node;
+
+import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
+
+abstract class DocumentFactory implements NodeStoreFactory {
+
+    private static final long MB = 1024 * 1024;
+
+    static <T extends DocumentNodeStoreBuilder> T baseConfiguration(T builder, 
int cacheSize) {
+        boolean fastMigration = 
!Boolean.getBoolean("mongomk.disableFastMigration");
+        builder.memoryCacheSize(cacheSize * MB);
+        if (fastMigration) {
+            builder.disableBranches();
+        }
+        return builder;
+    }
+}

Propchange: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/DocumentFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java
 Wed Dec  6 08:19:14 2017
@@ -16,10 +16,10 @@
  */
 package org.apache.jackrabbit.oak.upgrade.cli.node;
 
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBBlobStore;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
+import 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.slf4j.Logger;
@@ -31,7 +31,9 @@ import javax.sql.DataSource;
 import java.io.Closeable;
 import java.io.IOException;
 
-public class JdbcFactory implements NodeStoreFactory {
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentNodeStoreBuilder.newRDBDocumentNodeStoreBuilder;
+
+public class JdbcFactory extends DocumentFactory {
 
     private static final Logger log = 
LoggerFactory.getLogger(JdbcFactory.class);
 
@@ -59,7 +61,7 @@ public class JdbcFactory implements Node
     @Override
     public NodeStore create(BlobStore blobStore, Closer closer) throws 
IOException {
         System.setProperty(DocumentNodeStore.SYS_PROP_DISABLE_JOURNAL, "true");
-        DocumentMK.Builder builder = MongoFactory.getBuilder(cacheSize);
+        RDBDocumentNodeStoreBuilder builder = 
baseConfiguration(newRDBDocumentNodeStoreBuilder(), cacheSize);
         if (blobStore != null) {
             builder.setBlobStore(blobStore);
         }
@@ -69,12 +71,12 @@ public class JdbcFactory implements Node
         }
         log.info("Initialized DocumentNodeStore on RDB with Cache size : {} 
MB, Fast migration : {}", cacheSize,
                 builder.isDisableBranches());
-        DocumentNodeStore documentNodeStore = builder.getNodeStore();
+        DocumentNodeStore documentNodeStore = builder.build();
 
         // TODO probably we should disable all observers, see OAK-5651
         documentNodeStore.getBundlingConfigHandler().unregisterObserver();
 
-        closer.register(MongoFactory.asCloseable(documentNodeStore));
+        closer.register(documentNodeStore::dispose);
         return documentNodeStore;
     }
 

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java
 Wed Dec  6 08:19:14 2017
@@ -17,9 +17,9 @@
 package org.apache.jackrabbit.oak.upgrade.cli.node;
 
 import com.mongodb.DB;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoBlobStore;
+import 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
@@ -27,13 +27,12 @@ import com.google.common.io.Closer;
 import com.mongodb.MongoClient;
 import com.mongodb.MongoClientURI;
 
-import java.io.Closeable;
 import java.io.IOException;
 import java.net.UnknownHostException;
 
-public class MongoFactory implements NodeStoreFactory {
+import static 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
 
-    private static final long MB = 1024 * 1024;
+public class MongoFactory extends DocumentFactory {
 
     private final MongoClientURI uri;
 
@@ -50,7 +49,7 @@ public class MongoFactory implements Nod
     @Override
     public NodeStore create(BlobStore blobStore, Closer closer) throws 
IOException {
         System.setProperty(DocumentNodeStore.SYS_PROP_DISABLE_JOURNAL, "true");
-        DocumentMK.Builder builder = getBuilder(cacheSize);
+        MongoDocumentNodeStoreBuilder builder = 
baseConfiguration(newMongoDocumentNodeStoreBuilder(), cacheSize);
         builder.setMongoDB(getDB(closer));
         if (blobStore != null) {
             builder.setBlobStore(blobStore);
@@ -58,12 +57,12 @@ public class MongoFactory implements Nod
         if (readOnly) {
             builder.setReadOnlyMode();
         }
-        DocumentNodeStore documentNodeStore = builder.getNodeStore();
+        DocumentNodeStore documentNodeStore = builder.build();
 
         // TODO probably we should disable all observers, see OAK-5651
         documentNodeStore.getBundlingConfigHandler().unregisterObserver();
 
-        closer.register(asCloseable(documentNodeStore));
+        closer.register(documentNodeStore::dispose);
         return documentNodeStore;
     }
 
@@ -75,7 +74,7 @@ public class MongoFactory implements Nod
             db = uri.getDatabase();
         }
         MongoClient client = new MongoClient(uri);
-        closer.register(asCloseable(client));
+        closer.register(client::close);
         return client.getDB(db);
     }
 
@@ -92,34 +91,6 @@ public class MongoFactory implements Nod
         }
     }
 
-    static Closeable asCloseable(final DocumentNodeStore documentNodeStore) {
-        return new Closeable() {
-            @Override
-            public void close() throws IOException {
-                documentNodeStore.dispose();
-            }
-        };
-    }
-
-    private static Closeable asCloseable(final MongoClient client) {
-        return new Closeable() {
-            @Override
-            public void close() throws IOException {
-                client.close();
-            }
-        };
-    }
-
-    static DocumentMK.Builder getBuilder(int cacheSize) {
-        boolean fastMigration = 
!Boolean.getBoolean("mongomk.disableFastMigration");
-        DocumentMK.Builder builder = new DocumentMK.Builder();
-        builder.memoryCacheSize(cacheSize * MB);
-        if (fastMigration) {
-            builder.disableBranches();
-        }
-        return builder;
-    }
-
     @Override
     public String toString() {
         return String.format("DocumentNodeStore[%s]", uri.toString());

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/LongNameTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/LongNameTest.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/LongNameTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/LongNameTest.java
 Wed Dec  6 08:19:14 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.upgrad
 
 import static com.google.common.collect.Iterables.cycle;
 import static com.google.common.collect.Iterables.limit;
+import static 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder.newDocumentNodeStoreBuilder;
 import static org.junit.Assert.fail;
 
 import java.io.File;
@@ -35,7 +36,6 @@ import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.core.RepositoryContext;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
@@ -97,7 +97,7 @@ public class LongNameTest {
 
     @Test
     public void longNameShouldBeSkipped() throws RepositoryException, 
IOException {
-        DocumentNodeStore nodeStore = new DocumentMK.Builder().getNodeStore();
+        DocumentNodeStore nodeStore = newDocumentNodeStoreBuilder().build();
         try {
             upgrade(nodeStore, false, true);
 
@@ -131,7 +131,7 @@ public class LongNameTest {
 
     @Test(expected = RepositoryException.class)
     public void longNameOnDocumentStoreThrowsAnException() throws 
RepositoryException, IOException {
-        DocumentNodeStore nodeStore = new DocumentMK.Builder().getNodeStore();
+        DocumentNodeStore nodeStore = newDocumentNodeStoreBuilder().build();
         try {
             upgrade(nodeStore, false, false);
         } finally {

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/SameNodeSiblingsTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/SameNodeSiblingsTest.java?rev=1817269&r1=1817268&r2=1817269&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/SameNodeSiblingsTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/SameNodeSiblingsTest.java
 Wed Dec  6 08:19:14 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.upgrad
 
 import static com.google.common.collect.ImmutableSet.of;
 import static com.google.common.collect.Sets.newHashSet;
+import static 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder.newDocumentNodeStoreBuilder;
 import static org.junit.Assert.assertEquals;
 
 import java.io.File;
@@ -39,7 +40,6 @@ import org.apache.jackrabbit.core.Reposi
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
-import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.junit.After;
 import org.junit.Before;
@@ -151,7 +151,7 @@ public class SameNodeSiblingsTest {
 
         config = RepositoryConfig.install(crx2RepoDir); // re-create the config
         RepositoryContext context = RepositoryContext.create(config);
-        DocumentNodeStore target = new DocumentMK.Builder().getNodeStore();
+        DocumentNodeStore target = newDocumentNodeStoreBuilder().build();
         try {
             RepositoryUpgrade upgrade = new RepositoryUpgrade(context, target);
             upgrade.copy(null);


Reply via email to