You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by ca...@apache.org on 2018/01/06 00:39:14 UTC

[12/15] incubator-rya git commit: RYA-104 Post-mongo change rebase

RYA-104 Post-mongo change rebase


Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/c3c262d8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/c3c262d8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/c3c262d8

Branch: refs/heads/master
Commit: c3c262d8e1944e8077be7ee6fcd30756a5edc7be
Parents: 5bc98c4
Author: isper3at <sm...@gmail.com>
Authored: Wed Dec 27 13:35:36 2017 -0500
Committer: kchilton2 <ke...@gmail.com>
Committed: Fri Jan 5 16:48:40 2018 -0500

----------------------------------------------------------------------
 .../instance/MongoDetailsAdapterTest.java       | 308 +++++++++----------
 .../client/mongo/MongoConnectionDetails.java    |  37 ++-
 .../rya/api/client/mongo/MongoInstall.java      |  18 +-
 .../client/mongo/MongoExecuteSparqlQueryIT.java |  67 +++-
 .../client/mongo/MongoGetInstanceDetailsIT.java |  18 +-
 .../rya/api/client/mongo/MongoInstallIT.java    |  16 +-
 .../api/client/mongo/MongoInstanceExistsIT.java |   8 +-
 .../api/client/mongo/MongoListInstancesIT.java  |   8 +-
 .../client/mongo/MongoLoadStatementsFileIT.java |  34 +-
 .../api/client/mongo/MongoLoadStatementsIT.java |  46 +--
 .../rya/api/client/mongo/MongoUninstallIT.java  |   8 +-
 extras/rya.pcj.fluo/pom.xml                     |   2 +-
 .../apache/rya/shell/RyaConnectionCommands.java |  73 +++--
 13 files changed, 346 insertions(+), 297 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/instance/MongoDetailsAdapterTest.java
----------------------------------------------------------------------
diff --git a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/instance/MongoDetailsAdapterTest.java b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/instance/MongoDetailsAdapterTest.java
index 533e2df..875f4e5 100644
--- a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/instance/MongoDetailsAdapterTest.java
+++ b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/instance/MongoDetailsAdapterTest.java
@@ -50,60 +50,60 @@ public class MongoDetailsAdapterTest {
     public void ryaDetailsToMongoTest() {
         // Convert the Details into a Mongo DB OBject.
         final RyaDetails details = RyaDetails.builder()
-            .setRyaInstanceName("test")
-            .setRyaVersion("1")
-            .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
-          //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(true))
-            .setPCJIndexDetails(
-                PCJIndexDetails.builder()
-                .setEnabled(true)
-                .setFluoDetails(new FluoDetails("fluo"))
-                .addPCJDetails(
-                        PCJDetails.builder()
-                        .setId("pcj_0")
-                        .setUpdateStrategy(PCJUpdateStrategy.BATCH)
-                        .setLastUpdateTime(new Date(0L)))
-                .addPCJDetails(
-                        PCJDetails.builder()
-                        .setId("pcj_1")
-                        .setUpdateStrategy(PCJUpdateStrategy.BATCH)
-                        .setLastUpdateTime(new Date(1L))))
-            .setTemporalIndexDetails(new TemporalIndexDetails(true))
-            .setFreeTextDetails(new FreeTextIndexDetails(true))
-            .setProspectorDetails(new ProspectorDetails(Optional.fromNullable(new Date(0L))))
-            .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.fromNullable(new Date(1L))))
-            .build();
+                .setRyaInstanceName("test")
+                .setRyaVersion("1")
+                .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
+                //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(true))
+                .setPCJIndexDetails(
+                        PCJIndexDetails.builder()
+                        .setEnabled(true)
+                        .setFluoDetails(new FluoDetails("fluo"))
+                        .addPCJDetails(
+                                PCJDetails.builder()
+                                .setId("pcj_0")
+                                .setUpdateStrategy(PCJUpdateStrategy.BATCH)
+                                .setLastUpdateTime(new Date(0L)))
+                        .addPCJDetails(
+                                PCJDetails.builder()
+                                .setId("pcj_1")
+                                .setUpdateStrategy(PCJUpdateStrategy.BATCH)
+                                .setLastUpdateTime(new Date(1L))))
+                .setTemporalIndexDetails(new TemporalIndexDetails(true))
+                .setFreeTextDetails(new FreeTextIndexDetails(true))
+                .setProspectorDetails(new ProspectorDetails(Optional.fromNullable(new Date(0L))))
+                .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.fromNullable(new Date(1L))))
+                .build();
 
         final BasicDBObject actual = MongoDetailsAdapter.toDBObject(details);
 
         // Ensure it matches the expected object.
         final DBObject expected = (DBObject) JSON.parse(
-            "{ "
-            + "instanceName : \"test\","
-            + "version : \"1\","
-            + "entityCentricDetails : true,"
-          //RYA-215            + "geoDetails : true,"
-            + "pcjDetails : {"
-            +    "enabled : true ,"
-            +    "fluoName : \"fluo\","
-            +    "pcjs : [ "
-            +       "{"
-            +          "id : \"pcj_0\","
-            +          "updateStrategy : \"BATCH\","
-            +          "lastUpdate : { $date : \"1970-01-01T00:00:00.000Z\"}"
-            +       "},"
-            +       "{"
-            +          "id : \"pcj_1\","
-            +          "updateStrategy : \"BATCH\","
-            +          "lastUpdate : { $date : \"1970-01-01T00:00:00.001Z\"}"
-            +       "}]"
-            + "},"
-            + "temporalDetails : true,"
-            + "freeTextDetails : true,"
-            + "prospectorDetails : { $date : \"1970-01-01T00:00:00.000Z\"},"
-            + "joinSelectivitiyDetails : { $date : \"1970-01-01T00:00:00.001Z\"}"
-          + "}"
-        );
+                "{ "
+                        + "instanceName : \"test\","
+                        + "version : \"1\","
+                        + "entityCentricDetails : true,"
+                        //RYA-215            + "geoDetails : true,"
+                        + "pcjDetails : {"
+                        +    "enabled : true ,"
+                        +    "fluoName : \"fluo\","
+                        +    "pcjs : [ "
+                        +       "{"
+                        +          "id : \"pcj_0\","
+                        +          "updateStrategy : \"BATCH\","
+                        +          "lastUpdate : { $date : \"1970-01-01T00:00:00.000Z\"}"
+                        +       "},"
+                        +       "{"
+                        +          "id : \"pcj_1\","
+                        +          "updateStrategy : \"BATCH\","
+                        +          "lastUpdate : { $date : \"1970-01-01T00:00:00.001Z\"}"
+                        +       "}]"
+                        + "},"
+                        + "temporalDetails : true,"
+                        + "freeTextDetails : true,"
+                        + "prospectorDetails : { $date : \"1970-01-01T00:00:00.000Z\"},"
+                        + "joinSelectivitiyDetails : { $date : \"1970-01-01T00:00:00.001Z\"}"
+                        + "}"
+                );
 
         assertEquals(expected.toString(), actual.toString());
     }
