You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/05/28 22:13:25 UTC

[4/5] incubator-tinkerpop git commit: FullNeo4jGraph and SimpleNeo4jGraph exist. Neo4jGraph is abstract. Full for meta/multi-properties. Simple for no meta-multi properties. Now they have respective providers and individual test suite runs.

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertex.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertex.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertex.java
new file mode 100644
index 0000000..df73a8d
--- /dev/null
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertex.java
@@ -0,0 +1,161 @@
+/*
+ *
+ *  * 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.tinkerpop.gremlin.neo4j.structure.simple;
+
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jEdge;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jHelper;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jVertex;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.neo4j.tinkerpop.api.Neo4jDirection;
+import org.neo4j.tinkerpop.api.Neo4jNode;
+import org.neo4j.tinkerpop.api.Neo4jRelationship;
+
+import java.util.Iterator;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+final class SimpleNeo4jVertex extends Neo4jVertex {
+
+    public SimpleNeo4jVertex(final Neo4jNode node, final Neo4jGraph neo4jGraph) {
+        super(node, neo4jGraph);
+    }
+
+    @Override
+    public Edge addEdge(final String label, final Vertex inVertex, final Object... keyValues) {
+        if (null == inVertex) throw Graph.Exceptions.argumentCanNotBeNull("inVertex");
+        if (this.removed) throw Element.Exceptions.elementAlreadyRemoved(Vertex.class, this.getBaseVertex().getId());
+        ElementHelper.validateLabel(label);
+        ElementHelper.legalPropertyKeyValueArray(keyValues);
+        if (ElementHelper.getIdValue(keyValues).isPresent())
+            throw Edge.Exceptions.userSuppliedIdsNotSupported();
+
+        this.graph.tx().readWrite();
+        final Neo4jNode node = (Neo4jNode) this.baseElement;
+        final Neo4jEdge edge = this.graph.createEdge(node.connectTo(((Neo4jVertex) inVertex).getBaseVertex(), label));
+        ElementHelper.attachProperties(edge, keyValues);
+        return edge;
+    }
+
+    @Override
+    public <V> VertexProperty<V> property(final String key) {
+        if (this.removed) throw Element.Exceptions.elementAlreadyRemoved(Vertex.class, this.getBaseVertex().getId());
+        this.graph.tx().readWrite();
+        if (existsInNeo4j(key)) {
+            return new SimpleNeo4jVertexProperty<>(this, key, (V) this.getBaseVertex().getProperty(key));
+        } else
+            return VertexProperty.<V>empty();
+
+    }
+
+    @Override
+    public <V> VertexProperty<V> property(final VertexProperty.Cardinality cardinality, final String key, final V value, final Object... keyValues) {
+        if (this.removed) throw Element.Exceptions.elementAlreadyRemoved(Vertex.class, this.getBaseVertex().getId());
+        if (cardinality != VertexProperty.Cardinality.single)
+            throw VertexProperty.Exceptions.multiPropertiesNotSupported();
+        if (keyValues.length > 0)
+            throw VertexProperty.Exceptions.metaPropertiesNotSupported();
+        ElementHelper.validateProperty(key, value);
+        try {
+            this.getBaseVertex().setProperty(key, value);
+            return new SimpleNeo4jVertexProperty<>(this, key, value);
+        } catch (final IllegalArgumentException iae) {
+            throw Property.Exceptions.dataTypeOfPropertyValueNotSupported(value);
+        }
+    }
+
+    @Override
+    public Iterator<Vertex> vertices(final Direction direction, final String... edgeLabels) {
+        this.graph.tx().readWrite();
+        return new Iterator<Vertex>() {
+            final Iterator<Neo4jRelationship> relationshipIterator = 0 == edgeLabels.length ?
+                    getBaseVertex().relationships(Neo4jHelper.mapDirection(direction)).iterator() :
+                    getBaseVertex().relationships(Neo4jHelper.mapDirection(direction), (edgeLabels)).iterator();
+
+            @Override
+            public boolean hasNext() {
+                return this.relationshipIterator.hasNext();
+            }
+
+            @Override
+            public Neo4jVertex next() {
+                return graph.createVertex(this.relationshipIterator.next().other(getBaseVertex()));
+            }
+        };
+    }
+
+    @Override
+    public Iterator<Edge> edges(final Direction direction, final String... edgeLabels) {
+        this.graph.tx().readWrite();
+        return new Iterator<Edge>() {
+            final Iterator<Neo4jRelationship> relationshipIterator = 0 == edgeLabels.length ?
+                    getBaseVertex().relationships(Neo4jHelper.mapDirection(direction)).iterator() :
+                    getBaseVertex().relationships(Neo4jHelper.mapDirection(direction), (edgeLabels)).iterator();
+
+            @Override
+            public boolean hasNext() {
+                return this.relationshipIterator.hasNext();
+            }
+
+            @Override
+            public Neo4jEdge next() {
+                return graph.createEdge(this.relationshipIterator.next());
+            }
+        };
+    }
+
+    @Override
+    public <V> Iterator<VertexProperty<V>> properties(final String... propertyKeys) {
+        this.graph.tx().readWrite();
+        return (Iterator) IteratorUtils.stream(getBaseVertex().getKeys())
+                .filter(key -> ElementHelper.keyExists(key, propertyKeys))
+                .map(key -> new SimpleNeo4jVertexProperty<>(SimpleNeo4jVertex.this, key, (V) this.getBaseVertex().getProperty(key))).iterator();
+    }
+
+    @Override
+    public void remove() {
+        if (this.removed) throw Element.Exceptions.elementAlreadyRemoved(Vertex.class, this.getBaseVertex().getId());
+        this.removed = true;
+        this.graph.tx().readWrite();
+        try {
+            final Neo4jNode node = this.getBaseVertex();
+            for (final Neo4jRelationship relationship : node.relationships(Neo4jDirection.BOTH)) {
+                relationship.delete();
+            }
+            node.delete();
+        } catch (final IllegalStateException ignored) {
+            // this one happens if the vertex is still chilling in the tx
+        } catch (final RuntimeException ex) {
+            if (!Neo4jHelper.isNotFound(ex)) throw ex;
+            // this one happens if the vertex is committed
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertexProperty.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertexProperty.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertexProperty.java
new file mode 100644
index 0000000..4de7462
--- /dev/null
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/simple/SimpleNeo4jVertexProperty.java
@@ -0,0 +1,67 @@
+/*
+ *
+ *  * 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.tinkerpop.gremlin.neo4j.structure.simple;
+
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jVertex;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jVertexProperty;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+final class SimpleNeo4jVertexProperty<V> extends Neo4jVertexProperty<V> {
+
+    public SimpleNeo4jVertexProperty(final Neo4jVertex vertex, final String key, final V value) {
+        super(vertex, key, value);
+    }
+
+    @Override
+    public Set<String> keys() {
+        throw VertexProperty.Exceptions.metaPropertiesNotSupported();
+    }
+
+    @Override
+    public <U> Property<U> property(String key, U value) {
+        throw VertexProperty.Exceptions.metaPropertiesNotSupported();
+    }
+
+    @Override
+    public <U> Property<U> property(final String key) {
+        throw VertexProperty.Exceptions.metaPropertiesNotSupported();
+    }
+
+    @Override
+    public void remove() {
+        this.vertex.graph().tx().readWrite();
+        if (this.vertex.getBaseVertex().hasProperty(this.key))
+            this.vertex.getBaseVertex().removeProperty(this.key);
+    }
+
+    @Override
+    public <U> Iterator<Property<U>> properties(final String... propertyKeys) {
+        throw VertexProperty.Exceptions.metaPropertiesNotSupported();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/AbstractNeo4jGraphProvider.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/AbstractNeo4jGraphProvider.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/AbstractNeo4jGraphProvider.java
index b96c52a..e61440d 100644
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/AbstractNeo4jGraphProvider.java
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/AbstractNeo4jGraphProvider.java
@@ -47,6 +47,11 @@ public abstract class AbstractNeo4jGraphProvider extends AbstractGraphProvider {
         add(Neo4jVertexProperty.class);
     }};
 
+    protected String cleanParameters(String methodName) {
+        int random = (int) (Math.random() * Integer.MAX_VALUE);
+        return methodName.replaceAll("[0-9, -]+$", String.valueOf(random));
+    }
+
     @Override
     public void clear(final Graph graph, final Configuration configuration) throws Exception {
         if (null != graph) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/BaseNeo4jGraphTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/BaseNeo4jGraphTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/BaseNeo4jGraphTest.java
index 00d0805..d7f0454 100644
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/BaseNeo4jGraphTest.java
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/BaseNeo4jGraphTest.java
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertEquals;
  */
 public class BaseNeo4jGraphTest {
     protected Configuration conf;
-    protected final DefaultNeo4jGraphProvider graphProvider = new DefaultNeo4jGraphProvider();
+    protected final FullNeo4jGraphProvider graphProvider = new FullNeo4jGraphProvider();
     protected Neo4jGraph graph;
     protected GraphTraversalSource g;
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/DefaultNeo4jGraphProvider.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/DefaultNeo4jGraphProvider.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/DefaultNeo4jGraphProvider.java
deleted file mode 100644
index 7430b96..0000000
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/DefaultNeo4jGraphProvider.java
+++ /dev/null
@@ -1,50 +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.tinkerpop.gremlin.neo4j;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.TestHelper;
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class DefaultNeo4jGraphProvider extends AbstractNeo4jGraphProvider {
-    @Override
-    public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData graphData) {
-        return new HashMap<String, Object>() {{
-            put(Graph.GRAPH, Neo4jGraph.class.getName());
-            String directory = getWorkingDirectory() + File.separator + TestHelper.cleanPathSegment(graphName) + File.separator + cleanParameters(TestHelper.cleanPathSegment(testMethodName));
-            put(Neo4jGraph.CONFIG_DIRECTORY, directory);
-            put(Neo4jGraph.CONFIG_META_PROPERTIES, true);
-            put(Neo4jGraph.CONFIG_MULTI_PROPERTIES, true);
-            put(Neo4jGraph.CONFIG_CHECK_ELEMENTS_IN_TRANSACTION, true);
-        }};
-    }
-
-    private String cleanParameters(String methodName) {
-        int random = (int) (Math.random() * Integer.MAX_VALUE);
-        return methodName.replaceAll("[0-9, -]+$", String.valueOf(random));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/FullNeo4jGraphProvider.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/FullNeo4jGraphProvider.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/FullNeo4jGraphProvider.java
new file mode 100644
index 0000000..cce782c
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/FullNeo4jGraphProvider.java
@@ -0,0 +1,45 @@
+/*
+ * 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.tinkerpop.gremlin.neo4j;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class FullNeo4jGraphProvider extends AbstractNeo4jGraphProvider {
+    @Override
+    public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData graphData) {
+        return new HashMap<String, Object>() {{
+            put(Graph.GRAPH, Neo4jGraph.class.getName());
+            String directory = getWorkingDirectory() + File.separator + TestHelper.cleanPathSegment(graphName) + File.separator + cleanParameters(TestHelper.cleanPathSegment(testMethodName));
+            put(Neo4jGraph.CONFIG_DIRECTORY, directory);
+            put(Neo4jGraph.CONFIG_META_PROPERTIES, true);
+            put(Neo4jGraph.CONFIG_MULTI_PROPERTIES, true);
+            put(Neo4jGraph.CONFIG_CHECK_ELEMENTS_IN_TRANSACTION, true);
+        }};
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/Neo4jGraphTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/Neo4jGraphTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/Neo4jGraphTest.java
index 5d3cf74..ba064a4 100644
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/Neo4jGraphTest.java
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/Neo4jGraphTest.java
@@ -23,7 +23,7 @@ package org.apache.tinkerpop.gremlin.neo4j;
 
 import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
 import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jVertex;
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jVertexProperty;
+import org.apache.tinkerpop.gremlin.neo4j.structure.full.FullNeo4jVertexProperty;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -32,11 +32,14 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
-import org.neo4j.tinkerpop.api.*;
+import org.neo4j.tinkerpop.api.Neo4jDirection;
+import org.neo4j.tinkerpop.api.Neo4jGraphAPI;
+import org.neo4j.tinkerpop.api.Neo4jNode;
+import org.neo4j.tinkerpop.api.Neo4jRelationship;
+import org.neo4j.tinkerpop.api.Neo4jTx;
 
 import javax.script.Bindings;
 import javax.script.ScriptException;
-import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -148,7 +151,7 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
     @Test
     public void shouldReturnResultsUsingLegacyIndexOnVertex() {
         graph.tx().readWrite();
-        this.graph.getBaseGraph().autoIndexProperties(true,"name");
+        this.graph.getBaseGraph().autoIndexProperties(true, "name");
         this.graph.tx().commit();
 
         this.graph.addVertex(T.label, "Person", "name", "marko");
@@ -176,7 +179,7 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
     @Test
     public void shouldEnforceUniqueConstraint() {
         this.graph.tx().readWrite();
-        this.graph.getBaseGraph().execute("CREATE CONSTRAINT ON (p:Person) assert p.name is unique",null);
+        this.graph.getBaseGraph().execute("CREATE CONSTRAINT ON (p:Person) assert p.name is unique", null);
         this.graph.tx().commit();
         this.graph.tx().commit();
         this.graph.addVertex(T.label, "Person", "name", "marko");
@@ -242,7 +245,7 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
 
         this.graph.tx().readWrite();
         this.graph.getBaseGraph().execute("DROP CONSTRAINT ON (p:Person) assert p.name is unique", null);
-        this.graph.getBaseGraph().execute("DROP CONSTRAINT ON (p:Person) assert p.surname is unique",null);
+        this.graph.getBaseGraph().execute("DROP CONSTRAINT ON (p:Person) assert p.surname is unique", null);
 
         this.graph.tx().commit();
         assertEquals(1, this.g.V().has(T.label, "Person").has("name", "marko").count().next(), 0);
@@ -363,8 +366,8 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
             this.graph.tx().commit();
 
             final Vertex a = graph.addVertex(T.label, "person", "name", "marko", "age", 34);
-            a.property(VertexProperty.Cardinality.list,"name", "okram");
-            a.property(VertexProperty.Cardinality.list,"name", "marko a. rodriguez");
+            a.property(VertexProperty.Cardinality.list, "name", "okram");
+            a.property(VertexProperty.Cardinality.list, "name", "marko a. rodriguez");
             final Vertex b = graph.addVertex(T.label, "person", "name", "stephen");
             final Vertex c = graph.addVertex("name", "matthias", "name", "mbroecheler");
 
@@ -372,7 +375,7 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                 assertEquals(a.id(), graph.traversal().V().has("person", "name", "okram").id().next());
                 assertEquals(1, graph.traversal().V().has("person", "name", "okram").count().next().intValue());
                 assertEquals(34, ((Neo4jVertex) graph.traversal().V().has("person", "name", "okram").next()).getBaseVertex().getProperty("age"));
-                assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_TOKEN, ((Neo4jVertex) graph.traversal().V().has("person", "name", "okram").next()).getBaseVertex().getProperty("name"));
+                assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_TOKEN, ((Neo4jVertex) graph.traversal().V().has("person", "name", "okram").next()).getBaseVertex().getProperty("name"));
                 ///
                 assertEquals(b.id(), graph.traversal().V().has("person", "name", "stephen").id().next());
                 assertEquals(1, graph.traversal().V().has("person", "name", "stephen").count().next().intValue());
@@ -391,19 +394,19 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                 assertEquals(d.id(), graph.traversal().V().has("person", "name", "kuppitz").id().next());
                 assertEquals("kuppitz", ((Neo4jVertex) graph.traversal().V().has("person", "name", "kuppitz").next()).getBaseVertex().getProperty("name"));
             });
-            d.property(VertexProperty.Cardinality.list,"name", "daniel", "acl", "private");
+            d.property(VertexProperty.Cardinality.list, "name", "daniel", "acl", "private");
             tryCommit(graph, graph -> {
                 assertEquals(d.id(), graph.traversal().V().has("person", "name", P.within("daniel", "kuppitz")).id().next());
                 assertEquals(d.id(), graph.traversal().V().has("person", "name", "kuppitz").id().next());
                 assertEquals(d.id(), graph.traversal().V().has("person", "name", "daniel").id().next());
-                assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_TOKEN, ((Neo4jVertex) graph.traversal().V().has("person", "name", "kuppitz").next()).getBaseVertex().getProperty("name"));
+                assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_TOKEN, ((Neo4jVertex) graph.traversal().V().has("person", "name", "kuppitz").next()).getBaseVertex().getProperty("name"));
             });
-            d.property(VertexProperty.Cardinality.list,"name", "marko", "acl", "private");
+            d.property(VertexProperty.Cardinality.list, "name", "marko", "acl", "private");
             tryCommit(graph, g -> {
                 assertEquals(2, g.traversal().V().has("person", "name", "marko").count().next().intValue());
                 assertEquals(1, g.traversal().V().has("person", "name", "marko").properties("name").has(T.value, "marko").has("acl", "private").count().next().intValue());
                 g.traversal().V().has("person", "name", "marko").forEachRemaining(v -> {
-                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_TOKEN, ((Neo4jVertex) v).getBaseVertex().getProperty("name"));
+                    assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_TOKEN, ((Neo4jVertex) v).getBaseVertex().getProperty("name"));
                 });
 
             });
@@ -414,9 +417,9 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
     public void shouldDoLabelsNamespaceBehavior() {
         graph.tx().readWrite();
 
-        this.graph.getBaseGraph().execute("CREATE INDEX ON :Person(name)",null);
-        this.graph.getBaseGraph().execute("CREATE INDEX ON :Product(name)",null);
-        this.graph.getBaseGraph().execute("CREATE INDEX ON :Corporate(name)",null);
+        this.graph.getBaseGraph().execute("CREATE INDEX ON :Person(name)", null);
+        this.graph.getBaseGraph().execute("CREATE INDEX ON :Product(name)", null);
+        this.graph.getBaseGraph().execute("CREATE INDEX ON :Corporate(name)", null);
 
         this.graph.tx().commit();
         this.graph.addVertex(T.label, "Person", "name", "marko");
@@ -456,10 +459,10 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
         tryCommit(graph, g -> validateCounts(g, 0, 0, 0, 0));
         Vertex vertex = graph.addVertex(T.label, "person");
         tryCommit(graph, g -> validateCounts(g, 1, 0, 1, 0));
-        vertex.property(VertexProperty.Cardinality.list,"name", "marko");
+        vertex.property(VertexProperty.Cardinality.list, "name", "marko");
         assertEquals("marko", vertex.value("name"));
         tryCommit(graph, g -> validateCounts(g, 1, 0, 1, 0));
-        vertex.property(VertexProperty.Cardinality.list,"name", "okram");
+        vertex.property(VertexProperty.Cardinality.list, "name", "okram");
         tryCommit(graph, g -> {
             validateCounts(g, 1, 0, 1, 0);
             assertEquals("okram", vertex.value("name"));
@@ -484,7 +487,7 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
         tryCommit(graph, g -> validateCounts(g, 0, 0, 0, 0));
         Vertex vertex = graph.addVertex(T.label, "person");
         tryCommit(graph, g -> validateCounts(g, 1, 0, 1, 0));
-        vertex.property(VertexProperty.Cardinality.list,"name", "marko");
+        vertex.property(VertexProperty.Cardinality.list, "name", "marko");
         assertEquals("marko", vertex.value("name"));
         tryCommit(graph, g -> validateCounts(g, 1, 0, 1, 0));
         vertex.property(VertexProperty.Cardinality.single, "name", "okram");
@@ -525,16 +528,16 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                 // assertEquals(1, b.properties("location").count().next().intValue());
                 // assertEquals(0, g.E().count().next().intValue());
 
-                assertEquals(4l, graph.execute("MATCH n RETURN COUNT(n)",null).next().get("COUNT(n)"));
-                assertEquals(2l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)",null).next().get("COUNT(r)"));
-                assertEquals(2l, graph.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)",null).next().get("COUNT(r)"));
+                assertEquals(4l, graph.execute("MATCH n RETURN COUNT(n)", null).next().get("COUNT(n)"));
+                assertEquals(2l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)", null).next().get("COUNT(r)"));
+                assertEquals(2l, graph.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)", null).next().get("COUNT(r)"));
                 final AtomicInteger counter = new AtomicInteger(0);
                 a.getBaseVertex().relationships(Neo4jDirection.OUTGOING).forEach(relationship -> {
-                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.type());
+                    assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.type());
                     counter.incrementAndGet();
                 });
                 assertEquals(2, counter.getAndSet(0));
-                graph.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)",null).forEachRemaining(results -> {
+                graph.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)", null).forEachRemaining(results -> {
                     assertEquals(VertexProperty.DEFAULT_LABEL, ((List<String>) results.get("labels(m)")).get(0));
                     counter.incrementAndGet();
                 });
@@ -543,9 +546,9 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                     assertEquals(2, IteratorUtils.count(node.getKeys()));
                     assertEquals("name", node.getProperty(T.key.getAccessor()));
                     assertTrue("marko".equals(node.getProperty(T.value.getAccessor())) || "okram".equals(node.getProperty(T.value.getAccessor())));
-                    assertEquals(0, node.degree(Neo4jDirection.OUTGOING,null));
-                    assertEquals(1, node.degree(Neo4jDirection.INCOMING,null));
-                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.relationships(Neo4jDirection.INCOMING).iterator().next().type());
+                    assertEquals(0, node.degree(Neo4jDirection.OUTGOING, null));
+                    assertEquals(1, node.degree(Neo4jDirection.INCOMING, null));
+                    assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.relationships(Neo4jDirection.INCOMING).iterator().next().type());
                     counter.incrementAndGet();
                 });
                 assertEquals(2, counter.getAndSet(0));
@@ -558,13 +561,13 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
             a.property("name", "the marko");
             tryCommit(graph, g -> {
                 assertEquals(2, g.traversal().V().count().next().intValue());
-                //assertEquals(1, a.properties().count().next().intValue());
+                //assertEquals(1, a.prope rties().count().next().intValue());
                 //  assertEquals(1, b.properties("name").count().next().intValue());
                 // assertEquals(1, b.properties("location").count().next().intValue());
                 //  assertEquals(0, g.E().count().next().intValue());
 
-                assertEquals(2l, graph.execute("MATCH n RETURN COUNT(n)",null).next().get("COUNT(n)"));
-                assertEquals(0l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)",null).next().get("COUNT(r)"));
+                assertEquals(2l, graph.execute("MATCH n RETURN COUNT(n)", null).next().get("COUNT(n)"));
+                assertEquals(0l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)", null).next().get("COUNT(r)"));
 
                 assertEquals(1, IteratorUtils.count(a.getBaseVertex().getKeys()));
                 assertEquals("the marko", a.getBaseVertex().getProperty("name"));
@@ -579,8 +582,8 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                 //    assertEquals(0, a.properties().count().next().intValue());
                 //   assertEquals(2, b.properties().count().next().intValue());
                 //     assertEquals(0, g.E().count().next().intValue());
-                assertEquals(2l, graph.execute("MATCH n RETURN COUNT(n)",null).next().get("COUNT(n)"));
-                assertEquals(0l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)",null).next().get("COUNT(r)"));
+                assertEquals(2l, graph.execute("MATCH n RETURN COUNT(n)", null).next().get("COUNT(n)"));
+                assertEquals(0l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)", null).next().get("COUNT(r)"));
                 assertEquals(0, IteratorUtils.count(a.getBaseVertex().getKeys()));
                 assertEquals(2, IteratorUtils.count(b.getBaseVertex().getKeys()));
             });
@@ -594,16 +597,16 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                 // assertEquals(1, b.properties("location").count().next().intValue());
                 //  assertEquals(0, g.E().count().next().intValue());
 
-                assertEquals(3l, graph.execute("MATCH n RETURN COUNT(n)",null).next().get("COUNT(n)"));
-                assertEquals(1l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)",null).next().get("COUNT(r)"));
-                assertEquals(1l, graph.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)",null).next().get("COUNT(r)"));
+                assertEquals(3l, graph.execute("MATCH n RETURN COUNT(n)", null).next().get("COUNT(n)"));
+                assertEquals(1l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)", null).next().get("COUNT(r)"));
+                assertEquals(1l, graph.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)", null).next().get("COUNT(r)"));
                 final AtomicInteger counter = new AtomicInteger(0);
                 a.getBaseVertex().relationships(Neo4jDirection.OUTGOING).forEach(relationship -> {
-                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.type());
+                    assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.type());
                     counter.incrementAndGet();
                 });
                 assertEquals(1, counter.getAndSet(0));
-                graph.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)",null).forEachRemaining(results -> {
+                graph.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)", null).forEachRemaining(results -> {
                     assertEquals(VertexProperty.DEFAULT_LABEL, ((List<String>) results.get("labels(m)")).get(0));
                     counter.incrementAndGet();
                 });
@@ -613,23 +616,23 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                     assertEquals("name", node.getProperty(T.key.getAccessor()));
                     assertEquals("the marko", node.getProperty(T.value.getAccessor()));
                     assertEquals("private", node.getProperty("acl"));
-                    assertEquals(0, node.degree(Neo4jDirection.OUTGOING,null));
-                    assertEquals(1, node.degree(Neo4jDirection.INCOMING,null));
-                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.relationships(Neo4jDirection.INCOMING).iterator().next().type());
+                    assertEquals(0, node.degree(Neo4jDirection.OUTGOING, null));
+                    assertEquals(1, node.degree(Neo4jDirection.INCOMING, null));
+                    assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.relationships(Neo4jDirection.INCOMING).iterator().next().type());
                     counter.incrementAndGet();
                 });
                 assertEquals(1, counter.getAndSet(0));
 
                 assertEquals(1, IteratorUtils.count(a.getBaseVertex().getKeys()));
                 assertTrue(a.getBaseVertex().hasProperty("name"));
-                assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_TOKEN, a.getBaseVertex().getProperty("name"));
+                assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_TOKEN, a.getBaseVertex().getProperty("name"));
                 assertEquals(2, IteratorUtils.count(b.getBaseVertex().getKeys()));
                 assertEquals("stephen", b.getBaseVertex().getProperty("name"));
                 assertEquals("virginia", b.getBaseVertex().getProperty("location"));
             });
 
-            a.property(VertexProperty.Cardinality.list,"name", "marko", "acl", "private");
-            a.property(VertexProperty.Cardinality.list,"name", "okram", "acl", "public");
+            a.property(VertexProperty.Cardinality.list, "name", "marko", "acl", "private");
+            a.property(VertexProperty.Cardinality.list, "name", "okram", "acl", "public");
             graph.tx().commit();  // TODO tx.commit() THIS IS REQUIRED: ?! Why does Neo4j not delete vertices correctly?
             a.property(VertexProperty.Cardinality.single, "name", "the marko", "acl", "private");
             tryCommit(graph, g -> {
@@ -639,16 +642,16 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                 // assertEquals(1, b.properties("location").count().next().intValue());
                 // assertEquals(0, g.E().count().next().intValue());
 
-                assertEquals(3l, graph.execute("MATCH n RETURN COUNT(n)",null).next().get("COUNT(n)"));
-                assertEquals(1l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)",null).next().get("COUNT(r)"));
-                assertEquals(1l, graph.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)",null).next().get("COUNT(r)"));
+                assertEquals(3l, graph.execute("MATCH n RETURN COUNT(n)", null).next().get("COUNT(n)"));
+                assertEquals(1l, graph.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)", null).next().get("COUNT(r)"));
+                assertEquals(1l, graph.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)", null).next().get("COUNT(r)"));
                 final AtomicInteger counter = new AtomicInteger(0);
                 a.getBaseVertex().relationships(Neo4jDirection.OUTGOING).forEach(relationship -> {
-                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.type());
+                    assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.type());
                     counter.incrementAndGet();
                 });
                 assertEquals(1, counter.getAndSet(0));
-                graph.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)",null).forEachRemaining(results -> {
+                graph.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)", null).forEachRemaining(results -> {
                     assertEquals(VertexProperty.DEFAULT_LABEL, ((List<String>) results.get("labels(m)")).get(0));
                     counter.incrementAndGet();
                 });
@@ -658,16 +661,16 @@ public class Neo4jGraphTest extends BaseNeo4jGraphTest {
                     assertEquals("name", node.getProperty(T.key.getAccessor()));
                     assertEquals("the marko", node.getProperty(T.value.getAccessor()));
                     assertEquals("private", node.getProperty("acl"));
-                    assertEquals(0, node.degree(Neo4jDirection.OUTGOING,null));
-                    assertEquals(1, node.degree(Neo4jDirection.INCOMING,null));
-                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.relationships(Neo4jDirection.INCOMING).iterator().next().type());
+                    assertEquals(0, node.degree(Neo4jDirection.OUTGOING, null));
+                    assertEquals(1, node.degree(Neo4jDirection.INCOMING, null));
+                    assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.relationships(Neo4jDirection.INCOMING).iterator().next().type());
                     counter.incrementAndGet();
                 });
                 assertEquals(1, counter.getAndSet(0));
 
                 assertEquals(1, IteratorUtils.count(a.getBaseVertex().getKeys()));
                 assertTrue(a.getBaseVertex().hasProperty("name"));
-                assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_TOKEN, a.getBaseVertex().getProperty("name"));
+                assertEquals(FullNeo4jVertexProperty.VERTEX_PROPERTY_TOKEN, a.getBaseVertex().getProperty("name"));
                 assertEquals(2, IteratorUtils.count(b.getBaseVertex().getKeys()));
                 assertEquals("stephen", b.getBaseVertex().getProperty("name"));
                 assertEquals("virginia", b.getBaseVertex().getProperty("location"));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/NoMetaMultiPropertyNeo4jGraphProvider.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/NoMetaMultiPropertyNeo4jGraphProvider.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/NoMetaMultiPropertyNeo4jGraphProvider.java
deleted file mode 100644
index 4163463..0000000
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/NoMetaMultiPropertyNeo4jGraphProvider.java
+++ /dev/null
@@ -1,43 +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.tinkerpop.gremlin.neo4j;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.TestHelper;
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class NoMetaMultiPropertyNeo4jGraphProvider extends AbstractNeo4jGraphProvider {
-    @Override
-    public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData graphData) {
-        return new HashMap<String, Object>() {{
-            put("gremlin.graph", Neo4jGraph.class.getName());
-            put(Neo4jGraph.CONFIG_DIRECTORY, getWorkingDirectory() + File.separator + TestHelper.cleanPathSegment(graphName) + File.separator + TestHelper.cleanPathSegment(testMethodName));
-            put(Neo4jGraph.CONFIG_META_PROPERTIES, false);
-            put(Neo4jGraph.CONFIG_MULTI_PROPERTIES, false);
-            put(Neo4jGraph.CONFIG_CHECK_ELEMENTS_IN_TRANSACTION, true);
-        }};
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/SimpleNeo4jGraphProvider.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/SimpleNeo4jGraphProvider.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/SimpleNeo4jGraphProvider.java
new file mode 100644
index 0000000..51f75a7
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/SimpleNeo4jGraphProvider.java
@@ -0,0 +1,48 @@
+/*
+ *
+ *  * 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.tinkerpop.gremlin.neo4j;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class SimpleNeo4jGraphProvider extends AbstractNeo4jGraphProvider {
+    @Override
+    public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData graphData) {
+        return new HashMap<String, Object>() {{
+            put(Graph.GRAPH, Neo4jGraph.class.getName());
+            String directory = getWorkingDirectory() + File.separator + TestHelper.cleanPathSegment(graphName) + File.separator + cleanParameters(TestHelper.cleanPathSegment(testMethodName));
+            put(Neo4jGraph.CONFIG_DIRECTORY, directory);
+            put(Neo4jGraph.CONFIG_META_PROPERTIES, false);
+            put(Neo4jGraph.CONFIG_MULTI_PROPERTIES, false);
+            put(Neo4jGraph.CONFIG_CHECK_ELEMENTS_IN_TRANSACTION, true);
+        }};
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/FullNeo4jGraphProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/FullNeo4jGraphProcessStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/FullNeo4jGraphProcessStandardTest.java
new file mode 100644
index 0000000..e9d4921
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/FullNeo4jGraphProcessStandardTest.java
@@ -0,0 +1,37 @@
+/*
+ * 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.tinkerpop.gremlin.neo4j.process;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.neo4j.FullNeo4jGraphProvider;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+import org.apache.tinkerpop.gremlin.neo4j.structure.full.FullNeo4jGraph;
+import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
+import org.junit.runner.RunWith;
+
+
+/**
+ * Executes the Standard Gremlin Structure Test Suite using Neo4j.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@RunWith(ProcessStandardSuite.class)
+@GraphProviderClass(provider = FullNeo4jGraphProvider.class, graph = FullNeo4jGraph.class)
+public class FullNeo4jGraphProcessStandardTest {
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/Neo4jGraphProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/Neo4jGraphProcessStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/Neo4jGraphProcessStandardTest.java
deleted file mode 100644
index 4c8a011..0000000
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/Neo4jGraphProcessStandardTest.java
+++ /dev/null
@@ -1,36 +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.tinkerpop.gremlin.neo4j.process;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.neo4j.DefaultNeo4jGraphProvider;
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
-import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
-import org.junit.runner.RunWith;
-
-
-/**
- * Executes the Standard Gremlin Structure Test Suite using Neo4j.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-@RunWith(ProcessStandardSuite.class)
-@GraphProviderClass(provider = DefaultNeo4jGraphProvider.class, graph = Neo4jGraph.class)
-public class Neo4jGraphProcessStandardTest {
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/SimpleNeo4jGraphProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/SimpleNeo4jGraphProcessStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/SimpleNeo4jGraphProcessStandardTest.java
new file mode 100644
index 0000000..724a457
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/SimpleNeo4jGraphProcessStandardTest.java
@@ -0,0 +1,36 @@
+/*
+ *
+ *  * 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.tinkerpop.gremlin.neo4j.process;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.neo4j.SimpleNeo4jGraphProvider;
+import org.apache.tinkerpop.gremlin.neo4j.structure.simple.SimpleNeo4jGraph;
+import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(ProcessStandardSuite.class)
+@GraphProviderClass(provider = SimpleNeo4jGraphProvider.class, graph = SimpleNeo4jGraph.class)
+public class SimpleNeo4jGraphProcessStandardTest {
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/FullNeo4jGraphGroovyProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/FullNeo4jGraphGroovyProcessStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/FullNeo4jGraphGroovyProcessStandardTest.java
new file mode 100644
index 0000000..df17960
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/FullNeo4jGraphGroovyProcessStandardTest.java
@@ -0,0 +1,33 @@
+/*
+ * 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.tinkerpop.gremlin.neo4j.process.groovy;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.neo4j.FullNeo4jGraphProvider;
+import org.apache.tinkerpop.gremlin.neo4j.structure.full.FullNeo4jGraph;
+import org.apache.tinkerpop.gremlin.process.GroovyProcessStandardSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(GroovyProcessStandardSuite.class)
+@GraphProviderClass(provider = FullNeo4jGraphProvider.class, graph = FullNeo4jGraph.class)
+public class FullNeo4jGraphGroovyProcessStandardTest {
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/Neo4jGraphGroovyProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/Neo4jGraphGroovyProcessStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/Neo4jGraphGroovyProcessStandardTest.java
deleted file mode 100644
index db63d38..0000000
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/Neo4jGraphGroovyProcessStandardTest.java
+++ /dev/null
@@ -1,33 +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.tinkerpop.gremlin.neo4j.process.groovy;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.neo4j.DefaultNeo4jGraphProvider;
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
-import org.apache.tinkerpop.gremlin.process.GroovyProcessStandardSuite;
-import org.junit.runner.RunWith;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(GroovyProcessStandardSuite.class)
-@GraphProviderClass(provider = DefaultNeo4jGraphProvider.class, graph = Neo4jGraph.class)
-public class Neo4jGraphGroovyProcessStandardTest {
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/SimpleNeo4jGraphGroovyProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/SimpleNeo4jGraphGroovyProcessStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/SimpleNeo4jGraphGroovyProcessStandardTest.java
new file mode 100644
index 0000000..7e81bc8
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/groovy/SimpleNeo4jGraphGroovyProcessStandardTest.java
@@ -0,0 +1,36 @@
+/*
+ *
+ *  * 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.tinkerpop.gremlin.neo4j.process.groovy;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.neo4j.SimpleNeo4jGraphProvider;
+import org.apache.tinkerpop.gremlin.neo4j.structure.simple.SimpleNeo4jGraph;
+import org.apache.tinkerpop.gremlin.process.GroovyProcessStandardSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(GroovyProcessStandardSuite.class)
+@GraphProviderClass(provider = SimpleNeo4jGraphProvider.class, graph = SimpleNeo4jGraph.class)
+public class SimpleNeo4jGraphGroovyProcessStandardTest {
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/FullNeo4jGraphStructureStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/FullNeo4jGraphStructureStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/FullNeo4jGraphStructureStandardTest.java
new file mode 100644
index 0000000..4bde085
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/FullNeo4jGraphStructureStandardTest.java
@@ -0,0 +1,36 @@
+/*
+ * 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.tinkerpop.gremlin.neo4j.structure;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.neo4j.FullNeo4jGraphProvider;
+import org.apache.tinkerpop.gremlin.neo4j.structure.full.FullNeo4jGraph;
+import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
+import org.junit.runner.RunWith;
+
+
+/**
+ * Executes the Standard Gremlin Structure Test Suite using Neo4j.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@RunWith(StructureStandardSuite.class)
+@GraphProviderClass(provider = FullNeo4jGraphProvider.class, graph = FullNeo4jGraph.class)
+public class FullNeo4jGraphStructureStandardTest {
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraphStructureStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraphStructureStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraphStructureStandardTest.java
deleted file mode 100644
index fca281e..0000000
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraphStructureStandardTest.java
+++ /dev/null
@@ -1,35 +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.tinkerpop.gremlin.neo4j.structure;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.neo4j.DefaultNeo4jGraphProvider;
-import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
-import org.junit.runner.RunWith;
-
-
-/**
- * Executes the Standard Gremlin Structure Test Suite using Neo4j.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-@RunWith(StructureStandardSuite.class)
-@GraphProviderClass(provider = DefaultNeo4jGraphProvider.class, graph = Neo4jGraph.class)
-public class Neo4jGraphStructureStandardTest {
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NoMetaMultiNeo4jGraphStructureStandardIntegrateTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NoMetaMultiNeo4jGraphStructureStandardIntegrateTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NoMetaMultiNeo4jGraphStructureStandardIntegrateTest.java
deleted file mode 100644
index 6925d95..0000000
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NoMetaMultiNeo4jGraphStructureStandardIntegrateTest.java
+++ /dev/null
@@ -1,35 +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.tinkerpop.gremlin.neo4j.structure;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.neo4j.NoMetaMultiPropertyNeo4jGraphProvider;
-import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
-import org.junit.runner.RunWith;
-
-
-/**
- * Executes the Standard Gremlin Structure Test Suite using Neo4j.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-@RunWith(StructureStandardSuite.class)
-@GraphProviderClass(provider = NoMetaMultiPropertyNeo4jGraphProvider.class, graph = Neo4jGraph.class)
-public class NoMetaMultiNeo4jGraphStructureStandardIntegrateTest {
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/18793698/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/SimpleNeo4jGraphStructureStandardTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/SimpleNeo4jGraphStructureStandardTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/SimpleNeo4jGraphStructureStandardTest.java
new file mode 100644
index 0000000..aa43e06
--- /dev/null
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/SimpleNeo4jGraphStructureStandardTest.java
@@ -0,0 +1,36 @@
+/*
+ *
+ *  * 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.tinkerpop.gremlin.neo4j.structure;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.neo4j.SimpleNeo4jGraphProvider;
+import org.apache.tinkerpop.gremlin.neo4j.structure.simple.SimpleNeo4jGraph;
+import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(StructureStandardSuite.class)
+@GraphProviderClass(provider = SimpleNeo4jGraphProvider.class, graph = SimpleNeo4jGraph.class)
+public class SimpleNeo4jGraphStructureStandardTest {
+}