RYA-104

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

Branch: refs/heads/master
Commit: 5bc98c4445953124dd78c5cb5c8579d133c8b39c
Parents: 9e8f4a6
Author: David W. Lotts <david.lo...@parsons.com>
Authored: Tue Dec 19 15:39:31 2017 -0500
Committer: kchilton2 <kevin.e.chil...@gmail.com>
Committed: Fri Jan 5 16:48:40 2018 -0500

----------------------------------------------------------------------
 .../MongoRyaInstanceDetailsRepository.java      |   1 +
 .../client/mongo/MongoConnectionDetails.java    |  49 ++++----
 .../client/mongo/MongoExecuteSparqlQuery.java   | 122 ++++++++++++++++++-
 .../rya/api/client/mongo/MongoInstall.java      |   6 +
 .../api/client/mongo/MongoLoadStatements.java   |  55 ++++++++-
 .../client/mongo/MongoLoadStatementsFile.java   |   6 +-
 .../client/mongo/MongoExecuteSparqlQueryIT.java |  41 +++++--
 .../client/mongo/MongoGetInstanceDetailsIT.java |   9 +-
 .../rya/api/client/mongo/MongoInstallIT.java    |  32 ++---
 .../api/client/mongo/MongoInstanceExistsIT.java |  10 +-
 .../api/client/mongo/MongoListInstancesIT.java  |  10 +-
 .../client/mongo/MongoLoadStatementsFileIT.java |  60 +++------
 .../api/client/mongo/MongoLoadStatementsIT.java |  98 ++++++++++++++-
 .../rya/api/client/mongo/MongoUninstallIT.java  |  10 +-
 .../apache/rya/shell/RyaConnectionCommands.java |   4 +-
 .../org/apache/rya/shell/RyaPromptProvider.java |  19 ++-
 .../org/apache/rya/shell/SharedShellState.java  |   2 +
 .../rya/shell/RyaConnectionCommandsIT.java      |  47 +++++++
 .../apache/rya/shell/RyaPromptProviderTest.java |  22 +++-
 19 files changed, 475 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/instance/MongoRyaInstanceDetailsRepository.java
----------------------------------------------------------------------
diff --git 
a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/instance/MongoRyaInstanceDetailsRepository.java
 
