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 2018/06/15 12:18:01 UTC
[11/50] tinkerpop git commit: TINKERPOP-1831 Refactored EventStrategy
TINKERPOP-1831 Refactored EventStrategy
Removed deprecated method. Used VertexProperty.empty() and Property.empty() to represent the "old" value for new property events. Created a enum for configuring detachment on the EventStrategy builder.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7963fdfb
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7963fdfb
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7963fdfb
Branch: refs/heads/TINKERPOP-1878
Commit: 7963fdfb4407347a37ff35d40f5efdd1ba5f039f
Parents: ae2f304
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 7 09:10:47 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jun 7 09:10:47 2018 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 3 +
docs/src/upgrade/release-3.4.x.asciidoc | 22 +++
.../bulkloading/BulkLoaderVertexProgram.java | 6 -
.../step/sideEffect/AddPropertyStep.java | 6 +-
.../util/event/ConsoleMutationListener.java | 5 -
.../step/util/event/MutationListener.java | 11 +-
.../strategy/decoration/EventStrategy.java | 108 +++++-----
.../strategy/decoration/EventStrategyTest.java | 1 -
.../decoration/EventStrategyProcessTest.java | 197 ++++---------------
9 files changed, 130 insertions(+), 229 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index e886107..7317aeb 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -37,6 +37,9 @@ This release also includes changes from <<release-3-3-3, 3.3.3>>.
* Changed the order of `select()` scopes. The order is now: maps, side-effects, paths.
* Removed previously deprecated Credentials DSL infrastructure.
* Moved `TraversalEngine` to `gremlin-test` as it has long been only used in testing infrastructure.
+* Events from `EventStrategy`raised from "new" mutations will now return a true "empty" property from `VertexProperty.empty()` or `Property.empty()` as is appropriate.
+* `MutationListener#vertexPropertyChanged(Vertex, VertexProperty, Object, Object...)` no longer has a default implementation.
+* Removed previously deprecated `MutationListener#vertexPropertyChanged(Vertex, Property, Object, Object...)`.
* Removed previously deprecated `OpSelectorHandler` constructor.
* Removed previously deprecated `close()` from `GremlinGroovyScriptEngine` which no longer implements `AutoCloseable`.
* Removed previously deprecated `getGraphInputFormat()` and `getGraphOutputFormat()` from `HadoopConfiguration`.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/docs/src/upgrade/release-3.4.x.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc
index 851d458..68e0c51 100644
--- a/docs/src/upgrade/release-3.4.x.asciidoc
+++ b/docs/src/upgrade/release-3.4.x.asciidoc
@@ -113,6 +113,27 @@ gremlin> g.V().values('name').max()
==>vadas
----
+==== EventStrategy API
+
+There were some minor modifications to how `EventStrategy` is constructed and what can be expected from events raised
+from the addition of new properties.
+
+With respect to the change in terms of `EventStrategy` construction, the `detach()` builder method formerly took a
+`Class` as an argument and that `Class` was meant to be one of the various "detachment factories" or `null`. That
+approach was a bit confusing, so that signature has changed to `detach(EventStrategy.Detachment)` where the argument
+is a more handy enum of detachment options.
+
+As for the changes related to events themselves, it is first worth noting that the previously deprecated
+`vertexPropertyChanged(Vertex, Property, Object, Object...)` on `MutationListener` has been removed for what should
+have originally been the correct signature of `vertexPropertyChanged(Vertex, VertexProperty, Object, Object...)`. In
+prior versions when this method and its related `edgePropertyChanged()` and `vertexPropertyPropertyChanged()` were
+triggered by way of the addition of a new property a "fake" property was included with a `null` value for the
+"oldValue" argument to these methods (as it did not exist prior to this event). That was a bit awkward to reason about
+when dealing with that event. To make this easier, the event now raises with a `VertexProperty.empty()` or
+`Property.empty()` instance, which can be evaluated with `equals()` easily to determine if the property is new or not.
+
+link:https://issues.apache.org/jira/browse/TINKERPOP-1831[TINKERPOP-1831]
+
==== Deprecation Removal
The following deprecated classes, methods or fields have been removed in this version:
@@ -122,6 +143,7 @@ The following deprecated classes, methods or fields have been removed in this ve
** `org.apache.tinkerpop.gremlin.process.traversal.engine.*`
** `org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaCollectingBarrierStep.Consumers`
** `org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer#makeHasContainers(String, P)`
+** `org.apache.tinkerpop.gremlin.process.traversal.step.util.event.MutationListener#vertexPropertyChanged(Vertex, Property, Object, Object...)`
** `org.apache.tinkerpop.gremlin.structure.Element.Exceptions#elementAlreadyRemoved(Class, Object)`
** `org.apache.tinkerpop.gremlin.structure.Graph.Exceptions#elementNotFound(Class, Object)`
** `org.apache.tinkerpop.gremlin.structure.Graph.Exceptions#elementNotFound(Class, Object, Exception)`
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java
index 508af3e..c637880 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java
@@ -460,12 +460,6 @@ public class BulkLoaderVertexProgram implements VertexProgram<Tuple> {
}
@Override
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue,
- final Object... vertexPropertyKeyValues) {
- // do nothing - deprecated
- }
-
- @Override
public void vertexPropertyRemoved(final VertexProperty vertexProperty) {
this.counter++;
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/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 04a8414..3589c0c 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
@@ -97,17 +97,17 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
if (element instanceof Vertex)
evt = new Event.VertexPropertyChangedEvent(eventStrategy.detach((Vertex) element),
newProperty ?
- eventStrategy.empty(element, key) :
+ VertexProperty.empty() :
eventStrategy.detach((VertexProperty) currentProperty), value, vertexPropertyKeyValues);
else if (element instanceof Edge)
evt = new Event.EdgePropertyChangedEvent(eventStrategy.detach((Edge) element),
newProperty ?
- eventStrategy.empty(element, key) :
+ Property.empty() :
eventStrategy.detach(currentProperty), value);
else if (element instanceof VertexProperty)
evt = new Event.VertexPropertyPropertyChangedEvent(eventStrategy.detach((VertexProperty) element),
newProperty ?
- eventStrategy.empty(element, key) :
+ Property.empty() :
eventStrategy.detach(currentProperty), value);
else
throw new IllegalStateException(String.format("The incoming object cannot be processed by change eventing in %s: %s", AddPropertyStep.class.getName(), element));
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/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 937f414..1bfdf24 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
@@ -83,11 +83,6 @@ public class ConsoleMutationListener implements MutationListener {
}
@Override
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
- // do nothing - deprecated
- }
-
- @Override
public void vertexPropertyChanged(final Vertex element, final VertexProperty 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/tinkerpop/blob/7963fdfb/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
index 00e49ed..8525d5d 100644
--- 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
@@ -52,19 +52,10 @@ public interface MutationListener {
/**
* Raised after the property of a {@link Vertex} changed.
*
- * @deprecated As of release 3.2.7, replaced by {@link #vertexPropertyChanged(Vertex, VertexProperty, Object, Object...)}.
- */
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues);
-
- /**
- * 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 default void vertexPropertyChanged(final Vertex element, final VertexProperty oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
- vertexPropertyChanged(element, (Property) oldValue, setValue, vertexPropertyKeyValues);
- }
+ public void vertexPropertyChanged(final Vertex element, final VertexProperty oldValue, final Object setValue, final Object... vertexPropertyKeyValues);
/**
* Raised after a {@link VertexProperty} was removed from the graph.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/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 b4824c8..094b43d 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
@@ -57,53 +57,23 @@ import java.util.List;
*/
public final class EventStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
private final EventQueue eventQueue;
- private final Class<?> detachmentFactory;
+ private final Detachment detachment;
private EventStrategy(final Builder builder) {
this.eventQueue = builder.eventQueue;
this.eventQueue.setListeners(builder.listeners);
- this.detachmentFactory = builder.detachmentFactory;
+ this.detachment = builder.detachment;
}
- public Class<?> getDetachmentFactory() {
- return this.detachmentFactory;
+ public Detachment getDetachment() {
+ return this.detachment;
}
/**
* Applies the appropriate detach operation to elements that will be raised in mutation events.
*/
public <R> R detach(final R attached) {
- if (null == detachmentFactory)
- return attached;
- else if (detachmentFactory.equals(DetachedFactory.class))
- return DetachedFactory.detach(attached, true);
- else if (detachmentFactory.equals(ReferenceFactory.class))
- return ReferenceFactory.detach(attached);
- else
- throw new IllegalStateException("Unknown detachment option using " + detachmentFactory.getSimpleName());
- }
-
- /**
- * For newly created properties that do not yet exist, an empty {@link Property} is required that just contains
- * a key as a reference.
- */
- public <R extends Property> R empty(final Element element, final String key) {
- // currently the "no detachment" model simply returns a Detached value to maintain consistency with the
- // original API that already existed (where returning "Detached" was the only option). This could probably
- // change in the future to use an "empty" property or perhaps the "change" event API could change all together
- // and have a different return.
- if (null == detachmentFactory || detachmentFactory.equals(DetachedFactory.class)) {
- if (element instanceof Vertex)
- return (R) new DetachedVertexProperty(null, key, null, null);
- else
- return (R) new DetachedProperty(key, null);
- } else if (detachmentFactory.equals(ReferenceFactory.class)) {
- if (element instanceof Vertex)
- return (R) new ReferenceVertexProperty(new DetachedVertexProperty(null, key, null, null));
- else
- return (R) new ReferenceProperty(new DetachedProperty(key, null));
- } else
- throw new IllegalStateException("Unknown empty detachment option using " + detachmentFactory.getSimpleName());
+ return (R) detachment.detach(attached);
}
@Override
@@ -132,7 +102,7 @@ public final class EventStrategy extends AbstractTraversalStrategy<TraversalStra
public final static class Builder {
private final List<MutationListener> listeners = new ArrayList<>();
private EventQueue eventQueue = new DefaultEventQueue();
- private Class<?> detachmentFactory = DetachedFactory.class;
+ private Detachment detachment = Detachment.DETACHED_WITH_PROPERTIES;
Builder() {}
@@ -147,15 +117,11 @@ public final class EventStrategy extends AbstractTraversalStrategy<TraversalStra
}
/**
- * Configures the method of detachment for element provided in mutation callback events. If configured with
- * {@code null} for no detachment with a transactional graph, be aware that accessing the evented elements
- * after {@code commit()} will likely open new transactions.
- *
- * @param factoryClass must be either {@code null} (for no detachment), {@link ReferenceFactory} for elements
- * with no properties or {@link DetachedFactory} for elements with properties.
+ * Configures the method of detachment for element provided in mutation callback events. The default is
+ * {@link Detachment#DETACHED_WITH_PROPERTIES}.
*/
- public Builder detach(final Class<?> factoryClass) {
- detachmentFactory = factoryClass;
+ public Builder detach(final Detachment detachment) {
+ this.detachment = detachment;
return this;
}
@@ -165,6 +131,60 @@ public final class EventStrategy extends AbstractTraversalStrategy<TraversalStra
}
/**
+ * A common interface for detachment.
+ */
+ public interface Detacher {
+ public Object detach(final Object object);
+ }
+
+ /**
+ * Options for detaching elements from the graph during eventing.
+ */
+ public enum Detachment implements Detacher {
+ /**
+ * Does not detach the element from the graph. It should be noted that if this option is used with
+ * transactional graphs new transactions may be opened if these elements are accessed after a {@code commit()}
+ * is called.
+ */
+ NONE {
+ @Override
+ public Object detach(final Object object) {
+ return object;
+ }
+ },
+
+ /**
+ * Uses {@link DetachedFactory} to detach and includes properties of elements that have them.
+ */
+ DETACHED_WITH_PROPERTIES {
+ @Override
+ public Object detach(final Object object) {
+ return DetachedFactory.detach(object, true);
+ }
+ },
+
+ /**
+ * Uses {@link DetachedFactory} to detach and does not include properties of elements that have them.
+ */
+ DETACHED_NO_PROPERTIES {
+ @Override
+ public Object detach(final Object object) {
+ return DetachedFactory.detach(object, false);
+ }
+ },
+
+ /**
+ * Uses {@link ReferenceFactory} to detach which only includes id and label of elements.
+ */
+ REFERENCE {
+ @Override
+ public Object detach(final Object object) {
+ return ReferenceFactory.detach(object);
+ }
+ }
+ }
+
+ /**
* Gathers messages from callbacks and fires them to listeners. When the event is sent to the listener is
* up to the implementation of this interface.
*/
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/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 27d9b7e..911ef41 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
@@ -23,7 +23,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTrav
import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
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;
import org.junit.runner.RunWith;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7963fdfb/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 e7a392c..b527340 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
@@ -32,7 +32,6 @@ import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceEdge;
-import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex;
import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertexProperty;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
@@ -634,8 +633,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertThat(element, instanceOf(DetachedVertexProperty.class));
assertEquals(label, element.label());
assertEquals(value, element.value());
- assertEquals(null, oldValue.value());
- assertEquals("new", oldValue.key());
+ assertEquals(Property.empty(), oldValue);
assertEquals("yay!", setValue);
triggered.set(true);
}
@@ -752,8 +750,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertEquals(label, element.label());
assertEquals(inId, element.inVertex().id());
assertEquals(outId, element.outVertex().id());
- assertEquals(null, oldValue.value());
- assertEquals("new", oldValue.key());
+ assertEquals(Property.empty(), oldValue);
assertEquals("yay!", setValue);
triggered.set(true);
}
@@ -928,44 +925,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertThat(element, instanceOf(DetachedVertex.class));
assertEquals(label, element.label());
assertEquals(id, element.id());
- assertEquals("new", oldValue.key());
- assertEquals(null, oldValue.value());
- assertEquals("dah", setValue);
- triggered.set(true);
- }
- };
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener);
-
- if (graph.features().graph().supportsTransactions())
- builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
-
- final EventStrategy eventStrategy = builder.create();
- final GraphTraversalSource gts = create(eventStrategy);
-
- gts.V(v).property(VertexProperty.Cardinality.single, "new", "dah").iterate();
- tryCommit(graph);
-
- assertEquals(2, IteratorUtils.count(g.V(v).properties()));
- assertThat(triggered.get(), is(true));
- }
-
- @Test
- @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
- public void shouldDetachVertexPropertyWhenNewDeprecated() {
- final AtomicBoolean triggered = new AtomicBoolean(false);
- final Vertex v = graph.addVertex();
- final String label = v.label();
- final Object id = v.id();
- v.property("old","blah");
-
- final MutationListener listener = new AbstractMutationListener() {
- @Override
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
- assertThat(element, instanceOf(DetachedVertex.class));
- assertEquals(label, element.label());
- assertEquals(id, element.id());
- assertEquals("new", oldValue.key());
- assertEquals(null, oldValue.value());
+ assertEquals(VertexProperty.empty(), oldValue);
assertEquals("dah", setValue);
triggered.set(true);
}
@@ -1069,7 +1029,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1109,7 +1069,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1142,13 +1102,12 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertThat(element, instanceOf(ReferenceVertexProperty.class));
assertEquals(label, element.label());
assertEquals(value, element.value());
- assertEquals(null, oldValue.value());
- assertEquals("new", oldValue.key());
+ assertEquals(Property.empty(), oldValue);
assertEquals("yay!", setValue);
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1187,7 +1146,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1227,7 +1186,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1260,13 +1219,12 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertEquals(label, element.label());
assertEquals(inId, element.inVertex().id());
assertEquals(outId, element.outVertex().id());
- assertEquals(null, oldValue.value());
- assertEquals("new", oldValue.key());
+ assertEquals(Property.empty(), oldValue);
assertEquals("yay!", setValue);
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1302,7 +1260,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1335,7 +1293,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1369,7 +1327,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1408,7 +1366,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1425,7 +1383,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
@Test
@FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
- public void shouldRefereceVertexPropertyWhenNew() {
+ public void shouldReferenceVertexPropertyWhenNew() {
final AtomicBoolean triggered = new AtomicBoolean(false);
final Vertex v = graph.addVertex();
final String label = v.label();
@@ -1438,49 +1396,12 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertThat(element, instanceOf(ReferenceVertex.class));
assertEquals(label, element.label());
assertEquals(id, element.id());
- assertEquals("new", oldValue.key());
- assertEquals(null, oldValue.value());
- assertEquals("dah", setValue);
- triggered.set(true);
- }
- };
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
-
- if (graph.features().graph().supportsTransactions())
- builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
-
- final EventStrategy eventStrategy = builder.create();
- final GraphTraversalSource gts = create(eventStrategy);
-
- gts.V(v).property(VertexProperty.Cardinality.single, "new", "dah").iterate();
- tryCommit(graph);
-
- assertEquals(2, IteratorUtils.count(g.V(v).properties()));
- assertThat(triggered.get(), is(true));
- }
-
- @Test
- @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
- public void shouldReferenceVertexPropertyWhenNewDeprecated() {
- final AtomicBoolean triggered = new AtomicBoolean(false);
- final Vertex v = graph.addVertex();
- final String label = v.label();
- final Object id = v.id();
- v.property("old","blah");
-
- final MutationListener listener = new AbstractMutationListener() {
- @Override
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
- assertThat(element, instanceOf(ReferenceVertex.class));
- assertEquals(label, element.label());
- assertEquals(id, element.id());
- assertEquals("new", oldValue.key());
- assertEquals(null, oldValue.value());
+ assertEquals(VertexProperty.empty(), oldValue);
assertEquals("dah", setValue);
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1512,7 +1433,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1541,7 +1462,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1578,7 +1499,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1618,7 +1539,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1651,13 +1572,12 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertEquals(vp, element);
assertEquals(label, element.label());
assertEquals(value, element.value());
- assertEquals(null, oldValue.value());
- assertEquals("new", oldValue.key());
+ assertEquals(Property.empty(), oldValue);
assertEquals("yay!", setValue);
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1696,7 +1616,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1736,7 +1656,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1769,13 +1689,12 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertEquals(label, element.label());
assertEquals(inId, element.inVertex().id());
assertEquals(outId, element.outVertex().id());
- assertEquals(null, oldValue.value());
- assertEquals("new", oldValue.key());
+ assertEquals(Property.empty(), oldValue);
assertEquals("yay!", setValue);
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1811,7 +1730,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1845,7 +1764,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1880,7 +1799,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1917,7 +1836,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -1947,49 +1866,12 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
assertEquals(v, element);
assertEquals(label, element.label());
assertEquals(id, element.id());
- assertEquals("new", oldValue.key());
- assertEquals(null, oldValue.value());
+ assertEquals(VertexProperty.empty(), oldValue);
assertEquals("dah", setValue);
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
-
- if (graph.features().graph().supportsTransactions())
- builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
-
- final EventStrategy eventStrategy = builder.create();
- final GraphTraversalSource gts = create(eventStrategy);
-
- gts.V(v).property(VertexProperty.Cardinality.single, "new", "dah").iterate();
- tryCommit(graph);
-
- assertEquals(2, IteratorUtils.count(g.V(v).properties()));
- assertThat(triggered.get(), is(true));
- }
-
- @Test
- @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
- public void shouldUseActualVertexPropertyWhenNewDeprecated() {
- final AtomicBoolean triggered = new AtomicBoolean(false);
- final Vertex v = graph.addVertex();
- final String label = v.label();
- final Object id = v.id();
- v.property("old","blah");
-
- final MutationListener listener = new AbstractMutationListener() {
- @Override
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
- assertEquals(v, element);
- assertEquals(label, element.label());
- assertEquals(id, element.id());
- assertEquals("new", oldValue.key());
- assertEquals(null, oldValue.value());
- assertEquals("dah", setValue);
- triggered.set(true);
- }
- };
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -2021,7 +1903,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -2051,7 +1933,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
triggered.set(true);
}
};
- final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(ReferenceFactory.class);
+ final EventStrategy.Builder builder = EventStrategy.build().addListener(listener).detach(EventStrategy.Detachment.REFERENCE);
if (graph.features().graph().supportsTransactions())
builder.eventQueue(new EventStrategy.TransactionalEventQueue(graph));
@@ -2083,7 +1965,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
}
@Override
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
+ public void vertexPropertyChanged(final Vertex element, final VertexProperty oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
}
@@ -2211,11 +2093,6 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
}
@Override
- public void vertexPropertyChanged(final Vertex element, final Property oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
- // do nothing - deprecated
- }
-
- @Override
public void vertexPropertyChanged(final Vertex element, final VertexProperty oldValue, final Object setValue, final Object... vertexPropertyKeyValues) {
vertexPropertyChangedEvent.incrementAndGet();
order.add("v-property-changed-" + element.id());