tinkerpop-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ok...@apache.org
Subject [2/2] tinkerpop git commit: GremlinScriptEngines now grab the bindings from Bytecode.getBindings() during eval(Bytecode). That is, the bindings are in the Bytecode. Refactored test packages as they were using the old xxx.translator packaging namespace. S
Date Mon, 08 Aug 2016 17:24:09 GMT
GremlinScriptEngines now grab the bindings from Bytecode.getBindings() during eval(Bytecode). That is, the bindings are in the Bytecode. Refactored test packages as they were using the old xxx.translator packaging namespace. Staged TranslationStrategy for its removal as a core strategy -- only used in testing.. thus, TraversalSource.withTranslator() will go away.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 0803fdc2d9384c87dd1f5c6d18a0362b2149ecc0
Parents: e50f62c
Author: Marko A. Rodriguez <okrammarko@gmail.com>
Authored: Mon Aug 8 11:24:03 2016 -0600
Committer: Marko A. Rodriguez <okrammarko@gmail.com>
Committed: Mon Aug 8 11:24:03 2016 -0600

----------------------------------------------------------------------
 .../gremlin/jsr223/GremlinScriptEngine.java     |   5 +-
 .../gremlin/jsr223/JavaTranslator.java          | 172 +++++++++++++++++++
 .../gremlin/process/traversal/Bindings.java     |  10 +-
 .../gremlin/process/traversal/Bytecode.java     |  30 +++-
 .../strategy/creation/TranslationStrategy.java  |  10 +-
 .../process/traversal/util/JavaTranslator.java  | 172 -------------------
 .../jsr223/GremlinGroovyScriptEngine.java       |  44 ++---
 .../python/GraphTraversalSourceGenerator.groovy |   2 +-
 .../jsr223/GremlinJythonScriptEngine.java       |   4 +-
 .../gremlin_python/process/graph_traversal.py   |   4 -
 .../jython/gremlin_python/process/graphson.py   |  11 ++
 .../jsr223/PythonGraphSONJavaTranslator.java    |   2 +-
 .../gremlin/python/jsr223/PythonProvider.java   |   2 +-
 ...teGraphGroovyTranslatorComputerProvider.java |  54 ++++++
 ...raphGroovyTranslatorProcessComputerTest.java |  33 ++++
 ...raphGroovyTranslatorProcessStandardTest.java |  33 ++++
 .../RemoteGraphGroovyTranslatorProvider.java    |  36 ++++
 ...teGraphGroovyTranslatorComputerProvider.java |  54 ------
 ...raphGroovyTranslatorProcessComputerTest.java |  33 ----
 ...raphGroovyTranslatorProcessStandardTest.java |  33 ----
 .../RemoteGraphGroovyTranslatorProvider.java    |  36 ----
 .../remote/RemoteGraphProcessComputerTest.java  |  34 ++++
 .../remote/RemoteGraphProcessStandardTest.java  |  33 ++++
 .../process/RemoteGraphProcessComputerTest.java |  34 ----
 .../process/RemoteGraphProcessStandardTest.java |  33 ----
 .../java/translator/GraphSONTranslator.java     |  83 ---------
 ...GraphGraphSONTranslatorComputerProvider.java |  37 ----
 ...phGraphSONTranslatorProcessComputerTest.java |  33 ----
 ...phGraphSONTranslatorProcessStandardTest.java |  33 ----
 .../TinkerGraphGraphSONTranslatorProvider.java  |  93 ----------
 ...erGraphGroovyTranslatorComputerProvider.java |  37 ----
 ...raphGroovyTranslatorProcessComputerTest.java |  33 ----
 ...raphGroovyTranslatorProcessStandardTest.java |  33 ----
 .../TinkerGraphGroovyTranslatorProvider.java    |  76 --------
 ...nkerGraphJavaTranslatorComputerProvider.java |  37 ----
 ...rGraphJavaTranslatorProcessComputerTest.java |  33 ----
 ...rGraphJavaTranslatorProcessStandardTest.java |  33 ----
 .../TinkerGraphJavaTranslatorProvider.java      |  79 ---------
 ...erGraphGroovyTranslatorComputerProvider.java |  37 ++++
 ...raphGroovyTranslatorProcessComputerTest.java |  33 ++++
 ...raphGroovyTranslatorProcessStandardTest.java |  33 ++++
 .../TinkerGraphGroovyTranslatorProvider.java    |  76 ++++++++
 ...nkerGraphJavaTranslatorComputerProvider.java |  37 ++++
 ...rGraphJavaTranslatorProcessComputerTest.java |  33 ++++
 ...rGraphJavaTranslatorProcessStandardTest.java |  33 ++++
 .../TinkerGraphJavaTranslatorProvider.java      |  79 +++++++++
 .../structure/TinkerGraphPlayTest.java          |   3 +-
 .../io/graphson/GraphSONTranslator.java         |  83 +++++++++
 ...GraphGraphSONTranslatorComputerProvider.java |  37 ++++
 ...phGraphSONTranslatorProcessComputerTest.java |  33 ++++
 ...phGraphSONTranslatorProcessStandardTest.java |  33 ++++
 .../TinkerGraphGraphSONTranslatorProvider.java  |  93 ++++++++++
 52 files changed, 1111 insertions(+), 1086 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
