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 2017/04/28 19:00:46 UTC
[5/8] tinkerpop git commit: TINKERPOP-786 Extracted logic for
DefaultTraversal generation for DSLs
TINKERPOP-786 Extracted logic for DefaultTraversal generation for DSLs
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e54051f1
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e54051f1
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e54051f1
Branch: refs/heads/TINKERPOP-786
Commit: e54051f1626992f6e279e5ea24b7423129835e7e
Parents: 9e016fc
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Apr 27 15:19:46 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Apr 27 15:19:46 2017 -0400
----------------------------------------------------------------------
.../traversal/dsl/GremlinDslProcessor.java | 96 ++++++++++----------
1 file changed, 50 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e54051f1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
----------------------------------------------------------------------
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 5a1a6bd..f9d5a40 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
@@ -95,52 +95,9 @@ public class GremlinDslProcessor extends AbstractProcessor {
// GremlinDsl annotation on it
generateTraversalInterface(ctx);
- // START write of the "DefaultTraversal" class
- final TypeSpec.Builder defaultTraversalClass = TypeSpec.classBuilder(ctx.defaultTraversalClazz)
- .addModifiers(Modifier.PUBLIC)
- .addTypeVariables(Arrays.asList(TypeVariableName.get("S"), TypeVariableName.get("E")))
- .superclass(TypeName.get(elementUtils.getTypeElement(DefaultTraversal.class.getCanonicalName()).asType()))
- .addSuperinterface(ParameterizedTypeName.get(ctx.traversalClassName, TypeVariableName.get("S"), TypeVariableName.get("E")));
-
- // add the required constructors for instantiation
- defaultTraversalClass.addMethod(MethodSpec.constructorBuilder()
- .addModifiers(Modifier.PUBLIC)
- .addStatement("super()")
- .build());
- defaultTraversalClass.addMethod(MethodSpec.constructorBuilder()
- .addModifiers(Modifier.PUBLIC)
- .addParameter(Graph.class, "graph")
- .addStatement("super($N)", "graph")
- .build());
- defaultTraversalClass.addMethod(MethodSpec.constructorBuilder()
- .addModifiers(Modifier.PUBLIC)
- .addParameter(ctx.traversalSourceClassName, "traversalSource")
- .addStatement("super($N)", "traversalSource")
- .build());
-
- // add the override
- defaultTraversalClass.addMethod(MethodSpec.methodBuilder("iterate")
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Override.class)
- .addStatement("return ($T) super.iterate()", ctx.traversalClassName)
- .returns(ParameterizedTypeName.get(ctx.traversalClassName, TypeVariableName.get("S"), TypeVariableName.get("E")))
- .build());
- defaultTraversalClass.addMethod(MethodSpec.methodBuilder("asAdmin")
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Override.class)
- .addStatement("return ($T) super.asAdmin()", GraphTraversal.Admin.class)
- .returns(ParameterizedTypeName.get(ctx.graphTraversalAdminClassName, TypeVariableName.get("S"), TypeVariableName.get("E")))
- .build());
- defaultTraversalClass.addMethod(MethodSpec.methodBuilder("clone")
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Override.class)
- .addStatement("return ($T) super.clone()", ctx.defaultTraversalClassName)
- .returns(ParameterizedTypeName.get(ctx.defaultTraversalClassName, TypeVariableName.get("S"), TypeVariableName.get("E")))
- .build());
-
- final JavaFile defaultTraversalJavaFile = JavaFile.builder(ctx.packageName, defaultTraversalClass.build()).build();
- defaultTraversalJavaFile.writeTo(filer);
- // END write of the "DefaultTraversal" class
+ // create the "DefaultTraversal" class which implements the above generated "Traversal" and can then
+ // be used by the "TraversalSource" generated below to spawn new traversal instances
+ generateDefaultTraversal(ctx);
// START write "TraversalSource" class
final TypeElement graphTraversalSourceElement = elementUtils.getTypeElement(GraphTraversalSource.class.getCanonicalName());
@@ -225,6 +182,53 @@ public class GremlinDslProcessor extends AbstractProcessor {
return true;
}
+ private void generateDefaultTraversal(final Context ctx) throws IOException {
+ final TypeSpec.Builder defaultTraversalClass = TypeSpec.classBuilder(ctx.defaultTraversalClazz)
+ .addModifiers(Modifier.PUBLIC)
+ .addTypeVariables(Arrays.asList(TypeVariableName.get("S"), TypeVariableName.get("E")))
+ .superclass(TypeName.get(elementUtils.getTypeElement(DefaultTraversal.class.getCanonicalName()).asType()))
+ .addSuperinterface(ParameterizedTypeName.get(ctx.traversalClassName, TypeVariableName.get("S"), TypeVariableName.get("E")));
+
+ // add the required constructors for instantiation
+ defaultTraversalClass.addMethod(MethodSpec.constructorBuilder()
+ .addModifiers(Modifier.PUBLIC)
+ .addStatement("super()")
+ .build());
+ defaultTraversalClass.addMethod(MethodSpec.constructorBuilder()
+ .addModifiers(Modifier.PUBLIC)
+ .addParameter(Graph.class, "graph")
+ .addStatement("super($N)", "graph")
+ .build());
+ defaultTraversalClass.addMethod(MethodSpec.constructorBuilder()
+ .addModifiers(Modifier.PUBLIC)
+ .addParameter(ctx.traversalSourceClassName, "traversalSource")
+ .addStatement("super($N)", "traversalSource")
+ .build());
+
+ // add the override
+ defaultTraversalClass.addMethod(MethodSpec.methodBuilder("iterate")
+ .addModifiers(Modifier.PUBLIC)
+ .addAnnotation(Override.class)
+ .addStatement("return ($T) super.iterate()", ctx.traversalClassName)
+ .returns(ParameterizedTypeName.get(ctx.traversalClassName, TypeVariableName.get("S"), TypeVariableName.get("E")))
+ .build());
+ defaultTraversalClass.addMethod(MethodSpec.methodBuilder("asAdmin")
+ .addModifiers(Modifier.PUBLIC)
+ .addAnnotation(Override.class)
+ .addStatement("return ($T) super.asAdmin()", GraphTraversal.Admin.class)
+ .returns(ParameterizedTypeName.get(ctx.graphTraversalAdminClassName, TypeVariableName.get("S"), TypeVariableName.get("E")))
+ .build());
+ defaultTraversalClass.addMethod(MethodSpec.methodBuilder("clone")
+ .addModifiers(Modifier.PUBLIC)
+ .addAnnotation(Override.class)
+ .addStatement("return ($T) super.clone()", ctx.defaultTraversalClassName)
+ .returns(ParameterizedTypeName.get(ctx.defaultTraversalClassName, TypeVariableName.get("S"), TypeVariableName.get("E")))
+ .build());
+
+ final JavaFile defaultTraversalJavaFile = JavaFile.builder(ctx.packageName, defaultTraversalClass.build()).build();
+ defaultTraversalJavaFile.writeTo(filer);
+ }
+
private void generateTraversalInterface(final Context ctx) throws IOException {
final TypeSpec.Builder traversalInterface = TypeSpec.interfaceBuilder(ctx.traversalClazz)
.addModifiers(Modifier.PUBLIC)