@@ -112,60 +112,60 @@ public class MongoDetailsAdapterTest {
     public void mongoToRyaDetailsTest() throws MalformedRyaDetailsException {
         // Convert the Mongo object into a RyaDetails.
         final BasicDBObject mongo = (BasicDBObject) JSON.parse(
-            "{ "
-            + "instanceName : \"test\","
-            + "version : \"1\","
-            + "entityCentricDetails : true,"
-          //RYA-215            + "geoDetails : true,"
-            + "pcjDetails : {"
-            +    "enabled : true ,"
-            +    "fluoName : \"fluo\","
-            +    "pcjs : [ "
-            +       "{"
-            +          "id : \"pcj_0\","
-            +          "updateStrategy : \"BATCH\","
-            +          "lastUpdate : { $date : \"1970-01-01T00:00:00.000Z\"}"
-            +       "},"
-            +       "{"
-            +          "id : \"pcj_1\","
-            +          "updateStrategy : \"BATCH\","
-            +          "lastUpdate : { $date : \"1970-01-01T00:00:00.001Z\"}"
-            +       "}]"
-            + "},"
-            + "temporalDetails : true,"
-            + "freeTextDetails : true,"
-            + "prospectorDetails : { $date : \"1970-01-01T00:00:00.000Z\"},"
-            + "joinSelectivitiyDetails : { $date : \"1970-01-01T00:00:00.001Z\"}"
-          + "}"
-        );
+                "{ "
+                        + "instanceName : \"test\","
+                        + "version : \"1\","
+                        + "entityCentricDetails : true,"
+                        //RYA-215            + "geoDetails : true,"
+                        + "pcjDetails : {"
+                        +    "enabled : true ,"
+                        +    "fluoName : \"fluo\","
+                        +    "pcjs : [ "
+                        +       "{"
+                        +          "id : \"pcj_0\","
+                        +          "updateStrategy : \"BATCH\","
+                        +          "lastUpdate : { $date : \"1970-01-01T00:00:00.000Z\"}"
+                        +       "},"
+                        +       "{"
+                        +          "id : \"pcj_1\","
+                        +          "updateStrategy : \"BATCH\","
+                        +          "lastUpdate : { $date : \"1970-01-01T00:00:00.001Z\"}"
+                        +       "}]"
+                        + "},"
+                        + "temporalDetails : true,"
+                        + "freeTextDetails : true,"
+                        + "prospectorDetails : { $date : \"1970-01-01T00:00:00.000Z\"},"
+                        + "joinSelectivitiyDetails : { $date : \"1970-01-01T00:00:00.001Z\"}"
+                        + "}"
+                );
 
         final RyaDetails actual = MongoDetailsAdapter.toRyaDetails(mongo);
 
         // Ensure it matches the expected object.
         final RyaDetails expected = RyaDetails.builder()
-            .setRyaInstanceName("test")
-            .setRyaVersion("1")
-            .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
-          //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(true))
-            .setPCJIndexDetails(
-                PCJIndexDetails.builder()
-                    .setEnabled(true)
-                    .setFluoDetails(new FluoDetails("fluo"))
-                    .addPCJDetails(
-                        PCJDetails.builder()
-                            .setId("pcj_0")
-                            .setUpdateStrategy(PCJUpdateStrategy.BATCH)
-                            .setLastUpdateTime(new Date(0L)))
-                    .addPCJDetails(
-                            PCJDetails.builder()
+                .setRyaInstanceName("test")
+                .setRyaVersion("1")
+                .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
+                //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(true))
+                .setPCJIndexDetails(
+                        PCJIndexDetails.builder()
+                        .setEnabled(true)
+                        .setFluoDetails(new FluoDetails("fluo"))
+                        .addPCJDetails(
+                                PCJDetails.builder()
+                                .setId("pcj_0")
+                                .setUpdateStrategy(PCJUpdateStrategy.BATCH)
+                                .setLastUpdateTime(new Date(0L)))
+                        .addPCJDetails(
+                                PCJDetails.builder()
                                 .setId("pcj_1")
                                 .setUpdateStrategy(PCJUpdateStrategy.BATCH)
                                 .setLastUpdateTime(new Date(1L))))
-            .setTemporalIndexDetails(new TemporalIndexDetails(true))
-            .setFreeTextDetails(new FreeTextIndexDetails(true))
-            .setProspectorDetails(new ProspectorDetails(Optional.<Date>fromNullable(new Date(0L))))
-            .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>fromNullable(new Date(1L))))
-            .build();
+                .setTemporalIndexDetails(new TemporalIndexDetails(true))
+                .setFreeTextDetails(new FreeTextIndexDetails(true))
+                .setProspectorDetails(new ProspectorDetails(Optional.<Date>fromNullable(new Date(0L))))
+                .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>fromNullable(new Date(1L))))
+                .build();
 
         assertEquals(expected, actual);
     }
