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:59:16 UTC

[25/50] [abbrv] 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/TINKERPOP-1489
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) {