RYA-104 Removed the MongoCommand class.
Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/6bb7146e Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/6bb7146e Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/6bb7146e Branch: refs/heads/master Commit: 6bb7146e642d7ce7e11c42ae2f9706b3ae359391 Parents: c3c262d Author: kchilton2 <kevin.e.chil...@gmail.com> Authored: Wed Dec 27 19:50:57 2017 -0500 Committer: kchilton2 <kevin.e.chil...@gmail.com> Committed: Fri Jan 5 16:48:40 2018 -0500 ---------------------------------------------------------------------- .../rya/api/client/mongo/MongoCommand.java | 62 -------------- .../client/mongo/MongoConnectionDetails.java | 72 ++++++++-------- .../client/mongo/MongoExecuteSparqlQuery.java | 34 +++----- .../client/mongo/MongoGetInstanceDetails.java | 15 ++-- .../rya/api/client/mongo/MongoInstall.java | 89 +++++++++++--------- .../api/client/mongo/MongoInstanceExists.java | 13 +-- .../api/client/mongo/MongoListInstances.java | 20 +++-- .../api/client/mongo/MongoLoadStatements.java | 36 ++++---- .../client/mongo/MongoLoadStatementsFile.java | 25 +++--- .../api/client/mongo/MongoRyaClientFactory.java | 24 +++--- .../rya/api/client/mongo/MongoUninstall.java | 17 ++-- .../client/mongo/MongoExecuteSparqlQueryIT.java | 18 ++-- .../client/mongo/MongoGetInstanceDetailsIT.java | 26 +++--- .../rya/api/client/mongo/MongoInstallIT.java | 19 +++-- .../api/client/mongo/MongoInstanceExistsIT.java | 17 +--- .../api/client/mongo/MongoListInstancesIT.java | 22 +++-- .../client/mongo/MongoLoadStatementsFileIT.java | 24 +++--- .../api/client/mongo/MongoLoadStatementsIT.java | 21 ++--- .../rya/api/client/mongo/MongoUninstallIT.java | 28 +++--- .../apache/rya/shell/RyaConnectionCommands.java | 63 +++++++------- .../apache/rya/shell/RyaPromptProviderTest.java | 5 +- 21 files changed, 300 insertions(+), 350 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoCommand.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoCommand.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoCommand.java deleted file mode 100644 index 443fec7..0000000 --- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoCommand.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.api.client.mongo; - -import static java.util.Objects.requireNonNull; - -import com.mongodb.MongoClient; - -import edu.umd.cs.findbugs.annotations.DefaultAnnotation; -import edu.umd.cs.findbugs.annotations.NonNull; - -/** - * An abstract class that holds onto Mongo access information. Extend this - * when implementing a command that interacts with Mongo. - */ -@DefaultAnnotation(NonNull.class) -public abstract class MongoCommand { - - private final MongoConnectionDetails connectionDetails; - private final MongoClient client; - - /** - * Constructs an instance of {@link MongoCommand}. - * - * @param connectionDetails - Details about the values that were used to create the client. (not null) - * @param client - Provides programmatic access to the instance of Mongo that hosts Rya instance. (not null) - */ - public MongoCommand(final MongoConnectionDetails connectionDetails, final MongoClient client) { - this.connectionDetails = requireNonNull(connectionDetails); - this.client = requireNonNull(client); - } - - /** - * @return Details about the values that were used to create the connector to mongo. - */ - public MongoConnectionDetails getMongoConnectionDetails() { - return connectionDetails; - } - - /** - * @param client - Provides programmatic access to the instance of Mongo that hosts Rya instance. - */ - public MongoClient getClient() { - return client; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 cf8abc1..b48bb9f 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 @@ -24,9 +24,6 @@ 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; import edu.umd.cs.findbugs.annotations.DefaultAnnotation; import edu.umd.cs.findbugs.annotations.NonNull; @@ -38,43 +35,31 @@ import edu.umd.cs.findbugs.annotations.NonNull; public class MongoConnectionDetails { private final Optional<String> username; - private final Optional<char[]> userPass; + private final Optional<char[]> password; 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. - * @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. + * @param username - The username that was used to establish the connection + * when performing administrative operations. (not null) + * @param password - The password that was used to establish the connection + * when performing administrative operations. (not null) */ - public MongoConnectionDetails( // - final String username, // - final char[] userPass, // - final String hostname, // - final int port) { - this.username = Optional.ofNullable(username); - this.userPass = Optional.ofNullable(userPass); + public MongoConnectionDetails( + final String hostname, + final int port, + final Optional<String> username, + final Optional<char[]> password) { this.hostname = requireNonNull(hostname); this.port = port; + this.username = requireNonNull(username); + this.password = requireNonNull(password); } - // /** - // * @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. */ @@ -89,18 +74,27 @@ public class MongoConnectionDetails { return port; } + /** + * @return The username that was used to establish the connection when performing administrative operations. + */ + public Optional<String> getUsername() { + return this.username; + } + + /** + * @return The password that was used to establish the connection when performing administrative operations. + */ + public Optional<char[]> getPassword() { + return password; + } + /** * 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. (not null) * @return Constructs a new {@link MongoDBRdfConfiguration} object with values from this object. */ public MongoDBRdfConfiguration build(final String ryaInstanceName) { - return build(ryaInstanceName, null); - } - - 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. @@ -108,13 +102,19 @@ public class MongoConnectionDetails { conf.setBoolean(ConfigUtils.USE_MONGO, true); conf.setMongoHostname(hostname); conf.setMongoPort("" + port); - // conf.setMongoUser(username); - // conf.setMongoPassword(new String(userPass)); conf.setMongoDBName(ryaInstanceName); + if(username.isPresent()) { + conf.setMongoUser(username.get()); + } + + if(password.isPresent()) { + conf.setMongoPassword( new String(password.get()) ); + } + // Both of these are ways to configure the collection prefixes. //TODO these should not be explicitly set conf.setTablePrefix("rya"); - return new StatefulMongoDBRdfConfiguration(conf, mongoClient); + return conf; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 681e344..d920b30 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 @@ -27,7 +27,6 @@ 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; @@ -49,8 +48,6 @@ import org.openrdf.repository.sail.SailRepositoryConnection; import org.openrdf.sail.Sail; import org.openrdf.sail.SailException; -import com.mongodb.MongoClient; - import edu.umd.cs.findbugs.annotations.DefaultAnnotation; import edu.umd.cs.findbugs.annotations.NonNull; @@ -58,20 +55,22 @@ import edu.umd.cs.findbugs.annotations.NonNull; * Execute a sparql query on mongo Rya. */ @DefaultAnnotation(NonNull.class) -public class MongoExecuteSparqlQuery extends MongoCommand implements ExecuteSparqlQuery { +public class MongoExecuteSparqlQuery implements ExecuteSparqlQuery { - private static final Logger log = Logger.getLogger(MongoExecuteSparqlQuery.class); + private final MongoConnectionDetails connectionDetails; private final InstanceExists instanceExists; - + /** * 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) + * @param connectionDetails - Details to connect to the server. (not null) + * @param instanceExists - The interactor used to check if a Rya instance exists. (not null) */ - public MongoExecuteSparqlQuery(final MongoConnectionDetails connectionDetails, final MongoClient client) { - super(connectionDetails, client); - instanceExists = new MongoInstanceExists(connectionDetails, client); + public MongoExecuteSparqlQuery( + final MongoConnectionDetails connectionDetails, + final MongoInstanceExists instanceExists) { + this.connectionDetails = requireNonNull(connectionDetails); + this.instanceExists = requireNonNull(instanceExists); } @Override public String executeSparqlQuery(final String ryaInstanceName, final String sparqlQuery) throws InstanceDoesNotExistException, RyaClientException { @@ -89,12 +88,10 @@ public class MongoExecuteSparqlQuery extends MongoCommand implements ExecuteSpar 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. + final MongoDBRdfConfiguration ryaConf = connectionDetails.build(ryaInstanceName); try { sail = RyaSailFactory.getInstance(ryaConf); - } catch (SailException | RyaDAOException | InferenceEngineException | AccumuloException - | AccumuloSecurityException e) { + } catch (SailException | RyaDAOException | InferenceEngineException | AccumuloException | AccumuloSecurityException e) { throw new RyaClientException("While getting a sail instance.", e); } @@ -116,15 +113,10 @@ public class MongoExecuteSparqlQuery extends MongoCommand implements ExecuteSpar 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."); + 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) { http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetails.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetails.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetails.java index b61e107..ade7990 100644 --- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetails.java +++ b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoGetInstanceDetails.java @@ -40,19 +40,20 @@ import edu.umd.cs.findbugs.annotations.NonNull; * An Mongo implementation of the {@link GetInstanceDetails} command. */ @DefaultAnnotation(NonNull.class) -public class MongoGetInstanceDetails extends MongoCommand implements GetInstanceDetails { +public class MongoGetInstanceDetails implements GetInstanceDetails { + private final MongoClient adminClient; private final InstanceExists instanceExists; /** * Constructs an instance of {@link MongoGetInstanceDetails}. * - * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null) - * @param connector - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param adminClient - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param instanceExists - The interactor used to check if a Rya instance exists. (not null) */ - public MongoGetInstanceDetails(final MongoConnectionDetails connectionDetails, final MongoClient client) { - super(connectionDetails, client); - instanceExists = new MongoInstanceExists(connectionDetails, client); + public MongoGetInstanceDetails(final MongoClient adminClient, MongoInstanceExists instanceExists) { + this.adminClient = requireNonNull(adminClient); + this.instanceExists = requireNonNull(instanceExists); } @Override @@ -65,7 +66,7 @@ public class MongoGetInstanceDetails extends MongoCommand implements GetInstance } // If the instance has details, then return them. - final RyaDetailsRepository detailsRepo = new MongoRyaInstanceDetailsRepository(getClient(), ryaInstanceName); + final RyaDetailsRepository detailsRepo = new MongoRyaInstanceDetailsRepository(adminClient, ryaInstanceName); try { return Optional.of(detailsRepo.getRyaInstanceDetails()); } catch (final NotInitializedException e) { http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 177355d..51bd4bf 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 @@ -22,6 +22,8 @@ import static java.util.Objects.requireNonNull; import java.util.Date; +import org.apache.accumulo.core.client.AccumuloException; +import org.apache.accumulo.core.client.AccumuloSecurityException; import org.apache.rya.api.client.Install; import org.apache.rya.api.client.InstanceExists; import org.apache.rya.api.client.RyaClientException; @@ -35,12 +37,14 @@ import org.apache.rya.api.instance.RyaDetails.TemporalIndexDetails; import org.apache.rya.api.instance.RyaDetailsRepository; import org.apache.rya.api.instance.RyaDetailsRepository.AlreadyInitializedException; import org.apache.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryException; -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.MongoDBRyaDAO; -import org.apache.rya.mongodb.StatefulMongoDBRdfConfiguration; +import org.apache.rya.mongodb.MongoDBRdfConfiguration; import org.apache.rya.mongodb.instance.MongoRyaInstanceDetailsRepository; +import org.apache.rya.rdftriplestore.inference.InferenceEngineException; +import org.apache.rya.sail.config.RyaSailFactory; +import org.openrdf.sail.Sail; +import org.openrdf.sail.SailException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,35 +56,43 @@ 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. + * </p> + * Notes about the scheme: + * <ul> + * <li>The Rya instance name is used as the DB name in Mongo.</li> + * <li>The Rya triples, instance details, and Rya indexes each get their own collection.</li> + * <li>Each Mongo DB can have only one Rya instance.</li> + * </ul> */ @DefaultAnnotation(NonNull.class) -public class MongoInstall extends MongoCommand implements Install { +public class MongoInstall implements Install { private static final Logger log = LoggerFactory.getLogger(MongoInstall.class); + private final MongoConnectionDetails connectionDetails; + private final MongoClient adminClient; private final InstanceExists instanceExists; /** * Constructs an instance of {@link MongoInstall}. * - * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null) - * @param connector - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param connectionDetails - Details to connect to the server. (not null) + * @param adminClient - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param instanceExists - The interactor used to check if a Rya instance exists. (not null) */ - public MongoInstall(final MongoConnectionDetails connectionDetails, final MongoClient client) { - super(connectionDetails, client); - instanceExists = new MongoInstanceExists(connectionDetails, client); + public MongoInstall( + final MongoConnectionDetails connectionDetails, + final MongoClient adminClient, + final MongoInstanceExists instanceExists) { + this.connectionDetails = requireNonNull(connectionDetails); + this.adminClient = requireNonNull(adminClient); + this.instanceExists = requireNonNull(instanceExists); } @Override public void install(final String instanceName, final InstallConfiguration installConfig) throws DuplicateInstanceNameException, RyaClientException { - requireNonNull(instanceName, "instanceName required."); - requireNonNull(installConfig, "installConfig required."); + requireNonNull(instanceName); + requireNonNull(installConfig); // Check to see if a Rya instance has already been installed with this name. if (instanceExists.exists(instanceName)) { @@ -88,32 +100,28 @@ public class MongoInstall extends MongoCommand implements Install { } // Initialize the Rya Details table. - RyaDetails details; + final RyaDetails ryaDetails; try { - details = initializeRyaDetails(instanceName, installConfig); + ryaDetails = initializeRyaDetails(instanceName, installConfig); } 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."); + 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."); } 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 StatefulMongoDBRdfConfiguration ryaConfig = makeRyaConfig(getMongoConnectionDetails(), details, getClient()); + // Initialize the rest of the collections used by the Rya instance. + final MongoDBRdfConfiguration ryaConfig = makeRyaConfig(connectionDetails, ryaDetails); try { - final MongoDBRyaDAO ryaDao = new MongoDBRyaDAO(); - ryaDao.setConf(ryaConfig); - - final TablePrefixLayoutStrategy tls = new TablePrefixLayoutStrategy(); - tls.setTablePrefix(instanceName); - ryaConfig.setTableLayoutStrategy(tls); - - 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); + final Sail ryaSail = RyaSailFactory.getInstance(ryaConfig); + ryaSail.shutDown(); + } catch (final AccumuloException | AccumuloSecurityException | RyaDAOException | InferenceEngineException 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); + } catch (final SailException e) { + throw new RyaClientException("Problem shutting down the Sail object used to install Rya.", e); } } @@ -137,7 +145,7 @@ public class MongoInstall extends MongoCommand implements Install { private RyaDetails initializeRyaDetails( final String instanceName, final InstallConfiguration installConfig) throws AlreadyInitializedException, RyaDetailsRepositoryException { - final RyaDetailsRepository detailsRepo = new MongoRyaInstanceDetailsRepository(getClient(), instanceName); + final RyaDetailsRepository detailsRepo = new MongoRyaInstanceDetailsRepository(adminClient, instanceName); // Build the PCJ Index details. [not supported in mongo] final PCJIndexDetails.Builder pcjDetailsBuilder = PCJIndexDetails.builder().setEnabled(false); @@ -152,7 +160,7 @@ public class MongoInstall extends MongoCommand implements Install { .setTemporalIndexDetails(new TemporalIndexDetails(installConfig.isTemporalIndexEnabled())) .setFreeTextDetails(new FreeTextIndexDetails(installConfig.isFreeTextIndexEnabled()))// - // Entity centric indexing is not supported in Mongo Db. + // Entity centric indexing is not supported in Mongo DB. .setEntityCentricIndexDetails(new EntityCentricIndexDetails(false)) .setPCJIndexDetails(pcjDetailsBuilder) @@ -174,13 +182,14 @@ 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 StatefulMongoDBRdfConfiguration makeRyaConfig(final MongoConnectionDetails connectionDetails, final RyaDetails ryaDetails, final MongoClient mongoClient) { + private static MongoDBRdfConfiguration makeRyaConfig( + final MongoConnectionDetails connectionDetails, + final RyaDetails ryaDetails) { // Start with a configuration that is built using the connection details. - final StatefulMongoDBRdfConfiguration conf = connectionDetails.build(ryaDetails.getRyaInstanceName(), mongoClient); + final MongoDBRdfConfiguration conf = connectionDetails.build(ryaDetails.getRyaInstanceName()); // 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/6bb7146e/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstanceExists.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstanceExists.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstanceExists.java index a00079a..5961367 100644 --- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstanceExists.java +++ b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoInstanceExists.java @@ -31,22 +31,23 @@ import edu.umd.cs.findbugs.annotations.NonNull; * An Mongo implementation of the {@link InstanceExists} command. */ @DefaultAnnotation(NonNull.class) -public class MongoInstanceExists extends MongoCommand implements InstanceExists { +public class MongoInstanceExists implements InstanceExists { + + private final MongoClient adminClient; /** * Constructs an insatnce of {@link MongoInstanceExists}. * - * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null) - * @param connector - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param adminClient - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) */ - public MongoInstanceExists(final MongoConnectionDetails connectionDetails, final MongoClient client) { - super(connectionDetails, client); + public MongoInstanceExists(final MongoClient adminClient) { + this.adminClient = requireNonNull(adminClient); } @Override public boolean exists(final String instanceName) { requireNonNull( instanceName ); - for(final String dbName : getClient().listDatabaseNames()) { + for(final String dbName : adminClient.listDatabaseNames()) { if(dbName.equals(instanceName)) { return true; } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoListInstances.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoListInstances.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoListInstances.java index bf29848..1154700 100644 --- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoListInstances.java +++ b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoListInstances.java @@ -18,6 +18,8 @@ */ package org.apache.rya.api.client.mongo; +import static java.util.Objects.requireNonNull; + import java.util.ArrayList; import java.util.List; @@ -34,25 +36,25 @@ import edu.umd.cs.findbugs.annotations.NonNull; * An Mongo implementation of the {@link ListInstances} command. */ @DefaultAnnotation(NonNull.class) -public class MongoListInstances extends MongoCommand implements ListInstances { +public class MongoListInstances implements ListInstances { + + private final MongoClient adminClient; + /** * Constructs an instance of {@link MongoListInstances}. * - * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null) - * @param connector - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param adminClient - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) */ - public MongoListInstances(final MongoConnectionDetails connectionDetails, final MongoClient client) { - super(connectionDetails, client); + public MongoListInstances(final MongoClient adminClient) { + this.adminClient = requireNonNull(adminClient); } @Override public List<String> listInstances() throws RyaClientException { - final MongoClient client = super.getClient(); - // Each database that contains an instance details collection is a Rya Instance. final List<String> ryaInstances = new ArrayList<>(); - for (final String db : getClient().listDatabaseNames()) { - for(final String collection : client.getDatabase(db).listCollectionNames()) { + for (final String db : adminClient.listDatabaseNames()) { + for(final String collection : adminClient.getDatabase(db).listCollectionNames()) { if (collection.equals(MongoRyaInstanceDetailsRepository.INSTANCE_DETAILS_COLLECTION_NAME)) { ryaInstances.add(db); break; http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 9a32355..37f1d95 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 @@ -22,7 +22,6 @@ 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; @@ -38,8 +37,6 @@ import org.openrdf.repository.sail.SailRepositoryConnection; import org.openrdf.sail.Sail; import org.openrdf.sail.SailException; -import com.mongodb.MongoClient; - import edu.umd.cs.findbugs.annotations.DefaultAnnotation; import edu.umd.cs.findbugs.annotations.NonNull; @@ -47,44 +44,42 @@ import edu.umd.cs.findbugs.annotations.NonNull; * An Mongo implementation of the {@link LoadStatements} command. */ @DefaultAnnotation(NonNull.class) -public class MongoLoadStatements extends MongoCommand implements LoadStatements { - private static final Logger log = Logger.getLogger(MongoLoadStatements.class); +public class MongoLoadStatements implements LoadStatements { + + private final MongoConnectionDetails connectionDetails; 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) + * @param instanceExists - The interactor used to check if a Rya instance exists. (not null) */ - public MongoLoadStatements(MongoConnectionDetails connectionDetails, MongoClient client) { - super(connectionDetails, client); - instanceExists = new MongoInstanceExists(connectionDetails, client); + public MongoLoadStatements(final MongoConnectionDetails connectionDetails, final MongoInstanceExists instanceExists) { + this.connectionDetails = requireNonNull(connectionDetails); + this.instanceExists = requireNonNull(instanceExists); } @Override - public void loadStatements(String ryaInstanceName, Iterable<? extends Statement> statements) throws InstanceDoesNotExistException, RyaClientException { + public void loadStatements(final String ryaInstanceName, final Iterable<? extends Statement> statements) throws InstanceDoesNotExistException, RyaClientException { 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)); + 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. + final MongoDBRdfConfiguration ryaConf = connectionDetails.build(ryaInstanceName); try { sail = RyaSailFactory.getInstance(ryaConf); - } catch (SailException | RyaDAOException | InferenceEngineException | AccumuloException - | AccumuloSecurityException e) { - throw new RyaClientException("While getting a sail instance.", e); + } catch (SailException | RyaDAOException | InferenceEngineException | AccumuloException | AccumuloSecurityException e) { + throw new RyaClientException("Could not load statements into Rya because of a problem while creating the Sail object.", e); } // Load the file. @@ -92,9 +87,8 @@ public class MongoLoadStatements extends MongoCommand implements LoadStatements try { sailRepoConn = sailRepo.getConnection(); sailRepoConn.add(statements); - } catch (RepositoryException e) { + } catch (final RepositoryException e) { throw new RyaClientException("While getting a connection and adding statements.", e); } } - -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 e57b6cb..00a7c61 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 @@ -25,7 +25,6 @@ import java.nio.file.Path; 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.LoadStatementsFile; @@ -42,8 +41,6 @@ import org.openrdf.rio.RDFParseException; import org.openrdf.sail.Sail; import org.openrdf.sail.SailException; -import com.mongodb.MongoClient; - import edu.umd.cs.findbugs.annotations.DefaultAnnotation; import edu.umd.cs.findbugs.annotations.NonNull; @@ -51,25 +48,26 @@ import edu.umd.cs.findbugs.annotations.NonNull; * An Mongo implementation of the {@link LoadStatementsFile} command. */ @DefaultAnnotation(NonNull.class) -public class MongoLoadStatementsFile extends MongoCommand implements LoadStatementsFile { - private static final Logger log = Logger.getLogger(MongoLoadStatementsFile.class); +public class MongoLoadStatementsFile implements LoadStatementsFile { + private final MongoConnectionDetails connectionDetails; private final InstanceExists instanceExists; /** * 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 - * that hosts Rya instance. (not null) + * @param instanceExists - The interactor used to check if a Rya instance exists. (not null) */ - public MongoLoadStatementsFile(MongoConnectionDetails connectionDetails, MongoClient client) { - super(connectionDetails, client); - instanceExists = new MongoInstanceExists(connectionDetails, client); + public MongoLoadStatementsFile( + final MongoConnectionDetails connectionDetails, + final MongoInstanceExists instanceExists) { + this.connectionDetails = requireNonNull(connectionDetails); + this.instanceExists = requireNonNull(instanceExists); } @Override - public void loadStatements(String ryaInstanceName, Path statementsFile, RDFFormat format) throws InstanceDoesNotExistException, RyaClientException { + public void loadStatements(final String ryaInstanceName, final Path statementsFile, final RDFFormat format) throws InstanceDoesNotExistException, RyaClientException { requireNonNull(ryaInstanceName); requireNonNull(statementsFile); requireNonNull(format); @@ -83,8 +81,7 @@ public class MongoLoadStatementsFile extends MongoCommand implements LoadStateme 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. + final MongoDBRdfConfiguration ryaConf = connectionDetails.build(ryaInstanceName); try { sail = RyaSailFactory.getInstance(ryaConf); } catch (SailException | RyaDAOException | InferenceEngineException | AccumuloException | AccumuloSecurityException e) { @@ -100,4 +97,4 @@ public class MongoLoadStatementsFile extends MongoCommand implements LoadStateme throw new RyaClientException("While getting a connection and adding statements from a file.", e); } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoRyaClientFactory.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoRyaClientFactory.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoRyaClientFactory.java index f4d68e7..55c6e8a 100644 --- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoRyaClientFactory.java +++ b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoRyaClientFactory.java @@ -41,32 +41,34 @@ public class MongoRyaClientFactory { * Rya that is hosted by a MongoDB server. * * @param connectionDetails - Details about the values that were used to connect to Mongo DB. (not null) - * @param mongoClient - The MongoDB client the commands will use. (not null) + * @param adminClient - The MongoDB client the administrative commands will use. (not null) * @return The initialized commands. */ public static RyaClient build( final MongoConnectionDetails connectionDetails, - final MongoClient mongoClient) { + final MongoClient adminClient) { requireNonNull(connectionDetails); - requireNonNull(mongoClient); + requireNonNull(adminClient); // Build the RyaCommands option with the initialized commands. + final MongoInstanceExists instanceExists = new MongoInstanceExists(adminClient); + return new RyaClient( - new MongoInstall(connectionDetails, mongoClient), + new MongoInstall(connectionDetails, adminClient, instanceExists), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), - new MongoGetInstanceDetails(connectionDetails, mongoClient), - new MongoInstanceExists(connectionDetails, mongoClient), - new MongoListInstances(connectionDetails, mongoClient), + new MongoGetInstanceDetails(adminClient, instanceExists), + instanceExists, + new MongoListInstances(adminClient), Optional.empty(), Optional.empty(), - new MongoUninstall(connectionDetails, mongoClient), - new MongoLoadStatements(connectionDetails, mongoClient), - new MongoLoadStatementsFile(connectionDetails, mongoClient), - new MongoExecuteSparqlQuery(connectionDetails, mongoClient)); + new MongoUninstall(adminClient, instanceExists), + new MongoLoadStatements(connectionDetails, instanceExists), + new MongoLoadStatementsFile(connectionDetails, instanceExists), + new MongoExecuteSparqlQuery(connectionDetails, instanceExists)); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoUninstall.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoUninstall.java b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoUninstall.java index 979f93d..a6fbb4c 100644 --- a/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoUninstall.java +++ b/extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoUninstall.java @@ -18,6 +18,8 @@ */ package org.apache.rya.api.client.mongo; +import static java.util.Objects.requireNonNull; + import org.apache.rya.api.client.InstanceDoesNotExistException; import org.apache.rya.api.client.InstanceExists; import org.apache.rya.api.client.RyaClientException; @@ -33,19 +35,20 @@ import edu.umd.cs.findbugs.annotations.NonNull; * An Mongo implementation of the {@link Uninstall} command. */ @DefaultAnnotation(NonNull.class) -public class MongoUninstall extends MongoCommand implements Uninstall { +public class MongoUninstall implements Uninstall { + private final MongoClient adminClient; private final InstanceExists instanceExists; /** * Constructs an instance of {@link MongoUninstall}. * - * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null) - * @param connector - Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param adminClient- Provides programmatic access to the instance of Mongo that hosts Rya instances. (not null) + * @param instanceExists - The interactor used to check if a Rya instance exists. (not null) */ - public MongoUninstall(final MongoConnectionDetails connectionDetails, final MongoClient client) { - super(connectionDetails, client); - instanceExists = new MongoInstanceExists(connectionDetails, client); + public MongoUninstall(final MongoClient adminClient, final MongoInstanceExists instanceExists) { + this.adminClient = requireNonNull(adminClient); + this.instanceExists = requireNonNull(instanceExists); } @Override @@ -54,7 +57,7 @@ public class MongoUninstall extends MongoCommand implements Uninstall { if (!instanceExists.exists(ryaInstanceName)) { throw new InstanceDoesNotExistException("The database '" + ryaInstanceName + "' does not exist."); } - getClient().dropDatabase(ryaInstanceName); + adminClient.dropDatabase(ryaInstanceName); } catch (final MongoException e) { throw new RyaClientException("Failed to uninstall '" + ryaInstanceName + "' " + e.getLocalizedMessage(), e); } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 4e28e21..0be9e8b 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 @@ -45,7 +45,7 @@ public class MongoExecuteSparqlQueryIT extends MongoTestBase { public void ExecuteSparqlQuery_exec() throws MongoException, DuplicateInstanceNameException, RyaClientException { // Install an instance of Rya. final MongoConnectionDetails connectionDetails = getConnectionDetails(); - final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, getMongoClient()); // install rya and load some data final List<Statement> loadMe = installAndLoad(); // Here comes the method to test @@ -77,7 +77,7 @@ public class MongoExecuteSparqlQueryIT extends MongoTestBase { .setEnableGeoIndex(false) .build(); final MongoConnectionDetails connectionDetails = getConnectionDetails(); - final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, getMongoClient()); final Install install = ryaClient.getInstall(); install.install(conf.getMongoDBName(), installConfig); // next, load data @@ -104,15 +104,15 @@ public class MongoExecuteSparqlQueryIT extends MongoTestBase { return loadMe; } - /** - * @return copy from conf to MongoConnectionDetails - */ private MongoConnectionDetails getConnectionDetails() { + final java.util.Optional<char[]> password = conf.getMongoPassword() != null ? + java.util.Optional.of(conf.getMongoPassword().toCharArray()) : + java.util.Optional.empty(); + return new MongoConnectionDetails( - conf.getMongoUser(), - null,//conf.getMongoPassword().toCharArray(), conf.getMongoHostname(), - Integer.parseInt(conf.getMongoPort())); - + Integer.parseInt(conf.getMongoPort()), + java.util.Optional.ofNullable(conf.getMongoUser()), + password); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 af09b49..e68ec49 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 @@ -28,6 +28,7 @@ import org.apache.rya.api.client.GetInstanceDetails; import org.apache.rya.api.client.Install; 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.api.instance.RyaDetails; import org.apache.rya.api.instance.RyaDetails.EntityCentricIndexDetails; @@ -59,11 +60,12 @@ public class MongoGetInstanceDetailsIT extends MongoTestBase { .setEnablePcjIndex(true) .build(); - final Install install = new MongoInstall(getConnectionDetails(), getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), getMongoClient()); + final Install install = ryaClient.getInstall(); install.install(instanceName, installConfig); // Verify the correct details were persisted. - final GetInstanceDetails getInstanceDetails = new MongoGetInstanceDetails(getConnectionDetails(), getMongoClient()); + final GetInstanceDetails getInstanceDetails = ryaClient.getGetInstanceDetails(); final Optional<RyaDetails> details = getInstanceDetails.getDetails(instanceName); final RyaDetails expectedDetails = RyaDetails.builder() @@ -93,7 +95,8 @@ public class MongoGetInstanceDetailsIT extends MongoTestBase { @Test(expected = InstanceDoesNotExistException.class) public void getDetails_instanceDoesNotExist() throws MongoException, RyaClientException { - final GetInstanceDetails getInstanceDetails = new MongoGetInstanceDetails(getConnectionDetails(), conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), getMongoClient()); + final GetInstanceDetails getInstanceDetails = ryaClient.getGetInstanceDetails(); getInstanceDetails.getDetails("instance_name"); } @@ -105,18 +108,21 @@ public class MongoGetInstanceDetailsIT extends MongoTestBase { getMongoClient().getDatabase(instanceName).createCollection("rya_triples"); // Verify that the operation returns empty. - final GetInstanceDetails getInstanceDetails = new MongoGetInstanceDetails(getConnectionDetails(), getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), getMongoClient()); + final GetInstanceDetails getInstanceDetails = ryaClient.getGetInstanceDetails(); final Optional<RyaDetails> details = getInstanceDetails.getDetails(instanceName); assertFalse( details.isPresent() ); } - /** - * @return copy from conf to MongoConnectionDetails - */ private MongoConnectionDetails getConnectionDetails() { - return new MongoConnectionDetails(conf.getMongoUser(), - null,//conf.getMongoPassword().toCharArray(), + final java.util.Optional<char[]> password = conf.getMongoPassword() != null ? + java.util.Optional.of(conf.getMongoPassword().toCharArray()) : + java.util.Optional.empty(); + + return new MongoConnectionDetails( conf.getMongoHostname(), - Integer.parseInt(conf.getMongoPort())); + Integer.parseInt(conf.getMongoPort()), + java.util.Optional.ofNullable(conf.getMongoUser()), + password); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 2725b99..16991c7 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 @@ -25,6 +25,7 @@ import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Optional; import org.apache.rya.api.client.Install; import org.apache.rya.api.client.Install.DuplicateInstanceNameException; @@ -49,7 +50,7 @@ public class MongoInstallIT extends MongoTestBase { final MongoConnectionDetails connectionDetails = getConnectionDetails(); // Check that the instance does not exist. - final InstanceExists instanceExists = new MongoInstanceExists(connectionDetails, getMongoClient()); + final InstanceExists instanceExists = new MongoInstanceExists(getMongoClient()); assertFalse(instanceExists.exists(ryaInstance)); // Install an instance of Rya with all the valid options turned on. @@ -59,9 +60,8 @@ public class MongoInstallIT extends MongoTestBase { .setEnableTemporalIndex(true) .build(); - final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, getMongoClient()); final Install install = ryaClient.getInstall(); - assertTrue("ryaClient should give mongoInstall", install instanceof MongoInstall); install.install(ryaInstance, installConfig); // Check that the instance exists. @@ -87,7 +87,8 @@ public class MongoInstallIT extends MongoTestBase { final MongoConnectionDetails connectionDetails = getConnectionDetails(); - final Install install = new MongoInstall(connectionDetails, getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, getMongoClient()); + final Install install = ryaClient.getInstall(); install.install(instanceName, installConfig); // Install it again throws expected error. @@ -95,10 +96,14 @@ public class MongoInstallIT extends MongoTestBase { } private MongoConnectionDetails getConnectionDetails() { + final Optional<char[]> password = conf.getMongoPassword() != null ? + Optional.of(conf.getMongoPassword().toCharArray()) : + Optional.empty(); + return new MongoConnectionDetails( - conf.getMongoUser(), - null,//conf.getMongoPassword().toCharArray(), conf.getMongoHostname(), - Integer.parseInt(conf.getMongoPort())); + Integer.parseInt(conf.getMongoPort()), + Optional.ofNullable(conf.getMongoUser()), + password); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 3ebfc68..a2e8e25 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 @@ -43,7 +43,7 @@ public class MongoInstanceExistsIT extends MongoTestBase { client.getDatabase(instanceName).createCollection(MongoRyaInstanceDetailsRepository.INSTANCE_DETAILS_COLLECTION_NAME); // Verify the command reports the instance exists. - final MongoInstanceExists instanceExists = new MongoInstanceExists(getConnectionDetails(), client); + final MongoInstanceExists instanceExists = new MongoInstanceExists(getMongoClient()); assertTrue( instanceExists.exists(instanceName) ); } @@ -56,25 +56,14 @@ public class MongoInstanceExistsIT extends MongoTestBase { client.getDatabase(instanceName).createCollection("rya_triples"); // Verify the command reports the instance exists. - final MongoInstanceExists instanceExists = new MongoInstanceExists(getConnectionDetails(), client); + final MongoInstanceExists instanceExists = new MongoInstanceExists(getMongoClient()); assertTrue( instanceExists.exists(instanceName) ); } @Test public void doesNotExist() throws MongoException { // Verify the command reports the instance does not exists. - final MongoInstanceExists instanceExists = new MongoInstanceExists(getConnectionDetails(), getMongoClient()); + final MongoInstanceExists instanceExists = new MongoInstanceExists(getMongoClient()); assertFalse( instanceExists.exists("some_instance") ); } - - /** - * @return copy from conf to MongoConnectionDetails - */ - private MongoConnectionDetails getConnectionDetails() {// - 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/6bb7146e/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 0628935..c66670e 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 @@ -22,11 +22,13 @@ import static org.junit.Assert.assertEquals; import java.util.Collections; import java.util.List; +import java.util.Optional; 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.ListInstances; +import org.apache.rya.api.client.RyaClient; import org.apache.rya.api.client.RyaClientException; import org.apache.rya.mongodb.MongoTestBase; import org.junit.Test; @@ -42,13 +44,14 @@ public class MongoListInstancesIT extends MongoTestBase { @Test public void listInstances_hasRyaDetailsTable() throws MongoException, DuplicateInstanceNameException, RyaClientException { // Install a few instances of Rya using the install command. - final Install install = new MongoInstall(getConnectionDetails(), getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), getMongoClient()); + final Install install = ryaClient.getInstall(); install.install("instance1_", InstallConfiguration.builder().build()); install.install("instance2_", InstallConfiguration.builder().build()); install.install("instance3_", InstallConfiguration.builder().build()); // Fetch the list and verify it matches what is expected. - final ListInstances listInstances = new MongoListInstances(getConnectionDetails(), getMongoClient()); + final ListInstances listInstances = new MongoListInstances(getMongoClient()); final List<String> instances = listInstances.listInstances(); Collections.sort(instances); @@ -56,14 +59,15 @@ public class MongoListInstancesIT extends MongoTestBase { assertEquals(expected, instances); } - /** - * @return copy from conf to MongoConnectionDetails - */ - private MongoConnectionDetails getConnectionDetails() {// + private MongoConnectionDetails getConnectionDetails() { + final Optional<char[]> password = conf.getMongoPassword() != null ? + Optional.of(conf.getMongoPassword().toCharArray()) : + Optional.empty(); + return new MongoConnectionDetails( - conf.getMongoUser(), - null,//conf.getMongoPassword().toCharArray(), conf.getMongoHostname(), - Integer.parseInt(conf.getMongoPort())); + Integer.parseInt(conf.getMongoPort()), + Optional.ofNullable(conf.getMongoUser()), + password); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 e3ad902..0f84fea 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 @@ -45,7 +45,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()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), getMongoClient()); ryaClient.getLoadStatementsFile().loadStatements(getConnectionDetails().getHostname(), Paths.get("src/test/resources/example.ttl"), RDFFormat.TURTLE); } @@ -61,7 +61,7 @@ public class MongoLoadStatementsFileIT extends MongoTestBase { .setEnableGeoIndex(false) .build(); final MongoConnectionDetails connectionDetails = getConnectionDetails(); - final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, getMongoClient()); final Install install = ryaClient.getInstall(); install.install(conf.getMongoDBName(), installConfig); @@ -81,7 +81,6 @@ public class MongoLoadStatementsFileIT extends MongoTestBase { final List<Statement> statements = new ArrayList<>(); final MongoCursor<Document> x = getRyaCollection().find().iterator(); - System.out.println("getRyaCollection().count()=" + getRyaCollection().count()); while (x.hasNext()) { final Document y = x.next(); statements.add(vf.createStatement(vf.createURI(y.getString("subject")), vf.createURI(y.getString("predicate")), vf.createURI(y.getString("object")))); @@ -90,18 +89,15 @@ public class MongoLoadStatementsFileIT extends MongoTestBase { assertEquals("All rows in DB should match expected rows:", expected, statements); } - private boolean isRyaMetadataStatement(final ValueFactory vf, final Statement statement) { - return statement.getPredicate().equals(vf.createURI("urn:org.apache.rya/2012/05#version")) || statement.getPredicate().equals(vf.createURI("urn:org.apache.rya/2012/05#rts")); - } - - /** - * @return copy from conf to MongoConnectionDetails - */ private MongoConnectionDetails getConnectionDetails() { + final java.util.Optional<char[]> password = conf.getMongoPassword() != null ? + java.util.Optional.of(conf.getMongoPassword().toCharArray()) : + java.util.Optional.empty(); + return new MongoConnectionDetails( - conf.getMongoUser(), - null,//conf.getMongoPassword().toCharArray(), conf.getMongoHostname(), - Integer.parseInt(conf.getMongoPort())); + Integer.parseInt(conf.getMongoPort()), + java.util.Optional.ofNullable(conf.getMongoUser()), + password); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 9dfb71b..47b953d 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 @@ -42,18 +42,17 @@ import com.mongodb.client.MongoCursor; * Integration tests the methods of {@link MongoLoadStatements}. */ 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()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), 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 { @@ -99,7 +98,7 @@ public class MongoLoadStatementsIT extends MongoTestBase { .setEnableGeoIndex(false) .build(); final MongoConnectionDetails connectionDetails = getConnectionDetails(); - final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, getMongoClient()); final Install install = ryaClient.getInstall(); install.install(conf.getMongoDBName(), installConfig); // next, load data @@ -109,14 +108,16 @@ public class MongoLoadStatementsIT extends MongoTestBase { loadMe); return loadMe; } - /** - * @return copy from conf to MongoConnectionDetails - */ + private MongoConnectionDetails getConnectionDetails() { + final java.util.Optional<char[]> password = conf.getMongoPassword() != null ? + java.util.Optional.of(conf.getMongoPassword().toCharArray()) : + java.util.Optional.empty(); + return new MongoConnectionDetails( - conf.getMongoUser(), - null,//conf.getMongoPassword().toCharArray(), conf.getMongoHostname(), - Integer.parseInt(conf.getMongoPort())); + Integer.parseInt(conf.getMongoPort()), + java.util.Optional.ofNullable(conf.getMongoUser()), + password); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 69e3eec..6c9d4fd 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 @@ -21,10 +21,13 @@ package org.apache.rya.api.client.mongo; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.util.Optional; + import org.apache.rya.api.client.Install; import org.apache.rya.api.client.Install.InstallConfiguration; import org.apache.rya.api.client.InstanceDoesNotExistException; 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.api.client.Uninstall; import org.apache.rya.mongodb.MongoTestBase; @@ -43,15 +46,16 @@ public class MongoUninstallIT extends MongoTestBase { final String instanceName = "testInstance_"; final InstallConfiguration installConfig = InstallConfiguration.builder().setEnableTableHashPrefix(true).setEnableEntityCentricIndex(true).setEnableFreeTextIndex(true).setEnableTemporalIndex(true).setEnablePcjIndex(true).setEnableGeoIndex(true).setFluoPcjAppName("fluo_app_name").build(); - final Install install = new MongoInstall(getConnectionDetails(), conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), getMongoClient()); + final Install install = ryaClient.getInstall(); install.install(instanceName, installConfig); // Show that the instance exists. - final InstanceExists instanceExists = new MongoInstanceExists(getConnectionDetails(), conf.getMongoClient()); + final InstanceExists instanceExists = ryaClient.getInstanceExists(); assertTrue( instanceExists.exists(instanceName) ); // Uninstall the instance - final Uninstall uninstall = new MongoUninstall(getConnectionDetails(), conf.getMongoClient()); + final Uninstall uninstall = ryaClient.getUninstall(); uninstall.uninstall(instanceName); // Check that the instance no longer exists. @@ -64,18 +68,20 @@ public class MongoUninstallIT extends MongoTestBase { final String instanceName = "testInstance_"; // Uninstall the instance - final Uninstall uninstall = new MongoUninstall(getConnectionDetails(), conf.getMongoClient()); + final RyaClient ryaClient = MongoRyaClientFactory.build(getConnectionDetails(), getMongoClient()); + final Uninstall uninstall = ryaClient.getUninstall(); uninstall.uninstall(instanceName); } - /** - * @return copy from conf to MongoConnectionDetails - */ - private MongoConnectionDetails getConnectionDetails() {// + private MongoConnectionDetails getConnectionDetails() { + final Optional<char[]> password = conf.getMongoPassword() != null ? + Optional.of(conf.getMongoPassword().toCharArray()) : + Optional.empty(); + return new MongoConnectionDetails( - conf.getMongoUser(), - null,//conf.getMongoPassword().toCharArray(), conf.getMongoHostname(), - Integer.parseInt(conf.getMongoPort())); + Integer.parseInt(conf.getMongoPort()), + Optional.ofNullable(conf.getMongoUser()), + password); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 9a55460..4cb14fa 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 @@ -22,6 +22,7 @@ import static java.util.Objects.requireNonNull; import java.io.IOException; import java.nio.CharBuffer; +import java.util.Optional; import org.apache.accumulo.core.client.AccumuloException; import org.apache.accumulo.core.client.AccumuloSecurityException; @@ -33,7 +34,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.MongoDBRdfConfiguration; import org.apache.rya.shell.SharedShellState.ConnectionState; import org.apache.rya.shell.SharedShellState.StorageType; import org.apache.rya.shell.util.ConnectorFactory; @@ -45,11 +45,7 @@ import org.springframework.shell.core.annotation.CliCommand; 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. @@ -108,7 +104,7 @@ public class RyaConnectionCommands implements CommandMarker { @CliCommand(value = PRINT_CONNECTION_DETAILS_CMD, help = "Print information about the Shell's Rya storage connection.") public String printConnectionDetails() { // Check to see if the shell is connected to any storages. - final Optional<StorageType> storageType = sharedState.getShellState().getStorageType(); + final com.google.common.base.Optional<StorageType> storageType = sharedState.getShellState().getStorageType(); if(!storageType.isPresent()) { return "The shell is not connected to anything."; } @@ -124,10 +120,17 @@ public class RyaConnectionCommands implements CommandMarker { 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(); + + StringBuilder message = new StringBuilder() + .append("The shell is connected to an instance of MongoDB using the following parameters:\\n") + .append(" Hostname: " + mongoDetails.getHostname() + "\n") + .append(" Port: " + mongoDetails.getPort() + "\n"); + + if(mongoDetails.getUsername().isPresent()) { + message.append(" Username:" + mongoDetails.getUsername().get()); + } + + return message.toString(); default: throw new RuntimeException("Unrecognized StorageType: " + storageType.get()); @@ -163,47 +166,41 @@ 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 = false, 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 when performing administrative tasks.") final String username, @CliOption(key= {"hostname"}, mandatory = true, help = "The hostname of the MongoDB that will be connected to.") final String hostname, @CliOption(key= {"port"}, mandatory = true, help = "The port of the MongoDB that will be connected to.") final String port) { - // Prompt the user for their password. try { - // Set up a configuration file that connects to the specified Mongo DB. - final MongoDBRdfConfiguration conf = new MongoDBRdfConfiguration(); - final MongoClient client; - conf.setMongoHostname(hostname); - conf.setMongoPort(port); - - final char[] password; + // If a username was provided, then prompt for a password. + char[] password = null; 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. + // Create the Mongo Connection Details that describe the Mongo DB Server we are interacting with. + final MongoConnectionDetails connectionDetails = new MongoConnectionDetails( + hostname, + Integer.parseInt(port), + Optional.ofNullable(username), + Optional.ofNullable(password)); + + // Connect to a MongoDB server. TODO Figure out how to provide auth info? + MongoClient adminClient = new MongoClient(hostname, Integer.parseInt(port)); // Make sure the client is closed at shutdown. Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { - client.close(); + adminClient.close(); } }); // Initialize the connected to Mongo shared state. - final MongoConnectionDetails connectionDetails = new MongoConnectionDetails(username, password, hostname, Integer.parseInt(port)); - final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, client); + final RyaClient ryaClient = MongoRyaClientFactory.build(connectionDetails, adminClient); sharedState.connectedToMongo(connectionDetails, ryaClient); } catch (final IOException e) { @@ -218,6 +215,10 @@ public class RyaConnectionCommands implements CommandMarker { @CliOption(key = {"instance"}, mandatory = true, help = "The name of the Rya instance the shell will interact with.") final String instance) { try { + // TODO When you are connected to mongo db, then connecting to an instance may require + // a username/password. this is because each Database has its own credentials, so + // every rya instance likewise has their own credentials. + final InstanceExists instanceExists = sharedState.getShellState().getConnectedCommands().get().getInstanceExists(); // TODO gracefully fail if that version doen't support it. maybe the list command should go ahead http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/6bb7146e/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 01502d2..559aae9 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,6 +21,8 @@ package org.apache.rya.shell; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; +import java.util.Optional; + import org.apache.rya.api.client.RyaClient; import org.apache.rya.api.client.accumulo.AccumuloConnectionDetails; import org.apache.rya.api.client.mongo.MongoConnectionDetails; @@ -66,7 +68,8 @@ public class RyaPromptProviderTest { // 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); + final MongoConnectionDetails connectionDetails = + new MongoConnectionDetails("testMongoHost", 999, Optional.of("username"), Optional.of(new char[] {})); sharedState.connectedToMongo(connectionDetails, mock(RyaClient.class)); // Create a prompt.