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

    https://github.com/apache/tinkerpop/pull/569#discussion_r108893957
  
    --- Diff: 
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GraphManager.java
 ---
    @@ -21,139 +21,101 @@
     import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
     import org.apache.tinkerpop.gremlin.structure.Graph;
     import org.apache.tinkerpop.gremlin.structure.Transaction;
    -import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
    -import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
    -import org.slf4j.Logger;
    -import org.slf4j.LoggerFactory;
     
     import javax.script.Bindings;
    -import javax.script.SimpleBindings;
    -import java.util.HashSet;
     import java.util.Map;
     import java.util.Set;
    -import java.util.concurrent.ConcurrentHashMap;
    -import java.util.function.Predicate;
    -
    -/**
    - * Holder for {@link Graph} and {@link TraversalSource} instances 
configured for the server to be passed to script
    - * engine bindings. The {@link Graph} instances are read from the {@link 
Settings} for Gremlin Server as defined in
    - * the configuration file. The {@link TraversalSource} instances are 
rebound to the {@code GraphManager} once
    - * initialization scripts construct them.
    - */
    -public final class GraphManager {
    -    private static final Logger logger = 
LoggerFactory.getLogger(GremlinServer.class);
    -
    -    private final Map<String, Graph> graphs = new ConcurrentHashMap<>();
    -    private final Map<String, TraversalSource> traversalSources = new 
ConcurrentHashMap<>();
    +import java.util.function.Function;
     
    +public interface GraphManager {
         /**
    -     * Create a new instance using the {@link Settings} from Gremlin 
Server.
    +     * @Deprecated This returns a {@link Map} that should be immutable. 
Please refer to
    +     * getGraphNames() for replacement.
    +     *
    +     * Get a list of the {@link Graph} instances and their binding names
    +     *
    +     * @return a {@link Map} where the key is the name of the {@link 
Graph} and the value is the {@link Graph} itself
          */
    -    public GraphManager(final Settings settings) {
    -        settings.graphs.entrySet().forEach(e -> {
    -            try {
    -                final Graph newGraph = GraphFactory.open(e.getValue());
    -                graphs.put(e.getKey(), newGraph);
    -                logger.info("Graph [{}] was successfully configured via 
[{}].", e.getKey(), e.getValue());
    -            } catch (RuntimeException re) {
    -                logger.warn(String.format("Graph [%s] configured at [%s] 
could not be instantiated and will not be available in Gremlin Server.  
GraphFactory message: %s",
    -                        e.getKey(), e.getValue(), re.getMessage()), re);
    -                if (re.getCause() != null) logger.debug("GraphFactory 
exception", re.getCause());
    -            }
    -        });
    -    }
    +    @Deprecated
    +    public Map<String, Graph> getGraphs();
     
         /**
    -     * Get a list of the {@link Graph} instances and their binding names 
as defined in the Gremlin Server
    -     * configuration file.
    +     * Get a {@link Set} of {@link String} graphNames corresponding to 
names stored in the graph's
    +     * reference tracker.
    +     */
    +    public Set<String> getGraphNames();
    +    /**
    +     * Get {@link Graph} instance whose name matches {@link gName}
          *
    -     * @return a {@link Map} where the key is the name of the {@link 
Graph} and the value is the {@link Graph} itself
    +     * @return {@link Graph} if exists, else null
    +     */
    +    public Graph getGraph(final String gName);
    +
    +    /**
    +     * Add {@link Graph} g with name {@link String} gName to
    +     * {@link Map<String, Graph>}
          */
    -    public Map<String, Graph> getGraphs() {
    -        return graphs;
    -    }
    +    public void addGraph(final String gName, final Graph g);
     
         /**
    -     * Get a list of the {@link TraversalSource} instances and their 
binding names as defined by Gremlin Server
    -     * initialization scripts.
    +     * Get a list of the {@link TraversalSource} instances and their 
binding names
          *
          * @return a {@link Map} where the key is the name of the {@link 
TraversalSource} and the value is the
          *         {@link TraversalSource} itself
          */
    -    public Map<String, TraversalSource> getTraversalSources() {
    -        return traversalSources;
    -    }
    +    public Map<String, TraversalSource> getTraversalSources();
    --- End diff --
    
    I think you just need to deprecate `getTraversalSources()` and include 
`removeTraversalSource(String tsName)` and `getTraversalSourceNames()`. That 
should do it. I could do it after merge, but this body of work would be more 
complete if it were included as part of this PR.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to