Package org.apache.tinkerpop.gremlin
Class AbstractGraphProvider
- java.lang.Object
-
- org.apache.tinkerpop.gremlin.AbstractGraphProvider
-
- All Implemented Interfaces:
GraphProvider
- Direct Known Subclasses:
AbstractFileGraphProvider
public abstract class AbstractGraphProvider extends Object implements GraphProvider
A basic GraphProvider which simply requires the implementer to supply their base configuration for their Graph instance. Minimally this is just the setting for "gremlin.graph".- Author:
- Stephen Mallette (http://stephen.genoprime.com)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.tinkerpop.gremlin.GraphProvider
GraphProvider.Descriptor, GraphProvider.TestListener
-
-
Field Summary
-
Fields inherited from interface org.apache.tinkerpop.gremlin.GraphProvider
CORE_IMPLEMENTATIONS
-
-
Constructor Summary
Constructors Constructor Description AbstractGraphProvider()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected String
cleanParameters(String methodName)
protected static void
deleteDirectory(File directory)
Helper method for those buildingGraphProvider
implementations that need to clean directories between test runs.abstract Map<String,Object>
getBaseConfiguration(String graphName, Class<?> test, String testMethodName, LoadGraphWith.GraphData loadGraphWith)
Provides a basic configuration for a particularGraph
instance and uses thegraphName
to ensure that the instance is unique.void
loadGraphData(Graph graph, LoadGraphWith loadGraphWith, Class testClass, String testName)
Tests are annotated with aLoadGraphWith
annotation.protected String
makeTestDirectory(String graphName, Class<?> test, String testMethodName)
Utility method to help produce an appropriate unique directory for a test.org.apache.commons.configuration2.Configuration
newGraphConfiguration(String graphName, Class<?> test, String testMethodName, Map<String,Object> configurationOverrides, LoadGraphWith.GraphData loadGraphWith)
When implementing this method ensure that a test suite can override any settings EXCEPT the "gremlin.graph" setting which should be defined by the implementer.protected void
readIntoGraph(Graph graph, String path)
Used by the default implementation ofloadGraphData(Graph, LoadGraphWith, Class, String)
to read the graph from a Kryo file using the defaultGryoReader
implementation.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.tinkerpop.gremlin.GraphProvider
clear, clear, convertId, convertLabel, getGraphComputer, getImplementations, getStaticFeatures, getTestListener, getWorkingDirectory, newGraphConfiguration, openTestGraph, standardGraphConfiguration, standardTestGraph, traversal, traversal
-
-
-
-
Method Detail
-
getBaseConfiguration
public abstract Map<String,Object> getBaseConfiguration(String graphName, Class<?> test, String testMethodName, LoadGraphWith.GraphData loadGraphWith)
Provides a basic configuration for a particularGraph
instance and uses thegraphName
to ensure that the instance is unique. It is up to the Gremlin implementation to determine how best to use thegraphName
to ensure uniqueness. For example, Neo4j, might use thegraphName
might be used to create a different sub-directory where the graph is stored. The @{code test} and @{code testMethodName} can be used to alter graph configurations for specific tests. For example, a graph that has support for different transaction isolation levels might only support a feature in a specific configuration. Using these arguments, the implementation could detect when a test was being fired that required the database to be configured in a specific isolation level and return a configuration to support that. Ultimately, the returnedMap
should minimally contain a configuration that can be given to aGraphFactory
so that it can be instantiated.- Parameters:
graphName
- a value that represents a unique configuration for a graphtest
- the test classtestMethodName
- the name of the test methodloadGraphWith
- the data set to load and will be null if no data is to be loaded- Returns:
- a configuration
Map
that should be unique per thegraphName
-
newGraphConfiguration
public org.apache.commons.configuration2.Configuration newGraphConfiguration(String graphName, Class<?> test, String testMethodName, Map<String,Object> configurationOverrides, LoadGraphWith.GraphData loadGraphWith)
Description copied from interface:GraphProvider
When implementing this method ensure that a test suite can override any settings EXCEPT the "gremlin.graph" setting which should be defined by the implementer. It should provide aConfiguration
that will generate a graph unique to thatgraphName
.- Specified by:
newGraphConfiguration
in interfaceGraphProvider
- Parameters:
graphName
- a unique test graph nametest
- the test classtestMethodName
- the name of the testconfigurationOverrides
- settings to override defaults with.loadGraphWith
- the data set to load and will be null if no data is to be loaded
-
loadGraphData
public void loadGraphData(Graph graph, LoadGraphWith loadGraphWith, Class testClass, String testName)
Description copied from interface:GraphProvider
Tests are annotated with aLoadGraphWith
annotation. These annotations tell the test what kind of data to preload into the graph instance. It is up to the implementation to load the graph with the data specified by that annotation. This method also represents the place where indices should be configured according the theGraph
implementation's API. Implementers can use thetestClass
andtestName
arguments to implement test specific configurations to their graphs.- Specified by:
loadGraphData
in interfaceGraphProvider
- Parameters:
graph
- theGraph
instance to load data into constructed by thisGraphProvider
loadGraphWith
- the annotation for the currently running test - this value may be null if no graph data is to be loaded in front of the test.testClass
- the test class being executedtestName
- the name of the test method being executed
-
deleteDirectory
protected static void deleteDirectory(File directory)
Helper method for those buildingGraphProvider
implementations that need to clean directories between test runs.
-
makeTestDirectory
protected String makeTestDirectory(String graphName, Class<?> test, String testMethodName)
Utility method to help produce an appropriate unique directory for a test. Designed to be called fromgetBaseConfiguration(String, Class, String, LoadGraphWith.GraphData)
for those graph providers that need a data directory for theirGraph
implementations.
-
readIntoGraph
protected void readIntoGraph(Graph graph, String path) throws IOException
Used by the default implementation ofloadGraphData(Graph, LoadGraphWith, Class, String)
to read the graph from a Kryo file using the defaultGryoReader
implementation. If the default implementation does not work (perhaps a graph implementation needs to register some specialIoRegistry
then this method or its caller should be overridden to suit the implementation.- Parameters:
graph
- the graph to load topath
- the path to the file to load into the graph- Throws:
IOException
-
-