Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1278 0e758ec59 -> 0a1b46ce0
Jython was selecting the wrong GraphTraversal.property() method and thus, updated GraphTraversal and __ to do a check on the first argument to see if a reroute is needed. Similar things have been done to both GraphTraversal and __ methods for Groovy as well, so its okay to cater. With this, two more tests that were Ignored are now opened up. GremlinJythonScriptEngineFactory now extends PyScriptEngineFactory and overwrites only necessary methods. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0a1b46ce Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0a1b46ce Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0a1b46ce Branch: refs/heads/TINKERPOP-1278 Commit: 0a1b46ce0d436002e8abf9ae74a7ba7324fe093e Parents: 0e758ec Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Mon Jun 27 16:32:35 2016 -0600 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Mon Jun 27 16:32:35 2016 -0600 ---------------------------------------------------------------------- .../traversal/dsl/graph/GraphTraversal.java | 7 ++++- .../jsr223/GremlinJythonScriptEngine.java | 2 +- .../GremlinJythonScriptEngineFactory.java | 27 +++----------------- .../translator/PythonTranslatorProvider.java | 2 -- .../jsr223/GremlinJythonScriptEngineTest.java | 5 ++-- 5 files changed, 12 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0a1b46ce/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java index 8d89c10..170c1a9 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java @@ -1224,7 +1224,12 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> { * @param keyValues any meta properties to be assigned to this property */ public default GraphTraversal<S, E> property(final Object key, final Object value, final Object... keyValues) { - return this.property(null, key, value, keyValues); + return key instanceof VertexProperty.Cardinality ? + this.property((VertexProperty.Cardinality) key, value, keyValues[0], + keyValues.length > 1 ? + Arrays.copyOfRange(keyValues, 1, keyValues.length) : + new Object[]{}) : + this.property(null, key, value, keyValues); } ///////////////////// BRANCH STEPS ///////////////////// http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0a1b46ce/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java ---------------------------------------------------------------------- diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java index 3f78a97..4c94049 100644 --- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java +++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java @@ -67,7 +67,7 @@ public class GremlinJythonScriptEngine implements ScriptEngine { this.pyScriptEngine.eval("\n" + "from java.lang import Long\n" + - "import org.apache.tinkerpop.gremlin.util.function.Lambda\n" + + "import org.apache.tinkerpop.gremlin.util.function.Lambda\n" + // todo: remove or remove imported subclass names? (choose) "from org.apache.tinkerpop.gremlin.util.function.Lambda import AbstractLambda\n" + "from org.apache.tinkerpop.gremlin.util.function.Lambda import ZeroArgLambda\n" + "from org.apache.tinkerpop.gremlin.util.function.Lambda import OneArgLambda\n" + http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0a1b46ce/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java ---------------------------------------------------------------------- diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java index 81256ea..4150af5 100644 --- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java +++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java @@ -20,16 +20,16 @@ package org.apache.tinkerpop.gremlin.python.jsr223; import org.apache.tinkerpop.gremlin.util.Gremlin; +import org.python.jsr223.PyScriptEngineFactory; import javax.script.ScriptEngine; -import javax.script.ScriptEngineFactory; import java.util.Arrays; import java.util.List; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class GremlinJythonScriptEngineFactory implements ScriptEngineFactory { +public class GremlinJythonScriptEngineFactory extends PyScriptEngineFactory { private static final String ENGINE_NAME = "gremlin-jython"; private static final String LANGUAGE_NAME = "gremlin-jython"; @@ -62,11 +62,6 @@ public class GremlinJythonScriptEngineFactory implements ScriptEngineFactory { } @Override - public String getMethodCallSyntax(final String obj, final String m, final String... args) { - return null; - } - - @Override public List<String> getMimeTypes() { return Arrays.asList(PLAIN); } @@ -77,11 +72,6 @@ public class GremlinJythonScriptEngineFactory implements ScriptEngineFactory { } @Override - public String getOutputStatement(final String toDisplay) { - return "println " + toDisplay; - } - - @Override public Object getParameter(final String key) { if (key.equals(ScriptEngine.ENGINE)) { return this.getEngineName(); @@ -94,18 +84,7 @@ public class GremlinJythonScriptEngineFactory implements ScriptEngineFactory { } else if (key.equals(ScriptEngine.LANGUAGE_VERSION)) { return this.getLanguageVersion(); } else - return null; - } - - @Override - public String getProgram(final String... statements) { - String program = ""; - - for (String statement : statements) { - program = program + statement + "\n"; - } - - return program; + return super.getParameter(key); } @Override http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0a1b46ce/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java index 6e2f05d..7f469f5 100644 --- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java +++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java @@ -65,8 +65,6 @@ public abstract class PythonTranslatorProvider extends AbstractGraphProvider { "testProfileStrategyCallbackSideEffect", "g_withSideEffectXa_setX_V_both_name_storeXaX_capXaX", "g_VX1X_out_injectXv2X_name", - "g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenmX", // jython gets confused about the method to call in Java :| - "g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenm_since_2010X", // jython gets confused about the method to call in Java :| "shouldSupportGraphFilter", // need to get Computer implemented as a class in Gremlin-Python "shouldNeverPropagateANoBulkTraverser", "shouldNeverPropagateANullValuedTraverser", http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0a1b46ce/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java ---------------------------------------------------------------------- diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java index 819c722..28b407b 100644 --- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java +++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java @@ -25,10 +25,8 @@ import org.apache.tinkerpop.gremlin.structure.Column; import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.structure.VertexProperty; import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory; -import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph; import org.junit.Test; -import javax.script.Bindings; import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; @@ -69,7 +67,8 @@ public class GremlinJythonScriptEngineTest { assertEquals(VertexProperty.Cardinality.single, engine.eval("Cardinality.valueOf(\'single\')")); assertTrue(engine.eval("out()") instanceof GraphTraversal); assertTrue(engine.eval("__.out()") instanceof GraphTraversal); - // assertTrue(engine.eval("__.property(Cardinality.single, 'name','marko')") instanceof GraphTraversal); + assertTrue(engine.eval("__.property(VertexProperty.Cardinality.single, 'name','marko')") instanceof GraphTraversal); + assertTrue(engine.eval("__.property(Cardinality.single, 'name','marko')") instanceof GraphTraversal); }