Github user kchilton2 commented on a diff in the pull request:

    https://github.com/apache/incubator-rya/pull/258#discussion_r159989874
  
    --- Diff: 
extras/indexing/src/main/java/org/apache/rya/api/client/mongo/MongoConnectionDetails.java
 ---
    @@ -0,0 +1,119 @@
    +/**
    + * 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 java.util.Optional;
    +
    +import org.apache.rya.indexing.accumulo.ConfigUtils;
    +import org.apache.rya.mongodb.MongoDBRdfConfiguration;
    +
    +import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
    +import edu.umd.cs.findbugs.annotations.NonNull;
    +
    +/**
    + * The information the shell used to connect to Mongo server, not the DB 
or collections.
    + */
    +@DefaultAnnotation(NonNull.class)
    +public class MongoConnectionDetails {
    +
    +    private final Optional<String> username;
    +    private final Optional<char[]> password;
    +    private final String hostname;
    +    private final int port;
    +
    +    /**
    +     * Constructs an instance of {@link 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.
    +     * @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 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 hostname of the Mongo DB that was connected to.
    +     */
    +    public String getHostname() {
    +        return hostname;
    +    }
    +
    +    /**
    +     * @return The port of the Mongo DB that was connected to.
    +     */
    +    public int getPort() {
    +        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. (not null)
    +     * @return Constructs a new {@link MongoDBRdfConfiguration} object 
with values from this object.
    +     */
    +    public MongoDBRdfConfiguration build(final String ryaInstanceName) {
    +        // Note, we don't use the MongoDBRdfConfigurationBuilder here 
because it explicitly sets
    +        // authorizations and visibilities to an empty string if they are 
not set on the builder.
    +        // If they are null in the MongoRdfConfiguration object, it may do 
the right thing.
    +        final MongoDBRdfConfiguration conf = new MongoDBRdfConfiguration();
    +        conf.setBoolean(ConfigUtils.USE_MONGO, true);
    +        conf.setMongoHostname(hostname);
    +        conf.setMongoPort("" + port);
    +        conf.setMongoDBName(ryaInstanceName);
    +
    +        if(username.isPresent()) {
    +            conf.setMongoUser(username.get());
    +        }
    +
    +        if(password.isPresent()) {
    +            conf.setMongoPassword( new String(password.get()) );
    +        }
    +
    +        // Default to having a table prefix of "rya", otherwise the app 
doesn't work for some reason.
    +        conf.setTablePrefix("rya");
    --- End diff --
    
    It looks like there's already a ticket open for this. 
    https://issues.apache.org/jira/browse/RYA-135


---

Reply via email to