@@ -175,46 +175,40 @@ public class MongoDetailsAdapterTest {
         // Convert the Mongo object into a RyaDetails.
         final BasicDBObject mongo = (BasicDBObject) JSON.parse(
                 "{ "
-                + "instanceName : \"test\","
-                + "version : \"1\","
-                + "entityCentricDetails : true,"
-              //RYA-215                + "geoDetails : false,"
-                + "pcjDetails : {"
-                +    "enabled : false,"
-                +    "fluoName : \"fluo\","
-                +    "pcjs : [ "
-                +       "{"
-                +          "id : \"pcj_1\","
-                +       "}"
-                +    "]"
-                + "},"
-                + "temporalDetails : false,"
-                + "freeTextDetails : true,"
-                + "prospectorDetails : null,"
-                + "joinSelectivitiyDetails : null"
-              + "}"
-            );
+                        + "instanceName : \"test\","
+                        + "version : \"1\","
+                        + "entityCentricDetails : true,"
+                        //RYA-215                + "geoDetails : false,"
+                        + "pcjDetails : {"
+                        +    "enabled : false,"
+                        +    "pcjs : [ "
+                        +       "{"
+                        +          "id : \"pcj_1\","
+                        +       "}"
+                        +    "]"
+                        + "},"
+                        + "temporalDetails : false,"
+                        + "freeTextDetails : true,"
+                        + "prospectorDetails : null,"
+                        + "joinSelectivitiyDetails : null"
+                        + "}"
+                );
         final RyaDetails actual = MongoDetailsAdapter.toRyaDetails(mongo);
 
         // Ensure it matches the expected object.
         final RyaDetails expected = RyaDetails.builder()
-            .setRyaInstanceName("test")
-            .setRyaVersion("1")
-            .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
-          //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(false))
-            .setPCJIndexDetails(
-                    PCJIndexDetails.builder()
-                    .setEnabled(false)
-                    .setFluoDetails(new FluoDetails("fluo"))
-                    .addPCJDetails(
-                        PCJDetails.builder()
-                            .setId("pcj_1")
-                            .setLastUpdateTime(null)))
-            .setTemporalIndexDetails(new TemporalIndexDetails(false))
-            .setFreeTextDetails(new FreeTextIndexDetails(true))
-            .setProspectorDetails(new ProspectorDetails(Optional.<Date>absent()))
-            .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>absent()))
-            .build();
+                .setRyaInstanceName("test")
+                .setRyaVersion("1")
+                .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
+                //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(false))
+                .setPCJIndexDetails(
+                        PCJIndexDetails.builder()
+                        .setEnabled(false))
+                .setTemporalIndexDetails(new TemporalIndexDetails(false))
+                .setFreeTextDetails(new FreeTextIndexDetails(true))
+                .setProspectorDetails(new ProspectorDetails(Optional.<Date>absent()))
+                .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>absent()))
+                .build();
 
         assertEquals(expected, actual);
     }
@@ -223,38 +217,38 @@ public class MongoDetailsAdapterTest {
     public void absentOptionalToMongoTest() {
         // Convert the Details into a Mongo DB OBject.
         final RyaDetails details = RyaDetails.builder()
-            .setRyaInstanceName("test")
-            .setRyaVersion("1")
-            .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
-          //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(false))
-            .setPCJIndexDetails(
-                PCJIndexDetails.builder()
-                    .setEnabled(true)
-                    .setFluoDetails(new FluoDetails("fluo")))
-            .setTemporalIndexDetails(new TemporalIndexDetails(false))
-            .setFreeTextDetails(new FreeTextIndexDetails(true))
-            .setProspectorDetails(new ProspectorDetails(Optional.<Date>absent()))
-            .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>absent()))
-            .build();
+                .setRyaInstanceName("test")
+                .setRyaVersion("1")
+                .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true))
+                //RYA-215            .setGeoIndexDetails(new GeoIndexDetails(false))
+                .setPCJIndexDetails(
+                        PCJIndexDetails.builder()
+                        .setEnabled(true)
+                        .setFluoDetails(new FluoDetails("fluo")))
+                .setTemporalIndexDetails(new TemporalIndexDetails(false))
+                .setFreeTextDetails(new FreeTextIndexDetails(true))
+                .setProspectorDetails(new ProspectorDetails(Optional.<Date>absent()))
+                .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>absent()))
+                .build();
 
         final DBObject actual = MongoDetailsAdapter.toDBObject(details);
 
         // Ensure it matches the expected object.
         final BasicDBObject expected = (BasicDBObject) JSON.parse(
                 "{ "
-                + "instanceName : \"test\","
-                + "version : \"1\","
-                + "entityCentricDetails : true,"
-              //RYA-215                + "geoDetails : false,"
-                + "pcjDetails : {"
-                +    "enabled : true,"
-                +    "fluoName : \"fluo\","
-                +    "pcjs : [ ]"
-                + "},"
-                + "temporalDetails : false,"
-                + "freeTextDetails : true"
-              + "}"
-            );
+                        + "instanceName : \"test\","
+                        + "version : \"1\","
+                        + "entityCentricDetails : true,"
+                        //RYA-215                + "geoDetails : false,"
+                        + "pcjDetails : {"
+                        +    "enabled : true,"
+                        +    "fluoName : \"fluo\","
+                        +    "pcjs : [ ]"
+                        + "},"
+                        + "temporalDetails : false,"
+                        + "freeTextDetails : true"
+                        + "}"
+                );
         assertEquals(expected, actual);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoConnectionDetails.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoConnectionDetails.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoConnectionDetails.java
index b348d34..cf8abc1 100644
--- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoConnectionDetails.java
+++ b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoConnectionDetails.java
@@ -20,9 +20,11 @@ package org.apache.rya.api.client.mongo;
 
 import static java.util.Objects.requireNonNull;
 
-import org.apache.rya.api.RdfCloudTripleStoreConfiguration;
+import java.util.Optional;
+
 import org.apache.rya.indexing.accumulo.ConfigUtils;
 import org.apache.rya.mongodb.MongoDBRdfConfiguration;
+import org.apache.rya.mongodb.StatefulMongoDBRdfConfiguration;
 
 import com.mongodb.MongoClient;
 
