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