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 2019/05/03 20:23:34 UTC

[tinkerpop] branch master updated: TINKERPOP-2208 Added inject() to steps geneerated by the DSL TraversalSource CTR

This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/master by this push:
     new 30b2535  TINKERPOP-2208 Added inject() to steps geneerated by the DSL TraversalSource CTR
     new f6489b7  Merge branch 'tp33'
30b2535 is described below

commit 30b25351a43d94c13f1524ec4dc10ead2cf43fbf
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Fri May 3 16:02:18 2019 -0400

    TINKERPOP-2208 Added inject() to steps geneerated by the DSL TraversalSource CTR
---
 CHANGELOG.asciidoc                                         |  1 +
 .../gremlin/process/traversal/dsl/GremlinDslProcessor.java | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 6099549..c612084 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -24,6 +24,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 === TinkerPop 3.3.7 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 * Improved folding of `property()` step into related mutating steps.
+* Added `inject()` to steps generated on the DSL `TraversalSource`.
 * Removed `gperfutils` dependencies from Gremlin Console.
 * Fixed `PartitionStrategy` when setting vertex label and having `includeMetaProperties` configured to `true`.
 * Ensure `gremlin.sh` works when directories contain spaces.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
index e30cdf6..8397a5d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.dsl;
 
+import com.squareup.javapoet.ArrayTypeName;
 import com.squareup.javapoet.ClassName;
 import com.squareup.javapoet.JavaFile;
 import com.squareup.javapoet.MethodSpec;
@@ -34,6 +35,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -329,6 +331,18 @@ public class GremlinDslProcessor extends AbstractProcessor {
                     .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, $T.class, true, edgeIds))", ctx.traversalClassName, GraphStep.class, Edge.class)
                     .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Edge.class), ClassName.get(Edge.class)))
                     .build());
+            traversalSourceClass.addMethod(MethodSpec.methodBuilder("inject")
+                    .addModifiers(Modifier.PUBLIC)
+                    .addAnnotation(Override.class)
+                    .addParameter(ArrayTypeName.of(TypeVariableName.get("S")), "starts")
+                    .varargs(true)
+                    .addTypeVariable(TypeVariableName.get("S"))
+                    .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
+                    .addStatement("clone.getBytecode().addStep($T.inject, starts)", GraphTraversal.Symbols.class)
+                    .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
+                    .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, starts))", ctx.traversalClassName, InjectStep.class)
+                    .returns(ParameterizedTypeName.get(ctx.traversalClassName, TypeVariableName.get("S"), TypeVariableName.get("S")))
+                    .build());
             traversalSourceClass.addMethod(MethodSpec.methodBuilder("getAnonymousTraversalClass")
                     .addModifiers(Modifier.PUBLIC)
                     .addAnnotation(Override.class)