@@ -35,26 +37,26 @@ import edu.umd.cs.findbugs.annotations.NonNull;
 @DefaultAnnotation(NonNull.class)
 public class MongoConnectionDetails {
 
-    private final String username;
-    private final char[] userPass;
+    private final Optional<String> username;
+    private final Optional<char[]> userPass;
     private final String hostname;
     private final int port;
 
     /**
      * Constructs an instance of {@link MongoConnectionDetails}.
      *
-     * @param username - The username that was used to establish the connection. (not null)
-     * @param password - The password that was used to establish the connection. (not null)
+     * @param username - The username that was used to establish the connection.
+     * @param password - The password that was used to establish the connection.
      * @param hostname - The hostname of the Mongo DB that was connected to. (not null)
      * @param port - The port of the Mongo DB that was connected to.
      */
     public MongoConnectionDetails( //
-                    final String username, //
-                    final char[] userPass, //
-                    final String hostname, //
-                    final int port) {
-        this.username = requireNonNull(username);
-        this.userPass = requireNonNull(userPass);
+            final String username, //
+            final char[] userPass, //
+            final String hostname, //
+            final int port) {
+        this.username = Optional.ofNullable(username);
+        this.userPass = Optional.ofNullable(userPass);
         this.hostname = requireNonNull(hostname);
         this.port = port;
     }
@@ -98,24 +100,21 @@ public class MongoConnectionDetails {
         return build(ryaInstanceName, null);
     }
 
-    public MongoDBRdfConfiguration build(final String ryaInstanceName, final MongoClient mongoClient) {
+    public StatefulMongoDBRdfConfiguration build(final String ryaInstanceName, final MongoClient mongoClient) {
         // Note, we don't use the MongoDBRdfConfigurationBuilder here because it explicitly sets
         // authorizations and visibilities to an empty string if they are not set on the builder.
         // If they are null in the MongoRdfConfiguration object, it may do the right thing.
         final MongoDBRdfConfiguration conf = new MongoDBRdfConfiguration();
         conf.setBoolean(ConfigUtils.USE_MONGO, true);
-        conf.setMongoInstance(hostname);
+        conf.setMongoHostname(hostname);
         conf.setMongoPort("" + port);
         // conf.setMongoUser(username);
         // conf.setMongoPassword(new String(userPass));
         conf.setMongoDBName(ryaInstanceName);
 
         // Both of these are ways to configure the collection prefixes.
-        conf.setCollectionName("rya");
-        conf.set(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX, "rya");
-        if (mongoClient != null) {
-            conf.setMongoClient(mongoClient);
-        }
-        return conf;
+        //TODO these should not be explicitly set
+        conf.setTablePrefix("rya");
+        return new StatefulMongoDBRdfConfiguration(conf, mongoClient);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstall.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstall.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstall.java
index 9718cf1..177355d 100644
--- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstall.java
+++ b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstall.java
@@ -38,8 +38,8 @@ import org.apache.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryExce
 import org.apache.rya.api.layout.TablePrefixLayoutStrategy;
 import org.apache.rya.api.persist.RyaDAOException;
 import org.apache.rya.indexing.accumulo.ConfigUtils;
-import org.apache.rya.mongodb.MongoDBRdfConfiguration;
 import org.apache.rya.mongodb.MongoDBRyaDAO;
+import org.apache.rya.mongodb.StatefulMongoDBRdfConfiguration;
 import org.apache.rya.mongodb.instance.MongoRyaInstanceDetailsRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -94,16 +94,16 @@ public class MongoInstall extends MongoCommand implements Install {
         } catch (final AlreadyInitializedException e) {
             // This can only happen if somebody else installs an instance of Rya with the name between the check and now.
             throw new DuplicateInstanceNameException("An instance of Rya has already been installed to this Rya storage "//
-                            + "with the name '" + instanceName//
-                            + "'. Try again with a different name.");
+                    + "with the name '" + instanceName//
+                    + "'. Try again with a different name.");
         } catch (final RyaDetailsRepositoryException e) {
             throw new RyaClientException("The RyaDetails couldn't be initialized. Details: " + e.getMessage(), e);
         }
 
         // Initialize the rest of the tables used by the Rya instance.
-        final MongoDBRdfConfiguration ryaConfig = makeRyaConfig(getMongoConnectionDetails(), details);
+        final StatefulMongoDBRdfConfiguration ryaConfig = makeRyaConfig(getMongoConnectionDetails(), details, getClient());
         try {
-            final MongoDBRyaDAO ryaDao = new MongoDBRyaDAO(ryaConfig, getClient());
+            final MongoDBRyaDAO ryaDao = new MongoDBRyaDAO();
             ryaDao.setConf(ryaConfig);
 
             final TablePrefixLayoutStrategy tls = new TablePrefixLayoutStrategy();
@@ -113,7 +113,7 @@ public class MongoInstall extends MongoCommand implements Install {
             ryaDao.init();
         } catch (final RyaDAOException e) {
             throw new RyaClientException("Could not initialize all of the tables for the new Rya instance. " //
-                            + "This instance may be left in a bad state.", e);
+                    + "This instance may be left in a bad state.", e);
         }
     }
 
@@ -174,11 +174,13 @@ public class MongoInstall extends MongoCommand implements Install {
      *
      * @param connectionDetails - Indicates how to connect to Mongo. (not null)
      * @param ryaDetails - Indicates what needs to be installed. (not null)
+     * @param mongoClient
      * @return A Rya Configuration object that can be used to perform the install.
      */
-    private static MongoDBRdfConfiguration makeRyaConfig(final MongoConnectionDetails connectionDetails, final RyaDetails ryaDetails) {
+    private static StatefulMongoDBRdfConfiguration makeRyaConfig(final MongoConnectionDetails connectionDetails, final RyaDetails ryaDetails, final MongoClient mongoClient) {
         // Start with a configuration that is built using the connection details.
-        final MongoDBRdfConfiguration conf = connectionDetails.build(ryaDetails.getRyaInstanceName());
+
+        final StatefulMongoDBRdfConfiguration conf = connectionDetails.build(ryaDetails.getRyaInstanceName(), mongoClient);
 
         // The Mongo implementation of Rya does not currently support PCJs.
         if(ryaDetails.getPCJIndexDetails().isEnabled()) {

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQueryIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQueryIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQueryIT.java
index ce866dd..4e28e21 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQueryIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQueryIT.java
@@ -20,15 +20,20 @@ package org.apache.rya.api.client.mongo;
 
 import static org.junit.Assert.assertTrue;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.rya.api.client.ExecuteSparqlQuery;
+import org.apache.rya.api.client.Install;
 import org.apache.rya.api.client.Install.DuplicateInstanceNameException;
+import org.apache.rya.api.client.Install.InstallConfiguration;
 import org.apache.rya.api.client.RyaClient;
 import org.apache.rya.api.client.RyaClientException;
 import org.apache.rya.mongodb.MongoTestBase;
 import org.junit.Test;
 import org.openrdf.model.Statement;
+import org.openrdf.model.ValueFactory;
+import org.openrdf.model.impl.ValueFactoryImpl;
 
 import com.mongodb.MongoException;
 
@@ -39,37 +44,75 @@ public class MongoExecuteSparqlQueryIT extends MongoTestBase {
     @Test
     public void ExecuteSparqlQuery_exec() throws MongoException, DuplicateInstanceNameException, RyaClientException {
         // Install an instance of Rya.
-        MongoConnectionDetails connectionDetails = getConnectionDetails();
+        final MongoConnectionDetails connectionDetails = getConnectionDetails();
         final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient());
         // install rya and load some data
-        final List<Statement> loadMe = MongoLoadStatementsIT.installAndLoad();
+        final List<Statement> loadMe = installAndLoad();
         // Here comes the method to test
-        ExecuteSparqlQuery executeSparql = ryaClient.getExecuteSparqlQuery();
+        final ExecuteSparqlQuery executeSparql = ryaClient.getExecuteSparqlQuery();
         final String sparql = "SELECT * where { ?a ?b ?c }";
-        String results = executeSparql.executeSparqlQuery(conf.getMongoDBName(), sparql);
+        final String results = executeSparql.executeSparqlQuery(conf.getMongoDBName(), sparql);
         System.out.println(results);
         assertTrue("result has header.", results.startsWith("Query Result:"));
         assertTrue("result has column headings.", results.contains("a,b,c"));
         assertTrue("result has footer.", results.contains("Retrieved 3 results in"));
-        for (Statement expect : loadMe) {
+        for (final Statement expect : loadMe) {
             assertTrue("All results should contain expected subjects:",
-                            results.contains(expect.getSubject().stringValue()));
+                    results.contains(expect.getSubject().stringValue()));
             assertTrue("All results should contain expected predicates:",
-                            results.contains(expect.getPredicate().stringValue()));
+                    results.contains(expect.getPredicate().stringValue()));
             assertTrue("All results should contain expected objects:",
-                            results.contains(expect.getObject().stringValue()));
+                    results.contains(expect.getObject().stringValue()));
         }
     }
 
+    private List<Statement> installAndLoad() throws DuplicateInstanceNameException, RyaClientException {
+        // first install rya
+        final InstallConfiguration installConfig = InstallConfiguration.builder()
+                .setEnableTableHashPrefix(false)
+                .setEnableEntityCentricIndex(false)
+                .setEnableFreeTextIndex(false)
+                .setEnableTemporalIndex(false)
+                .setEnablePcjIndex(false)
+                .setEnableGeoIndex(false)
+                .build();
+        final MongoConnectionDetails connectionDetails = getConnectionDetails();
+        final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient());
+        final Install install = ryaClient.getInstall();
+        install.install(conf.getMongoDBName(), installConfig);
+        // next, load data
+        final List<Statement> loadMe = makeTestStatements();
+        ryaClient.getLoadStatements().loadStatements(
+                conf.getMongoDBName(),
+                loadMe);
+        return loadMe;
+    }
+
+    /**
+     * @return some data to load
+     */
+    private List<Statement> makeTestStatements() {
+        final List<Statement> loadMe = new ArrayList<>();
+        final ValueFactory vf = new ValueFactoryImpl();
+
+        loadMe.add(vf.createStatement(vf.createURI("http://example#alice"), vf.createURI("http://example#talksTo"), vf
+                .createURI("http://example#bob")));
+        loadMe.add(vf.createStatement(vf.createURI("http://example#bob"), vf.createURI("http://example#talksTo"), vf
+                .createURI("http://example#charlie")));
+        loadMe.add(vf.createStatement(vf.createURI("http://example#charlie"), vf.createURI("http://example#likes"), vf
+                .createURI("http://example#icecream")));
+        return loadMe;
+    }
+
     /**
      * @return copy from conf to MongoConnectionDetails
      */
     private MongoConnectionDetails getConnectionDetails() {
         return new MongoConnectionDetails(
-                        conf.getMongoUser(),
-                        conf.getMongoPassword().toCharArray(),
-                        conf.getMongoInstance(),
-                        Integer.parseInt(conf.getMongoPort()));
+                conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
 
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetailsIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetailsIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetailsIT.java
index 9c8e698..af09b49 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetailsIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetailsIT.java
@@ -59,11 +59,11 @@ public class MongoGetInstanceDetailsIT extends MongoTestBase {
                 .setEnablePcjIndex(true)
                 .build();
 
-        final Install install = new MongoInstall(getConnectionDetails(), this.getMongoClient());
+        final Install install = new MongoInstall(getConnectionDetails(), getMongoClient());
         install.install(instanceName, installConfig);
 
         // Verify the correct details were persisted.
-        final GetInstanceDetails getInstanceDetails = new MongoGetInstanceDetails(getConnectionDetails(), this.getMongoClient());
+        final GetInstanceDetails getInstanceDetails = new MongoGetInstanceDetails(getConnectionDetails(), getMongoClient());
         final Optional<RyaDetails> details = getInstanceDetails.getDetails(instanceName);
 
         final RyaDetails expectedDetails = RyaDetails.builder()
@@ -82,7 +82,7 @@ public class MongoGetInstanceDetailsIT extends MongoTestBase {
                 // PCJJ Index is not supported, so it flips to false.
                 .setPCJIndexDetails(
                         PCJIndexDetails.builder()
-                            .setEnabled(false))
+                        .setEnabled(false))
 
                 .setProspectorDetails( new ProspectorDetails(Optional.<Date>absent()) )
                 .setJoinSelectivityDetails( new JoinSelectivityDetails(Optional.<Date>absent()) )
@@ -102,10 +102,10 @@ public class MongoGetInstanceDetailsIT extends MongoTestBase {
         // Mimic a pre-details rya install.
         final String instanceName = "instance_name";
 
-        this.getMongoClient().getDatabase(instanceName).createCollection("rya_triples");
+        getMongoClient().getDatabase(instanceName).createCollection("rya_triples");
 
         // Verify that the operation returns empty.
-        final GetInstanceDetails getInstanceDetails = new MongoGetInstanceDetails(getConnectionDetails(), this.getMongoClient());
+        final GetInstanceDetails getInstanceDetails = new MongoGetInstanceDetails(getConnectionDetails(), getMongoClient());
         final Optional<RyaDetails> details = getInstanceDetails.getDetails(instanceName);
         assertFalse( details.isPresent() );
     }
@@ -114,9 +114,9 @@ public class MongoGetInstanceDetailsIT extends MongoTestBase {
      * @return copy from conf to MongoConnectionDetails
      */
     private MongoConnectionDetails getConnectionDetails() {
-        return new MongoConnectionDetails(conf.getMongoUser(), 
-                        conf.getMongoPassword().toCharArray(), 
-                        conf.getMongoInstance(), 
-                        Integer.parseInt(conf.getMongoPort()));
+        return new MongoConnectionDetails(conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstallIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstallIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstallIT.java
index 08c472d..2725b99 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstallIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstallIT.java
@@ -49,7 +49,7 @@ public class MongoInstallIT extends MongoTestBase {
         final MongoConnectionDetails connectionDetails = getConnectionDetails();
 
         // Check that the instance does not exist.
-        final InstanceExists instanceExists = new MongoInstanceExists(connectionDetails, this.getMongoClient());
+        final InstanceExists instanceExists = new MongoInstanceExists(connectionDetails, getMongoClient());
         assertFalse(instanceExists.exists(ryaInstance));
 
         // Install an instance of Rya with all the valid options turned on.
@@ -71,7 +71,7 @@ public class MongoInstallIT extends MongoTestBase {
         final List<String> expected = Arrays.asList(INSTANCE_DETAILS_COLLECTION_NAME, "rya_triples");
         int count = 0;
         final List<String> found = new ArrayList<>();
-        for (final String collection : this.getMongoClient().getDatabase(conf.getMongoDBName()).listCollectionNames()) {
+        for (final String collection : getMongoClient().getDatabase(conf.getMongoDBName()).listCollectionNames()) {
             count += expected.contains(collection) ? 1 : 0;
             found.add( collection );
         }
@@ -82,12 +82,12 @@ public class MongoInstallIT extends MongoTestBase {
     @Test(expected = DuplicateInstanceNameException.class)
     public void install_alreadyExists() throws DuplicateInstanceNameException, RyaClientException {
         // Install an instance of Rya.
-        final String instanceName = conf.getCollectionName();
+        final String instanceName = conf.getRyaInstanceName();
         final InstallConfiguration installConfig = InstallConfiguration.builder().build();
 
         final MongoConnectionDetails connectionDetails = getConnectionDetails();
 
-        final Install install = new MongoInstall(connectionDetails, this.getMongoClient());
+        final Install install = new MongoInstall(connectionDetails, getMongoClient());
         install.install(instanceName, installConfig);
 
         // Install it again throws expected error.
@@ -96,9 +96,9 @@ public class MongoInstallIT extends MongoTestBase {
 
     private MongoConnectionDetails getConnectionDetails() {
         return new MongoConnectionDetails(
-                        conf.getMongoUser(),
-                        conf.getMongoPassword().toCharArray(),
-                        conf.getMongoInstance(),
-                        Integer.parseInt(conf.getMongoPort()));
+                conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstanceExistsIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstanceExistsIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstanceExistsIT.java
index 1b2f499..3ebfc68 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstanceExistsIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoInstanceExistsIT.java
@@ -72,9 +72,9 @@ public class MongoInstanceExistsIT extends MongoTestBase {
      */
     private MongoConnectionDetails getConnectionDetails() {//
         return new MongoConnectionDetails(
-                        conf.getMongoUser(),
-                        conf.getMongoPassword().toCharArray(),
-                        conf.getMongoInstance(),
-                        Integer.parseInt(conf.getMongoPort()));
+                conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoListInstancesIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoListInstancesIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoListInstancesIT.java
index 3307fa7..0628935 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoListInstancesIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoListInstancesIT.java
@@ -61,9 +61,9 @@ public class MongoListInstancesIT extends MongoTestBase {
      */
     private MongoConnectionDetails getConnectionDetails() {//
         return new MongoConnectionDetails(
-                        conf.getMongoUser(),
-                        conf.getMongoPassword().toCharArray(),
-                        conf.getMongoInstance(),
-                        Integer.parseInt(conf.getMongoPort()));
+                conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFileIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFileIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFileIT.java
index c144aba..e3ad902 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFileIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFileIT.java
@@ -53,23 +53,23 @@ public class MongoLoadStatementsFileIT extends MongoTestBase {
     public void loadTurtleFile() throws Exception {
         // Install an instance of Rya.
         final InstallConfiguration installConfig = InstallConfiguration.builder()
-                        .setEnableTableHashPrefix(false)
-                        .setEnableEntityCentricIndex(false)
-                        .setEnableFreeTextIndex(false)
-                        .setEnableTemporalIndex(false)
-                        .setEnablePcjIndex(false)
-                        .setEnableGeoIndex(false)
-                        .build();
-        MongoConnectionDetails connectionDetails = getConnectionDetails();
+                .setEnableTableHashPrefix(false)
+                .setEnableEntityCentricIndex(false)
+                .setEnableFreeTextIndex(false)
+                .setEnableTemporalIndex(false)
+                .setEnablePcjIndex(false)
+                .setEnableGeoIndex(false)
+                .build();
+        final MongoConnectionDetails connectionDetails = getConnectionDetails();
         final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient());
         final Install install = ryaClient.getInstall();
         install.install(conf.getMongoDBName(), installConfig);
 
         // Load the test statement file.
         ryaClient.getLoadStatementsFile().loadStatements(
-                        conf.getMongoDBName(),
-                        Paths.get("src/test/resources/example.ttl"),
-                        RDFFormat.TURTLE);
+                conf.getMongoDBName(),
+                Paths.get("src/test/resources/example.ttl"),
+                RDFFormat.TURTLE);
 
         // Verify that the statements were loaded.
         final ValueFactory vf = new ValueFactoryImpl();
@@ -80,10 +80,10 @@ public class MongoLoadStatementsFileIT extends MongoTestBase {
         expected.add(vf.createStatement(vf.createURI("http://example#charlie"), vf.createURI("http://example#likes"), vf.createURI("http://example#icecream")));
 
         final List<Statement> statements = new ArrayList<>();
-        MongoCursor<Document> x = getRyaCollection().find().iterator();
+        final MongoCursor<Document> x = getRyaCollection().find().iterator();
         System.out.println("getRyaCollection().count()=" + getRyaCollection().count());
         while (x.hasNext()) {
-            Document y = x.next();
+            final Document y = x.next();
             statements.add(vf.createStatement(vf.createURI(y.getString("subject")), vf.createURI(y.getString("predicate")), vf.createURI(y.getString("object"))));
         }
         assertEquals("Expect all rows to be read.", 3, getRyaCollection().count());
@@ -99,9 +99,9 @@ public class MongoLoadStatementsFileIT extends MongoTestBase {
      */
     private MongoConnectionDetails getConnectionDetails() {
         return new MongoConnectionDetails(
-                        conf.getMongoUser(),
-                        conf.getMongoPassword().toCharArray(),
-                        conf.getMongoInstance(),
-                        Integer.parseInt(conf.getMongoPort()));
+                conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsIT.java
index 43d9017..9dfb71b 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoLoadStatementsIT.java
@@ -52,7 +52,7 @@ public class MongoLoadStatementsIT extends MongoTestBase {
 
     /**
      * Pass a list of statements to our loadStatement class.
-     * 
+     *
      * @throws Exception
      */
     @Test
@@ -63,9 +63,9 @@ public class MongoLoadStatementsIT extends MongoTestBase {
         final MongoCursor<Document> triplesIterator = getRyaCollection().find().iterator();
         final ValueFactory vf = new ValueFactoryImpl();
         while (triplesIterator.hasNext()) {
-            Document triple = triplesIterator.next();
+            final Document triple = triplesIterator.next();
             stmtResults.add(vf.createStatement(vf.createURI(triple.getString("subject")), vf.createURI(triple.getString(
-                            "predicate")), vf.createURI(triple.getString("object"))));
+                    "predicate")), vf.createURI(triple.getString("object"))));
         }
         stmtResults.sort(((stmt1, stmt2) -> stmt1.getSubject().toString().compareTo(stmt2.getSubject().toString())));
         assertEquals("Expect all rows to be read.", 3, getRyaCollection().count());
@@ -75,48 +75,48 @@ public class MongoLoadStatementsIT extends MongoTestBase {
     /**
      * @return some data to load
      */
-    private static List<Statement> makeTestStatements() {
+    private List<Statement> makeTestStatements() {
         final List<Statement> loadMe = new ArrayList<>();
         final ValueFactory vf = new ValueFactoryImpl();
 
         loadMe.add(vf.createStatement(vf.createURI("http://example#alice"), vf.createURI("http://example#talksTo"), vf
-                        .createURI("http://example#bob")));
+                .createURI("http://example#bob")));
         loadMe.add(vf.createStatement(vf.createURI("http://example#bob"), vf.createURI("http://example#talksTo"), vf
-                        .createURI("http://example#charlie")));
+                .createURI("http://example#charlie")));
         loadMe.add(vf.createStatement(vf.createURI("http://example#charlie"), vf.createURI("http://example#likes"), vf
-                        .createURI("http://example#icecream")));
+                .createURI("http://example#icecream")));
         return loadMe;
     }
 
-    public static List<Statement> installAndLoad() throws DuplicateInstanceNameException, RyaClientException {
+    private List<Statement> installAndLoad() throws DuplicateInstanceNameException, RyaClientException {
         // first install rya
         final InstallConfiguration installConfig = InstallConfiguration.builder()
-                        .setEnableTableHashPrefix(false)
-                        .setEnableEntityCentricIndex(false)
-                        .setEnableFreeTextIndex(false)
-                        .setEnableTemporalIndex(false)
-                        .setEnablePcjIndex(false)
-                        .setEnableGeoIndex(false)
-                        .build();
-        MongoConnectionDetails connectionDetails = getConnectionDetails();
+                .setEnableTableHashPrefix(false)
+                .setEnableEntityCentricIndex(false)
+                .setEnableFreeTextIndex(false)
+                .setEnableTemporalIndex(false)
+                .setEnablePcjIndex(false)
+                .setEnableGeoIndex(false)
+                .build();
+        final MongoConnectionDetails connectionDetails = getConnectionDetails();
         final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient());
         final Install install = ryaClient.getInstall();
         install.install(conf.getMongoDBName(), installConfig);
         // next, load data
         final List<Statement> loadMe = makeTestStatements();
         ryaClient.getLoadStatements().loadStatements(
-                        conf.getMongoDBName(),
-                        loadMe);
+                conf.getMongoDBName(),
+                loadMe);
         return loadMe;
     }
     /**
      * @return copy from conf to MongoConnectionDetails
      */
-    private static MongoConnectionDetails getConnectionDetails() {
+    private MongoConnectionDetails getConnectionDetails() {
         return new MongoConnectionDetails(
-                        conf.getMongoUser(),
-                        conf.getMongoPassword().toCharArray(),
-                        conf.getMongoInstance(),
-                        Integer.parseInt(conf.getMongoPort()));
+                conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoUninstallIT.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoUninstallIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoUninstallIT.java
index 9b623a5..69e3eec 100644
--- a/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoUninstallIT.java
+++ b/extras/indexing/src/test/java/org/apache/rya/api/client/mongo/MongoUninstallIT.java
@@ -73,9 +73,9 @@ public class MongoUninstallIT extends MongoTestBase {
      */
     private MongoConnectionDetails getConnectionDetails() {//
         return new MongoConnectionDetails(
-                        conf.getMongoUser(),
-                        conf.getMongoPassword().toCharArray(),
-                        conf.getMongoInstance(),
-                        Integer.parseInt(conf.getMongoPort()));
+                conf.getMongoUser(),
+                null,//conf.getMongoPassword().toCharArray(),
+                conf.getMongoHostname(),
+                Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/rya.pcj.fluo/pom.xml
----------------------------------------------------------------------
diff --git a/extras/rya.pcj.fluo/pom.xml b/extras/rya.pcj.fluo/pom.xml
index b6f5403..3cae897 100644
--- a/extras/rya.pcj.fluo/pom.xml
+++ b/extras/rya.pcj.fluo/pom.xml
@@ -37,7 +37,7 @@
         <module>pcj.fluo.api</module>
         <module>pcj.fluo.app</module>
         <module>pcj.fluo.client</module>
-        <module>pcj.fluo.integration</module>
+        <!--<module>pcj.fluo.integration</module>-->
         <module>pcj.fluo.test.base</module>
         <module>pcj.fluo.demo</module>
     </modules>

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c3c262d8/extras/shell/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java
----------------------------------------------------------------------
diff --git a/extras/shell/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java b/extras/shell/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java
index 7e5e6df..9a55460 100644
--- a/extras/shell/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java
+++ b/extras/shell/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java
@@ -33,7 +33,6 @@ import org.apache.rya.api.client.accumulo.AccumuloConnectionDetails;
 import org.apache.rya.api.client.accumulo.AccumuloRyaClientFactory;
 import org.apache.rya.api.client.mongo.MongoConnectionDetails;
 import org.apache.rya.api.client.mongo.MongoRyaClientFactory;
-import org.apache.rya.mongodb.MongoConnectorFactory;
 import org.apache.rya.mongodb.MongoDBRdfConfiguration;
 import org.apache.rya.shell.SharedShellState.ConnectionState;
 import org.apache.rya.shell.SharedShellState.StorageType;
@@ -47,7 +46,10 @@ import org.springframework.shell.core.annotation.CliOption;
 import org.springframework.stereotype.Component;
 
 import com.google.common.base.Optional;
+import com.google.common.collect.Lists;
 import com.mongodb.MongoClient;
+import com.mongodb.MongoCredential;
+import com.mongodb.ServerAddress;
 
 /**
  * Spring Shell commands that manage the connection that is used by the shell.
@@ -73,7 +75,7 @@ public class RyaConnectionCommands implements CommandMarker {
      */
     @Autowired
     public RyaConnectionCommands(final SharedShellState state, final PasswordPrompt passwordPrompt) {
-        this.sharedState = requireNonNull( state );
+        sharedState = requireNonNull( state );
         this.passwordPrompt = requireNonNull(passwordPrompt);
     }
 
@@ -90,11 +92,11 @@ public class RyaConnectionCommands implements CommandMarker {
     @CliAvailabilityIndicator({CONNECT_INSTANCE_CMD})
     public boolean isConnectToInstanceAvailable() {
         switch(sharedState.getShellState().getConnectionState()) {
-            case CONNECTED_TO_STORAGE:
-            case CONNECTED_TO_INSTANCE:
-                return true;
-            default:
-                return false;
+        case CONNECTED_TO_STORAGE:
+        case CONNECTED_TO_INSTANCE:
+            return true;
+        default:
+            return false;
         }
     }
 
@@ -113,22 +115,22 @@ public class RyaConnectionCommands implements CommandMarker {
 
         // Create a print out based on what it is connected to.
         switch(storageType.get()) {
-            case ACCUMULO:
-                final AccumuloConnectionDetails accDetails = sharedState.getShellState().getAccumuloDetails().get();
-                return "The shell is connected to an instance of Accumulo using the following parameters:\n" +
-                    "    Username: " + accDetails.getUsername() + "\n" +
-                    "    Instance Name: " + accDetails.getInstanceName() + "\n" +
-                    "    Zookeepers: " + accDetails.getZookeepers();
-
-            case MONGO:
-                final MongoConnectionDetails mongoDetails = sharedState.getShellState().getMongoDetails().get();
-                return "The shell is connected to an instance of MongoDB using the following parameters:\n" +
-                    "    Hostname: "  + mongoDetails.getHostname() + "\n" +
-                    "    Port: " + mongoDetails.getPort() + "\n"; 
-                    //+"    Username:" + mongoDetails.getUsername();
-
-            default:
-                throw new RuntimeException("Unrecognized StorageType: " + storageType.get());
+        case ACCUMULO:
+            final AccumuloConnectionDetails accDetails = sharedState.getShellState().getAccumuloDetails().get();
+            return "The shell is connected to an instance of Accumulo using the following parameters:\n" +
+            "    Username: " + accDetails.getUsername() + "\n" +
+            "    Instance Name: " + accDetails.getInstanceName() + "\n" +
+            "    Zookeepers: " + accDetails.getZookeepers();
+
+        case MONGO:
+            final MongoConnectionDetails mongoDetails = sharedState.getShellState().getMongoDetails().get();
+            return "The shell is connected to an instance of MongoDB using the following parameters:\n" +
+            "    Hostname: "  + mongoDetails.getHostname() + "\n" +
+            "    Port: " + mongoDetails.getPort() + "\n";
+            //+"    Username:" + mongoDetails.getUsername();
+
+        default:
+            throw new RuntimeException("Unrecognized StorageType: " + storageType.get());
         }
     }
 
@@ -161,7 +163,7 @@ public class RyaConnectionCommands implements CommandMarker {
 
     @CliCommand(value = CONNECT_MONGO_CMD, help = "Connect the shell to an instance of MongoDB.")
     public String connectToMongo(
-            @CliOption(key = {"username"}, mandatory = true, help = "The username that will be used to connect to MongoDB.")
+            @CliOption(key = {"username"}, mandatory = false, help = "The username that will be used to connect to MongoDB.")
             final String username,
             @CliOption(key= {"hostname"}, mandatory = true, help = "The hostname of the MongoDB that will be connected to.")
             final String hostname,
@@ -170,23 +172,32 @@ public class RyaConnectionCommands implements CommandMarker {
 
         // Prompt the user for their password.
         try {
-            final char[] password = passwordPrompt.getPassword();
-
             // Set up a configuration file that connects to the specified Mongo DB.
             final MongoDBRdfConfiguration conf = new MongoDBRdfConfiguration();
-            conf.setMongoInstance(hostname);
+            final MongoClient client;
+            conf.setMongoHostname(hostname);
             conf.setMongoPort(port);
-            conf.setMongoUser(username);
-            conf.setMongoPassword(new String(password));
+
+            final char[] password;
+            if(username != null) {
+                password = passwordPrompt.getPassword();
+                conf.setMongoUser(username);
+                conf.setMongoPassword(new String(password));
+                final ServerAddress addr = new ServerAddress(hostname, Integer.parseInt(port));
+                final MongoCredential creds = MongoCredential.createPlainCredential(username, "$external", password);
+                client = new MongoClient(addr, Lists.newArrayList(creds));
+            } else {
+                password = null;
+                client = new MongoClient(hostname, Integer.parseInt(port));
+            }
 
             // Create the singleton instance of Mongo that will be used through out the application.
-            final MongoClient client = MongoConnectorFactory.getMongoClient(conf);
 
             // Make sure the client is closed at shutdown.
             Runtime.getRuntime().addShutdownHook(new Thread() {
                 @Override
                 public void run() {
-                    MongoConnectorFactory.closeMongoClient();
+                    client.close();
                 }
             });