You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/03/27 17:09:30 UTC

[01/22] incubator-tinkerpop git commit: Added support to travers Elements without reloading it with its id

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/variables 210f8cad7 -> dc0bc59d5


Added support to travers Elements without reloading it with its id


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/da30a525
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/da30a525
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/da30a525

Branch: refs/heads/variables
Commit: da30a525ef626b8f13ffba0b7abada89b68eff6b
Parents: 679e7fb
Author: pieter <pi...@rorotika.com>
Authored: Fri Mar 27 12:19:50 2015 +0200
Committer: pieter <pi...@rorotika.com>
Committed: Fri Mar 27 12:19:50 2015 +0200

----------------------------------------------------------------------
 .../traversal/step/sideEffect/GraphStep.java    | 27 ++++++--
 .../tinkerpop/gremlin/structure/Graph.java      |  5 ++
 .../process/traversal/CoreTraversalTest.java    | 65 +++++++++++++++++---
 .../structure/ExceptionCoverageTest.java        |  3 +
 .../step/sideEffect/Neo4jGraphStep.java         |  4 +-
 .../step/sideEffect/TinkerGraphStep.java        |  5 +-
 6 files changed, 92 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/da30a525/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
index 1b6b514..bb78fbe 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
@@ -25,16 +25,20 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 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.Vertex;
 import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
 
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.List;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Pieter Martin
  */
 public class GraphStep<S extends Element> extends StartStep<S> implements EngineDependent {
 
@@ -46,13 +50,24 @@ public class GraphStep<S extends Element> extends StartStep<S> implements Engine
         super(traversal);
         this.returnClass = returnClass;
         this.ids = ids;
-        for (int i = 0; i < this.ids.length; i++) {
-            if (this.ids[i] instanceof Element)
-                this.ids[i] = ((Element) this.ids[i]).id();
+        //validate that all elements are either ids or elements. mixed is not supported.
+        boolean foundElements = false;
+        for (Object id : this.ids) {
+            boolean idIsElement = id instanceof Element;
+            if (foundElements && !idIsElement) {
+                throw Graph.Exceptions.idArgsMustBeEitherIdOrElement();
+            } else {
+                foundElements = foundElements || idIsElement;
+            }
+        }
+        if (foundElements) {
+            List<S> elementList = Arrays.asList(this.ids).stream().map(id->(S)id).collect(Collectors.toList());
+            this.iteratorSupplier = elementList::iterator;
+        } else {
+            this.iteratorSupplier = () -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ?
+                    this.getTraversal().getGraph().get().vertices(this.ids) :
+                    this.getTraversal().getGraph().get().edges(this.ids));
         }
-        this.iteratorSupplier = () -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ?
-                this.getTraversal().getGraph().get().vertices(this.ids) :
-                this.getTraversal().getGraph().get().edges(this.ids));
     }
 
     public String toString() {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/da30a525/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index 4899dea..735df05 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -59,6 +59,7 @@ import java.util.stream.Collectors;
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Pieter Martin
  */
 public interface Graph extends AutoCloseable {
 
@@ -1043,6 +1044,10 @@ public interface Graph extends AutoCloseable {
             return new IllegalArgumentException(String.format("Edge with id already exists: %s", id));
         }
 
+        public static IllegalArgumentException idArgsMustBeEitherIdOrElement() {
+            return new IllegalArgumentException("id arguments must be either ids or Elements");
+        }
+
         public static IllegalArgumentException argumentCanNotBeNull(final String argument) {
             return new IllegalArgumentException(String.format("The provided argument can not be null: %s", argument));
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/da30a525/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
index 16b1fc3..b208290 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
@@ -25,18 +25,12 @@ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
-import org.apache.tinkerpop.gremlin.structure.Contains;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Transaction;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.*;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
@@ -45,15 +39,68 @@ import static org.junit.Assert.*;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Pieter Martin
  */
 @ExceptionCoverage(exceptionClass = Traversal.Exceptions.class, methods = {
         "traversalIsLocked"
 })
+@ExceptionCoverage(exceptionClass = Graph.Exceptions.class, methods = {
+        "idArgsMustBeEitherIdOrElement"
+})
 @UseEngine(TraversalEngine.Type.STANDARD)
 public class CoreTraversalTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    public void shouldLoadVerticesViaIds() {
+        List<Vertex> vertices = g.V().toList();
+        List<Object> ids = vertices.stream().map(v->v.id()).collect(Collectors.toList());
+        List<Vertex> verticesReloaded = g.V(ids.toArray()).toList();
+        assertEquals(vertices.size(), verticesReloaded.size());
+        assertEquals(new HashSet<>(vertices), new HashSet<>(verticesReloaded));
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldLoadEdgesViaIds() {
+        List<Edge> edges = g.E().toList();
+        List<Object> ids = edges.stream().map(e->e.id()).collect(Collectors.toList());
+        List<Edge> edgesReloaded = g.E(ids.toArray()).toList();
+        assertEquals(edges.size(), edgesReloaded.size());
+        assertEquals(new HashSet<>(edges), new HashSet<>(edgesReloaded));
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldLoadVerticesViaVertices() {
+        List<Vertex> vertices = g.V().toList();
+        List<Vertex> verticesReloaded = g.V(vertices.toArray()).toList();
+        assertEquals(vertices.size(), verticesReloaded.size());
+        assertEquals(new HashSet<>(vertices), new HashSet<>(verticesReloaded));
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldLoadEdgesViaVertices() {
+        List<Edge> edges = g.E().toList();
+        List<Edge> edgesReloaded = g.E(edges.toArray()).toList();
+        assertEquals(edges.size(), edgesReloaded.size());
+        assertEquals(new HashSet<>(edges), new HashSet<>(edgesReloaded));
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldThrowExceptionWhenIdsMixed() {
+        List<Vertex> vertices = g.V().toList();
+        try {
+            g.V(vertices.get(0), vertices.get(1).id()).toList();
+        } catch (Exception ex) {
+            validateException(Graph.Exceptions.idArgsMustBeEitherIdOrElement(), ex);
+        }
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
     public void shouldHaveNextAndToCollectionWorkProperly() {
         final Traversal<Vertex, Vertex> traversal = g.V();
         assertTrue(traversal.next() instanceof Vertex);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/da30a525/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java
index e0cef89..5b524ad 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.structure;
 import org.apache.tinkerpop.gremlin.ExceptionCoverage;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest;
+import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
 import org.junit.Test;
 
 import java.lang.reflect.Method;
@@ -38,6 +39,7 @@ import static org.junit.Assert.assertTrue;
  * A set of tests that ensure that the {@link ExceptionCoverageTest} covers all defined TinkerPop exceptions.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Pieter Martin
  */
 public class ExceptionCoverageTest {
 
@@ -83,6 +85,7 @@ public class ExceptionCoverageTest {
         testClassesThatContainConsistencyChecks.add(TransactionTest.class);
         testClassesThatContainConsistencyChecks.addAll(Arrays.asList(VertexTest.class.getDeclaredClasses()));
         testClassesThatContainConsistencyChecks.add(VertexPropertyTest.class);
+        testClassesThatContainConsistencyChecks.add(CoreTraversalTest.class);
 
         // implemented exceptions are the classes that potentially contains exception consistency checks.
         final Set<String> implementedExceptions = testClassesThatContainConsistencyChecks.stream()

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/da30a525/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
index e7227ef..697dd83 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
@@ -65,7 +65,9 @@ public class Neo4jGraphStep<S extends Element> extends GraphStep<S> {
         super(originalGraphStep.getTraversal(), originalGraphStep.getReturnClass(), originalGraphStep.getIds());
         if (originalGraphStep.getLabel().isPresent())
             this.setLabel(originalGraphStep.getLabel().get());
-        this.setIteratorSupplier(() -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.vertices() : this.edges()));
+        //No need to do anything if the first element is an Element, all elements are guaranteed to be an element and will be return as is
+        if ((this.ids.length == 0 || !(this.ids[0] instanceof Element)))
+            this.setIteratorSupplier(() -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.vertices() : this.edges()));
     }
 
     private Iterator<? extends Edge> edges() {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/da30a525/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
index 4b3c389..a3cd192 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
@@ -38,6 +38,7 @@ import java.util.stream.Collectors;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Pieter Martin
  */
 public class TinkerGraphStep<S extends Element> extends GraphStep<S> implements HasContainerHolder {
 
@@ -47,7 +48,9 @@ public class TinkerGraphStep<S extends Element> extends GraphStep<S> implements
         super(originalGraphStep.getTraversal(), originalGraphStep.getReturnClass(), originalGraphStep.getIds());
         if (originalGraphStep.getLabel().isPresent())
             this.setLabel(originalGraphStep.getLabel().get());
-        this.setIteratorSupplier(() -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.vertices() : this.edges()));
+        //No need to do anything if the first element is an Element, all elements are guaranteed to be an element and will be return as is
+        if ((this.ids.length == 0 || !(this.ids[0] instanceof Element)))
+            this.setIteratorSupplier(() -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.vertices() : this.edges()));
     }
 
     private Iterator<? extends Edge> edges() {


[17/22] incubator-tinkerpop git commit: Add ReadOnlyStrategy to the default import customizer.

Posted by sp...@apache.org.
Add ReadOnlyStrategy to the default import customizer.

It is now accessible in the console/script engine.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/bdf654fc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/bdf654fc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/bdf654fc

Branch: refs/heads/variables
Commit: bdf654fcb14e3bf0998948baa7f8004d6a34c38b
Parents: 354afb6
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 10:56:47 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 10:56:47 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/bdf654fc/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
index a48dffb..32ba659 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
@@ -39,6 +39,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent
 import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
 import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Contains;
@@ -90,6 +91,7 @@ public abstract class AbstractImportCustomizerProvider implements ImportCustomiz
         imports.add(GraphTraversal.class.getPackage().getName() + DOT_STAR);
         imports.add(ComputerTraversalEngine.class.getPackage().getName() + DOT_STAR);
         imports.add(PartitionStrategy.class.getPackage().getName() + DOT_STAR);       // decoration strategies
+        imports.add(ReadOnlyStrategy.class.getPackage().getName() + DOT_STAR);        // verification strategies
         imports.add(Event.class.getPackage().getName() + DOT_STAR);                   // eventing
         staticImports.add(__.class.getCanonicalName() + DOT_STAR);
         staticImports.add(TraversalOptionParent.Pick.class.getCanonicalName() + DOT_STAR);


[19/22] incubator-tinkerpop git commit: Add docs for ReadOnlyStrategy.

Posted by sp...@apache.org.
Add docs for ReadOnlyStrategy.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/444b7988
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/444b7988
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/444b7988

Branch: refs/heads/variables
Commit: 444b7988fffc35361a492ab8fa842eab4a7d13ee
Parents: 10943e4
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 11:13:07 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 11:13:07 2015 -0400

----------------------------------------------------------------------
 docs/src/the-traversal.asciidoc | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/444b7988/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index 29084b2..a517f23 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -1656,6 +1656,11 @@ gB.V()
 
 By writing elements to particular partitions and then restricting read partitions, the developer is able to create multiple graphs within a single address space. Moreover, by supporting references between partitions, it is possible to merge those multiple graphs (i.e. join partitions).
 
+ReadOnlyStrategy
+================
+
+`ReadOnlyStrategy` is largely self-explanatory.  A `Traversal` that has this strategy applied will throw an `IllegalStateException` if the `Traversal` has any mutating steps within it.
+
 Domain Specific Languages
 -------------------------
 


[21/22] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master' into variables

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master' into variables


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/96368be6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/96368be6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/96368be6

Branch: refs/heads/variables
Commit: 96368be6f678a47e33d0aa6cb3b308bf4e6eb7e8
Parents: 210f8ca 08a916c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 11:50:51 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 11:50:51 2015 -0400

----------------------------------------------------------------------
 DISCLAIMER.txt                                  |   7 +
 README.asciidoc                                 |   1 -
 docs/src/acknowledgements.asciidoc              |   2 +
 docs/src/index.asciidoc                         |   2 -
 docs/src/the-traversal.asciidoc                 |  73 +++++-
 docs/src/tinkerpop-contributors.asciidoc        |  65 ------
 docs/static/images/arangodb-logo.png            | Bin 27024 -> 0 bytes
 docs/static/images/aurelius-logo.png            | Bin 43320 -> 0 bytes
 docs/static/images/bigdata-logo.png             | Bin 7813 -> 0 bytes
 docs/static/images/clark-and-parsia-logo.png    | Bin 8822 -> 0 bytes
 docs/static/images/foundationdb-logo.png        | Bin 33395 -> 0 bytes
 docs/static/images/jhapl-logo.png               | Bin 4652 -> 0 bytes
 docs/static/images/lambda-zen-logo.png          | Bin 24940 -> 0 bytes
 docs/static/images/neotechnology-logo.png       | Bin 11800 -> 0 bytes
 docs/static/images/objectivity-logo.png         | Bin 69054 -> 0 bytes
 docs/static/images/orientechnologies-logo.png   | Bin 2955 -> 0 bytes
 docs/static/images/partition-graph.png          | Bin 0 -> 57809 bytes
 .../images/sparsity-technologies-logo.png       | Bin 80863 -> 0 bytes
 .../process/traversal/step/filter/DropStep.java |  18 +-
 .../traversal/step/map/AddEdgeByPathStep.java   |  14 +-
 .../process/traversal/step/map/AddEdgeStep.java |  15 +-
 .../traversal/step/map/AddVertexStartStep.java  |  14 +-
 .../traversal/step/map/AddVertexStep.java       |  14 +-
 .../step/sideEffect/AddPropertyStep.java        |  23 +-
 .../traversal/step/sideEffect/GraphStep.java    |  27 ++-
 .../util/event/ConsoleGraphChangedListener.java |  89 --------
 .../util/event/ConsoleMutationListener.java     |  94 ++++++++
 .../step/util/event/EdgeAddedEvent.java         |  42 ----
 .../util/event/EdgePropertyChangedEvent.java    |  38 ----
 .../util/event/EdgePropertyRemovedEvent.java    |  40 ----
 .../step/util/event/EdgeRemovedEvent.java       |  45 ----
 .../util/event/ElementPropertyChangedEvent.java |  32 ---
 .../step/util/event/ElementPropertyEvent.java   |  51 -----
 .../traversal/step/util/event/Event.java        | 222 ++++++++++++++++++-
 .../step/util/event/EventCallback.java          |   5 +
 .../step/util/event/GraphChangedListener.java   | 111 ----------
 .../step/util/event/MutationListener.java       | 111 ++++++++++
 .../step/util/event/VertexAddedEvent.java       |  42 ----
 .../util/event/VertexPropertyChangedEvent.java  |  38 ----
 .../VertexPropertyPropertyChangedEvent.java     |  38 ----
 .../VertexPropertyPropertyRemovedEvent.java     |  38 ----
 .../util/event/VertexPropertyRemovedEvent.java  |  42 ----
 .../step/util/event/VertexRemovedEvent.java     |  43 ----
 .../strategy/decoration/EventStrategy.java      |  18 +-
 .../strategy/verification/ReadOnlyStrategy.java |   6 +-
 .../tinkerpop/gremlin/structure/Graph.java      |   5 +
 .../strategy/decoration/EventStrategyTest.java  |   6 +-
 .../verification/ReadOnlyStrategyTest.java      |   9 +-
 .../AbstractImportCustomizerProvider.java       |   6 +-
 .../process/traversal/CoreTraversalTest.java    |  65 +++++-
 .../decoration/EventStrategyProcessTest.java    |  60 ++---
 .../structure/ExceptionCoverageTest.java        |   3 +
 .../process/computer/spark/SparkExecutor.java   |   7 +-
 .../computer/spark/SparkGraphComputer.java      |   6 +-
 .../gremlin/hadoop/HadoopGraphProvider.java     |   1 -
 .../process/computer/giraph/zookeeper-3.3.3.jar | Bin 601677 -> 0 bytes
 .../step/sideEffect/Neo4jGraphStep.java         |   4 +-
 .../step/sideEffect/TinkerGraphStep.java        |   5 +-
 58 files changed, 709 insertions(+), 888 deletions(-)
----------------------------------------------------------------------



[03/22] incubator-tinkerpop git commit: Moved all Event implementations to the Event interface.

Posted by sp...@apache.org.
Moved all Event implementations to the Event interface.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/010fee5f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/010fee5f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/010fee5f

Branch: refs/heads/variables
Commit: 010fee5f4db4e82679e0fb20761624685f9ac51d
Parents: 4599dfb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 08:06:34 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 08:06:34 2015 -0400

----------------------------------------------------------------------
 .../process/traversal/step/filter/DropStep.java |  18 +-
 .../traversal/step/map/AddEdgeByPathStep.java   |  14 +-
 .../process/traversal/step/map/AddEdgeStep.java |  15 +-
 .../traversal/step/map/AddVertexStartStep.java  |  14 +-
 .../traversal/step/map/AddVertexStep.java       |  14 +-
 .../step/sideEffect/AddPropertyStep.java        |  23 +-
 .../step/util/event/EdgeAddedEvent.java         |  42 ----
 .../util/event/EdgePropertyChangedEvent.java    |  38 ----
 .../util/event/EdgePropertyRemovedEvent.java    |  40 ----
 .../step/util/event/EdgeRemovedEvent.java       |  44 ----
 .../util/event/ElementPropertyChangedEvent.java |  32 ---
 .../step/util/event/ElementPropertyEvent.java   |  51 -----
 .../traversal/step/util/event/Event.java        | 222 ++++++++++++++++++-
 .../step/util/event/VertexAddedEvent.java       |  42 ----
 .../util/event/VertexPropertyChangedEvent.java  |  38 ----
 .../VertexPropertyPropertyChangedEvent.java     |  38 ----
 .../VertexPropertyPropertyRemovedEvent.java     |  38 ----
 .../util/event/VertexPropertyRemovedEvent.java  |  42 ----
 .../step/util/event/VertexRemovedEvent.java     |  42 ----
 19 files changed, 265 insertions(+), 542 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
index 1da4f90..0a5b730 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
@@ -21,14 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgePropertyRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgeRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ElementPropertyEvent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyPropertyRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexRemovedEvent;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -60,11 +54,11 @@ public final class DropStep<S> extends FilterStep<S> implements Mutating<EventCa
             if (callbacks != null) {
                 final Event removeEvent;
                 if (s instanceof Vertex)
-                    removeEvent = new VertexRemovedEvent(DetachedFactory.detach((Vertex) s, true));
+                    removeEvent = new Event.VertexRemovedEvent(DetachedFactory.detach((Vertex) s, true));
                 else if (s instanceof Edge)
-                    removeEvent = new EdgeRemovedEvent(DetachedFactory.detach((Edge) s, true));
+                    removeEvent = new Event.EdgeRemovedEvent(DetachedFactory.detach((Edge) s, true));
                 else if (s instanceof VertexProperty)
-                    removeEvent = new VertexPropertyRemovedEvent(DetachedFactory.detach((VertexProperty) s, true));
+                    removeEvent = new Event.VertexPropertyRemovedEvent(DetachedFactory.detach((VertexProperty) s, true));
                 else
                     throw new IllegalStateException("The incoming object is not removable: " + s);
 
@@ -75,11 +69,11 @@ public final class DropStep<S> extends FilterStep<S> implements Mutating<EventCa
         } else if (s instanceof Property) {
             final Property toRemove = ((Property) s);
             if (callbacks != null) {
-                final ElementPropertyEvent removeEvent;
+                final Event.ElementPropertyEvent removeEvent;
                 if (toRemove.element() instanceof Edge)
-                    removeEvent = new EdgePropertyRemovedEvent((Edge) toRemove.element(), DetachedFactory.detach(toRemove));
+                    removeEvent = new Event.EdgePropertyRemovedEvent((Edge) toRemove.element(), DetachedFactory.detach(toRemove));
                 else if (toRemove.element() instanceof VertexProperty)
-                    removeEvent = new VertexPropertyPropertyRemovedEvent((VertexProperty) toRemove.element(), DetachedFactory.detach(toRemove));
+                    removeEvent = new Event.VertexPropertyPropertyRemovedEvent((VertexProperty) toRemove.element(), DetachedFactory.detach(toRemove));
                 else
                     throw new IllegalStateException("The incoming object is not removable: " + s);
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
index 1e8a86b..f92f2f3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
@@ -21,7 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgeAddedEvent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -40,14 +40,14 @@ import java.util.Set;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mutating<EventCallback<EdgeAddedEvent>> {
+public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mutating<EventCallback<Event.EdgeAddedEvent>> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
             TraverserRequirement.PATH,
             TraverserRequirement.OBJECT
     );
 
-    private List<EventCallback<EdgeAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.EdgeAddedEvent>> callbacks = null;
 
     // TODO: Weight key based on Traverser.getCount() ?
 
@@ -99,7 +99,7 @@ public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mu
             e = currentVertex.addEdge(this.edgeLabel, otherVertex, this.keyValues);
 
         if (callbacks != null) {
-            final EdgeAddedEvent vae = new EdgeAddedEvent(DetachedFactory.detach(e, true));
+            final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(e, true));
             callbacks.forEach(c -> c.accept(vae));
         }
 
@@ -112,13 +112,13 @@ public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mu
     }
 
     @Override
-    public void addCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(edgeAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(edgeAddedEventEventCallback);
     }
 
@@ -128,7 +128,7 @@ public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mu
     }
 
     @Override
-    public List<EventCallback<EdgeAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.EdgeAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
index 7ddcf0b..d3c72ac 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
@@ -21,9 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgeAddedEvent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexAddedEvent;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -42,7 +41,7 @@ import java.util.Set;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Mutating<EventCallback<EdgeAddedEvent>> {
+public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Mutating<EventCallback<Event.EdgeAddedEvent>> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
 
@@ -51,7 +50,7 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
     private final List<Vertex> vertices;
     private final Direction direction;
 
-    private List<EventCallback<EdgeAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.EdgeAddedEvent>> callbacks = null;
 
     public AddEdgeStep(final Traversal.Admin traversal, final Direction direction, final String edgeLabel, final Vertex vertex, final Object... keyValues) {
         this(traversal, direction, edgeLabel, IteratorUtils.of(vertex), keyValues);
@@ -89,7 +88,7 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
                     vertex.addEdge(this.edgeLabel, traverser.get(), this.keyValues);
 
             if (callbacks != null) {
-                final EdgeAddedEvent vae = new EdgeAddedEvent(DetachedFactory.detach(e, true));
+                final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(e, true));
                 callbacks.forEach(c -> c.accept(vae));
             }
 
@@ -103,13 +102,13 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
     }
 
     @Override
-    public void addCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(edgeAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(edgeAddedEventEventCallback);
     }
 
@@ -119,7 +118,7 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
     }
 
     @Override
-    public List<EventCallback<EdgeAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.EdgeAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
index 92dadb0..5a2fa0d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
@@ -23,8 +23,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexAddedEvent;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
@@ -36,11 +36,11 @@ import java.util.List;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> implements Mutating<EventCallback<VertexAddedEvent>> {
+public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> implements Mutating<EventCallback<Event.VertexAddedEvent>> {
 
     private final Object[] keyValues;
     private boolean first = true;
-    private List<EventCallback<VertexAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.VertexAddedEvent>> callbacks = null;
 
     public AddVertexStartStep(final Traversal.Admin traversal, final Object... keyValues) {
         super(traversal);
@@ -57,7 +57,7 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
             this.first = false;
             final Vertex v = this.getTraversal().getGraph().get().addVertex(this.keyValues);
             if (callbacks != null) {
-                final VertexAddedEvent vae = new VertexAddedEvent(DetachedFactory.detach(v, true));
+                final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(DetachedFactory.detach(v, true));
                 callbacks.forEach(c -> c.accept(vae));
             }
 
@@ -67,13 +67,13 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
     }
 
     @Override
-    public void addCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(vertexAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(vertexAddedEventEventCallback);
     }
 
@@ -83,7 +83,7 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
     }
 
     @Override
-    public List<EventCallback<VertexAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.VertexAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
index 8e05471..2e5d335 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
@@ -21,8 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexAddedEvent;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
@@ -35,12 +35,12 @@ import java.util.List;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutating<EventCallback<VertexAddedEvent>> {
+public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutating<EventCallback<Event.VertexAddedEvent>> {
 
     private final Object[] keyValues;
     private final transient Graph graph;
 
-    private List<EventCallback<VertexAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.VertexAddedEvent>> callbacks = null;
 
     public AddVertexStep(final Traversal.Admin traversal, final Object... keyValues) {
         super(traversal);
@@ -56,20 +56,20 @@ public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutati
     protected Vertex map(final Traverser.Admin<S> traverser) {
         final Vertex v = this.graph.addVertex(this.keyValues);
         if (callbacks != null) {
-            final VertexAddedEvent vae = new VertexAddedEvent(DetachedFactory.detach(v, true));
+            final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(DetachedFactory.detach(v, true));
             callbacks.forEach(c -> c.accept(vae));
         }
         return v;
     }
 
     @Override
-    public void addCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(vertexAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(vertexAddedEventEventCallback);
     }
 
@@ -79,7 +79,7 @@ public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutati
     }
 
     @Override
-    public List<EventCallback<VertexAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.VertexAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
index 2d98738..cbb5e27 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
@@ -21,11 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgePropertyChangedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ElementPropertyChangedEvent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyChangedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyPropertyChangedEvent;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
@@ -43,7 +40,7 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class AddPropertyStep<S extends Element> extends SideEffectStep<S> implements Mutating<EventCallback<ElementPropertyChangedEvent>> {
+public final class AddPropertyStep<S extends Element> extends SideEffectStep<S> implements Mutating<EventCallback<Event.ElementPropertyChangedEvent>> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
 
@@ -52,7 +49,7 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
     private final Object value;
     private final Object[] vertexPropertyKeyValues;
     private final boolean asVertex;
-    private List<EventCallback<ElementPropertyChangedEvent>> callbacks = null;
+    private List<EventCallback<Event.ElementPropertyChangedEvent>> callbacks = null;
 
     public AddPropertyStep(final Traversal.Admin traversal, final VertexProperty.Cardinality cardinality, final String key, final Object value, final Object... vertexPropertyKeyValues) {
         super(traversal);
@@ -74,13 +71,13 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
             final Property currentProperty = traverser.get().property(key);
             final boolean newProperty = asVertex ? currentProperty == VertexProperty.empty() : currentProperty == Property.empty();
 
-            ElementPropertyChangedEvent evt;
+            Event.ElementPropertyChangedEvent evt;
             if (currentElement instanceof Vertex)
-                evt = new VertexPropertyChangedEvent(DetachedFactory.detach((Vertex) currentElement, true), newProperty ? null : DetachedFactory.detach((VertexProperty) currentProperty, true), value, vertexPropertyKeyValues);
+                evt = new Event.VertexPropertyChangedEvent(DetachedFactory.detach((Vertex) currentElement, true), newProperty ? null : DetachedFactory.detach((VertexProperty) currentProperty, true), value, vertexPropertyKeyValues);
             else if (currentElement instanceof Edge)
-                evt = new EdgePropertyChangedEvent(DetachedFactory.detach((Edge) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
+                evt = new Event.EdgePropertyChangedEvent(DetachedFactory.detach((Edge) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
             else if (currentElement instanceof VertexProperty)
-                evt = new VertexPropertyPropertyChangedEvent(DetachedFactory.detach((VertexProperty) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
+                evt = new Event.VertexPropertyPropertyChangedEvent(DetachedFactory.detach((VertexProperty) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
             else
                 throw new IllegalStateException(String.format("The incoming object cannot be processed by change eventing in %s:  %s", AddPropertyStep.class.getName(), currentElement));
 
@@ -100,13 +97,13 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
 
 
     @Override
-    public void addCallback(final EventCallback<ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
+    public void addCallback(final EventCallback<Event.ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(elementPropertyChangedEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
+    public void removeCallback(final EventCallback<Event.ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
         if (callbacks != null) callbacks.remove(elementPropertyChangedEventCallback);
     }
 
@@ -116,7 +113,7 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
     }
 
     @Override
-    public List<EventCallback<ElementPropertyChangedEvent>> getCallbacks() {
+    public List<EventCallback<Event.ElementPropertyChangedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
deleted file mode 100644
index 3011806..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
+++ /dev/null
@@ -1,42 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class EdgeAddedEvent implements Event {
-
-    private final Edge edge;
-
-    public EdgeAddedEvent(final Edge edge) {
-        this.edge = edge;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().edgeAdded(edge);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
deleted file mode 100644
index 210f939..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
+++ /dev/null
@@ -1,38 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class EdgePropertyChangedEvent extends ElementPropertyChangedEvent {
-
-    public EdgePropertyChangedEvent(final Edge edge, final Property oldValue, final Object newValue) {
-        super(edge, oldValue, newValue);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.edgePropertyChanged((Edge) element, oldValue, newValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
deleted file mode 100644
index c82cf6b..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
+++ /dev/null
@@ -1,40 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-/**
- * Event fired when an edge property is removed.
- *
- * @author Stephen Mallette
- */
-public class EdgePropertyRemovedEvent extends ElementPropertyEvent {
-
-    public EdgePropertyRemovedEvent(final Edge element, final Property removed) {
-        super(element, removed, null);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.edgePropertyRemoved((Edge) element, oldValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
deleted file mode 100644
index 74c0b7e..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
+++ /dev/null
@@ -1,44 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-
-import java.util.Iterator;
-
-/**
- * Event fired when an edge is removed.
- *
- * @author Stephen Mallette
- */
-public class EdgeRemovedEvent implements Event {
-
-    private final Edge edge;
-
-    public EdgeRemovedEvent(final Edge edge) {
-        this.edge = edge;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().edgeRemoved(edge);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.java
deleted file mode 100644
index b56cbec..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.java
+++ /dev/null
@@ -1,32 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public abstract class ElementPropertyChangedEvent extends ElementPropertyEvent {
-
-    public ElementPropertyChangedEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        super(element, oldValue, newValue, vertexPropertyKeyValues);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
deleted file mode 100644
index 8bab91c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
+++ /dev/null
@@ -1,51 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public abstract class ElementPropertyEvent implements Event {
-
-    private final Element element;
-    private final Property oldValue;
-    private final Object newValue;
-    private final Object[] vertexPropertyKeyValues;
-
-    public ElementPropertyEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        this.element = element;
-        this.oldValue = oldValue;
-        this.newValue = newValue;
-        this.vertexPropertyKeyValues = vertexPropertyKeyValues;
-    }
-
-    abstract void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues);
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            fire(eventListeners.next(), element, oldValue, newValue, vertexPropertyKeyValues);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
index 0bbb053..26db28a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
@@ -18,13 +18,233 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+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 java.util.Iterator;
 
 /**
+ * A representation of some mutation action that occurs on a {@link Graph} for a {@link Traversal}.
+ *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public interface Event {
 
-    public void fireEvent(final Iterator<MutationListener> eventListeners);
+    /**
+     * An {@code Event} publishes its action to all the event {@link MutationListener} objects.
+     */
+    void fireEvent(final Iterator<MutationListener> eventListeners);
+
+    /**
+     * Represents an action where an {@link Edge} is added to the {@link Graph}.
+     */
+    class EdgeAddedEvent implements Event {
+
+        private final Edge edge;
+
+        public EdgeAddedEvent(final Edge edge) {
+            this.edge = edge;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().edgeAdded(edge);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where an {@link Edge} {@link Property} is added/modified.  If the {@link Property} is
+     * new then the {@code oldValue} will be {@code null}.
+     */
+    class EdgePropertyChangedEvent extends ElementPropertyChangedEvent {
+
+        public EdgePropertyChangedEvent(final Edge edge, final Property oldValue, final Object newValue) {
+            super(edge, oldValue, newValue);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.edgePropertyChanged((Edge) element, oldValue, newValue);
+        }
+    }
+
+    /**
+     * Represents an action where an {@link Edge} {@link Property} is removed.
+     */
+    class EdgePropertyRemovedEvent extends ElementPropertyEvent {
+
+        public EdgePropertyRemovedEvent(final Edge element, final Property removed) {
+            super(element, removed, null);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.edgePropertyRemoved((Edge) element, oldValue);
+        }
+    }
+
+    /**
+     * Represents an action where an {@link Edge} is removed from the {@link Graph}.
+     */
+    class EdgeRemovedEvent implements Event {
+
+        private final Edge edge;
+
+        public EdgeRemovedEvent(final Edge edge) {
+            this.edge = edge;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().edgeRemoved(edge);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Vertex} is removed from the {@link Graph}.
+     */
+    class VertexAddedEvent implements Event {
+
+        private final Vertex vertex;
+
+        public VertexAddedEvent(final Vertex vertex) {
+            this.vertex = vertex;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().vertexAdded(vertex);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where a {@link VertexProperty} is modified on a {@link Vertex}.
+     */
+    class VertexPropertyChangedEvent extends ElementPropertyChangedEvent {
+
+        public VertexPropertyChangedEvent(final Vertex element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            super(element, oldValue, newValue, vertexPropertyKeyValues);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.vertexPropertyChanged((Vertex) element, oldValue, newValue, vertexPropertyKeyValues);
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Property} is modified on a {@link VertexProperty}.
+     */
+    class VertexPropertyPropertyChangedEvent extends ElementPropertyChangedEvent {
+
+        public VertexPropertyPropertyChangedEvent(final VertexProperty element, final Property oldValue, final Object newValue) {
+            super(element, oldValue, newValue);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.vertexPropertyPropertyChanged((VertexProperty) element, oldValue, newValue);
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Property} is removed from a {@link VertexProperty}.
+     */
+    class VertexPropertyPropertyRemovedEvent extends ElementPropertyEvent {
+
+        public VertexPropertyPropertyRemovedEvent(final VertexProperty element, final Property removed) {
+            super(element, removed, null);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.vertexPropertyPropertyRemoved((VertexProperty) element, oldValue);
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Property} is removed from a {@link Vertex}.
+     */
+    class VertexPropertyRemovedEvent implements Event {
+
+        private final VertexProperty vertexProperty;
+
+        public VertexPropertyRemovedEvent(final VertexProperty vertexProperty) {
+            this.vertexProperty = vertexProperty;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().vertexPropertyRemoved(vertexProperty);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Vertex} is removed from the {@link Graph}.
+     */
+    class VertexRemovedEvent implements Event {
+
+        private final Vertex vertex;
+
+        public VertexRemovedEvent(final Vertex vertex) {
+            this.vertex = vertex;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().vertexRemoved(vertex);
+            }
+        }
+    }
+
+    /**
+     * A base class for {@link Property} mutation events.
+     */
+    abstract class ElementPropertyChangedEvent extends ElementPropertyEvent {
+
+        public ElementPropertyChangedEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            super(element, oldValue, newValue, vertexPropertyKeyValues);
+        }
+    }
+
+    /**
+     * A base class for {@link Property} mutation events.
+     */
+    abstract class ElementPropertyEvent implements Event {
+
+        private final Element element;
+        private final Property oldValue;
+        private final Object newValue;
+        private final Object[] vertexPropertyKeyValues;
+
+        public ElementPropertyEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            this.element = element;
+            this.oldValue = oldValue;
+            this.newValue = newValue;
+            this.vertexPropertyKeyValues = vertexPropertyKeyValues;
+        }
+
+        abstract void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues);
 
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                fire(eventListeners.next(), element, oldValue, newValue, vertexPropertyKeyValues);
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
deleted file mode 100644
index aa2dbdc..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
+++ /dev/null
@@ -1,42 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexAddedEvent implements Event {
-
-    private final Vertex vertex;
-
-    public VertexAddedEvent(final Vertex vertex) {
-        this.vertex = vertex;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().vertexAdded(vertex);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
deleted file mode 100644
index caf96c4..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
+++ /dev/null
@@ -1,38 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyChangedEvent extends ElementPropertyChangedEvent {
-
-    public VertexPropertyChangedEvent(final Vertex element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        super(element, oldValue, newValue, vertexPropertyKeyValues);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.vertexPropertyChanged((Vertex) element, oldValue, newValue, vertexPropertyKeyValues);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
deleted file mode 100644
index 633f01b..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
+++ /dev/null
@@ -1,38 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyPropertyChangedEvent extends ElementPropertyChangedEvent {
-
-    public VertexPropertyPropertyChangedEvent(final VertexProperty element, final Property oldValue, final Object newValue) {
-        super(element, oldValue, newValue);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.vertexPropertyPropertyChanged((VertexProperty) element, oldValue, newValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
deleted file mode 100644
index e7efec7..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
+++ /dev/null
@@ -1,38 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyPropertyRemovedEvent extends ElementPropertyEvent {
-
-    public VertexPropertyPropertyRemovedEvent(final VertexProperty element, final Property removed) {
-        super(element, removed, null);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.vertexPropertyPropertyRemoved((VertexProperty) element, oldValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
deleted file mode 100644
index 0282a1b..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
+++ /dev/null
@@ -1,42 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyRemovedEvent implements Event {
-
-    private final VertexProperty vertexProperty;
-
-    public VertexPropertyRemovedEvent(final VertexProperty vertexProperty) {
-        this.vertexProperty = vertexProperty;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().vertexPropertyRemoved(vertexProperty);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
deleted file mode 100644
index 067ab0c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
+++ /dev/null
@@ -1,42 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexRemovedEvent implements Event {
-
-    private final Vertex vertex;
-
-    public VertexRemovedEvent(final Vertex vertex) {
-        this.vertex = vertex;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().vertexRemoved(vertex);
-        }
-    }
-}


[16/22] incubator-tinkerpop git commit: vendor logos removed and removed tinkerpop-contributors.asciidoc as Apache TinkerPop no longer has a vendor-model.

Posted by sp...@apache.org.
vendor logos removed and removed tinkerpop-contributors.asciidoc as Apache TinkerPop no longer has a vendor-model.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/2e263974
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/2e263974
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/2e263974

Branch: refs/heads/variables
Commit: 2e26397483f426c48886a029436ccb82c754cd57
Parents: 354afb6
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Mar 27 08:35:09 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Mar 27 08:35:17 2015 -0600

----------------------------------------------------------------------
 docs/src/acknowledgements.asciidoc              |   2 +
 docs/src/index.asciidoc                         |   2 -
 docs/src/tinkerpop-contributors.asciidoc        |  65 -------------------
 docs/static/images/arangodb-logo.png            | Bin 27024 -> 0 bytes
 docs/static/images/aurelius-logo.png            | Bin 43320 -> 0 bytes
 docs/static/images/bigdata-logo.png             | Bin 7813 -> 0 bytes
 docs/static/images/clark-and-parsia-logo.png    | Bin 8822 -> 0 bytes
 docs/static/images/foundationdb-logo.png        | Bin 33395 -> 0 bytes
 docs/static/images/jhapl-logo.png               | Bin 4652 -> 0 bytes
 docs/static/images/lambda-zen-logo.png          | Bin 24940 -> 0 bytes
 docs/static/images/neotechnology-logo.png       | Bin 11800 -> 0 bytes
 docs/static/images/objectivity-logo.png         | Bin 69054 -> 0 bytes
 docs/static/images/orientechnologies-logo.png   | Bin 2955 -> 0 bytes
 .../images/sparsity-technologies-logo.png       | Bin 80863 -> 0 bytes
 14 files changed, 2 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/src/acknowledgements.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/acknowledgements.asciidoc b/docs/src/acknowledgements.asciidoc
index f0b9a6e..ec2f81a 100644
--- a/docs/src/acknowledgements.asciidoc
+++ b/docs/src/acknowledgements.asciidoc
@@ -22,4 +22,6 @@ image:yourkit-logo.png[width=200,float=left] YourKit supports the TinkerPop open
 
 image:egg-logo.png[width=200,float=left] link:http://incubator.apache.org/projects/tinkerpop.html[Apache TinkerPop] is an effort undergoing incubation at link:http://apache.org[The Apache Software Foundation] (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF. Apache TinkerPop is distributed under the Apache License v2.0.
 
+link:http://ketrinayim.com[Ketrina Yim] -- The TinkerPop's cartoonist and logo designer.
+
 ...in the beginning. 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/src/index.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/index.asciidoc b/docs/src/index.asciidoc
index af1248e..c824996 100644
--- a/docs/src/index.asciidoc
+++ b/docs/src/index.asciidoc
@@ -34,6 +34,4 @@ include::implementations.asciidoc[]
 
 include::conclusion.asciidoc[]
 
-include::tinkerpop-contributors.asciidoc[]
-
 include::acknowledgements.asciidoc[]

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/src/tinkerpop-contributors.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/tinkerpop-contributors.asciidoc b/docs/src/tinkerpop-contributors.asciidoc
deleted file mode 100644
index acb1d15..0000000
--- a/docs/src/tinkerpop-contributors.asciidoc
+++ /dev/null
@@ -1,65 +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.
-////
-[[tinkerpop-contributors]]
-TinkerPop Contributors
-======================
-
-TinkerPop is a group of graph developers and vendors committed to providing a vendor-agnostic graph computing abstraction in support of technology interoperability.
-
-Graph Developers
-----------------
-
-[width="100%",cols="5,10,2"]
-|=========================================================
-| link:http://markorodriguez.com[Marko A. Rodriguez] (2009) | TinkerPop co-founder and creator and developer of Gremlin.|
-| link:http://se.linkedin.com/in/neubauer[Peter Neubauer] (2009) | TinkerPop co-founder and Neo Technology representative.| link:http://neo4j.org[*Neo4j*]
-| link:http://fortytwo.net[Joshua Shinavier] (2009) | TinkerPop co-founder and full-stack developer.|
-| link:http://ketrinayim.com[Ketrina Yim] (2009) | TinkerPop cartoonist and logo designer.|
-| link:http://stephen.genoprime.com/[Stephen Mallette] (2011) | Primary developer on every aspect of TinkerPop.|
-| link:http://www.linkedin.com/in/pierredewilde[Pierre De Wilde] (2011) | Documentation support and evangelist.| 
-| link:http://github.com/pangloss[Derrick Wiebe] (2011) | Creator of Pacer and Gremlin traversal developer.|
-| link:http://about.me/luca.garulli[Luca Garulli] (2012) | Orient Technologies representative and Gremlin structure theorist.| link:http://www.orientechnologies.com/orientdb/[*OrientDB*]
-| link:http://www.matthiasb.com[Matthias Bröcheler] (2012) | Aurelius representative and full-stack theorist.| link:http://titan.thinkaurelius.com[*Titan*]
-| link:http://jglue.org[Bryn Cooke] (2013) | Gremlin domain specific language theorist.|
-| link:http://jamesthornton.com[James Thornton] (2013) | Creator of Bulbs and TinkerPop evangelist.|
-| link:http://lambdazen.blogspot.com[Sridhar Ramachandran] (2013) | Lambda Zen representative and Gremlin traversal theorist.| link:https://bitbucket.org/lambdazen/bitsy/wiki/Home[*Bitsy*]
-| link:http://www.linkedin.com/pub/nick-quinn/3/ab4/a56/[Nicholas Quinn] (2013) | Objectivity representative.| link:http://www.objectivity.com/infinitegraph[*InfiniteGraph*]
-| link:http://www.linkedin.com/pub/xavier-sanchez/84/5b8/804[Xavier Sanchez] (2013) | Sparsity Technologies representative.| link:http://www.sparsity-technologies.com/#sparksee[*Sparksee*]
-| link:http://twitter.com/dkuppitz[Daniel Kuppitz] (2014) | Gremlin traversal theorist and public technology support.|
-| link:http://www.michaelpollmeier.com[Michael Pollmeier] (2014) | Gremlin-Scala creator and traversal theorist.|
-| link:http://twitter.com/jbmusso[Jean-Baptiste Musso] (2014) | Gremlin-JavaScript creator.|
-| link:http://bobbriody.com[Bob Briody] (2014) | Gremlin dashboard creator.|
-| link:http://bigdata.com[Mike Personick] (2014) | Bigdata representative and OLAP theorist.| link:http://bigdata.com[*Bigdata*] 
-| link:http://twitter.com/mchacki[Michael Hackstein] (2014) | ArangoDB representative.| link:http://arangodb.org[*ArangoDB*]
-| link:http://github.com/MMcM[Michael McMahon] (2014) | FoundationDB representative.| link:http://foundationdb.com[*FoundationDB*]
-| link:http://www.linkedin.com/pub/ryan-webb/39/23a/ab8[Ryan Webb] (2014) | Johns Hopkins Applied Physics Laboratory representative.| link:https://github.com/JHUAPL/AccumuloGraph[*AccumuloGraph*]
-| link:http://www.linkedin.com/in/averyching[Avery Ching] (2014) | Apache Giraph representative and OLAP theorist.| link:http://giraph.apache.org[*Giraph*]
-| link:http://clarkparsia.com/about/profiles/kendall[Kendall Clark] (2014) | Clark & Parsia representative.| link:http://stardog.com[*Stardog*]
-| link:http://clarkparsia.com/about/profiles/mgrove[Michael Grove] (2014) | Gremlin developer.|
-|=========================================================
-
-
-Graph Vendors
--------------
-
-[width="100%"]
-|=========================================================
-| image:arangodb-logo.png[width=220,link="http://arangodb.com"]| image:aurelius-logo.png[width=220,link="http://thinkaurelius.com"]| image:bigdata-logo.png[width=220,link="http://bigdata.com"]
-| image:clark-and-parsia-logo.png[width=220,link="http://clarkparsia.com"]| image:foundationdb-logo.png[width=220,link="https://foundationdb.com"]| image:apache-giraph-logo.png[width=220,link="http://giraph.apache.org"]
-| image:jhapl-logo.png[width=220,link="http://www.jhuapl.edu"]| image:lambda-zen-logo.png[width=220,link="http://lambdazen.blogspot.com"]| image:neotechnology-logo.png[width=220,link="http://neotechnology.com"]
-| image:objectivity-logo.png[width=220,link="http://www.objectivity.com"]| image:orientechnologies-logo.png[width=220,link="http://www.orientechnologies.com"]| image:sparsity-technologies-logo.png[width=220,link="http://www.sparsity-technologies.com"]|
-|=========================================================

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/arangodb-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/arangodb-logo.png b/docs/static/images/arangodb-logo.png
deleted file mode 100644
index abd85eb..0000000
Binary files a/docs/static/images/arangodb-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/aurelius-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/aurelius-logo.png b/docs/static/images/aurelius-logo.png
deleted file mode 100644
index 7db3107..0000000
Binary files a/docs/static/images/aurelius-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/bigdata-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/bigdata-logo.png b/docs/static/images/bigdata-logo.png
deleted file mode 100644
index d4a3815..0000000
Binary files a/docs/static/images/bigdata-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/clark-and-parsia-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/clark-and-parsia-logo.png b/docs/static/images/clark-and-parsia-logo.png
deleted file mode 100644
index 8821fb6..0000000
Binary files a/docs/static/images/clark-and-parsia-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/foundationdb-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/foundationdb-logo.png b/docs/static/images/foundationdb-logo.png
deleted file mode 100644
index 0a73068..0000000
Binary files a/docs/static/images/foundationdb-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/jhapl-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/jhapl-logo.png b/docs/static/images/jhapl-logo.png
deleted file mode 100644
index db7774f..0000000
Binary files a/docs/static/images/jhapl-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/lambda-zen-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/lambda-zen-logo.png b/docs/static/images/lambda-zen-logo.png
deleted file mode 100644
index 1f848dd..0000000
Binary files a/docs/static/images/lambda-zen-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/neotechnology-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/neotechnology-logo.png b/docs/static/images/neotechnology-logo.png
deleted file mode 100644
index f26b1a0..0000000
Binary files a/docs/static/images/neotechnology-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/objectivity-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/objectivity-logo.png b/docs/static/images/objectivity-logo.png
deleted file mode 100644
index 1d10517..0000000
Binary files a/docs/static/images/objectivity-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/orientechnologies-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/orientechnologies-logo.png b/docs/static/images/orientechnologies-logo.png
deleted file mode 100644
index 9fed4c6..0000000
Binary files a/docs/static/images/orientechnologies-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2e263974/docs/static/images/sparsity-technologies-logo.png
----------------------------------------------------------------------
diff --git a/docs/static/images/sparsity-technologies-logo.png b/docs/static/images/sparsity-technologies-logo.png
deleted file mode 100644
index 40adb10..0000000
Binary files a/docs/static/images/sparsity-technologies-logo.png and /dev/null differ


[22/22] incubator-tinkerpop git commit: Add a test around variablized Traversals.

Posted by sp...@apache.org.
Add a test around variablized Traversals.

It is meant mostly for demonstration purposes and removal of scriptengine complexities.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/dc0bc59d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/dc0bc59d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/dc0bc59d

Branch: refs/heads/variables
Commit: dc0bc59d5ed00bb8b4fc68c1855cb335934bd1c8
Parents: 96368be
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 12:08:32 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 12:08:32 2015 -0400

----------------------------------------------------------------------
 .../tinkergraph/structure/TinkerGraphTest.java  | 38 ++++++++++++++++++++
 1 file changed, 38 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dc0bc59d/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 22d4edb..72e3762 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -759,4 +759,42 @@ public class TinkerGraphTest {
         final Traversal t = (Traversal) engine.eval(script, b);
         assertEquals(32, t.next());
     }
+
+    @Test
+    public void shouldTrackTraversalVariables() throws Exception {
+        final Graph graph = TinkerFactory.createModern();
+
+        final VariableGraphTraversalSource gVar = graph.traversal(VariableGraphTraversalSource.build().engine(StandardTraversalEngine.build()));
+        final TraversalVariable varX = new TraversalVariable("x");
+        final TraversalVariable varY = new TraversalVariable("y");
+        final TraversalVariable varZ = new TraversalVariable("z");
+        final TraversalVariable varAa = new TraversalVariable("aa");
+
+        final VariableGraphTraversal<Vertex,Object> t = gVar.V(varX).out().has("name", varY)
+                .values("age").is(varZ).range(varAa, 10);
+
+        final Map<Step, List<TraversalVariablePosition>> variables = t.getStepVariables();
+
+        assertEquals(varX, variables.get(t.asAdmin().getStartStep()).get(0).getVariable());
+        assertEquals(varY, variables.get(t.asAdmin().getSteps().get(2)).get(0).getVariable());
+        assertEquals(varZ, variables.get(t.asAdmin().getSteps().get(4)).get(0).getVariable());
+        assertEquals(varAa, variables.get(t.asAdmin().getSteps().get(5)).get(0).getVariable());
+
+        /*
+        final Map<String,Object> bindings = new HashMap<>();
+        bindings.put("x", 1);
+        bindings.put("y", "josh");
+        bindings.put("z", 32);
+        bindings.put("aa", 0);
+
+        // bind() would clone "t" with traversals applied, as possible, given statically defined steps (i.e. that
+        // don't have variables).  in this way the traversal is "prepared" as best it can be given the information
+        // that it has available.  TraversalVariables would be replaced with the values from the "bindings" Map
+        // thus making the traversal "final" or "static"
+        final Traversal t1 = t.bind(bindings);
+
+        // when next() is called on "t1", remaining strategies can be executed given that the bindings are final
+        assertEquals(32, t1.next());
+        */
+    }
 }


[07/22] incubator-tinkerpop git commit: Update docs for EventStrategy.

Posted by sp...@apache.org.
Update docs for EventStrategy.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/1b37172d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/1b37172d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/1b37172d

Branch: refs/heads/variables
Commit: 1b37172d501b58bf31a35bd643af7adfe3fcb82b
Parents: cada5f3
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 09:01:27 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 09:01:27 2015 -0400

----------------------------------------------------------------------
 docs/src/the-traversal.asciidoc | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1b37172d/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index d9aa4ea..1868d80 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -1582,7 +1582,6 @@ public class TinkerGraphStepStrategy extends AbstractTraversalStrategy {
 }
 ----
 
-
 The traversal is redefined by simply taking a chain of `has()`-steps after `g.V()` (`TinkerGraphStep`) and providing them to `TinkerGraphStep`. Then its up to TinkerGraphStep to determine if an appropriate index exists. In the code below, review the `vertices()` method and note how if an index exists, for a particular `HasContainer`, then that index is first queried before the remaining `HasContainer` filters are serially applied.
 
 [gremlin-groovy,modern]
@@ -1593,7 +1592,7 @@ t.iterate(); null
 t.toString()
 ----
 
-TinkerPop3 has a number of type-3 strategies distributed as part of its core library.  These strategies add generalized features to a traversal that are typically useful to end-users.  The following sections detail these strategies:
+TinkerPop has a number of type-3 strategies distributed as part of its core library.  These strategies add generalized features to a traversal that are typically useful to end-users.  The following sections detail these strategies:
 
 EventStrategy
 =============
@@ -1611,10 +1610,21 @@ The following events are raised to the `MutationListener`:
 * Vertex removed
 * Edge removed
 
-To start processing events from a `Traversal` first implement the `MutationListener` interface. An example of this implementation is the `ConsoleMutationListener` which writes output to the console for each event.
+To start processing events from a `Traversal` first implement the `MutationListener` interface. An example of this implementation is the `ConsoleMutationListener` which writes output to the console for each event.  The following console session displays the basic usage:
+
+[gremlin-groovy]
+----
+graph = TinkerFactory.createModern()
+l = new ConsoleMutationListener(graph)
+strategy = EventStrategy.build().addListener(l).create()
+g = GraphTraversalSource.build().with(strategy).create(graph)
+g.addV("name","stephen")
+g.E().drop()
+----
 
+The example above uses TinkerGraph which does not support transactions.  As mentioned previously, for these types of graph implementations events are raised as they occur within execution of a `Step`.  As such, the final line of Gremlin execution that drops all edges shows a bit of an inconsistent count, where the removed edge count is accounted for after the event is raised.
 
-CAUTION: `EventStrategy` is not meant for usage in tracking global mutations across separate processes.  In other words, an mutation in what JVM process is not raised as an event in a different JVM process.  In addition, events are not raised when mutations occur as part of side-effect steps (i.e. a lambda).
+CAUTION: `EventStrategy` is not meant for usage in tracking global mutations across separate processes.  In other words, an mutation in what JVM process is not raised as an event in a different JVM process.  In addition, events are not raised when mutations occur outside of the `Traversal` context.
 
 Domain Specific Languages
 -------------------------


[02/22] incubator-tinkerpop git commit: Renamed GraphChangedListener to MutationListener.

Posted by sp...@apache.org.
Renamed GraphChangedListener to MutationListener.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/4599dfb8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/4599dfb8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/4599dfb8

Branch: refs/heads/variables
Commit: 4599dfb8805abc3a5c0713aa28118bded47bad91
Parents: 11e15de
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 07:52:53 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 07:52:53 2015 -0400

----------------------------------------------------------------------
 .../util/event/ConsoleGraphChangedListener.java |  89 ---------------
 .../util/event/ConsoleMutationListener.java     |  89 +++++++++++++++
 .../step/util/event/EdgeAddedEvent.java         |   2 +-
 .../util/event/EdgePropertyChangedEvent.java    |   2 +-
 .../util/event/EdgePropertyRemovedEvent.java    |   2 +-
 .../step/util/event/EdgeRemovedEvent.java       |   3 +-
 .../step/util/event/ElementPropertyEvent.java   |   4 +-
 .../traversal/step/util/event/Event.java        |   2 +-
 .../step/util/event/GraphChangedListener.java   | 111 -------------------
 .../step/util/event/MutationListener.java       | 111 +++++++++++++++++++
 .../step/util/event/VertexAddedEvent.java       |   2 +-
 .../util/event/VertexPropertyChangedEvent.java  |   2 +-
 .../VertexPropertyPropertyChangedEvent.java     |   2 +-
 .../VertexPropertyPropertyRemovedEvent.java     |   2 +-
 .../util/event/VertexPropertyRemovedEvent.java  |   2 +-
 .../step/util/event/VertexRemovedEvent.java     |   3 +-
 .../strategy/decoration/EventStrategy.java      |  18 +--
 .../strategy/decoration/EventStrategyTest.java  |   6 +-
 .../decoration/EventStrategyProcessTest.java    |  60 +++++-----
 19 files changed, 252 insertions(+), 260 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleGraphChangedListener.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleGraphChangedListener.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleGraphChangedListener.java
deleted file mode 100644
index ab0888c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleGraphChangedListener.java
+++ /dev/null
@@ -1,89 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-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;
-
-/**
- * An example listener that writes a message to the console for each event that fires from the graph.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class ConsoleGraphChangedListener implements GraphChangedListener {
-
-    private final Graph graph;
-
-    public ConsoleGraphChangedListener(final Graph graph) {
-        this.graph = graph;
-    }
-
-    @Override
-    public void vertexAdded(final Vertex vertex) {
-        System.out.println("Vertex [" + vertex.toString() + "] added to graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void vertexRemoved(final Vertex vertex) {
-        System.out.println("Vertex [" + vertex.toString() + "] removed from graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void vertexPropertyRemoved(final VertexProperty vertexProperty) {
-        System.out.println("Vertex Property [" + vertexProperty.toString() + "] removed from graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void edgeAdded(final Edge edge) {
-        System.out.println("Edge [" + edge.toString() + "] added to graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void edgeRemoved(final Edge edge) {
-        System.out.println("Edge [" + edge.toString() + "] removed from graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void edgePropertyRemoved(final Edge element, final Property removedValue) {
-        System.out.println("Edge [" + element.toString() + "] property with value of [" + removedValue + "] removed in graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void edgePropertyChanged(final Edge element, final Property oldValue, final Object setValue) {
-        System.out.println("Edge [" + element.toString() + "] property change value from [" + oldValue + "] to [" + setValue + "] in graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void vertexPropertyPropertyChanged(final VertexProperty element, final Property oldValue, final Object setValue) {
-        System.out.println("VertexProperty [" + element.toString() + "] property change value from [" + oldValue + "] to [" + setValue + "] in graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void vertexPropertyPropertyRemoved(final VertexProperty element, final Property oldValue) {
-        System.out.println("VertexProperty [" + element.toString() + "] property with value of [" + oldValue + "] removed in graph [" + graph.toString() + "]");
-    }
-
-    @Override
-    public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
-        System.out.println("Vertex [" + element.toString() + "] property [" + oldValue + "] change to [" + setValue + "] in graph [" + graph.toString() + "]");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java
new file mode 100644
index 0000000..a454d46
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java
@@ -0,0 +1,89 @@
+/*
+ * 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.process.traversal.step.util.event;
+
+import org.apache.tinkerpop.gremlin.structure.Edge;
+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;
+
+/**
+ * An example listener that writes a message to the console for each event that fires from the graph.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class ConsoleMutationListener implements MutationListener {
+
+    private final Graph graph;
+
+    public ConsoleMutationListener(final Graph graph) {
+        this.graph = graph;
+    }
+
+    @Override
+    public void vertexAdded(final Vertex vertex) {
+        System.out.println("Vertex [" + vertex.toString() + "] added to graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void vertexRemoved(final Vertex vertex) {
+        System.out.println("Vertex [" + vertex.toString() + "] removed from graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void vertexPropertyRemoved(final VertexProperty vertexProperty) {
+        System.out.println("Vertex Property [" + vertexProperty.toString() + "] removed from graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void edgeAdded(final Edge edge) {
+        System.out.println("Edge [" + edge.toString() + "] added to graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void edgeRemoved(final Edge edge) {
+        System.out.println("Edge [" + edge.toString() + "] removed from graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void edgePropertyRemoved(final Edge element, final Property removedValue) {
+        System.out.println("Edge [" + element.toString() + "] property with value of [" + removedValue + "] removed in graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void edgePropertyChanged(final Edge element, final Property oldValue, final Object setValue) {
+        System.out.println("Edge [" + element.toString() + "] property change value from [" + oldValue + "] to [" + setValue + "] in graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void vertexPropertyPropertyChanged(final VertexProperty element, final Property oldValue, final Object setValue) {
+        System.out.println("VertexProperty [" + element.toString() + "] property change value from [" + oldValue + "] to [" + setValue + "] in graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void vertexPropertyPropertyRemoved(final VertexProperty element, final Property oldValue) {
+        System.out.println("VertexProperty [" + element.toString() + "] property with value of [" + oldValue + "] removed in graph [" + graph.toString() + "]");
+    }
+
+    @Override
+    public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
+        System.out.println("Vertex [" + element.toString() + "] property [" + oldValue + "] change to [" + setValue + "] in graph [" + graph.toString() + "]");
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
index aecc110..3011806 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
@@ -34,7 +34,7 @@ public class EdgeAddedEvent implements Event {
     }
 
     @Override
-    public void fireEvent(final Iterator<GraphChangedListener> eventListeners) {
+    public void fireEvent(final Iterator<MutationListener> eventListeners) {
         while (eventListeners.hasNext()) {
             eventListeners.next().edgeAdded(edge);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
index c5c36b6..210f939 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
@@ -32,7 +32,7 @@ public class EdgePropertyChangedEvent extends ElementPropertyChangedEvent {
     }
 
     @Override
-    void fire(final GraphChangedListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
         listener.edgePropertyChanged((Edge) element, oldValue, newValue);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
index e8769fc..c82cf6b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
@@ -34,7 +34,7 @@ public class EdgePropertyRemovedEvent extends ElementPropertyEvent {
     }
 
     @Override
-    void fire(final GraphChangedListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
         listener.edgePropertyRemoved((Edge) element, oldValue);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
index 6ba442a..74c0b7e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 
 import java.util.Iterator;
-import java.util.Map;
 
 /**
  * Event fired when an edge is removed.
@@ -37,7 +36,7 @@ public class EdgeRemovedEvent implements Event {
     }
 
     @Override
-    public void fireEvent(final Iterator<GraphChangedListener> eventListeners) {
+    public void fireEvent(final Iterator<MutationListener> eventListeners) {
         while (eventListeners.hasNext()) {
             eventListeners.next().edgeRemoved(edge);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
index de3cbb9..8bab91c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
@@ -40,10 +40,10 @@ public abstract class ElementPropertyEvent implements Event {
         this.vertexPropertyKeyValues = vertexPropertyKeyValues;
     }
 
-    abstract void fire(final GraphChangedListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues);
+    abstract void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues);
 
     @Override
-    public void fireEvent(final Iterator<GraphChangedListener> eventListeners) {
+    public void fireEvent(final Iterator<MutationListener> eventListeners) {
         while (eventListeners.hasNext()) {
             fire(eventListeners.next(), element, oldValue, newValue, vertexPropertyKeyValues);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
index 24c54c5..0bbb053 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
@@ -25,6 +25,6 @@ import java.util.Iterator;
  */
 public interface Event {
 
-    public void fireEvent(final Iterator<GraphChangedListener> eventListeners);
+    public void fireEvent(final Iterator<MutationListener> eventListeners);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/GraphChangedListener.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/GraphChangedListener.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/GraphChangedListener.java
deleted file mode 100644
index 2c51990..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/GraphChangedListener.java
+++ /dev/null
@@ -1,111 +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.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-
-/**
- * Interface for a listener to {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy}
- * change events.
- *
- * Implementations of this interface should be added to the list of listeners on the addListener method on
- * the {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy}.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public interface GraphChangedListener {
-
-    /**
-     * Raised when a new {@link Vertex} is added.
-     *
-     * @param vertex the {@link Vertex} that was added
-     */
-    public void vertexAdded(final Vertex vertex);
-
-    /**
-     * Raised after a {@link Vertex} was removed from the graph.
-     *
-     * @param vertex the {@link Vertex} that was removed
-     */
-    public void vertexRemoved(final Vertex vertex);
-
-    /**
-     * Raised after the property of a {@link Vertex} changed.
-     *
-     * @param element  the {@link Vertex} that changed
-     * @param setValue the new value of the property
-     */
-    public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues);
-
-    /**
-     * Raised after a {@link VertexProperty} was removed from the graph.
-     *
-     * @param vertexProperty the {@link VertexProperty} that was removed
-     */
-    public void vertexPropertyRemoved(final VertexProperty vertexProperty);
-
-    /**
-     * Raised after a new {@link Edge} is added.
-     *
-     * @param edge the {@link Edge} that was added
-     */
-    public void edgeAdded(final Edge edge);
-
-    /**
-     * Raised after an {@link Edge} was removed from the graph.
-     *
-     * @param edge  the {@link Edge} that was removed.
-     */
-    public void edgeRemoved(final Edge edge);
-
-    /**
-     * Raised after the property of a {@link Edge} changed.
-     *
-     * @param element  the {@link Edge} that changed
-     * @param setValue the new value of the property
-     */
-    public void edgePropertyChanged(final Edge element, final Property oldValue, final Object setValue);
-
-    /**
-     * Raised after an {@link Property} property was removed from an {@link Edge}.
-     *
-     * @param property  the {@link Property} that was removed
-     */
-    public void edgePropertyRemoved(final Edge element, final Property property);
-
-    /**
-     * Raised after the property of a {@link VertexProperty} changed.
-     *
-     * @param element  the {@link VertexProperty} that changed
-     * @param setValue the new value of the property
-     */
-    public void vertexPropertyPropertyChanged(final VertexProperty element, final Property oldValue, final Object setValue);
-
-    /**
-     * Raised after an {@link Property} property was removed from a {@link VertexProperty}.
-     *
-     * @param property  the {@link Property} that removed
-     */
-    public void vertexPropertyPropertyRemoved(final VertexProperty element, final Property property);
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/MutationListener.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/MutationListener.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/MutationListener.java
new file mode 100644
index 0000000..422074c
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/MutationListener.java
@@ -0,0 +1,111 @@
+/*
+ * 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.process.traversal.step.util.event;
+
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+
+/**
+ * Interface for a listener to {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy}
+ * change events.
+ *
+ * Implementations of this interface should be added to the list of listeners on the addListener method on
+ * the {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy}.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public interface MutationListener {
+
+    /**
+     * Raised when a new {@link Vertex} is added.
+     *
+     * @param vertex the {@link Vertex} that was added
+     */
+    public void vertexAdded(final Vertex vertex);
+
+    /**
+     * Raised after a {@link Vertex} was removed from the graph.
+     *
+     * @param vertex the {@link Vertex} that was removed
+     */
+    public void vertexRemoved(final Vertex vertex);
+
+    /**
+     * Raised after the property of a {@link Vertex} changed.
+     *
+     * @param element  the {@link Vertex} that changed
+     * @param setValue the new value of the property
+     */
+    public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues);
+
+    /**
+     * Raised after a {@link VertexProperty} was removed from the graph.
+     *
+     * @param vertexProperty the {@link VertexProperty} that was removed
+     */
+    public void vertexPropertyRemoved(final VertexProperty vertexProperty);
+
+    /**
+     * Raised after a new {@link Edge} is added.
+     *
+     * @param edge the {@link Edge} that was added
+     */
+    public void edgeAdded(final Edge edge);
+
+    /**
+     * Raised after an {@link Edge} was removed from the graph.
+     *
+     * @param edge  the {@link Edge} that was removed.
+     */
+    public void edgeRemoved(final Edge edge);
+
+    /**
+     * Raised after the property of a {@link Edge} changed.
+     *
+     * @param element  the {@link Edge} that changed
+     * @param setValue the new value of the property
+     */
+    public void edgePropertyChanged(final Edge element, final Property oldValue, final Object setValue);
+
+    /**
+     * Raised after an {@link Property} property was removed from an {@link Edge}.
+     *
+     * @param property  the {@link Property} that was removed
+     */
+    public void edgePropertyRemoved(final Edge element, final Property property);
+
+    /**
+     * Raised after the property of a {@link VertexProperty} changed.
+     *
+     * @param element  the {@link VertexProperty} that changed
+     * @param setValue the new value of the property
+     */
+    public void vertexPropertyPropertyChanged(final VertexProperty element, final Property oldValue, final Object setValue);
+
+    /**
+     * Raised after an {@link Property} property was removed from a {@link VertexProperty}.
+     *
+     * @param property  the {@link Property} that removed
+     */
+    public void vertexPropertyPropertyRemoved(final VertexProperty element, final Property property);
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
index 4e5917b..aa2dbdc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
@@ -34,7 +34,7 @@ public class VertexAddedEvent implements Event {
     }
 
     @Override
-    public void fireEvent(final Iterator<GraphChangedListener> eventListeners) {
+    public void fireEvent(final Iterator<MutationListener> eventListeners) {
         while (eventListeners.hasNext()) {
             eventListeners.next().vertexAdded(vertex);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
index 0084fec..caf96c4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
@@ -32,7 +32,7 @@ public class VertexPropertyChangedEvent extends ElementPropertyChangedEvent {
     }
 
     @Override
-    void fire(final GraphChangedListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
         listener.vertexPropertyChanged((Vertex) element, oldValue, newValue, vertexPropertyKeyValues);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
index 6b9b712..633f01b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
@@ -32,7 +32,7 @@ public class VertexPropertyPropertyChangedEvent extends ElementPropertyChangedEv
     }
 
     @Override
-    void fire(final GraphChangedListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
         listener.vertexPropertyPropertyChanged((VertexProperty) element, oldValue, newValue);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
index 31f7ae3..e7efec7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
@@ -32,7 +32,7 @@ public class VertexPropertyPropertyRemovedEvent extends ElementPropertyEvent {
     }
 
     @Override
-    void fire(final GraphChangedListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
         listener.vertexPropertyPropertyRemoved((VertexProperty) element, oldValue);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
index 8ffdef4..0282a1b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
@@ -34,7 +34,7 @@ public class VertexPropertyRemovedEvent implements Event {
     }
 
     @Override
-    public void fireEvent(final Iterator<GraphChangedListener> eventListeners) {
+    public void fireEvent(final Iterator<MutationListener> eventListeners) {
         while (eventListeners.hasNext()) {
             eventListeners.next().vertexPropertyRemoved(vertexProperty);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
index 2d691f8..067ab0c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.util.Iterator;
-import java.util.Map;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
@@ -35,7 +34,7 @@ public class VertexRemovedEvent implements Event {
     }
 
     @Override
-    public void fireEvent(final Iterator<GraphChangedListener> eventListeners) {
+    public void fireEvent(final Iterator<MutationListener> eventListeners) {
         while (eventListeners.hasNext()) {
             eventListeners.next().vertexRemoved(vertex);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategy.java
index 22b1345..1843190 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategy.java
@@ -20,15 +20,9 @@ package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeByPathStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AddPropertyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.GraphChangedListener;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.MutationListener;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -51,9 +45,9 @@ import java.util.List;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public class EventStrategy extends AbstractTraversalStrategy {
-    private final List<GraphChangedListener> listeners = new ArrayList<>();
+    private final List<MutationListener> listeners = new ArrayList<>();
 
-    private EventStrategy(final GraphChangedListener... listeners) {
+    private EventStrategy(final MutationListener... listeners) {
         this.listeners.addAll(Arrays.asList(listeners));
     }
 
@@ -86,17 +80,17 @@ public class EventStrategy extends AbstractTraversalStrategy {
     }
 
     public static class Builder {
-        private final List<GraphChangedListener> listeners = new ArrayList<>();
+        private final List<MutationListener> listeners = new ArrayList<>();
 
         Builder() {}
 
-        public Builder addListener(GraphChangedListener listener) {
+        public Builder addListener(MutationListener listener) {
             this.listeners.add(listener);
             return this;
         }
 
         public EventStrategy create() {
-            return new EventStrategy(this.listeners.toArray(new GraphChangedListener[this.listeners.size()]));
+            return new EventStrategy(this.listeners.toArray(new MutationListener[this.listeners.size()]));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
index ece5d2c..9ab7251 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
@@ -21,8 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ConsoleGraphChangedListener;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.GraphChangedListener;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ConsoleMutationListener;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.MutationListener;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 import org.junit.Test;
@@ -73,7 +73,7 @@ public class EventStrategyTest {
 
     @Test
     public void shouldEventOnMutatingSteps() {
-        final GraphChangedListener listener1 = new ConsoleGraphChangedListener(EmptyGraph.instance());
+        final MutationListener listener1 = new ConsoleMutationListener(EmptyGraph.instance());
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1).create();
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4599dfb8/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
index 62d7c97..2103582 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
@@ -24,7 +24,7 @@ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.GraphChangedListener;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.MutationListener;
 import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -50,8 +50,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldTriggerAddVertex() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -68,8 +68,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldTriggerAddVertexFromStart() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -86,8 +86,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
     public void shouldTriggerAddEdge() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -110,8 +110,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
     public void shouldTriggerAddEdgeByPath() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -134,8 +134,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldTriggerAddVertexPropertyAdded() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -156,8 +156,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldTriggerAddVertexPropertyChanged() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -180,8 +180,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
     public void shouldTriggerAddVertexPropertyPropertyChanged() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -203,8 +203,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
     public void shouldTriggerAddEdgePropertyAdded() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -231,8 +231,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
     public void shouldTriggerEdgePropertyChanged() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -259,8 +259,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldTriggerRemoveVertex() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -278,8 +278,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldTriggerRemoveEdge() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -298,8 +298,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldTriggerRemoveVertexProperty() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -317,8 +317,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
     public void shouldTriggerRemoveEdgeProperty() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -338,8 +338,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
     public void shouldTriggerAddVertexPropertyPropertyRemoved() {
-        final StubGraphChangedListener listener1 = new StubGraphChangedListener();
-        final StubGraphChangedListener listener2 = new StubGraphChangedListener();
+        final StubMutationListener listener1 = new StubMutationListener();
+        final StubMutationListener listener2 = new StubMutationListener();
         final EventStrategy eventStrategy = EventStrategy.build()
                 .addListener(listener1)
                 .addListener(listener2).create();
@@ -365,7 +365,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         return graphProvider.traversal(graph, strategy);
     }
 
-    public static class StubGraphChangedListener implements GraphChangedListener {
+    public static class StubMutationListener implements MutationListener {
         private final AtomicLong addEdgeEvent = new AtomicLong(0);
         private final AtomicLong addVertexEvent = new AtomicLong(0);
         private final AtomicLong vertexRemovedEvent = new AtomicLong(0);


[08/22] incubator-tinkerpop git commit: partitioning only needed right after data load from HDFS.

Posted by sp...@apache.org.
partitioning only needed right after data load from HDFS.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/011f242e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/011f242e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/011f242e

Branch: refs/heads/variables
Commit: 011f242ef2b2dd144a56c05f6245292ecfb426d4
Parents: 1b37172
Author: okram <ok...@apache.org>
Authored: Fri Mar 27 07:21:42 2015 -0600
Committer: okram <ok...@apache.org>
Committed: Fri Mar 27 07:21:53 2015 -0600

----------------------------------------------------------------------
 .../gremlin/hadoop/process/computer/spark/SparkExecutor.java  | 7 +++----
 .../hadoop/process/computer/spark/SparkGraphComputer.java     | 6 +++---
 2 files changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/011f242e/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
index e42efc3..1b2e640 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
@@ -50,10 +50,9 @@ public final class SparkExecutor {
     }
 
     // TODO: use SparkVertexPayload typing to be super clean
-    public static <M> JavaPairRDD<Object, SparkPayload<M>> executeStep(final JavaPairRDD<Object, SparkPayload<M>> graphRDD, final SparkMemory memory, final Configuration apacheConfiguration) {
-        JavaPairRDD<Object, SparkPayload<M>> current = graphRDD.reduceByKey((payloadA, payloadB) -> payloadA); // TODO: total hack cause of something weird with recursive RDDs
-        // execute vertex program
-        current = current.mapPartitionsToPair(partitionIterator -> {     // each partition(Spark)/worker(TP3) has a local copy of the vertex program to reduce object creation
+    public static <M> JavaPairRDD<Object, SparkPayload<M>> executeVertexProgramIteration(final JavaPairRDD<Object, SparkPayload<M>> graphRDD, final SparkMemory memory, final Configuration apacheConfiguration) {
+        // execute vertex program iteration
+        JavaPairRDD<Object, SparkPayload<M>> current = graphRDD.mapPartitionsToPair(partitionIterator -> {     // each partition(Spark)/worker(TP3) has a local copy of the vertex program to reduce object creation
             final VertexProgram<M> workerVertexProgram = VertexProgram.<VertexProgram<M>>createVertexProgram(apacheConfiguration);
             final Set<String> elementComputeKeys = workerVertexProgram.getElementComputeKeys();
             workerVertexProgram.workerIterationStart(memory);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/011f242e/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
index fc83bd6..2d9c49d 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
@@ -158,13 +158,13 @@ public final class SparkGraphComputer implements GraphComputer {
                     try (final JavaSparkContext sparkContext = new JavaSparkContext(sparkConfiguration)) {
                         // add the project jars to the cluster
                         SparkGraphComputer.loadJars(sparkContext, hadoopConfiguration);
-
                         // create a message-passing friendly rdd from the hadoop input format
                         JavaPairRDD<Object, SparkPayload<Object>> graphRDD = sparkContext.newAPIHadoopRDD(hadoopConfiguration,
                                 (Class<InputFormat<NullWritable, VertexWritable>>) hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputFormat.class),
                                 NullWritable.class,
                                 VertexWritable.class)
-                                .mapToPair(tuple -> new Tuple2<>(tuple._2().get().id(), new SparkVertexPayload<>(tuple._2().get())));
+                                .mapToPair(tuple -> new Tuple2<>(tuple._2().get().id(), (SparkPayload<Object>) new SparkVertexPayload<>(tuple._2().get())))
+                                .reduceByKey((a, b) -> a); // partition the graph across the cluster  // todo: cache?
 
                         ////////////////////////////////
                         // process the vertex program //
@@ -182,7 +182,7 @@ public final class SparkGraphComputer implements GraphComputer {
                             // execute the vertex program
                             while (true) {
                                 memory.setInTask(true);
-                                graphRDD = SparkExecutor.executeStep(graphRDD, memory, vertexProgramConfiguration);
+                                graphRDD = SparkExecutor.executeVertexProgramIteration(graphRDD, memory, vertexProgramConfiguration);
                                 memory.setInTask(false);
                                 if (this.vertexProgram.terminate(memory))
                                     break;


[13/22] incubator-tinkerpop git commit: Update docs for PartitionStrategy.

Posted by sp...@apache.org.
Update docs for PartitionStrategy.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/b18b700b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/b18b700b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/b18b700b

Branch: refs/heads/variables
Commit: b18b700b869e2fca202e43c039d67576e54f2d13
Parents: 391c656
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 10:16:03 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 10:16:03 2015 -0400

----------------------------------------------------------------------
 docs/src/the-traversal.asciidoc        |  30 ++++++++++++++++++++++++++++
 docs/static/images/partition-graph.png | Bin 0 -> 57809 bytes
 2 files changed, 30 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b18b700b/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index 1868d80..4b398c9 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -1626,6 +1626,36 @@ The example above uses TinkerGraph which does not support transactions.  As ment
 
 CAUTION: `EventStrategy` is not meant for usage in tracking global mutations across separate processes.  In other words, an mutation in what JVM process is not raised as an event in a different JVM process.  In addition, events are not raised when mutations occur outside of the `Traversal` context.
 
+PartitionStrategy
+=================
+
+image::partition-graph.png[width=650]
+
+`PartitionStrategy` partitions the vertices and edges of a graph into `String` named partitions (i.e. buckets, subgraphs, etc.). The idea behind `PartitionStrategy` is presented in the image above where each element is in a single partition (represented by its color). Partitions can be read from, written to, and linked/joined by edges that span one or two partitions (e.g. a tail vertex in one partition and a head vertex in another).
+
+There are three primary variables in `PartitionStrategy`:
+
+. Partition Key - The property key that denotes a String value representing a partition.
+. Write Partition - A `String` denoting what partition all future written elements will be in.
+. Read Partitions - A `Set<String>` of partitions that can be read from.
+
+The best way to understand `PartitionStrategy` is via example.
+
+[gremlin-groovy]
+----
+graph = TinkerFactory.createModern()
+strategyA = PartitionStrategy.build().partitionKey("_partition").writePartition("a").addReadPartition("a").create()
+strategyB = PartitionStrategy.build().partitionKey("_partition").writePartition("b").addReadPartition("b").create()
+gA = GraphTraversalSource.build().with(strategyA).create(graph)
+gA.addV() // this vertex has a property of {_partition:"a"}
+gB = GraphTraversalSource.build().with(strategyB).create(graph)
+gB.addV() // this vertex has a property of {_partition:"b"}
+gA.V()
+gB.V()
+----
+
+By writing elements to particular partitions and then restricting read partitions, the developer is able to create multiple graphs within a single address space. Moreover, by supporting references between partitions, it is possible to merge those multiple graphs (i.e. join partitions).
+
 Domain Specific Languages
 -------------------------
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b18b700b/docs/static/images/partition-graph.png
----------------------------------------------------------------------
diff --git a/docs/static/images/partition-graph.png b/docs/static/images/partition-graph.png
new file mode 100644
index 0000000..718ba4f
Binary files /dev/null and b/docs/static/images/partition-graph.png differ


[06/22] incubator-tinkerpop git commit: Add toString() for nicer output in console on the ConsoleMutationListener.

Posted by sp...@apache.org.
Add toString() for nicer output in console on the ConsoleMutationListener.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/cada5f38
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/cada5f38
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/cada5f38

Branch: refs/heads/variables
Commit: cada5f388c11c4837f2eca84abb9ba8a9fba401e
Parents: ea51641
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 08:42:29 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 08:42:29 2015 -0400

----------------------------------------------------------------------
 .../traversal/step/util/event/ConsoleMutationListener.java      | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/cada5f38/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java
index a454d46..a45b195 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ConsoleMutationListener.java
@@ -86,4 +86,9 @@ public class ConsoleMutationListener implements MutationListener {
     public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
         System.out.println("Vertex [" + element.toString() + "] property [" + oldValue + "] change to [" + setValue + "] in graph [" + graph.toString() + "]");
     }
+
+    @Override
+    public String toString() {
+        return MutationListener.class.getSimpleName() + "[" + graph + "]";
+    }
 }


[20/22] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master'


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/08a916c2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/08a916c2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/08a916c2

Branch: refs/heads/variables
Commit: 08a916c25449a5455035571c6b376783d66ddaea
Parents: 444b798 2e26397
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 11:13:51 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 11:13:51 2015 -0400

----------------------------------------------------------------------
 docs/src/acknowledgements.asciidoc              |   2 +
 docs/src/index.asciidoc                         |   2 -
 docs/src/tinkerpop-contributors.asciidoc        |  65 -------------------
 docs/static/images/arangodb-logo.png            | Bin 27024 -> 0 bytes
 docs/static/images/aurelius-logo.png            | Bin 43320 -> 0 bytes
 docs/static/images/bigdata-logo.png             | Bin 7813 -> 0 bytes
 docs/static/images/clark-and-parsia-logo.png    | Bin 8822 -> 0 bytes
 docs/static/images/foundationdb-logo.png        | Bin 33395 -> 0 bytes
 docs/static/images/jhapl-logo.png               | Bin 4652 -> 0 bytes
 docs/static/images/lambda-zen-logo.png          | Bin 24940 -> 0 bytes
 docs/static/images/neotechnology-logo.png       | Bin 11800 -> 0 bytes
 docs/static/images/objectivity-logo.png         | Bin 69054 -> 0 bytes
 docs/static/images/orientechnologies-logo.png   | Bin 2955 -> 0 bytes
 .../images/sparsity-technologies-logo.png       | Bin 80863 -> 0 bytes
 14 files changed, 2 insertions(+), 67 deletions(-)
----------------------------------------------------------------------



[12/22] incubator-tinkerpop git commit: removed zookeeper.jar in resources as it is no longer needed for testing with Giraph. Added DISCLAIMER.txt as advised by the Incubator release process.

Posted by sp...@apache.org.
removed zookeeper.jar in resources as it is no longer needed for testing with Giraph. Added DISCLAIMER.txt as advised by the Incubator release process.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/dff3f2c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/dff3f2c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/dff3f2c6

Branch: refs/heads/variables
Commit: dff3f2c6ba81c573c66d86b8e99d0a622f20a351
Parents: 391c656
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Mar 27 08:05:58 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Mar 27 08:06:09 2015 -0600

----------------------------------------------------------------------
 DISCLAIMER.txt                                    |   7 +++++++
 .../gremlin/hadoop/HadoopGraphProvider.java       |   1 -
 .../process/computer/giraph/zookeeper-3.3.3.jar   | Bin 601677 -> 0 bytes
 3 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dff3f2c6/DISCLAIMER.txt
----------------------------------------------------------------------
diff --git a/DISCLAIMER.txt b/DISCLAIMER.txt
new file mode 100644
index 0000000..390811b
--- /dev/null
+++ b/DISCLAIMER.txt
@@ -0,0 +1,7 @@
+Apache TinkerPop is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until
+a further review indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects. While incubation
+status is not necessarily a reflection of the completeness or stability of the code, it does
+indicate that the project has yet to be fully endorsed by the ASF. Apache TinkerPop is distributed
+under the Apache License v2.0.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dff3f2c6/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java
index b84d09e..b8ba425 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java
@@ -111,7 +111,6 @@ public class HadoopGraphProvider extends AbstractGraphProvider {
             put(GiraphConstants.MIN_WORKERS, 1);
             put(GiraphConstants.MAX_WORKERS, 1);
             put(GiraphConstants.SPLIT_MASTER_WORKER.getKey(), false);
-            put(GiraphConstants.ZOOKEEPER_JAR, GiraphGraphComputer.class.getResource("zookeeper-3.3.3.jar").getPath());
             put(GiraphConstants.ZOOKEEPER_SERVER_PORT.getKey(), 2181);  // you must have a local zookeeper running on this port
             put(GiraphConstants.NETTY_SERVER_USE_EXECUTION_HANDLER.getKey(), false); // this prevents so many integration tests running out of threads
             put(GiraphConstants.NETTY_CLIENT_USE_EXECUTION_HANDLER.getKey(), false); // this prevents so many integration tests running out of threads

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dff3f2c6/hadoop-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/zookeeper-3.3.3.jar
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/zookeeper-3.3.3.jar b/hadoop-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/zookeeper-3.3.3.jar
deleted file mode 100644
index d30bfd4..0000000
Binary files a/hadoop-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/zookeeper-3.3.3.jar and /dev/null differ


[18/22] incubator-tinkerpop git commit: ReadOnlyStrategy was not checking for all Mutating steps.

Posted by sp...@apache.org.
ReadOnlyStrategy was not checking for all Mutating steps.

Added tests in support of all Mutating steps.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/10943e42
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/10943e42
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/10943e42

Branch: refs/heads/variables
Commit: 10943e4206c861a58b5ff2795bdddaa459673d83
Parents: bdf654f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 11:03:04 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 11:03:04 2015 -0400

----------------------------------------------------------------------
 .../traversal/strategy/verification/ReadOnlyStrategy.java   | 6 ++++--
 .../strategy/verification/ReadOnlyStrategyTest.java         | 9 ++++++++-
 2 files changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/10943e42/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java
index 05acda1..0718953 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java
@@ -19,11 +19,13 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeByPathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 /**
+ * Detects steps marked with {@link Mutating} and throw an {@link IllegalStateException} if one is found.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class ReadOnlyStrategy extends AbstractTraversalStrategy {
@@ -35,7 +37,7 @@ public final class ReadOnlyStrategy extends AbstractTraversalStrategy {
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getSteps().stream().filter(step -> step instanceof AddEdgeByPathStep).findAny().isPresent())
+        if (traversal.getSteps().stream().anyMatch(step -> step instanceof Mutating))
             throw new IllegalStateException("The provided traversal has a mutating step and thus is not read only");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/10943e42/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
index d66283c..5974e37 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
 import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -46,7 +47,13 @@ public class ReadOnlyStrategyTest {
                 {"addE(IN)", __.addE(Direction.IN, "test", "test")},
                 {"addE(IN,args)", __.addE(Direction.IN, "test", "test", "this", "that")},
                 {"addE(OUT)", __.addE(Direction.OUT, "test", "test")},
-                {"addE(OUT,args)", __.addE(Direction.OUT, "test", "test", "this", "that")}});
+                {"addE(OUT,args)", __.addE(Direction.OUT, "test", "test", "this", "that")},
+                {"outE().property(k,v)", __.outE().property("test", "test")},
+                {"out().properties(k).property(k,v)", __.out().properties("test").property("test", "that")},
+                {"out().property(k,v)", __.out().property("test", "test")},
+                {"out().property(Cardinality,k,v)", __.out().property(VertexProperty.Cardinality.list, "test", "test")},
+                {"addV(args)", __.addV("test", "test", "this", "that")},
+                {"addV()", __.addV()}});
     }
 
     @Parameterized.Parameter(value = 0)


[05/22] incubator-tinkerpop git commit: Add "Event" related classes to standard imports.

Posted by sp...@apache.org.
Add "Event" related classes to standard imports.

Event related classes are now available in the ScriptEngine and Console.  Unsure how useful they ultimately are in this context, but will at least  make experimentation possible in the console.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/ea51641f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/ea51641f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/ea51641f

Branch: refs/heads/variables
Commit: ea51641ff4da600f484c469742d0aff71e1526e8
Parents: f0c9774
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 08:37:04 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 08:37:04 2015 -0400

----------------------------------------------------------------------
 docs/src/the-traversal.asciidoc                 | 26 +++++++++++++++++++-
 .../AbstractImportCustomizerProvider.java       |  4 ++-
 2 files changed, 28 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ea51641f/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index 276172d..d9aa4ea 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -1491,10 +1491,11 @@ g.V().out().out().path().by('name').
 TraversalStrategy
 -----------------
 
-image:traversal-strategy.png[width=125,float=right] A `TraversalStrategy` can analyze a `Traversal` and mutate the traversal as it deems fit. This is useful in two situations:
+image:traversal-strategy.png[width=125,float=right] A `TraversalStrategy` can analyze a `Traversal` and mutate the traversal as it deems fit. This is useful in multiple situations:
 
  * There is a more efficient way to express the traversal at the TinkerPop3 level.
  * There is a more efficient way to express the traversal at the graph vendor level.
+ * There are generally useful features that can be automatically embedded into the traversal logic and tend to be applicable to end-users.
 
 A simple TraversalStrategy is the `IdentityRemovalStrategy` and it is a type-1 strategy defined as follows:
 
@@ -1592,6 +1593,29 @@ t.iterate(); null
 t.toString()
 ----
 
+TinkerPop3 has a number of type-3 strategies distributed as part of its core library.  These strategies add generalized features to a traversal that are typically useful to end-users.  The following sections detail these strategies:
+
+EventStrategy
+=============
+
+The purpose of the `EventStrategy` is to raise events to one or more `MutationListener` objects as changes to the underlying `Graph` occur within a `Traversal`. Such a strategy is useful for logging changes, triggering certain actions based on change, or any application that needs notification of some mutating operation during a `Traversal`.  Graphs that do not support transactions will generate events immediately upon mutation, while those graphs that support transactions will queue the mutations until that transaction is committed and will then raise the events.  If the transaction is rolled back, the event queue is reset.
+
+The following events are raised to the `MutationListener`:
+
+* New vertex
+* New edge
+* Vertex property changed
+* Edge property changed
+* Vertex property removed
+* Edge property removed
+* Vertex removed
+* Edge removed
+
+To start processing events from a `Traversal` first implement the `MutationListener` interface. An example of this implementation is the `ConsoleMutationListener` which writes output to the console for each event.
+
+
+CAUTION: `EventStrategy` is not meant for usage in tracking global mutations across separate processes.  In other words, an mutation in what JVM process is not raised as an event in a different JVM process.  In addition, events are not raised when mutations occur as part of side-effect steps (i.e. a lambda).
+
 Domain Specific Languages
 -------------------------
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ea51641f/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
index 6053cc0..a48dffb 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
@@ -37,6 +37,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
 import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
 import org.apache.tinkerpop.gremlin.structure.Compare;
@@ -88,7 +89,8 @@ public abstract class AbstractImportCustomizerProvider implements ImportCustomiz
         imports.add(GraphComputer.class.getPackage().getName() + DOT_STAR);
         imports.add(GraphTraversal.class.getPackage().getName() + DOT_STAR);
         imports.add(ComputerTraversalEngine.class.getPackage().getName() + DOT_STAR);
-        imports.add(PartitionStrategy.class.getPackage().getName() + DOT_STAR);
+        imports.add(PartitionStrategy.class.getPackage().getName() + DOT_STAR);       // decoration strategies
+        imports.add(Event.class.getPackage().getName() + DOT_STAR);                   // eventing
         staticImports.add(__.class.getCanonicalName() + DOT_STAR);
         staticImports.add(TraversalOptionParent.Pick.class.getCanonicalName() + DOT_STAR);
         staticImports.add(GraphTraversalSource.class.getCanonicalName() + DOT_STAR);


[04/22] incubator-tinkerpop git commit: Add javadoc to EventCallback.

Posted by sp...@apache.org.
Add javadoc to EventCallback.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/f0c97740
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/f0c97740
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/f0c97740

Branch: refs/heads/variables
Commit: f0c97740cf03f0086e1ffe4c94c83df859021e06
Parents: 010fee5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 08:11:26 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 08:11:26 2015 -0400

----------------------------------------------------------------------
 .../process/traversal/step/util/event/EventCallback.java        | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/f0c97740/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EventCallback.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EventCallback.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EventCallback.java
index 45c02ae..3675ead 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EventCallback.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EventCallback.java
@@ -18,9 +18,14 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+
 import java.util.function.Consumer;
 
 /**
+ * A {@link Consumer} function definition for consuming {@link Event} objects raised from {@link Step} objects at
+ * the time of execution.  It allows for actions to be triggered on each {@link Step} execution.
+ *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 @FunctionalInterface


[11/22] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master'


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/391c6568
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/391c6568
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/391c6568

Branch: refs/heads/variables
Commit: 391c65683fc3bf3148d91e8898a3a7aa69f71d18
Parents: 3b8cba0 40c8604
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 10:00:14 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 10:00:14 2015 -0400

----------------------------------------------------------------------
 .../traversal/step/sideEffect/GraphStep.java    | 27 ++++++--
 .../tinkerpop/gremlin/structure/Graph.java      |  5 ++
 .../process/traversal/CoreTraversalTest.java    | 65 +++++++++++++++++---
 .../structure/ExceptionCoverageTest.java        |  3 +
 .../process/computer/spark/SparkExecutor.java   |  7 +--
 .../computer/spark/SparkGraphComputer.java      |  6 +-
 .../step/sideEffect/Neo4jGraphStep.java         |  4 +-
 .../step/sideEffect/TinkerGraphStep.java        |  5 +-
 8 files changed, 98 insertions(+), 24 deletions(-)
----------------------------------------------------------------------



[09/22] incubator-tinkerpop git commit: Merge branch 'master' of https://github.com/pietermartin/incubator-tinkerpop

Posted by sp...@apache.org.
Merge branch 'master' of https://github.com/pietermartin/incubator-tinkerpop


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/40c86044
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/40c86044
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/40c86044

Branch: refs/heads/variables
Commit: 40c86044fd3ac55cbc07f92f72d91ca201cf3e8a
Parents: 011f242 da30a52
Author: okram <ok...@apache.org>
Authored: Fri Mar 27 07:21:59 2015 -0600
Committer: okram <ok...@apache.org>
Committed: Fri Mar 27 07:21:59 2015 -0600

----------------------------------------------------------------------
 .../traversal/step/sideEffect/GraphStep.java    | 27 ++++++--
 .../tinkerpop/gremlin/structure/Graph.java      |  5 ++
 .../process/traversal/CoreTraversalTest.java    | 65 +++++++++++++++++---
 .../structure/ExceptionCoverageTest.java        |  3 +
 .../step/sideEffect/Neo4jGraphStep.java         |  4 +-
 .../step/sideEffect/TinkerGraphStep.java        |  5 +-
 6 files changed, 92 insertions(+), 17 deletions(-)
----------------------------------------------------------------------



[14/22] incubator-tinkerpop git commit: Correct formatting to get comments to appear in docs for PartitionStrategy.

Posted by sp...@apache.org.
Correct formatting to get comments to appear in docs for PartitionStrategy.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/9e26f9a5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/9e26f9a5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/9e26f9a5

Branch: refs/heads/variables
Commit: 9e26f9a5e39321de8bd0cce452fa14aa26dd3a64
Parents: b18b700
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 10:22:57 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 10:22:57 2015 -0400

----------------------------------------------------------------------
 docs/src/the-traversal.asciidoc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9e26f9a5/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index 4b398c9..29084b2 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -1647,9 +1647,9 @@ graph = TinkerFactory.createModern()
 strategyA = PartitionStrategy.build().partitionKey("_partition").writePartition("a").addReadPartition("a").create()
 strategyB = PartitionStrategy.build().partitionKey("_partition").writePartition("b").addReadPartition("b").create()
 gA = GraphTraversalSource.build().with(strategyA).create(graph)
-gA.addV() // this vertex has a property of {_partition:"a"}
+gA.addV() //// this vertex has a property of {_partition:"a"}
 gB = GraphTraversalSource.build().with(strategyB).create(graph)
-gB.addV() // this vertex has a property of {_partition:"b"}
+gB.addV() //// this vertex has a property of {_partition:"b"}
 gA.V()
 gB.V()
 ----


[10/22] incubator-tinkerpop git commit: Modifications to issue conventions in README.

Posted by sp...@apache.org.
Modifications to issue conventions in README.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/3b8cba01
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/3b8cba01
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/3b8cba01

Branch: refs/heads/variables
Commit: 3b8cba01b9f9f1e1a9e6739e7f52a6e48ba448ae
Parents: 1b37172
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 09:59:36 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 09:59:36 2015 -0400

----------------------------------------------------------------------
 README.asciidoc | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3b8cba01/README.asciidoc
----------------------------------------------------------------------
diff --git a/README.asciidoc b/README.asciidoc
index 89d64c5..b98207e 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -98,7 +98,6 @@ TinkerPop3 uses Apache JIRA as its link:https://issues.apache.org/jira/browse/TI
 * An issue's "status" should be in one of two states: `open` or `closed`.
 ** An `open` issue is newly created, under consideration or otherwise in progress.
 ** A `closed` issue is completed for purposes of release (i.e. code, testing, and documentation complete).
-* When marking an issue as `closed`, its "resolution" field should always be set to `done`.  This single resolution simply means that the issue is complete, purposely does not convey the manner in which it was completed.  Consult the comments for information on the circumstances representing how the issue was resolved.  Taking this approach gives "resolution" only two status: `unresolved` and `done`.
 * An issue's "type" should be one of two options: `bug` or `improvement`.  A `bug` has a very specific meaning, referring to an error that prevents usage of TinkerPop AND does not have a reasonable workaround.  Given that definition, a `bug` should generally have very high priority for a fix.  Everything else is an `improvement` in the sense that any other work is an enhancement to the current codebase.
 * The "component" should be representative of the primary area of code that it applies to and all issues should have this property set.
 * The "priority" of an issue is represented by two states `critical` and `major`.  It should be assigned as follows:


[15/22] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master'


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/354afb67
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/354afb67
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/354afb67

Branch: refs/heads/variables
Commit: 354afb67f7bdebbad1eaede431d4dd043ad9dcee
Parents: 9e26f9a dff3f2c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 10:23:31 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 10:23:31 2015 -0400

----------------------------------------------------------------------
 DISCLAIMER.txt                                    |   7 +++++++
 .../gremlin/hadoop/HadoopGraphProvider.java       |   1 -
 .../process/computer/giraph/zookeeper-3.3.3.jar   | Bin 601677 -> 0 bytes
 3 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------