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/27 22:32:39 UTC

tinkerpop git commit: 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 __ m

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 <ok...@gmail.com>
Authored: Mon Jun 27 16:32:35 2016 -0600
Committer: Marko A. Rodriguez <ok...@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);
     }