index 8934b19..69ae901 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
@@ -24,7 +24,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import javax.script.Bindings;
 import javax.script.ScriptEngine;
 import javax.script.ScriptException;
-import javax.script.SimpleBindings;
 
 /**
  * A {@code GremlinScriptEngine} is an extension of the standard {@code ScriptEngine} and provides some specific
@@ -40,7 +39,9 @@ public interface GremlinScriptEngine extends ScriptEngine {
      * Evaluates {@link Traversal} {@link Bytecode}.
      */
     public default Traversal.Admin eval(final Bytecode bytecode) throws ScriptException {
-        return eval(bytecode, new SimpleBindings());
+        final Bindings bindings = this.createBindings();
+        bindings.putAll(bytecode.getBindings());
+        return eval(bytecode, bindings);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java
new file mode 100644
index 0000000..6d9e01a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java
@@ -0,0 +1,172 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.jsr223;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
+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.structure.util.StringFactory;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class JavaTranslator<S extends TraversalSource, T extends Traversal.Admin<?, ?>> implements Translator.StepTranslator<S, T> {
+
+    private final S traversalSource;
+    private final Class anonymousTraversal;
+    private final Map<String, List<Method>> traversalSourceMethodCache = new HashMap<>();
+    private final Map<String, List<Method>> traversalMethodCache = new HashMap<>();
+
+    public JavaTranslator(final S traversalSource, final Class anonymousSource) {
+        this.traversalSource = traversalSource;
+        this.anonymousTraversal = anonymousSource;
+    }
+
+    public static <S extends TraversalSource, T extends Traversal.Admin<?, ?>> JavaTranslator<S, T> of(final S traversalSource, final Class anonymousSource) {
+        return new JavaTranslator<>(traversalSource, anonymousSource);
+    }
+
+    @Override
+    public S getTraversalSource() {
+        return this.traversalSource;
+    }
+
+    @Override
+    public Class getAnonymousTraversal() {
+        return this.anonymousTraversal;
+    }
+
+    @Override
+    public T translate(final Bytecode bytecode) {
+        TraversalSource dynamicSource = this.traversalSource;
+        Traversal.Admin<?, ?> traversal = null;
+        for (final Bytecode.Instruction instruction : bytecode.getSourceInstructions()) {
+            dynamicSource = (TraversalSource) invokeMethod(dynamicSource, TraversalSource.class, instruction.getOperator(), instruction.getArguments());
+        }
+        boolean spawned = false;
+        for (final Bytecode.Instruction instruction : bytecode.getStepInstructions()) {
+            if (!spawned) {
+                traversal = (Traversal.Admin) invokeMethod(dynamicSource, Traversal.class, instruction.getOperator(), instruction.getArguments());
+                spawned = true;
+            } else
+                invokeMethod(traversal, Traversal.class, instruction.getOperator(), instruction.getArguments());
+        }
+        return (T) traversal;
+    }
+
+    @Override
+    public String getTargetLanguage() {
+        return "gremlin-java";
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.translatorString(this);
+    }
+
+    ////
+
+    private Traversal.Admin<?, ?> translateFromAnonymous(final Bytecode bytecode) {
+        try {
+            final Traversal.Admin<?, ?> traversal = (Traversal.Admin) this.anonymousTraversal.getMethod("start").invoke(null);
+            for (final Bytecode.Instruction instruction : bytecode.getStepInstructions()) {
+                invokeMethod(traversal, Traversal.class, instruction.getOperator(), instruction.getArguments());
+            }
+            return traversal;
+        } catch (final Throwable e) {
+            throw new IllegalStateException(e.getMessage());
+        }
+    }
+
+    private Object invokeMethod(final Object delegate, final Class returnType, final String methodName, final Object... arguments) {
+        // populate method cache for fast access to methods in subsequent calls
+        final Map<String, List<Method>> methodCache = delegate instanceof TraversalSource ? this.traversalSourceMethodCache : this.traversalMethodCache;
+        if (methodCache.isEmpty()) {
+            for (final Method method : delegate.getClass().getMethods()) {
+                if (!(method.getName().equals("addV") && method.getParameterCount() == 1 && method.getParameters()[0].getType().equals(Object[].class))) { // hack cause its hard to tell Object[] vs. String :|
+                    List<Method> list = methodCache.get(method.getName());
+                    if (null == list) {
+                        list = new ArrayList<>();
+                        methodCache.put(method.getName(), list);
+                    }
+                    list.add(method);
+                }
+            }
+        }
+        ///
+        for (int i = 0; i < arguments.length; i++) {
+            if (arguments[i] instanceof Bytecode.Binding)
+                arguments[i] = ((Bytecode.Binding) arguments[i]).value();
+            else if (arguments[i] instanceof Bytecode)
+                arguments[i] = translateFromAnonymous((Bytecode) arguments[i]);
+        }
+        try {
+            for (final Method method : methodCache.get(methodName)) {
+                if (returnType.isAssignableFrom(method.getReturnType())) {
+                    if (method.getParameterCount() == arguments.length || (method.getParameterCount() > 0 && method.getParameters()[method.getParameters().length - 1].isVarArgs())) {
+                        final Parameter[] parameters = method.getParameters();
+                        final Object[] newArguments = new Object[parameters.length];
+                        boolean found = true;
+                        for (int i = 0; i < parameters.length; i++) {
+                            if (parameters[i].isVarArgs()) {
+                                Object[] varArgs = (Object[]) Array.newInstance(parameters[i].getType().getComponentType(), arguments.length - i);
+                                int counter = 0;
+                                for (int j = i; j < arguments.length; j++) {
+                                    varArgs[counter++] = arguments[j];
+                                }
+                                newArguments[i] = varArgs;
+                                break;
+                            } else {
+                                if (i < arguments.length &&
+                                        (parameters[i].getType().isAssignableFrom(arguments[i].getClass()) ||
+                                                (parameters[i].getType().isPrimitive() &&
+                                                        (Number.class.isAssignableFrom(arguments[i].getClass()) ||
+                                                                arguments[i].getClass().equals(Boolean.class) ||
+                                                                arguments[i].getClass().equals(Byte.class) ||
+                                                                arguments[i].getClass().equals(Character.class))))) {
+                                    newArguments[i] = arguments[i];
+                                } else {
+                                    found = false;
+                                    break;
+                                }
+                            }
+                        }
+                        if (found) {
+                            return 0 == newArguments.length ? method.invoke(delegate) : method.invoke(delegate, newArguments);
+                        }
+                    }
+                }
+            }
+        } catch (final Throwable e) {
+            throw new IllegalStateException(e.getMessage() + ":" + methodName + "(" + Arrays.toString(arguments) + ")", e);
+        }
+        throw new IllegalStateException("Could not locate method: " + delegate.getClass().getSimpleName() + "." + methodName + "(" + Arrays.toString(arguments) + ")");
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bindings.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bindings.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bindings.java
index e641e57..b9e8aa6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bindings.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bindings.java
@@ -23,9 +23,13 @@ import java.util.HashMap;
 import java.util.Map;
 
 /**
+ * Bindings are specific to Gremlin-Java.
+ * They enable the creation of {@link org.apache.tinkerpop.gremlin.process.traversal.Bytecode.Binding} arguments in {@link Bytecode}.
+ * Use the Bindings instance when defining a binding via {@link Bindings#of(String, Object)}.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class Bindings {
+public final class Bindings {
 
     private final Map<Object, String> map = new HashMap<>();
 
@@ -34,11 +38,11 @@ public class Bindings {
         return value;
     }
 
-    public <V> String get(final V value) {
+    protected <V> String getBoundVariable(final V value) {
         return this.map.get(value);
     }
 
-    public void clear() {
+    protected void clear() {
         this.map.clear();
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
index 0ace6e9..3f9c1cc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
@@ -42,8 +42,8 @@ public final class Bytecode implements Cloneable, Serializable {
 
     private List<Instruction> sourceInstructions = new ArrayList<>();
     private List<Instruction> stepInstructions = new ArrayList<>();
+    // required for Gremlin-Java
     private transient Bindings bindings = null;
-    private Map<String, Object> map = new HashMap<>();
 
     public void addSource(final String sourceName, final Object... arguments) {
         if (sourceName.equals(TraversalSource.Symbols.withBindings)) {
@@ -69,7 +69,23 @@ public final class Bytecode implements Cloneable, Serializable {
     }
 
     public Map<String, Object> getBindings() {
-        return this.map;
+        final Map<String, Object> bindingsMap = new HashMap<>();
+        for (final Instruction instruction : this.sourceInstructions) {
+            addInstructionBindings(bindingsMap, instruction);
+        }
+        for (final Instruction instruction : this.stepInstructions) {
+            addInstructionBindings(bindingsMap, instruction);
+        }
+        return bindingsMap;
+    }
+
+    private static void addInstructionBindings(final Map<String, Object> bindingsMap, final Instruction instruction) {
+        for (final Object argument : instruction.getArguments()) {
+            if (argument instanceof Binding)
+                bindingsMap.put(((Binding) argument).variable, ((Binding) argument).value);
+            if (argument instanceof Bytecode)
+                bindingsMap.putAll(((Bytecode) argument).getBindings());
+        }
     }
 
     @Override
@@ -200,17 +216,13 @@ public final class Bytecode implements Cloneable, Serializable {
     }
 
     private final Object convertArgument(final Object argument) {
-        if (argument instanceof Traversal) {
-            ((Traversal) argument).asAdmin().getBytecode().getBindings().forEach(this.map::put);
+        if (argument instanceof Traversal)
             return ((Traversal) argument).asAdmin().getBytecode();
-        }
 
         if (null != this.bindings) {
-            final String variable = this.bindings.get(argument);
-            if (null != variable) {
-                this.map.put(variable, argument);
+            final String variable = this.bindings.getBoundVariable(argument);
+            if (null != variable)
                 return new Binding<>(variable, argument);
-            }
         }
 
         return argument;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
index 98f549d..61ee8d4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
@@ -19,6 +19,7 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.creation;
 
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
 import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
 import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
@@ -32,7 +33,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 
 import javax.script.Bindings;
 import javax.script.ScriptContext;
-import javax.script.ScriptEngine;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -64,11 +64,11 @@ public class TranslationStrategy extends AbstractTraversalStrategy<TraversalStra
         } else if (this.translator instanceof Translator.ScriptTranslator) {
             try {
                 // script based translation
-                final ScriptEngine scriptEngine = SingleGremlinScriptEngineManager.get(this.translator.getTargetLanguage());
+                final GremlinScriptEngine scriptEngine = SingleGremlinScriptEngineManager.get(this.translator.getTargetLanguage());
                 final Bindings bindings = scriptEngine.createBindings();
-                scriptEngine.getContext().getBindings(ScriptContext.ENGINE_SCOPE).forEach(bindings::put);
+                bindings.putAll(scriptEngine.getContext().getBindings(ScriptContext.ENGINE_SCOPE));
                 bindings.put(this.translator.getTraversalSource().toString(), this.traversalSource);
-                translatedTraversal = (Traversal.Admin<?, ?>) scriptEngine.eval(this.translator.translate(traversal.getBytecode()).toString(), bindings);
+                translatedTraversal = (Traversal.Admin<?, ?>) scriptEngine.eval(traversal.getBytecode(), bindings);
             } catch (final Exception e) {
                 throw new IllegalArgumentException(e.getMessage(), e);
             }
@@ -78,7 +78,7 @@ public class TranslationStrategy extends AbstractTraversalStrategy<TraversalStra
         ////////////////
         assert !translatedTraversal.isLocked();
         assert !traversal.isLocked();
-        translatedTraversal.getSideEffects().mergeInto(traversal.getSideEffects());
+        traversal.setSideEffects(translatedTraversal.getSideEffects());
         TraversalHelper.removeAllSteps(traversal);
         TraversalHelper.removeToTraversal((Step) translatedTraversal.getStartStep(), EmptyStep.instance(), traversal);
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/JavaTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/JavaTranslator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/JavaTranslator.java
deleted file mode 100644
index 891440c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/JavaTranslator.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.process.traversal.util;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
-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.structure.util.StringFactory;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.lang.reflect.Parameter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class JavaTranslator<S extends TraversalSource, T extends Traversal.Admin<?, ?>> implements Translator.StepTranslator<S, T> {
-
-    private final S traversalSource;
-    private final Class anonymousTraversal;
-    private final Map<String, List<Method>> traversalSourceMethodCache = new HashMap<>();
-    private final Map<String, List<Method>> traversalMethodCache = new HashMap<>();
-
-    public JavaTranslator(final S traversalSource, final Class anonymousSource) {
-        this.traversalSource = traversalSource;
-        this.anonymousTraversal = anonymousSource;
-    }
-
-    public static <S extends TraversalSource, T extends Traversal.Admin<?, ?>> JavaTranslator<S, T> of(final S traversalSource, final Class anonymousSource) {
-        return new JavaTranslator<>(traversalSource, anonymousSource);
-    }
-
-    @Override
-    public S getTraversalSource() {
-        return this.traversalSource;
-    }
-
-    @Override
-    public Class getAnonymousTraversal() {
-        return this.anonymousTraversal;
-    }
-
-    @Override
-    public T translate(final Bytecode bytecode) {
-        TraversalSource dynamicSource = this.traversalSource;
-        Traversal.Admin<?, ?> traversal = null;
-        for (final Bytecode.Instruction instruction : bytecode.getSourceInstructions()) {
-            dynamicSource = (TraversalSource) invokeMethod(dynamicSource, TraversalSource.class, instruction.getOperator(), instruction.getArguments());
-        }
-        boolean spawned = false;
-        for (final Bytecode.Instruction instruction : bytecode.getStepInstructions()) {
-            if (!spawned) {
-                traversal = (Traversal.Admin) invokeMethod(dynamicSource, Traversal.class, instruction.getOperator(), instruction.getArguments());
-                spawned = true;
-            } else
-                invokeMethod(traversal, Traversal.class, instruction.getOperator(), instruction.getArguments());
-        }
-        return (T) traversal;
-    }
-
-    @Override
-    public String getTargetLanguage() {
-        return "gremlin-java";
-    }
-
-    @Override
-    public String toString() {
-        return StringFactory.translatorString(this);
-    }
-
-    ////
-
-    private Traversal.Admin<?, ?> translateFromAnonymous(final Bytecode bytecode) {
-        try {
-            final Traversal.Admin<?, ?> traversal = (Traversal.Admin) this.anonymousTraversal.getMethod("start").invoke(null);
-            for (final Bytecode.Instruction instruction : bytecode.getStepInstructions()) {
-                invokeMethod(traversal, Traversal.class, instruction.getOperator(), instruction.getArguments());
-            }
-            return traversal;
-        } catch (final Throwable e) {
-            throw new IllegalStateException(e.getMessage());
-        }
-    }
-
-    private Object invokeMethod(final Object delegate, final Class returnType, final String methodName, final Object... arguments) {
-        // populate method cache for fast access to methods in subsequent calls
-        final Map<String, List<Method>> methodCache = delegate instanceof TraversalSource ? this.traversalSourceMethodCache : this.traversalMethodCache;
-        if (methodCache.isEmpty()) {
-            for (final Method method : delegate.getClass().getMethods()) {
-                if (!(method.getName().equals("addV") && method.getParameterCount() == 1 && method.getParameters()[0].getType().equals(Object[].class))) { // hack cause its hard to tell Object[] vs. String :|
-                    List<Method> list = methodCache.get(method.getName());
-                    if (null == list) {
-                        list = new ArrayList<>();
-                        methodCache.put(method.getName(), list);
-                    }
-                    list.add(method);
-                }
-            }
-        }
-        ///
-        for (int i = 0; i < arguments.length; i++) {
-            if (arguments[i] instanceof Bytecode.Binding)
-                arguments[i] = ((Bytecode.Binding) arguments[i]).value();
-            else if (arguments[i] instanceof Bytecode)
-                arguments[i] = translateFromAnonymous((Bytecode) arguments[i]);
-        }
-        try {
-            for (final Method method : methodCache.get(methodName)) {
-                if (returnType.isAssignableFrom(method.getReturnType())) {
-                    if (method.getParameterCount() == arguments.length || (method.getParameterCount() > 0 && method.getParameters()[method.getParameters().length - 1].isVarArgs())) {
-                        final Parameter[] parameters = method.getParameters();
-                        final Object[] newArguments = new Object[parameters.length];
-                        boolean found = true;
-                        for (int i = 0; i < parameters.length; i++) {
-                            if (parameters[i].isVarArgs()) {
-                                Object[] varArgs = (Object[]) Array.newInstance(parameters[i].getType().getComponentType(), arguments.length - i);
-                                int counter = 0;
-                                for (int j = i; j < arguments.length; j++) {
-                                    varArgs[counter++] = arguments[j];
-                                }
-                                newArguments[i] = varArgs;
-                                break;
-                            } else {
-                                if (i < arguments.length &&
-                                        (parameters[i].getType().isAssignableFrom(arguments[i].getClass()) ||
-                                                (parameters[i].getType().isPrimitive() &&
-                                                        (Number.class.isAssignableFrom(arguments[i].getClass()) ||
-                                                                arguments[i].getClass().equals(Boolean.class) ||
-                                                                arguments[i].getClass().equals(Byte.class) ||
-                                                                arguments[i].getClass().equals(Character.class))))) {
-                                    newArguments[i] = arguments[i];
-                                } else {
-                                    found = false;
-                                    break;
-                                }
-                            }
-                        }
-                        if (found) {
-                            return 0 == newArguments.length ? method.invoke(delegate) : method.invoke(delegate, newArguments);
-                        }
-                    }
-                }
-            }
-        } catch (final Throwable e) {
-            throw new IllegalStateException(e.getMessage() + ":" + methodName + "(" + Arrays.toString(arguments) + ")", e);
-        }
-        throw new IllegalStateException("Could not locate method: " + delegate.getClass().getSimpleName() + "." + methodName + "(" + Arrays.toString(arguments) + ")");
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
index e5f4bca..6d071fc 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
@@ -18,6 +18,15 @@
  */
 package org.apache.tinkerpop.gremlin.groovy.jsr223;
 
+import groovy.grape.Grape;
+import groovy.lang.Binding;
+import groovy.lang.Closure;
+import groovy.lang.DelegatingMetaClass;
+import groovy.lang.MetaClass;
+import groovy.lang.MissingMethodException;
+import groovy.lang.MissingPropertyException;
+import groovy.lang.Script;
+import groovy.lang.Tuple;
 import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.DefaultImportCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.EmptyImportCustomizerProvider;
@@ -29,15 +38,6 @@ import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader;
 import org.apache.tinkerpop.gremlin.groovy.plugin.Artifact;
 import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin;
 import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPluginException;
-import groovy.grape.Grape;
-import groovy.lang.Binding;
-import groovy.lang.Closure;
-import groovy.lang.DelegatingMetaClass;
-import groovy.lang.MetaClass;
-import groovy.lang.MissingMethodException;
-import groovy.lang.MissingPropertyException;
-import groovy.lang.Script;
-import groovy.lang.Tuple;
 import org.apache.tinkerpop.gremlin.jsr223.Customizer;
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory;
@@ -85,10 +85,9 @@ import java.util.stream.Collectors;
  * down on compilation times of future evaluations of the same script.  This {@code ScriptEngine} implementation is
  * heavily adapted from the {@code GroovyScriptEngineImpl} to include some additional functionality.
  *
- * @see org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor
- *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @see org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor
  */
 public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
         implements DependencyManager, AutoCloseable, GremlinScriptEngine {
@@ -102,10 +101,10 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
      * The attribute key (passed as a binding on the context) for how to cache scripts.  The value must be one of
      * the following:
      * <ul>
-     *     <li>{@link #REFERENCE_TYPE_HARD}</li>
-     *     <li>{@link #REFERENCE_TYPE_SOFT}</li>
-     *     <li>{@link #REFERENCE_TYPE_WEAK}</li>
-     *     <li>{@link #REFERENCE_TYPE_PHANTOM}</li>
+     * <li>{@link #REFERENCE_TYPE_HARD}</li>
+     * <li>{@link #REFERENCE_TYPE_SOFT}</li>
+     * <li>{@link #REFERENCE_TYPE_WEAK}</li>
+     * <li>{@link #REFERENCE_TYPE_PHANTOM}</li>
      * </ul>
      */
     public static final String KEY_REFERENCE_TYPE = "#jsr223.groovy.engine.keep.globals";
@@ -142,7 +141,7 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
 
     private static final Pattern patternImportStatic = Pattern.compile("\\Aimport\\sstatic.*");
 
-    public static final ThreadLocal<Map<String, Object>> COMPILE_OPTIONS = new ThreadLocal<Map<String, Object>>(){
+    public static final ThreadLocal<Map<String, Object>> COMPILE_OPTIONS = new ThreadLocal<Map<String, Object>>() {
         @Override
         protected Map<String, Object> initialValue() {
             return new HashMap<>();
@@ -257,7 +256,7 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
         // remove used providers as the rest will be applied directly
         customizerProviders = providers.stream()
                 .filter(p -> p != null &&
-                             !((p instanceof ImportCustomizerProvider)))
+                        !((p instanceof ImportCustomizerProvider)))
                 .collect(Collectors.toList());
 
         createClassLoader();
@@ -369,7 +368,8 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
     }
 
     @Override
-    public Traversal.Admin eval(final Bytecode bytecode, final Bindings bindings) throws ScriptException  {
+    public Traversal.Admin eval(final Bytecode bytecode, final Bindings bindings) throws ScriptException {
+        bindings.putAll(bytecode.getBindings());
         // TODO: this is kinda bad because it makes the assumption that we will always alias to "g" (which is generally true, but maybe better to not hardcode?)
         return (Traversal.Admin) this.eval(GroovyTranslator.of("g", "__").translate(bytecode), bindings);
     }
@@ -627,22 +627,22 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
     }
 
     private void registerBindingTypes(final ScriptContext context) {
-        final Map<String,ClassNode> variableTypes = new HashMap<>();
+        final Map<String, ClassNode> variableTypes = new HashMap<>();
         clearVarTypes();
 
         // use null for the classtype if the binding value itself is null - not fully sure if that is
         // a sound way to deal with that.  didn't see a class type for null - maybe it should just be
         // unknown and be "Object".  at least null is properly being accounted for now.
         context.getBindings(ScriptContext.ENGINE_SCOPE).forEach((k, v) ->
-            variableTypes.put(k, null == v ? null : ClassHelper.make(v.getClass())));
+                variableTypes.put(k, null == v ? null : ClassHelper.make(v.getClass())));
 
         COMPILE_OPTIONS.get().put(COMPILE_OPTIONS_VAR_TYPES, variableTypes);
     }
 
     private static void clearVarTypes() {
-        final Map<String,Object> m = COMPILE_OPTIONS.get();
+        final Map<String, Object> m = COMPILE_OPTIONS.get();
         if (m.containsKey(COMPILE_OPTIONS_VAR_TYPES))
-            ((Map<String,ClassNode>) m.get(COMPILE_OPTIONS_VAR_TYPES)).clear();
+            ((Map<String, ClassNode>) m.get(COMPILE_OPTIONS_VAR_TYPES)).clear();
     }
 
     private Object invokeImpl(final Object thiz, final String name, final Object args[]) throws ScriptException, NoSuchMethodException {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
index f507171..61b9d57 100644
--- a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
+++ b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
@@ -75,7 +75,7 @@ under the License.
     return "graphtraversalsource[" + str(self.graph) + "]"
 """)
         GraphTraversalSource.getMethods()
-                .findAll { !it.name.equals("clone") }
+                .findAll { !it.name.equals("clone") && !it.name.equals(TraversalSource.Symbols.withBindings) }
                 .collect { it.name }
                 .unique()
                 .sort { a, b -> a <=> b }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/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 071a0fe..3ea21e4 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
@@ -117,7 +117,9 @@ public class GremlinJythonScriptEngine implements GremlinScriptEngine {
 
     @Override
     public Traversal.Admin eval(final Bytecode bytecode, final Bindings bindings) throws ScriptException {
-        return null;
+        bindings.putAll(bytecode.getBindings());
+        // TODO: this is kinda bad because it makes the assumption that we will always alias to "g" (which is generally true, but maybe better to not hardcode?)
+        return (Traversal.Admin) this.eval(new PythonTranslator("g", "__").translate(bytecode), bindings);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
index be05299..b923453 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
@@ -45,10 +45,6 @@ class GraphTraversalSource(object):
     traversal = GraphTraversal(self.graph, self.traversal_strategies, Bytecode(self.bytecode))
     traversal.bytecode.add_step("inject", *args)
     return traversal
-  def withBindings(self, *args):
-    source = GraphTraversalSource(self.graph, self.traversal_strategies, Bytecode(self.bytecode))
-    source.bytecode.add_source("withBindings", *args)
-    return source
   def withBulk(self, *args):
     source = GraphTraversalSource(self.graph, self.traversal_strategies, Bytecode(self.bytecode))
     source.bytecode.add_source("withBulk", *args)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/graphson.py b/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
index ef12c7e..c169259 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
@@ -21,6 +21,7 @@ import json
 from abc import abstractmethod
 from aenum import Enum
 
+from traversal import Binding
 from traversal import Bytecode
 from traversal import P
 from traversal import Traversal
@@ -95,6 +96,15 @@ class PSerializer(GraphSONSerializer):
         return dict
 
 
+class BindingSerializer(GraphSONSerializer):
+    def _dictify(self, binding):
+        dict = {}
+        dict["@type"] = "Binding"
+        dict["variable"] = binding.variable
+        dict["value"] = GraphSONWriter._dictify(binding.value)
+        return dict
+
+
 class TraversalSerializer(BytecodeSerializer):
     def _dictify(self, traversal):
         return BytecodeSerializer._dictify(self, traversal.bytecode)
@@ -121,6 +131,7 @@ class _SymbolHelper(object):
 
 serializers = {
     Bytecode: BytecodeSerializer(),
+    Binding: BindingSerializer(),
     P: PSerializer(),
     Enum: EnumSerializer(),
     Traversal: TraversalSerializer()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
index 7b13c00..3b21cd5 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
@@ -25,7 +25,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.util.JavaTranslator;
+import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
index 36a73ea..b40cbec 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
@@ -32,7 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.util.JavaTranslator;
+import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerEdge;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorComputerProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorComputerProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorComputerProvider.java
new file mode 100644
index 0000000..1b6cf70
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorComputerProvider.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.groovy.jsr223;
+
+import org.apache.tinkerpop.gremlin.GraphProvider;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
+
+import java.util.Random;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@GraphProvider.Descriptor(computer = TinkerGraphComputer.class)
+public class RemoteGraphGroovyTranslatorComputerProvider extends RemoteGraphGroovyTranslatorProvider {
+
+    private final Random RANDOM = new Random();
+
+    @Override
+    public GraphTraversalSource traversal(final Graph graph) {
+        assert graph instanceof RemoteGraph;
+        final int state = RANDOM.nextInt(3);
+        switch (state) {
+            case 0:
+                return super.traversal(graph).withComputer();
+            case 1:
+                return super.traversal(graph).withComputer(Computer.compute(TinkerGraphComputer.class));
+            case 2:
+                return super.traversal(graph).withComputer(Computer.compute(TinkerGraphComputer.class).workers(1));
+            default:
+                throw new IllegalStateException("This state should not have occurred: " + state);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessComputerTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessComputerTest.java
new file mode 100644
index 0000000..ba95fde
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessComputerTest.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.groovy.jsr223;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(ProcessComputerSuite.class)
+@GraphProviderClass(provider = RemoteGraphGroovyTranslatorComputerProvider.class, graph = RemoteGraph.class)
+public class RemoteGraphGroovyTranslatorProcessComputerTest {
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessStandardTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessStandardTest.java
new file mode 100644
index 0000000..db71d2c
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessStandardTest.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.groovy.jsr223;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(ProcessStandardSuite.class)
+@GraphProviderClass(provider = RemoteGraphGroovyTranslatorProvider.class, graph = RemoteGraph.class)
+public class RemoteGraphGroovyTranslatorProcessStandardTest {
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProvider.java
new file mode 100644
index 0000000..306f054
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProvider.java
@@ -0,0 +1,36 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.groovy.jsr223;
+
+import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphProvider;
+import org.apache.tinkerpop.gremlin.groovy.jsr223.GroovyTranslator;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class RemoteGraphGroovyTranslatorProvider extends RemoteGraphProvider {
+
+    @Override
+    public GraphTraversalSource traversal(final Graph graph) {
+        return graph.traversal().withTranslator(GroovyTranslator.of("g","__"));
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorComputerProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorComputerProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorComputerProvider.java
deleted file mode 100644
index 9eae953..0000000
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorComputerProvider.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.GraphProvider;
-import org.apache.tinkerpop.gremlin.process.computer.Computer;
-import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
-
-import java.util.Random;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@GraphProvider.Descriptor(computer = TinkerGraphComputer.class)
-public class RemoteGraphGroovyTranslatorComputerProvider extends RemoteGraphGroovyTranslatorProvider {
-
-    private final Random RANDOM = new Random();
-
-    @Override
-    public GraphTraversalSource traversal(final Graph graph) {
-        assert graph instanceof RemoteGraph;
-        final int state = RANDOM.nextInt(3);
-        switch (state) {
-            case 0:
-                return super.traversal(graph).withComputer();
-            case 1:
-                return super.traversal(graph).withComputer(Computer.compute(TinkerGraphComputer.class));
-            case 2:
-                return super.traversal(graph).withComputer(Computer.compute(TinkerGraphComputer.class).workers(1));
-            default:
-                throw new IllegalStateException("This state should not have occurred: " + state);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessComputerTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessComputerTest.java
deleted file mode 100644
index a45ab2d..0000000
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessComputerTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
-import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
-import org.junit.runner.RunWith;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(ProcessComputerSuite.class)
-@GraphProviderClass(provider = RemoteGraphGroovyTranslatorComputerProvider.class, graph = RemoteGraph.class)
-public class RemoteGraphGroovyTranslatorProcessComputerTest {
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessStandardTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessStandardTest.java
deleted file mode 100644
index 3c2365c..0000000
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProcessStandardTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
-import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
-import org.junit.runner.RunWith;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(ProcessStandardSuite.class)
-@GraphProviderClass(provider = RemoteGraphGroovyTranslatorProvider.class, graph = RemoteGraph.class)
-public class RemoteGraphGroovyTranslatorProcessStandardTest {
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProvider.java
deleted file mode 100644
index 074e220..0000000
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/java/translator/RemoteGraphGroovyTranslatorProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphProvider;
-import org.apache.tinkerpop.gremlin.groovy.jsr223.GroovyTranslator;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class RemoteGraphGroovyTranslatorProvider extends RemoteGraphProvider {
-
-    @Override
-    public GraphTraversalSource traversal(final Graph graph) {
-        return graph.traversal().withTranslator(GroovyTranslator.of("g","__"));
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessComputerTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessComputerTest.java
new file mode 100644
index 0000000..bd5bc3a
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessComputerTest.java
@@ -0,0 +1,34 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.remote;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphComputerProvider;
+import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(ProcessComputerSuite.class)
+@GraphProviderClass(provider = RemoteGraphComputerProvider.class, graph = RemoteGraph.class)
+public class RemoteGraphProcessComputerTest {
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessStandardTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessStandardTest.java
new file mode 100644
index 0000000..0eec63a
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraphProcessStandardTest.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.remote;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphProvider;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@RunWith(ProcessStandardSuite.class)
+@GraphProviderClass(provider = RemoteGraphProvider.class, graph = RemoteGraph.class)
+public class RemoteGraphProcessStandardTest {
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessComputerTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessComputerTest.java
deleted file mode 100644
index 8012e3d..0000000
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessComputerTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tinkerpop.gremlin.remote.process;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphComputerProvider;
-import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
-import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
-import org.junit.runner.RunWith;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(ProcessComputerSuite.class)
-@GraphProviderClass(provider = RemoteGraphComputerProvider.class, graph = RemoteGraph.class)
-public class RemoteGraphProcessComputerTest {
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessStandardTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessStandardTest.java
deleted file mode 100644
index 04ae48c..0000000
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessStandardTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.remote.process;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
-import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
-import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphProvider;
-import org.junit.runner.RunWith;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-@RunWith(ProcessStandardSuite.class)
-@GraphProviderClass(provider = RemoteGraphProvider.class, graph = RemoteGraph.class)
-public class RemoteGraphProcessStandardTest {
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/GraphSONTranslator.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/GraphSONTranslator.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/GraphSONTranslator.java
deleted file mode 100644
index 729eadf..0000000
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/GraphSONTranslator.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
-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.strategy.verification.VerificationException;
-import org.apache.tinkerpop.gremlin.process.traversal.util.BytecodeHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.util.JavaTranslator;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.util.Arrays;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-final class GraphSONTranslator<S extends TraversalSource, T extends Traversal.Admin<?, ?>> implements Translator.StepTranslator<S, T> {
-
-    private final JavaTranslator<S, T> wrappedTranslator;
-    private final GraphSONWriter writer = GraphSONWriter.build().create();
-    private final GraphSONReader reader = GraphSONReader.build().create();
-
-    public GraphSONTranslator(final JavaTranslator<S, T> wrappedTranslator) {
-        this.wrappedTranslator = wrappedTranslator;
-    }
-
-    @Override
-    public S getTraversalSource() {
-        return this.wrappedTranslator.getTraversalSource();
-    }
-
-    @Override
-    public Class getAnonymousTraversal() {
-        return this.wrappedTranslator.getAnonymousTraversal();
-    }
-
-    @Override
-    public T translate(final Bytecode bytecode) {
-        try {
-            for (final Bytecode.Instruction instruction : bytecode.getStepInstructions()) {
-                for (final Object argument : instruction.getArguments()) {
-                    if (argument.toString().contains("$"))
-                        throw new VerificationException("Lambdas are currently not supported: " + bytecode, EmptyTraversal.instance());
-                }
-            }
-            final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-            this.writer.writeObject(outputStream, BytecodeHelper.filterInstructions(bytecode,
-                    instruction -> !Arrays.asList("withTranslator", "withStrategies").contains(instruction.getOperator())));
-            // System.out.println(new String(outputStream.toByteArray()));
-            return this.wrappedTranslator.translate(this.reader.readObject(new ByteArrayInputStream(outputStream.toByteArray()), Bytecode.class));
-        } catch (final Exception e) {
-            throw new IllegalStateException(e.getMessage(), e);
-        }
-    }
-
-    @Override
-    public String getTargetLanguage() {
-        return this.wrappedTranslator.getTargetLanguage();
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorComputerProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorComputerProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorComputerProvider.java
deleted file mode 100644
index 4dc67d9..0000000
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorComputerProvider.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.GraphProvider;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@GraphProvider.Descriptor(computer = TinkerGraphComputer.class)
-public class TinkerGraphGraphSONTranslatorComputerProvider extends TinkerGraphGraphSONTranslatorProvider {
-
-    @Override
-    public GraphTraversalSource traversal(final Graph graph) {
-        return super.traversal(graph).withComputer();
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessComputerTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessComputerTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessComputerTest.java
deleted file mode 100644
index 50523af..0000000
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessComputerTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import org.junit.runner.RunWith;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(ProcessComputerSuite.class)
-@GraphProviderClass(provider = TinkerGraphGraphSONTranslatorComputerProvider.class, graph = TinkerGraph.class)
-public class TinkerGraphGraphSONTranslatorProcessComputerTest {
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0803fdc2/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessStandardTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessStandardTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessStandardTest.java
deleted file mode 100644
index db95be3..0000000
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/java/translator/TinkerGraphGraphSONTranslatorProcessStandardTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.tinkerpop.gremlin.java.translator;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import org.junit.runner.RunWith;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(ProcessStandardSuite.class)
-@GraphProviderClass(provider = TinkerGraphGraphSONTranslatorProvider.class, graph = TinkerGraph.class)
-public class TinkerGraphGraphSONTranslatorProcessStandardTest {
-}


Mime
View raw message