You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/06/29 23:11:52 UTC

tinkerpop git commit: tada. found the bug. jesus -- what a waste of a day. damn you kuppitz.

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 ed47e948d -> cc7ce8900


tada. found the bug. jesus -- what a waste of a day. damn you kuppitz.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/cc7ce890
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/cc7ce890
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/cc7ce890

Branch: refs/heads/TINKERPOP-1278
Commit: cc7ce890011df35f042942d119f1094ec99daa2e
Parents: ed47e94
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jun 29 17:11:49 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Jun 29 17:11:49 2016 -0600

----------------------------------------------------------------------
 .../dsl/graph/GraphTraversalSource.java         |  1 -
 .../java/translator/PythonTranslator.java       | 43 +++++++++++++++-----
 .../groovy/PythonGroovyTranslator.java          |  7 ++--
 .../jython/PythonJythonTranslator.java          |  7 ++--
 4 files changed, 41 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc7ce890/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
index f5cdc64..7375431 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
@@ -56,7 +56,6 @@ public class GraphTraversalSource implements TraversalSource {
         this.graph = graph;
         this.strategies = traversalStrategies;
         this.strategies.setTranslator(new StepTranslator());
-        __.setAnonymousTraversalFunction(null); // TODO: work to remove
     }
 
     public GraphTraversalSource(final Graph graph) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc7ce890/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslator.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslator.java
index bcfbf2b..27972d0 100644
--- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslator.java
+++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslator.java
@@ -23,14 +23,16 @@ import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
+import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
 import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
-import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TranslatorHelper;
 import org.apache.tinkerpop.gremlin.python.util.SymbolHelper;
 import org.apache.tinkerpop.gremlin.structure.Element;
@@ -53,7 +55,7 @@ import java.util.stream.Stream;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class PythonTranslator implements Translator {
+public class PythonTranslator implements Translator<Traversal.Admin<?, ?>, TraversalSource> {
 
     private static final Set<String> STEP_NAMES = Stream.of(GraphTraversal.class.getMethods()).filter(method -> Traversal.class.isAssignableFrom(method.getReturnType())).map(Method::getName).collect(Collectors.toSet());
     private static final Set<String> NO_STATIC = Stream.of(T.values(), Operator.values())
@@ -107,22 +109,21 @@ public class PythonTranslator implements Translator {
         return traversal;
     }
 
-    @Override
-    public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
+    private void updateTraversalScript(final String methodName, final Object... arguments) {
         // flatten the arguments into a single array
         final List<Object> objects = TranslatorHelper.flattenArguments(arguments);
         final int size = objects.size();
         if (0 == size)
-            this.traversalScript.append(".").append(SymbolHelper.toPython(stepName)).append("()");
-        else if (stepName.equals("range") && 2 == size)
+            this.traversalScript.append(".").append(SymbolHelper.toPython(methodName)).append("()");
+        else if (methodName.equals("range") && 2 == size)
             this.traversalScript.append("[").append(objects.get(0)).append(":").append(objects.get(1)).append("]");
-        else if (stepName.equals("limit") && 1 == size)
+        else if (methodName.equals("limit") && 1 == size)
             this.traversalScript.append("[0:").append(objects.get(0)).append("]");
-        else if (stepName.equals("values") && 1 == size && traversalScript.length() > 3 && !STEP_NAMES.contains(objects.get(0).toString()))
+        else if (methodName.equals("values") && 1 == size && traversalScript.length() > 3 && !STEP_NAMES.contains(objects.get(0).toString()))
             this.traversalScript.append(".").append(objects.get(0));
         else {
             this.traversalScript.append(".");
-            String temp = SymbolHelper.toPython(stepName) + "(";
+            String temp = SymbolHelper.toPython(methodName) + "(";
             for (final Object object : objects) {
                 temp = temp + convertToString(object) + ",";
             }
@@ -137,6 +138,28 @@ public class PythonTranslator implements Translator {
     }
 
     @Override
+    public Traversal.Admin<?, ?> addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
+        this.updateTraversalScript(stepName, arguments);
+        return traversal;
+    }
+
+    @Override
+    public Traversal.Admin<?, ?> addSpawnStep(final TraversalSource traversalSource, String stepName, Object... arguments) {
+        final TraversalSource clone = traversalSource.clone();
+        ((PythonTranslator) clone.getStrategies().getTranslator()).updateTraversalScript(stepName, arguments);
+        final Traversal.Admin<?, ?> traversal = new DefaultGraphTraversal<>(clone.getGraph());
+        traversal.setStrategies(clone.getStrategies());
+        return traversal;
+    }
+
+    @Override
+    public TraversalSource addSource(final TraversalSource traversalSource, String sourceName, Object... arguments) {
+        final TraversalSource clone = traversalSource.clone();
+        ((PythonTranslator) clone.getStrategies().getTranslator()).updateTraversalScript(sourceName, arguments);
+        return clone;
+    }
+
+    @Override
     public PythonTranslator clone() {
         try {
             final PythonTranslator clone = (PythonTranslator) super.clone();
@@ -180,7 +203,7 @@ public class PythonTranslator implements Translator {
         else if (object instanceof Element)
             return convertToString(((Element) object).id()); // hack
         else if (object instanceof Traversal)
-            return ((Traversal) object).asAdmin().getStrategies().getStrategy(TranslationStrategy.class).get().getTranslator().getTraversalScript();
+            return ((Traversal) object).asAdmin().getStrategies().getTranslator().getTraversalScript();
         else if (object instanceof Computer) {
             return "";
         } else if (object instanceof Lambda) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc7ce890/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
index c2070cb..8486e05 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
@@ -20,8 +20,8 @@
 package org.apache.tinkerpop.gremlin.java.translator.groovy;
 
 import org.apache.tinkerpop.gremlin.java.translator.PythonTranslator;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 
@@ -47,10 +47,11 @@ public class PythonGroovyTranslator extends PythonTranslator {
     }
 
     @Override
-    public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
-        super.addStep(traversal, stepName, arguments);
+    public Traversal.Admin<?, ?> addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
+        final Traversal.Admin<?, ?> temp = super.addStep(traversal, stepName, arguments);
         if (!this.importStatics)
             assert this.traversalScript.toString().startsWith(this.alias + ".");
+        return temp;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc7ce890/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
index 2e59432..068b566 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
@@ -20,8 +20,8 @@
 package org.apache.tinkerpop.gremlin.java.translator.jython;
 
 import org.apache.tinkerpop.gremlin.java.translator.PythonTranslator;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 
@@ -47,10 +47,11 @@ public class PythonJythonTranslator extends PythonTranslator {
     }
 
     @Override
-    public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
-        super.addStep(traversal, stepName, arguments);
+    public Traversal.Admin<?, ?> addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
+        final Traversal.Admin<?, ?> temp = super.addStep(traversal, stepName, arguments);
         if (!this.importStatics)
             assert this.traversalScript.toString().startsWith(this.alias + ".");
+        return temp;
     }
 
     @Override