added an auto-attachment feature to AddEdgeStep. Forgot to commit this in the last push.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/bc6eccba Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/bc6eccba Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/bc6eccba Branch: refs/heads/tp32 Commit: bc6eccba78a34a431bd21dc256538f23c8a78c2f Parents: 1f82398 Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Thu Jul 20 15:15:19 2017 -0600 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Thu Jul 20 15:15:19 2017 -0600 ---------------------------------------------------------------------- .../process/traversal/step/map/AddEdgeStep.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bc6eccba/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 03a2fa7..c64f455 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 @@ -34,11 +34,10 @@ import org.apache.tinkerpop.gremlin.structure.Edge; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.apache.tinkerpop.gremlin.structure.util.Attachable; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory; -import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Set; @@ -81,19 +80,26 @@ public final class AddEdgeStep<S> extends MapStep<S, Edge> } @Override - public void addTo(final Traversal.Admin<?,?> toObject) { + public void addTo(final Traversal.Admin<?, ?> toObject) { this.parameters.set(this, TO, toObject); } @Override - public void addFrom(final Traversal.Admin<?,?> fromObject) { + public void addFrom(final Traversal.Admin<?, ?> fromObject) { this.parameters.set(this, FROM, fromObject); } @Override protected Edge map(final Traverser.Admin<S> traverser) { - final Vertex toVertex = this.parameters.get(traverser, TO, () -> (Vertex) traverser.get()).get(0); - final Vertex fromVertex = this.parameters.get(traverser, FROM, () -> (Vertex) traverser.get()).get(0); + Vertex toVertex = this.parameters.get(traverser, TO, () -> (Vertex) traverser.get()).get(0); + Vertex fromVertex = this.parameters.get(traverser, FROM, () -> (Vertex) traverser.get()).get(0); + if (this.getTraversal().getGraph().isPresent()) { + final Graph graph = this.getTraversal().getGraph().get(); + if (toVertex instanceof Attachable) + toVertex = ((Attachable<Vertex>) toVertex).attach(Attachable.Method.get(graph)); + if (fromVertex instanceof Attachable) + fromVertex = ((Attachable<Vertex>) fromVertex).attach(Attachable.Method.get(graph)); + } final String edgeLabel = this.parameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0); final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, this.parameters.getKeyValues(traverser, TO, FROM, T.label));