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/05/26 12:24:37 UTC
[24/38] tinkerpop git commit: TINKERPOP-786 Refactoring the DSL
processor
TINKERPOP-786 Refactoring the DSL processor
Abstracted some duplicate code to a single method to clean up a bit more.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/db9343f0
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/db9343f0
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/db9343f0
Branch: refs/heads/tp32
Commit: db9343f09bff33d4d8f178afc4f3ddc2a9cdbf51
Parents: 7963dc2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 12 10:31:39 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue May 16 11:02:31 2017 -0400
----------------------------------------------------------------------
.../traversal/dsl/GremlinDslProcessor.java | 103 +++++--------------
1 file changed, 27 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/db9343f0/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 3358143..5088d21 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
@@ -152,26 +152,7 @@ public class GremlinDslProcessor extends AbstractProcessor {
methodToAdd.addTypeVariable(TypeVariableName.get(((TypeVariable) rtm).asElement().getSimpleName().toString()));
});
- boolean added = false;
- final List<? extends VariableElement> parameters = templateMethod.getParameters();
- String body = "return __.<S>start().$L(";
- for (VariableElement param : parameters) {
- methodToAdd.addParameter(ParameterSpec.get(param));
-
- body = body + param.getSimpleName() + ",";
- added = true;
- }
-
- // treat a final array as a varargs param
- if (!parameters.isEmpty() && parameters.get(parameters.size() - 1).asType().getKind() == TypeKind.ARRAY)
- methodToAdd.varargs(true);
-
- if (added) body = body.substring(0, body.length() - 1);
-
- body = body + ")";
-
- methodToAdd.addStatement(body, methodName);
-
+ addMethodBody(methodToAdd, templateMethod, "return __.<S>start().$L(", ")", methodName);
anonymousClass.addMethod(methodToAdd.build());
}
@@ -189,37 +170,17 @@ public class GremlinDslProcessor extends AbstractProcessor {
templateMethod.getTypeParameters().forEach(tp -> methodToAdd.addTypeVariable(TypeVariableName.get(tp)));
- boolean added = false;
- final List<? extends VariableElement> parameters = templateMethod.getParameters();
- String body;
if (methodName.equals("__")) {
- for (VariableElement param : parameters) {
+ for (VariableElement param : templateMethod.getParameters()) {
methodToAdd.addParameter(ParameterSpec.get(param));
}
methodToAdd.varargs(true);
-
- body = "return inject(starts)";
+ methodToAdd.addStatement("return inject(starts)", methodName);
} else {
- body = "return __.<A>start().$L(";
- for (VariableElement param : parameters) {
- methodToAdd.addParameter(ParameterSpec.get(param));
-
- body = body + param.getSimpleName() + ",";
- added = true;
- }
-
- // treat a final array as a varargs param
- if (!parameters.isEmpty() && parameters.get(parameters.size() - 1).asType().getKind() == TypeKind.ARRAY)
- methodToAdd.varargs(true);
-
- if (added) body = body.substring(0, body.length() - 1);
-
- body = body + ")";
+ addMethodBody(methodToAdd, templateMethod, "return __.<A>start().$L(", ")", methodName);
}
- methodToAdd.addStatement(body, methodName);
-
anonymousClass.addMethod(methodToAdd.build());
}
@@ -262,26 +223,10 @@ public class GremlinDslProcessor extends AbstractProcessor {
.addModifiers(Modifier.PUBLIC)
.addAnnotation(Override.class);
- boolean added = false;
- final List<? extends VariableElement> parameters = templateMethod.getParameters();
- String body = "return new $T (clone, super.$L(";
- for (VariableElement param : parameters) {
- methodToAdd.addParameter(ParameterSpec.get(param));
-
- body = body + param.getSimpleName() + ",";
- added = true;
- }
-
- // treat a final array as a varargs param
- if (!parameters.isEmpty() && parameters.get(parameters.size() - 1).asType().getKind() == TypeKind.ARRAY)
- methodToAdd.varargs(true);
-
- if (added) body = body.substring(0, body.length() - 1);
-
- body = body + ").asAdmin())";
- methodToAdd.addStatement("$T clone = this.clone()", ctx.traversalSourceClassName)
- .addStatement(body, ctx.defaultTraversalClassName, templateMethod.getSimpleName())
- .returns(getReturnTypeDefinition(ctx.traversalClassName, templateMethod));
+ methodToAdd.addStatement("$T clone = this.clone()", ctx.traversalSourceClassName);
+ addMethodBody(methodToAdd, templateMethod, "return new $T (clone, super.$L(", ").asAdmin())",
+ ctx.defaultTraversalClassName, templateMethod.getSimpleName());
+ methodToAdd.returns(getReturnTypeDefinition(ctx.traversalClassName, templateMethod));
traversalSourceClass.addMethod(methodToAdd.build());
}
@@ -446,27 +391,33 @@ public class GremlinDslProcessor extends AbstractProcessor {
templateMethod.getTypeParameters().forEach(tp -> methodToAdd.addTypeVariable(TypeVariableName.get(tp)));
- boolean added = false;
- final List<? extends VariableElement> parameters = templateMethod.getParameters();
final String parentCall = parent.isEmpty() ? "" : parent + ".";
- String body = "return ($T) " + parentCall + "super.$L(";
- for (VariableElement param : parameters) {
- methodToAdd.addParameter(ParameterSpec.get(param));
+ final String body = "return ($T) " + parentCall + "super.$L(";
+ addMethodBody(methodToAdd, templateMethod, body, ")", returnClazz, methodName);
+
+ return methodToAdd.build();
+ }
+
+ private void addMethodBody(final MethodSpec.Builder methodToAdd, final ExecutableElement templateMethod,
+ final String startBody, final String endBody, final Object... statementArgs) {
+ final List<? extends VariableElement> parameters = templateMethod.getParameters();
+ String body = startBody;
- body = body + param.getSimpleName() + ",";
- added = true;
+ final int numberOfParams = parameters.size();
+ for (int ix = 0; ix < numberOfParams; ix++) {
+ final VariableElement param = parameters.get(ix);
+ methodToAdd.addParameter(ParameterSpec.get(param));
+ body = body + param.getSimpleName();
+ if (ix < numberOfParams - 1) body = body + ",";
}
+ body = body + endBody;
+
// treat a final array as a varargs param
if (!parameters.isEmpty() && parameters.get(parameters.size() - 1).asType().getKind() == TypeKind.ARRAY)
methodToAdd.varargs(true);
- if (added) body = body.substring(0, body.length() - 1);
-
- body = body + ")";
- methodToAdd.addStatement(body, returnClazz, methodName);
-
- return methodToAdd.build();
+ methodToAdd.addStatement(body, statementArgs);
}
private TypeName getReturnTypeDefinition(final ClassName returnClazz, final ExecutableElement templateMethod) {