b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/instance/MongoRyaInstanceDetailsRepository.java
index 9bb558e..1eadea8 100644
--- 
a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/instance/MongoRyaInstanceDetailsRepository.java
+++ 
b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/instance/MongoRyaInstanceDetailsRepository.java
@@ -56,6 +56,7 @@ public class MongoRyaInstanceDetailsRepository implements 
RyaDetailsRepository {
     public MongoRyaInstanceDetailsRepository(final MongoClient client, final 
String instanceName) {
         checkNotNull(client);
         this.instanceName = requireNonNull( instanceName );
+        // the rya instance is the Mongo db name. This ignores any 
collection-prefix.
         db = client.getDB(this.instanceName);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 d792289..b348d34 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
@@ -30,7 +30,7 @@ import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
 import edu.umd.cs.findbugs.annotations.NonNull;
 
 /**
- * The information the shell used to connect to Mongo DB.
+ * The information the shell used to connect to Mongo server, not the DB or 
collections.
  */
 @DefaultAnnotation(NonNull.class)
 public class MongoConnectionDetails {
@@ -48,30 +48,30 @@ public class MongoConnectionDetails {
      * @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) {
+    public MongoConnectionDetails( //
+                    final String username, //
+                    final char[] userPass, //
+                    final String hostname, //
+                    final int port) {
         this.username = requireNonNull(username);
         this.userPass = requireNonNull(userPass);
         this.hostname = requireNonNull(hostname);
         this.port = port;
     }
 
-    /**
-     * @return The username that was used to establish the connection.
-     */
-    public String getUsername() {
-        return this.username;
-    }
-
-    /**
-     * @return The password that was used to establish the connection.
-     */
-    public char[] getPassword() {
-        return this.userPass;
-    }
+    // /**
+    // * @return The username that was used to establish the connection.
+    // */
+    // public String getUsername() {
+    // return this.username;
+    // }
+    //
+    // /**
+    // * @return The password that was used to establish the connection.
+    // */
+    // public char[] getPassword() {
+    // return this.userPass;
+    // }
 
     /**
      * @return The hostname of the Mongo DB that was connected to.
@@ -90,7 +90,8 @@ public class MongoConnectionDetails {
     /**
      * Create a {@link MongoDBRdfConfiguration} that is using this object's 
values.
      *
-     * @param ryaInstanceName - The Rya instance to connect to.
+     * @param ryaInstanceName
+     *            - The Rya instance to connect to.
      * @return Constructs a new {@link MongoDBRdfConfiguration} object with 
values from this object.
      */
     public MongoDBRdfConfiguration build(final String ryaInstanceName) {
@@ -105,13 +106,13 @@ public class MongoConnectionDetails {
         conf.setBoolean(ConfigUtils.USE_MONGO, true);
         conf.setMongoInstance(hostname);
         conf.setMongoPort("" + port);
-        conf.setMongoUser(username);
-        conf.setMongoPassword(new String(userPass));
+        // conf.setMongoUser(username);
+        // conf.setMongoPassword(new String(userPass));
         conf.setMongoDBName(ryaInstanceName);
 
         // Both of these are ways to configure the collection prefixes.
-        conf.setCollectionName(ryaInstanceName);
-        conf.set(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX, 
ryaInstanceName);
+        conf.setCollectionName("rya");
+        conf.set(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX, "rya");
         if (mongoClient != null) {
             conf.setMongoClient(mongoClient);
         }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQuery.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQuery.java
 
b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQuery.java
index f51d42d..681e344 100644
--- 
a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQuery.java
+++ 
b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoExecuteSparqlQuery.java
@@ -20,9 +20,34 @@ package org.apache.rya.api.client.mongo;
 
 import static java.util.Objects.requireNonNull;
 
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.text.DecimalFormat;
+
+import org.apache.accumulo.core.client.AccumuloException;
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.log4j.Logger;
 import org.apache.rya.api.client.ExecuteSparqlQuery;
 import org.apache.rya.api.client.InstanceDoesNotExistException;
+import org.apache.rya.api.client.InstanceExists;
 import org.apache.rya.api.client.RyaClientException;
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.mongodb.MongoDBRdfConfiguration;
+import org.apache.rya.rdftriplestore.inference.InferenceEngineException;
+import org.apache.rya.sail.config.RyaSailFactory;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.MalformedQueryException;
+import org.openrdf.query.QueryEvaluationException;
+import org.openrdf.query.QueryLanguage;
+import org.openrdf.query.TupleQuery;
+import org.openrdf.query.TupleQueryResultHandlerException;
+import org.openrdf.query.resultio.text.csv.SPARQLResultsCSVWriter;
+import org.openrdf.repository.RepositoryException;
+import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.repository.sail.SailRepositoryConnection;
+import org.openrdf.sail.Sail;
+import org.openrdf.sail.SailException;
 
 import com.mongodb.MongoClient;
 
@@ -30,27 +55,114 @@ import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
 import edu.umd.cs.findbugs.annotations.NonNull;
 
 /**
- * TODO impl, test, doc
+ * Execute a sparql query on mongo Rya.
  */
 @DefaultAnnotation(NonNull.class)
 public class MongoExecuteSparqlQuery extends MongoCommand implements 
ExecuteSparqlQuery {
 
+    private static final Logger log = 
Logger.getLogger(MongoExecuteSparqlQuery.class);
+    private final InstanceExists instanceExists;
+    
     /**
-     * Constructs an instance of {@link }.
+     * Constructs an instance.
      *
      * @param connectionDetails - Details about the values that were used to 
create the client. (not null)
      * @param connector - Provides programmatic access to the instance of 
Mongo that hosts Rya instances. (not null)
      */
     public MongoExecuteSparqlQuery(final MongoConnectionDetails 
connectionDetails, final MongoClient client) {
         super(connectionDetails, client);
+        instanceExists = new MongoInstanceExists(connectionDetails, client);
     }
-
     @Override
     public String executeSparqlQuery(final String ryaInstanceName, final 
String sparqlQuery) throws InstanceDoesNotExistException, RyaClientException {
         requireNonNull(ryaInstanceName);
         requireNonNull(sparqlQuery);
+        requireNonNull(ryaInstanceName);
+        requireNonNull(sparqlQuery);
+
+        // Ensure the Rya Instance exists.
+        if (!instanceExists.exists(ryaInstanceName)) {
+            throw new InstanceDoesNotExistException(String.format("There is no 
Rya instance named '%s'.",
+                            ryaInstanceName));
+        }
+        Sail sail = null;
+        SailRepository sailRepo = null;
+        SailRepositoryConnection sailRepoConn = null;
+        // Get a Sail object that is connected to the Rya instance.
+        final MongoDBRdfConfiguration ryaConf = 
getMongoConnectionDetails().build(ryaInstanceName, getClient());
+        // ryaConf.setFlush(false); //Accumulo version said: RYA-327 should 
address this hardcoded value.
+        try {
+            sail = RyaSailFactory.getInstance(ryaConf);
+        } catch (SailException | RyaDAOException | InferenceEngineException | 
AccumuloException
+                        | AccumuloSecurityException e) {
+            throw new RyaClientException("While getting a sail instance.", e);
+        }
+
+        // Load the file.
+        sailRepo = new SailRepository(sail);
+        try {
+            sailRepoConn = sailRepo.getConnection();
+
+            // Execute the query.
+            final long start = System.currentTimeMillis();
+            final TupleQuery tupleQuery = 
sailRepoConn.prepareTupleQuery(QueryLanguage.SPARQL, sparqlQuery);
+            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            final CountingSPARQLResultsCSVWriter handler = new 
CountingSPARQLResultsCSVWriter(baos);
+            tupleQuery.evaluate(handler);
+            final StringBuilder sb = new StringBuilder();
+
+            final String newline = "\n";
+            sb.append("Query Result:").append(newline);
+            sb.append(new String(baos.toByteArray(), StandardCharsets.UTF_8));
+
+            final String seconds = new 
DecimalFormat("0.0##").format((System.currentTimeMillis() - start) / 1000.0);
+            sb.append("Retrieved ").append(handler.getCount()).append(" 
results in ").append(seconds).append(
+                            " seconds.");
+
+            return sb.toString();
+
+            // } catch (final SailException | AccumuloException | 
AccumuloSecurityException | RyaDAOException
+            // | InferenceEngineException e) {
+            // throw new RyaClientException("A problem connecting to the Rya 
instance named '" + ryaInstanceName
+            // + "' has caused the query to fail.", e);
+        } catch (final MalformedQueryException e) {
+            throw new RyaClientException("There was a problem parsing the 
supplied query.", e);
+        } catch (final QueryEvaluationException | 
TupleQueryResultHandlerException e) {
+            throw new RyaClientException("There was a problem evaluating the 
supplied query.", e);
+        } catch (final RepositoryException e) {
+            throw new RyaClientException("There was a problem executing the 
query against the Rya instance named "
+                            + ryaInstanceName + ".", e);
+        } finally {
+            // close anything?
+        }
+    }
+
+    /**
+     * Subclasses {@link SPARQLResultsCSVWriter} to keep track of the total 
count of handled {@link BindingSet} objects.
+     */
+    private static class CountingSPARQLResultsCSVWriter extends 
SPARQLResultsCSVWriter {
+
+        private int count = 0;
+
+        /**
+         * @param out - The OutputStream for results to be written to.
+         */
+        public CountingSPARQLResultsCSVWriter(final OutputStream out) {
+            super(out);
+        }
+
+        @Override
+        public void handleSolution(final BindingSet bindingSet) throws 
TupleQueryResultHandlerException {
+            super.handleSolution(bindingSet);
+            count++;
+        }
 
-        // TODO Auto-generated method stub
-        return null;
+        /**
+         *
+         * @return The number of BindingSets that were handled by {@link 
#handleSolution(BindingSet)}.
+         */
+        public int getCount() {
+            return count;
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 bcd79f6..9718cf1 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
@@ -52,6 +52,12 @@ import edu.umd.cs.findbugs.annotations.NonNull;
 
 /**
  * An Mongo implementation of the {@link Install} command.
+ * Note about the scheme:
+ * the Rya instance is used as the mongoDBName.
+ * the Rya triples, instance details, and Rya indexes each get their own 
collection.
+ * the triples collection name is always constant: "rya_triples" (or? 
ryaInstance+"_triples")
+ * This means that each Mongo DB can have only one Rya instance.
+ * A Collection corresponds to an Accumulo table.
  */
 @DefaultAnnotation(NonNull.class)
 public class MongoInstall extends MongoCommand implements Install {

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatements.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatements.java
 
b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatements.java
index 846adfe..9a32355 100644
--- 
a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatements.java
+++ 
b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatements.java
@@ -18,10 +18,25 @@
  */
 package org.apache.rya.api.client.mongo;
 
+import static java.util.Objects.requireNonNull;
+
+import org.apache.accumulo.core.client.AccumuloException;
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.log4j.Logger;
 import org.apache.rya.api.client.InstanceDoesNotExistException;
+import org.apache.rya.api.client.InstanceExists;
 import org.apache.rya.api.client.LoadStatements;
 import org.apache.rya.api.client.RyaClientException;
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.mongodb.MongoDBRdfConfiguration;
+import org.apache.rya.rdftriplestore.inference.InferenceEngineException;
+import org.apache.rya.sail.config.RyaSailFactory;
 import org.openrdf.model.Statement;
+import org.openrdf.repository.RepositoryException;
+import org.openrdf.repository.sail.SailRepository;
+import org.openrdf.repository.sail.SailRepositoryConnection;
+import org.openrdf.sail.Sail;
+import org.openrdf.sail.SailException;
 
 import com.mongodb.MongoClient;
 
@@ -33,15 +48,53 @@ import edu.umd.cs.findbugs.annotations.NonNull;
  */
 @DefaultAnnotation(NonNull.class)
 public class MongoLoadStatements extends MongoCommand implements 
LoadStatements {
+    private static final Logger log = 
Logger.getLogger(MongoLoadStatements.class);
+    private final InstanceExists instanceExists;
 
+    /**
+     * Constructs an instance.
+     *
+     * @param connectionDetails - Details to connect to the server. (not null)
+     * @param client - Provides programmatic access to the instance of Mongo
+     *            that hosts Rya instance. (not null)
+     */
     public MongoLoadStatements(MongoConnectionDetails connectionDetails, 
MongoClient client) {
         super(connectionDetails, client);
+        instanceExists = new MongoInstanceExists(connectionDetails, client);
     }
 
     @Override
     public void loadStatements(String ryaInstanceName, Iterable<? extends 
Statement> statements) throws InstanceDoesNotExistException, RyaClientException 
{
-        // TODO Auto-generated method stub
+        requireNonNull(ryaInstanceName);
+        requireNonNull(statements);
+
+        // Ensure the Rya Instance exists.
+        if (!instanceExists.exists(ryaInstanceName)) {
+            throw new InstanceDoesNotExistException(String.format("There is no 
Rya instance named '%s'.",
+                            ryaInstanceName));
+        }
+
+        Sail sail = null;
+        SailRepository sailRepo = null;
+        SailRepositoryConnection sailRepoConn = null;
+        // Get a Sail object that is connected to the Rya instance.
+        final MongoDBRdfConfiguration ryaConf = 
getMongoConnectionDetails().build(ryaInstanceName, getClient());
+        // ryaConf.setFlush(false); //Accumulo version said: RYA-327 should 
address this hardcoded value.
+        try {
+            sail = RyaSailFactory.getInstance(ryaConf);
+        } catch (SailException | RyaDAOException | InferenceEngineException | 
AccumuloException
+                        | AccumuloSecurityException e) {
+            throw new RyaClientException("While getting a sail instance.", e);
+        }
 
+        // Load the file.
+        sailRepo = new SailRepository(sail);
+        try {
+            sailRepoConn = sailRepo.getConnection();
+            sailRepoConn.add(statements);
+        } catch (RepositoryException e) {
+            throw new RyaClientException("While getting a connection and 
adding statements.", e);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFile.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFile.java
 
b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFile.java
index 9f68944..e57b6cb 100644
--- 
a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFile.java
+++ 
b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoLoadStatementsFile.java
@@ -59,10 +59,8 @@ public class MongoLoadStatementsFile extends MongoCommand 
implements LoadStateme
     /**
      * Constructs an instance of {@link MongoListInstances}.
      *
-     * @param connectionDetails
-     *            - Details to connect to the server. (not null)
-     * @param client
-     *            - Provides programmatic access to the instance of Mongo
+     * @param connectionDetails - Details to connect to the server. (not null)
+     * @param client - Provides programmatic access to the instance of Mongo
      *            that hosts Rya instance. (not null)
      */
     public MongoLoadStatementsFile(MongoConnectionDetails connectionDetails, 
MongoClient client) {

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 153992c..ce866dd 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
@@ -18,12 +18,17 @@
  */
 package org.apache.rya.api.client.mongo;
 
-import org.apache.rya.api.client.Install;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.apache.rya.api.client.ExecuteSparqlQuery;
 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 com.mongodb.MongoException;
 
@@ -33,18 +38,38 @@ import com.mongodb.MongoException;
 public class MongoExecuteSparqlQueryIT extends MongoTestBase {
     @Test
     public void ExecuteSparqlQuery_exec() throws MongoException, 
DuplicateInstanceNameException, RyaClientException {
+        // Install an instance of Rya.
         MongoConnectionDetails connectionDetails = getConnectionDetails();
-        // Install a few instances of Rya using the install command.
-        final Install install = new MongoInstall(connectionDetails, 
getMongoClient());
-        install.install("instanceExec", 
InstallConfiguration.builder().build());
-        MongoExecuteSparqlQuery executeSparql = new 
MongoExecuteSparqlQuery(connectionDetails, getMongoClient());
-        // TODO executeSparql.
+        final RyaClient ryaClient = 
MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient());
+        // install rya and load some data
+        final List<Statement> loadMe = MongoLoadStatementsIT.installAndLoad();
+        // Here comes the method to test
+        ExecuteSparqlQuery executeSparql = ryaClient.getExecuteSparqlQuery();
+        final String sparql = "SELECT * where { ?a ?b ?c }";
+        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) {
+            assertTrue("All results should contain expected subjects:",
+                            
results.contains(expect.getSubject().stringValue()));
+            assertTrue("All results should contain expected predicates:",
+                            
results.contains(expect.getPredicate().stringValue()));
+            assertTrue("All results should contain expected objects:",
+                            
results.contains(expect.getObject().stringValue()));
+        }
     }
 
     /**
      * @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(),
+                        conf.getMongoPassword().toCharArray(),
+                        conf.getMongoInstance(),
+                        Integer.parseInt(conf.getMongoPort()));
+
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 4c70eda..9c8e698 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
@@ -114,10 +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(), 
+                        conf.getMongoPassword().toCharArray(), 
+                        conf.getMongoInstance(), 
+                        Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 1ec7e9e..08c472d 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
@@ -18,6 +18,7 @@
  */
 package org.apache.rya.api.client.mongo;
 
+import static 
org.apache.rya.mongodb.instance.MongoRyaInstanceDetailsRepository.INSTANCE_DETAILS_COLLECTION_NAME;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -29,6 +30,7 @@ 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.InstanceExists;
+import org.apache.rya.api.client.RyaClient;
 import org.apache.rya.api.client.RyaClientException;
 import org.apache.rya.mongodb.MongoTestBase;
 import org.junit.Test;
@@ -41,14 +43,10 @@ public class MongoInstallIT extends MongoTestBase {
     @Test
     public void install() throws DuplicateInstanceNameException, 
RyaClientException {
         // Install an instance of Rya.
-        final String ryaInstance = conf.getCollectionName();
+        final String ryaInstance = conf.getMongoDBName();
 
         // Setup the connection details that were used for the embedded Mongo 
DB instance we are testing with.
-        final MongoConnectionDetails connectionDetails = new 
MongoConnectionDetails(
-                conf.getMongoUser(),
-                conf.getMongoPassword().toCharArray(),
-                conf.getMongoInstance(),
-                Integer.parseInt( conf.getMongoPort() ));
+        final MongoConnectionDetails connectionDetails = 
getConnectionDetails();
 
         // Check that the instance does not exist.
         final InstanceExists instanceExists = new 
MongoInstanceExists(connectionDetails, this.getMongoClient());
@@ -61,17 +59,19 @@ public class MongoInstallIT extends MongoTestBase {
                 .setEnableTemporalIndex(true)
                 .build();
 
-        final Install install = new MongoInstall(connectionDetails, 
this.getMongoClient());
+        final RyaClient ryaClient = 
MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient());
+        final Install install = ryaClient.getInstall();
+        assertTrue("ryaClient should give mongoInstall", install instanceof 
MongoInstall);
         install.install(ryaInstance, installConfig);
 
         // Check that the instance exists.
         assertTrue(instanceExists.exists(ryaInstance));
 
         // Show that the expected collections were created within the database.
-        final List<String> expected = Arrays.asList("instance_details", 
ryaInstance + "_triples");
+        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(ryaInstance).listCollectionNames()) {
+        for (final String collection : 
this.getMongoClient().getDatabase(conf.getMongoDBName()).listCollectionNames()) 
{
             count += expected.contains(collection) ? 1 : 0;
             found.add( collection );
         }
@@ -85,11 +85,7 @@ public class MongoInstallIT extends MongoTestBase {
         final String instanceName = conf.getCollectionName();
         final InstallConfiguration installConfig = 
InstallConfiguration.builder().build();
 
-        final MongoConnectionDetails connectionDetails = new 
MongoConnectionDetails(
-                conf.getMongoUser(),
-                conf.getMongoPassword().toCharArray(),
-                conf.getMongoInstance(),
-                Integer.parseInt( conf.getMongoPort() ));
+        final MongoConnectionDetails connectionDetails = 
getConnectionDetails();
 
         final Install install = new MongoInstall(connectionDetails, 
this.getMongoClient());
         install.install(instanceName, installConfig);
@@ -97,4 +93,12 @@ public class MongoInstallIT extends MongoTestBase {
         // Install it again throws expected error.
         install.install(instanceName, installConfig);
     }
+
+    private MongoConnectionDetails getConnectionDetails() {
+        return new MongoConnectionDetails(
+                        conf.getMongoUser(),
+                        conf.getMongoPassword().toCharArray(),
+                        conf.getMongoInstance(),
+                        Integer.parseInt(conf.getMongoPort()));
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 6611f7f..1b2f499 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
@@ -70,11 +70,11 @@ public class MongoInstanceExistsIT extends MongoTestBase {
     /**
      * @return copy from conf to MongoConnectionDetails
      */
-    private MongoConnectionDetails getConnectionDetails() {
+    private MongoConnectionDetails getConnectionDetails() {//
         return new MongoConnectionDetails(
-                conf.getMongoUser(),
-                conf.getMongoPassword().toCharArray(),
-                conf.getMongoInstance(),
-                Integer.parseInt( conf.getMongoPort() ));
+                        conf.getMongoUser(),
+                        conf.getMongoPassword().toCharArray(),
+                        conf.getMongoInstance(),
+                        Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 561434d..3307fa7 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
@@ -59,11 +59,11 @@ public class MongoListInstancesIT extends MongoTestBase {
     /**
      * @return copy from conf to MongoConnectionDetails
      */
-    private MongoConnectionDetails getConnectionDetails() {
+    private MongoConnectionDetails getConnectionDetails() {//
         return new MongoConnectionDetails(
-                conf.getMongoUser(),
-                conf.getMongoPassword().toCharArray(),
-                conf.getMongoInstance(),
-                Integer.parseInt( conf.getMongoPort() ));
+                        conf.getMongoUser(),
+                        conf.getMongoPassword().toCharArray(),
+                        conf.getMongoInstance(),
+                        Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 c3b7cd0..c144aba 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
@@ -44,7 +44,7 @@ public class MongoLoadStatementsFileIT extends MongoTestBase {
 
     @Test(expected = InstanceDoesNotExistException.class)
     public void instanceDoesNotExist() throws Exception {
-
+        org.apache.log4j.BasicConfigurator.configure();
         final RyaClient ryaClient = 
MongoRyaClientFactory.build(getConnectionDetails(), conf.getMongoClient());
         
ryaClient.getLoadStatementsFile().loadStatements(getConnectionDetails().getHostname(),
 Paths.get("src/test/resources/example.ttl"), RDFFormat.TURTLE);
     }
@@ -52,26 +52,23 @@ public class MongoLoadStatementsFileIT extends 
MongoTestBase {
     @Test
     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)//
+        final InstallConfiguration installConfig = 
InstallConfiguration.builder()
+                        .setEnableTableHashPrefix(false)
+                        .setEnableEntityCentricIndex(false)
+                        .setEnableFreeTextIndex(false)
+                        .setEnableTemporalIndex(false)
+                        .setEnablePcjIndex(false)
+                        .setEnableGeoIndex(false)
                         .build();
         MongoConnectionDetails connectionDetails = getConnectionDetails();
         final RyaClient ryaClient = 
MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient());
         final Install install = ryaClient.getInstall();
-        install.install(conf.getCollectionName(), installConfig);
+        install.install(conf.getMongoDBName(), installConfig);
 
         // Load the test statement file.
-        ryaClient.getLoadStatementsFile()
-                        // LoadStatementsFile loadStatementsFile = new 
MongoLoadStatementsFile(connectionDetails, getMongoClient());
-                        // loadStatementsFile
-                        .loadStatements( //
-                        conf.getCollectionName(), //
-                        Paths.get("src/test/resources/example.ttl"), //
+        ryaClient.getLoadStatementsFile().loadStatements(
+                        conf.getMongoDBName(),
+                        Paths.get("src/test/resources/example.ttl"),
                         RDFFormat.TURTLE);
 
         // Verify that the statements were loaded.
@@ -87,31 +84,10 @@ public class MongoLoadStatementsFileIT extends 
MongoTestBase {
         System.out.println("getRyaCollection().count()=" + 
getRyaCollection().count());
         while (x.hasNext()) {
             Document y = x.next();
-            System.out.println("getRyaCollection()=" + y);
+            
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());
-        // final WholeRowTripleResolver tripleResolver = new 
WholeRowTripleResolver();
-        // final Scanner scanner = 
getConnector().createScanner(getRyaInstanceName() + "spo", new 
Authorizations());
-        // final Iterator<Entry<Key, Value>> it = scanner.iterator();
-        // while(it.hasNext()) {
-        // final Entry<Key, Value> next = it.next();
-        //
-        // final Key key = next.getKey();
-        // final byte[] row = key.getRow().getBytes();
-        // final byte[] columnFamily = key.getColumnFamily().getBytes();
-        // final byte[] columnQualifier = key.getColumnQualifier().getBytes();
-        // final TripleRow tripleRow = new TripleRow(row, columnFamily, 
columnQualifier);
-        //
-        // final RyaStatement ryaStatement = 
tripleResolver.deserialize(TABLE_LAYOUT.SPO, tripleRow);
-        // final Statement statement = 
RyaToRdfConversions.convertStatement(ryaStatement);
-        //
-        // // Filter out the rya version statement if it is present.
-        // if(!isRyaMetadataStatement(vf, statement)) {
-        // statements.add( statement );
-        // }
-        // }
-        //
-        // assertEquals(expected, statements);
+        assertEquals("All rows in DB should match expected rows:", expected, 
statements);
     }
 
     private boolean isRyaMetadataStatement(final ValueFactory vf, final 
Statement statement) {
@@ -122,10 +98,10 @@ public class MongoLoadStatementsFileIT extends 
MongoTestBase {
      * @return copy from conf to MongoConnectionDetails
      */
     private MongoConnectionDetails getConnectionDetails() {
-        return new MongoConnectionDetails(//
-                        conf.getMongoUser(), //
-                        conf.getMongoPassword().toCharArray(), //
-                        conf.getMongoInstance(), //
+        return new MongoConnectionDetails(
+                        conf.getMongoUser(),
+                        conf.getMongoPassword().toCharArray(),
+                        conf.getMongoInstance(),
                         Integer.parseInt(conf.getMongoPort()));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 fb616bc..43d9017 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
@@ -18,9 +18,105 @@
  */
 package org.apache.rya.api.client.mongo;
 
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.InstanceDoesNotExistException;
+import org.apache.rya.api.client.RyaClient;
+import org.apache.rya.api.client.RyaClientException;
+import org.apache.rya.mongodb.MongoTestBase;
+import org.bson.Document;
+import org.junit.Test;
+import org.openrdf.model.Statement;
+import org.openrdf.model.ValueFactory;
+import org.openrdf.model.impl.ValueFactoryImpl;
+
+import com.mongodb.client.MongoCursor;
+
 /**
  * Integration tests the methods of {@link MongoLoadStatements}.
  */
-public class MongoLoadStatementsIT {
+public class MongoLoadStatementsIT extends MongoTestBase {
+    @Test(expected = InstanceDoesNotExistException.class)
+    public void instanceDoesNotExist() throws Exception {
+        org.apache.log4j.BasicConfigurator.configure();
+        final RyaClient ryaClient = 
MongoRyaClientFactory.build(getConnectionDetails(), conf.getMongoClient());
+        // Skip the install step to create error causing situation.
+        
ryaClient.getLoadStatements().loadStatements(getConnectionDetails().getHostname(),
 makeTestStatements());
+    }
+
+    /**
+     * Pass a list of statements to our loadStatement class.
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void loadTurtleFile() throws Exception {
+        // Install an instance of Rya.
+        final List<Statement> loadMe = installAndLoad();
+        final List<Statement> stmtResults = new ArrayList<>();
+        final MongoCursor<Document> triplesIterator = 
getRyaCollection().find().iterator();
+        final ValueFactory vf = new ValueFactoryImpl();
+        while (triplesIterator.hasNext()) {
+            Document triple = triplesIterator.next();
+            
stmtResults.add(vf.createStatement(vf.createURI(triple.getString("subject")), 
vf.createURI(triple.getString(
+                            "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());
+        assertEquals("All rows in DB should match expected rows:", loadMe, 
stmtResults);
+    }
+
+    /**
+     * @return some data to load
+     */
+    private static 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;
+    }
 
+    public static 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();
+        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 copy from conf to MongoConnectionDetails
+     */
+    private static MongoConnectionDetails getConnectionDetails() {
+        return new MongoConnectionDetails(
+                        conf.getMongoUser(),
+                        conf.getMongoPassword().toCharArray(),
+                        conf.getMongoInstance(),
+                        Integer.parseInt(conf.getMongoPort()));
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 dffb0f2..9b623a5 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
@@ -71,11 +71,11 @@ public class MongoUninstallIT extends MongoTestBase {
     /**
      * @return copy from conf to MongoConnectionDetails
      */
-    private MongoConnectionDetails getConnectionDetails() {
+    private MongoConnectionDetails getConnectionDetails() {//
         return new MongoConnectionDetails(
-                conf.getMongoUser(),
-                conf.getMongoPassword().toCharArray(),
-                conf.getMongoInstance(),
-                Integer.parseInt( conf.getMongoPort() ));
+                        conf.getMongoUser(),
+                        conf.getMongoPassword().toCharArray(),
+                        conf.getMongoInstance(),
+                        Integer.parseInt(conf.getMongoPort()));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/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 e518968..7e5e6df 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
@@ -124,8 +124,8 @@ public class RyaConnectionCommands implements CommandMarker 
{
                 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();
+                    "    Port: " + mongoDetails.getPort() + "\n"; 
+                    //+"    Username:" + mongoDetails.getUsername();
 
             default:
                 throw new RuntimeException("Unrecognized StorageType: " + 
storageType.get());

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/extras/shell/src/main/java/org/apache/rya/shell/RyaPromptProvider.java
----------------------------------------------------------------------
diff --git 
a/extras/shell/src/main/java/org/apache/rya/shell/RyaPromptProvider.java 
b/extras/shell/src/main/java/org/apache/rya/shell/RyaPromptProvider.java
index a7fd802..096d5cc 100644
--- a/extras/shell/src/main/java/org/apache/rya/shell/RyaPromptProvider.java
+++ b/extras/shell/src/main/java/org/apache/rya/shell/RyaPromptProvider.java
@@ -21,6 +21,7 @@ package org.apache.rya.shell;
 import static java.util.Objects.requireNonNull;
 
 import org.apache.rya.shell.SharedShellState.ShellState;
+import org.apache.rya.shell.SharedShellState.StorageType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.Ordered;
 import org.springframework.core.annotation.Order;
@@ -44,16 +45,26 @@ public class RyaPromptProvider extends 
DefaultPromptProvider {
     @Override
     public String getPrompt() {
         final ShellState state = sharedState.getShellState();
-
+        // figure out the storage name: disconnected, mongo host, or Accumulo 
instance.
+        String storageName = "unknown";
+        if (state.getStorageType().isPresent()) {
+            if (state.getStorageType().get() == StorageType.ACCUMULO) {
+                storageName = 
state.getAccumuloDetails().get().getInstanceName();
+            } else if (state.getStorageType().get() == StorageType.MONGO) {
+                storageName = state.getMongoDetails().get().getHostname();
+            } else {
+                throw new java.lang.IllegalStateException("Missing or unknown 
storage type.");
+            }
+        }
         switch(state.getConnectionState()) {
             case DISCONNECTED:
                 return "rya> ";
             case CONNECTED_TO_STORAGE:
-                return String.format("rya/%s> ", 
state.getAccumuloDetails().get().getInstanceName());
+            return String.format("rya/%s> ", storageName);
             case CONNECTED_TO_INSTANCE:
                 return String.format("rya/%s:%s> ",
-                        state.getAccumuloDetails().get().getInstanceName(),
-                        state.getRyaInstanceName().get());
+                        storageName,
+                            state.getRyaInstanceName().or("unknown"));
             default:
                 return "rya> ";
         }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/extras/shell/src/main/java/org/apache/rya/shell/SharedShellState.java
----------------------------------------------------------------------
diff --git 
a/extras/shell/src/main/java/org/apache/rya/shell/SharedShellState.java 
b/extras/shell/src/main/java/org/apache/rya/shell/SharedShellState.java
index 6c8a57c..89cbd5d 100644
--- a/extras/shell/src/main/java/org/apache/rya/shell/SharedShellState.java
+++ b/extras/shell/src/main/java/org/apache/rya/shell/SharedShellState.java
@@ -358,7 +358,9 @@ public class SharedShellState {
              */
             public Builder(final ShellState shellState) {
                 this.connectionState = shellState.getConnectionState();
+                this.storageType = shellState.getStorageType().orNull();
                 this.accumuloDetails = 
shellState.getAccumuloDetails().orNull();
+                this.mongoDetails = shellState.getMongoDetails().orNull();
                 this.connectedCommands = 
shellState.getConnectedCommands().orNull();
                 this.instanceName = shellState.getRyaInstanceName().orNull();
             }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/extras/shell/src/test/java/org/apache/rya/shell/RyaConnectionCommandsIT.java
----------------------------------------------------------------------
diff --git 
a/extras/shell/src/test/java/org/apache/rya/shell/RyaConnectionCommandsIT.java 
b/extras/shell/src/test/java/org/apache/rya/shell/RyaConnectionCommandsIT.java
index f424c49..45bfced 100644
--- 
a/extras/shell/src/test/java/org/apache/rya/shell/RyaConnectionCommandsIT.java
+++ 
b/extras/shell/src/test/java/org/apache/rya/shell/RyaConnectionCommandsIT.java
@@ -67,6 +67,30 @@ public class RyaConnectionCommandsIT extends RyaShellITBase {
     }
 
     @Test
+    public void connectMongo() throws IOException {
+        // FIXME create mongo client/server here
+        final Bootstrap bootstrap = getTestBootstrap();
+        final JLineShellComponent shell = getTestShell();
+
+        // Mock the user entering the correct password.
+        final ApplicationContext context = bootstrap.getApplicationContext();
+        final PasswordPrompt mockPrompt = 
context.getBean(PasswordPrompt.class);
+        when(mockPrompt.getPassword()).thenReturn("password".toCharArray());
+
+        // Execute the connect command.
+        final String cmd =
+                        RyaConnectionCommands.CONNECT_MONGO_CMD + " " +
+                                        "--username root " +
+                                        "--hostname " + "localhost" + " " +
+                                        "--port " + "999";
+
+        final CommandResult connectResult = shell.executeCommand(cmd);
+
+        // Ensure the connection was successful.
+        assertTrue(connectResult.isSuccess());
+    }
+
+    @Test
     public void connectAccumulo_noAuths() throws IOException {
         final MiniAccumuloCluster cluster = getCluster();
         final Bootstrap bootstrap = getTestBootstrap();
@@ -247,4 +271,27 @@ public class RyaConnectionCommandsIT extends 
RyaShellITBase {
         final CommandResult disconnectResult = shell.executeCommand( 
RyaConnectionCommands.DISCONNECT_COMMAND_NAME_CMD );
         assertTrue( disconnectResult.isSuccess() );
     }
+
+    @Test
+    public void connectMongo_noAuths() throws IOException {
+        // FIXME make Mongo connection here
+        final Bootstrap bootstrap = getTestBootstrap();
+        final JLineShellComponent shell = getTestShell();
+    
+        // Mock the user entering the correct password.
+        final ApplicationContext context = bootstrap.getApplicationContext();
+        final PasswordPrompt mockPrompt = context.getBean( 
PasswordPrompt.class );
+        when(mockPrompt.getPassword()).thenReturn("password".toCharArray());
+    
+        // Execute the command
+        final String cmd = RyaConnectionCommands.CONNECT_MONGO_CMD + " " +
+                                        "--username root " +
+                                        "--hostname " + "localhost" + " " +
+                        "--port " + "999"; // FIXME
+
+        final CommandResult connectResult = shell.executeCommand(cmd);
+    
+        // Ensure the connection was successful.
+        assertTrue( connectResult.isSuccess() );
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5bc98c44/extras/shell/src/test/java/org/apache/rya/shell/RyaPromptProviderTest.java
----------------------------------------------------------------------
diff --git 
a/extras/shell/src/test/java/org/apache/rya/shell/RyaPromptProviderTest.java 
b/extras/shell/src/test/java/org/apache/rya/shell/RyaPromptProviderTest.java
index d3eaa4e..01502d2 100644
--- a/extras/shell/src/test/java/org/apache/rya/shell/RyaPromptProviderTest.java
+++ b/extras/shell/src/test/java/org/apache/rya/shell/RyaPromptProviderTest.java
@@ -21,10 +21,10 @@ package org.apache.rya.shell;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
 
-import org.junit.Test;
-
 import org.apache.rya.api.client.RyaClient;
 import org.apache.rya.api.client.accumulo.AccumuloConnectionDetails;
+import org.apache.rya.api.client.mongo.MongoConnectionDetails;
+import org.junit.Test;
 
 /**
  * Tests the methods of {@link RyaPromptProvider}.
@@ -46,7 +46,7 @@ public class RyaPromptProviderTest {
     }
 
     @Test
-    public void isConnected_noInstanceName() {
+    public void isConnected_noInstanceName_Accumulo() {
         // Create a shared state that is connected to a storage, but not a rya 
instance.
         final SharedShellState sharedState = new SharedShellState();
 
@@ -62,6 +62,22 @@ public class RyaPromptProviderTest {
     }
 
     @Test
+    public void isConnected_noInstanceName_Mongo() {
+        // Create a shared state that is connected to a storage, but not a rya 
instance.
+        final SharedShellState sharedState = new SharedShellState();
+
+        final MongoConnectionDetails connectionDetails = new 
MongoConnectionDetails("username", new char[] {}, "testMongoHost", 999);
+        sharedState.connectedToMongo(connectionDetails, mock(RyaClient.class));
+
+        // Create a prompt.
+        final String prompt = new RyaPromptProvider(sharedState).getPrompt();
+
+        // Verify the prompt is formatted correctly.
+        final String expected = "rya/testMongoHost> ";
+        assertEquals(expected, prompt);
+    }
+
+    @Test
     public void isConnected_hasInstanceName() {
         // Create a shared state that is connected to a specific instance.
         final SharedShellState sharedState = new SharedShellState();

Reply via email to