You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2015/06/04 12:15:23 UTC
[09/43] incubator-tinkerpop git commit: removed AddEdgeByPathStep and
AddEdgeStep... added new AddEdgeStep which is now Scoping and supports
Scope.local (pull vertices from a Map -- e.g. select().addOutE('a', 'knows',
'b') and it supports Scope.global (pul
removed AddEdgeByPathStep and AddEdgeStep... added new AddEdgeStep which is now Scoping and supports Scope.local (pull vertices from a Map -- e.g. select().addOutE('a','knows','b') and it supports Scope.global (pull vertices from sideEffects and the path -- e.g. g.withSideEffect('v',v).V.out.addOutE('knows','v')). Had to twittle with a lot of stuff, but now AddEdgeStep is REALLY cool and consistent. Need to write more tests and update the docs.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/c387430d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/c387430d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/c387430d
Branch: refs/heads/preprocessor
Commit: c387430dfdc9e529b74d27d3b756dc42665b53f2
Parents: 16939e0
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jun 2 12:28:26 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jun 2 12:28:26 2015 -0600
----------------------------------------------------------------------
.../traversal/dsl/graph/GraphTraversal.java | 40 ++----
.../dsl/graph/GraphTraversalSource.java | 13 +-
.../gremlin/process/traversal/dsl/graph/__.java | 44 ++----
.../gremlin/process/traversal/step/Scoping.java | 3 +
.../traversal/step/filter/WhereStep.java | 1 +
.../traversal/step/map/AddEdgeByPathStep.java | 139 -------------------
.../process/traversal/step/map/AddEdgeStep.java | 122 +++++++++++-----
.../traversal/step/map/SelectOneStep.java | 1 +
.../process/traversal/step/map/SelectStep.java | 1 +
.../traversal/step/map/match/MatchStep.java | 5 +
.../strategy/decoration/ElementIdStrategy.java | 20 +--
.../strategy/decoration/PartitionStrategy.java | 30 ++--
.../strategy/decoration/SubgraphStrategy.java | 2 -
.../strategy/finalization/ScopingStrategy.java | 12 +-
.../step/map/AddEdgeByPathStepTest.java | 47 -------
.../traversal/step/map/AddEdgeStepTest.java | 18 +--
.../ElementIdStrategyTraverseTest.java | 17 +--
.../PartitionStrategyTraverseTest.java | 17 +--
.../traversal/step/map/GroovyAddEdgeTest.groovy | 6 +-
.../gremlin/groovy/loaders/StepLoader.groovy | 12 ++
.../traversal/step/filter/WhereTest.java | 2 +-
.../process/traversal/step/map/AddEdgeTest.java | 9 +-
.../ElementIdStrategyProcessTest.java | 8 +-
.../decoration/EventStrategyProcessTest.java | 4 +-
.../PartitionStrategyProcessTest.java | 17 +--
25 files changed, 212 insertions(+), 378 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index acd2f6d..5a035b7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -55,7 +55,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathStep
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TimeLimitStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereStep;
-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.AddVertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceStep;
@@ -372,40 +371,23 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return this.asAdmin().addStep(new AddVertexStep<>(this.asAdmin(), keyValues));
}
- public default GraphTraversal<S, Edge> addE(final Direction direction, final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
- return this.asAdmin().addStep(new AddEdgeByPathStep(this.asAdmin(), direction, edgeLabel, stepLabel, propertyKeyValues));
+ public default GraphTraversal<S, Edge> addE(final Scope scope, final Direction direction, final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ if (propertyKeyValues.length % 2 == 0)
+ return this.asAdmin().addStep(new AddEdgeStep<>(this.asAdmin(), scope, direction, null, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues));
+ else
+ return this.asAdmin().addStep(new AddEdgeStep<>(this.asAdmin(), scope, direction, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, (String) propertyKeyValues[0], Arrays.copyOfRange(propertyKeyValues, 1, propertyKeyValues.length)));
}
- public default GraphTraversal<S, Edge> addE(final Direction direction, final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
- return this.asAdmin().addStep(new AddEdgeStep(this.asAdmin(), direction, edgeLabel, otherVertex, propertyKeyValues));
+ public default GraphTraversal<S, Edge> addE(final Direction direction, final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ return this.addE(Scope.global, direction, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);
}
- public default GraphTraversal<S, Edge> addE(final Direction direction, final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
- return this.asAdmin().addStep(new AddEdgeStep(this.asAdmin(), direction, edgeLabel, otherVertices, propertyKeyValues));
+ public default GraphTraversal<S, Edge> addOutE(final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ return this.addE(Scope.global, Direction.OUT, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);
}
- public default GraphTraversal<S, Edge> addInE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
- return this.addE(Direction.IN, edgeLabel, stepLabel, propertyKeyValues);
- }
-
- public default GraphTraversal<S, Edge> addInE(final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
- return this.addE(Direction.IN, edgeLabel, otherVertex, propertyKeyValues);
- }
-
- public default GraphTraversal<S, Edge> addInE(final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
- return this.addE(Direction.IN, edgeLabel, otherVertices, propertyKeyValues);
- }
-
- public default GraphTraversal<S, Edge> addOutE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
- return this.addE(Direction.OUT, edgeLabel, stepLabel, propertyKeyValues);
- }
-
- public default GraphTraversal<S, Edge> addOutE(final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
- return this.addE(Direction.OUT, edgeLabel, otherVertex, propertyKeyValues);
- }
-
- public default GraphTraversal<S, Edge> addOutE(final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
- return this.addE(Direction.OUT, edgeLabel, otherVertices, propertyKeyValues);
+ public default GraphTraversal<S, Edge> addInE(final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ return this.addE(Scope.global, Direction.IN, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);
}
///////////////////// FILTER STEPS /////////////////////
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
index 0bbbf6f..59b9b18 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
@@ -107,12 +107,18 @@ public class GraphTraversalSource implements TraversalSource {
//// UTILITIES
- public <S> GraphTraversalSourceStub withSideEffect(final String key, final Supplier supplier) {
+ public GraphTraversalSourceStub withSideEffect(final String key, final Supplier supplier) {
final GraphTraversal.Admin traversal = this.generateTraversal();
traversal.getSideEffects().registerSupplier(key, supplier);
return new GraphTraversalSourceStub(traversal, false);
}
+ public GraphTraversalSourceStub withSideEffect(final String key, final Object object) {
+ final GraphTraversal.Admin traversal = this.generateTraversal();
+ traversal.getSideEffects().registerSupplier(key, new ConstantSupplier<>(object));
+ return new GraphTraversalSourceStub(traversal, false);
+ }
+
public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator) {
final GraphTraversal.Admin traversal = this.generateTraversal();
traversal.getSideEffects().setSack(initialValue, Optional.of(splitOperator));
@@ -244,6 +250,11 @@ public class GraphTraversalSource implements TraversalSource {
return this;
}
+ public GraphTraversalSourceStub withSideEffect(final String key, final Object object) {
+ this.traversal.getSideEffects().registerSupplier(key, new ConstantSupplier<>(object));
+ return this;
+ }
+
public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator) {
this.traversal.getSideEffects().setSack(initialValue, Optional.of(splitOperator));
return this;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index 9ee23e7..b290051 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -172,7 +172,7 @@ public class __ {
return __.<A>start().path();
}
- public static <A, B> GraphTraversal<A, Map<String, B>> match(final String startLabel, final Traversal<?,?>... traversals) {
+ public static <A, B> GraphTraversal<A, Map<String, B>> match(final String startLabel, final Traversal<?, ?>... traversals) {
return __.<A>start().match(startLabel, traversals);
}
@@ -264,40 +264,20 @@ public class __ {
return __.<A>start().addV(propertyKeyValues);
}
- public static <A> GraphTraversal<A, Edge> addE(final Direction direction, final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
- return __.<A>start().addE(direction, edgeLabel, stepLabel, propertyKeyValues);
+ public static <A> GraphTraversal<A, Edge> addE(final Scope scope, final Direction direction, final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ return __.<A>start().addE(scope, direction, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);
}
- public static <A> GraphTraversal<A, Edge> addE(final Direction direction, final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
- return __.<A>start().addE(direction, edgeLabel, otherVertex, propertyKeyValues);
+ public static <A> GraphTraversal<A, Edge> addE(final Direction direction, final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ return __.<A>start().addE(direction, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);
}
- public static <A> GraphTraversal<A, Edge> addE(final Direction direction, final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
- return __.<A>start().addE(direction, edgeLabel, otherVertices, propertyKeyValues);
+ public static <A> GraphTraversal<A, Edge> addOutE(final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ return __.<A>start().addOutE(firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);
}
- public static <A> GraphTraversal<A, Edge> addInE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
- return __.<A>start().addInE(edgeLabel, stepLabel, propertyKeyValues);
- }
-
- public static <A> GraphTraversal<A, Edge> addInE(final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
- return __.<A>start().addInE(edgeLabel, otherVertex, propertyKeyValues);
- }
-
- public static <A> GraphTraversal<A, Edge> addInE(final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
- return __.<A>start().addInE(edgeLabel, otherVertices, propertyKeyValues);
- }
-
- public static <A> GraphTraversal<A, Edge> addOutE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
- return __.<A>start().addOutE(edgeLabel, stepLabel, propertyKeyValues);
- }
-
- public static <A> GraphTraversal<A, Edge> addOutE(final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
- return __.<A>start().addOutE(edgeLabel, otherVertex, propertyKeyValues);
- }
-
- public static <A> GraphTraversal<A, Edge> addOutE(final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
- return __.<A>start().addOutE(edgeLabel, otherVertices, propertyKeyValues);
+ public static <A> GraphTraversal<A, Edge> addInE(final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
+ return __.<A>start().addInE(firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);
}
///////////////////// FILTER STEPS /////////////////////
@@ -350,7 +330,7 @@ public class __ {
return __.<A>start().has(label, key, predicate);
}
- public static <A> GraphTraversal<A, A> has(final String key, final Traversal<?,?> propertyTraversal) {
+ public static <A> GraphTraversal<A, A> has(final String key, final Traversal<?, ?> propertyTraversal) {
return __.<A>start().has(key, propertyTraversal);
}
@@ -386,7 +366,7 @@ public class __ {
return __.<A>start().where(scope, predicate);
}
- public static <A> GraphTraversal<A, A> where(final Scope scope, final Traversal<?,?> whereTraversal) {
+ public static <A> GraphTraversal<A, A> where(final Scope scope, final Traversal<?, ?> whereTraversal) {
return __.<A>start().where(scope, whereTraversal);
}
@@ -398,7 +378,7 @@ public class __ {
return __.<A>start().where(predicate);
}
- public static <A> GraphTraversal<A, A> where(final Traversal<?,?> whereTraversal) {
+ public static <A> GraphTraversal<A, A> where(final Traversal<?, ?> whereTraversal) {
return __.<A>start().where(whereTraversal);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
index dd536f2..bb086e6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
@@ -29,4 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Scope;
public interface Scoping {
public Scope recommendNextScope();
+
+ public void setScope(final Scope scope);
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
index 2fbe5e5..8293867 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
@@ -113,6 +113,7 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
TraverserRequirement.OBJECT : TraverserRequirement.OBJECT, TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS);
}
+ @Override
public void setScope(final Scope scope) {
this.scope = scope;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/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
deleted file mode 100644
index 5918dd5..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
+++ /dev/null
@@ -1,139 +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.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.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
-
-import java.util.*;
-
-/**
- * @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<Event.EdgeAddedEvent>> {
-
- private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
- TraverserRequirement.PATH,
- TraverserRequirement.OBJECT
- );
-
- private List<EventCallback<Event.EdgeAddedEvent>> callbacks = null;
-
- // TODO: Weight key based on Traverser.getCount() ?
-
- private final Direction direction;
- private final String edgeLabel;
- private final String stepLabel;
- private final Object[] keyValues;
-
- public AddEdgeByPathStep(final Traversal.Admin traversal, final Direction direction, final String edgeLabel, final String stepLabel, final Object... keyValues) {
- super(traversal);
- this.direction = direction;
- if (this.direction.equals(Direction.BOTH))
- throw new IllegalArgumentException("Only in- and out- directions are supported by " + AddEdgeByPathStep.class.getSimpleName());
- this.edgeLabel = edgeLabel;
- this.stepLabel = stepLabel;
- this.keyValues = keyValues;
- }
-
- public Direction getDirection() {
- return direction;
- }
-
- public String getEdgeLabel() {
- return edgeLabel;
- }
-
- public String getStepLabel() {
- return stepLabel;
- }
-
- public Object[] getKeyValues() {
- return keyValues;
- }
-
- @Override
- public String toString() {
- return StringFactory.stepString(this, this.direction.name(), this.edgeLabel, this.stepLabel);
- }
-
- @Override
- public int hashCode() {
- int result = super.hashCode() ^ this.direction.hashCode() ^ this.edgeLabel.hashCode() ^ this.stepLabel.hashCode();
- for (final Object item : this.keyValues) {
- result ^= item.hashCode();
- }
- return result;
- }
-
- @Override
- protected Edge map(final Traverser.Admin<Vertex> traverser) {
- final Vertex currentVertex = traverser.get();
- final Vertex otherVertex = traverser.path().get(this.stepLabel);
-
- Edge e;
- if (this.direction.equals(Direction.IN))
- e = otherVertex.addEdge(this.edgeLabel, currentVertex, this.keyValues);
- else
- e = currentVertex.addEdge(this.edgeLabel, otherVertex, this.keyValues);
-
- if (callbacks != null) {
- final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(e, true));
- callbacks.forEach(c -> c.accept(vae));
- }
-
- return e;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return REQUIREMENTS;
- }
-
- @Override
- public void addCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
- if (callbacks == null) callbacks = new ArrayList<>();
- callbacks.add(edgeAddedEventEventCallback);
- }
-
- @Override
- public void removeCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
- if (callbacks != null) callbacks.remove(edgeAddedEventEventCallback);
- }
-
- @Override
- public void clearCallbacks() {
- if (callbacks != null) callbacks.clear();
- }
-
- @Override
- 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/c387430d/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 426aa2d..0b9ad11 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
@@ -18,83 +18,125 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
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.Scoping;
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.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.Iterator;
+import java.util.List;
+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<Event.EdgeAddedEvent>> {
+public final class AddEdgeStep<S> extends FlatMapStep<S, Edge> implements Scoping, Mutating<EventCallback<Event.EdgeAddedEvent>> {
- private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
+ private static final Set<TraverserRequirement> LOCAL_REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
+ private static final Set<TraverserRequirement> GLOBAL_REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT, TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS);
- private final String edgeLabel;
- private final Object[] keyValues;
- private final List<Vertex> vertices;
+ private Scope scope;
private final Direction direction;
+ private final String firstVertexKey;
+ private final String edgeLabel;
+ private final String secondVertexKey;
+ private final Object[] propertyKeyValues;
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);
- }
-
- public AddEdgeStep(final Traversal.Admin traversal, final Direction direction, final String edgeLabel, final Iterator<Vertex> vertices, final Object... keyValues) {
+ public AddEdgeStep(final Traversal.Admin traversal, final Scope scope, final Direction direction, final String firstVertexKey, final String edgeLabel, final String secondVertexKey, final Object... propertyKeyValues) {
super(traversal);
+ this.scope = scope;
this.direction = direction;
+ this.firstVertexKey = firstVertexKey;
this.edgeLabel = edgeLabel;
- this.vertices = IteratorUtils.list(vertices);
- this.keyValues = keyValues;
+ this.secondVertexKey = secondVertexKey;
+ this.propertyKeyValues = propertyKeyValues;
}
public Direction getDirection() {
return direction;
}
+ public String getFirstVertexKey() {
+ return this.firstVertexKey;
+ }
+
public String getEdgeLabel() {
return edgeLabel;
}
- public Object[] getKeyValues() {
- return keyValues;
+ public String getSecondVertexKey() {
+ return this.secondVertexKey;
}
- public List<Vertex> getVertices() {
- return vertices;
+ public Object[] getPropertyKeyValues() {
+ return this.propertyKeyValues;
}
@Override
- protected Iterator<Edge> flatMap(final Traverser.Admin<Vertex> traverser) {
- return IteratorUtils.map(this.vertices.iterator(), vertex -> {
- final Edge e = this.direction.equals(Direction.OUT) ?
- traverser.get().addEdge(this.edgeLabel, vertex, this.keyValues) :
- vertex.addEdge(this.edgeLabel, traverser.get(), this.keyValues);
+ protected Iterator<Edge> flatMap(final Traverser.Admin<S> traverser) {
+ final Object firstVertex = null == this.firstVertexKey ? (Vertex) traverser.get() : Scope.getScopeValueByKey(this.scope, this.firstVertexKey, traverser);
+ final Object secondVertex = null == this.secondVertexKey ? (Vertex) traverser.get() : Scope.getScopeValueByKey(this.scope, this.secondVertexKey, traverser);
+ final Object finalFirstVertex = firstVertex instanceof Iterable ? ((Iterable) firstVertex).iterator() : firstVertex;
+ final Object finalSecondVertex = secondVertex instanceof Iterable ? ((Iterable) secondVertex).iterator() : secondVertex;
+
+ if (finalFirstVertex instanceof Iterator || finalSecondVertex instanceof Iterator) {
+ if (finalFirstVertex instanceof Iterator) {
+ return IteratorUtils.map((Iterator<Vertex>) finalFirstVertex, vertex -> {
+ final Edge edge = this.direction.equals(Direction.OUT) ?
+ vertex.addEdge(this.edgeLabel, (Vertex) finalSecondVertex, this.propertyKeyValues) :
+ ((Vertex) finalSecondVertex).addEdge(this.edgeLabel, vertex, this.propertyKeyValues);
+
+ if (callbacks != null) {
+ final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(edge, true));
+ callbacks.forEach(c -> c.accept(vae));
+ }
+ return edge;
+ });
+ } else {
+ return IteratorUtils.map((Iterator<Vertex>) finalSecondVertex, vertex -> {
+ final Edge edge = this.direction.equals(Direction.OUT) ?
+ ((Vertex) finalFirstVertex).addEdge(this.edgeLabel, vertex, this.propertyKeyValues) :
+ vertex.addEdge(this.edgeLabel, ((Vertex) finalFirstVertex), this.propertyKeyValues);
+
+ if (callbacks != null) {
+ final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(edge, true));
+ callbacks.forEach(c -> c.accept(vae));
+ }
+ return edge;
+ });
+ }
+ } else {
+ final Edge edge = this.direction.equals(Direction.OUT) ?
+ ((Vertex) firstVertex).addEdge(this.edgeLabel, (Vertex) secondVertex, this.propertyKeyValues) :
+ ((Vertex) secondVertex).addEdge(this.edgeLabel, (Vertex) firstVertex, this.propertyKeyValues);
if (callbacks != null) {
- final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(e, true));
+ final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(edge, true));
callbacks.forEach(c -> c.accept(vae));
}
- return e;
- });
+ return IteratorUtils.of(edge);
+ }
}
@Override
public Set<TraverserRequirement> getRequirements() {
- return REQUIREMENTS;
+ return Scope.local == this.scope ? LOCAL_REQUIREMENTS : GLOBAL_REQUIREMENTS;
}
@Override
@@ -118,15 +160,31 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
}
+
@Override
public int hashCode() {
int result = super.hashCode() ^ this.direction.hashCode() ^ this.edgeLabel.hashCode();
- for (final Vertex vertex : this.vertices) {
- result ^= ElementHelper.hashCode(vertex);
- }
- for (final Object item : this.keyValues) {
- result ^= item.hashCode();
+ if (null != this.firstVertexKey)
+ result ^= this.firstVertexKey.hashCode();
+ if (null != this.secondVertexKey)
+ result ^= this.secondVertexKey.hashCode();
+ for (final Object object : this.propertyKeyValues) {
+ result ^= object.hashCode();
}
return result;
}
+
+ @Override
+ public void setScope(final Scope scope) {
+ this.scope = scope;
+ }
+
+ @Override
+ public Scope recommendNextScope() {
+ return this.scope;
+ }
+
+ public Scope getScope() {
+ return this.scope;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
index 94e75d8..21ef76c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
@@ -86,6 +86,7 @@ public final class SelectOneStep<S, E> extends MapStep<S, E> implements Traversa
return this.getSelfAndChildRequirements(this.scope == Scope.local ? TraverserRequirement.OBJECT : TraverserRequirement.PATH);
}
+ @Override
public void setScope(final Scope scope) {
this.scope = scope;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
index 77c0174..dbac25c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
@@ -113,6 +113,7 @@ public final class SelectStep<S, E> extends MapStep<S, Map<String, E>> implement
return this.getSelfAndChildRequirements(this.scope == Scope.local ? TraverserRequirement.OBJECT : TraverserRequirement.PATH);
}
+ @Override
public void setScope(final Scope scope) {
this.scope = scope;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
index 19794a1..831e28f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
@@ -411,6 +411,11 @@ public final class MatchStep<S, E> extends AbstractStep<S, Map<String, E>> imple
return Scope.local;
}
+ @Override
+ public void setScope(final Scope scope) {
+
+ }
+
/**
* A wrapper for a traversal in a query which maintains statistics about the traversal as
* it consumes inputs and produces outputs.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
index eb5e866..a3b4b2d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
@@ -18,11 +18,11 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
-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;
@@ -33,7 +33,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.structure.PropertyType;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
@@ -125,20 +124,11 @@ public final class ElementIdStrategy extends AbstractTraversalStrategy<Traversal
});
TraversalHelper.getStepsOfAssignableClass(AddEdgeStep.class, traversal).stream().forEach(s -> {
- if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
- TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getVertices().iterator(), ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
- else {
- final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
- TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getVertices().iterator(), kvs), traversal);
- }
- });
-
- TraversalHelper.getStepsOfAssignableClass(AddEdgeByPathStep.class, traversal).stream().forEach(s -> {
- if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
- TraversalHelper.replaceStep(s, new AddEdgeByPathStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getStepLabel(), ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
+ if (ElementHelper.getIdValue(s.getPropertyKeyValues()).isPresent())
+ TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getScope(), s.getDirection(), s.getFirstVertexKey(), s.getEdgeLabel(), s.getSecondVertexKey(), ElementHelper.replaceKey(s.getPropertyKeyValues(), T.id, idPropertyKey)), traversal);
else {
- final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
- TraversalHelper.replaceStep(s, new AddEdgeByPathStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getStepLabel(), kvs), traversal);
+ final Object[] kvs = ElementHelper.getKeys(s.getPropertyKeyValues()).contains(idPropertyKey) ? s.getPropertyKeyValues() : ElementHelper.upsert(s.getPropertyKeyValues(), idPropertyKey, idMaker.get());
+ TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getScope(), s.getDirection(), s.getFirstVertexKey(), s.getEdgeLabel(), s.getSecondVertexKey(), kvs), traversal);
}
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
index fc7a310..64ceae4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
@@ -18,18 +18,27 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.*;
+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.map.EdgeOtherVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GraphStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.P;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import java.util.stream.Stream;
/**
@@ -79,13 +88,8 @@ public final class PartitionStrategy extends AbstractTraversalStrategy<Traversal
// all write edge steps need to have partition keys tossed into the property key/value list after mutating steps
TraversalHelper.getStepsOfAssignableClass(AddEdgeStep.class, traversal).forEach(s -> {
- final Object[] keyValues = injectPartitionInfo(s.getKeyValues());
- TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getVertices().iterator(), keyValues), traversal);
- });
-
- TraversalHelper.getStepsOfAssignableClass(AddEdgeByPathStep.class, traversal).forEach(s -> {
- final Object[] keyValues = injectPartitionInfo(s.getKeyValues());
- TraversalHelper.replaceStep(s, new AddEdgeByPathStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getStepLabel(), keyValues), traversal);
+ final Object[] keyValues = injectPartitionInfo(s.getPropertyKeyValues());
+ TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getScope(), s.getDirection(), s.getFirstVertexKey(), s.getEdgeLabel(), s.getSecondVertexKey(), keyValues), traversal);
});
// all write vertex steps need to have partition keys tossed into the property key/value list after mutating steps
@@ -109,7 +113,8 @@ public final class PartitionStrategy extends AbstractTraversalStrategy<Traversal
private String partitionKey;
private Set<String> readPartitions = new HashSet<>();
- Builder() {}
+ Builder() {
+ }
public Builder writePartition(final String writePartition) {
this.writePartition = writePartition;
@@ -127,7 +132,8 @@ public final class PartitionStrategy extends AbstractTraversalStrategy<Traversal
}
public PartitionStrategy create() {
- if (partitionKey == null || partitionKey.isEmpty()) throw new IllegalStateException("The partitionKey cannot be null or empty");
+ if (partitionKey == null || partitionKey.isEmpty())
+ throw new IllegalStateException("The partitionKey cannot be null or empty");
return new PartitionStrategy(this.partitionKey, this.writePartition, this.readPartitions);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
index c04daa6..d5c0900 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
@@ -25,7 +25,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereStep;
-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;
@@ -95,7 +94,6 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
if (edgeCriterion != null) {
final List<Step> edgeStepsToInsertFilterAfter = new ArrayList<>();
edgeStepsToInsertFilterAfter.addAll(TraversalHelper.getStepsOfAssignableClass(AddEdgeStep.class, traversal));
- edgeStepsToInsertFilterAfter.addAll(TraversalHelper.getStepsOfAssignableClass(AddEdgeByPathStep.class, traversal));
edgeStepsToInsertFilterAfter.addAll(graphSteps.stream().filter(GraphStep::returnsEdge).collect(Collectors.toList()));
edgeStepsToInsertFilterAfter.addAll(vertexSteps.stream().filter(VertexStep::returnsEdge).collect(Collectors.toList()));
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
index 35640c4..40f8e10 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
@@ -24,9 +24,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectOneStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
/**
@@ -42,13 +39,8 @@ public final class ScopingStrategy extends AbstractTraversalStrategy<TraversalSt
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
traversal.getSteps().stream().forEach(step -> {
- if (step.getPreviousStep() instanceof Scoping) {
- if (step instanceof SelectStep)
- ((SelectStep) step).setScope(((Scoping) step.getPreviousStep()).recommendNextScope());
- else if (step instanceof SelectOneStep)
- ((SelectOneStep) step).setScope(((Scoping) step.getPreviousStep()).recommendNextScope());
- else if (step instanceof WhereStep)
- ((WhereStep) step).setScope(((Scoping) step.getPreviousStep()).recommendNextScope());
+ if (step instanceof Scoping && step.getPreviousStep() instanceof Scoping) {
+ ((Scoping) step).setScope(((Scoping) step.getPreviousStep()).recommendNextScope());
}
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStepTest.java
deleted file mode 100644
index e9a16b4..0000000
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStepTest.java
+++ /dev/null
@@ -1,47 +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.map;
-
-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.StepTest;
-import org.apache.tinkerpop.gremlin.structure.Direction;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public class AddEdgeByPathStepTest extends StepTest {
-
- @Override
- protected List<Traversal> getTraversals() {
- return Arrays.asList(
- __.addE(Direction.IN, "knows", "x"),
- __.addE(Direction.IN, "knows", "y"),
- __.addE(Direction.OUT, "knows", "x"),
- __.addE(Direction.IN, "knows", "x", "weight", 0),
- __.addE(Direction.IN, "knows", "x", "weight", 1)
- );
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java
index 2ee463c..204f5cd 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java
@@ -25,11 +25,8 @@ 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.StepTest;
import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
/**
@@ -39,17 +36,12 @@ public class AddEdgeStepTest extends StepTest {
@Override
protected List<Traversal> getTraversals() {
- final Vertex v1 = new DetachedVertex(1, Vertex.DEFAULT_LABEL, new HashMap<>());
- final Vertex v2 = new DetachedVertex(2, Vertex.DEFAULT_LABEL, new HashMap<>());
- final List<Vertex> v = Arrays.asList(v1, v2);
return Arrays.asList(
- __.addE(Direction.IN, "knows", v1),
- __.addE(Direction.IN, "knows", v2),
- __.addE(Direction.IN, "knows", v.iterator()),
- __.addE(Direction.OUT, "knows", v1),
- __.addE(Direction.IN, "knows", v1, "weight", 0),
- __.addE(Direction.IN, "knows", v1, "weight", 1),
- __.addE(Direction.IN, "knows", v.iterator(), "weight", 0)
+ __.addE(Direction.IN, "knows", "x"),
+ __.addE(Direction.IN, "knows", "y"),
+ __.addE(Direction.OUT, "knows", "x"),
+ __.addE(Direction.IN, "knows", "x", "weight", 0),
+ __.addE(Direction.IN, "knows", "x", "weight", 1)
);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
index 75dca11..f3ad539 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
@@ -22,7 +22,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-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;
@@ -38,9 +37,7 @@ import org.junit.runners.Parameterized;
import java.util.Arrays;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
/**
@@ -94,15 +91,13 @@ public class ElementIdStrategyTraverseTest {
strategy.apply(traversal.asAdmin());
final Step s = (Step) traversal.asAdmin().getSteps().get(expectedInsertedSteps);
- if(s instanceof AddVertexStep)
+ if (s instanceof AddVertexStep)
assertTrue(ElementHelper.getKeys(((AddVertexStep) s).getKeyValues()).contains(strategy.getIdPropertyKey()));
- else if(s instanceof AddVertexStartStep)
+ else if (s instanceof AddVertexStartStep)
assertTrue(ElementHelper.getKeys(((AddVertexStartStep) s).getKeyValues()).contains(strategy.getIdPropertyKey()));
- else if(s instanceof AddEdgeByPathStep)
- assertTrue(ElementHelper.getKeys(((AddEdgeByPathStep) s).getKeyValues()).contains(strategy.getIdPropertyKey()));
- else if(s instanceof AddEdgeStep)
- assertTrue(ElementHelper.getKeys(((AddEdgeStep) s).getKeyValues()).contains(strategy.getIdPropertyKey()));
- else if(s instanceof PropertiesStep)
+ else if (s instanceof AddEdgeStep)
+ assertTrue(ElementHelper.getKeys(((AddEdgeStep) s).getPropertyKeyValues()).contains(strategy.getIdPropertyKey()));
+ else if (s instanceof PropertiesStep)
assertEquals(strategy.getIdPropertyKey(), ((PropertiesStep) s).getPropertyKeys()[0]);
else
fail("Check test definition - the expectedInsertedSteps should be the index of the step to trigger the ID substitution");
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTraverseTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTraverseTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTraverseTest.java
index 6dccc9c..97ecd94 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTraverseTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTraverseTest.java
@@ -18,18 +18,17 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
+import org.apache.tinkerpop.gremlin.process.traversal.Contains;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
-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.GraphStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.Contains;
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -43,9 +42,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
/**
@@ -118,21 +115,21 @@ public class PartitionStrategyTraverseTest {
assertEquals(1, addEdgeSteps.size());
addEdgeSteps.forEach(s -> {
- final Object[] keyValues = s.getKeyValues();
+ final Object[] keyValues = s.getPropertyKeyValues();
final List<Pair<String, Object>> pairs = ElementHelper.asPairs(keyValues);
assertEquals("test", s.getEdgeLabel());
assertEquals(d, s.getDirection());
assertTrue(pairs.stream().anyMatch(p -> p.getValue0().equals("p") && p.getValue1().equals("a")));
});
- } else if (TraversalHelper.hasStepOfAssignableClass(AddEdgeByPathStep.class, traversal.asAdmin())) {
- final Direction d = TraversalHelper.getStepsOfClass(AddEdgeByPathStep.class, traversal.asAdmin()).get(0).getDirection();
+ } else if (TraversalHelper.hasStepOfAssignableClass(AddEdgeStep.class, traversal.asAdmin())) {
+ final Direction d = TraversalHelper.getStepsOfClass(AddEdgeStep.class, traversal.asAdmin()).get(0).getDirection();
strategy.apply(traversal.asAdmin());
- final List<AddEdgeByPathStep> addEdgeSteps = TraversalHelper.getStepsOfAssignableClass(AddEdgeByPathStep.class, traversal.asAdmin());
+ final List<AddEdgeStep> addEdgeSteps = TraversalHelper.getStepsOfAssignableClass(AddEdgeStep.class, traversal.asAdmin());
assertEquals(1, addEdgeSteps.size());
addEdgeSteps.forEach(s -> {
- final Object[] keyValues = s.getKeyValues();
+ final Object[] keyValues = s.getPropertyKeyValues();
final List<Pair<String, Object>> pairs = ElementHelper.asPairs(keyValues);
assertEquals("test", s.getEdgeLabel());
assertEquals(d, s.getDirection());
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
index 5efe44f..6df5aa3 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
@@ -18,8 +18,8 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
import org.apache.tinkerpop.gremlin.structure.Edge
import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -42,8 +42,8 @@ public abstract class GroovyAddEdgeTest {
}
@Override
- public Traversal<Vertex, Edge> get_g_V_addOutEXexistsWith__g_V__time_nowX() {
- TraversalScriptHelper.compute("g.V.addOutE('existsWith', g.V, 'time', 'now')", g)
+ public Traversal<Vertex, Edge> get_g_withSideEffectXx__g_V_toListX_addOutEXexistsWith_x_time_nowX() {
+ TraversalScriptHelper.compute("g.withSideEffect('x',g.V.toList()).V.addOutE('existsWith', 'x', 'time', 'now')", g)
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy
index ecba410..889c118 100644
--- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy
+++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.groovy.function.GSupplier
import org.apache.tinkerpop.gremlin.groovy.function.GUnaryOperator
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
+import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -36,6 +37,10 @@ class StepLoader {
return ((GraphTraversal) delegate).by(1 == closure.getMaximumNumberOfParameters() ? new GFunction(closure) : new GComparator(closure));
}
+ GraphTraversalSource.metaClass.withSideEffect = { final String key, final Object object ->
+ return ((GraphTraversalSource) delegate).withSideEffect(key, object instanceof Closure ? new GSupplier((Closure) object) : new ConstantSupplier<>(object));
+ }
+
GraphTraversalSource.metaClass.withSack = { final Closure closure ->
return ((GraphTraversalSource) delegate).withSack(new GSupplier(closure));
}
@@ -44,6 +49,13 @@ class StepLoader {
return ((GraphTraversalSource) delegate).withSack(new GSupplier(closure), new GUnaryOperator(operator));
}
+ ///////////////////
+
+ GraphTraversalSource.GraphTraversalSourceStub.metaClass.withSideEffect = {
+ final String key, final Object object ->
+ return (((GraphTraversalSource.GraphTraversalSourceStub) delegate).withSideEffect(key, object instanceof Closure ? new GSupplier((Closure) object) : new ConstantSupplier<>(object)));
+ }
+
GraphTraversalSource.GraphTraversalSourceStub.metaClass.withSack = { final Closure closure ->
return ((GraphTraversalSource.GraphTraversalSourceStub) delegate).withSack(new GSupplier(closure));
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
index e2f798c..d7c4ad1 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
@@ -320,7 +320,7 @@ public abstract class WhereTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Vertex> get_g_withSideEffectXa_graph_verticesX2XX_VX1X_out_whereXneqXaXX(final Object v1Id, final Object v2Id) {
- return g.withSideEffect("a", () -> graph.vertices(v2Id).next()).V(v1Id).out().where(neq("a"));
+ return g.withSideEffect("a", graph.vertices(v2Id).next()).V(v1Id).out().where(neq("a"));
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
index 66a3808..bf44370 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
@@ -23,7 +23,6 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -46,7 +45,7 @@ public abstract class AddEdgeTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_a_weight_2X(final Object v1Id);
- public abstract Traversal<Vertex, Edge> get_g_V_addOutEXexistsWith__g_V__time_nowX();
+ public abstract Traversal<Vertex, Edge> get_g_withSideEffectXx__g_V_toListX_addOutEXexistsWith_x_time_nowX();
@Test
@LoadGraphWith(MODERN)
@@ -92,7 +91,7 @@ public abstract class AddEdgeTest extends AbstractGremlinProcessTest {
@LoadGraphWith(MODERN)
@FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
public void g_V_addOutEXexistsWith__g_V__time_nowX() {
- final Traversal<Vertex, Edge> traversal = get_g_V_addOutEXexistsWith__g_V__time_nowX();
+ final Traversal<Vertex, Edge> traversal = get_g_withSideEffectXx__g_V_toListX_addOutEXexistsWith_x_time_nowX();
printTraversalForm(traversal);
int count = 0;
while (traversal.hasNext()) {
@@ -124,8 +123,8 @@ public abstract class AddEdgeTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, Edge> get_g_V_addOutEXexistsWith__g_V__time_nowX() {
- return g.V().addOutE("existsWith", g.V(), "time", "now");
+ public Traversal<Vertex, Edge> get_g_withSideEffectXx__g_V_toListX_addOutEXexistsWith_x_time_nowX() {
+ return g.withSideEffect("x",g.V().toList()).V().addOutE("existsWith", "x", "time", "now");
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
index 334f4e0..8d6d6e4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
@@ -158,7 +158,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
final ElementIdStrategy strategy = ElementIdStrategy.build().create();
final GraphTraversalSource sg = create(strategy);
final Vertex v = sg.addV().next();
- final Edge e = sg.V(v).addE(Direction.OUT, "self", v, "test", "value", T.id, "some-id").next();
+ final Edge e = sg.withSideEffect("v",() -> v).V(v).addE(Direction.OUT, "self", "v", "test", "value", T.id, "some-id").next();
assertEquals("value", e.value("test"));
assertEquals("some-id", sg.E(e).id().next());
assertEquals("some-id", sg.E("some-id").id().next());
@@ -170,7 +170,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
final ElementIdStrategy strategy = ElementIdStrategy.build().create();
final GraphTraversalSource sg = create(strategy);
final Vertex v = sg.addV().next();
- final Edge e = sg.V(v).addE(Direction.OUT, "self", v, "test", "value").next();
+ final Edge e = sg.withSideEffect("v",() -> v).V(v).addE(Direction.OUT, "self", "v", "test", "value").next();
assertEquals("value", e.value("test"));
assertNotNull(UUID.fromString(sg.E(e).id().next().toString()));
}
@@ -181,7 +181,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
final GraphTraversalSource sg = create(strategy);
final Vertex v = sg.addV().next();
- final Edge e = sg.V(v).addE(Direction.OUT, "self", v, "test", "value", T.id, "some-id").next();
+ final Edge e = sg.withSideEffect("v",() -> v).V(v).addE(Direction.OUT, "self", "v", "test", "value", T.id, "some-id").next();
assertEquals("value", e.value("test"));
assertEquals("some-id", e.value("name"));
assertEquals("some-id", sg.E(e).id().next());
@@ -194,7 +194,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
final GraphTraversalSource sg = create(strategy);
final Vertex v = sg.addV().next();
- final Edge e = sg.V(v).addE(Direction.OUT, "self", v, "test", "value", "name", "some-id").next();
+ final Edge e = sg.withSideEffect("v",() -> v).V(v).addE(Direction.OUT, "self", "v", "test", "value", "name", "some-id").next();
assertEquals("value", e.value("test"));
assertEquals("some-id", e.value("name"));
assertEquals("some-id", sg.E(e).id().next());
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/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 da82a0d..e07b38d 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
@@ -93,7 +93,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
v.addEdge("self", v);
final GraphTraversalSource gts = create(eventStrategy);
- gts.V(v).addOutE("self", v).next();
+ gts.withSideEffect("v",()->v).V(v).addOutE("self", "v").next();
tryCommit(graph, g -> assertEquals(2, IteratorUtils.count(gts.E())));
@@ -210,7 +210,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
v.addEdge("self", v);
final GraphTraversalSource gts = create(eventStrategy);
- gts.V(v).addOutE("self", v).property("some", "thing").next();
+ gts.withSideEffect("v",v).V(v).addOutE("self", "v").property("some", "thing").next();
tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.E().has("some", "thing"))));
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c387430d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
index cf0d366..67fe639 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
@@ -20,7 +20,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
import org.apache.tinkerpop.gremlin.FeatureRequirementSet;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -28,9 +27,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.*;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
@@ -58,7 +55,7 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
final GraphTraversalSource source = create(partitionStrategy);
final Vertex v1 = source.addV("any", "thing").next();
final Vertex v2 = source.addV("some", "thing").next();
- final Edge e = source.V(v1.id()).addInE("connectsTo", v2, "every", "thing").next();
+ final Edge e = source.withSideEffect("v2", v2).V(v1.id()).addInE("connectsTo", "v2", "every", "thing").next();
assertNotNull(v1);
assertEquals("thing", v1.property("any").value());
@@ -146,7 +143,7 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
final GraphTraversalSource sourceA = create(partitionStrategyA);
final Vertex vA = sourceAA.addV("any", "a").next();
- final Edge e = sourceAA.V(vA.id()).addOutE("knows", vA).next();
+ final Edge e = sourceAA.withSideEffect("vA", vA).V(vA.id()).addOutE("knows", "vA").next();
assertEquals(e.id(), g.E(e.id()).id().next());
try {
@@ -199,14 +196,14 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
final Vertex vA = sourceAA.addV("any", "a").next();
final Vertex vAA = sourceAA.addV("any", "aa").next();
- final Edge eAtoAA = sourceAA.V(vA.id()).addOutE("a->a", vAA).next();
+ final Edge eAtoAA = sourceAA.withSideEffect("vAA", vAA).V(vA.id()).addOutE("a->a", "vAA").next();
final Vertex vB = sourceBA.addV("any", "b").next();
- sourceBA.V(vA.id()).addOutE("a->b", vB).next();
+ sourceBA.withSideEffect("vB", vB).V(vA.id()).addOutE("a->b", "vB").next();
final Vertex vC = sourceCAB.addV("any", "c").next();
- final Edge eBtovC = sourceCAB.V(vB.id()).addOutE("b->c", vC).next();
- final Edge eAtovC = sourceCAB.V(vA.id()).addOutE("a->c", vC).next();
+ final Edge eBtovC = sourceCAB.withSideEffect("vC", vC).V(vB.id()).addOutE("b->c", "vC").next();
+ final Edge eAtovC = sourceCAB.withSideEffect("vC", vC).V(vA.id()).addOutE("a->c", "vC").next();
assertEquals(0, IteratorUtils.count(sourceC.V()));
assertEquals(0, IteratorUtils.count(sourceC.E()));